数据库设计建议

时间:2012-10-20 06:13:32

标签: mysql database database-design

我正在设计一个数据库,这里是它的外观背景:

  

我有一个申请。

     

应用程序将具有应用程序。

     

申请人(申请)可能有也可能没有共同申请人。

     

申请人有以下信息:人口统计,一般信息,就业信息,参考资料等......

     

如果共同申请人存在,它将拥有相同的信息:人口统计,一般信息,就业信息,参考等...

我提出的设计看起来像这样:

 Table: application [pk: applicaion_id]

 Table: applicant   [pk: applicant_id, fk: applicaiton_id {references: application.applicaion_id} ]

 Table: co_applicant [pk: ( applicant_id {references: applicant.applicant_id},  co_applicants_applicant_id {references: applicant.applicant_id} ) ]

 Table demographic [pk: demographic_id, fk: appicant_id{references: applicant.applicant_id} ]

 Table employment [pk: demographic_id, fk: appicant_id{references: applicant.applicant_id} ]

等...

申请人表格载有关于申请人的一般信息,类似的共同申请人持有关于共同申请人的一般信息

这是设计的替代方案,

 Table: application  [pk: applicaion_id]

 Table: applicant    [pk: applicant_id, fk: applicaiton_id {references: application.applicaion_id} ]

 Table: co_applicant [pk: co_applicant_id, fk: applicaiton_id {references: application.applicaion_id} ]

 Table demographic   [pk: demographic_id, fk: appicant_id{references: applicant.applicant_id} ]

 Table employment    [pk: demographic_id, fk: appicant_id{references: applicant.applicant_id} ]

 Table co_applicant_demographic   [pk: demographic_id, fk: appicant_id{references: applicant.applicant_id} ]

 Table co_applicant_employment    [pk: demographic_id, fk: appicant_id{references: applicant.applicant_id} ]

每个co_applicant信息的表格。

您会建议哪种设计或任何更好的替代方案,以及它的优点和劣势都会非常有用。

  

编辑:读取查询可能非常繁重,搜索查询也很激烈。

1 个答案:

答案 0 :(得分:0)

你在“申请人”和“co_applicant”之间复制了很多东西,特别是重复的表格。疯狂。

将他们全部视为“申请人”并且只有一个applicant表格,但在application表格中有两个FK返回给它 - applicant_idco_applicant_id