多对多关系 | 学习笔记

简介: 快速学习多对多关系。

开发者学堂课程【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 表中的记录:sid1001tid 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;1.png

相关文章
|
6月前
|
Python
使用Django时,如何设计模型关系(一对一、一对多、多对多)?
Django支持三种模型关联:ForeignKey(一对多),OneToOneField(一对一)和ManyToManyField(多对多)。ForeignKey示例:`Article`有一个指向`Author`的外键。OneToOneField示例:`UserProfile`与`User`一对一关联。ManyToManyField示例:`Student`和`Course`之间多对多关系。这些关联字段便于反向查询,如`article.author`获取作者,`author.article_set.all()`获取作者所有文章。
63 1
|
SQL XML 数据格式
mybatis-关联关系&一对多关联&多对一关联&多对多
mybatis-关联关系&一对多关联&多对一关联&多对多
|
存储 Java 数据库
JPA实现多对多关系
JPA实现多对多关系
165 0
|
Java 数据库连接 数据库
多对一的处理 | 学习笔记
快速学习多对一的处理
多对一的处理 | 学习笔记
|
XML Java 数据库连接
一对多的处理| 学习笔记
快速学习一对多的处理。
|
存储 关系型数据库 数据库
[译] 如何用 Room 处理一对一,一对多,多对多关系?
[译] 如何用 Room 处理一对一,一对多,多对多关系?
[译] 如何用 Room 处理一对一,一对多,多对多关系?
|
数据库 开发者
一对一关系 | 学习笔记
快速学习一对一关系。
135 0
一对一关系 | 学习笔记
|
数据库 开发者 Java
多对一的处理 | 学习笔记
快速学习多对一的处理。
110 0
多对一的处理 | 学习笔记
|
设计模式 开发框架 Oracle
多对多关系 | 学习笔记
快速学习多对多关系。
112 0
举一个多对多关联的例子,并说明如何实现多对多关联映射
例如:商品和订单、学生和课程都是典型的多对多关系。可以在实体类上通过@ManyToMany注解配置多对多关联或者通过映射文件中的和标签配置多对多关联,但是实际项目开发中,很多时候都是将多对多关联映射转换成两个多对一关联映射来实现的。
1512 0