- 數據庫系統原理及MySQL應用教程(第2版)
- 李輝等編著
- 3000字
- 2020-10-15 17:32:29
2.3 概念模型
概念模型用于信息世界的建模,是現實世界到信息世界的第一層抽象,是數據庫設計人員進行數據庫設計的有力工具,也是數據庫設計人員和用戶之間進行交流的語言,因此概念模型一方面應該具有較強的語義表達能力,能夠方便、直接地表達應用中的各種語義知識,另一方面它還應該簡單、清晰、易于用戶理解。
2.3.1 基本概念
從現實抽象過來的信息世界具有以下7大主要基本概念。
(1)實體(Entity)
客觀存在并互相區別的事物稱為實體。實體可以是具體的人、事、物,也可以是抽象的概念或聯系,如老師、學院、老師和學院之間的工作關系等都是實體。
(2)屬性(Attribute)
實體所具有的某一特性稱為屬性。一個實體可以有若干屬性來刻畫。比如學生實體可以用學號、姓名、性別、出生年月、所在院系、入學時間等屬性描述。其中各個屬性針對實體的不同取值也不同,實體的具體取值稱為熟悉值。例如:2017060203,李輝,男,12/26/2001,大數據系,09/012017。
(3)實體型(Entity Type)
即用實體類型名和所有屬性來共同表示同一類實體,比如學生(學號、年齡)。
(4)實體集(Entity Set)
即同一類型實體的集合,如全體學生。
注意:區分實體、實體型、實體集三個概念。實體是某個具體的個體,比如學生中的王明。而實體集是一個個實體的某個集合,比如王明所在的2015級計算機2班的所有學生。而實體型則是實體的某種類型(該種類型的所有實體具有相同的屬性而已),比如學生這個概念,王明是學生,王明所在班級的所有學生都是學生,顯然學生是一個更大且更抽象的概念,王明和王明全班同學都比學生要更加具體。
(5)碼(Key)
可以唯一標識一個實體的屬性集,比如學號和每個學生實體一一對應,則學號可以作為碼。
(6)域(Domain)
簡單地說就是指實體中屬性的取值范圍(屬于某個域),比如學生年齡的域為整數,因此精確地講,域應該是某種數據類型的值的集合,學生的年齡是整數,但是有取不到所有整數,一般取值范圍為6到40歲,而這個范圍就來自(屬于)整數這個集合。
(7)聯系(Relationship)
主要指實體內部的聯系(各屬性之間的聯系)和實體間的聯系(數學抽象概念中強調實體型之間的聯系,而現實生活中更加關注某幾個具體的實體集之間的聯系)。
2.3.2 E-R模型
概念層數據模型是面向用戶、面向現實世界的數據模型,它是對現實世界的真實、全面的反映,它與具體的DBMS無關。常用的概念層數據模型有實體-聯系(Entity-Relationship,E-R)模型、語義對象模型。我們這里只介紹實體-聯系模型。E-R圖由實體、屬性和聯系三個要素構成。
1.基本概念
(1)實體
客觀存在并可相互區別的事物稱為實體。
E-R圖中的實體用于表示現實世界具有相同屬性描述的事物的集合,它不是某一個具體事物,而是某一種類別所有事物的統稱。實體可以是具體的人、事、物,也可以是抽象的概念或聯系,例如:職工、學生、部門、課程等都是實體。
在E-R圖中用矩形框表示具體的實體,把實體名寫在框內。實體中的每一個具體的記錄值(一行數據),比如學生實體中的每個具體的學生我們可稱之為一個實體的一個實例。
數據庫開發人員在設計E-R圖時,一個E-R圖中通常包含多個實體,每個實體由實體名唯一標記。開發數據庫時,每個實體對應于數據庫中的一張數據庫表,每個實體的具體取值對應于數據庫表中的一條記錄。
(2)屬性
E-R圖中的屬性通常用于表示實體的某種特征,也可以使用屬性表示實體間關系的特征。一個實體通常包含多個屬性,每個屬性由屬性名唯一標記,畫在橢圓內。E-R圖中實體的屬性對應于數據庫表的字段。
在E-R圖中,屬性是一個不可再分的最小單元,如果屬性能夠再分,則可以考慮將該屬性進行細分,或者可以考慮將該屬性“升格”為另一個實體。
實體所具有的某一特性稱為屬性。每個實體具有一定的特征或性質,這樣我們才能區分一個實例。屬性就是描述實體或者聯系的性質或特征的數據項,屬于一個實體的所有實例都具有相同的性質,在E-R模型中,這些性質或特征就是屬性。
比如學生的學號、姓名、性別、出生日期、所在院系、入學年份等都是學生實體具有的特征,(14002668,張三,男,1992.12,計算機系,2015)這些屬性組合起來表征了一個學生。屬性在E-R圖中用橢圓(或圓角矩形)表示,在矩形框內寫上實體名稱,并用連線將屬性框與它所描述的實體聯系起來,如圖2-2所示。

圖2-2 學生實體屬性實例
(3)聯系
聯系是數據之間的關聯集合,是客觀存在的應用語義鏈。在現實世界中,事物內部以及事物之間是有聯系的,這些聯系在信息世界中反映為實體內部的聯系和實體之間的聯系。
實體內部的聯系通常是指組成實體的各屬性之間的聯系。
實體之間的聯系通常是指不同實體集之間的聯系。
在E-R圖中聯系用菱形表示,框內寫上聯系名,并用連線將聯系框與它所關聯的實體連接起來,如圖2-3所示。
在E-R圖中,基數表示一個實體到另一個實體之間關聯的數目。基數是針對關系之間的某個方向提出的概念,基數可以是一個取值范圍,也可以是某個具體數值。從基數的角度可以將關系分為一對一(1:1)、一對多(1:n)、多對多(m:n)關系。兩個實體之間的聯系可分為三類。
1)一對一聯系(1:1)。如果實體集A中的每個實體,在實體集B中至多有一個(也可以沒有)實體與之聯系,反之亦然,則稱實體集A與實體集B有一對一聯系,記為1:1。
例如,學校里一個系和正系主任(假設一個系只有一個正主任,一個人只能擔任一個系的正系主任),則系和正系主任是一對一聯系,如圖2-4所示。

圖2-3 兩個實體間的三類聯系

圖2-4 一對一聯系實例
2)一對多聯系(1:n)。如果對于實體集A中的每一個實體,實體集B中有n個實體(n≥0)與之聯系,反之,對于實體集B中的每一個實體,實體集A中至多只有一個實體與之聯系,則稱實體集A與實體集B有一對多的聯系,記為1:n。
例如,一個系有多名教師。而每個教師只能在一個系工作,則系和教師之間是一對多聯系,如圖2-5所示。
3)多對多聯系(m:n)。如果對于實體集A中的每一個實體,實體集B中有n個實體(n≥0)與之聯系,反之,對于實體集B中的每一個實體,實體集A中有m個實體(m≥0)與之聯系,則稱實體集A與實體集B有多對多的聯系,記為m:n。
例如,一門課程同時有若干學生選修,而一個學生可以同時選修多門課程,則課程與學生之間具有多對多聯系,如圖2-6所示。
2.E-R模型設計原則與設計步驟
(1)E-R模型設計原則
1)屬性應該存在于且只存在于某一個地方(實體或者關聯)。該原則確保了數據庫中的某個數據只存儲于某個數據庫表中(避免同一數據存儲于多個數據庫表),避免了數據冗余。
2)實體是一個單獨的個體,不能存在于另一個實體中成為其屬性。該原則確保了一個數據庫表中不能包含另一個數據庫表,即不能出現“表中套表”的現象。

圖2-5 一對多聯系實例

圖2-6 多對多聯系實例
3)同一個實體在同一個E-R圖內僅出現一次。例如同一個E-R圖,兩個實體間存在多種關系時,為了表示實體間的多種關系,盡量不要讓同一個實體出現多次。比如客服人員與客戶,存在“服務—被服務”“評價—被評價”的關系。
(2)E-R模型設計步驟
① 劃分和確定實體。
② 劃分和確定聯系。
③ 確定屬性。作為屬性的“事物”與實體之間的聯系,必須是一對多的關系,作為屬性的“事物”不能再有需要描述的性質或與其他事物具有聯系。為了簡化E-R模型,能夠作為屬性的“事物”盡量作為屬性處理。
④ 畫出E-R模型。重復過程①~③,以找出所有實體集、關系集、屬性和屬值集,然后繪制E-R圖。設計E-R分圖,即用戶視圖的設計,在此基礎上綜合各E-R分圖,形成E-R總圖。
⑤ 優化E-R模型。利用數據流程圖,對E-R總圖進行優化,消除數據實體間冗余的聯系及屬性,形成基本的E-R模型。
- 黑客攻防從入門到精通(實戰秘笈版)
- Boost程序庫完全開發指南:深入C++”準”標準庫(第5版)
- Objective-C Memory Management Essentials
- 動手玩轉Scratch3.0編程:人工智能科創教育指南
- Reactive Programming with Swift
- PostgreSQL Replication(Second Edition)
- Scientific Computing with Scala
- C和C++游戲趣味編程
- 愛上micro:bit
- Programming Microsoft Dynamics? NAV 2015
- 從Power BI到Analysis Services:企業級數據分析實戰
- Python預測分析實戰
- Drupal Search Engine Optimization
- HTML5程序開發范例寶典
- JavaScript設計模式與開發實踐