数据库表设计的建议

时间:2016-03-20 10:08:47

标签: database database-design

我计划创建2个表,员工和学生。 Employee和Student表有一些共同的字段,也有一些不同的字段。将这些相同的字段放在像Person这样的公共表中然后将它们联系起来是一个好主意吗?

例如,Employee和Student都有FirstName和LastName字段。

1 个答案:

答案 0 :(得分:0)

PersonType

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),这称为多列外键。