将 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 都有一行.
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 都有一行.