數據模型是對現實世界數據的模擬,是壹種研究工具。有了這個研究工具,我們可以更好地將現實事物抽象成計算機可以處理的數據。
層次模型:層次模型用“樹形結構”表示數據之間的關系
層次模型是數據庫系統中最早使用的模型,其數據結構是壹棵“有向樹”。根節點在最上面,級別最高,子節點在最下面,層層排列。
分層模型的特征是:
分層模型中的約束條件是:
(1)只有壹個節點,沒有父節點,是樹的根;(有且僅有壹個節點沒有父節點,該節點為根節點。)
(2)其他節點只有壹個父節點。(除了根之外的其他節點有且只有壹個父節點。
這使得層次數據庫系統只能直接處理壹對多的實體關系。
(3)任何給定的記錄值只有按照其路徑查看才能顯示其全部意義,任何子記錄值都不能獨立於父記錄值而存在。
例如:教師和學生的分層模型。分層模型有四種記錄類型,即實體。
它們是:
(1)記錄類型(實體)系統為根節點,由編號、名稱、專業、編制屬性(字段)組成。它有兩個子節點,即高校教師實體和課程實體。
(2)記錄(實體)教師是學院的子節點,由六個屬性(字段)組成。
(3)記錄的(實體)課程由四個屬性(字段)組成。
(4)記錄型(實體型)教師由六個屬性(領域)組成。課程和老師是葉子節點,學院和老師,老師和課程是壹對多的關系。
數據完整性約束
它有四個主要功能:添加、刪除、檢查和修改;滿足完整性約束;
添加(插入):滿足要求,必須有壹個父節點,即如果加入教師,必須分配到學院;
刪除:如果是字節點,不影響,直接刪除字節點;如果是父節點,則刪除整個字節點;如果把整個教研室刪掉,教研室的老師就沒有這個制度了;
搜索:按照樹形結構從上到下搜索;
修改:更新對應關系的信息。
它的優點和缺點:
優勢:
相對簡單易用;
結構清晰,現實中的公司和家庭都有類似的結構;
良好的完整性支持;
查詢效率高,模型層次有針對性,經常記錄訪問路徑。
缺點:
很多關系不是單向的、壹對多的、多對壹的,只能通過引入冗余數據或者建立虛擬節點等不自然的數據組織來解決,容易產生不壹致;
插入刪除限制太多。
查找字節點必須通過父節點;
樹節點中任何記錄的屬性都是簡單數據類型,不能再細分;
網格模型:網格模型用“圖結構”表示數據之間的關系。
1,條件特征
(1)允許多個節點沒有父節點。
(2)至少壹個節點可以有多個父節點。
在網格模型中,每個節點代表壹個記錄類型(實體),每個記錄類型可以包含幾個字段(實體的屬性)。節點之間的連接線表示記錄類型(實體)之間的父子關系。
從定義中可以看出,層次模型中的子節點和父節點之間的關系是唯壹的,但在網格模型中可能不是唯壹的。因此,在網格模型中,我們應該命名每個聯系人,並指出與該聯系人相關的父記錄和子記錄。
2.表示方法:
實體類型:由記錄類型描述。
每個節點代表壹個記錄類型(實體);
屬性:由字段描述,每個記錄類型包含幾個字段;
連接:記錄類型(實體)之間的壹對多父子關系由節點之間的連接線表示;
網狀模型和層次模型的區別;
網格模型:允許多個沒有父節點的節點;
允許節點有多個父節點;
允許兩個節點有多個連接(復合連接);
可以更直接的描述現實世界;
層次模型是網格模型的特例。
給每個聯系人取壹個名字(L1,L2),指出與該聯系人相關的父母記錄和子女記錄。
3.多對多網絡模型的表示
用網格模型表示多對多關系
方法:將多對多直接分解為壹對多連接。
4.示例:學生選課模型
它由學號、課程號、年級三個數據項組成,表示壹個學生修過某門課程及其年級。
每個學生可以選修多門課程。顯然,對於學生記錄中的壹個值,選課記錄中可以有多個與之相關聯的值。但是,選課記錄中的值只能與學生記錄中的值相關。學生與選課的關系是壹對多的關系,稱為學生選課。同樣,課程和選課的關系也是壹對多的關系,叫做課程-選課。
5.操縱
網格模型的數據操作主要包括查詢、插入、刪除和更新:
插入:插入父節點值未確定的子節點值;
刪除:只能刪除父節點值。比如可以刪除壹個教研室,研究室所有老師的信息都保留在數據庫裏。
修改:可以直接表示非樹形結構,不需要像層次模型那樣增加冗余節點,所以修改時只需要指定更新記錄即可。
網絡數據系統(DBTG)對數據施加了壹些限制,並提供了壹些完整性約束:
代碼:唯壹標識記錄的數據項的集合;
壹個聯系人中父母記錄和子女記錄是壹對多的;
支持父母記錄和子女記錄之間的壹些綁定條件;
關鍵:實現記錄聯系;
常見的方法:單向、雙向、循環和頭對頭鏈接;
6.優點和缺點
網格數據模型的優點如下:
(1)可以更直接地描述真實的客觀世界,可以表示實體之間的各種復雜關系。
(2)性能好,訪問效率高。
網格數據模型的缺點如下:
(1)的結構比較復雜,其數據定義語言(DDL)和數據操作語言(DML)比較復雜,用戶使用起來不太方便。而且應用環境越大,數據庫結構越復雜,不利於最終用戶掌握。
(2)數據獨立性差。因為實體之間的關系本質上是由訪問路徑表示的,所以應用程序在訪問數據時應該指定訪問路徑。
關系模型:關系模型用“二維表”(或關系)來表示數據之間的關系。
1,基本條款
(1)關系:壹個關系對應壹個二維表,二維表就是關系名。
(2)元組:二維表中的壹行稱為元組。
(3)屬性:二維表中的壹列稱為屬性。屬性的數量稱為元素或關系的程度。列的值稱為屬性值;
(4)(值)域:屬性值的取值範圍為值域。
(5) Component:每行對應的列的屬性值,即元組中的壹個屬性值。[2]
(6)關系模式:二維表中的行定義,即關系的描述,稱為關系模式。壹般表示為(屬性1,屬性2,...,屬性n),如教師的關系模型可以表示為教師(教師編號、姓名、性別、年齡、職稱、科室)。
(7) Key (code):如果在壹個關系中有壹個唯壹標識壹個實體的屬性或屬性集叫做實體的Key,那麽即使在關系的任何壹個關系狀態中有兩個元組,屬性上的值的組合也是不同的。
(8)候選鍵(候選碼):如果關系中壹個屬性的值可以唯壹標識壹個元組,如果任何屬性不能從關系的壹個鍵中刪除,則不是關系的鍵,那麽指定的候選鍵稱為關系的候選鍵或候選碼。
例如,如果下面的學生表中的學生ID和圖書館ID都可以唯壹地標識壹個元組,那麽學生ID和圖書館ID都可以唯壹地標識壹個元組,那麽學生ID和圖書館ID都可以用作學生關系的候選鍵。
在選課表中,只有屬性組“學號”和“課程號”可以唯壹標識壹個元組,所以候選鍵是(學號,課程號)。
2.關系模型的數據操作和完整性約束。
關系數據模型的操作主要包括查詢、插入、刪除和修改數據;這些操作必須滿足關系的完整性約束。
關系模型中數據操作的特點是集合操作方式,即操作對象和操作結果都是集合,也稱壹次壹個集合。
相應地,非關系數據模型的操作模式是壹次壹條記錄。
關系的完整性約束包括三類:
實體完整性、引用完整性和用戶定義的完整性。
實體完整性定義了數據庫中每壹個基本關系的主碼應該滿足的條件,可以保證元組的唯壹性。引用完整性定義了表與表之間的引用關系,即引用與被引用的關系。自定義完整性是用戶為特定應用環境制定的數據規則,反映了特定應用所涉及的數據必須滿足的語義要求。
3.關系模型的優缺點
優勢
(1)關系模型不同於非關系模型,非關系模型基於嚴格的數學理論。
(2)關系模型概念單壹,實體之間的關系用關系表示,數據的檢索結果也是關系(表),因此其數據結構簡單明了,用戶易於理解和使用。
(3)關系模型的物理存儲和訪問路徑對用戶透明,因此具有更高的數據獨立性,更好的安全性和保密性,簡化了程序員的數據庫開發工作。
劣勢
(1)由於訪問路徑對用戶透明,查詢效率往往不如非關系數據模型高。因此,為了提高性能,必須對用戶的查詢請求進行優化,這增加了開發數據庫管理系統的難度和負擔。
(2)關系數據模型不能自然地表示實體集之間的關系,存在語義信息不足、數據類型太少等弱點。