将 n 元关系转换为 SQL table

Transforming n-ary relationship to SQL table

atm 我正在努力将 n 元关系从我的 ERD 转换为 SQL 表。

在大学里我们了解到,对于每个 n 元关系,我们创建一个与 PK 的交集 table 作为 PK 作为 FK 的集合。但是在这种情况下该怎么办: example1

是否有理由在此处创建交集 table,或者仅将 "Department" 和 "Period" 的 PK 作为 FK 放入 "acquisition process" table 减少 table 的数量?

感谢您的帮助!

为什么,你 运行 不在 table 之列? :-)

在您的示例图中,一个给定的采购流程似乎可以引用多个时期和多个部门。

但是如果把FK放在收购流程中table,那么每个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 元关系(有时也称为多对多关系)时,每个关系确实需要一个交集 table。


回复您的评论:

如果您希望采购流程引用一个时期和一个部门,您可以将 FK 列放在 AcquisitionProcess table 中,并且每个引用的 table 都有一行.