數據庫精華知識點總結(1)—數據庫的三層模式和二級映像,E-R(實體聯系圖)圖,關系模型


Data base

長期存儲在計算機內,有組織的,可共享的大量數據集合。基本特征:永久存儲,可共享,有一定的物理和邏輯結構。

Data base manage system(DBMS);用戶和os之間的一層數據管理軟件。

1、提供數據操縱語言DML對數據庫增刪改查

2、數據庫的建立和維護

3、提供數據控制功能;在數據庫建立,運行和維護時,DBMS管理數據的安全性,完整性,並發控制和故障的系統恢復,(也就是數據庫的事務管理和運行管理)

4、與其它軟件系統通信

Data base system(DBS);引入數據庫的計算機系統。

數據庫分幾層,並簡述,類似的問題很容易很容易考到,那就是關於據庫系統的三級模式和兩級映像的問題,這里系統的說下,包括它的作用和目的。

說到模式和映像,先說說DBS的結構;(兩種角度看,分清楚條理)

1、從DBMS看;

DBS采用三級模式結構,那就是外模式,模式,內模式三級。這是DBMS的內部結構。主流DB在結構上都具有這三個相同的特征,即采用三級模式並且還提供兩級映像功能。

那么到底什么是數據庫里的模式(schema)呢?

模式也叫邏輯模式,是對DB中全體數據的邏輯結構和特征的總體描述,位於DBS的中間層,不關乎物理實現也不關乎應用程序或者程序語言,僅僅涉及到對型(下一個問題回答什么是型)的描述。是數據在邏輯上的視圖,記住:一個DB只有一個模式。模式的一個具體值為一個實例(instance),一個模式可以多個實例。

比如:學生選課系統的數據庫模式中,包含全體學生記錄、選課記錄。那么2014年的學生數據庫是一個實例,包含了14級的所有學生的記錄。同樣2013級的學生也是一個實例。各年級學生是動態變化的但是選課系統的數據庫模式是不變的。DBMS提供模式描述語言(模式DDL)

還有一個是外模式(也叫external schema、子模式,用戶模式);

用戶(也就是程序員和使用者)最終看到和使用的局部數據的邏輯結構和特征的描述,是數據庫用戶的數據視圖,是和某個應用有關的數據的邏輯表示。通常是模式的子集。一個數據庫可以有多個外模式,因用戶不同,故外模式的描述也不同。同一個外模式可以讓某個用戶的多個應用系統使用,但是一個應用系統只能使用一個外模式。

(PS:這是保證數據安全性的一個有力措施,每個用戶只能看見自己對應的外模式的數據!DBMS提供子模式描述語言(子模式DDL)來嚴格定義子模式)。

最后一個是內模式(也叫internal schema,存儲模式,storage schema);

一個DB只有一個內模式,關乎數據的物理結構和存儲方式。DBMS提供內模式描述語言(內模式DDL,或者存儲模式DDL)來嚴格定義內模式。

接下來說完了三級模式,那么很有必要繼續說下數據庫的二級映像功能和數據獨立性;

為在數據庫系統內部實現3個層次的聯系和轉化,DBMS提供了三級模式間的兩層映像。他們有效組織管理數據,提高了數據庫的邏輯獨立性和物理獨立性。

外模式/模式映像;

同一個模式可有任意多個外模式,每一個外模式在DBS中都對應有(局部邏輯結構)外模式/模式映像,它定義了對應關系。當模式改變(如增加新關系,屬性,改變數據類型等),DBA可以對外模式/模式映像做相應改變,使外模式不變,應用程序根據數據的外模式編寫,所以應用程序不必修改,實現了數據和應用程序的邏輯獨立性。

模式/內模式映像;

一個DB只有一個模式,並且只有一個內模式,故模式/內模式映像唯一。定義全局邏輯結構和物理存儲的對應關系,DB存儲結構變化(內模式變化),DBA對模式/內模式映像相應做修改實現模式不變,從而應用程序不變,就保證數據和應用程序的物理獨立性

數據庫系統的三級模式和兩級映像的小結:

  1. 中間模式(概念模式)相對穩定的反映數據的結構和屬性關系,是DB的關鍵和中心,全局的邏輯結構,獨立於其他層次,故設計DB模式結構時應先確定DB邏輯模式。
  2. 模式的實例是動態反映數據的時效性。定義模式時要考慮邏輯結構,還要考慮數據的聯系,考慮數據的安全性完整性。
  3. 內模式獨立於用戶視圖(外模式),依賴全局邏輯結構(模式),組織存儲數據實現存儲時提高空間和時間效率
  4. 外模式面向具體應用,獨立於存儲設備(內模式),應用的較大修改導致外模式變動,故設計外模式要考慮擴展性。特定應用程序是在外模式數據結構上編制的,依賴於外模式,獨立於模式和內模式,不同的應用可以公用一個外模式。
  5. 二級映像保證DB外模式穩定性,是在底層保證應用程序穩定性,除非應用自身變化,否則不會修改。數據和程序的獨立性使數據定義和描述從應用分離,由於數據存取是DBMS管理,用戶不必考慮存取細節,簡化程序編制減少程序的維護和修改。

DBS的三級模式結構是對數據的三個抽象級別,用戶級對外模式,概念級對概念模式,物理級對內模式,不同級別用戶對數據庫形成不同視圖。如下圖:

PS:視圖廣義指觀察、認識和理解數據的范圍、角度和方法。

還有個經常問的問題,那就是關於E-R圖的。這里詳細說說,基本可以解答所有關於E-R的問題。

為了更好的理解和復習,先從數據模型(數據庫系統核心和基礎)說起;(兩大類)對現實世界的模擬,分為兩個層次(現實對象的兩步抽象過程)

1,概念模型(也叫信息模型);

在數據庫設計階段,由設計員按照用戶觀點建模實現對現實世界的概念抽象。

2,邏輯和物理模型;

邏輯模型包括網狀,層次,關系,對象模型等,由設計人員按照計算機觀點建模實現概念模型到適應某DBMS的邏輯模型的轉變。再由DBMS完成邏輯到物理模型的轉變。而物理模型是數據最底層的抽象,描述數據的存儲方式和方法。

數據模型中的值和型(Type-Value);

型是對某類數據的結構和屬性的描述,如學生記錄定義為(姓名,性別,出身年,籍貫,專業)這樣的一條記錄型,而記錄型的記錄值為(黎明,男,1990,河北,mse)

數據模型的組成要素;(三個)

1、數據結構;(靜態描述)描述數據庫的組成對象和關系。根據數據結構來對DB分類。非關系模型(層次,網狀),關系模型(關系),面向對象模型(對象)。

2、數據操作;(動態描述)增刪改查

3、數據的完整性和約束;

概念模型用途;

1、對現實的信息世界建模,是現實到機器的中間層。

2、數據庫設計工具

3、數據庫設計人員和用戶交流的語言

概念模型要求;簡單清晰的語義,直接易懂的表達。

概念模型(信息世界)的基本概念;

1、實體(entity);客觀存在並且可以區分的具體事物或者抽象概念。

2、屬性(attribute);entity具有的某個特性,如(黎明,男,1990,江蘇,mse)描述實體

3、碼(key);唯一的標識實體的屬性集!如學生學號。

4、域(domain);屬性的取值范圍,如學號的域為幾位整數。姓名的域為字符串集合。

5、實體型(entity type);由實體名和屬性名集合來刻畫的同類實體稱為實體型。如一個具體的學生(黎明,男,1990,江蘇,mse),學生這種類型的實體型為;學生(姓名,性別,出身年,籍貫,專業)

6、實體集(entity set);同一類型的實體的集合。如全體學生。

7、聯系(relationship);現實世界事物的聯系在信息世界反映為實體的聯系

聯系的分類(根據聯系的實體數量);一個實體,兩個實體和多個實體,一般都是問的兩個實體的聯系,那么可分為三類(實體集A對實體集B);

1:1;A的每一個實體在B中最多有一個實體與之聯系,當然也可以沒有,反之亦然(相互的)。例如;一個學校只有一個校長,而此校長只是這一個學校的校長。

1:N;A的每個實體,在B中有N個實體和它對應,反之B中的每個實體在A中只有一個和他對應。例如;一個班級有多名學生,而這每個學生只能是在這一個班里學習。

N:M;A的每個實體在B中,有N個對應,反之,B的每個實體在A中也有M個對應

例如;一門課程可以同時有多個學生選修,同時一個學生也可以同時選擇多門課程。

熟悉了以上理論,自然可以引入到ER圖,即概念模型的一種表示方法:那就是問到的E-R圖,也叫作(entity-relationship)實體關系圖

實體-關系圖(Entity-Relation Diagram)定義:

用來建立數據模型,在數據庫系統概論中屬於概念設計階段,形成一個獨立於機器,獨立於 DBMS 的 ER 圖模型。通常將它簡稱為 ER 圖,相應地可把用 ER 圖描繪的數據模型稱為 ER 模型。ER 圖提供了表示實體(即數據對象)、屬性和聯系的方法,用來描述現實世界的概念模型。

構成 E-R 圖的基本要素是實體、屬性和關系,其表示方法為:

實體的屬性;橢圓表示,和實體用無向邊連接

聯系;用菱形表示,框里寫聯系的名稱,無向邊連接實體且在無向邊旁邊寫明聯系的類型。

聯系的屬性;聯系本身也可以具有屬性,比如學生和課程的聯系是學習,學習是聯系名,聯系類型是N:M,聯系的屬性是學習成績同樣是橢圓表示,無向邊連接。

一對多聯系;

比如課程的每個實體可由多個老師教,可以有多本參考書。而每個老師只教一門課,每本參考書只對應一門課。

多對多聯系;

比如每個供應商可以提供給多個項目多種零件,每個項目可以使用多個供應商的零件,每種零件可以由不同供應商供給。

單個實體型內的聯系;(3類,一對一,一對多,多對多)

例子;職工實體型之間,存在領導和被領導的關系,一個職工由一個領導直接管理,而一個領導可以管理多名職工。屬於1對多聯系。

數據庫設計工具powerDesigner介紹:

powerDesigner是sybase公司推出的圖形化企業級數據建模和數據庫設計工具,(包含了數據庫設計的全過程)可以設計業務處理模型,數據流程圖,概念模型,物理模型,支持概念模型轉為物理模型,由物理模型自動生成數據庫腳本,支持主流的關系數據庫和應用開發平台。

可以手動先畫ER圖,再由powerDesigner設計CDM(conceptual data model)模型。

關於二維表和表項

數據庫領域常用的邏輯數據模型:層次,網狀,關系,面向對象,對象關系模型。其中層次和網狀為格式化模型(早期使用),最主要的是關系模型,在用戶看來關系模型中數據的邏輯結構是一張二維表(行/列)。此二維表對應一個關系(relation)。關系模型數據結構單一,建立在了集合代數的基礎上。

關系模型數據結構的非形式化定義(形式化定義是數學上的定義);

關系模型的數據結構:注意;關系不是聯系!不要和以前的ER圖的聯系混了。

表中的元組;表中的一行是一個元組(tuple)。

表中的屬性;表中的一列是一個屬性(attribute),屬性的名字就是列名。

表中的碼(key碼鍵),唯一確定一個元組的屬性組。如學號唯一確定一個學生。

域;屬性的取值范圍,如年齡在1-120等

分量;元組的一個屬性值。

關系模式;對關系(表)的描述,一般格式:關系名(屬性1,屬性2,屬性……屬性n)

關系模型數據結構的形式化定義(基於數學方法);

域(Dmain);一組具有相同數據類型的值的集合。如自然數,整數等。

笛卡爾積(Cartesian product);域上的一種集合運算,給定一組域D1,D2,D3……DN,可以相同,則笛卡爾積為;D1×D2×…×Dn={(d1,d2,…,dn)|di∈Di,i=1,2,…,n},其中每個元素(d1,d2,…,dn)叫做一個n元組(元組),每個元組的每一個值叫分量。

笛卡爾積可以表示一個二維表,表中每行對應一個元組,每列對應一個域。元組總數目等於笛卡爾積的基數連乘。

關系(relation);一組域D1,D2,D3……DN的笛卡爾積的有限子集(元素子集也就是n元組)叫做在這組域上的關系。記作;R(D1,D2,D3……DN),R為關系名,n是關系的目或度。

屬性(attribute);一個關系就是一個二維表(反之未必),每列對應一個域,因為域可以相同,為了區分給列起名,為屬性。

侯選碼(candidate key);關系中某一屬性組的值能唯一確定一個元組則該屬性組為侯選碼。

主碼(primary key);多個侯選碼里選一個

主屬性;侯選碼的各個屬性

非主屬性;不含在侯選碼中的屬性

全碼(all key);關系模式的所有屬性都是侯選碼的情況下叫全碼。

關系(二維表)的類型;

1、基本關系(基本表或基表);實際存在的表,實際存儲數據的邏輯表示。

2、查詢表;查詢結果對應的表

3、視圖表;是虛表,由基本表或其他視圖表導出的表,不對應實際存儲的數據。

基本關系(基本表)的6條性質;

1、每列同質,必須來自同一個域,數據類型同。

2、不同列可以出自同一個域(域可重復),但是不同列的屬性名要不同。

3、列序任意。(隨意插新屬性,一般后插入)

4、任意兩個元組的侯選碼不同(否則無法標識唯一元組!理解)。

5、行序任意。

6、分量必須取原子值(數據項不可分)。

再來談談關系模式;

關系模式是型,關系是值,關系模式是對關系的描述,是靜態的穩定的。關系的本質是一個二維表,一個元組就是該關系涉及的屬性集的笛卡爾積的一個元素,關系是元組的集合,關系是關系模式在某一時刻的狀態,動態的,隨時間不斷變化的。

關系模式的形式化表現:

R(U,D,dom,F),R(relation)關系名,U組成該關系的屬性名集合,D屬性組U中屬性所來自的域,dom屬性向域的映象集合,F屬性間的數據依賴關系集合。

關系型數據庫;

在一個給定的應用領域中,所有實體間聯系的關系的集合構成一個關系數據庫。典型關系DB;oracle,mysql,sqlserver,sybase,

關系數據模型的操作(CRUD);

增加(Create)、查詢(Retrieve)(重新得到)、更新(Update)和刪除(Delete)。

其中retrieve表達能力最強是最主要的部分;分為選擇select,投影project,連接join,除divide,並union,差except,交intersection,笛卡爾積等,插入刪除修改是數據更新,select,project,union,except,笛卡爾積是5種基本操作。

關系操作的特點;集合操作方式,操作對象和結果都是集合,非關系操作是記錄。

關系數據語言的分類;關系代數語言relational algebra[ˈældʒəbrə],關系演算語言relation calculus,介於兩者之間的結構化查詢語言SQL(structured query language);豐富的查詢功能,數據定義和數據控制功能(關系數據庫的標准語言),用戶不必了解數據的存儲路徑,提高了數據獨立性和用戶生產率。

CRUD必須滿足關系的完整性約束。Crud對象是關系(若干元組的集合)。

關系模型的存儲結構;實體間關系用表表示。在DBMS中一個表對應一個os文件,或者DBMS從os獲得文件,再自己設計表,索引等存儲結構。

關系數據模型優缺點;有嚴格的數學定義和約束(不同於格式化模型),概念單一;實體的聯系用關系表示(表)。數據結構簡單清晰,存儲路徑用戶透明,安全保密,數據獨立,並簡化應用程序的開發過程缺點就是由於存儲透明,導致查詢效率低,故DBMS必須優化查詢請求,增加了開發DBMS的難度。

數據庫的數據模型有哪幾種,說出至少兩種的特征

非關系模型;

層次模型:記錄之間的聯系通過指針實現,查找效率高。

網狀模型:一個結點可以有多於一個的雙親,允許一個以上的結點無雙親。

關系模型:概念簡單,結構清晰,用戶易學易用(重點,前一個題論述)

面向對象模型(基本拋棄了)

對象關系模型

 

歡迎關注

dashuai的博客是終身學習踐行者,大廠程序員,且專注於工作經驗、學習筆記的分享和日常吐槽,包括但不限於互聯網行業,附帶分享一些PDF電子書,資料,幫忙內推,歡迎拍磚!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM