二十、MySQL多表关系

1、概述

        在项目开发中,在进行数据库表结构设计时,会根据业务需求以及业务模块之间的关系,分析并设计表结构,由于业务之间相互关联,所以各个表结构之间也存在着各种对应关系

2、多表关系分类

(1)一对多

(2)多对多

(3)一对一

3、一对多

(1)基础举例:

二十、MySQL多表关系_第1张图片

4、多对多

(1)基础举例:

二十、MySQL多表关系_第2张图片

(2) 代码举例:

use other;
select database();
create table student(
    id int auto_increment primary key comment '主键ID',
    name varchar(10) comment '姓名',
    no varchar(10) comment '学号'
)comment '学生表';
insert into student values (null,'lom','42201'),
                           (null,'kom','42202'),
                           (null,'jom','42203'),
                           (null,'hom','42204');

create table course(
    id int auto_increment primary key comment '主键ID',
    class varchar(10) comment '课程名称'
);
insert into course values (null,'chinese'),
                          (null,'math'),
                          (null,'chinese'),
                          (null,'english');

create table student_course(
    id int auto_increment primary key comment '主键',
    StudentId int not null comment '学生ID',
    CourseId int not null comment '课程ID',
    constraint fk_CourseId foreign key (CourseId) references course(id),
    constraint fk_StudentId foreign key (StudentId) references student(id)
)comment '学生课程中间表';
insert into student_course values (null,1,1),(null,1,2),(null,1,4),
                                  (null,2,1),(null,2,2),
                                  (null,3,1),(null,3,2),(null,3,3),(null,3,4),
                                  (null,4,2);

运行之后,会建立三个表:

student:存放着学生信息的表,其字段“id”作为student_source表中的StudentId字段的外键;

二十、MySQL多表关系_第3张图片

source:存放着课程名称,其字段“id”作为student_source表中的SourceId字段的外键;

二十、MySQL多表关系_第4张图片

student_sources:作为一个中间表,将student和source两张表连接在一起,多对多关系;

二十、MySQL多表关系_第5张图片

5、一对一

(1)基础举例:

在创建子表结构时,给外键字段设置限制“唯一”,unique即可

二十、MySQL多表关系_第6张图片

(2)代码举例:

二十、MySQL多表关系_第7张图片

你可能感兴趣的:(MYSQL,mysql,数据库,sql)