數據庫系統設計與開發


一、關系數據庫系統概述

數據:是對事物描述的符號記錄,它描述事物中人們所感興趣的特征,它能被計算機識別、存儲和處理

數據管理:是對數據的分類、組織、編碼、存儲、查詢和維護等活動,是數據處理的中心環節

數據管理的目標:

  • 減少數據的冗余度(數據的重復存儲)
  • 提高數據的共享性(用戶/語言/現在未來)
  • 提高數據的獨立性(應用程序獨立於數據結構變化)

數據管理的三個階段:人工 -> 文件 -> 數據庫(60年代末)

數據庫技術:數據管理的最新技術,研究數據庫的結構、存儲、管理和使用

DBS的組成:

  • 數據庫:以一定的組織形式(數據模型)存放在計算機存儲設備上的相關數據的集合
  • 數據庫管理系統:管理數據庫的軟件
    1. 提供多種高級用戶接口
    2. 查詢處理和優化
    3. 數據的安全性控制
    4. 數據的完整性控制
    5. 並發控制
    6. 數據庫恢復
    7. 數據目錄(數據字典)管理
  • 用戶或應用程序
    1. 基於數據庫的應用程序及用戶
    2. 使用簡單的終端命令會查詢語言對數據庫進行存取操作,即以查詢性應用為主的用戶
  • 數據庫管理員(DBA):進行數據庫的規划、設計、協調、維護和管理的人員或集體

數據庫系統的生存周期

  • 數據庫系統的規划
  • 數據庫設計
  • 數據庫的建立
  • 數據庫的運行、管理和維護
  • 數據庫的擴充和重構

開發數據庫系統的有關人員

  1. 數據庫管理員:進行數據庫的規划、設計、協調、維護和管理
  2. 系統分析員:負責應用系統的需求分析和規范說明,與DBA和用戶一起確定DBS的硬件平台和軟件設置,參與DBS設計
  3. 程序設計員:負責設計和編制應用系統程序模塊,並進行調試和安裝
  4. 用戶:參與可行性研究與需求分析

關系數據模型與關系模式

數據模型 -> 用來描述數據的一組概念和定義

三級數據模型

  • 概念數據模型:面向客觀世界,與DBMS無關(E-R)
  • 邏輯數據模型:關系數據模型(面向用戶和DBMS)
  • 物理數據模型:與DBMS、OS和硬件有關

邏輯數據模型的三要素:

  1. 數據結構 -> 規定如何把基本的數據項組織成較大的數據單位
  2. 數據操作 -> 查詢、更新(增、刪、改);定義操作的含義、操作規則和實現操作的語言
  3. 數據約束 -> 是一組完整性規則的集合,定義了給定數據模型中數據及其聯系所具有的制約和依賴規則

數據模式 -> 用數據模型對具體數據的描述

關系數據模型

  • 關系數據庫由關系組成(用二維表示)
  • 關系由元組組成(二維表的),元組無序
  • 元組由屬性組成(二維表的),屬性無序
  • 屬性的取值范圍 -- >屬性域(原子數據的有限集)
  • 數據間的關系用(候選/主/主屬性/外)隱含表示

關系中屬性的個數 --> 關系的目

關系中元組的個數 --> 關系的基數

關系名+屬性名 --> 關系模式

候選鍵:其屬性或屬性組的值能唯一決定其它所有屬性的值,而它的任何真子集無此性質

  • 主屬性 ------- 包含在任何一個候選鍵中的屬性
  • 非主屬性 ----- 不包含在任何一個候選集中的屬性

主鍵(Primary Key(PK)):當一個關系能有多個候選鍵時,可選定一個來標識元組

外鍵(Foreign Key(FK)):(不是本關系的鍵)卻引用了其它關系或本關系的鍵的屬性或屬性組

關系數據模型中表內不同元組間的聯系用外鍵隱含地表示

關系數據模型中表間(實體間)的聯系是用外鍵隱含地表示的

二、約束(四類)

  1. 域完整性 --> 屬性域中的值/由語義決定可否為NULL
  2. 實體完整性 --> 每個關系都有一個主鍵、值唯一、≠NULL
  3. 引用完整性約束 --> 外鍵引用已有的主鍵值,或為NULL(非主屬性作為主鍵)
  4. 一般化完整性約束 --> 由用戶定義的、和數據的具體內容有關的約束

前三個稱為隱含約束

后一個為顯示約束(可用觸發器、斷言、過程)

屬性為原子的 --> 固有約束

數據庫中完整性約束檢查,由DBMS實現或由用戶負責

操作

查詢是更新的基礎

操作的對象及運算結果都是關系

關系代數完備集(σ,Π,∪, —, × )

σ:在關系中選出符號條件的元組(行)----> 水平分割(where)

Π:選取關系中感興趣的列,可重排列順序 -----> 對關系垂直分割(select)

×: 如:R x S :目為 r+s,基數為 基數R x 基數S

⋈:只保留一個關系中的公共屬性

關系代數運算與SQL的QL的對應關系:

QL 的完整句法:

QL 的執行過程:

三、RDBMS 概述

1、層次結構

  • 應用層:應用程序與DBMS之間的接口,包括各種DB應用程序
  • 語言翻譯處理層:對數據庫語言的各類語句進行語法分析視圖轉換授權檢查完整性檢查、查詢優化等
  • 數據存取層:將上層的集合操作轉換化為單元組操作,完成數據記錄的存取、存取路徑維護、並發控制、事務管理和數據庫恢復等任務,涉及到數據字典的讀與寫、日志文件的讀與寫、加/解鎖
  • 數據存儲層:負責文件的邏輯打開、關閉、讀寫頁、讀寫緩沖等操作,並完成緩沖區管理、內外存交換和外存管理等任務
  • 操作系統
  • DB

2、DBMS的進程結構

  1. 一個應用進程對應一個DBMS核心進程
  2. 單進程多線程結構
    • 系統只創建一個DBMS進程
    • 在該進程中:有常駐的公共服務線程、用戶線程
    • 各個線程能在邏輯上並行執行,共享DBMS的資源

3、DBMS與DBS的結構

  1. 分時系統環境下的集中式數據庫系統結構
  2. 網絡環境下的客戶/服務器結構(C/S)
  3. 物理上分布、邏輯上集中的分布式數據庫結構
  4. 三層結構(B/S結構): Browser ---> web 服務器 ---> 數據庫服務器

4、RDBMS功能的實現技術

一、必備的用戶接口 --> SQL/非過程化數據庫語言

  • 交互式SQL:不能編程,訪問為主(DDL、QL、DML、DCL)
  • 嵌入式SQL:將SQL嵌入其它程序設計語言中,可處理數據

二、數據目錄(數據字典或系統目錄)

有關數據庫中數據的定義和描述信息是 ---> 元數據

元數據組成的若干表 --> 數據目錄

數據目錄的內容:

  • 基表、視圖的定義
  • 存取路徑(索引、散列)
  • 用於查詢優化的統計數據
  • 數據目錄的定義和描述等

數據目錄作用、定義方法、使用范圍:

  • 數據目錄對DBMS的運行必不可少,DBMS頻繁訪問
  • 數據目錄本身不能用SQL語句定義,由系統在初始化生成,由DBMS維護
  • DBMS一般不允許用戶對之更新,只允許受控查詢
  • 數據目錄中的基表的定義被刪除,表中數據不能用
  • 數據目錄未定義,任何SQL語句都無法執行

三、查詢處理與優化

  1. 數據庫的存儲結構
    • 數據庫的存儲介質:多級
    • 記錄的存儲結構
    • 文件結構與存取路徑:堆、散列、索引:動態(B+樹)、靜態(主索引,次索引)
  2. 查詢優化的途徑(可綜合運用)
    • 代數優化:改變基本操作的次序
    • 依賴於存取路徑的優化:結合存取路徑(順序掃描、索引、簇集)的分析考慮各操作的執行策略及選擇原則
    • 規則優化:僅根據啟發式規則,選擇執行的策略(先做選擇、投影,后做連接操作等)
    • 代價估算優化

四、並發控制

1)事務的概念

  • DBMS的最小執行單位,含有若干有序的操作

  • 遵守ACID准則:原子性、一致性、隔離性、持久性

  • 結束的方式:提交成功/失敗 或 人為的故障

  • 事務的定義和划分:(a)沒有顯式定義,則由DBMS按缺省規定自動划分事務

    ​ (b)用SQL語句顯式控制一個事務的開始和終止

  1. 並發的概念

​ 並發是不同用戶(事務)同時訪問同一數據的事件,是不同事務在時間上的交叉執行

3)事務並發執行可能帶來的問題

​ 不加控制 --> 三種沖突 -- > 三個問題 -- > 數據不一致

4)事務管理的任務 --> 保證事務的正常執行

  • 滿足ACID准則
  • 在系統故障時應滿足 --> 數據庫恢復
  • 在單事務執行時滿足
  • 在多事務並發執行時滿足 -- > 並發控制

5)並發控制的正確性准則

  • 調度的沖突可串行化(目前DBMS普遍采用)

  • 采用機制:事務在操作前先對數據對象加鎖

    ​ 加鎖時必須遵守的規則 -- > 加鎖協議(相容矩陣)

    ​ 幾種有代表性的加鎖協議:S鎖(共享鎖)、X鎖(排它鎖)、U鎖(更新鎖)

    S鎖:多個事務可封鎖一個共享頁;任何事務都不能修改該頁; 通常是該頁被讀取完畢,S鎖立即被釋放

    X鎖:僅允許一個事務封鎖此頁;其他任何事務必須等到X鎖被釋放才能對該頁進行訪問;X鎖一直到事務結束才能被釋放

    U鎖:用來預定要對此頁施加X鎖,它允許其他事務讀,但不允許再施加U鎖或X鎖;當被讀取的頁將要被更新時,則升級為X鎖;U鎖一直到事務結束時才能被釋放

五、數據庫恢復

  1. ​ 故障的概念

    起因:DBS 硬件、軟件故障

    現象:出現差錯

    后果:導致系統失效、數據丟失

    DBS 的措施:增強系統可靠性

    ​ 檢查差錯,將數據庫恢復到某個一致狀態

  2. ​ 3種恢復技術

    • 僅使用后備副本(脫機、增量轉儲、恢復用最近后備副本)
    • 使用后備副本和日志文件(運行記錄)
    • 利用多個副本

六、E-R數據模型與E-R圖(概念設計)

用E-R數據模型對現實世界抽象的結果用E-R圖表示

三個抽象概念:實體、屬性、聯系

實體(矩形框):客觀存在的且可以相互區分的事物

​ 實體集:具有相同性質的實體的集合

聯系(菱形框):實體集之間的相互關系(抽象表示)

​ 聯系的元數:與一個聯系有關的實體集的個數

​ 聯系的類型:1:1、1:n、m:n

屬性(橢圓):實體或聯系所具有的特征

​ 實體鍵(下畫線):能夠唯一標識實體集中某一實體的屬性或屬性組

七、邏輯設計

任務:

  • 將概念結構轉換為某個具體的DBMS所支持的邏輯結構
  • 形成合理的全局邏輯結構(基表),並設計出外模式(視圖)
  • 對邏輯結構進行適當的調整和優化,使之在功能、完整性約束、可擴充性上滿足用戶需求

主要步驟:

概念設計結果 -- > 初始關系模式(E-R圖轉換成關系模式)

  1. 實體集

    實體集 -- > 關系模式

    實體屬性 -- > 關系模式的屬性 -- > 修改RDBMS不支持的類型

    實體鍵 -- > 關系模式的鍵

  2. 聯系

    m : n 的聯系集 -- > 用聯系集的屬性和兩個實體集的鍵單獨構成一個關系、新關系的鍵由兩個實體集的鍵組合 而成、每個實體鍵是一個外鍵

    1 :n 的聯系集 -- > 聯系集的屬性歸入 n 方關系模式中,並引用 1 方關系中的鍵,形成外鍵

    1 : 1 的聯系集 -- > 聯系集的屬性歸入兩個關系模式的任一個之中,並引入另一個關系的鍵,形成外鍵

    多元聯系集 -- > 聯系集的屬性與各關系模式的鍵構成新關系

  3. 將具有相同實體鍵的關系模式合並為一個關系模式

實例:

基於 E-R 圖做邏輯設計,寫出關系模式(單下划線表示主鍵,波浪線表示外鍵(此處用斜體表示 ,別問,問就是不知道咋表示波浪線))

兩個實體對應兩個模式,M : N聯系對應一個模式

讀者(借書證號,姓名,單位,職稱)

圖書(圖書編號,分類號,書名,作者,出版單位,單價)

借閱(借書證號,圖書編號,借閱日期)

八、函數依賴和關系模式的規范化

函數依賴

  1. 屬性之間的約束關系 --> 數據依賴 --> 函數依賴

    ​ --> 多值依賴

    ​ -- > 連接依賴

  2. 函數依賴 -- > 一個或一組屬性的值可以決定其它屬性的值,是最基本的數據依賴

  3. 函數依賴的形式化定義 (X -> Y,表示 Y 函數依賴於 X)

  4. 函數依賴成立的條件

    關系的任一可能指都滿足(不僅是當前值)

  5. 平凡函數依賴與非平凡函數依賴

    一個函數依賴 X -> Y 如果滿足 Y ⊈ X,則為非平凡函數依賴,否則稱之為平凡函數依賴

  6. 完全函數依賴與部分函數依賴

    若 Y 函數依賴於 X,但不依賴於 X 的任何子句 X',則稱 Y 完全函數依賴於 X,否則稱 Y 部分函數依賴於 X

  7. 傳遞函數依賴

    若關系的三個屬性子集 X、Y、Z 之間有:

    \[X -> Y,Y⇏X,Y->Z \]

    則稱 Z 傳遞函數依賴於 X

  8. 邏輯蘊涵

    對一個關系模式存在的多個函數依賴,可以通過推理,從一組已知的函數依賴導出另一組函數依賴,兩個函數依賴集之間的這種關系稱為邏輯蘊涵

  9. 閉包

    所有被一個已知函數依賴集 F 邏輯蘊涵的那些函數依賴的集合為 F 的閉包

  10. Armstrong 公理

    • 自反律
    • 擴展律
    • 傳遞律

候選鍵

求屬性集閉包算法可用於推導候選鍵

定義:

在關系模式R(U,F)中,若 X ⊆ U,Y ⊆ X, 且滿足 X -> U, Y⇏U

則稱 X 為 R 的候選鍵

方法:

  • 若屬性 A 僅出現在所有函數依賴的

    則它一定不包含在任何候選鍵中

  • 若屬性 A 僅出現在所有函數依賴的

    則它一定包含在某個候選鍵中

  • 若屬性 A 既出現在函數依賴的 部,又出現在 部,則它可能包含在候選鍵中

  • 在上述基礎上求屬性集閉包

未出現函數依賴集中的屬性一定是主屬性

關系模式的規范化

  1. 規范化 -- 使關系模式滿足某種條件

  2. 范式NF(Normal Form) -- 關系模式滿足的條件

  3. 有多級范式,級別越高,條件越嚴格(共5級,1NF、2NF、3NF(BCNF) -- 模式設計、4NF、5NF -- 理論研究)

    • 第一范式(1NF)

      屬性都是原子的關系模式滿足第一范式

      可記為 R ∈ 1NF(通常自動滿足)

    • 第二范式(2NF)

      如果關系模式 R ∈ 1NF,且它的任一非主屬性都完全函數依賴於任一候選鍵,則稱 R 滿足第二范式

      記為 R ∈ 2NF

    • 第三范式(3NF)

      如果關系模式 R ∈ 2NF,且每一個非主屬性不傳遞依賴於任一鍵

      -> 各非主屬性既不部分依賴也不傳遞依賴於鍵,記為 R ∈ 3NF

    • BCNF(Boyce-Codd范式)-- 改進的3NF

      如果關系模式的所有非平凡函數依賴的決定子都含有鍵,記為 R ∈ BCNF

      滿足 BCNF 的關系可避免更新異常和數據冗余

      若 R ∈ BCNF,則 R ∈ 3NF

  4. 關系模式的分解

    • 模式分解
    • 分解目的:使關系達到某級范式
    • 分解准則:無損、保持依賴


免責聲明!

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



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