database - 如何在小范围内创建 facebook 数据库图
问题描述
如何小规模创建 Facebook 数据库。
关于该项目:
- 用户可以注册并创建一个帐户(信息存储在 UserTB 表中)
- 用户可以在那里编辑个人资料和地址信息(信息存储在 ProfileTB 和 addressTB 表中)
- 用户可以添加他们的家庭成员信息。但家庭成员不是此应用程序的用户。
- 家庭成员可以成为申请的成员,但不是必须的
问题:用户如何添加他们的家庭成员信息(姐妹/兄弟/父亲)?用户的家庭也将有名字、地址等。所以重新创建 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……
表和测试数据
解决方案
AddressTB是不必要的,必须与ProfileTB合并。我知道为什么您将Street分隔到不同的表中(规范化),但是街道太多了,有时它们可能有多个名称(至少在某些国家/地区),人们在输入街道名称时也会出现拼写错误,这是不值得的!
另一方面,您需要FamilyTB(我会将此表重命名为RelationTB以获得更多许可)。用户的实际信息存储在ProfileTB中,只有他们的关系存储在FamilyTB中。(在这里阅读更多)
此外,Family_ID 不能单独作为主键!因为主键必须是唯一的;但是,一个用户可以有多个兄弟,这违反了此规则。将其更改为以下内容,使其始终是唯一的:
Table = FamilyTB
Field = Family_ID (PK)
Field = User_ID (PK)
Field = Relationship
推荐阅读
- php - 具有共享会话的 Yii2 高级应用程序不会在会话超时时自动登录
- java - 我想使用递归检查一个整数在数组中是否唯一
- iphone - iOS 中的 AdMob 原生高级广告收到无效响应
- sql-server - Inno SetUp:检查 Sql Intance 是否为 SqlExpress
- ubuntu - 正方体错误:计数 > 0:错误:断言失败:在文件 serialis.cpp 中,第 115 行
- c# - WPF绑定到父DataContext忽略当前元素的DataContext
- android - 有入口或大门的地方
- javascript - 与“[Vue Warn] 属性或方法未在实例上定义但在渲染期间引用”相关的 20 个错误
- sql - 即使数据库插入操作没有错误,为什么 $Result = 1
- c# - 在 C# 上渲染 html 时删除双引号