先看一对多

学生表
create table student(
     id int primary key auto_increment,
     name varchar(20)
);

一个班级对应许多同学

//一个同学属于一个班级,外键写在同学里
create table student(
   id int primary key auto_increment;
   sn int unique,
   name varchar(20) default'不知道'
   classes_id int,//所属班级
   foreign key(classes_id) references classes(id)
);
//classes_id int,
/foreign key(classes_id) references classes(id)这就把两张表关联起来了,学生的class_id属性对应到班级表的id里

学生表和车票
create table student(
  id int primary key auto_increment,
  name varchar(20)
);
create table ticket(
     id int primary key auto_increment,
     name varchar(20)
);

create table student_ticket(
       id int primary key auto_increment,
       //一个学生有很多车票
       student_id int,
       foreign key(student_id) references student(id),
       //一个车票有很多学生
       ticket_id int,
       foreign key(ticket_id) references ticket(id)
);
拆分为两个一对多

一个车票有很多学生,拿着学生去找车票
student_id int,
ticket_id int,
foreign key(ticket_id) references ticket(id)
一个学生有很多张车票,拿着车票找学生
ticket_id int,
student_id int,
foreign key(student_id) references student(id),
二合一就变成student和ticket的中间表了就是多对多了

写一个老师和学生的关系:多对多

create table teacher(
     id int primary key auto_increment,
     name varchar(20)
);
create table student(
     id int primary key auto_increment,
     name varchar(20)
);

create table student_teacher(
       id int primary key auto_increment,
       //一个学生有很多老师(老师对应哪些同学)
       student_id int,
       foreign key(student_id) references student(id),
       //一个老师有很多学生 (学生对应哪些老师,学生去找老师)
       teacher_id int,
       foreign key(teacher_id) references teacher(id)
);

学生和课程的中间表(二合一的一个过程)

学生表
create table student(
     id int primary key auto_increment,
     name varchar(20)
);

课程表
create table course(
    id  int primary key auto_increment,
    name varchar(20)
);

create table student_course(
    id int primary key auto_increment,
    //一个学生对应多个课程(把这个表当做课程表)(该课程属于哪些同学,拿课程去找同学)
    student_id int,
    foreign key(student_id) references student(id),
    //一个课程对应多个学生(把这个表当做学生表)(该同学有哪些课程)
    course_id int,
    foreign key(course_id) references course(id) 8
);

图书,学生具有一个借阅场景(借阅记录表作为中间表)
create table student(
     id int primary key auto_increment,
     name varchar(20)
);
create table book(
     id int primary key auto_increment,
     name varchar(20)
);
create table record(
     id int primary key auto_increment,
     拿着书student_id属性去同学表里找找有哪些同学借过书
     student_id,
     foreign key(student_id) references student(id),
     拿着同学的student_id去找书的表里面查找该同学借过哪些书
     book_id,
     foreign key(student_id) references student(id),
);

mysql多对多关系的理解,由一对多看向多对多相关推荐

  1. Day04 数据库设计01 ~多表之间的关系(一对一,一对多,多对多)

    前言 数据库的设计 首先需要我们了解表与表之间的关系,其次是掌握设计库的规范.今天学习的是数据库中表与表之间的关系,一对一,一对多(多对一),多对多. 一.多表之间的关系 概念:现实生活中,实体与实体 ...

  2. mysql表中的多对多关系表_「一对多」关系型数据库中一对多,多对一,多对多关系(详细) - seo实验室...

    一对多 在关系型数据库中,通过外键将表跟表之间联系在了一起. 一个班级有很多学生,外键维护在学生的一方,也就是多的一方.(在做页面设计的时候,需要把两个表连接到一块查询信息) 建立一个student和 ...

  3. EF 关系规则(一对一、一对多、多对多...)

    转自: http://www.cnblogs.com/dudu/archive/2011/07/11/ef_one-to-one_one-to-many_many-to-many.html Entit ...

  4. SQL 数据库 学习 011 关系、一对一、一对多、多对多

    我的电脑系统:Windows 10 64位 SQL Server 软件版本: SQL Server 2014 Express 什么是关系 定义: 表和表之间的联系. 实现方式: 通过设置不同形式的外键 ...

  5. Spring Boot 入门系列(二十八) JPA 的实体映射关系,一对一,一对多,多对多关系映射!...

    前面讲了Spring Boot 使用 JPA,实现JPA 的增.删.改.查的功能,同时也介绍了JPA的一些查询,自定义SQL查询等使用.JPA使用非常简单,功能非常强大的ORM框架,无需任何数据访问层 ...

  6. Django外键关系:一对一、一对多,多对多

    1. 一对多 model.py class UserTest(models.Model):name = models.CharField(max_length = 16 )sex = models.C ...

  7. java实现多对多关系的方法_Hibernate一对多关联双向关联代码实现分享

    1.创建实体类(Customer.java.Orders.java) package wck.stu.vo.oneToMany_single; import java.util.HashSet; im ...

  8. mysql一对一外键约束_MySQL数据库之-foreign key 外键(一对多、多对多、一对一)、修改表、复制表...

    我们在同一数据库创建的表时候,很多时候会出现相同数据的冗余问题,也就是说几个id会有一个或者同n个相同字段,这样就导致数据表结构数据重复冗余, 冗余还无所谓,关键是如果我要改其中一个相同的字段信息,其 ...

  9. 联合查询是要多创建一个实体类么_[译] 如何用 Room 处理一对一,一对多,多对多关系?...

    原文作者:Florina Muntenescu 原文地址: medium.com/androiddeve- 译者:秉心说 译者说:最近在做一款 Rss 阅读器,使用 Room 存储订阅源以及其中的文章 ...

最新文章

  1. android饼状图简书,Charts-饼状图
  2. 没有 4.21 ,Linus Torvalds 宣布 Linux 进入 5.0 时代
  3. 奇异值分解SVD与PCA
  4. python diff函数_使用Python创建你自己的diff工具
  5. Oracle EBS - Forms Servlet与Socket模式比较
  6. Java集合面试问题
  7. 分享个 之前写好的 android 文件流缓存类,专门处理 ArrayList、bean。
  8. Java多线程之后台线程不执行finally
  9. weblogic 12C集群环境下的session复制
  10. java开发的windows程序工作机制_Windows程序运行原理及程序编写流程
  11. Django运行服务报NameError: name ‘os‘ is not defined-已解决
  12. (素材源码)猫猫学IOS(十)UI之_NSTimer_ios计时器
  13. 《计算机操作系统》练习题
  14. PHP kafka消息队列的使用
  15. TI 库仑计高级篇之Chemistry 创建
  16. 恩智浦智能车一些常见的问题
  17. 功率放大器ADS仿真实例
  18. elasticsearch报错master not discovered yet, this node has not previously joined a bootstrapped (v7+)..
  19. 2021年中国手游行业发展现状及未来发展趋势分析[图]
  20. obsidian安装,主题设置,已经相关功能介绍

热门文章

  1. 哈佛机构与冯诺依曼架构
  2. OpenCV+百度云人脸识别项目及源码
  3. java案例-实现斗地主游戏案例
  4. .loc 与.iloc
  5. iOS KVC和KVO
  6. Do Transformers Really Perform Bad for Graph Representation 阅读笔记
  7. VMware下的Ubuntu连接无线网络解决方案
  8. linux快速解压缩,快速了解linux压缩与解压
  9. 钉钉小程序复选框 全选反选 表单获取内容有误处理
  10. zepto-selector.js简单分析