设计数据表,遇到一个很常见的情况。

一、中间表-多对多关系的转化

实际中,经常存在多对多关系。以订单和商品为例,一个订单对应多个商品,一个商品也对应多个订单。此时在将E-R图转化为关系模型时,需要引入中间表(也叫做连接表)。

中间表包含两个实体表的主键,建立两张表沟通。中间表也可以有普通字段。例如商品数量,和每种商品总和。注意:要把他们与实体表中字段含义区分开。

参考连接:https://zhidao.baidu.com/question/1732427061119828187.html

二、中间表主键

中间表的主键,可以是两个外键作为联合主键,也可以是再增加一个主键字段。

由于我的表中除了两个外键,还有普通字段,增加一个主键后,逻辑更清楚,所以我建议再增加一个主键字段。

三、三个实体间均存在多对多的关系

三个实体存在多对多关系有以下三种情况:

1.有一个实体与剩下两个实体存在N:M关系,剩下两个实体没有N:M关系。

图1

2.三个实体间均存在多对多关系。以下这两种情况搞不清楚有什么区别,实际应用时哪种方式更好一点?个人感觉由于图2生成的中间表包含所有的关系,一张表可以连接三个表,查询会更快捷,所以采用了图2。哪位大佬若是了解透彻,还请不吝赐教,指点一二

图2

参考链接:http://www.cnblogs.com/huangfr/archive/2011/10/10/2206706.html

数据表设计:中间表——多对多关系E-R图转换相关推荐

  1. mysql建立班级表_mysql数据表设计-班级表 学生表 老师表 课程表 成绩表

    mysql数据表设计- 班级表 学生表 老师表 课程表 成绩表 image.png /* Navicat Premium Data Transfer Source Server : localhost ...

  2. Django框架项目——BBS项目介绍、表设计、表创建同步、注册、登录功能、登录功能、首页搭建、admin、头像、图片防盗、个人站点、侧边栏筛选、文章的详情页、点赞点踩、评论、后台管理、添加文章、头像

    文章目录 1 BBS项目介绍.表设计 项目开发流程 表设计 2 表创建同步.注册.登录功能 数据库表创建及同步 注册功能 登陆功能 3 登录功能.首页搭建.admin.头像.图片防盗.个人站点.侧边栏 ...

  3. 数据库设计中,多对多关系使用使用逗号分割关联讨论

    进公司一个月,发现公司很多人喜欢用逗号分割,去存储其它表的主键,做多对多关联,但存在很多乱用现象.这里对这种方式做了下总结. 在传统数据库设计中,多对多关系存储通常都是用一张中间表来简历两张表的关系. ...

  4. mybatis-plus多表查询(三表多对多关系)

    数据库表的关系无非就四种:1.一对多(多对一),2.一对一,3.多对多,4.没有关系.其实面对数据表的多对多关系并没有那么复杂,那要看你怎么实现,传统的方法无非就是查询sql语句,而我要的是不通过自己 ...

  5. mysql栏目表设计_MySQL表设计

    文章摘自: https://mp.weixin.qq.com/s?__biz=MzI2NDU3OTg5Nw==&mid=2247483799&idx=1&sn=4d1f45ab ...

  6. mysql 多对多建表_mysql – 为什么在多对多关系中创建一个新表?

    我正在创建一个数据库来存储有关乐器的信息.我在MySQL工作台中使用EER图来可视化每个表之间的关系. 当我创建多对多(n:m)关系时,会创建一个新表,其中包含新关系中涉及的表的主键.其他关系,如一对 ...

  7. 表设计----用户表,角色表,权限表

    基于角色的访问控制:(java Web 编程口诀) 用户表角色表,用户角色中间表. 角色表权限表,角色权限中间表. 一个用户可有多个角色,一个角色又可有多个权限.这就是用户-角色-权限授权的模型. 为 ...

  8. mysql 表设计 date_mysql 表 Date类型

    举个例子给你吧,mysql的 datetime字段 有表: CREATE TABLE `u_user` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `nick ...

  9. MySQL表设计---字典表的设计与接口实现

    文章目录 1.字典表的意义 2.若依的字典表结构 3.ruoyi枚举类 4.代码.ruoyi字典查询接口与缓存 1.字典表的意义 假设有一个职员表: 姓名 性别 证件类型 学历 国籍 甲 男 身份证 ...

  10. 【MySQL】高性能高可用表设计实战-表设计篇(MySQL专栏启动)

最新文章

  1. Linux字符界面和图形界面
  2. 游戏大厅 从基础开始(7)--绕回来细说聊天室(中间偏下)之女仆编年史2
  3. 什么为java运行时的环境_什么是JRE?Java运行时环境简介(一)
  4. vue2.0项目结构和打包发布
  5. docker安装zookeeper
  6. Linux 中的 DTrace :BPF 进入 4.9 内核
  7. jsp java 登陆界面代码_jsp登陆界面源代码
  8. 谷歌浏览器如何截全屏长图(非常实用)
  9. Thread.MemoryBarrier 方法
  10. html5手机app抽奖页面,app H5活动抽奖转盘 前端+后台
  11. 苹果电脑教程之退出ID账号
  12. NYOJ 19 擅长排列的小名 next_permutation()的用法
  13. 互联网的控制权——根服务器
  14. 用html5 js实现浏览器全屏
  15. Linux设备上时间不准确?使用chrony服务配置时间服务器实现Linux时间同步以及实现主从设备时间同步
  16. Gliffy - 一个在线的画UML图,流程图的工具
  17. 面向对象三大特征---继承
  18. 第一篇博客----试水
  19. C++之一些事一些情--变量值的溢出问题
  20. 用群论证明费马小定理和欧拉定理

热门文章

  1. 推荐 | 最棒的30个机器学习实例
  2. 欧洲杯第四周的比赛闲聊
  3. Yann LeCun对于AI的最新见解 | 深度学习现存的各类疑问,你是否想知道答案?
  4. 英雄体育VSPN冲刺港股:9个月营收超13亿 腾讯是股东
  5. Android手机录屏
  6. 编写程序实现比萨制作
  7. Word转成PDF后有很多空白页怎么办?
  8. [如何写一篇优秀的论文] 文章的提纲
  9. 微信小程序 - 页面事件
  10. PS怎样把做圆角图片?