Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 将n元关系转换为SQL表_Mysql_Sql_Mariadb_Erd - Fatal编程技术网

Mysql 将n元关系转换为SQL表

Mysql 将n元关系转换为SQL表,mysql,sql,mariadb,erd,Mysql,Sql,Mariadb,Erd,atm我正在努力将n元关系从ERD表转换为SQL表 在大学里,我们了解到,对于每个n元关系,我们创建一个交集表,其中PK作为PK的集合,作为FKs。但在这种情况下该怎么办: 是否有理由在此处创建一个交集表,或者将“部门”和“期间”的PKs作为FKs放入“采集过程”表中,以减少表的数量 谢谢你的帮助 为什么,你的桌子快用完了吗?:-) 在您的示例图中,一个给定的采集过程可能涉及多个时期和多个部门 但如果将FK放入采集流程表中,则每个FK列只能输入一个值,因此每个流程只能引用一个期间和一个部门,如

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

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

是否有理由在此处创建一个交集表,或者将“部门”和“期间”的PKs作为FKs放入“采集过程”表中,以减少表的数量


谢谢你的帮助

为什么,你的桌子快用完了吗?:-)

在您的示例图中,一个给定的采集过程可能涉及多个时期和多个部门

但如果将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列放在采集流程表中,每个引用的表都有一行


感谢您的快速响应<代码>但如果将FK放入采集流程表中,则每个FK列中只能输入一个值,因此每个流程只能引用一个期间和一个部门,如下所示:…这是预期结果。那么我假设我的ERD是错误的,但是我如何在ERD中显示这种情况呢?我必须把它分成两段感情吗?太好了,非常感谢!但现在我还有一个问题。让我们回到我第一篇文章中的ERD。如果(1,1)也是(1,n),我应该如何解释ERD?我认为(1,1)意味着一个流程只能涉及一个时期和一个部门,但您纠正了我的错误,并编写了
,似乎给定的采集流程可以涉及多个时期和多个部门。
。现在,如果我用(1,n)替换示例中的(1,1)ERD,其含义有什么区别?我从未见过一个ERD有这样多个链接的菱形。使用菱形时,请在左侧放置“1..*”或“N”,在右侧放置“1”或“0..1”。为每个关系使用单独的菱形关联实体。