mysql 多表关联建模_(四)多对多模式 - 数据库模型设计专栏 - CSDN博客
連載之5
原創:胖子劉(轉載請注明出處及作者,謝謝。)(四)多對多模式
多對多模式,也是比較常見的一種數據庫設計模式,它所描述的兩個對象不分主次、地位對等、互為一對多的關系。對于A表來說,一條記錄對應著B表的多條記錄,反過來對于B表來說,一條記錄也對應著A表的多條記錄,這種情況就是“多對多模式”。
“多對多模式”需要在A表和B表之間有一個關聯表,這個關聯表也是“多對多模式”的核心所在。根據關聯表是否有獨立的業務處理需求,可將其劃分為兩種細分情況。
1.關聯表有獨立的業務處理需求。
舉例如下(注:這個例子已經作了相當程度的簡化,僅僅是用來幫助大家理解“多對多模式”這個概念來使用的,請大家注意)。
比如網上書店,通常都會有“書目信息”和“批發單”。一條“書目信息”面對不同的購買客
戶、可以存在多張“批發單”,反過來,一張“批發單”也可以批發多條書目,這就是多對多模式。中間的“批發單明細”表就是兩者的關聯表,具備獨立的業務處
理需求,是一個業務實體對象,因此它具備一些特有的屬性,比如針對每一條明細記錄而言的“累計退貨次數”、“累計退貨數量”、“累計結算次數”、“累計結
算數量”;由于批發單明細在數據產生后已經打印出紙質清單提供給客戶,因此在“批發單明細”表里對紙質清單中打印的書目信息屬性作了冗余(逆標準化),這
樣在將來即使修改了“書目信息”表中的屬性,也不會影響跟客戶核對批發單明細,不會影響未來的財務結算業務。
2.關聯表沒有獨立的業務處理需求
舉例如下(注:這個例子已經作了相當程度的簡化,僅僅是用來幫助大家理解“多對多模式”這個概念來使用的,請大家注意)。
比如用戶與角色之間的關系,一般系統在做權限控制方面的程序時都會涉及到“系統用戶表”
和“系統角色表”。一個用戶可以從屬于多個角色,反過來一個角色里面也可以包含多個用戶,兩者也是典型的“多對多關系”。其中的關聯表“用戶角色關聯表”
在絕大多數情況下都是僅僅用作表示用戶與角色之間的關聯關系,本身不具備獨立的業務處理需求,所以也就沒有什么特殊的屬性。
總結
以上是生活随笔為你收集整理的mysql 多表关联建模_(四)多对多模式 - 数据库模型设计专栏 - CSDN博客的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 荔湾广场是谁写的啊?
- 下一篇: 安装心脏起搏器要花多少钱