【发布时间】:2011-07-03 19:27:16
【问题描述】:
我和一位数据库架构师正在争论具有复合主键和子类型的表是否在关系上有意义,以及这是否是一种好的做法。
假设我们有两个表 Employee 和 Project。我们创建一个复合表 Employee_Project,其中复合主键返回 Employee 和 Project。
Employee_Project 是否有有效的方法来拥有子类型?或者你能想到复合键表可以有子类型的任何场景吗?
对我来说,复合键关系是“Is A”关系(Employee_Project 是一个员工和一个项目)。子类型也是“Is A”关系。因此,如果您有一个复合键,其子类型在一个句子中有两个“Is A”关系,这让我相信这是一种不好的做法。
【问题讨论】:
-
您的意思是“子类型”还是“m:n 映射表的 PK 将参与外键约束的位置?
-
对不起,我的回复晚了,但我的意思是子类型。
标签: sql database database-design relational-database