- SQL Server 2008數據庫應用技術(第二版)
- 楊云 譚冬平
- 4166字
- 2019-10-25 18:01:01
1.3 數據模型
1.3.1 數據模型的概念
數據庫是某個企業、組織或部門所涉及的數據的綜合,它不僅要反映數據本身的內容,而且要反映數據間的聯系。由于計算機不可能直接處理現實世界中的具體事物,所以人們必須把具體事物轉換成計算機能夠處理的數據,在數據庫中用數據模型這個工具來抽象、表示和處理現實世界中的數據和信息。通俗地講,數據模型就是現實世界的模擬。現有的數據庫系統均是基于某種數據模型的。
數據庫管理系統是按照一定的數據模型組織數據的,數據結構、數據操作和完整性約束稱為數據模型的三要素。
1.數據結構
數據結構是一組規定的用以構造數據庫的基本數據結構類型。這是數據模型中最基本的部分,它規定如何把基本數據項組織成更大的數據單位,并通過這種結構來表達數據項之間的關系。由于數據模型是現實世界與機器世界的中介,因此它的基本數據結構類型應是簡單且易于理解的;同時,這種基本數據結構類型還應有很強的表達能力,可以有效地表達數據之間各種復雜的關系。
2.數據操作
數據操作能實現對數據結構按任意方式組合起來所得數據庫的任何部分進行檢索、推導和修改等。實際上,數據結構只規定了數據的靜態結構,而操作的定義則說明了數據的動態特性。同樣的靜態結構,由于定義在其上的操作不同,可以形成不同的數據模型。
3.完整性約束
完整性約束用于給出不破壞數據庫完整性、數據相容性等數據關系的限定。為了避免對數據執行某些操作時破壞數據的正常關系,常將那些有普遍性的問題歸納起來,形成一組通用的約束規則,只允許在滿足該組規則的條件下對數據庫進行插入、刪除和更新等操作。
綜上所述,一個數據模型實際上給出了一個通用的在計算機上可實現的現實世界的信息結構,并且可以動態地模擬這種結構的變化,因此它是一種抽象方法。為在計算機上實現這種方法,研究者開發和研制了相應的軟件——數據庫管理系統(DBMS)。DBMS是數據庫系統的主要組成部分。
數據模型大體上分為兩種類型:一種是獨立于計算機系統的數據模型,即概念模型;另一種則是涉及計算機系統和數據庫管理系統的邏輯模型。
1.3.2 概念模型
信息是對客觀事物及其相互關系的表征,同時數據是信息的具體化、形象化,是表示信息的物理符號。在管理信息系統中,要對大量的數據進行處理,首先要弄清楚現實世界中事物及事物間的聯系是怎樣的,然后再逐步分析、變換,得到系統可以處理的形式。因此,對客觀世界的認識、描述是一個逐步進行的過程,有層次之分,可將它們分成3個層次。
1.現實世界
現實世界是客觀存在的事物及其相互聯系,客觀存在的事物分為“對象”和“性質”兩個方面,同時事物之間有廣泛的聯系。
2.信息世界
信息世界是客觀存在的現實世界在人們頭腦中的反映。人們對客觀世界經過一定的認識過程,進入到信息世界形成關于客觀事物及其相互聯系的信息模型,在信息模型中,客觀對象用實體表示,客觀對象的性質用屬性表示。
3.數據世界
對信息世界中的有關信息經過加工、編碼、格式化等具體處理,便進入了數據世界。數據世界中的數據既能代表和體現信息模型,同時又向機器世界前進了一步,便于用機器進行處理。在這里,每一實體用記錄表示,對應于實體的屬性用數據項(或稱字段)表示,現實世界中的事物及其聯系用數據模型表示。
3個領域間的關系如圖1-8所示。

圖1-8 客觀描述的層次
由此可以看出,客觀事物及其聯系是信息之源,是組織和管理數據的出發點,同時也是使用數據庫的歸宿。為了把現實世界中的具體事物進行抽象,人們常常首先把現實世界抽象成為信息世界,然后再把信息世界轉化為機器世界。把現實世界抽象為信息世界,實際上是抽象出現實系統中有應用價值的元素及其聯系,這時所形成的信息結構是概念模型。在抽象出概念模型后,再把概念模型轉換為計算機上某一DBMS所支持的數據模型。概念模型是現實世界到真實機器的一個中間層次,是按照用戶的觀點對數據和信息建模,是數據庫設計人員與用戶之間進行交流的語言。
目前,描述概念模型的最常用的方法是實體-聯系(Entity-Relationship,E-R)方法。這種方法簡單、實用,它所使用的工具稱為E-R圖。E-R圖中包括實體、屬性和聯系3種因素。實體用矩形框表示,屬性用橢圓形框表示,聯系用菱形框表示,框內填入相應的實體名,實體與屬性或者實體與聯系之間用無向直線連接,多值屬性用雙橢圓形框表示,派生屬性用虛橢圓形框表示。
E-R模型中使用的基本符號如圖1-9所示。
①實體??陀^存在并且可以相互區別的事物稱為實體。實體可以是具體的事物,也可以是抽象的事件。例如,學生、圖書等屬于具體的事物,訂貨、借閱圖書等活動是抽象的事件。

圖1-9 E-R圖基本符號表示
②實體集。同一類實體的集合稱為實體集。由于實體集中的個體成千上萬,人們不可能也沒有必要一一指出每一個屬性,因此引入實體型。
③實體型。對同類實體的共有特征的抽象定義稱為實體型。由實體名及其屬性名集合來抽象和描述。例如,學生(學號,姓名,年齡,性別,成績)是一個實體型。
④屬性。描述實體的特性稱為屬性。例如,學生實體用學號、姓名、性別、年齡等屬性來描述。不同的實體用不同的屬性區分。
⑤聯系。實體之間的相互關系稱為聯系,它反映現實世界事物之間的相互關聯。實體之間的聯系可以歸納為3種類型:
● 一對一聯系(1:1):設A、B為兩個實體集,如果A中的每個實體至多和B中的一個實體有聯系,反過來,B中的每個實體至多和A中的一個實體有聯系,稱A對B或者B對A是一對一聯系。例如,班級和班長這兩個實體之間就是一對一的聯系,如圖1-10(a)所示。
● 一對多聯系(1:n):設A、B為兩個實體集,如果A中的每個實體可以和B中的多個實體有聯系,而B中的每個實體至多和A中的一個實體有聯系,稱A對B是一對多聯系。例如,班級和學生這兩個實體之間就是一對多聯系,如圖1-10(b)所示。
● 多對多聯系(m:n):設A、B為兩個實體集,如果A中的每個實體可以和B中的多個實體有聯系,而B中的每個實體也可以和A中的多個實體有聯系,稱A對B或B對A是多對多聯系。例如,學生和課程這兩個實體之間就是多對多聯系,如圖1-10(c)所示。

圖1-10 實體間的聯系
值得注意的是,聯系也可以有屬性,例如,學生選修課程,則“選修”這個聯系就有“成績”屬性,如圖1-11所示。

圖1-11 實體-聯系屬性圖
由于實體集中的個體成千上萬,人們不可能也沒有必要一一指出個體間的對應關系,只需指出實體型間的聯系,注明聯系方式,這樣既簡單又能表達清楚概念。具體畫法是:把有聯系的實體(矩形框)通過聯系(菱形框)連接起來,注明聯系方式,再把實體的屬性(橢圓框)連到相應實體上。
一般為了簡潔,在E-R圖中可略去屬性,著重表示實體聯系情況,屬性可單獨以表格形式列出。
1.3.3 邏輯模型
邏輯模型指數據庫中數據的組織形式和聯系方式。數據庫中的數據是按照一定的邏輯結構存儲的,這種結構是用數據模型來表示的?,F有的數據庫管理系統都是基于某種數據模型的。按照數據庫中數據采取的不同聯系方式,數據模型可分為3種:層次模型、網狀模型和關系模型。
1.層次模型
用樹形結構表示實體及其之間聯系的模型稱為層次模型。在這種模型中,數據被組織成由根開始的倒置的一棵樹,每個實體由根開始沿著不同的分支放在不同的層次上。
層次模型的優點是結構簡單,層次清晰,易于實現;適合描述類似家族關系、行政編制及目錄結構等信息載體的數據結構。
其基本結構有兩個限制:
①此模型中有且僅有一個結點沒有雙親結點,稱為根結點,其層次最高。
②根結點以外的其他結點有且僅有一個雙親結點。
所以,使用層次模型可以非常直接、方便地表示1:1和1:n聯系,但不能直接表示m:n聯系,難以實現對復雜數據關系的描述。一個層次模型的簡單例子如圖1-12所示。

圖1-12 PS數據庫層次模型
該層次數據庫PS具有6個記錄類型。記錄類型P(學院)是根結點,由字段P#(學院編號)、PN(學院名稱)、PL(辦公地點)組成,它有兩個子結點:D(系)和DP(部)。記錄類型R(教研室)和S(學生)是記錄類型D的兩個子結點。T(教師)是R的子結點。其中,記錄類型D由字段D#(系編號)和DN(系名)組成,記錄類型DP由字段DP#(部門編號)和DPN(部門名稱)組成,記錄類型R由R#(教研室編號)、RN(教研室名稱)和RC(教研室人數)組成,記錄類型S由S#(學號)、SN(學生姓名)和SS(學生成績)組成,記錄類型T由T#(教師編號)、TN(教師姓名)和TD(研究方向)組成。
在該層次結構中,DP、S、T是葉子結點,它們沒有子結點。由P到D、由P到DP、由D到R、由D到S、由R到T均是一對多的聯系。
2.網狀模型
網狀模型是一種比層次模型更具有普遍性的結構,它去掉了層次模型的兩個限制,允許多個結點沒有雙親結點,允許結點有多個雙親結點,此外它還允許兩個結點之間有多種聯系。因此,網狀模型可以更直接地描述現實世界。而層次模型實際上是網狀模型的一個特例。
網狀模型的主要優點是在表示數據之間的多對多聯系時具有很大的靈活性,但是這種靈活性是以數據結構的復雜化為代價的。
網狀結構可以有很多種,如圖1-13所示。其中圖1-13(a)所示為一個簡單的網狀結構,其記錄類型之間都是1:n的聯系。圖1-13(b)所示為一個復雜的網狀結構,學生與課程之間是m:n的聯系,一個學生可以選修多門課程,一門課程可以被多個學生選修。圖1-13(c)所示為一個簡單環形網狀結構,每個父親可以有多個已為人父的兒子,而這些已為人父的兒子卻只有一個父親。圖1-13(d)所示為一個復雜的環形網狀結構,每個子女都可以有多個子女,而這多個子女中的每一個都可以再有多個子女(m:n)。圖1-13(e)中人和樹的聯系有多種。圖1-13(f)中既有父母到子女的聯系,又有子女到父母的聯系。

圖1-13 網狀模型
3.關系模型
關系模型是目前最重要的一種模型。美國IBM公司的研究員E.F.Codd于1970年發表題為《大型共享系統的關系數據庫的關系模型》的論文,文中首次提出了數據庫系統的關系模型。20世紀80年代以來,計算機廠商推出的數據庫管理系統(DBMS)幾乎都支持關系模型。
關系模型與層次和網狀模型的理論和風格截然不同,如果說層次和網狀模型是用“圖”表示實體及其聯系,那么關系模型則是用“二維表”來表示的。從現實世界中抽象出的實體及其聯系都使用關系這種二維表表示。而關系模型就是用若干個二維表來表示實體及其聯系的,這是關系模型的本質。關系模型如圖1-14所示。

圖1-14 關系模型
由于關系型數據庫采用了人們習慣使用的表格形式作為存儲結構,易學易用,因而成為使用最廣泛的數據庫模型。