mysql多表多对多关系表

2023-12-21 09:30:17 举报文章

MySQL是一种常见的关系型数据库管理系统,支持多表操作。表与表之间的关系有很多种,其中一种是多对多关系。多对多关系在实际应用中非常常见,这篇文章将介绍如何在MySQL中实现多对多关系。

在MySQL中,要实现多对多关系需要使用关联表。关联表是一个新建的表,用于关联两个或多个原有表的关系。为了实现更好的可读性,我们在创建表时可以使用pre标签保留原代码格式。

--by www.qzphp.cn
CREATE TABLE table1 (
  
 id INT NOT NULL PRIMARY KEY,
  
 name VARCHAR(20) NOT NULL
);
CREATE TABLE table2 (
  
 id INT NOT NULL PRIMARY KEY,
  
 name VARCHAR(20) NOT NULL
);
CREATE TABLE relation (
  
 table1_id INT NOT NULL,
  
 table2_id INT NOT NULL,
  
 PRIMARY KEY (table1_id, table2_id),
  
 FOREIGN KEY (table1_id) REFERENCES table1(id),
  
 FOREIGN KEY (table2_id) REFERENCES table2(id)
);
 

上述代码创建了三个表:table1、table2和relation。table1和table2是原有的表,relation是关联表。relation表包含了两个外键,分别对应table1表和table2表。这样,当需要查询两个表之间的多对多关系时,只需要在relation表中查询即可。

实际应用中,我们可能需要添加更多的列来保存更多的信息。例如,有一个学生表和一个课程表,一个学生可以选修多门课程,一门课程也可以被多个学生选修。我们可以在关联表中添加更多的列来保存每个学生所选修的课程,以及每门课程的选修学生。

--by www.qzphp.cn
CREATE TABLE student (
  
 id INT NOT NULL PRIMARY KEY,
  
 name VARCHAR(20) NOT NULL
);
CREATE TABLE course (
  
 id INT NOT NULL PRIMARY KEY,
  
 name VARCHAR(20) NOT NULL
);
CREATE TABLE student_course (
  
 id INT NOT NULL PRIMARY KEY,
  
 student_id INT NOT NULL,
  
 course_id INT NOT NULL,
  
 grade INT,
  
 FOREIGN KEY (student_id) REFERENCES student(id),
  
 FOREIGN KEY (course_id) REFERENCES course(id)
);
 

上述代码创建了三个表:student、course和student_course。student和course是原有的表,student_course是关联表。student_course表包含了三个外键,分别对应student表、course表以及另外一个主键id。

以上就是在MySQL中实现多表多对多关系的方法,希望对大家有所帮助。

如果你认为本文可读性较差,内容错误,或者文章排版错乱,请点击举报文章按钮,我们会立即处理!