我创建了一个数据库,用于对申请公共住房的人进行分类,其中一个类别是申请人的残疾或家庭成员是否有残疾,但我一直在努力使表格正常化:我已经研究过了网站上的不同答案,这是我带来的最佳选择:
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
申请人
家庭成员
dissabled
因残疾而被禁用
残疾
残疾类型
预期用途是申请人或家庭成员可以列出他所拥有的残疾人数。这是简化查询的最佳方法,是否正确归一化?
答案 0 :(得分:0)
这个怎么样:每个APPLICANT
可以有很多FAMILYMEMBER
个,也可以是FAMILYMEMBER
。一个家庭成员可以申请HOUSEAPPLICATION
,这就是为什么MemberId是HOUSEAPPLICATION
中的PK。
您只需要在DISABLEDPEOPLE和FAMILYMEMBERS之间建立关系。在DISABLEDPEOPLE表中,您将拥有复合键(DisabilityId,MemberId)。
<强> FAMILYMEMBERS 强>
MemberId,ConnectedApplicantId,Relationship,Name,Surname
<强> HOUSEAPPLICATION 强>
MemberId [PK&amp; FK],申请人姓名,日期
<强> DISABLEDPEOPLE 强>
DisabilityId,MemberId,DateApproved
<强>伤残强>
DisabilityId,DisabilityName,DisabilityTypeId
<强> DISABLITYTYPES 强>
DisabilityTypeId,DisabilityTypeName