数据表设计:中间表——多对多关系E-R图转换
设计数据表,遇到一个很常见的情况。
一、中间表-多对多关系的转化
实际中,经常存在多对多关系。以订单和商品为例,一个订单对应多个商品,一个商品也对应多个订单。此时在将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图转换相关推荐
- mysql建立班级表_mysql数据表设计-班级表 学生表 老师表 课程表 成绩表
mysql数据表设计- 班级表 学生表 老师表 课程表 成绩表 image.png /* Navicat Premium Data Transfer Source Server : localhost ...
- Django框架项目——BBS项目介绍、表设计、表创建同步、注册、登录功能、登录功能、首页搭建、admin、头像、图片防盗、个人站点、侧边栏筛选、文章的详情页、点赞点踩、评论、后台管理、添加文章、头像
文章目录 1 BBS项目介绍.表设计 项目开发流程 表设计 2 表创建同步.注册.登录功能 数据库表创建及同步 注册功能 登陆功能 3 登录功能.首页搭建.admin.头像.图片防盗.个人站点.侧边栏 ...
- 数据库设计中,多对多关系使用使用逗号分割关联讨论
进公司一个月,发现公司很多人喜欢用逗号分割,去存储其它表的主键,做多对多关联,但存在很多乱用现象.这里对这种方式做了下总结. 在传统数据库设计中,多对多关系存储通常都是用一张中间表来简历两张表的关系. ...
- mybatis-plus多表查询(三表多对多关系)
数据库表的关系无非就四种:1.一对多(多对一),2.一对一,3.多对多,4.没有关系.其实面对数据表的多对多关系并没有那么复杂,那要看你怎么实现,传统的方法无非就是查询sql语句,而我要的是不通过自己 ...
- mysql栏目表设计_MySQL表设计
文章摘自: https://mp.weixin.qq.com/s?__biz=MzI2NDU3OTg5Nw==&mid=2247483799&idx=1&sn=4d1f45ab ...
- mysql 多对多建表_mysql – 为什么在多对多关系中创建一个新表?
我正在创建一个数据库来存储有关乐器的信息.我在MySQL工作台中使用EER图来可视化每个表之间的关系. 当我创建多对多(n:m)关系时,会创建一个新表,其中包含新关系中涉及的表的主键.其他关系,如一对 ...
- 表设计----用户表,角色表,权限表
基于角色的访问控制:(java Web 编程口诀) 用户表角色表,用户角色中间表. 角色表权限表,角色权限中间表. 一个用户可有多个角色,一个角色又可有多个权限.这就是用户-角色-权限授权的模型. 为 ...
- mysql 表设计 date_mysql 表 Date类型
举个例子给你吧,mysql的 datetime字段 有表: CREATE TABLE `u_user` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `nick ...
- MySQL表设计---字典表的设计与接口实现
文章目录 1.字典表的意义 2.若依的字典表结构 3.ruoyi枚举类 4.代码.ruoyi字典查询接口与缓存 1.字典表的意义 假设有一个职员表: 姓名 性别 证件类型 学历 国籍 甲 男 身份证 ...
- 【MySQL】高性能高可用表设计实战-表设计篇(MySQL专栏启动)
最新文章
- Linux字符界面和图形界面
- 游戏大厅 从基础开始(7)--绕回来细说聊天室(中间偏下)之女仆编年史2
- 什么为java运行时的环境_什么是JRE?Java运行时环境简介(一)
- vue2.0项目结构和打包发布
- docker安装zookeeper
- Linux 中的 DTrace :BPF 进入 4.9 内核
- jsp java 登陆界面代码_jsp登陆界面源代码
- 谷歌浏览器如何截全屏长图(非常实用)
- Thread.MemoryBarrier 方法
- html5手机app抽奖页面,app H5活动抽奖转盘 前端+后台
- 苹果电脑教程之退出ID账号
- NYOJ 19 擅长排列的小名 next_permutation()的用法
- 互联网的控制权——根服务器
- 用html5 js实现浏览器全屏
- Linux设备上时间不准确?使用chrony服务配置时间服务器实现Linux时间同步以及实现主从设备时间同步
- Gliffy - 一个在线的画UML图,流程图的工具
- 面向对象三大特征---继承
- 第一篇博客----试水
- C++之一些事一些情--变量值的溢出问题
- 用群论证明费马小定理和欧拉定理