1. 程式人生 > >ER模型詳解-陳氏模型

ER模型詳解-陳氏模型

Entity Relationship Model - ER模型 - 實體關係模型
1976年Peter Chen首次提出了Entity Relationship Modeling(實體關係建模)概念,併發明瞭陳氏表示法Peter Chen’s Notation,因此ER模型也可以叫做Chen’s Model(陳氏模型)。下面是一個ER模型(ERD - ER diagram - Entity Relationship diagram)示例:
這裡寫圖片描述

圖:ER模型 - Peter Chen’s Notation圖:ER模型 - Peter Chen’s Model,實際上這是一個EER - Enhanced Entity-Relationship Model,擴充套件ER模型
Entity 實體:使用方框表示
Attribute 屬性:使用圓或橢圓表示。實體和實體關係都可以擁有屬性,例如圖中的Order-Line關係擁有3個屬性

Relationship 關聯關係:使用菱形表示,菱形中寫上關聯關係的名字
ER模型中關聯關係也可以擁有屬性,在多對多關聯關係中不需要使用額外中間關聯實體來表示,關聯關係本身就可以作為這個中間實體。另外ER模型的關聯關係不限於2個實體之間,可以在多個實體間使用一個關聯關係

Unique Identifier 唯一標識
陳氏表示法沒有很好的解決唯一標識問題,僅使用一種簡單的標記方法,下圖表示Party的ID作為Purchase Order唯一標識一員的情況,關聯關係名稱改為E,朝依賴實體方使用一個箭頭,依賴實體使用一個額外的方框括起來
這裡寫圖片描述

圖:ER模型中唯一標識的表示方法圖:ER模型中唯一標識的表示方法

Sub-type 子型別
最初的陳氏表示法中不包含子型別概念,後來Robert Brown和Mat Flavin添加了子型別表示法,這種ER模型稱為擴充套件ER模型。上圖ER模型中有一個子型別例子,超類Party派生出子類Organization和 Person

Constraints between relationships 關聯關係的約束
最初的陳氏表示法中關聯關係的每一端只使用一個數字表示,比如一對多的關聯關係,在一端使用1,另一端實體上使用n表示,這對關聯關係約束不充分。上圖的 ER模型在關聯關係每一端使用2個數字表示,這與Crow’s Foot表示法以及UML中的optionality(可選項)、cardinality(關聯基數)有些類似又有較大的區別,詳細說明如下:

上圖中一個Purchase Order必須關聯一個Party,必須關聯一個或多個Order Line,每個Order Line要麼是一個Product要麼是一個Service
Purchase Order右邊的(1,)1表示一個Purchase Order有且必須有一個Party
Party左邊的(0,)n表示一個Party可以擁有多個Purchase Order,也可以沒有
Purchase Order左邊的(1,)n表示Purchase Order必須有一個或多個Order Line
Order Line右邊的(1,)1表示每個Order Lien必須屬於一個Purchase Order
Order Line下面的(1,)1和菱形符號一起表示每個Order Line要麼是一個Product要麼是一個Service
Product和Service上面的(0,)n表示Product和Service可以屬於0個或多個Order Line
Event和Event Category的關聯關係稍特殊(實際中這種 n:1 的關係不多見),他不是一個普通的多對一關係。Event可以關聯一個Event Category也可以不關聯,而Event Category則必須關聯一個或多個Event

Order-Line和Product、Service之間是一個exclusive or約束(異或、互斥約束,disjunctive mandatory約束)關係,使用超類和子類一樣的表示法來表示。因為exclusive or的語義本身已經已經表明Order Line必須是Product或者Service其中之一,因此上圖中Order Line右邊和下面的(1,)1是多餘的

EER - Enhanced Entity-Relationship Model 擴充套件ER模型
上面已經有些內容不屬於最初的陳氏表示法,是後來其他人擴充套件的。陳氏表示法出現的早也存在一些不足,因此存在一些擴充套件以彌補缺陷,不同文件中使用的ER圖也不盡相同,例如下圖是wiki上的一個示例ER模型
這裡寫圖片描述

圖:Wiki上的ER模型示例圖:Wiki上的ER模型示例
屬性帶下劃線表示主鍵屬性;關聯關係連線線為兩條線的表示”最少一個,或多個”(用於n的一端);實體和關聯關係使用兩個框的,可能是上面講到的唯一標識表示法,也可能是”最少一個,或多個”表示法的一部分(這一點有待確認)。還有一些,例如屬性與實體間用兩條線連線的表示該屬性為多值屬性(上圖中Region實體的Foliage屬性)。圖中的部分解釋如下:

1 Account has n(at least one) Character, Account的AcctName屬性將成為Has的唯一標識的一員;
1 Region contains n(at least one) Character, Region的RegionName屬性將成為Character的唯一標識的一員;

Information Engineering - IE模型
Information Engineering採用Crow’s Foot表示法(也有叫做James Martin表示法的),中文翻譯中對使用了Crow’s Foot表示法的模型也有籠統的稱做鴨掌模型的(關聯關係的關聯基數中採用到了一個鴨掌形的三叉線來表示)。他由Clive Finkelstein發明,與James Martin一起推廣,後來兩人各自做了些修正形成兩份版本
前面示例模型的Information Engineering表示如下:
這裡寫圖片描述

圖:Information Engineering - IE模型 - Crow’s Foot Model - 鴨掌模型圖:Information Engineering - IE模型

注意IE模型與ER模型的區別。Purchase Order與Party是多對一 n:1 的關聯關係,在ER模型中n被放置在了Party的左邊,而IE模型中n被放置在了Purchase Order的右邊。兩種表示法的形式(相當於語法)不一樣,但語義是一致的。這一點也只有ER模型是特殊的,其他模型表示法中都與IE 模型一致

Entity & Attribute:實體屬性並不出現在IE模型中,而是單獨使用另外的文件記錄
Relationship
Crow’s Foot的可選項optionality和關聯基數cardinality 表示法:
這裡寫圖片描述

圖:Crow’s Foot的可選項optionality和關聯基數cardinality 表示法圖:Crow’s Foot的可選項optionality和關聯基數cardinality 表示法

Optionality 可選項:用來表示該關聯關係是可選的,還是必須的。對於可選的關聯關係,通常表現為用於關聯的外來鍵欄位允許為null值,或者對於使用中間關聯關係表的情況下可以不出現關聯資料,而必須的關聯關係則不允許外來鍵為null或者必須存在關聯資料
Cardinality 關聯基數:用來表示關聯實體的數量上限,為1、n等
圖中右邊部分表示的意義如下:1個A必須關聯到1個或多個B,一個B可以關聯0個或1個A

關聯的約束如圖所示,Product和Service通過一個圓連線到Order Line。如果是實心圓則表示Product和Service是exclusive or;如果是空心圓則表示Product和Service是inclusive or(相容的,conjunctive),表示可以是其中之一或者多個
在上面IE模型圖中,Order Line右側是Finkelstein的一個特殊符號,表示一個Purchase Order初始時有0或n個Order Line,但最終必須有1或n個Order Line
Martin以動詞命名關聯關係,只命名一個方向(遵循從左到右、從上往下的方式),而Finkelstein不對關聯關係命名

Sub-type:圖中Party子類的表示方法由Martin採用,Finkelstein則對每個子類使用單獨的實體,使用ISA關聯關係(關聯關係名稱為ISA,也有采用類似UML繼承的三角形符合,在關聯線上使用一個三角形的)表示其為子類

Richard Barker’s Notation
這個表示法最早是英國諮詢公司CACI發明,經過了Richard Barker的推廣,後來Richard Barker去了Oracle,開發了相關的建模工具,因此也叫做Oracle表示法(Oracle’s Notation)
示例模型的Barker表示法如下:
這裡寫圖片描述

Richard Barker’s Model圖:Richard Barker模型

Entity & Attribute:實體試用圓角的方框表示,屬性出現在實體框中。可選屬性(允許null)前面帶一個空心圓,必須的屬性(不允許null)前面帶一個實心圓,唯一標識屬性前面帶一個#符號(因為製圖工具原因,有時可選屬性前面不使用任何符號,必須屬性前使用一個點)

Relationship:
Barker表示法中可選項通過半邊連線線的虛實線表示,表示法如下圖所示。上面的模型中Purchase Order必須關聯到一個Party,所以關聯線在Party一側的那一半是實線表示;而Party可以關聯到0或多個Purchase Order,所以關聯線在Purchase Order一側的那一半是虛線表示
這裡寫圖片描述

圖:Richard Barker’s Notation圖:Richard Barker’s Notation

關聯基數為n時採用一個三叉線,線條末端沒有符號時表示關聯基數為1
另外Barker表示法中有一個表示aggregation、composition的特殊符號,例如示例模型中的Purchase Order和Order Line的關係,在Order Line右側的三叉線邊上新增一個豎線,注意與Crow’s Foot表示法之間的區別
Sub-type:Barker表示法中子型別顯示在父型別的實體框中
Constraint:Barker表示法僅支援exclusive or約束,如示例模型中所示,用一條弧線劃過2個關聯關係

IDEF1X模型
IDEF1X是美國聯邦政府廣泛使用的一種模型,前面示例模型的IDEF1X等效模型如下:
這裡寫圖片描述

圖:IDEF1X模型圖:IDEF1X模型

Entity & Attribute:實體使用方框和圓角框表示,獨立實體(Independent entities,主鍵不包含其他實體主鍵值)使用方框,非獨立實體(dependent entities,主鍵包含其他實體主鍵值)使用圓角框。屬性出現在實體框中,主鍵用線隔開

Relationship:
外來鍵不是使用關聯線表示,必須在實體屬性中明確的標註外來鍵屬性
如果關聯關係一方的唯一標識將作為另一方唯一標識的一部分(即identifying relationship),關聯線使用實線,否則(即non-identifying relationship)使用虛線

不同於IE模型,IDEF1X中可選項和關聯基數是分開表示的,關聯線的一端表示關聯基數,另一端表示可選項
這裡寫圖片描述

圖:IDEF1X Cardinality 關聯基數圖示圖:IDEF1X Cardinality 關聯基數圖示
如IDEF1X示例模型中,關聯基數的圖示都是出現在關聯關係的左端或者上面,可選項出現在右端或者下面。對於可選的關聯關係(即類似外來鍵允許為null 值的情況),在可選項一端使用一個菱形,例如示例模型中Event Category左邊的菱形;對於必須的關聯關係(即外來鍵必須為有效的實體標識值的情況),則在可選項一端直接將關聯線與實體連線。對於多對多的情況,兩端均使用關聯基數符號,可選項問題在模型中通過其他文件標註

關聯關係的名稱有幾種表示方法。預設情況下遵循從左至右從上至下的順序,關聯關係從左至右的名稱放在關聯線上方,從右至左的名稱放在關聯線下方。也可以使用一個反斜槓將兩個方向的名稱分開,從左至右從上至下的在反斜槓前面,否則在後面

Sub-type & Constraint
IDEF1X中的子類和關聯約束分別如示例模型中所示。另外一點,示例模型中的子類和關聯約束圖例中,小圓圈下面都是使用2條橫線,這表示模型中已經列舉了所有的子類和約束情況,如果模型只是部分列舉子類和約束情況,則使用1條橫線
Domain:IDEF1X中定義了domain,domain即資料型別的定義,比如資料型別、取值範圍等各種需要運用到屬性值上的約束
詳盡的IDEF1X規範參考IDEF1X標準:Integration Definition for Information Modeling

EXPRESS-G表示法
EXPRESS-G是一個ISO標準ISO 10303-11。示例模型的EXPRESS-G表示法如下(省略了Event、Event Category部分):
這裡寫圖片描述

圖:EXPRESS-G表示法圖:EXPRESS-G表示法

Entity & Attribute:
實體使用方框表示,實體名稱出現在方框中
屬性通過空心圓結束的線條連線到屬性值型別,屬性名稱出現線上條上。可選屬性使用虛線條連線,必須屬性使用實現連線
屬性值型別使用右邊多一條豎線的方框表示,ISO規範中確定的簡單資料型別(String, Binary, Logical, Boolean, Number, Integer, Real等)均使用上圖中所示的實體框表示。擴充套件或者自定義的資料型別使用虛線框表示,例如上圖示例中order_date屬性的DATE型別。列舉型別的表示方法如下圖:
這裡寫圖片描述

圖:EXPRESS-G的列舉表示方法圖:EXPRESS-G的列舉表示方法

Relationship:
使用空心圓結束的線條連線關聯實體
關聯關係的名稱出現在關聯線上,朝空心圓一端的方向為正向,相反則為反向,反向的關聯關係名稱前面使用(INV)表示
關聯基數緊隨關聯名稱之後,第一個字元可以是S、B、L、A,分別表示Set、Bag、List、Array,後面中括號的內容即為關聯基數,問號表示多個。預設情況下(沒有明確標註)關聯基數都為[1:1],因此上圖中出現[1:1]的地方都可以省略

前面提到過的exclusive or約束,EXPRESS-G中使用Select(可選型別)表示,如上圖中的order_line_item

Sub-type:如上圖中Party、Person、Organization所示,連線線使用粗線條

ORM - Object-Role Modeling
下面是ORM2的部分表示法
基本元素
下面是ORM模型幾個基本元素圖示:
這裡寫圖片描述

圖:ORM模型基本元素圖:ORM模型基本元素

唯一性約束表示法
ORM中唯一性約束是在相應角色上使用帶箭頭的線條表示,線條在哪些角色上,則這些角色的組合必須唯一,例如下圖:
這裡寫圖片描述

圖:ORM模型唯一性約束表示法圖:ORM模型唯一性約束表示法
圖中Person is of Gender的關係中,Person必須唯一,因此這是一個n:1的關係。同樣Person was born in Country是1:n,Person speaks Language是n:m,Person is president of Country是1:1

下面表格是用於理解Person is of Gender、Person was born in Country的資料示例:
這裡寫圖片描述

圖:資料示例

關聯關係中必須的角色使用帶圓點的線條表示,如上圖中Person was born in Country
上面示例中的唯一性約束都是位於一個關聯關係(包括二元和多元關係)中,這種唯一約束叫做內部唯一約束Internal UC。多個關聯關係組合起來形成的唯一約束稱為外部唯一約束External UC,例如下圖所示
這裡寫圖片描述

圖:ORM模型External UC圖:ORM模型External UC
圖中State具有2個外部唯一約束,一個是Country+StateCode,圓圈中使用2跟線條表示這個唯一約束作為State的主鍵;另一個是 Country+StateName

Inclusive or ((disjunctive mandatory role)
這裡寫圖片描述

圖:ORM Inclusive or表示每個Visitor必須有護照Passport或者駕駛執照DriverLicence,或者兩樣都有

Exclusive
這裡寫圖片描述

圖:ORM Exclusive約束表示Person不可能同時是married和widowed狀態

exclusive or則是inclusive or和exclusive的結合,即必須是其中之一
這裡寫圖片描述

圖:ORM Exclusive or約束

詳細的ORM2圖形表示法參考ORM 2 Graphical Notation Summary
使用ORM建模的過程示例參考Object Role Modeling: An Overview
ORM2的完整介紹參考ORM2

相關推薦

ER模型-模型

Entity Relationship Model - ER模型 - 實體關係模型 1976年Peter Chen首次提出了Entity Relationship Modeling(實體關係建模)概念,併發明瞭陳氏表示法Peter Chen’s Notat

深度學習方法(七):最新SqueezeNet 模型,CNN模型引數降低50倍,壓縮461倍!

歡迎轉載,轉載請註明:本文出自Bin的專欄blog.csdn.net/xbinworld。 技術交流QQ群:433250724,歡迎對演算法、技術感興趣的同學加入。 本文講一下最新由UC Berkeley和Stanford研究人員一起完成的Sque

綜合運用: C++11 多線程下生產者消費者模型(轉)

並發 rep 生產 我會 交流 模型 操作 const ref 生產者消費者問題是多線程並發中一個非常經典的問題,相信學過操作系統課程的同學都清楚這個問題的根源。本文將就四種情況分析並介紹生產者和消費者問題,它們分別是:單生產者-單消費者模型,單生產者-多消費者模型,多生產

Java虛擬機:內存模型

調用 數據類型 可擴展 空間 共享 sof 虛擬機 進程 部分 版權聲明:本文為博主原創文章,轉載請註明出處,歡迎交流學習! 我們都知道,當虛擬機執行Java代碼的時候,首先要把字節碼文件加載到內存,那麽這些類的信息都存放在內存中的哪個區域呢?當我們創建一個

OSI七層模型

集線器 提高 ram 轉發數據 -m 數據傳遞 prot 電子郵件 bio OSI 七層模型通過七個層次化的結構模型使不同的系統不同的網絡之間實現可靠的通訊,因此其最主要的功能就是幫助不同類型的主機實現數據傳輸 。 完成中繼功能的節點通常稱為中繼系統。在OSI七層

【轉】中文分詞之HMM模型

實現 含義 jieba 順序 清晰 bsp 中國 matrix 統計 關於HMM模型的介紹,網上的資料已經爛大街,但是大部分都是在背書背公式,本文在此針對HMM模型在中文分詞中的應用,講講實現原理。 盡可能的撇開公式,撇開推導。結合實際開源代碼作為例子,爭取做到雅俗共賞,

JVM內存模型

基本 過程 nio 認識 靜態變量 maxperm 工作原理 函數 不變 JVM內存模型也叫JVM運行時區域,是認識和了解JVM工作原理的基礎,從java誕生以來,JVM內存模型基本保持著大同小異的整體形態,由此可見JVM內存模型是相當穩定的,直到jdk1.8之後JVM內存

web服務處理過程,各種I/O模型

web服務處理過程 各種i/o模型詳解 一, 進程,線程?進程是具有一定獨立功能的,在計算機中已經運行的程序的實體。在linux2.4以前,進程是基本運作的單位,在只是線程的系統中,線程才是最基本的運作單位,而進程只是線程的容器,程序本身只是指令,數據及其組織形式的描述,進程才是程序的真正運行實例。若

網絡通信協議三之TCP/IP模型

udp protocol bubuko 傳遞 alt 公司 技術 png 代名詞 TCP/IP模型 註:PDU:Protocol Date Unit:表示對等層之間傳遞的數據單位 TCP:Transmission Control Protocol:傳輸控制協議 UD

Nginx epoll模型

select epoll 舉個例子:假設進程有10萬個TCP連接,且只有幾百個連接是有事件需要處理的。那麽在每一個時刻進程只需要處理這幾百個有事件需要處理的連接即可。事件:即TCP連接上有數據需要交互。 select和poll這樣處理的:在某一時刻,進程收集所有的連接。並把所有連接的套接字傳給操作系統

TCP/IP五層模型

tro 一個個 idt 字節 主機 註意 分享圖片 現在 比較   將應用層,表示層,會話層並作應用層,從tcp/ip五層協議的角度來闡述每層的由來與功能,搞清楚了每層的主要協議就理解了整個互聯網通信的原理。   首先,用戶感知到的只是最上面一層應用層,自上而下每層都依賴

MapReduce編程模型(基於Windows平臺Eclipse)

lib read 找到 lin @override ext logs 設置 otf 本文基於Windows平臺Eclipse,以使用MapReduce編程模型統計文本文件中相同單詞的個數來詳述了整個編程流程及需要註意的地方。不當之處還請留言指出。 前期準備 hadoop集群

django模型(四)

imp 參數 des 也會 超過 分類 空白 fault note 1 概述 (1)概述 : Django對各種數據庫提供了很好的支持,Django為這些數據庫提供了統一的調用API,根據不同的業務需求選擇不同的數據庫 (2)定義模型 模型,屬性,表,字段間的關系

機器學習中的概率模型和概率密度估計方法及VAE生成式模型之二(作者簡介)

AR aca rtu href beijing cert school start ica Brief Introduction of the AuthorChief Architect at 2Wave Technology Inc. (a startup company

機器學習中的概率模型和概率密度估計方法及VAE生成式模型之一(簡介)

價值 新書 The aar 生成 syn TE keras 第一章 A Gentle Introduction to Probabilistic Modeling and Density Estimation in Machine LearningAndA Detailed

機器學習中的概率模型和概率密度估計方法及VAE生成式模型之五(第3章 之 EM算法)

ado vpd dea bee OS deb -o blog Oz 機器學習中的概率模型和概率密度估計方法及VAE生成式模型詳解之五(第3章 之 EM算法)

機器學習中的概率模型和概率密度估計方法及VAE生成式模型之六(第3章 之 VI/VB算法)

dac term http 51cto -s mage 18C watermark BE ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

機器學習中的概率模型和概率密度估計方法及VAE生成式模型之七(第4章 之 梯度估算)

.com 概率 roc 生成 詳解 time 學習 style BE ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?機器學習中的概率模型和概率密度估計方法及V

機器學習中的概率模型和概率密度估計方法及VAE生成式模型之八(第4章 之 AEVB和VAE)

RM mes 9.png size mar evb DC 機器 DG ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

機器學習中的概率模型和概率密度估計方法及VAE生成式模型之九(第5章 總結)

ces mark TP 生成 機器 分享 png ffffff images ? ?機器學習中的概率模型和概率密度估計方法及VAE生成式模型詳解之九(第5章 總結)