Database design db设计-使用第三方服务(facebook connect等)登录

Database design db设计-使用第三方服务(facebook connect等)登录,database-design,facebook,Database Design,Facebook,在实施facebook connect等数据库模式时,您认为什么是最好的解决方案 当我做一些研究时,我发现一个建议,将登录信息(fb_id,…)与帐户信息(例如名字、姓氏,…)分开: 本文提出的解决方案有三个表 创建表科目( idint(11)自动增量不为空, nametext, 电子邮件文本, 主键id(id) ); 创建表用户( usernamevarchar(255)不为空, 密码文本, account\u idint(11)不为空, 主键username(username) );

在实施facebook connect等数据库模式时,您认为什么是最好的解决方案

当我做一些研究时,我发现一个建议,将登录信息(fb_id,…)与帐户信息(例如名字、姓氏,…)分开:

本文提出的解决方案有三个表

创建表
科目

id
int(11)自动增量不为空,
name
text,
电子邮件
文本,
主键
id
id

);

创建表
用户

username
varchar(255)不为空,
密码
文本,
account\u id
int(11)不为空,
主键
username
username

);

创建表
facebook\u用户

fb\u uid
bigint(11)默认为空,
email\u hash
varchar(64)默认为空,
account\u id
int(11)不为空,
主键
fb\u uid
fb\u uid

);

我不明白为什么不能将所有数据存储在一个表中

表用户( 用户id, 用户名, 电子邮件, fb_id, 电子邮件地址:, ... )

一个人通常只有一个facebook帐户,所以我看不出冗余有任何问题。
有什么建议吗?

对于有效性,使用一个表来保存所有数据是正确的。在添加另一个登录服务时,您只需添加一个新列

但是,如果您想知道用户是否拥有facebook帐户,则性能比单独的表更差。登录的性能也较差,因为数据库需要获取“email\u hash”的整个记录


另一方面,用户数据列表在设计单个表时具有更好的性能,因为您不必为此类报告连接表。

为了有效性,使用单个表保存所有数据是正确的。在添加另一个登录服务时,您只需添加一个新列

但是,如果您想知道用户是否拥有facebook帐户,则性能比单独的表更差。登录的性能也较差,因为数据库需要获取“email\u hash”的整个记录

另一方面,用户数据列表在设计单个表时具有更好的性能,因为这样的报表不必联接表