我有这种关系理由(存储缺席理由的文件)并具有这些属性ID,类型和日期。 问题是有许多类型的理由文件医疗,婚姻,死亡...(总共7种类型)每个文件都有自己的ID,代码或序列号,这是唯一的,但大小和内容(字符,符号,数字)不同在每种类型。 我应该使用文档的ID,代码或序列号作为主键,使用最长ID大小的字段和VarChar(SQLServer)作为类型吗?或者我不应该和为什么?任何替代方案?
谢谢!
答案 0 :(得分:1)
看一下ER建模中的“类别”(又称“子类型”,“子类”,“继承”)。
E.g。在ERwin Methods Guide中搜索“子类型关系”。
答案 1 :(得分:0)
这实际上取决于您的数据库将保留多少数据。这种混合的几个领域不会那么糟糕,但是几千个东西会变得复杂。我建议把它分解出来,因为你知道每个表格,分成几个表格。如果您有可能的7种类型的表格,以及持有相关理由文件的外键的理由。
example:
Justification
-------
JustificationId
DocumentId
Document (linking table)
-------
DocumentId
MedicalId
DeathId
etc.
Medical
-------
MedicalId
Date
Reason
DoctorSigning
etc.
答案 2 :(得分:0)
主键的建议是:
a)如果使用无符号
,快速查找和轻松存储的整数可以达到40亿行b)应该没有商业意义,以便在业务规则发生变化时不受影响
因此,请勿使用ID或代码或序列号作为主键,因为它们会降低数据库的速度。
但是,如果这些列具有唯一值,那么您可能需要一个唯一的键约束来强制执行该操作。