Database design db设计-使用第三方服务(facebook connect等)登录
在实施facebook connect等数据库模式时,您认为什么是最好的解决方案 当我做一些研究时,我发现一个建议,将登录信息(fb_id,…)与帐户信息(例如名字、姓氏,…)分开: 本文提出的解决方案有三个表 创建表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) );
科目(
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”的整个记录
另一方面,用户数据列表在设计单个表时具有更好的性能,因为这样的报表不必联接表