数据库设计 - 使用第三方服务登录(facebook连接等)

时间:2011-01-02 14:33:40

标签: database-design facebook

从您的意见中可以看出,在实施数据库时,数据库模式的最佳解决方案是什facebook连接?

当我做一些研究时,我发现了一个建议,即将登录信息(fb_id,...)与帐户信息(例如,姓氏,姓氏......)分开: http://facebook-developer.net/2008/08/05/optimize-your-database-tables-for-facebook-connect/

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

创建表accounts
id int(11)AUTO_INCREMENT NOT NULL,
name文字,
email文字,
PRIMARY KEY idid
);

创建表users
username varchar(255)NOT NULL,
password文字,
account_id int(11)NOT NULL,
PRIMARY KEY usernameusername
);

创建表facebook_users
fb_uid bigint(11)默认为NULL,
email_hash varchar(64)默认为NULL,
account_id int(11)NOT NULL,
PRIMARY KEY fb_uidfb_uid
);

我没有看到一个明确的论据,为什么人们不能将所有数据存储在一个表中。

表用户(   用户身份,   用户名,   电子邮件,   fb_id,   email_hash,   ... )

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

1 个答案:

答案 0 :(得分:1)

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

但是,如果您想知道用户是否拥有Facebook帐户,那么性能会比分离的表更差。登录的性能也更差,因为数据库需要获取“email_hash”的整个记录​​。

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