像 Facebook 一样,我有帖子、评论和用户个人资料。
我认为
Posts and comments do not need the details of user
ONLY user profiles need the details
所以我将用户信息分为main和detail
这是架构。
问题
Is it necessary to separate user data into main and details?
WHY not or WHY yes?
感谢申请!
最佳答案
我建议使用单独的表格,因为您可能不会一次需要所有这些信息。你可以用任何一种方式来做,但我认为你需要一次获得所有数据。
表 1(用户授权)
此表将仅包含登录信息并包含三列(user_name、hashed_password、UID)
因此您的查询将选择 UID,其中 user_name 和 hashed_password 匹配。我还建议永远不要在数据库表中存储可读密码,因为这可能会成为一个安全问题。
表2(基本信息)
此表包含的信息量最少,您在注册时会获得这些信息以创建基本配置文件。这些字段将包括 UID、name、DOB、zip、link_to_profile_photo、 电子邮件 以及您需要的任何基本信息。 email 有点特殊,因为如果您需要 user_name 作为电子邮件地址,则没有理由重复使用。
表3(扩展信息)
此表将包含用户可以输入的任何可选信息,例如 phone_number、bio 或 address,由 UID分配强>.
然后您可以添加任意数量的其他表格。一个用于发布,一个用于评论,等等。
Post 表的示例如下:
post_id、UID、the_post、date_of_post、likes 等。
然后征求意见
comment_id、for_post_id、UID、the_comment、date_of_comment、>喜欢等
从长远来看,将其分解成小部分会更有效率。
关于关于 Facebook 等社交网络的数据库模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22596704/