mysql - 如何在mysql中创建多对多关系

标签 mysql many-to-many

我相信标题是不言自明的。如何在MySQL中创建表结构以建立多对多关系。

我的 table 是:

pr_resignations_request(
    id, userids ,managerid  ,resignations_date  ,reason_type    requested_date, last_status,    date_last_status,   agreed_date exit_details,   exit_checklist, exit_type,  comments,   discussion, withdrawn,  manager_comments
);

pr_exit_checklist(
    checklist_id, category, action item, responsibility, time_completion, status
);

我正在尝试链接这两个表,以便每个辞职请求都有多个 list 项目。此外, list 项目在添加和删除时可以增长和缩小,辞职请求表在添加和删除时也可以增长和缩小。仅供引用,我正在使用 codeigniter 框架,我不知道如何实现这一点。

最佳答案

使用两个相关表的外键创建一个数据透视表。
假设您有一个包含列 id 的产品表和name 。 还有一个购物车表,其中包含列 idname
要在产品和购物车表之间创建多对多关系,请创建一个包含列 product_id 的中间表。 (外键引用 id 表的 Product 列)和 cart_id (外键引用id表的Cart列)

更新 1:

在您的情况下,中间表将包含 pr_resignations_request_id (外键引用 id 表的 pr_resignations_request 列)和 pr_exit_checklist_id (外键引用checklist_id表的pr_exit_checklist列)

更新 2:

CREATE TABLE checklist_resignation (
pr_resignations_request_id <data_type>,
pr_exit_checklist_id <data_type>,
Constraint FOREIGN KEY (pr_resignations_request_id) REFERENCES pr_resignations_request(id),
Constraint FOREIGN KEY (pr_exit_checklist_id) REFERENCES pr_exit_checklist(checklist_id)
);

请替换<data_type>在上面的sql语句中分别指定它们所引用的列的数据类型。

关于mysql - 如何在mysql中创建多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38812507/

相关文章:

mysql - SQL 替换语句的正确 MariaDB 语法

java - 在 Hibernate 中通过映射表值排序

SQL 语句 - 排除某些数据

mysql - 更新 mysql 中的表后触发错误 1054

mysql - 如何优化我的 mysql 查询以更快地检索数据

mysql - 错误 1054 (42S22) : Unknown column 'year' in 'where clause'

java - 每次在多对多关系中插入新数据时,以前的数据都会被删除

mysql - SQL - 多个多对多关系过滤 SELECT

java - ManyToMany 集合不断被删除

mysql - 如何在 MySQL for Mac 上设置默认端口