我创建了一个数据库,用于对申请公共(public)住房的人进行分类,其中一个类别是申请人或申请人的家庭成员是否有残疾,但我一直在努力使表格正常化:我已经研究过网站上有不同的答案,这是我提供的最佳选择:
family
M|1
applicant-1--|--1-family member
1 | 1 |
1 | 1 |
disabled
1 |
M |
disabled by disability
1 |
M |
disability
1 |
1 |
type of disability
申请人
- 申请人 ID(PK)
- id 已禁用(fk)
家庭成员
- id 家庭(PK)
- id 已禁用(fk)
已禁用
- ID 已停用 (PK)
因残疾而致残
- 因残疾而致残 (PK) 的 ID
- id 已禁用(fk)
- 身份证残疾(外籍)
残疾
- 身份障碍(PK)
- 身份证姓名残疾(外籍)
- id 类型禁用(fk)
残疾类型
- 身份类型残疾(PK)
- 姓名类型残疾
其预期用途是申请人或家庭成员可以列出尽可能多的残疾。这是简化查询的最佳方法吗?它是否正确标准化?
最佳答案
这样怎么样:每个APPLICANT
可以有许多FAMILYMEMBER
并且它本身也是一个FAMILYMEMBER
。一个家庭的一名成员,可以申请HOUSEAPPLICATION
,这就是为什么MemberId在HOUSEAPPLICATION
中是PK的原因。
您只需要残疾人和家庭成员之间的关系。在 DISABLEDPEOPLE 表中,您将拥有复合键(DisabilityId、MemberId)。
家庭成员
成员 ID、ConnectedApplicantId、关系、姓名
房屋申请
成员(member) ID[PK&FK]、申请人姓名、日期
残疾人
残疾 ID、成员(member) ID、批准日期
残疾
残疾 ID、残疾名称、残疾类型 ID
残疾类型
残疾类型 ID、残疾类型名称
关于mysql - 两个表通过引用表引用单个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29591730/