【发布时间】:2017-11-12 12:48:31
【问题描述】:
atm 我正在努力将 N 元关系从我的 ERD 转换为 SQL 表。
在大学里我们了解到,对于每个 n 元关系,我们创建一个交集表,其中 PK 作为 FK 的 PK 的集合。但是在这种情况下该怎么办: example1
是否有理由在这里创建一个交集表,或者只是将“部门”和“期间”的PK作为FK放入“获取过程”表中以减少表的数量?
感谢您的帮助!
【问题讨论】:
atm 我正在努力将 N 元关系从我的 ERD 转换为 SQL 表。
在大学里我们了解到,对于每个 n 元关系,我们创建一个交集表,其中 PK 作为 FK 的 PK 的集合。但是在这种情况下该怎么办: example1
是否有理由在这里创建一个交集表,或者只是将“部门”和“期间”的PK作为FK放入“获取过程”表中以减少表的数量?
感谢您的帮助!
【问题讨论】:
为什么,你的桌子用完了? :-)
在您的示例图中,给定的采购流程似乎可以涉及多个时期和多个部门。
但是如果你把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 表中,并且每个引用的表都有一行。
【讨论】:
But if you put the FK's into the acquisition process table, you can only put one value in each FK column, so you will only be able to refer to one period and one department for each process, like this: ...这是预期的结果。然后我假设我的 ERD 是错误的,但是我如何在 ERD 中显示这种情况?我必须把它分成两个关系吗?
it appears that a given acquisition process can refer to multiple periods and multiple departments.。如果我将示例 ERD 中的 (1,1) 替换为 (1,n),现在的含义有什么不同?