首页 > 解决方案 > 如何在小范围内创建 facebook 数据库图

问题描述

如何小规模创建 Facebook 数据库。

关于该项目:

  1. 用户可以注册并创建一个帐户(信息存储在 UserTB 表中)
  2. 用户可以在那里编辑个人资料和地址信息(信息存储在 ProfileTB 和 addressTB 表中)
  3. 用户可以添加他们的家庭成员信息。但家庭成员不是此应用程序的用户。
  4. 家庭成员可以成为申请的成员,但不是必须的

问题:用户如何添加他们的家庭成员信息(姐妹/兄弟/父亲)?用户的家庭也将有名字、地址等。所以重新创建 FamilyProfile 或 FamilyAddress 表可能没有意义。主要问题是用户可以添加他们的许多家庭成员,但家庭成员不必是此应用程序的用户。

UserTB = track user login information
ProfileTB = Track user profile information
AddressTB = track user address information
FamilyTB =  user have multi family member linked to user table (Relationship is string, ex brother, sister, dad etc..). 

我通过添加Linked_ID每个表来解决这个问题。但它有自己的问题,例如。我可以有 50 个表……当家庭成员成为用户时……我将不得不更新 50 个不同表中的 user_ID…… 表和测试数据

单击此处查看 ERD 图片

标签: databasedatabase-designdiagramclass-diagramerd

解决方案


AddressTB是不必要的,必须与ProfileTB合并。我知道为什么您将Street分隔到不同的表中(规范化),但是街道太多了,有时它们可​​能有多个名称(至少在某些国家/地区),人们在输入街道名称时也会出现拼写错误,这是不值得的!

另一方面,您需要FamilyTB(我会将此表重命名为RelationTB以获得更多许可)。用户的实际信息存储在ProfileTB中,只有他们的关系存储在FamilyTB中。(在这里阅读更多)

此外,Family_ID 不能单独作为主键!因为主键必须是唯一的;但是,一个用户可以有多个兄弟,这违反了此规则。将其更改为以下内容,使其始终是唯一的:

Table = FamilyTB
Field = Family_ID (PK)
Field = User_ID (PK)
Field = Relationship

推荐阅读