【问题标题】:How to create facebook database diagram on small scale如何在小范围内创建 facebook 数据库图
【发布时间】:2021-12-19 05:18:10
【问题描述】:

如何创建小规模的 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…… Table and test data

click here to see ERD Image

【问题讨论】:

    标签: database database-design diagram class-diagram erd


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 谢谢。我对User_IDFamilyTB 中的 PK 有点困惑。我不应该链接User_ID 以便用户可以拥有许多家庭成员。如果我进行User_ID PK,那不会是一对一的关系吗?我会阅读你给我的链接。也许我错过了什么
    • 您认为添加Linked_id 是个好主意吗?
    • @Xin,User_ID和Family_ID都必须是主键(可以看成一个元组),这样就保证了唯一性。
    猜你喜欢
    • 1970-01-01
    • 2012-07-05
    • 1970-01-01
    • 2017-03-14
    • 1970-01-01
    • 2013-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多