关于 Facebook 等社交网络的数据库模式

标签 database facebook database-design social-networking

像 Facebook 一样,我有帖子、评论和用户个人资料。

我认为

  • Posts and comments do not need the details of user

  • ONLY user profiles need the details

所以我将用户信息分为ma​​indetail

这是架构。

schema

问题

Is it necessary to separate user data into main and details?

WHY not or WHY yes?

感谢申请!

最佳答案

我建议使用单独的表格,因为您可能不会一次需要所有这些信息。你可以用任何一种方式来做,但我认为你需要一次获得所有数据。

表 1(用户授权)

此表将仅包含登录信息并包含三列(user_namehashed_pa​​sswordUID)

因此您的查询将选择 UID,其中 user_namehashed_pa​​ssword 匹配。我还建议永远不要在数据库表中存储可读密码,因为这可能会成为一个安全问题。

表2(基本信息)

此表包含的信息量最少,您在注册时会获得这些信息以创建基本配置文件。这些字段将包括 UIDnameDOBziplink_to_profile_photo电子邮件 以及您需要的任何基本信息。 email 有点特殊,因为如果您需要 user_name 作为电子邮件地址,则没有理由重复使用。

表3(扩展信息)

此表将包含用户可以输入的任何可选信息,例如 phone_numberbioaddress,由 UID.

然后您可以添加任意数量的其他表格。一个用于发布,一个用于评论,等等。

Post 表的示例如下:

post_idUIDthe_postdate_of_postlikes 等。

然后征求意见

comment_idfor_post_idUIDthe_commentdate_of_comment>喜欢

从长远来看,将其分解成小部分会更有效率。

关于关于 Facebook 等社交网络的数据库模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22596704/

相关文章:

sql - 每组值的自定义序列/自动增量

mysql - 数据库中的不同用户类型

php - 从数据库打印多个结果

ruby-on-rails - 数据库管理 Ruby On Rails

node.js - MongoDB 查询将一个记录值与另一记录值相减

ios - NSMutableArray 在 for 循环后不保存添加的项目

php - 提交表单时 Facebook 应用程序中的签名请求不可用?

使用 Facebook 的 iOS 应用程序——被拒绝

mysql - 改变大表的结构有多糟糕?

python - 插入/删除性能