我计划创建2个表,员工和学生。 Employee和Student表有一些共同的字段,也有一些不同的字段。将这些相同的字段放在像Person这样的公共表中然后将它们联系起来是一个好主意吗?
例如,Employee和Student都有FirstName和LastName字段。
答案 0 :(得分:0)
personTypeID(1,2)
personTypeName(学生,员工)
是PersonID
PersonType(来自PersonType的foreignKey)
PERSONNAME
PersonSurname
EmployeeID(来自Person表的ForeignKey以及此表的primaryKey,因为所有员工都是人员,或者您可以为此表创建一个unqiue empID,并创建一个类似fkPersonID的列,该列也必须是此表中唯一的)
EmployeeDepID(来自部门的fk)
预算
等等
与Employee表格完全相同。
既然你没有为一个可能是雇员的学生而反对,反之亦然,我没有考虑这种情况。假设学生也可能是员工,只需在学生表中创建一个列,该列是来自employee表的fkEmpID。但在这种情况下,如果您在employee和student表中创建fkPersonID,则必须保证这两列匹配。要在学生表中提供两者(fkPersonID,fkEmpID)并匹配它们(fkPersonID,fkEmpID),这称为多列外键。