《數(shù)據(jù)庫管理之?dāng)?shù)據(jù)庫模型.ppt》由會員分享,可在線閱讀,更多相關(guān)《數(shù)據(jù)庫管理之?dāng)?shù)據(jù)庫模型.ppt(63頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、數(shù)據(jù)庫管理 之二 常用的數(shù)據(jù)模型 常用的數(shù)據(jù)模型 在數(shù)據(jù)庫中用數(shù)據(jù)模型這個工具來抽象、 表示和處理現(xiàn)實世界中的數(shù)據(jù)和信息。 通俗地講數(shù)據(jù)模型就是現(xiàn)實世界的模擬。 數(shù)據(jù)模型應(yīng)滿足三方面要求 能比較真實地模擬現(xiàn)實世界 容易為人所理解 便于在計算機上實現(xiàn) 一、層次數(shù)據(jù)模型 二、網(wǎng)狀數(shù)據(jù)模型 三、關(guān)系數(shù)據(jù)模型 常用的數(shù)據(jù)模型 層次數(shù)據(jù)模型 非關(guān)系模型 種類 層次模型 ( Hierarchical Model) 網(wǎng)狀模型 (Network Model ) 數(shù)據(jù)結(jié)構(gòu):以 基本層次聯(lián)系 為基本單位 基本層次聯(lián)系:兩個記錄以及它們之間的一對多 ( 包括一對一 )的聯(lián)系 數(shù)據(jù)模型 (續(xù) ) 關(guān)系模型 (Rela
2、tional Model) 數(shù)據(jù)結(jié)構(gòu): 表 面向?qū)ο竽P?(Object Oriented Model) 數(shù)據(jù)結(jié)構(gòu): 對象 一、層次模型 1. 層次數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu) 2. 層次數(shù)據(jù)模型的數(shù)據(jù)操縱 3. 層次數(shù)據(jù)模型的完整性約束 4. 層次數(shù)據(jù)模型的存儲結(jié)構(gòu) 5. 層次數(shù)據(jù)模型的優(yōu)缺點 6. 典型的層次數(shù)據(jù)庫系統(tǒng) 1. 層次數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu) 層次模型 滿足下面兩個條件的基本層次聯(lián)系的集合為 層次模型 。 1. 有且只有一個結(jié)點沒有雙親結(jié)點 , 這個結(jié) 點稱為根結(jié)點 2. 根以外的其它結(jié)點有且只有一個雙親結(jié)點 層次模型中的幾個術(shù)語 根結(jié)點 , 雙親結(jié)點 , 兄弟結(jié)點 , 葉結(jié)點 層次數(shù)據(jù)模型的
3、數(shù)據(jù)結(jié)構(gòu) (續(xù)) 1 根結(jié)點 2 兄弟結(jié)點 3 葉結(jié)點 4 兄弟結(jié)點 5 葉結(jié)點 葉結(jié)點 層次數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu) (續(xù)) 表示方法 實體型 :用記錄類型描述 。 每個結(jié)點表示一 個記錄類型 。 屬性 :用字段描述 。 每個記錄類型可包含若 干個字段 。 聯(lián)系 :用結(jié)點之間的連線表示記錄 ( 類 ) 型 之間的一對多的聯(lián)系 。 層次數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu) (續(xù)) 特點 結(jié)點的雙親是唯一的 只能直接處理一對多的實體聯(lián)系 每個記錄類型定義一個排序字段 , 也稱為碼 字段 任何記錄值只有按其路徑查看時 , 才能顯出 它的全部意義 沒有一個子女記錄值能夠脫離雙親記錄值而 獨立存在 層次數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu) (
4、續(xù)) 多對多聯(lián)系在層次模型中的表示 用層次模型間接表示多對多聯(lián)系 表示方法 將多對多聯(lián)系分解成一對多聯(lián)系 分解方法 冗余結(jié)點法 虛擬結(jié)點法 2. 層次模型的數(shù)據(jù)操縱 查詢 插入 刪除 更新 3. 層次模型的完整性約束 無相應(yīng)的雙親結(jié)點值就不能插入子女結(jié) 點值 如果刪除雙親結(jié)點值,則相應(yīng)的子女結(jié) 點值也被同時刪除 更新操作時,應(yīng)更新所有相應(yīng)記錄,以 保證數(shù)據(jù)的一致性 4.層次數(shù)據(jù)模型的存儲結(jié)構(gòu) 鄰接法 按照層次樹前序遍歷的順序把所有記錄值依次鄰接 存放,即通過物理空間的位置相鄰來實現(xiàn)層次順序。 鏈接法 用指引元來反映數(shù)據(jù)之間的層次聯(lián)系 子女兄弟鏈接法 P18 層次序列鏈接法 P18 D02 R0
5、1 E2101 E1709 E3501 R02 R03 E1101 E3102 S63871 S63874 S63876 5. 層次模型的優(yōu)缺點 優(yōu)點 層次數(shù)據(jù)模型簡單 , 對具有一對多的層次關(guān) 系的部門描述自然 、 直觀 , 容易理解 性能優(yōu)于關(guān)系模型 , 不低于網(wǎng)狀模型 層次數(shù)據(jù)模型提供了良好的完整性支持 層次模型的優(yōu)缺點(續(xù)) 缺點 多對多聯(lián)系表示不自然 對插入和刪除操作的限制多 查詢子女結(jié)點必須通過雙親結(jié)點 層次命令趨于程序化 6. 典型的層次數(shù)據(jù)庫系統(tǒng) IMS數(shù)據(jù)庫管理系統(tǒng) 第一個大型商用 DBMS 1968年推出 IBM公司研制 網(wǎng)狀數(shù)據(jù)模型 網(wǎng)狀模型 1. 網(wǎng)狀數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu)
6、 2. 網(wǎng)狀數(shù)據(jù)模型的數(shù)據(jù)操縱 3. 網(wǎng)狀數(shù)據(jù)模型的完整性約束 4. 網(wǎng)狀數(shù)據(jù)模型的存儲結(jié)構(gòu) 5. 網(wǎng)狀數(shù)據(jù)模型的優(yōu)缺點 6. 典型的網(wǎng)狀數(shù)據(jù)庫系統(tǒng) 1.網(wǎng)狀數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu) 網(wǎng)狀模型 滿足下面兩個條件的基本層次聯(lián)系的集合為 網(wǎng)狀模型 。 1. 允許一個以上的結(jié)點無雙親; 2. 一個結(jié)點可以有多于一個的雙親 。 網(wǎng)狀數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu) (續(xù)) 表示方法 ( 與層次數(shù)據(jù)模型相同 ) 實體型 :用記錄類型描述 。 每個結(jié)點表示一 個記錄類型 。 屬性 :用字段描述 。 每個記錄類型可包含若 干個字段 。 聯(lián)系 :用結(jié)點之間的連線表示記錄 ( 類 ) 型 之間的一對多的父子聯(lián)系 。 網(wǎng)狀數(shù)據(jù)模型的
7、數(shù)據(jù)結(jié)構(gòu) (續(xù)) 特點 只能直接處理一對多的實體聯(lián)系 每個記錄類型定義一個排序字段 , 也稱為碼 字段 任何記錄值只有按其路徑查看時 , 才能顯出 它的全部意義 網(wǎng)狀數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu) (續(xù)) 網(wǎng)狀模型與層次模型的區(qū)別 網(wǎng)狀模型允許多個結(jié)點沒有雙親結(jié)點 網(wǎng)狀模型允許結(jié)點有多個雙親結(jié)點 網(wǎng)狀模型允許兩個結(jié)點之間有多種聯(lián)系(復(fù) 合聯(lián)系) 網(wǎng)狀模型可以更直接地去描述現(xiàn)實世界 層次模型實際上是網(wǎng)狀模型的一個特例 網(wǎng)狀數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu) (續(xù)) 1 2 R3 L1 L2 R1 R2 L3 L1 L2 R3 L4 R4 R5 網(wǎng)狀數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu) (續(xù)) 1 L1 L2 R2 網(wǎng)狀數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu) (
8、續(xù)) 學(xué)生宿舍 學(xué)生 教研室 系 教師 網(wǎng)狀數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu) (續(xù)) 父親 人 獨生子女 樹 種 植 砍伐 養(yǎng) 育 贍 養(yǎng) 網(wǎng)狀數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu) (續(xù)) 父 親 關(guān) 系 男人 網(wǎng)狀數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu) (續(xù)) 多對多聯(lián)系在網(wǎng)狀模型中的表示 用網(wǎng)狀模型間接表示多對多聯(lián)系 表示方法 將多對多聯(lián)系 直接 分解成一對多聯(lián)系 2. 網(wǎng)狀模型的數(shù)據(jù)操縱 查詢 插入 刪除 更新 3. 網(wǎng)狀數(shù)據(jù)模型的完整性約束 完整性約束條件不嚴(yán)格 允許插入尚未確定雙親結(jié)點值的子女結(jié)點值 允許只刪除雙親結(jié)點值 網(wǎng)狀數(shù)據(jù)模型的完整性約束 (續(xù) ) 具體的網(wǎng)狀數(shù)據(jù)庫系統(tǒng)(如 DBTG)對數(shù) 據(jù)操縱加了一些限制,提供了一定的完整
9、 性約束。 碼 屬籍類別 加入類別 (自動的,手工的 ) 移出類別 (固定的,必須的,隨意的 ) 4.網(wǎng)狀數(shù)據(jù)模型的存儲結(jié)構(gòu) 關(guān)鍵 實現(xiàn)記錄之間的聯(lián)系 常用方法 單向鏈接 雙向鏈接 環(huán)狀鏈接 向首鏈接 例: P29 5.網(wǎng)狀模型的優(yōu)缺點 優(yōu)點 能夠更為直接地描述現(xiàn)實世界 , 如一個結(jié)點 可以有多個雙親 具有良好的性能 , 存取效率較高 網(wǎng)狀模型的優(yōu)缺點(續(xù)) 缺點 結(jié)構(gòu)比較復(fù)雜 , 而且隨著應(yīng)用環(huán)境的擴大 , 數(shù)據(jù)庫的結(jié)構(gòu)就變得越來越復(fù)雜 , 不利于最 終用戶掌握 DDL、 DML語言復(fù)雜 , 用戶不容易使用 6. 典型的網(wǎng)狀數(shù)據(jù)庫系統(tǒng) DBTG系統(tǒng),亦稱 CODASYL系統(tǒng) 由 DBTG提出
10、的一個系統(tǒng)方案 奠定了數(shù)據(jù)庫系統(tǒng)的基本概念 、 方法和技術(shù) 70年代推出 實際系統(tǒng) Cullinet Software Inc.公司的 IDMS Univac公司的 DMS1100 Honeywell公司的 IDS/2 HP公司的 IMAGE 1.2.3 數(shù)據(jù)模型 一、層次數(shù)據(jù)模型 二、網(wǎng)狀數(shù)據(jù)模型 三、關(guān)系數(shù)據(jù)模型 關(guān)系數(shù)據(jù)模型 關(guān)系模型 1. 關(guān)系數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu) 2. 關(guān)系數(shù)據(jù)模型的操縱 3. 關(guān)系數(shù)據(jù)模型的完整性約束 4. 關(guān)系數(shù)據(jù)模型的存儲結(jié)構(gòu) 5. 關(guān)系數(shù)據(jù)模型的優(yōu)缺點 6. 典型的關(guān)系數(shù)據(jù)庫系統(tǒng) 關(guān)系模型 最重要的一種數(shù)據(jù)模型 。 也是目前主要 采用的數(shù)據(jù)模型 1970年由美國
11、 IBM公司 San Jose研究室的 研究員 E.F.Codd提出 本課程的重點 1.關(guān)系數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu) 關(guān)系模型的基本數(shù)據(jù)結(jié)構(gòu) 關(guān)系模型的基本概念 實體及實體間的聯(lián)系的表示方法 關(guān)系必須是規(guī)范化的 關(guān)系數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu) (續(xù) ) 關(guān)系模型的基本數(shù)據(jù)結(jié)構(gòu) 在用戶觀點下 , 關(guān)系模型中數(shù)據(jù)的邏輯結(jié)構(gòu) 是一張二維表 , 它由行和列組成 。 學(xué)生登記表 學(xué) 號 姓 名 年 令 性 別 系 名 年 級 95004 王小明 19 女 社會學(xué) 95 95006 黃大鵬 20 男 商品學(xué) 95 95008 張文斌 18 女 法律學(xué) 95 關(guān)系數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu) (續(xù)) 關(guān)系模型的基本概念 關(guān)系 (
12、Relation) : 一個關(guān)系對應(yīng)通常說的一張表 。 元組 ( Tuple) 表中的一行即為一個元組 。 屬性 ( Attribute) 表中的一列即為一個屬性 , 給每一個屬性起一個 名稱即屬性名 。 關(guān)系數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu) (續(xù)) 關(guān)系模型的基本概念 ( 續(xù) ) 主碼 ( Key) 表中的某個屬性組 , 它可以唯一確定一個元組 。 域 ( Domain) 屬性的取值范圍 。 分量 元組中的一個屬性值 。 關(guān)系數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu) (續(xù)) 關(guān)系模型的基本概念 ( 續(xù) ) 關(guān)系模式 對關(guān)系的描述 表示方法 關(guān)系名 ( 屬性 1, 屬性 2, , 屬性 n) 例如: 學(xué)生 ( 學(xué)號 , 姓名 ,
13、 年齡 , 性別 , 系 , 年級 ) 關(guān)系數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu) (續(xù)) 實體及實體間的聯(lián)系的表示方法 實體型 :直接用關(guān)系(表)表示。 屬性 :用屬性名表示。 一對一聯(lián)系 :隱含在實體對應(yīng)的關(guān)系中。 一對多聯(lián)系 :隱含在實體對應(yīng)的關(guān)系中。 多對多聯(lián)系 :直接用關(guān)系表示。 關(guān)系數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu) (續(xù)) 例 1 學(xué)生 、 系 、 系與學(xué)生之間的一對多聯(lián)系: 學(xué)生 ( 學(xué)號 , 姓名 , 年齡 , 性別 , 系號 , 年級 ) 系 (系號 , 系名 , 辦公地點 ) 例 2 系 、 系主任 、 系與系主任間的一對一聯(lián)系 關(guān)系數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu) (續(xù)) 例 3 學(xué)生 、 課程 、 學(xué)生與課程之間的多
14、對多聯(lián)系: 學(xué)生 ( 學(xué)號 , 姓名 , 年齡 , 性別 , 系號 , 年 級 ) 課程 ( 課程號 , 課程名 , 學(xué)分 ) 選修 ( 學(xué)號 , 課程號 , 成績 ) 關(guān)系數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu) (續(xù)) 關(guān)系必須是規(guī)范化的 , 即必須滿足一定 的規(guī)范條件 最基本的規(guī)范條件:關(guān)系的每一個分量必須 是一個不可分的數(shù)據(jù)項 。 工 資 扣 除職 工 號 姓 名 職 稱 基 本 工 齡 職 務(wù) 房 租 水 電 實 發(fā) 86051 陳 平 講 師 105 9 5 15 6 12 115 5 工 資 扣 除職 工 號 姓 名 職 稱 基 本 工 齡 職 務(wù) 房 租 水 電 實 發(fā) 86051 陳 平 講 師
15、105 9 5 15 6 12 115 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.關(guān)系模型的數(shù)據(jù)操縱 查詢 、 插入 、 刪除 、 更新 數(shù)據(jù)操作是集合操作 , 操作對象和操作 結(jié)果都是關(guān)系 , 即若干元組的集合 存取路徑對用戶隱蔽 , 用戶只要指出 “ 干什么 ” , 不必詳細說明 “ 怎么干 ” 3.關(guān)系模型的完整性約束 實體完整性 參照完整性 用戶定義的完整性 4.關(guān)系數(shù)據(jù)模型的存儲結(jié)構(gòu) 表以文件形式存儲 有的 DBMS一個表對應(yīng)一個操作系統(tǒng)文 件 , 有的 DBMS自己設(shè)計文件結(jié)構(gòu) 5.關(guān)系模型的優(yōu)缺點 優(yōu)點 建
16、立在嚴(yán)格的數(shù)學(xué)概念的基礎(chǔ)上 概念單一 。 數(shù)據(jù)結(jié)構(gòu)簡單 、 清晰 , 用戶易懂 易用 實體和各類聯(lián)系都用關(guān)系來表示 。 對數(shù)據(jù)的檢索結(jié)果也是關(guān)系 。 關(guān)系模型的存取路徑對用戶透明 具有更高的數(shù)據(jù)獨立性 , 更好的安全保密性 簡化了程序員的工作和數(shù)據(jù)庫開發(fā)建立的工作 關(guān)系模型的優(yōu)缺點(續(xù)) 缺點 存取路徑對用戶透明導(dǎo)致查詢效率往往不如 非關(guān)系數(shù)據(jù)模型 為提高性能 , 必須對用戶的查詢請求進行優(yōu)化 增加了開發(fā)數(shù)據(jù)庫管理系統(tǒng)的難度 6. 典型的關(guān)系數(shù)據(jù)庫系統(tǒng) ORACLE SYBASE DB/2 SQL Server INFORMIX COBASE PBASE EasyBase KingBase 小金靈 DM/4 OpenBase