连载之5

原创:胖子刘(转载请注明出处及作者,谢谢。)(四)多对多模式

多对多模式,也是比较常见的一种数据库设计模式,它所描述的两个对象不分主次、地位对等、互为一对多的关系。对于A表来说,一条记录对应着B表的多条记录,反过来对于B表来说,一条记录也对应着A表的多条记录,这种情况就是“多对多模式”。

“多对多模式”需要在A表和B表之间有一个关联表,这个关联表也是“多对多模式”的核心所在。根据关联表是否有独立的业务处理需求,可将其划分为两种细分情况。

1.关联表有独立的业务处理需求。

举例如下(注:这个例子已经作了相当程度的简化,仅仅是用来帮助大家理解“多对多模式”这个概念来使用的,请大家注意)。

比如网上书店,通常都会有“书目信息”和“批发单”。一条“书目信息”面对不同的购买客

户、可以存在多张“批发单”,反过来,一张“批发单”也可以批发多条书目,这就是多对多模式。中间的“批发单明细”表就是两者的关联表,具备独立的业务处

理需求,是一个业务实体对象,因此它具备一些特有的属性,比如针对每一条明细记录而言的“累计退货次数”、“累计退货数量”、“累计结算次数”、“累计结

算数量”;由于批发单明细在数据产生后已经打印出纸质清单提供给客户,因此在“批发单明细”表里对纸质清单中打印的书目信息属性作了冗余(逆标准化),这

样在将来即使修改了“书目信息”表中的属性,也不会影响跟客户核对批发单明细,不会影响未来的财务结算业务。

2.关联表没有独立的业务处理需求

举例如下(注:这个例子已经作了相当程度的简化,仅仅是用来帮助大家理解“多对多模式”这个概念来使用的,请大家注意)。

比如用户与角色之间的关系,一般系统在做权限控制方面的程序时都会涉及到“系统用户表”

和“系统角色表”。一个用户可以从属于多个角色,反过来一个角色里面也可以包含多个用户,两者也是典型的“多对多关系”。其中的关联表“用户角色关联表”

在绝大多数情况下都是仅仅用作表示用户与角色之间的关联关系,本身不具备独立的业务处理需求,所以也就没有什么特殊的属性。

mysql 多表关联建模_(四)多对多模式 - 数据库模型设计专栏 - CSDN博客相关推荐

  1. oracle表的历史数据转储过程,C#连接Oracle数据库通过存储过程操作数据库 - cuizm的专栏 - CSDN博客...

    C#连接Oracle数据库通过存储过程操作数据库 收藏 此文于2011-06-07被推荐到CSDN首页 此文于2011-06-08被推荐到CSDN首页 如何被推荐? 之前笔者一直用C#连接SQL Se ...

  2. java后台两个表关联查询_简单界面+JAVA后台+数据库实现页面对数据库的两张关联表操作...

    前几天写了简单的从页面对数据库进行的操作,下面对该功能进行升级,操作两张相关联的表:上次是对新闻类型的修改,我在这里就不重复了,可以查看我之前的博客, 首先从页面说起: 页面部分: 页面部分我用了10 ...

  3. mfc mysql clistctrl_MFC控件使用总结——CListCtrl - mlidify的专栏 - CSDN博客

    MFC控件使用总结--CListCtrl 收藏 CListCtrl介绍 列表控件可以看作是功能增强的ListBox,它提供了四种风格,而且可以同时显示一列的多中属性值.LVS_ICON ,LVS_SM ...

  4. switchyomega规则列表备份_求人不如求己,自己动手写一个CSDN博客备份小工具?...

    前提概要 背景 因为笔者在上个月的时候,突然想扩展一下技术栈,不能仅仅局限于Java,还是得掌握一门工具语言,不然显得太low.所以也就对Python和Golang类的语言有了一些兴趣.也就在上个月简 ...

  5. python刷阅读_简单的37行python爬虫刷CSDN博客阅读数

    # -*- coding:utf-8 -*- # 利用爬虫刷CSDN博客阅读数 import requests from bs4 import BeautifulSoup # 解析源码 def Get ...

  6. mysql join 组合索引_详解MySQL两表关联的连接表创建单列索引还是组合索引最优...

    概述 今天主要介绍一下MySQL中两表关联的连接表是如何创建索引的相关内容,下面来看看详细的介绍. MySQL两表关联的连接表创建索引 创建数据库的索引,可以选择单列索引,也可以选择创建组合索引. 假 ...

  7. MySQL多表关联查询效率高点还是多次单表查询效率高,为什么?

    这里写目录标题 MySQL多表关联查询对比多次单表查询,哪个效率高? 疑问: 高手解答: <阿里巴巴JAVA开发手册>里面写超过三张表禁止join 这是为什么?这样的话那sql要怎么写? ...

  8. SpringBoot实现1对1、1对多、多对多关联查询——基于SpringBoot和Vue的后台管理系统项目系列博客(十八)

    系列文章目录 系统功能演示--基于SpringBoot和Vue的后台管理系统项目系列博客(一) Vue2安装并集成ElementUI--基于SpringBoot和Vue的后台管理系统项目系列博客(二) ...

  9. 深入理解计算机系统 -资料整理 高清中文版_在所不辞的博客-CSDN博客_深入理解计算机系统第四版pdf

    深入理解计算机系统 -资料整理 高清中文版_在所不辞的博客-CSDN博客_深入理解计算机系统第四版pdf

最新文章

  1. ACC026简要题解
  2. antiSMASH数据库:微生物次生代谢物合成基因组簇查询和预测
  3. 关于Async与Await的FAQ
  4. BZOJ.2707.[SDOI2012]走迷宫(期望 Tarjan 高斯消元)
  5. SpringBoot2.x整合redis实战讲解
  6. linux脚本grep,linux shell 脚本之深入浅出的grep的用法
  7. 拓端tecdat|R语言中不同类型的聚类方法比较
  8. 俄亥俄州立大学计算机科学转学成功,俄亥俄州立大学转学要求
  9. MTK 开机logo 修改
  10. 3*3旋转矩阵得到旋转角(c++代码)
  11. 1433端口被运营商封锁的解决方法
  12. 阿里巴巴(容器镜像服务)docker+springboot实践
  13. 基于GAN的动漫头像生成
  14. C++并发 std::thread
  15. 2009年以前四川微型计算机设备,『2009年四川省考行测真题』2009年四川省考行测真题资料大全_2009年公务员四川省考行测真题及答案-华图教育...
  16. 最先进的实体对齐方法的实验研究综述 An Experimental Study of State-of-the-Art Entity Alignment Approaches
  17. TLV自定义通信协议的编码和解析
  18. Java Netty长连接实现Android推送
  19. 绝对零度和自然常数e之间是否存在某种关系?
  20. **Servlet生命周期*

热门文章

  1. 《Attention is All You Need》浅读(简介+代码)
  2. OFRecord 数据格式
  3. 适用于Windows和Linux的Yolo-v3和Yolo-v2(上)
  4. Python:数据集成
  5. ‘utf-8‘ codec can‘t decode byte 0xa8 in position 1210: invalid start byte报错解决
  6. git 查看修改的代码行数,新增的文件以及删除的代码行数
  7. Android ndk 安装教程 以及环境变量配置
  8. Uncaught SyntaxError: Unexpected token
  9. .net2.0网站多语言
  10. flutter中的路由跳转