atm我正努力将n-ary关系从我的ERD转换为SQL表。
在大学里,我们了解到,对于每个n元关系,我们创建一个与PK的交集表,作为PK的集合作为FK。但是在这种情况下该怎么做: example1
是否有理由在这里创建一个交叉表,或者只是放置"部门"的PK。和"时期"作为FK进入"收购过程"表减少表的数量?
感谢您的帮助!
答案 0 :(得分:1)
为什么,你的桌子用完了吗? : - )
在您的示例图中,似乎给定的获取过程可以引用多个时段和多个部门。
但是如果你把FK放入采集过程表中,你只能在每个FK列中放一个值,所以你只能为每个过程引用一个句点和一个部门,如下所示:
CREATE TABLE AcquisitionProcess (
process_id INT PRIMARY KEY,
period_id INT, -- one id value
department_id INT, -- one id value
FOREIGN KEY (period_id) REFERENCES Period(period_id),
FOREIGN KEY (department_id) REFERENCES Department(department_id)
);
当收购过程适用于两个部门和三个时期时,您将如何处理案件?
如果您有多个n元关系(有时也称为多对多关系),那么每个关系确实需要一个交集表。
重新评论:
如果您希望采集流程引用一个期间和一个部门,则将FK列放在AcquisitionProcess表中,并且每个引用的表都有一行。