use*_*742 1 sql database database-design data-modeling
关于桌子设计的快速问题..
假设我正在设计贷款申请数据库.就像现在一样,我将有2张桌子..
申请人(ApplicantID,FirstName,LastName,SSN,Email ...)和
共同申请人(CoApplicantID,FirstName,LastName,SSN,Email ..,ApplicantID)
我应该考虑只有一个表,因为所有的字段是相同的.. ??
人(PersonID,FirstName,LastName,SSN,Email ...,ParentID(这决定了它是否是共同申请人))
这两种方法的优点和缺点是什么?
我建议使用以下数据模型:
PERSON 表PERSON_ID,PKLOAN_APPLICATIONS 表APPLICATION_ID,PKAPPLICANT_TYPE_CODE 表APPLICANT_TYPE_CODE,PKAPPLICANT_TYPE_CODE_DESCRIPTIONLOAN_APPLICANTS 表APPLICATION_ID,PK,fkPERSON_ID,PK,fkAPPLICANT_TYPE_CODE,fk人(PersonID,FirstName,LastName,SSN,Email ...,ParentID(这决定了它是否是共同申请人))
如果一个人将只能永远在您的系统既可以是申请人或共同申请人.一个人可以是众多贷款的共同申请人和/或申请人本人 - 您不希望每次都重新输入他们的详细信息.
这是事物规范化的方式和原因的好处.根据业务规则和使用的固有现实,设置表以停止存储冗余数据.这是由于以下原因:
APPLICANT_TYPE_CODE- 它可以是在不使用其他表和外键的情况下存储的.但是,此设置允许支持在将来根据需要添加不同的申请人代码 - 而不会对数据模型造成任何损害.风险不佳时,没有性能优势.你会做什么,将被你必须执行的黑客吃掉才能让事情发挥作用.