两个表通过引用表引用单个表

时间:2015-04-12 16:30:05

标签: mysql database entity-framework normalization

我创建了一个数据库,用于对申请公共住房的人进行分类,其中一个类别是申请人的残疾或家庭成员是否有残疾,但我一直在努力使表格正常化:我已经研究过了网站上的不同答案,这是我带来的最佳选择:

                  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 disabled(fk)

家庭成员

  • id family(PK)
  • id disabled(fk)

dissabled

  • id dissabled(PK)

因残疾而被禁用

  • 由残疾(PK)禁用的身份
  • id disabled(fk)
  • id disability(fk)

残疾

  • id disability(PK)
  • id name disability(fk)
  • id type dissability(fk)

残疾类型

  • id type disability(PK)
  • 姓名类型残疾

预期用途是申请人或家庭成员可以列出他所拥有的残疾人数。这是简化查询的最佳方法,是否正确归一化?

1 个答案:

答案 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