自考04735《數(shù)據(jù)庫系統(tǒng)原理》筆記.ppt
《自考04735《數(shù)據(jù)庫系統(tǒng)原理》筆記.ppt》由會員分享,可在線閱讀,更多相關(guān)《自考04735《數(shù)據(jù)庫系統(tǒng)原理》筆記.ppt(258頁珍藏版)》請在裝配圖網(wǎng)上搜索。
自考04735 數(shù)據(jù)庫系統(tǒng)原理 筆記 原創(chuàng) 雷神2018 08 20 第一部分課程說明 數(shù)據(jù)庫系統(tǒng)原理 課程學(xué)習(xí)目標 數(shù)據(jù)庫是計算機科學(xué)的一個重要研究領(lǐng)域 是專門研究數(shù)據(jù)處理 數(shù)據(jù)管理和數(shù)據(jù)分析的技術(shù) 從20世紀60年代末開始 經(jīng)過40多年的發(fā)展 已成為計算機軟件學(xué)科的一個重要分支 數(shù)據(jù)庫系統(tǒng)原理 課程的主要目的 使同學(xué)們了解數(shù)據(jù)庫的基本原理 掌握數(shù)據(jù)庫技術(shù)的基本方法和應(yīng)用技術(shù) 能夠有效的使用現(xiàn)有的數(shù)據(jù)庫管理系統(tǒng) 掌握數(shù)據(jù)庫結(jié)構(gòu)的設(shè)計和數(shù)據(jù)庫應(yīng)用系統(tǒng)的開發(fā)方式 同時能夠利用前端開發(fā)工具完成企業(yè)管理信息系統(tǒng)的開發(fā) 數(shù)據(jù)庫系統(tǒng)原理 課程地位圖示 B S結(jié)構(gòu) C S結(jié)構(gòu) 瀏覽器端 HTML CSS JavaScript VBScript服務(wù)器端 ASP NET PHP JSP C S結(jié)構(gòu) VB VC VC Delphi Java NET系列 數(shù)據(jù)庫支持 SQLServer Oracle Sybase MySQL Informix Access 兩大語法體系 Basic系 VB VBScript VBAC系 Java JavaScript C C 參考教材介紹 自學(xué)教材 數(shù)據(jù)庫系統(tǒng)原理 全國高等教育自學(xué)考試指導(dǎo)委員會組編 丁寶康主編 經(jīng)濟科學(xué)出版社2007年版 本教材共分為9章 詳細介紹了數(shù)據(jù)庫系統(tǒng)的基本原理 方法和應(yīng)用技術(shù) 內(nèi)容包括 數(shù)據(jù)庫系統(tǒng)基本概念 第一章 數(shù)據(jù)庫的設(shè)計和ER模型 第二章 關(guān)系模式設(shè)計理論 第三章 關(guān)系運算 第四章 SQL語言 第五章 數(shù)據(jù)庫管理 第六章 SQLServer2000簡介及應(yīng)用 第七章 PowerBuilder9 0簡介及應(yīng)用 第八章 數(shù)據(jù)庫的技術(shù)的發(fā)展 第九章 第二部分內(nèi)容串講 我們分章節(jié)進行串講 在串講每一章前我把本章的考核的目標和重點 難點做簡要說明 第一章數(shù)據(jù)庫基礎(chǔ)知識 學(xué)習(xí)目的與要求 本章屬于基礎(chǔ)知識 主要是對一些概念的理解和記憶 沒有難點 相對的重點是數(shù)據(jù)模型的四個層次 數(shù)據(jù)庫管理系統(tǒng)的功能 數(shù)據(jù)庫系統(tǒng)的全局結(jié)構(gòu) 考核知識點與考核要求 1 1數(shù)據(jù)管理技術(shù)的發(fā)展階段 識記 1 2數(shù)據(jù)描述的術(shù)語 領(lǐng)會 1 3數(shù)據(jù)抽象的級別 領(lǐng)會 1 4數(shù)據(jù)庫管理系統(tǒng) DBMS 領(lǐng)會 1 5數(shù)據(jù)庫系統(tǒng) DBS 領(lǐng)會 1 1數(shù)據(jù)管理技術(shù)的發(fā)展 幾個數(shù)據(jù)庫的基本術(shù)語 數(shù)據(jù) 描述事物的符號記錄數(shù)據(jù)處理 是指從某些已知的數(shù)據(jù)出發(fā) 推導(dǎo)加工出一些新的數(shù)據(jù) 這些新的數(shù)據(jù)又表示了新的信息 數(shù)據(jù)管理 是指數(shù)據(jù)的收集 整理 組織 存儲 維護 檢索 傳送等操作 這部分操作是數(shù)據(jù)處理業(yè)務(wù)的基本環(huán)節(jié) 而且是任何數(shù)據(jù)處理業(yè)務(wù)中必不可少的共有部分 數(shù)據(jù)管理技術(shù) 對數(shù)據(jù)的收集 整理 組織 存儲 維護 檢索 傳送等操作 基本目的就是從大量的 雜亂無章的 難以理解的數(shù)據(jù)中篩選出有意義的數(shù)據(jù) 數(shù)據(jù)處理是與數(shù)據(jù)管理相聯(lián)系的 數(shù)據(jù)管理技術(shù)的優(yōu)劣 將直接影響數(shù)據(jù)處理的效率 1 1數(shù)據(jù)管理技術(shù)的發(fā)展 1 人工管理階段 20世紀50年代中期以前 數(shù)據(jù)不保存在機器中 沒有專用軟件對數(shù)據(jù)進行管理 只有程序的概念 沒有文件的概念 數(shù)據(jù)面向程序 2 文件系統(tǒng)階段特點與缺陷 20世紀50年代后期至60年代中期 數(shù)據(jù)可長期保存在磁盤上 數(shù)據(jù)的邏輯結(jié)構(gòu)與物理結(jié)構(gòu)有了區(qū)別 文件組織呈現(xiàn)多樣化 數(shù)據(jù)不再屬于某個特定程序 可以重復(fù)使用 對數(shù)據(jù)的操作以記錄為單位 文件系統(tǒng)三個缺陷 數(shù)據(jù)冗余性 數(shù)據(jù)不一致性 數(shù)據(jù)聯(lián)系弱 3 數(shù)據(jù)庫階段 20世紀60年代后 至今 數(shù)據(jù)管理技術(shù)進入數(shù)據(jù)庫階段的標志是20世紀60年代末三件大事 1968年美國IBM公司推出層次模型的IMS系統(tǒng) 1969年美國CODASYL組織發(fā)布了DBTG報告 總結(jié)了當時各式各樣的數(shù)據(jù)庫 提出網(wǎng)狀模型 爾后于1971年4月正式通過 1970年美國IBM公司的E F Codd連續(xù)發(fā)表論文 提出關(guān)系模型 奠定了關(guān)系數(shù)據(jù)庫的理論基礎(chǔ) 數(shù)據(jù)庫管理階段特點 1 采用數(shù)據(jù)模型表示復(fù)雜的數(shù)據(jù)結(jié)構(gòu) 2 有較高的數(shù)據(jù)獨立性 3 數(shù)據(jù)庫系統(tǒng)為用戶提供了方便的用戶接口 4 數(shù)據(jù)庫系統(tǒng)提供以下四個方面的數(shù)據(jù)控制功能 數(shù)據(jù)庫的恢復(fù) 數(shù)據(jù)庫的并發(fā)控制 數(shù)據(jù)庫的完整性 數(shù)據(jù)庫的安全性 5 增加了系統(tǒng)的靈活性 增加了系統(tǒng)的靈活性對數(shù)據(jù)的操作不一定以記錄為單位 可以以數(shù)據(jù)項為單位 數(shù)據(jù)庫技術(shù)中的四個名詞 DB DBMS DBS 數(shù)據(jù)庫技術(shù) 其概念是不同的 要分清 DB 數(shù)據(jù)庫 Database 長期存儲在計算機內(nèi) 有組織的 統(tǒng)一管理的相關(guān)數(shù)據(jù)的集合 DBMS 數(shù)據(jù)庫管理系統(tǒng) DatabaseManagementSystem DBMS是位于用戶與操作系統(tǒng)之間的一層數(shù)據(jù)管理軟件 為用戶或應(yīng)用程序提供訪問DB的方法 包括DB的建立 查詢 更新及各種數(shù)據(jù)控制 DBMS總是基于某種數(shù)據(jù)模型 可以分為層次型 網(wǎng)狀型 關(guān)系型 面向?qū)ο笮虳BMS DBS 數(shù)據(jù)庫系統(tǒng) DatabaseSystem DBS是實現(xiàn)有組織地 動態(tài)地存儲大量關(guān)聯(lián)數(shù)據(jù) 方便多用戶訪問的計算機軟件 硬件和數(shù)據(jù)資源組成的系統(tǒng) 即采用了數(shù)據(jù)庫技術(shù)的計算機系統(tǒng) 數(shù)據(jù)庫技術(shù) 是一門研究數(shù)據(jù)庫結(jié)構(gòu) 存儲 管理和使用的一門軟件學(xué)科 4 高級數(shù)據(jù)庫階段 面向?qū)ο蟮母拍罱?開放數(shù)據(jù)庫互連技術(shù) 1 2數(shù)據(jù)描述 在數(shù)據(jù)處理中 數(shù)據(jù)描述將涉及不同的范疇 從事物的特性到計算機中的具體表示 數(shù)據(jù)描述經(jīng)歷了三個階段 概念設(shè)計 邏輯設(shè)計和物理設(shè)計 1 概念設(shè)計中的的數(shù)據(jù)描述 實體 實體集 屬性 實體標識符2 邏輯設(shè)計中的數(shù)據(jù)描述 字段 記錄 文件 關(guān)鍵碼 3 物理設(shè)計中的數(shù)據(jù)描述 物理存儲介質(zhì)層次 高速緩沖存儲器 主存儲器 快擦寫存儲器 磁盤存儲器 光盤存儲器 磁帶物理存儲中的數(shù)據(jù)描述位 字節(jié) 字 塊 桶和卷 4 數(shù)據(jù)聯(lián)系的描述 聯(lián)系及元數(shù)定義 二元聯(lián)系有以下三種類型 1 1聯(lián)系 如果實體集E1中的每個實體最多只能和實體集E2中的一個實體有聯(lián)系 反之亦然 好么實體集E1對E2的聯(lián)系稱為 一對一聯(lián)系 記為 1 1 1 N聯(lián)系 如果實體集E1中每個實體與實體集E2中任意個 零個或多個 實體有聯(lián)系 而E2中每個實體至多和E1中的一個實體有聯(lián)系 那么E1對E2的聯(lián)系是 一對多聯(lián)系 記為 1 N M N聯(lián)系 如果實體集E1中每個實體與實體集E2中任意個 零個或多個 實體有聯(lián)系 反之亦然 那么E1對E2的聯(lián)系是 多對多聯(lián)系 記為 M N 1 3數(shù)據(jù)抽象的級別 1 數(shù)據(jù)抽象的過程根據(jù)抽象的級別定義了四種模型 概念數(shù)據(jù)模型 邏輯數(shù)據(jù)模型 外部數(shù)據(jù)模型 內(nèi)部數(shù)據(jù)模型 2 概念模型 四種模型中 概念模型的抽象級別最高 概念模型的特點 p12 3 邏輯模型邏輯模型的特點 p13 1 4 邏輯模型的分類 層次模型 網(wǎng)狀模型 關(guān)系模型三種邏輯數(shù)據(jù)模型的比較 如P17圖 4 外部模型外部模型的特點 p17 從整個系統(tǒng)考察 外部模型的優(yōu)點 5 內(nèi)部模型是數(shù)據(jù)庫最底的抽象 它描述數(shù)據(jù)在磁盤或磁帶上的存儲方式 存取設(shè)備和存取方法 6 三層模式和兩級映象三層模式體系結(jié)構(gòu) 外模式 是用戶與數(shù)據(jù)庫系統(tǒng)的接口 是用戶用到的那部分數(shù)據(jù)的描述 邏輯模式 是數(shù)據(jù)庫中全部數(shù)據(jù)的整體邏輯結(jié)構(gòu)的描述 內(nèi)模式 是數(shù)據(jù)庫在物理存儲方面的描述 定義所有內(nèi)部記錄類型 索引和文件的組織方式 以及數(shù)據(jù)控制方面的細節(jié) 兩級映象外模式 邏輯模式映象 用于定義概念模式和內(nèi)模式之間的對應(yīng)性 一般在內(nèi)模式中描述 邏輯模式 內(nèi)模式映象 用于定義外模式和概念模式間的對應(yīng)性 一般在外模式中描述 7 高度的數(shù)據(jù)獨立性什么叫數(shù)據(jù)獨立性 是指應(yīng)用程序和數(shù)據(jù)庫的數(shù)據(jù)結(jié)構(gòu)之間相互獨立 不受影響 在修改數(shù)據(jù)結(jié)構(gòu)時 盡可能不修改應(yīng)用程序 則稱系統(tǒng)達到了數(shù)據(jù)獨立性目標 數(shù)據(jù)獨立性分為物理數(shù)據(jù)獨立性和邏輯數(shù)據(jù)獨立性 物理數(shù)據(jù)獨立性 修改內(nèi)模式時盡量不影響概念模式及外模式 則達到物理數(shù)據(jù)獨立性 邏輯數(shù)據(jù)獨立性 修改概念模式時盡量不影響外模式和應(yīng)用程序 1 4數(shù)據(jù)庫管理系統(tǒng) DBMS 1 DBMS的目標與任務(wù) 數(shù)據(jù)庫管理系統(tǒng)的主要任務(wù)是完成用戶對數(shù)據(jù)庫的存取請求 即檢索 插入 更新或刪除等操作 DBMS的目標 用戶界面友好 功能完善 結(jié)構(gòu)清晰 高效率 開放性2 DBMS的工作模式 p20圖 3 DBMS的主要功能 數(shù)據(jù)庫的定義功能 數(shù)據(jù)庫的操縱功能 數(shù)據(jù)庫的保護功能 數(shù)據(jù)庫恢復(fù) 數(shù)據(jù)庫并發(fā)控制 數(shù)據(jù)庫完整性和數(shù)據(jù)庫安全性 數(shù)據(jù)庫的維護功能 數(shù)據(jù)字典 1 5數(shù)據(jù)庫系統(tǒng) DBS 1 DBS由四部分組成 數(shù)據(jù)庫 硬件 軟件 數(shù)據(jù)庫管理員 2 數(shù)據(jù)庫管理員定義及職責(zé) 素質(zhì) 職責(zé) 3 DBS的全局結(jié)構(gòu)及DBS的效益 數(shù)據(jù)庫用戶 界面 DBMS 磁盤 DBS的效益 本章結(jié)束 第二章數(shù)據(jù)庫設(shè)計和ER模型 學(xué)習(xí)目的與要求 本章總的目的要求是了解和掌握數(shù)據(jù)庫應(yīng)用系統(tǒng)設(shè)計的全過程 首先掌握ER模型和關(guān)系模型的基本概念 然后掌握概念設(shè)計中ER模型的設(shè)計方法 邏輯設(shè)計中ER模型向關(guān)系模型轉(zhuǎn)換方法 考核知識點與考核要求2 1數(shù)據(jù)庫系統(tǒng)生存期 領(lǐng)會 2 2ER模型的基本概念 綜合應(yīng)用 2 3關(guān)系模型的基本概念 綜合應(yīng)用 2 4ER模型到關(guān)系模型的轉(zhuǎn)換規(guī)則 綜合應(yīng)用 2 5ER模型實例分析 簡單應(yīng)用 2 6增強ER模型 簡單應(yīng)用 從軟件生存期談起軟件生存期 是指從軟件的規(guī)劃 研制 實現(xiàn) 投入運行后的維護 直到它被新的軟件所取代而停止使用的整個期間 它包括六個階段 規(guī)需設(shè)編試運維 1 規(guī)劃階段 2 需求分析階段 3 設(shè)計階段 4 程序編制階段 5 調(diào)試階段 6 運行維護階段 2 1數(shù)據(jù)系統(tǒng)生存期 1 什么叫數(shù)據(jù)庫系統(tǒng)生存期 我們把數(shù)據(jù)庫應(yīng)用系統(tǒng)從開始規(guī)劃 設(shè)計 實現(xiàn) 維護到最后被新的系統(tǒng)取代而停止使用的整個期間 稱為數(shù)據(jù)庫系統(tǒng)生存期 2 這個生存期一般可劃分成以下七個階段 規(guī)劃 需求分析 概念設(shè)計 邏輯設(shè)計 物理設(shè)計 實現(xiàn) 運行維護 2ER模型的基本概念 1 ER模型的基本元素實體 聯(lián)系和屬性2 屬性的分類 簡單屬性和復(fù)合屬性 單值屬性和多值屬性 存儲屬性和派生屬性 3 聯(lián)系的設(shè)計4 ER模型的操作 分裂 合并和增刪 5 采用ER模型的數(shù)據(jù)庫概念設(shè)計步驟采用ER方法進行數(shù)據(jù)庫概念設(shè)計分成三步進行 首先設(shè)計局部ER模式然后把各局部ER模式綜合成全局ER模式最后對全局ER模式進行優(yōu)化 2 3關(guān)系模型的基本概念 關(guān)系模型定義 用二維表格結(jié)構(gòu)表示實體集 外鍵表示實體間聯(lián)系的數(shù)據(jù)模型稱為關(guān)系模型 2 基本術(shù)語有 字段 屬性 字段值 屬性值 記錄 元組 二維表格 元組集合 關(guān)系或?qū)嵗?在這里 括號中的表述為關(guān)系模型中的術(shù)語 它與表格中術(shù)語可以一一對應(yīng) 還有 關(guān)系中屬性個數(shù)稱為元數(shù) 元組個數(shù)為基數(shù) 3 鍵 由一個或幾個屬性組成 注意鍵不一定是唯一的一個屬性 1 超鍵 在關(guān)系中能唯一標識元組的屬性集稱為關(guān)系模式的超鍵 注意 超鍵也是一個屬性集 不一定只是一個屬性 2 候選鍵 不含有多余屬性的超鍵稱為候選鍵 3 主鍵 用戶選作元組標識的一個候選鍵為主鍵 4 外鍵 某個關(guān)系的主鍵相應(yīng)的屬性在另一關(guān)系中出現(xiàn) 此時該主鍵在就是另一關(guān)系的外鍵 如有兩個關(guān)系S和SC 其中S 是關(guān)系S的主鍵 相應(yīng)的屬性S 在關(guān)系SC中也出現(xiàn) 此時S 就是關(guān)系SC的外鍵 關(guān)系的定義和性質(zhì) 關(guān)系定義 關(guān)系是一個屬性數(shù)目相同的元組的集合 關(guān)系性質(zhì) p53 5 三類完整性規(guī)則 實體完整性規(guī)則 要求關(guān)系中組成主鍵的屬性上不能有空值 參照完整性規(guī)則 要求不引用不存在的實體 用戶定義完整性規(guī)則 由具體應(yīng)用環(huán)境決定 系統(tǒng)提供定義和檢驗這類完整性的機制 2 4E R模型向關(guān)系模型的轉(zhuǎn)換 E R模型可以向現(xiàn)有的各種數(shù)據(jù)庫模型轉(zhuǎn)換 對不同的數(shù)據(jù)庫模型有不同的轉(zhuǎn)換規(guī)則 這里只討論E R模型向關(guān)系模型的轉(zhuǎn)換方法 1 E R模型向關(guān)系模型的轉(zhuǎn)換規(guī)則 1 實體類型的轉(zhuǎn)換將每個實體類型轉(zhuǎn)換成一個關(guān)系模式 實體的屬性即為關(guān)系的屬性 實體標識符即為關(guān)系的鍵 2 聯(lián)系類型的轉(zhuǎn)換1 實體間的聯(lián)系是1 1可以在兩個實體類型轉(zhuǎn)換成兩個關(guān)系模式中的任意一個關(guān)系模式的屬性中加入另一個關(guān)系模式的鍵和聯(lián)系類型的屬性 系關(guān)系模式 校名 地址 電話 系主任名 任職年月 系主任關(guān)系模式 姓名 性別 年齡 職稱 職稱 1 1 系主任 系 姓名 性別 年齡 校名 地址 任職年月 主管 電話 系主任關(guān)系模式 姓名 性別 年齡 職稱 學(xué)校名 任職年月 系關(guān)系模式 校名 地址 電話 N 1 工號 年齡 職工 車間 姓名 性別 車間號 車間名 電話 聘用 聘期 2 如實體間的聯(lián)系是1 N則在N端實體類型轉(zhuǎn)換成的關(guān)系模式中加入1端實體類型轉(zhuǎn)換成的關(guān)系模式的鍵和聯(lián)系類型的屬性 車間關(guān)系模式 車間號 車間名 電話 職工關(guān)系模式 工號 姓名 性別 年齡 車間號 聘期 3 如實體間的聯(lián)系是M N則將聯(lián)系類型也轉(zhuǎn)換成關(guān)系模式 其屬性為兩端實體類型的鍵加上聯(lián)系類型的屬性 而鍵為兩端實體鍵的組合 學(xué)生關(guān)系模式S S SNAME AGE SEX 課程關(guān)系模式C C CNAME TEACHE R GRADE SC M N S S SNAME AGE SEX C C CNAME TEACHE R 學(xué)生課程關(guān)系模式SC S C GRADE 以上各轉(zhuǎn)換規(guī)則 給出了一般情況下E R模型向關(guān)系模型的轉(zhuǎn)換方法 但在實際應(yīng)用中往往還需要根具實際情況進行具體處理 下面以圖書借閱系統(tǒng)的E R模型轉(zhuǎn)換為關(guān)系模型為例 借期 借閱 M N 讀者 編號 姓名 讀者類型 已借數(shù)量 圖書 編號 書名 出版社 還期 該例中 由于允許同一本書在不同的時間借給多個讀者 特別是一個讀者在不同的時間可以借同一本書 因而 在多對多聯(lián)系 借閱 轉(zhuǎn)換為關(guān)系模式時 僅有讀者的編號和圖書的編號是不能構(gòu)成碼的 例如 0406010 F33 33 2006 10 10 10 10 2007 02 20 3 00 0406010 F33 33 2007 5 26 4 00 NULL 借期 借閱 M N 讀者 編號 姓名 讀者類型 已借數(shù)量 圖書 編號 書名 出版社 還期 讀者關(guān)系模式讀者 編號 書名 出版社 出版日期 定價 讀者圖書關(guān)系模式借閱 讀者編號 圖書編號 借期 還期 圖書關(guān)系模式圖書 編號 姓名 讀者類型 已借數(shù)量 說明 按照上述介紹的轉(zhuǎn)換方法得到的關(guān)系模型不一定是最好的 實際應(yīng)用中 往往還要對得到的關(guān)系模型進行規(guī)范化 2 5和2 6 實例分析 同學(xué)們多看書 1 庫存管理系統(tǒng)的ER模型及轉(zhuǎn)換2 人事管理信息系統(tǒng)的ER模型3 住院管理信息系統(tǒng)的ER模型4 公司車隊信息系統(tǒng)的ER模型 本章結(jié)束 第三章關(guān)系模式設(shè)計理論 學(xué)習(xí)目的與要求 本章特點是理論性較強 學(xué)習(xí)者應(yīng)從概念著手 搞清概念間的聯(lián)系和作用 本章總的要求是 了解關(guān)系數(shù)據(jù)庫規(guī)范化理論及其在數(shù)據(jù)庫設(shè)計中的作用 本章的重點是函數(shù)依賴 無損分解 保持依賴和范式 掌握這些概念并能運用它們分析模式分解的特點 考核知識點與考核要求 3 1關(guān)系模式的設(shè)計準則 簡單應(yīng)用 3 2函數(shù)依賴 FD 簡單應(yīng)用 3 3關(guān)系模式的分解特性 簡單應(yīng)用 3 4范式1NF 2NF 3NF 簡單應(yīng)用 BCNF 領(lǐng)會 分解成BCNF模式集的 分解算法 識記 分解成3NF模式集的 合成算法 綜合應(yīng)用 模式設(shè)計方法小結(jié) 領(lǐng)會 3 5多值依賴和第四范式 識記 3 1關(guān)系模式的設(shè)計準則 1 關(guān)系模式的冗余和異常問題 數(shù)據(jù)冗余 操作異常 修改異常 插入異常和刪除異常 2 關(guān)系模式的非形式化設(shè)計準則 關(guān)系模式的設(shè)計應(yīng)盡可能只包含有直接聯(lián)系的屬性 不包括有間接聯(lián)系的屬性 關(guān)系模式的設(shè)計應(yīng)盡可能使得相應(yīng)關(guān)系中不出現(xiàn)插入 刪除和修改異常 關(guān)系模式的設(shè)計應(yīng)盡可能使得相應(yīng)關(guān)系中避免放置經(jīng)常為空值的屬性 關(guān)系模式的設(shè)計應(yīng)盡可能使得關(guān)系的等值連接在主鍵和外鍵的屬性上進行 并且保證連接以后不會生成額外的元組 3 2函數(shù)依賴 1 函數(shù)依賴的定義設(shè)有關(guān)系模式R A1 A2 An 或簡記為R U X Y是U的子集 r是R的任一具體關(guān)系 如果對r的任意兩個元組t1 t2 由t1 X t2 X 導(dǎo)致t1 Y t2 Y 則稱X函數(shù)決定Y 或Y函數(shù)依賴于X 記為X Y X Y為模式R的一個函數(shù)依賴 這個定義可以這樣理解 有一張設(shè)計好的二維表 X Y是表的某些列 可以是一列 也可以是多列 若在表中的第t1行 和第t2行上的X值相等 那么必有t1行和t2行上的Y值也相等 這就是說Y函數(shù)依賴于X 2 函數(shù)依賴的邏輯蘊涵設(shè)F是關(guān)系模式R的一個函數(shù)依賴集 X Y是R的屬性子集 如果從F中的函數(shù)依賴能夠推出X Y 則稱F邏輯蘊涵X Y 記為F X Y 而函數(shù)依賴的閉包F 是指被F邏輯蘊涵的函數(shù)依賴的全體構(gòu)成的集合 3 鍵和FD的關(guān)系鍵是唯一標識實體的屬性集 對于鍵和函數(shù)依賴的關(guān)系 有兩個條件 設(shè)關(guān)系模式R A1 A2 An F是R上的函數(shù)依賴集 X是R的一個子集 1 X A1A2 An F 它的意思是X能夠決定唯一的一個元組 2 不存在X的真子集Y 使得Y也能決定唯一的一個元組 則X就是R的一個候選鍵 它的意思是X能決定唯一的一個元組但又沒有多余的屬性集 包含在任何一個候選鍵中的屬性稱為主屬性 不包含在任何鍵中的屬性為非主屬性 非鍵屬性 注意 主屬性應(yīng)當包含在候選鍵中 4 函數(shù)依賴 FD 的推理規(guī)則前面我們舉的例子中是以實際經(jīng)驗來確定一個函數(shù)依賴的邏輯蘊涵 但是我們需要一個推理規(guī)則才能完全確定F或F 的所有函數(shù)依賴 設(shè)有關(guān)系模式R U X Y Z W均是U的子集 F是R上只涉及到U中屬性的函數(shù)依賴集 推理規(guī)則如下 A1 自反性 如果YXU 則X Y在R上成立 A2 增廣性 如果X Y為F所蘊涵 ZU 則XZ YZ在R上成立 XZ表示X Z 下同 A3 傳遞性 如果X Y和Y Z在R上成立 則X Z在R上成立 A4 合并性 如果X Y和X Z成立 那么X YZ成立 A6 分解性 如果X Y和ZY成立 那么X Z成立 A5 偽傳性 如果X Y和WY Z成立 那么WX Z成立 A7 復(fù)合性 X Y W Z XW YZ A8 通用一致性定理 X Y W Z x X Y YZ 5 函數(shù)依賴推理規(guī)則的完備性函數(shù)依賴推理規(guī)則系統(tǒng) 自反性 增廣性和傳遞性 是完備的 由推理規(guī)則的完備性可得到兩個重要結(jié)論 1 屬性集X 中的每個屬性A 都有X A被F邏輯蘊涵 即X 是所有由F邏輯蘊含X A的屬性A的集合 2 F 是所有利用Amstrong推理規(guī)則從F導(dǎo)出的函數(shù)依賴的集合 6 函數(shù)依賴集的等價和覆蓋在關(guān)系模式R U 上的兩個函數(shù)依賴集F和G 如果滿足F G 則稱F和G是等價的 稱F和G等價也稱F覆蓋G或G覆蓋F 每個函數(shù)依賴集F都可以被一個右部只有單屬性的函數(shù)依賴集G所覆蓋 如果函數(shù)依賴集合F滿足 1 F中每一個函數(shù)依賴的右部都是單屬性 2 F中的任一函數(shù)依賴X A 其F X A 是不等價的 3 F中的任一函數(shù)依賴X A Z為X的子集 F X A Z A 與F不等價 則稱F為最小函數(shù)依賴集合 如果函數(shù)依賴集F和G等價 并且G是最小集 那么稱G是F的一個最小覆蓋 這一段并不要求掌握最小集的求法 但是應(yīng)當通過其求法理解最小集的概念 3 3關(guān)系模式分解特性 1 模式分解中存在的問題模式分解就是將一個泛關(guān)系模式R分解成數(shù)據(jù)庫模式 以 代替R的過程 它不僅僅是屬性集合的分解 它是對關(guān)系模式上的函數(shù)依賴集 以及關(guān)系模式的當前值分解的具體表現(xiàn) 分解一個模式有很多方法 但是有的分解會出現(xiàn)失去函數(shù)依賴 或出現(xiàn)插入 刪除異常等情況 而有的分解則不出現(xiàn)相關(guān)問題 衡量一個分解的標準有三種 分解具有無損聯(lián)接 分解要保持函數(shù)依賴 分解既要保持依賴 又要具有無損聯(lián)接 那么什么是無損聯(lián)接呢 什么又是保持依賴 2 無損聯(lián)接的定義和性質(zhì)設(shè)R是一關(guān)系模式 分解成 R1 R2 Rk F是R上的一個函數(shù)依賴集 無損聯(lián)接就是指R中每一個滿足F的關(guān)系r 也就是一個關(guān)系實例 都有r R1 r X R2 r X R3 r 即r為它在Ri上的投影的自然聯(lián)接 最簡單的理解 也就是說 分解后的關(guān)系自然連接后完全等于分解前的關(guān)系 則這個分解相對于F是無損聯(lián)接分解 設(shè)R的分解為 R1 R2 F為R所滿足的函數(shù)依賴集 則分解 具有無損聯(lián)接性的充分必要條件是 R1 R2 R1 R2 R1 R2 R2 R1 也就是說 分解后的兩個模式的交能決定這兩個模式的差集 即R1 R2的公共屬性能夠函數(shù)決定R1或R2中的其他屬性 這樣的分解就必定是無損聯(lián)接分解 3 保持函數(shù)依賴的分解在分解過程中 要求模式分解的無損聯(lián)接是必要的 只有無損聯(lián)接分解才能保證任何一個關(guān)系能由它的那些投影進行自然聯(lián)接得到恢復(fù) 同時 分解關(guān)系模式時還應(yīng)保證關(guān)系模式的函數(shù)依賴集在分解后仍在數(shù)據(jù)庫模式中保持不變 這就是保持函數(shù)依賴的問題 也就是所有分解出的模式所滿足的函數(shù)依賴的全體應(yīng)當?shù)葍r于原模式的函數(shù)依賴集 只有這樣才能確保整個數(shù)據(jù)庫中數(shù)據(jù)的語義完整性不受破壞 3 4范式 1 1NF 2NF 3NF BCNF的定義 1NF 第一范式即關(guān)系模式中的屬性的值域中每一個值都是不可再分解的值 如果某個數(shù)據(jù)庫模式都是第一范式的 則稱該數(shù)據(jù)庫模式是屬于第一范式的數(shù)據(jù)庫模式 2NF 第二范式如果關(guān)系模式R為第一范式 并且R中每一個非主屬性完全函數(shù)依賴于R的某個候選鍵 則稱為第二范式模式 非主屬性 完全函數(shù)依賴 候選鍵三個名詞的含義 候選鍵就是指可以唯一決定關(guān)系模式R中某元組值且不含有多余屬性的屬性集 非主屬性也就是非鍵屬性 指關(guān)系模式R中不包含在任何建中的屬性 設(shè)有函數(shù)依賴W A 若存在X W 有X A成立 那么稱W A是局部依賴 否則就稱W A是完全函數(shù)依賴 在分析是否為第2范式時 應(yīng)首先確定候選鍵 然后把關(guān)系模式中的非主屬性與鍵的依賴關(guān)系進行考察 是否都為完全函數(shù)依賴 如是 則此關(guān)系模式為2NF 如果數(shù)據(jù)庫模式中每個關(guān)系模式都是2NF的 則此數(shù)據(jù)庫模式屬于2NF的數(shù)據(jù)庫模式 3NF 第三范式如果關(guān)系模式R是第二范式 且每個非主屬性都不傳遞依賴于R的候選鍵 則稱R為第三范式的模式 這里首先要了解傳遞依賴的含義 在關(guān)系模式中 如果Y X X A 且X不決定Y和A不屬于X 那么Y A是傳遞依賴 注意的是 這里要求非主屬性都不傳遞依賴于候選鍵 BCNF 這個范式和第三范式有聯(lián)系 它是3NF的改進形式 若關(guān)系模式R是第一范式 且每個屬性都不傳遞依賴于R的候選鍵 這種關(guān)系模式就是BCNF模式 縱觀四種范式 可以發(fā)現(xiàn)它們之間存在如下關(guān)系 5 分解成BCNF模式集的算法對于任一關(guān)系模式 可找到一個分解達到3NF 且具有無損聯(lián)接和保持函數(shù)依賴性 而對于BCNF分解 則可以保證無損聯(lián)接但不一定能保證保持函數(shù)依賴集 無損聯(lián)接分解成BCNF模式集的算法 1 置初值 R 2 如果 中所有關(guān)系模式都是BCNF 則轉(zhuǎn) 4 3 如果 中有一個關(guān)系模式S不是BCNF 則S中必能找到一個函數(shù)依賴集X A有X不是S的鍵 且A不屬于X 設(shè)S1 XA S2 S A 用分解S1 S2代替S 轉(zhuǎn) 2 4 分解結(jié)束 輸出 在這個過程中 重點在于 3 步 判斷哪個關(guān)系不是BCNF 并找到X和A 這里 S的判斷用BCNF的定義 而X不是S的鍵則依靠分析 6 分解成3NF模式集算法 1 如果R中的某些屬性在F的所有依賴的左邊和右邊都不出現(xiàn) 那么這些屬性可以從R中分出去 單獨構(gòu)成一個關(guān)系模式 2 如果F中有一個依賴X A有XA R 則 R 轉(zhuǎn) 4 3 對于F中每一個X A 構(gòu)成一個關(guān)系模式XA 如果F有有X A1 X A2 X An 則可以用模式XA1A2 An代替n個模式XA1 XA2 XAn 4 w分解結(jié)束 輸入 這個過程的重點是這一句 對于F中每一個X A 構(gòu)成一個關(guān)系模式XA 這使我們的分解十分容易 然后依據(jù)合并律 合并律 如果X Y和X Z成立 那么X YZ成立 將有關(guān)模式合并即得到所需3NF模式 7 模式設(shè)計方法的原則關(guān)系模式R相對于函數(shù)依賴集F分解成數(shù)據(jù)庫模式 R1 R2 Rk 一般具有下面四項特性 中每個關(guān)系模式Ri上應(yīng)具有某種范式性質(zhì) 3NF或BCNF 無損聯(lián)接性 保持函數(shù)依賴集 最小性 即 中模式個數(shù)應(yīng)最少且模式中屬性總數(shù)應(yīng)最少 一個好的模式設(shè)計方法應(yīng)符合下列三條原則 表達性分離性最小冗余性 8 多值依賴與第四范式 4NF 例 學(xué)校中某一門課程由多個教師講授 他們使用相同的一套參考書 關(guān)系模式Teaching C T B 課程C 教師T和參考書B 表5 1 用二維表表示Teaching 多值依賴與第四范式Teaching BCNF Teach具有唯一候選碼 C T B 即全碼Teaching模式中存在的問題 1 數(shù)據(jù)冗余度大 有多少名任課教師 參考書就要存儲多少次 2 插入操作復(fù)雜 當某一課程增加一名任課教師時 該課程有多少本參照書 就必須插入多少個元組 例如物理課增加一名教師劉關(guān) 需要插入兩個元組 物理 劉關(guān) 普通物理學(xué) 物理 劉關(guān) 光學(xué)原理 3 刪除操作復(fù)雜 某一門課要去掉一本參考書 該課程有多少名教師 就必須刪除多少個元組 4 修改操作復(fù)雜 某一門課要修改一本參考書 該課程有多少名教師 就必須修改多少個元組 產(chǎn)生原因存在多值依賴 1 多值依賴設(shè)R U 是一個屬性集U上的一個關(guān)系模式 X Y和Z是U的子集 并且Z U X Y 多值依賴X Y成立當且僅當對R的任一關(guān)系r r在 X Z 上的每個值對應(yīng)一組Y的值 這組值僅僅決定于X值而與Z值無關(guān) 例Teaching C T B 對于C的每一個值 T有一組值與之對應(yīng) 而不論B取何值 2 第四范式 4NF 關(guān)系模式R 1NF 如果對于R的每個非平凡多值依賴X Y Y X X都含有候選碼 則R 4NF 如果R 4NF 則R BCNF不允許有非平凡且非函數(shù)依賴的多值依賴允許的是函數(shù)依賴 是非平凡多值依賴 本章結(jié)束 第四章關(guān)系運算 學(xué)習(xí)目的與要求 本章總的要求是 深刻理解關(guān)系模型的運算理論 了解查詢優(yōu)化的意義和啟發(fā)式優(yōu)化算法 本章的重點是關(guān)系代數(shù)運算 應(yīng)熟練掌握 關(guān)系演算是本章的難點 考核知識點和考核要求4 1關(guān)系代數(shù)4 1 1關(guān)系代數(shù)的五個基本操作 并 差 笛卡兒積 投影 選擇 綜合運用 4 1 2關(guān)系代數(shù)的四個組合操作 交 連接 自然連接 除法 綜合運用 4 1 3關(guān)系代數(shù)表達式的應(yīng)用 綜合運用 4 1 4關(guān)系代數(shù)的兩個擴充操作 外連接 外部并 領(lǐng)會 4 2關(guān)系演算4 2 1元組關(guān)系演算的定義及表達式的含義 簡單應(yīng)用 4 2 2域關(guān)系演算的定義及表達式的含義 領(lǐng)會 4 2 3關(guān)系運算的安全約束和等價性 領(lǐng)會 4 3關(guān)系代數(shù)表達式的優(yōu)化 領(lǐng)會 關(guān)系模型有三個重要組成部分 數(shù)據(jù)結(jié)構(gòu) 數(shù)據(jù)操縱 數(shù)據(jù)完整性規(guī)則關(guān)系查詢語言根據(jù)其理論基礎(chǔ)的不同分成兩類 關(guān)系代數(shù)語言 關(guān)系演算語言 4 1關(guān)系代數(shù) 1 關(guān)系代數(shù)的五個基本操作 并 差 笛卡爾積 投影和選擇 并 兩個關(guān)系需有相同的關(guān)系模式 并的對象是元組 由兩個關(guān)系所有元組構(gòu)成 差 同樣 兩個關(guān)系有相同的模式 R和S的差是由屬于R但不屬于S的元組構(gòu)成的集合 笛卡兒積 對于兩個關(guān)系作運算 列 n m 列的元組的集合 元組的前n列是關(guān)系R的一個元組后m列是關(guān)系S的一個元組 行 k1 k2個元組 投影 對關(guān)系進行垂直分割 消去某些列 并重新安排列的順序 選擇 根據(jù)某些條件關(guān)系作水平分割 即選擇符合條件的元組 2 關(guān)系代數(shù)的四個組合操作 交 聯(lián)接 自然聯(lián)接和除法交 R和S的交是由既屬于R又屬于S的元組構(gòu)成的集合 聯(lián)接包括 聯(lián)接和F聯(lián)接 是選擇R S中滿足i r j 或F條件的元組構(gòu)成的集合 特別注意等值聯(lián)接 為等號 自然聯(lián)接 R X S 在R S中 選擇R和S公共屬性值均相等的元組 并去掉R S中重復(fù)的公共屬性列 如果兩個關(guān)系沒有公共屬性 則自然聯(lián)接就轉(zhuǎn)化為笛卡爾積 除法 首先除法的結(jié)果中元數(shù)為兩個元數(shù)的差 可以直接用觀察法來得到結(jié)果 把S看作一個塊 拿到R中去和相同屬性集中的元組作比較 如果有相同的塊 且除去此塊后留下的相應(yīng)元組均相同 那么可以得到一條元組 所有這些元組的集合就是除法的結(jié)果 對于上述的五個基本操作和組合操作 應(yīng)當從實際運算方面進行理解和運用 對其形式定義可不必深究 注意課本上的例子 關(guān)系代數(shù)運算的三個要素 運算對象 關(guān)系運算結(jié)果 關(guān)系運算符 四類 集合運算符將關(guān)系看成元組的集合運算是從關(guān)系的 水平 方向即行的角度來進行專門的關(guān)系運算符不僅涉及行而且涉及列算術(shù)比較符輔助專門的關(guān)系運算符進行操作邏輯運算符輔助專門的關(guān)系運算符進行操作 廣義笛卡爾積 ExtendedCartesianProduct Rn目關(guān)系 k1個元組Sm目關(guān)系 k2個元組R S列 n m 列的元組的集合元組的前n列是關(guān)系R的一個元組后m列是關(guān)系S的一個元組行 k1 k2個元組R S trts tr R ts S R S R S 選擇 Selection 1 選擇又稱為限制 Restriction 2 選擇運算符的含義在關(guān)系R中選擇滿足給定條件的諸元組 F R t t R F t 真 F 選擇條件 是一個邏輯表達式 基本形式為 X1 Y1 X2 Y2 比較運算符 或 X1 Y1等 屬性名 常量 簡單函數(shù) 屬性名也可以用它的序號來代替 邏輯運算符 或 表示任選項 表示上述格式可以重復(fù)下去 3 選擇運算是從行的角度進行的運算4 舉例設(shè)有一個學(xué)生 課程數(shù)據(jù)庫 包括學(xué)生關(guān)系Student 課程關(guān)系Course和選修關(guān)系SC a Student b Course c SC 例1 查詢信息系 IS系 全體學(xué)生 Sdept IS Student 或 5 IS Student 結(jié)果 例2 查詢年齡小于20歲的學(xué)生 Sage 20 Student 或 4 20 Student 結(jié)果 投影 Projection 1 投影運算符的含義從R中選擇出若干屬性列組成新的關(guān)系 A R t A t R A R中的屬性列 2 投影操作主要是從列的角度進行運算但投影之后不僅取消了原關(guān)系中的某些列 而且還可能取消某些元組 避免重復(fù)行 3 舉例 例3 查詢學(xué)生的姓名和所在系即求Student關(guān)系上學(xué)生姓名和所在系兩個屬性上的投影 Sname Sdept Student 或 2 5 Student 結(jié)果 例4 查詢學(xué)生關(guān)系Student中都有哪些系 Sdept Student 結(jié)果 連接 Join 1 連接也稱為 連接2 連接運算的含義從兩個關(guān)系的笛卡爾積中選取屬性間滿足一定條件的元組RS tr R ts S tr A ts B A和B 分別為R和S上度數(shù)相等且可比的屬性組 比較運算符連接運算從R和S的廣義笛卡爾積R S中選取 R關(guān)系 在A屬性組上的值與 S關(guān)系 在B屬性組上值滿足比較關(guān)系的元組 3 兩類常用連接運算等值連接 equijoin 什么是等值連接 為 的連接運算稱為等值連接等值連接的含義從關(guān)系R與S的廣義笛卡爾積中選取A B屬性值相等的那些元組 即等值連接為 RS tr R ts S tr A ts B A B 自然連接 Naturaljoin 什么是自然連接自然連接是一種特殊的等值連接兩個關(guān)系中進行比較的分量必須是相同的屬性組在結(jié)果中把重復(fù)的屬性列去掉自然連接的含義R和S具有相同的屬性組BRS tr R ts S tr B ts B 4 一般的連接操作是從行的角度進行運算 自然連接還需要取消重復(fù)列 所以是同時從行和列的角度進行運算 5 舉例 例5 R S RS 等值連接RS 自然連接RS 外連接 例 列出老師的有關(guān)信息 包括姓名 工資 所教授的課程 P PN SAL C CN PROF PCC 問題 有關(guān)P03號職工的姓名和工資信息沒有顯示出來 外連接為避免自然連接時因失配而發(fā)生的信息丟失 可以假定往參與連接的一方表中附加一個取值全為空值的行 它和參與連接的另一方表中的任何一個未匹配上的元組都能匹配 稱之為外連接外連接 自然連接 失配的元組外連接的形式 左外連接 右外連接 全外連接左外連接 自然連接 左側(cè)表中失配的元組右外連接 自然連接 右側(cè)表中失配的元組全外連接 自然連接 兩側(cè)表中失配的元組 所有老師的信息 所有課程的信息 所有老師和課程的信息 重要內(nèi)容分析1 1 一般規(guī)則對于只涉及到選擇 投影 聯(lián)接的查詢可用下列表達式表示 R S 或者 R S 對于否定的操作 一般要用差操作表示 例如 檢索不學(xué)C2課的學(xué)生姓名 對于檢索具有 全部 特征的操作 一般要用除法操作表示 例如 檢索學(xué)習(xí)全部課程的學(xué)生姓名 2 檢索不學(xué)C2課的學(xué)生姓名 決不能用下式表示 SNAME AGE C C2 S SC 一定要用 差 的形式 SNAME AGE S SNAME AGE C C2 S SC 3 檢索學(xué)習(xí)全部課程的學(xué)生學(xué)號 要用 S C SC C C 表示 而不能寫成 S SC C C 形式 這是因為一個學(xué)生學(xué)的課程的成績可能是不一樣的 2 非過程性語言與過程性語言的區(qū)別編程時必須指出 干什么 及 怎么干 的語言 稱為過程性語言 編程時只須指出 干什么 不必指出 怎么干 的語言 稱為非過程性語言 4 2關(guān)系演算 把數(shù)理邏輯的謂詞演算引入關(guān)系運算中 就可得到以關(guān)系演算為基礎(chǔ)的運算 關(guān)系演算分為元組關(guān)系演算或域關(guān)系演算 前者以元組為變量 后者以域為變量 元組關(guān)系演算 形式化定義 t P t 表示所有使謂詞P為真的元組集合t為元組變量如果元組變量前有 全稱 或 存在 量詞 則稱其為約束變量 否則稱為自由變量 P是公式由原子公式和運算符組成 原子公式s Rs是關(guān)系R中的一個元組s x u y s x 與u y 為元組分量 他們之間滿足比較關(guān)系 s x c分量s x 與常量c之間滿足比較關(guān)系 公式的遞歸定義原子公式是公式如果P是公式 那么 P也是公式如果P1 P2是公式 則P1 P2 P1 P2 P1 P2也是公式如果P t 是公式 R是關(guān)系 則 t R P t 和 t R P t 也是公式 公式的等價性P1 P2 P1 P2 t R P t t R P t P1 P2 P1 P2 R S t t S t A 2 t t R t S t t S u R t C u B t t R u S t C u A t v S u R u A v B t A u B t B v C t C u A 表達式的安全性元組關(guān)系演算有可能會產(chǎn)生無限關(guān)系 這樣的表達式是不安全的 如 t t R 求所有不在R中的元組引入公式P的域概念 用dom P 表示dom P 顯式出現(xiàn)在P中的值 在P中出現(xiàn)的關(guān)系的元組中出現(xiàn)的值 不必是最小集 如dom t t R 是R中出現(xiàn)的所有值的集合如果出現(xiàn)在表達式 t P t 結(jié)果中的所有值均來自dom P 則稱 t P t 是安全的 dom t R A1 A2 B1 B2 B3 R t t R 示例 找出工資在800元以上的老師 t t PROF t SAL 800 找出工資在800元以上的老師的姓名 t s PROF t PNAME s PNAME s SAL 800 給出計算機系老師的姓名 t u DEPT u DNAME 計算機系 s PROF s DNO u DNO t PNAME s PNAME 求選修了全部課程的學(xué)生號 t u C s SC s CNO u CNO t SNO s SNO 求選修了張軍同學(xué)所選修的全部課程的學(xué)生姓名 課程 張軍選之 所求同學(xué)選之 t u C s SC w S s CNO u CNO w SNO s SNO w SNAME 張軍 元組關(guān)系演算與關(guān)系代數(shù)的等價性投影 A R t s R s A t A 選擇 F A R t t R F t A 廣義笛卡兒積R A S B t u R s S t A u A t B s B 并R S t t R t S 交R S t t R t S 域關(guān)系演算 形式化定義 P x1 x2 xn xi代表域變量 P為由原子構(gòu)成的公式原子公式 Rxi是域變量或域常量x y域變量x與y之間滿足比較關(guān)系 x c域變量x與常量c之間滿足比較關(guān)系 R S R1 R x3 R2 R S y 4 W R2 u v R W u v 示例 找出工資在800元以上的老師 PROF e 800 找出工資在800元以上的老師的姓名 a c d e PROF e 800 4 3關(guān)系代數(shù)表達式的優(yōu)化問題 目的在關(guān)系代數(shù)中找一種好的操作步驟 既省空間 查詢效率又比較高 在關(guān)系代數(shù)中 笛卡兒積和聯(lián)結(jié)運算是最費時間和空間的 在關(guān)系很大的時候 必須要考慮怎樣做才能合理的安排 做到省時省力 一個例子設(shè)關(guān)系R和S都是二元關(guān)系 屬性名分別是A B和C D 那么如下查詢 E1 A B C D 99 R S 也可以是E2 A B C R D 99 S 或E3 A R D 99 S 這三個代數(shù)表達式的等價的 但是執(zhí)行的效率不一樣 第一種 先做笛卡兒積 假設(shè)每個物理塊可以存儲R的B1個元組 或者S的B2個元組 R關(guān)系中有n1個元組 S關(guān)系中有n2個元組 內(nèi)存每次只能裝載m塊數(shù)據(jù) 在做聯(lián)接的時候先把R的第一個m 1塊數(shù)據(jù)裝入內(nèi)存 然后逐個調(diào)入S中的數(shù)據(jù)塊 R中的每個數(shù)據(jù)塊只要進入內(nèi)存一次 總共需要裝入的塊數(shù)示n1 B1 S中的每個數(shù)據(jù)塊需要進入內(nèi)存 n1 B1 m 1 次 總共需要裝入的塊數(shù)是 n1 B1 1 m 1 n2 B2 這三個代數(shù)表達式的等價的 但是執(zhí)行的效率不一樣 執(zhí)行RXS的總裝入塊數(shù)是 n1 B1 1 n2 m 1 B2 若n1 n2 10000 B1 B2 5 m 100 那么總的裝入塊數(shù)是42400 若每秒裝入20塊 需要35分鐘 耗費時間長 在實際使用中不采用 這三個代數(shù)表達式的等價的 但是執(zhí)行的效率不一樣 第二種和第三種 先做了選擇 裝入的塊數(shù)為n1 B1 n2 B2 大約需要裝入4000塊 耗費時間3分多鐘 對于S來說 元組并不是全部進入內(nèi)存 而且只是進入一次 所以速度快 1 優(yōu)化的一般策略我們所說的優(yōu)化和存儲沒有關(guān)系 主要是如何來安排操作的順序 節(jié)省時間和空間的消費優(yōu)化的一般技術(shù) 在關(guān)系代數(shù)表達式中盡可能早地執(zhí)行選擇操作 把笛卡兒積和其后的選擇操作合并成F聯(lián)接運算 同時計算一連串的選擇和投影操作 避免分開運算造成多次掃描文件 2 關(guān)系代數(shù)表達式的優(yōu)化算法對一個關(guān)系代數(shù)表達式進行語法分析可以得到一棵語法樹 葉子式關(guān)系 非葉子結(jié)點式關(guān)系代數(shù)操作 算法2 1關(guān)系代數(shù)表達式的優(yōu)化 輸入 一個關(guān)系代數(shù)表達式的語法樹 輸出 計算表達式的一個優(yōu)化程序 方法 依次執(zhí)行下面的每一步 1 使用等價變換規(guī)則4將每個形為 F1 Fn E 的子表達式轉(zhuǎn)換成串接形式 F1 Fn E 2 對每個選擇操作 盡可能把選擇操作移近樹的葉端 盡可能早的實行選擇操作 3 對每個投影操作 盡可能把投影操作移近樹的葉端 4 把選擇和投影合并成單個選擇 單個投影或一個選擇后跟一個投影 5 將上述步驟得到的語法樹的內(nèi)結(jié)點分組 6 生成一個序列 每一組結(jié)點的計算是序列中的一步 見課本例子 本章結(jié)束 第五章SQL語言 學(xué)習(xí)目的與要求 SQL語言是關(guān)系數(shù)據(jù)庫的標準語言 是本課程的一個重點 本章總的要求是 全面掌握 深刻理解 熟練應(yīng)用 要求掌握的技能是 SQL定義語句 嵌入式SQL語句的應(yīng)用 要求熟練掌握的技能是 SQL查詢語句 視圖 SQL更新語句的應(yīng)用 方法 多做題 多上機實踐 考核知識點與考試要求5 1SQL簡介 識記 5 2SQL的數(shù)據(jù)定義 綜合應(yīng)用 5 3SQL的數(shù)據(jù)查詢5 3 1SELECT查詢語句的基本結(jié)構(gòu) 連接 嵌套 存在量詞的三種查詢方式 綜合應(yīng)用 5 3 2SELECT語句完整的結(jié)構(gòu) 分組子句 排序子句的用法 綜合應(yīng)用 5 3 3數(shù)據(jù)查詢中的限制和規(guī)定 簡單應(yīng)用 5 3 4條件表達式中的比較操作 簡單應(yīng)用 5 3 5嵌套查詢的改進寫法 領(lǐng)會 5 3 6基本表的連接操作 綜合應(yīng)用 5 4SQL的數(shù)據(jù)更新 綜合應(yīng)用 5 5視圖 簡單應(yīng)用 5 6嵌入式SQL 領(lǐng)會 5 7存儲過程SQL PSM 識記 5 1SQL簡介 1 SQL發(fā)展歷程SQL從1970年美國IBM研究中心的E F Codd發(fā)表論文到1974年Boyce和Chamberlin把SQUARE語言改為SEQUEL語言 到現(xiàn)在還在不斷完善和發(fā)展之中 SQL 結(jié)構(gòu)式查詢語言 雖然名為查詢 但實際上具有定義 查詢 更新和控制等多種功能 2 SQL數(shù)據(jù)庫的體系結(jié)構(gòu)SQL數(shù)據(jù)庫的體系結(jié)構(gòu)也是三級結(jié)構(gòu) 但術(shù)語與傳統(tǒng)關(guān)系模型術(shù)語不同 在SQL中 關(guān)系模式稱為 基本表 存儲模式稱為 存儲文件 子模式稱為 視圖 元組稱 行 屬性稱 列 SQL數(shù)據(jù)庫體系的結(jié)構(gòu)要點如下 1 一個SQL數(shù)據(jù)庫是表的匯集 2 一個SQL表由行集構(gòu)成 行是列的序列 每列對應(yīng)一個數(shù)據(jù)項 3 表或者是基本表 或者是視圖 基本表是實際存儲在數(shù)據(jù)庫中的表 視圖由是由若干基本表或其他視圖構(gòu)成的表的定義 4 一個基本表可以跨一個或多個存儲文件 一個存儲文件也可存放一個或多個基本表 存儲文件與物理文件對應(yīng) 5 用戶可以用SQL語句對表進行操作 包括視圖和基本表 6 SQL的用戶可以是應(yīng)用程序 也可以是終端用戶 3 SQL的組成SQL由四部分組成 1 數(shù)據(jù)定義 SQLDDL 定義SQL模式 基本表 視圖和索引 2 數(shù)據(jù)操縱 SQLDML 包括數(shù)據(jù)查詢和數(shù)據(jù)更新 增 刪 改 3 數(shù)據(jù)控制 包括對基本表和視圖的授權(quán) 完整性規(guī)則的描述 事務(wù)控制等 4 嵌入式SQL的使用規(guī)定 4 SQL的特點 1 SQL具有十分靈活和強大的查詢功能 2 SQL不是一個應(yīng)用開發(fā)語言 它只提供對數(shù)據(jù)庫的操作功能 不能完成屏幕控制 菜單管理 報表生成等功能 3 SQL是國際性標準語言 有利于各種數(shù)據(jù)庫之間交換數(shù)據(jù) 有利于程序的移植 有利于實現(xiàn)高度的數(shù)據(jù)獨立性 有利于實現(xiàn)標準化 4 SQL的詞匯不多 完成核心功能只用了9個英語動詞 它的語法結(jié)構(gòu)接近英語 因此容易學(xué)習(xí)和使用 5 2SQL的數(shù)據(jù)定義 1 SQL模式的創(chuàng)建和撤消 SQL模式的創(chuàng)建可簡單理解為建立一個數(shù)據(jù)庫 定義一個存儲空間 其句法是 CREATESCHEMAAUTHORIZATION撤消SQL模式的句法為 DROPSCHEMA CASCADE RESTRICT 方括號中的選項參數(shù)CASCADE表示連鎖方式 執(zhí)行時將模式下所有基本表 視圖 索引等元素全部撤消 RESTRICT表示約束式 執(zhí)行時必須在SQL模式中沒有任何下屬元素時方可撤消模式 2 SQL提供的基本數(shù)據(jù)類型數(shù)值型 包括integer smallint real doubleprecision float n numeric p d 字符串型 char n varchar n 前者是定長 后者為變長串位串型 bit n bitvarying n 同上 時間型 date time 3 基本表的創(chuàng)建 修改和撤消基本表的創(chuàng)建 可理解為建立表結(jié)構(gòu) CREATTABLESQL模式名 基本表名 列名 類型 完整性約束 完整性約束包括主鍵子句 PRIMARYKEY 檢查子句 CHECK 和外鍵子句 FOREIGNKEY 基本表結(jié)構(gòu)的修改ALTERTABLE基本表名ADD DROP 增加 刪除 列名類型名 增加時寫出 刪除時有子句 CASCADE RESTRICT 前者為連鎖刪除 后者為約束刪除 即沒有對本列的任何引用時才能刪除 基本表的撤消DROPTABLE基本表名 CASCADE RESTRICT 4 索引的創(chuàng)建和撤消創(chuàng)建 CREATE UNIQUE INDEX索引名ON基本表名 列名表 ASC DESC 撤消 DROPINDEX索引名總結(jié) 凡創(chuàng)建都用CREATE 刪除都用DROP 改變用ALTER 再跟類型和名字 附加子句很容易了 5 3SQL的數(shù)據(jù)查詢 1 SELECT FROM WHERE句型SELECT列名表 逗號隔開 FROM基本表或視圖序列WHERE條件表達式在這里 重點要掌握條件表達式中各種運算符的應(yīng)用 如 等算術(shù)比較運算符 邏輯運算符AND OR NOT 集合成員資格運算符 IN NOTIN 以及嵌套的SELECT語句的用法要特別注意理解 針對課本的例題和課后習(xí)題進行掌握 在查詢時 SELECT語句可以有多種寫法 如聯(lián)接查詢 嵌套查詢和使用存在量詞的嵌套查詢等 最好都掌握 但是起碼應(yīng)能寫出一種正確的查詢語句 2 SELECT語句完整的句法 SELECT列名表 逗號隔開 FROM基本表或視圖序列 WHERE條件表達式 此為和條件子句 GROUPBY列名序列 分組子句 HAVING組條件表達式 組條件子句 ORDERBY列名 ASC DESC 排序子句 這段關(guān)于完整句法的內(nèi)容能夠理解也就問題不大了 3 SELECT語句中的限定這一段內(nèi)容主要是對SELECT語句進一步使用進行的深入學(xué)習(xí) 領(lǐng)會下列各種限定的使用目的和方法 要求輸出表格中不出現(xiàn)重復(fù)元組 則在SELECT后加一DISTINCTSELECT子句中允許出現(xiàn)加減乘除及列名 常數(shù)的算術(shù)表達式WHERE子句中可以用BETWEEN AND 來限定一個值的范圍同一個基本表在SELECT語句中多次引用時可用AS來增加別名WHERE子句中字符串匹配用LIKE和兩個通配符 和下劃線 查詢結(jié)果的結(jié)構(gòu)完全一致時可將兩個查詢進行并 UNION 交 INTERSECT 差 EXCPT 操作 查詢空值操作不是用 null 而是用ISNULL來測試 集合成員資格比較用IN NOTIN 集合成員算術(shù)比較用元組 SOME ALL可以用子查詢結(jié)果取名 表名 列名序列 來作為導(dǎo)出表使用基本表的自然聯(lián)接操作是用NATURALINNERJOIN來實現(xiàn)的 5 4SQL的數(shù)據(jù)更新 1 數(shù)據(jù)插入 INSERTINTO基本表名 列名表 VALUES 元組值 或INSERTINTO基本表名 列名表 SELECT查詢語句其中元組值可以連續(xù)插入 用查詢語句可以按要求插入所需數(shù)據(jù) 2 數(shù)據(jù)刪除 DELETEFROM基本表名 WHERE條件表達式 3 數(shù)據(jù)修改 UPDATE基本表名SET列名 值表達式 列名 值表達式 WHERE條件表達式 5 5視圖 1 視圖的創(chuàng)建和撤消創(chuàng)建 CREATEVIEW視圖名 列名表 ASSELECT查詢語句撤消 DROPVIEW視圖名 2 視圖的操作查詢與關(guān)系中一致更新與關(guān)系不同如果視圖是從多個使用聯(lián)接操作導(dǎo)出的 不允許對此視圖更新如果在導(dǎo)出視圖的過程中 使用了分組和聚合函數(shù) 不允許對此視圖更新 如果視圖是從單個關(guān)系使用選擇 投影操作導(dǎo)出的 并且包含了關(guān)系的主健或某個候選健 稱此視圖為 行列子集視圖 允許對此視圖更新 CREATEVIEWS MAILASSELECTS SNAME AGEFROMSWHERESEX M INSERTINTOS MALEVALUES S28 WU 18 與INSERTINTOSVALUES S28 WU 18 M 相同 3 視圖的優(yōu)點使用視圖的優(yōu)點 視圖提供了邏輯數(shù)據(jù)的獨立性簡化了用戶觀點用戶只需關(guān)心視圖的內(nèi)容 而不必關(guān)心構(gòu)成視圖的若干關(guān)系的聯(lián)結(jié) 投影操作 能夠?qū)?shù)據(jù)庫的訪問限制在一定范圍內(nèi) 有利于數(shù)據(jù)安全保護功能 可針對不同的用戶定義不同的視圖 在視圖種只出現(xiàn)用戶需要的數(shù)據(jù) 系統(tǒng)提供視圖讓用戶使用 5 6嵌入式SQL 1 SQL語言提供了兩種不同的使用方式 交互式嵌入式為什么要引入嵌入式SQLSQL語言是非過程性語言事務(wù)處理應(yīng)用需要高級語言這兩種方式細節(jié)上有差別 在程序設(shè)計的環(huán)境下 SQL語句要做某些必要的擴充 2 嵌入式SQL的一般形式為了區(qū)分SQL語句與主語言語句 需要 前綴 EXECSQL結(jié)束標志 隨主語言的不同而不同以C為主語言的嵌入式SQL語句的一般形式EXECSQL 例 EXECSQLDROPTABLEStudent 以COBOL作為主語言的嵌入式SQL語句的一般形式EXECSQLEND EXEC例 EXECSQLDROPTABLEStudentEND EXEC 3 DBMS處理宿主型數(shù)據(jù)庫語言SQL的方法預(yù)編譯修改和擴充主語言使之能處理SQL語句 4 嵌入式SQL語句與主語言之間的通信將SQL嵌入到高級語言中混合編程 程序中會含有兩種不同計算模型的語句SQL語句描述性的面向集合的語句負責(zé)操縱數(shù)據(jù)庫高級語言語句過程性的面向記錄的語句負責(zé)控制程序流程 5 工作單元之間的通信方式 SQL通信區(qū)向主語言傳遞SQL語句的執(zhí)行狀態(tài)信息主語言能夠據(jù)此控制程序流程 共享變量主語言向SQL語句提供參數(shù)將SQL語句查詢數(shù)據(jù)庫的結(jié)果交主語言進一步處理 游標解決集合性操作語言與過程性操作語言的不匹配 6 共享變量什么是共享變量嵌入式SQL語句中可以使用主語言的程序變量來輸入或輸出數(shù)據(jù)在SQL語- 1.請仔細閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認領(lǐng)!既往收益都歸您。
下載文檔到電腦,查找使用更方便
14.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 數(shù)據(jù)庫系統(tǒng)原理 自考 04735 數(shù)據(jù)庫 系統(tǒng) 原理 筆記
鏈接地址:http://m.jqnhouse.com/p-8019736.html