【发布时间】:2016-08-23 08:59:59
【问题描述】:
我必须做什么的描述
我有一个应该与Table1 OR Table2 OR Table3 相关的table
例如,有一个表 Employees,它有:
Id,
Name,
Address,
Age,
Salary,
EmployerId
第二张表是RegisterEmployeeRequirements:
Id,
RequirementType,
EmployerId,
EntryId.
其中需求类型可以是CreditStatusRequirement 或EmployeeDegreeRequirement)。
问题:CreditStatusRequirement 包括CreditStatus 和它被收购的日期(检查它是否在去年)。我还有一个名为 CreditStatusRequirements 的附加表,其中包含列:
CreditStatus,
DateTimeAcquired
另一方面,学位要求具有以下属性:DegreeName and MinGpa。
为了解决这个问题,我创建了另一个具有这些属性的表。如果RegisterEmployeeRequirements 中的需求类型是CreditStatusRequirement,我将使用entryId 列查看CreditStatusRequirements 表,然后检查它是否完成。
否则,如果是EmployeeDegreeRequirement,我将使用entryId 列查看DegreeRequirements 表。我想使用像entryId 这样的列不是一个好习惯。
解决这个架构问题的方法是什么?
【问题讨论】:
-
如果对于您在 RegisterEmployeeRequirements 表中创建的每个条目,您还在 CreditStatusRequirement 或 EmployeeDegreeRequirement 中创建一个条目,那么您应该有一个外键关系船 CreditStatusRequirement -> RegisterEmployeeRequirements 和 CreditStatusRequirement -> RegisterEmployeeRequirements 即您应该删除 EntryId 列从 RegisterEmployeeRequirements 表中,并将 RegisterEmployeeRequirements 中的 Id 列作为 CreditStatusRequirement 和 EmployeeDegreeRequirement 表中的外键。
-
澄清基数,
Employees到CreditStatusRequirement和Employees到EmployeeDegreeRequirement -
您需要概述所有三个参考表的外观。您还需要告诉我们通过将引用存储在一列而不是三列中获得了什么。
-
table1 table2 和 table3 是一些常见超类的子类吗?
标签: sql database database-design