谁代表关系模型中的ISA关系?

时间:2016-10-10 23:01:11

标签: sql database entity-relationship workbench

enter image description here

我有这个例子

在秘书中,我需要创建和id?谁代表WorkBench?

或者我只需要创建1:n关系?

我的模特有:

Engineer : eng_type, fk: employee_ssn

1 个答案:

答案 0 :(得分:1)

您的图表转换为以下表格:

Employee (Ssn PK, Fname, Minit, Lname, Birth_date, Address, Job_type)
Secretary (Ssn PK/FK, Job_type FK, Typing_speed)
Technician (Ssn PK/FK, Job_type FK, Tgrade)
Engineer (Ssn PK/FK, Job_type FK, Eng_type)

Job_type的域名为(Secretary, Technician, Engineer),枚举类型适合MySQL。子类型表上的FK约束是复合的:Secretary (Ssn, Job_type) REFERENCES Employee (Ssn, Job_type),对于其他两个子类型也是如此。您需要创建合适的索引。

MySQL不支持检查约束,这对于强制执行每个子类型的Job_type非常好。您可以创建一个触发器来执行相同的操作。有了这个,复合FK约束可以防止员工在任何时候拥有多个子类型 - Employee表中的每个记录只能有一个Job_type,并且只有匹配的子类型表Job_type可以有匹配的记录。

如果您希望Employee完全参与子类型关系(即每个员工必须有一个子类型),您也可以为此创建一个触发器。