开发者学堂课程【Servlet 入门:多对多关系】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/36/detail/815
多对多关系
内容介绍
一、多对多关系
一、多对多关系
在表中建立多对多关系需要使用中间表,即需要三张表,在中间表中使用两个外键,分别引用其他两个表的主键。
create table student(
sid int PRIMARY REY,
…
);
create table teacher(
tid int PRIMARY KEY,
…
);
create table stu_tea(
sid int,
tid int,
ADD CONSTRAINT fk_stu_tea_sid FOREIGN KEY(sid) REFERENCES student(sid),
ADD CONSTRAINT fk_stu tea_tid FOREIGN KEY(tid) REFERENCES teacher(tid)
);
这时在 stu_tea 这个中间表中的每条记录都是来说明 student 和 teacher 表的关系
例如在 stu_tea 表中的记录:sid为1001,tid 为2001,这说明编号为1001的学生有一个编号为2001的老师
sid tid
101 201 /*编号为
101
的学生有一个编号为
203
的老师
*/
101 202 /*编号为
102
的学生有一个编号为
201
的老师
*/
101 203 /*编号为
102
的学生有一个编号为
204
的老师
*/
102 201 /*编号为
101
的学生有一个编号为
201
的老师
*/
102 204 /*编号为
101
的学生有一个编号为
202
的老师
*/
CREATE TABLE student
(
sid INT PRIMARY KEY AUTO_INCREMENT,
sname VARCHAR(50)
)
CREATE TABLE teacher(
tid INT PRIMARY KEY AUTO_INCREMENT,
tname VARCHAR(50)
);
CREATE TABLE stu_tea(
sid INT,
tid INI,
CONSTRAINT fk_student FOREIGN KEY(sid) REFERENCES student(sid),
CONSTRAINT fk_teacher FOREIGN KEY(tid) REFERENCES teacher(tid)
);
INSERT INTO student VALUES(NULL,'刘德华
');
INSERT INTO student VALUES(NULL,'梁朝伟
');
INSERT INTO student VALUES (NULL,'黄日华
');
INSERT INTO student VALUES(NULL,'苗侨伟
');
INSERT INTO student VALUES(NULL,'汤朕业');
INSERT INTO teacher VALUES(NULL,'崔老师
");
INSERT INTO teacher VALUES(NULL,'刘老师
");
INSERT INTO teacher VALUES(NULL,'石老师");
SELECT * EROM student;
SELECT * FROM teacher;
INSERT INTO stu_tea VALUES(1, 1);
INSERT INTO stu_tea VALUES(2, 1);
INSERT INTO stu_tea VALUES(3, 1);
INSERT INTO stu_tea VALUES(4, 1);
INSERT INTO stu_tea VALUES(5, 1);
INSERT INTO stu_tea VALUES(2, 2);
INSERT INTO stu_tea VALUES(3, 2);
INSERT INTO stu tea VALUES(4, 2);
INSERT INTO stu_tea VALUES(3, 3);
INSERT INTO stu_tea VALUES(4, 3);
INSERT INTO stu_tea VALUES(5, 3);
BELECT FROM stu_tea;