对于多对多的关系,建表的方式是有两种的,最常见的做法就是建立一张中间关系表b,关联另外两张表a和c的主键,不要其他多余信息,这种做法通常的情况就是a表和c表中的数据不能有重复的,所以我们只能建立单独的关联关系来关联两张表中的记录。而且建立这种关联关系时不会产生其他很多附属关联信息,或者说是a表和c表都需要独立的维护,不能受对应关系的影响。比如有一张用户表,和兴趣表,用户和兴趣之间属于多对多的关系,且用户表和兴趣表都是独立维护的,不能受关系变化而影响,所以只能建立关联关系表,这和业务有很大的关系。另外还有一种业务场景,比如团队和队员这种关系,业务场景是队员在不同团队中时,会有不同的其他属性,比如在a团队中是管理者,在b团队中是普通队员,这个时候,你会发现对应关系对应着很多属性,或者说团队表和队员表,其中队员表中的队员无法复用,同一个人必须重复出现,因为当队员处于不同团队时,他会有不同的属性,这个时候,关联关系表就没有必要存在了,因为队员表中一条队员记录只能对应一个团队,要对应其他团队,只能新增队员记录,其实这时队员表就已经是队员表和关系表的合体了,所以就不需要关联表了。这个时候多对多的关系就只涉及了两张表了,和前一个例子是完全不同的。所以建表时千万要分析清楚业务场景,因为我是见过有人在第二种业务场景下还建立了关联关系表,并且还把附属字段添加到关系表中,并把团队id关联到队员表中,不仅违反了正常人的逻辑,还没有简化成2张表,成功的将简单问题复杂了很多。

数据库多对多关系建表相关推荐

  1. 14-多对多关系建表

    多对多关系建表 目录 多对多关系 多对多关系建表原则 domain 多对多关系 一个老师可以教多个学生,一个学生可以被多个老师教. 一个学生可以选择多门课程,一门课程可以被多个学生选择. 一个用户可以 ...

  2. 【MyBatis笔记】16-多对多关系建表

    多对多关系建表 多对多关系 多对多关系建表原则 domain 多对多关系 一个老师可以教多个学生,一个学生可以被多个老师教. 一个学生可以选择多门课程,一门课程可以被多个学生选择. 一个用户可以选择多 ...

  3. 09-一对多关系建表

    多表操作 目录 表之间关系 一对多关系建表原则 表之间关系 一对一关系:一夫一妻. 一对多关系: 一个部门有多个员工,一个员工只能属于某一个部门. 一个班级有多个学生,一个学生只能属于一个班级. 多对 ...

  4. 【MyBatis笔记】09-一对多关系建表

    多表操作 表之间关系 一对多关系建表原则 表之间关系 一对一关系:一夫一妻. 一对多关系: 一个部门有多个员工,一个员工只能属于某一个部门. 一个班级有多个学生,一个学生只能属于一个班级. 多对多关系 ...

  5. EF 多对多关系 中间表操作

    EF多对多关系中间表简单操作 业务场景 新增中间表 修改中间表 业务场景 业务中碰到两个表是多对多关系 示例:实际数据库中是表Users(用户表)和 表Rooms(办公室),和中间表UserRooms ...

  6. SQL数据库常用约束及建表、插入数据时注意事项

    1.数据库常用约束 primary key --主键约束 foreign key (references) --外键约束 unique --唯一值约束 default --默认值约束 check -- ...

  7. Flask 数据库多对多关系

    数据库使用关系建立记录之间的联系.其中,一对多关系是最常用的关系类型,它把一个记录和一组相关的记录联系在一起.实现这种关系时,要在"多"这一侧加入一个外键,指向"一&qu ...

  8. SQL数据库实战(含建表数据和查询案例)

    Oracle数据库安装的时候会自带一个练习用数据库(其中包含employee表,后来版本中此表改名为emp): 首先在安装过程中应该有个选项"是否安装实例表"(完全安装模式下默认是 ...

  9. mysql数据库 头像字段_模仿陌陌八张头像的数据库,应该如何建表才合适?

    我想大家都已经看过我以前的问题了.就是吐槽创业好难.自己能力不足,基本上我获得的经验都是segmentfault上面一个个提问得来的.在这里,我要感谢哪些帮助过我的人,不管是多么幼稚的问题都会有人热心 ...

最新文章

  1. iPad mini时隔四年更新,搭载A12芯片,起售价2999
  2. golang atomic 32位机器问题
  3. 第十五篇 Python之文件处理
  4. Oracle Enterprise Manager 11g 启停
  5. 安装composer 提示需要反复重启解决办法
  6. 高并发下的HashMap
  7. HighCharts:隐藏最下方logo
  8. Linux root找回密码的方法
  9. linux服务器 网速测试
  10. 铂电阻测温电路c语言程序,pt100检测电路,Pt100铂电阻测温电路经验
  11. 8芯网线中哪几根是有用的?
  12. wifi信号衰减与距离关系_无线传输距离计算公式
  13. C#获取月份的中/英文名称
  14. 嵌套饼图设置不同的颜色
  15. 关于风险回归的Cox 模型构建,森林图(1)
  16. 基于51单片机 + ds12c887 + ds18b20 + lcd1602的时钟温度显示器(带闹钟功能)
  17. 人效提高350%,基于KICP搭建的营销套电客服机器人,让欧派家居赢在起点
  18. Intel无线网卡蓝牙功能失效解决思路分享
  19. 2015 mbpr13 升级固态硬盘
  20. osgEarth示例分析——osgearth_minimap

热门文章

  1. 树莓派3B和攀藤PMS5003ST
  2. RT-Thread Studio学习 驱动攀藤PMS5003ST PM2.5传感器
  3. 励志长篇小说《周兴和》书连载之二饥饿寒冷童年
  4. 【正点原子FPGA连载】第十二章 呼吸灯实验 -摘自【正点原子】领航者ZYNQ之FPGA开发指南_V2.0
  5. 数据结构实验教程-第一套
  6. 电脑配置ip--host修改ip地址然后刷新操作-win10
  7. 从水处理速度梯度的公式,复习一下物理学常用公式,擦边爱因斯坦质能方程
  8. java 推流_使用java执行ffmpeg命令进行推流操作
  9. 乔治亚理工学院计算机专业,佐治亚理工学院计算机专业怎么样?
  10. python画球鞋_基于Python爬虫原理的篮球鞋选择程序的设计与实现