- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我问了this question在 http://dba.stackexchange.com , 但它以一个注释结束,我应该在这里问它,因为它涉及设计而不是管理。
我正在构建一个网站(“The Site”),我正在考虑如何为其设计数据库架构。
我有几个会影响结果的场景:
我应该如何设计数据库的架构?
对于前两个场景,我想到了一个名为 Users
的表,它有一个 id
和一个 type
字段。该类型引用不同的表,例如 FacebookUsers
或 GoogleUsers
,每个表都有一个 user_id
字段 - 它与 有外部关系Users.id
字段 - 以及其他字段,例如 first_name
、profile_picture
等。
但这种方法不支持第三种情况。所以我想到了以下几点:
有一个名为 Users
的基表和每个 external site 的表我想让用户连接到我的网站(即网站) .Users
表将包含有关用户的基本信息(例如 first name, last name, username, password, email
- all optional),其中有一列名为 accounts
将保存诸如 native|facebook|twitter
之类的值,或这些值的序列化数组。
外部站点的表(例如FlickrUsers
)将保存与用户相关的外部站点的相关数据,以及对Users
表的 user_id
字段。
当用户将他的帐户连接到外部网站(例如 flickr、instagram)时,我会填充该外部网站 表(例如 FlickrUsers
) 与该外部站点的相关数据,并将此外部站点的名称作为另一个值添加到 accounts
字段中用户
表。
对于使用多帐户登录的网站,我将此作为一般最佳实践问题提出。
话虽如此,我不确定上述方法/设计是否适合我在上面描述的网站。我很清楚正确答案不止一个,但我知道还有更好的解决方案和不太理想的解决方案。我希望找到更好的解决方案。
为了便于讨论,我的 RDBMS 是 mysql,我的语言是 php。
最佳答案
最简单的方法是创建一个包含不同登录方式的表,该表不特定于登录方式。如果他们想添加另一种方式,这只会为您带来更多工作。
表用户
id、姓名等 - 不是密码
表登录验证
id, user_id, type, validation_data
当他们尝试登录时,将登录类型与验证数据相匹配。对于您的站点 (type=YourSite),validation_data 将是一个密码(或散列密码)。对于 type=Facebook,validation_data 将是您使用 Facebook 登录等验证您的网站。
当有人想要登录时,您根据适当类型的 validation_data 验证他们的 ID。
关于mysql - 对于接受来自多个站点(例如 facebook connect、google、flickr 等)登录的站点,模式的良好做法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6002569/
如果您想分享更多信息,可以在这里找到整个资源 指针: https://github.com/sergiotapia/DreamInCode.Net 基本上,我的API将为其他开发人员提供
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 5 年前。 Improve this qu
我不是 SCM 工具的经验丰富的用户,尽管我确信它们的用处,当然。 我在以前的工作中使用了一些不起眼的商业工具,在当前的工作中使用了 Perforce,并在我的小型个人项目中使用了 TortoiseS
所以我想知道一些我应该避免在 javascript 中做的事情以获得良好的 SEO 排名。在我的下一个站点中,我将广泛使用 jquery 和 javascript,但不想牺牲 SEO。那么您认为我应该
基本上,我想知道什么是避免 future CSS 代码出现问题和混淆的最佳方法... 像这样命名 CSS 属性: div#content ul#navigation div.float-left (真
我是一名优秀的程序员,十分优秀!