Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
數(shù)據(jù)庫(ER)模型是一種識別數(shù)據(jù)庫中實體及其關(guān)聯(lián)關(guān)系的圖表。最終,這些設(shè)計會形成一個數(shù)據(jù)庫關(guān)系模型,并配有相應(yīng)的規(guī)則。
設(shè)計階段
對于小型應(yīng)用,我們可以通過理解需求直接決定要建立的關(guān)系和屬性。
不過,對于大型項目,我們在設(shè)計數(shù)據(jù)庫時,需要和用戶溝通,了解他們的需求,要先把這些需求用容易理解的方式表達出來,然后再轉(zhuǎn)換成具體的設(shè)計方案,形成一個系統(tǒng)框架。
這個框架會明確說明用戶需要什么數(shù)據(jù),以及如何設(shè)計數(shù)據(jù)庫來滿足這些需求。
需求分析:數(shù)據(jù)庫設(shè)計者需要和專業(yè)人員、用戶進行充分交流,寫出需求說明。
概念設(shè)計:把需求轉(zhuǎn)換成數(shù)據(jù)庫的概念模型,這個模型會詳細描述:
數(shù)據(jù)庫中的實體有哪些
這些實體的特征是什么
實體之間有什么聯(lián)系
需要遵守什么規(guī)則
通常,我們會畫一個ER圖來表示這些內(nèi)容,ER 圖主要描述數(shù)據(jù)和它們之間的關(guān)系,不涉及具體的存儲細節(jié)。
最后的物理設(shè)計階段才會確定如何存儲數(shù)據(jù),包括文件組織方式和索引結(jié)構(gòu)的選擇。
在開發(fā)數(shù)據(jù)庫應(yīng)用前,認真完成這些設(shè)計工作非常重要,在此過程中,一個主要部分是決定如何在設(shè)計中表示各種類型的「事物」。
比如:人、地方、產(chǎn)品等等,我們使用實體(entity)這個術(shù)語來指代任何可以明確識別的個體。
實體-聯(lián)系模型
在數(shù)據(jù)庫設(shè)計中,為了管理數(shù)據(jù),我們使用實體-聯(lián)系模型(Entity- Model,簡稱 ER 模型)的工具。
這種模型主要有三個重要概念:實體集、聯(lián)系集、屬性。同時,ER 模型也可以用一種圖形化的方式表示,稱為ER 圖。
什么是實體?
實體是現(xiàn)實世界中可以被區(qū)分的一個對象。比如:一個人、一家醫(yī)院或一輛救護車都可以是實體,每個實體都可以通過一個唯一的標(biāo)識符來區(qū)分。
實體可以是具體的,比如醫(yī)生、病人、建筑物;也可以是抽象的,比如角色、事件、演唱會等。
什么是實體集?
實體集是具有相同性質(zhì)或?qū)傩缘囊活悓嶓w的集合。一家醫(yī)院里的所有醫(yī)生是一個實體集。這家醫(yī)院的所有救護車也是一個實體集。實體集中每個實體都具有相同類型的屬性。
什么是屬性?
屬性是用來描述實體的特性或性質(zhì)的。
對于一個醫(yī)生實體,它可能有:醫(yī)生編號(ID)、姓名(Name)、科室()等屬性。對于一輛救護車實體,它可能有:車牌號(License Plate)、型號(Model)等屬性。
在數(shù)據(jù)庫中,實體通過一組屬性來表示,屬性是實體集中每個成員所具有的描述性特征。
實體集可能包含的屬性有 ID、名稱等(這里暫時僅考慮簡單屬性)。
而數(shù)據(jù)庫由多個實體集組成,每個實體集包含任意數(shù)量的同類型實體。
在 ER 圖中,實體集用一個矩形表示,矩形分為兩部分:上半部分顯示實體集的名稱,下半部分列出該實體集的所有屬性名稱。
聯(lián)系集
實體之間關(guān)聯(lián)的集合稱為「聯(lián)系集」,由多個具有相同類型聯(lián)系的實例組成。
它用來表示實體之間的關(guān)系,例如「醫(yī)生診治病人」或「學(xué)生選修課程」,可以分為一對一、一對多或多對多。
聯(lián)系是多個實體之間的相互關(guān)聯(lián),聯(lián)系集是相同類型聯(lián)系的集合。
在 ER 圖中,聯(lián)系集用菱形表示,菱形通過線條連接到多個不同的實體集。例如,學(xué)生和導(dǎo)師之間的關(guān)聯(lián)可以表示為「指導(dǎo)」聯(lián)系,醫(yī)生和病人之間的關(guān)聯(lián)可以表示為「診治」聯(lián)系。
在業(yè)務(wù)模型中,一個聯(lián)系表示在實際場景中的關(guān)系。例如,一個教師ID為100的老師和一個學(xué)生ID為 101的實例共同參與到一個「教學(xué)」聯(lián)系中。
聯(lián)系也可以具有描述性屬性,用來進一步描述聯(lián)系的特征。
學(xué)生與課程之間的「選修」聯(lián)系可以擁有「選修時間」作為其描述性屬性。
在 ER 圖中,聯(lián)系的屬性通過一個分割的矩形表示,并用虛線連接到表示聯(lián)系的菱形。一個聯(lián)系集可以擁有多個描述性屬性。
聯(lián)系集通常只顯示在一個位置,避免在多個位置重復(fù)出現(xiàn)。
如果實體集需要在多個位置出現(xiàn),其屬性應(yīng)只在首次出現(xiàn)時顯示,后續(xù)僅顯示實體集名稱,不帶屬性,以減少重復(fù)信息,并避免因重復(fù)顯示導(dǎo)致屬性不一致的問題。
二元聯(lián)系集是涉及兩個實體集的聯(lián)系集。數(shù)據(jù)庫系統(tǒng)中的大多數(shù)聯(lián)系集屬于二元聯(lián)系集。
學(xué)生與課程之間的「選修」關(guān)系或醫(yī)生與病人之間的「診治」關(guān)系。
有時,聯(lián)系集可能涉及多于兩個實體集。參與聯(lián)系集的實體集數(shù)量被稱為聯(lián)系集的「度」。
復(fù)雜屬性
在 ER 模型中使用的屬性可以按照如下的屬性類型來進行描述,主要有三種「簡單和復(fù)合」「單值和多值」「派生屬性」等。
簡單和復(fù)合屬性
簡單屬性是不可分割的基本屬性,例如學(xué)號(Student ID)就是簡單屬性。
復(fù)合屬性可以被分解為多個部分,例如地址(Address)可以被劃分為城市(City)、街道(Street)和郵編(Postal Code)。
在設(shè)計模型時,使用復(fù)合屬性是一種好的選擇,因為它能將相關(guān)的屬性整合起來,讓模型更加清晰。
單值和多值屬性
單值屬性是指每個實體的某個屬性只有一個值,例如學(xué)生的學(xué)號對學(xué)生來說就是唯一值,這種屬性被稱為單值屬性。
多值屬性是指某個屬性可能對應(yīng)一組值,例如教師的電話號碼可能有一個或多個,不同教師的電話號碼數(shù)量也可能不同,這種屬性被稱為多值屬性。
派生屬性
派生屬性的值可以通過其他屬性或?qū)嶓w推導(dǎo)出來。
比如說,教師指導(dǎo)的學(xué)生人數(shù)可以通過統(tǒng)計教師與相關(guān)學(xué)生實體的數(shù)量得出。
或者年齡可以通過出生日期和當(dāng)前日期計算得出。
派生屬性的值無需存儲,而是在需要時動態(tài)計算。
映射基數(shù)
一個實體通過某個聯(lián)系集可以關(guān)聯(lián)到其他實體的數(shù)量,通常用來描述二元聯(lián)系集中的實體關(guān)聯(lián)關(guān)系。
一對一
A 集中的一個實體最多只能與 B 集中的一個實體相關(guān)聯(lián)(一個人對應(yīng)唯一的身份證號碼)。
一對多
A 集中的一個實體可以與 B 集中的多個實體相關(guān)聯(lián),但 B 集中的一個實體只能與 A 集中的一個實體相關(guān)聯(lián)(一個老師可以教多個學(xué)生,但每個學(xué)生只能有一個班主任)。
多對一
A 集中的多個實體可以與 B 集中的同一個實體相關(guān)聯(lián),而 B 集中的一個實體只能與 A 集中的一個實體相關(guān)聯(lián)(多個學(xué)生可以被分配到同一個班級,但每個學(xué)生只能屬于一個班級)。
多對多
A 集中的一個實體可以與 B 集中的多個實體相關(guān)聯(lián),同時 B 集中的一個實體也可以與 A 集中的多個實體相關(guān)聯(lián)(一個學(xué)生可以選修多門課程,每門課程也可以由多個學(xué)生選修)。
在 ER 圖的表示法中,我們使用有向線段或非有向線段來表示聯(lián)系集之間約束。
一對一
當(dāng)表示一對一聯(lián)系時,我們從兩個實體集之間畫一條有向線段,表示一個實體集中的每個實體最多只能與另一個實體集中的一個實體關(guān)聯(lián)。
例如,一位教師最多可以指導(dǎo)一名學(xué)生,并且一名學(xué)生最多只能有一位導(dǎo)師。
一對多
一個實體集到聯(lián)系集畫一條有限的線段,表示一個實體集中的一個實體可以與另一個實體集中的多個實體關(guān)聯(lián)。
多對一
一個實體集到聯(lián)系集畫一條有向線段,表示一個實體集中的一個實體可以與另一個實體集中的多個實體相關(guān)聯(lián)。
多對多
從兩個實體集到聯(lián)系集畫一條無向線段,表示兩個實體集中的實體可以相互關(guān)聯(lián),且一個實體集中的多個實體可以與另一個實體集中的多個實體關(guān)聯(lián)。
全部參與
在 ER 圖的表示法中,如果一所大學(xué)要求每名學(xué)生至少有一位導(dǎo)師,表示這種關(guān)系時,可以通過在模型中設(shè)置聯(lián)系集來描述學(xué)生與導(dǎo)師之間的關(guān)聯(lián)。
學(xué)生與導(dǎo)師的關(guān)系
每個學(xué)生(student實體)必須通過advisor聯(lián)系集與至少一位導(dǎo)師相關(guān)聯(lián)。
在這種情況下,student實體集與advisor聯(lián)系集之間的關(guān)聯(lián)是全體參與,即每個學(xué)生都必須有一位導(dǎo)師,表示為全部參與。
教師的參與
對于導(dǎo)師(teacher實體),不是每位教師都需要指導(dǎo)學(xué)生,因此在advisor聯(lián)系集中的參與是部分參與,即只有一些教師會指導(dǎo)學(xué)生。
在 ER 圖中,雙線用于表示一個實體在聯(lián)系集中是全部參與的,而單線則表示部分參與。
在概念設(shè)計階段,數(shù)據(jù)庫設(shè)計者根據(jù)這些需求,把需求轉(zhuǎn)化成數(shù)據(jù)庫的概念模型。
這個階段開發(fā)出來的模式,就是為企業(yè)提供一個詳細的框架。從關(guān)系模型的角度來看,概念設(shè)計階段的重點是確定數(shù)據(jù)庫應(yīng)該包含哪些數(shù)據(jù)屬性,并且決定如何將這些屬性組織到不同的表里。
*請認真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。