• 二十、MySQL多表关系


    1、概述

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

    2、多表关系分类

    (1)一对多

    (2)多对多

    (3)一对一

    3、一对多

    (1)基础举例:

    4、多对多

    (1)基础举例:

    (2) 代码举例:

    1. use other;
    2. select database();
    3. create table student(
    4. id int auto_increment primary key comment '主键ID',
    5. name varchar(10) comment '姓名',
    6. no varchar(10) comment '学号'
    7. )comment '学生表';
    8. insert into student values (null,'lom','42201'),
    9. (null,'kom','42202'),
    10. (null,'jom','42203'),
    11. (null,'hom','42204');
    12. create table course(
    13. id int auto_increment primary key comment '主键ID',
    14. class varchar(10) comment '课程名称'
    15. );
    16. insert into course values (null,'chinese'),
    17. (null,'math'),
    18. (null,'chinese'),
    19. (null,'english');
    20. create table student_course(
    21. id int auto_increment primary key comment '主键',
    22. StudentId int not null comment '学生ID',
    23. CourseId int not null comment '课程ID',
    24. constraint fk_CourseId foreign key (CourseId) references course(id),
    25. constraint fk_StudentId foreign key (StudentId) references student(id)
    26. )comment '学生课程中间表';
    27. insert into student_course values (null,1,1),(null,1,2),(null,1,4),
    28. (null,2,1),(null,2,2),
    29. (null,3,1),(null,3,2),(null,3,3),(null,3,4),
    30. (null,4,2);

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

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

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

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

    5、一对一

    (1)基础举例:

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

    (2)代码举例:

  • 相关阅读:
    [PAT-Advanced] A1025. PAT Ranking (25)
    【LeetCode】29. 两数相除
    QRunnable与外界互传对象
    反转字符串II
    selenium屏幕操作事件TouchActions
    Springboot登录验证的统一拦截处理
    【Unity db】sqlite
    反转链表(力扣)
    2.1.1 面向对象:类和对象概念
    leetcode 二叉树的公共近祖先
  • 原文地址:https://blog.csdn.net/2301_79149013/article/details/132776041