版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
高級數(shù)據(jù)庫技術(shù)及應(yīng)用
——第2章關(guān)系數(shù)據(jù)庫根底2017.09關(guān)系數(shù)據(jù)庫基于關(guān)系數(shù)據(jù)模型□提出和誕生于20世紀(jì)70年代□成熟和開展于20世紀(jì)80-90年代□進入21世紀(jì),與計算機網(wǎng)絡(luò)密切結(jié)合,煥發(fā)新生命活力□建立在關(guān)系數(shù)學(xué)理論之上,技術(shù)意義下的數(shù)據(jù)管理及使用等具有較高的抽象層次和科學(xué)屬性第2章關(guān)系數(shù)據(jù)庫根底□關(guān)系數(shù)據(jù)庫的建立是數(shù)據(jù)庫開展歷史上最重要的事件□關(guān)系數(shù)據(jù)庫直到現(xiàn)在且在今后可想見時間內(nèi)都是最重要和最流行的數(shù)據(jù)庫?!蹶P(guān)系數(shù)據(jù)技術(shù)是其它數(shù)據(jù)庫開展根底重要借鑒本章簡要回憶關(guān)系數(shù)據(jù)庫根本理論與技術(shù)如以下圖為高級數(shù)據(jù)庫學(xué)習(xí)提供原理和技術(shù)上準(zhǔn)備知識第2章關(guān)系數(shù)據(jù)庫根底第2章關(guān)系數(shù)據(jù)庫根底第2章關(guān)系數(shù)據(jù)庫根底2.1關(guān)系數(shù)據(jù)模型2.2關(guān)系數(shù)據(jù)語言SQL2.3關(guān)系模式設(shè)計2.4關(guān)系數(shù)據(jù)庫保護2.5關(guān)系數(shù)據(jù)事務(wù)管理計算機主要用于數(shù)據(jù)“計算”:“計算”具極為廣泛意義不局限于常規(guī)“四那么”運算數(shù)據(jù)計算:數(shù)據(jù)處理數(shù)據(jù)管理●數(shù)據(jù)處理經(jīng)過“處理”的數(shù)據(jù)會發(fā)生變化,例如數(shù)值數(shù)據(jù)的分析計算和非數(shù)值數(shù)據(jù)的加工挖掘●數(shù)據(jù)管理需要“管理”的主要是非數(shù)值型數(shù)據(jù),通過賦予海量數(shù)據(jù)以適當(dāng)結(jié)構(gòu)用于長期保存和多用戶共享2.1數(shù)據(jù)模型與數(shù)據(jù)模式數(shù)據(jù)管理:一類最大的計算機應(yīng)用領(lǐng)域核心技術(shù):統(tǒng)一管理數(shù)據(jù)和多用戶共享數(shù)據(jù)為特征數(shù)據(jù)庫技術(shù)數(shù)據(jù)模型:□數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)操作的抽象□數(shù)據(jù)管理的出發(fā)點□數(shù)據(jù)庫原理和技術(shù)的根底2.1數(shù)據(jù)模型與數(shù)據(jù)模式數(shù)據(jù)模型開展線條:數(shù)據(jù)管理技術(shù)的演進軌跡關(guān)系數(shù)據(jù)模型:□靜態(tài)數(shù)據(jù)結(jié)構(gòu)□動態(tài)數(shù)據(jù)操作□語義限制的數(shù)據(jù)完整性約束關(guān)系數(shù)據(jù)模式:□關(guān)系模型在一個應(yīng)用環(huán)境中的具體實現(xiàn)2.1數(shù)據(jù)模型與數(shù)據(jù)模式數(shù)據(jù)結(jié)構(gòu)□關(guān)系數(shù)據(jù)結(jié)構(gòu):本質(zhì)上是一種數(shù)學(xué)結(jié)構(gòu)域上笛卡爾乘積的一個子集□離散數(shù)學(xué)中這樣子集稱為域上一個關(guān)系“關(guān)系”數(shù)據(jù)模型中“關(guān)系”一詞由來□域是一組具有相同數(shù)據(jù)類型的值的集合例如:整數(shù)域、實數(shù)域、長度指定的字符串集合、枚舉集合{‘male’,‘female’}和介于某個取值范圍的整數(shù)等。2.1數(shù)據(jù)模型與數(shù)據(jù)模式一組域D1,D2,…,Dn,其上笛卡爾乘積為集合D1×D2×…×Dn={〔d1,…,dn〕|diDi,i=1,…,n}□笛卡爾乘積:表示為一個二維表□表中每一行:對應(yīng)一個元素〔向量〕□表中每一列:對應(yīng)一個域
關(guān)系數(shù)據(jù)結(jié)構(gòu)做為集合,笛卡爾乘積中元素稱為元組〔Tuple〕通常記為t,關(guān)系R是元組t的一個集合關(guān)系R中元組以行形式出現(xiàn),從形式上看,關(guān)系R就相當(dāng)于一張二維表〔table〕□一個關(guān)系也稱為一張關(guān)系表R□每一行對應(yīng)一個元組〔向量〕□每一列對應(yīng)一個屬性〔域〕
關(guān)系數(shù)據(jù)結(jié)構(gòu)□關(guān)系R需要滿足R?D1×D2×…×Dn關(guān)系R的最根本語法要求□數(shù)據(jù)不能沒有語義數(shù)據(jù)使用和管理的要點是數(shù)據(jù)的語義□對滿足語法要求的關(guān)系R應(yīng)進行相應(yīng)語義描述即還需考慮下述問題:
關(guān)系數(shù)據(jù)結(jié)構(gòu)①計算機只處理有限個對象的問題數(shù)學(xué)“關(guān)系”可有無限個元素②計算機管理數(shù)據(jù)需有一個最小技術(shù)處理單元數(shù)學(xué)關(guān)系元素〔分量〕卻無此限制,可以任意嵌套③關(guān)聯(lián)難以操作實際應(yīng)用中數(shù)據(jù)成分順序并不必要如對一個學(xué)生而言,先講“學(xué)號”還是先講“姓名”并不影響對該學(xué)生各類特征信息的了解和掌握;數(shù)學(xué)“關(guān)系”元素“分量”順序卻不能隨意調(diào)換
關(guān)系數(shù)據(jù)結(jié)構(gòu)④數(shù)據(jù)處理本質(zhì)在于其含義及與其它數(shù)據(jù)關(guān)聯(lián)數(shù)學(xué)“關(guān)系”過于寬泛,不能有效描述數(shù)據(jù)間的關(guān)聯(lián),這種由“數(shù)學(xué)的語法描述”到“應(yīng)用的語義實現(xiàn)”差異,需對語法意義下的“關(guān)系”提出相應(yīng)的語義約束。針對上述“①”、“②”和“③”,滿足下述條件標(biāo)準(zhǔn)化關(guān)系R構(gòu)成關(guān)系數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu)通常也稱為標(biāo)準(zhǔn)化二維平面關(guān)系表
關(guān)系數(shù)據(jù)結(jié)構(gòu)一.根本語義限制進行如下標(biāo)準(zhǔn)化了的數(shù)學(xué)“關(guān)系”才能是關(guān)系模型的數(shù)據(jù)結(jié)構(gòu):標(biāo)準(zhǔn)化二維平面關(guān)系表●有限性:關(guān)系是其元組的有限集合●原子性:關(guān)系中的每個列具有不可再分性質(zhì)●屬性列無序性:關(guān)系中列不考慮相互順序,為此,需要為每個列給知名稱,及屬性名。
關(guān)系數(shù)據(jù)結(jié)構(gòu)二.數(shù)據(jù)關(guān)聯(lián)描述數(shù)據(jù)關(guān)聯(lián):同一關(guān)系內(nèi)數(shù)據(jù)關(guān)聯(lián)和不同關(guān)系數(shù)據(jù)關(guān)聯(lián)。(1)同一關(guān)系內(nèi)數(shù)據(jù)關(guān)聯(lián)同一關(guān)系中各個屬性關(guān)聯(lián)通過主鍵機制實現(xiàn)●能夠唯一標(biāo)識元組的一組屬性稱為“超鍵”●最小的超鍵稱為“候選鍵”●確定使用的候選鍵稱為主鍵〔關(guān)系可有多個候選鍵〕
關(guān)系數(shù)據(jù)結(jié)構(gòu)(1)不同關(guān)系間數(shù)據(jù)關(guān)聯(lián)□不同關(guān)系間數(shù)據(jù)關(guān)聯(lián)通過外鍵機制實現(xiàn)設(shè)有關(guān)系R和S,R中一組屬性A假設(shè)不是R主鍵,卻是S主鍵那么A為R〔關(guān)于S〕的外鍵?!跬怄I的意義:將關(guān)系間關(guān)聯(lián)也作為一種“關(guān)系”進行描述統(tǒng)一和簡化了關(guān)系數(shù)據(jù)的技術(shù)處理□帶來難以有效處理比較復(fù)雜語義關(guān)聯(lián)的新的課題
關(guān)系數(shù)據(jù)結(jié)構(gòu)關(guān)系數(shù)據(jù)模型不同于其它模型等的根本特征:□關(guān)系數(shù)據(jù)結(jié)構(gòu)依賴于數(shù)學(xué)中笛卡爾乘積和關(guān)系原理□關(guān)系數(shù)據(jù)操作以數(shù)學(xué)中集合運算和數(shù)理邏輯為支撐□關(guān)系數(shù)據(jù)操作也稱為關(guān)系運算●基于集合代數(shù)的運算稱為關(guān)系代數(shù)●基于數(shù)理邏輯的運算稱為關(guān)系演算
關(guān)系數(shù)據(jù)操作數(shù)據(jù)語義描述與處理是數(shù)據(jù)管理的根本課題:●通過“標(biāo)準(zhǔn)化”二維表對關(guān)系進行根本語義限定●通過“主鍵”和“外鍵”對關(guān)系進行語義關(guān)聯(lián)描述但這僅是數(shù)據(jù)語義的根本要求:□只能保證關(guān)系數(shù)據(jù)能夠進行計算機管理〔合法性〕□難以保證計算機管理數(shù)據(jù)的正確性和有效性〔適宜性〕
關(guān)系數(shù)據(jù)完整性約束從應(yīng)用和技術(shù)實現(xiàn)角度還需要對相應(yīng)數(shù)據(jù)實體集的范圍外延和數(shù)據(jù)間關(guān)系加以約束這就是關(guān)系數(shù)據(jù)完整性約束機制關(guān)系數(shù)據(jù)完整性約束機制包括三個組成局部□實體完整性約束□參照完整性約束□用戶完整性約束
關(guān)系數(shù)據(jù)完整性約束①實體完整性約束數(shù)據(jù)標(biāo)識是數(shù)據(jù)語義處理的前提,否那么,計算機處理和實際應(yīng)用過程中將難以進行語義和技術(shù)上的識別,需要限定關(guān)系數(shù)據(jù)中元組標(biāo)識不能為空實體完整性約束:關(guān)系主鍵不能取空值
關(guān)系數(shù)據(jù)完整性約束②參照完整性約束描述和處理數(shù)據(jù)語義關(guān)聯(lián)的意義,理解和使用計算機處理數(shù)據(jù)語義的根底,實現(xiàn)高效數(shù)據(jù)處理的技術(shù)途徑,例如通過數(shù)據(jù)間“引用”可減少存儲空間和實現(xiàn)快速查找□參照完整性約束:當(dāng)屬性集A是關(guān)系R關(guān)于關(guān)系S的外鍵時A或取空值,或取S中某個元組的主鍵值。
關(guān)系數(shù)據(jù)完整性約束③
用戶完整性約束數(shù)據(jù)語義與數(shù)據(jù)所處語境有密切關(guān)聯(lián),實際用戶的應(yīng)用環(huán)境是最重要的數(shù)據(jù)語境之一?!跤脩敉暾约s束用戶在應(yīng)用環(huán)境中自行定義的語義約束實體完整性和參照完整性通常由DBMS實現(xiàn)用戶完整性約束與各樣應(yīng)用背景關(guān)聯(lián),系統(tǒng)難以統(tǒng)一處理,呈現(xiàn)出復(fù)雜多樣的特點。
關(guān)系數(shù)據(jù)完整性約束●數(shù)據(jù)模型數(shù)據(jù)管理過程中數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作和完整性約束的抽象●數(shù)據(jù)模式在給定數(shù)據(jù)模型框架內(nèi)對具體應(yīng)用數(shù)據(jù)的描述。□數(shù)據(jù)模型:像是一種給定的程序設(shè)計語言□數(shù)據(jù)模式:使用該語言對一個實際問題的具體實現(xiàn)程序應(yīng)用關(guān)系數(shù)據(jù)模型建立具體數(shù)據(jù)庫就是關(guān)系數(shù)據(jù)數(shù)據(jù)模式
關(guān)系數(shù)據(jù)模式數(shù)據(jù)模型:有邏輯數(shù)據(jù)模型和物理數(shù)據(jù)模型之分?jǐn)?shù)據(jù)模式:有邏輯數(shù)據(jù)模式和物理數(shù)據(jù)模式之別美國國家標(biāo)準(zhǔn)協(xié)會〔ANSI〕就將數(shù)據(jù)模式分為三種級別●內(nèi)模式〔物理模式〕●概念模式〔模式邏輯模式〕●外模式〔用戶模式〕
關(guān)系數(shù)據(jù)模式□內(nèi)模式使用物理數(shù)據(jù)模型對一個應(yīng)用單位所涉及數(shù)據(jù)的描述內(nèi)模式對于一般用戶透明,由相應(yīng)的DBMS設(shè)計處理□概念模式使用邏輯數(shù)據(jù)模型對一個應(yīng)用單位所涉及數(shù)據(jù)的描述數(shù)據(jù)庫設(shè)計的最重要工作通常所說的數(shù)據(jù)庫模式設(shè)計就是數(shù)據(jù)庫概念模式的設(shè)計
關(guān)系數(shù)據(jù)模式□外模式對一個應(yīng)用單位中某個或某些用戶所涉及數(shù)據(jù)個別描述
外模式可以看做是相應(yīng)概念模式一個子集需要從相應(yīng)概念模式推導(dǎo)而得
關(guān)系數(shù)據(jù)模式數(shù)據(jù)庫系統(tǒng)三級模式結(jié)構(gòu)意義□將一個應(yīng)用單位所涉及數(shù)據(jù)的具體組織交由DBMS完成□使用戶不必具體處理數(shù)據(jù)在計算機中的表示和存儲方式□專心在較高的抽象層面上對數(shù)據(jù)進行有效管理上述三個數(shù)據(jù)模式可以通過下述兩級映射進行相互轉(zhuǎn)換
●外模式/概念模式映射●概念模式/內(nèi)模式映射
關(guān)系數(shù)據(jù)模式●外模式/概念模式映射保證數(shù)據(jù)的邏輯獨立性:當(dāng)概念模式發(fā)生添加新的關(guān)系表、取消原有關(guān)系表或?qū)σ延嘘P(guān)系表增添新的數(shù)據(jù)或刪除原有屬性時只需要改動相應(yīng)的映射,而外模式本身并不需要改變用戶的應(yīng)用程序時依據(jù)相應(yīng)外模式編寫所以應(yīng)用程序也無需改變
關(guān)系數(shù)據(jù)模式●概念模式/內(nèi)模式映射保證數(shù)據(jù)的物理獨立性:當(dāng)內(nèi)模式由于采用了新的存儲結(jié)構(gòu)〔例如原先無索引需要改用索引存儲結(jié)構(gòu)等〕而發(fā)生改變時只需要改動相應(yīng)的映射,而概念模式本身也不需要改變進而對應(yīng)的外模式也無改變
關(guān)系數(shù)據(jù)模式●三級模式結(jié)構(gòu):使得數(shù)據(jù)在計算機內(nèi)表述與組織對用戶透明●兩級映射:提供數(shù)據(jù)的邏輯獨立性與物理獨立性三級模式/兩級映射:現(xiàn)今所有數(shù)據(jù)模式根本架構(gòu)數(shù)據(jù)庫的三級模式/兩級映射的體系結(jié)構(gòu)。
關(guān)系數(shù)據(jù)模式第2章關(guān)系數(shù)據(jù)庫根底2.1關(guān)系數(shù)據(jù)模型2.2關(guān)系數(shù)據(jù)語言SQL2.3關(guān)系模式設(shè)計2.4關(guān)系數(shù)據(jù)庫保護2.5關(guān)系數(shù)據(jù)事務(wù)管理計算機本質(zhì)是進行數(shù)據(jù)計算對非數(shù)值型數(shù)據(jù),分為數(shù)據(jù)管理和數(shù)據(jù)處理□數(shù)據(jù)管理:通過查詢技術(shù)對數(shù)據(jù)進行頻繁訪問□數(shù)據(jù)處理:通過應(yīng)用程序?qū)?shù)據(jù)進行計算處理2.2
關(guān)系數(shù)據(jù)標(biāo)準(zhǔn)語言SQL□使用數(shù)據(jù)庫:高效、正確和完整查詢所需數(shù)據(jù)□數(shù)據(jù)庫技術(shù)是一種數(shù)據(jù)管理技術(shù)□數(shù)據(jù)庫語言具不同于一般高級程序語言的特征□SQL:一種得到廣泛使用關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言2.2
關(guān)系數(shù)據(jù)標(biāo)準(zhǔn)語言SQL□20世紀(jì)70年代,IBM研制SystemR使用SEQUEL非過程關(guān)系數(shù)據(jù)語言,這是SQL雛形□1982IBM:首個商品化DBMS:SQL/DS,使用SQL〔StructuredQueryLanguage〕取代SEQUEL□1986國家標(biāo)準(zhǔn)協(xié)會〔ANSI〕:首個SQL標(biāo)準(zhǔn)SQL-86.□1987國際標(biāo)準(zhǔn)化組織〔ISO〕:通過SQL標(biāo)準(zhǔn)□1989ISO公布SQL-89。2.2
關(guān)系數(shù)據(jù)標(biāo)準(zhǔn)語言SQL□1992ISO公布SQL-92□1999ISO公布SQL-99增添對象數(shù)據(jù)管理功能擴充□2003ISO公布SQL-2003關(guān)系到對象的二次擴充□2003ISO公布SQL-2006增添XML管理功能
具有里程碑意義的是SQL-92和SQL-99SQL-92:集經(jīng)典關(guān)系數(shù)據(jù)管理之大成SQL-99:開啟由傳統(tǒng)關(guān)系數(shù)據(jù)到新型數(shù)據(jù)管理歷史轉(zhuǎn)變2.2
關(guān)系數(shù)據(jù)標(biāo)準(zhǔn)語言SQL①高度綜合統(tǒng)一SQL雖然名為結(jié)構(gòu)查詢語言具有完成數(shù)據(jù)庫幾乎所有功能的綜合統(tǒng)一機制:□重構(gòu)與維護□完整性與平安性□并發(fā)控制與故障恢復(fù)等SQL根本特征②非過程操作□先前數(shù)據(jù)庫語言面向過程語言,即不僅告知系統(tǒng)“做什么”,更需要告知“如何做”□SQL是一種面向結(jié)果的“非過程”語言即只要告知系統(tǒng)“做什么”,不需要告知“如何做”具體實現(xiàn)完全對于用戶透明由此大大拓展了關(guān)系數(shù)據(jù)庫的用戶面SQL根本特征③面向集合處理□程序語言每次處理對象大多是單個數(shù)據(jù)具有特征:“一次一數(shù)據(jù)”□SQL處理對象是“元組”集合,輸出結(jié)果也是關(guān)系表
具有特征:“一次一集合”從而能夠簡化相應(yīng)的系統(tǒng)設(shè)計,增強系統(tǒng)效率SQL根本特征④多樣使用方式SQL能夠獨立地用于數(shù)據(jù)處理的聯(lián)機交互□SQL獨立完成指定操作為一般用戶提供數(shù)據(jù)使用□SQL語句嵌入程序設(shè)計語言為程序設(shè)計人員使用一種語法結(jié)構(gòu)而提供多種應(yīng)用方式為實際應(yīng)用帶來極大靈活性與方便性SQL根本特征⑤語言簡潔易學(xué)為實現(xiàn)創(chuàng)立、查詢和更新等關(guān)系數(shù)據(jù)核心操作SQL只需要如以下圖所示的九個動詞如以下圖所示各類SQL語句十分接近于自然英語表達,簡潔易懂。SQL根本特征SQL中關(guān)系定義就是模式定義,包括□定義數(shù)據(jù)庫模式〔數(shù)據(jù)庫〕□定義關(guān)系模式〔根本表和視圖〕此時“定義”實際包括“創(chuàng)立”〔CREATE〕“撤銷”〔DROP〕“修改”〔ALTER〕
關(guān)系定義SQL數(shù)據(jù)操作主要分為數(shù)據(jù)查詢和數(shù)據(jù)更新兩種情形數(shù)據(jù)查詢的根本操作是投影、選擇和連接。數(shù)據(jù)更新的根本操作是插入、刪除和修改。SQL數(shù)據(jù)查詢功能可看做一種基于關(guān)系運算的操作形式。在關(guān)系代數(shù)當(dāng)中,許多查詢的邏輯實現(xiàn)都可被描述為“選擇之后再投影”的常見運算,即可用下面根本表達式表示:∏a1,ar2,…,anσF〔R1R2R3…Rn〕
關(guān)系定義這個表達式中有三組根本參數(shù)?!癫樵兊哪繕?biāo)屬性:a1,a2,…,an?!癫樵兯婕暗年P(guān)系:R1,R2,R3,…,Rn?!癫樵兊倪壿嫍l件:F。在SQL中,上述根本表達式可以被抽象為一個映射塊,這個映射塊構(gòu)成SQL查詢的根本語句——映像〔Mapping〕語句,而上述三組參數(shù)實現(xiàn)使用映像語句的三個子句分別表示。這三個子句是SELECT子句、FROM子句和WHERE子句。
關(guān)系定義⑴SELECT子句:表示查詢結(jié)果中所需的目標(biāo)屬性,可看作做應(yīng)于關(guān)系代數(shù)中投影運算。⑵
FROM子句:表示查詢所涉及的一個或多個關(guān)系,在多個關(guān)系情形,可看做對應(yīng)于關(guān)系代數(shù)中的連接運算。⑶
WHERE子句:表示作用于FROM子句所列關(guān)系中相關(guān)屬性上的邏輯條件,可看做對應(yīng)于關(guān)系代數(shù)中的選擇運算。
關(guān)系定義由上述三個子句組成的映像語句的一般格式為:SELECT[ALL|DISTINCT]<屬性名>[,<屬性名>]…FROM<根本表名或視圖名>[,<根本表名或視圖名>]…[WHERE<邏輯條件式>][GROUPBY<屬性名1>[HAVING<邏輯表達式>]][ORDERBY<屬性名2>[ASC|DESC]]
關(guān)系定義上述整個映像語句的運算含義描述如下:首先,根據(jù)WHERE子句中的條件表達式進行選擇;其次,由FROM子句指定的根本表或視圖中檢索滿足條件的元組;最后,按照SELECT子句中的目標(biāo)屬性表達式,選出元組中的屬性值形成結(jié)果關(guān)系表。
關(guān)系定義設(shè)需要定義一個“學(xué)生-課程數(shù)據(jù)庫”S-C:學(xué)生關(guān)系表:S(Sno,Sname,Ssex,Sage,Sdept)課程關(guān)系表:C(Cno,Cname,Cpno,Ccredit)學(xué)生課程關(guān)系表:SC(Sno,Cno,Grade)例2-1創(chuàng)立一個學(xué)生-課程數(shù)據(jù)庫S-CCREATESCHEMA“S-C”AUTHORIZATIONJohn;
關(guān)系定義例2-5建立一個“學(xué)生選課”根本表SCCREATETABLESC(SnoCHAR(9),CnoCHAR(4),GradeSMALLINT,PRIMARYKEY(Sno,Cno),F(xiàn)OREIGNKEY(Sno)REFERENCESS(Sno),F(xiàn)OREIGNKEY(Cno)REFERENCESC(Cno) );
關(guān)系定義例2-10建立計算機科學(xué)系的學(xué)生視圖。
CREATEVIEWCS_SASSELECTSno,Sname,SageFROMStudentWHERESdept=‘IS’;
關(guān)系定義關(guān)系數(shù)據(jù)查詢分為□基于單表查詢□基于連接的多表查詢□基于嵌套的多表查詢基于嵌套查詢:
●
不相關(guān)子查詢
●
相關(guān)子查詢
數(shù)據(jù)查詢例2-13基于連接多表查詢:查詢每個學(xué)生及其選修課程的情況SELECTStudent.*,SC.*FROMStudent,SCWHEREStudent.Sno=SC.Sno;
數(shù)據(jù)查詢例2-14
基于嵌套的多表查詢:查詢選修了課程名為“DB”的學(xué)生學(xué)號和姓名
SELECTSno,Sname
//③
最后在Student關(guān)系中取出Sno
和Sname FROMStudent WHERESnoIN(SELECTSno//②
然后在SC關(guān)系中找出選修了3號課程的學(xué)
生學(xué)號
FROMSCWHERECnoIN(SELECTCno//①
首先在C中找出“DB”的課程號—3號
FROMCWHERECname=‘DB’));
數(shù)據(jù)查詢例2-16設(shè)有如下嵌套查詢SELECTSnameFROMStudentWHEREEXISTS(SELECT*FROMSCWHERESno=Student.SnoANDCno='1');那么可以轉(zhuǎn)換為如下連接查詢:SELECTSname FROMStudent,SC WHEREStudent.Sno=SC.SnoANDSC.Cno='1';
數(shù)據(jù)查詢SQL有插入元組和插入子查詢結(jié)果兩種方式例2-18
對每一個系,求學(xué)生平均年齡首先,定義相應(yīng)關(guān)系表Dept_age:
CREATETABLEDept_age(SdeptCHAR(15) /*系名*/Avg_ageSMALLINT); /*學(xué)生平均年齡*/向Dept_age插入數(shù)據(jù)
INSERTINTODept_age(Sdept,Avg_age)
SELECTSdept,AVG(Sage)FROMStudentGROUPBYSdept;2.2.3數(shù)據(jù)更新2.數(shù)據(jù)刪除例2-19
刪除CS中所有學(xué)生的選課記錄。
DELETEFROMSCWHERE'CS'=(SELETESdeptFROMStudentWHEREStudent.Sno=SC.Sno);
數(shù)據(jù)更新3.數(shù)據(jù)修改例2-20
將計算機科學(xué)系全體學(xué)生的成績置零。
UPDATESCSETGrade=0WHERE'CS'=(SELETESdeptFROMStudentWHEREStudent.Sno=SC.Sno);2.2.3數(shù)據(jù)更新第2章關(guān)系數(shù)據(jù)庫根底2.1關(guān)系數(shù)據(jù)模型2.2關(guān)系數(shù)據(jù)語言SQL2.3關(guān)系模式設(shè)計2.4關(guān)系數(shù)據(jù)庫保護2.5關(guān)系數(shù)據(jù)事務(wù)管理關(guān)系數(shù)據(jù)模式設(shè)計=關(guān)系數(shù)據(jù)庫邏輯設(shè)計針對具體問題構(gòu)造一個相應(yīng)數(shù)據(jù)模式構(gòu)造原理:關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)化理論實際應(yīng)用問題中需要將客觀實體各種特征抽象為屬性然后將這些屬性構(gòu)成相應(yīng)關(guān)系模式實際中抽象出來的多個屬性不能簡單湊成假設(shè)干個關(guān)系模式□“有關(guān)聯(lián)”和“沒關(guān)聯(lián)”屬性不可組成同一個關(guān)系表□“強關(guān)聯(lián)”和“弱關(guān)聯(lián)”屬性不可組成同一個關(guān)系表否那么會產(chǎn)生數(shù)據(jù)冗余數(shù)據(jù)冗余會引發(fā)數(shù)據(jù)異常2.3
關(guān)系模式設(shè)計為了防止由于數(shù)據(jù)冗余帶來的數(shù)據(jù)不一致只能將有關(guān)聯(lián)的屬性子集以及有較強關(guān)聯(lián)的屬性子集放在一起構(gòu)成相應(yīng)關(guān)系模式需要研究:□如何刻畫屬性子集之間的語義關(guān)聯(lián)?□如何得到屬性子集之間的語義關(guān)聯(lián)?
函數(shù)依賴〔1〕描述屬性間語義關(guān)聯(lián)就是研究各類數(shù)據(jù)依賴數(shù)據(jù)依賴:關(guān)系模式內(nèi)部屬性間約束關(guān)系反映數(shù)據(jù)內(nèi)在性質(zhì)是數(shù)據(jù)語義的實際表達。主要數(shù)據(jù)依賴□函數(shù)依賴〔FunctionalDependency,F(xiàn)D〕□多值依賴〔MultivaluedDependency,MVD〕□連接依賴〔JoinedDependency,JD〕〔2〕獲取屬性間語義關(guān)聯(lián)的根本途徑□構(gòu)建Armstrong公理系統(tǒng)□研究建立其上的相關(guān)技術(shù)2.3
關(guān)系模式設(shè)計函數(shù)依賴:最根本的數(shù)據(jù)依賴設(shè)R(U)是一個屬性集U上的關(guān)系模式,X和Y是U的子集。假設(shè)對于R(U)的任意一個可能的關(guān)系r,r中不可能存在兩個元組在X上的屬性值相等而在Y上的屬性值不等,那么稱“X函數(shù)確定Y”或“Y函數(shù)依賴于X”記作X→Y。其中X稱為決定因素屬性組,Y稱為依賴因素屬性組
函數(shù)依賴函數(shù)依賴類型〔1〕平凡函數(shù)依賴與非平凡函數(shù)依賴假設(shè)X→Y,但YX,那么X→Y是非平凡的函數(shù)依賴假設(shè)X→Y,但YX,那么X→Y是平凡的函數(shù)依賴〔2〕局部函數(shù)依賴在R(U)中,假設(shè)X→Y,并且對于X的任何一個真子集X’,都有X’不函數(shù)依賴于Y,那么稱Y對X完全函數(shù)依賴假設(shè)X→Y,但Y不完全函數(shù)依賴于X,那么Y對X局部函數(shù)依賴〔3〕傳遞函數(shù)依賴在R(U)中,如X→Y,(YX),Y→XY→Z,那么稱Z對X傳遞函數(shù)依賴。記為:X→Z如Y→X,即X←→Y,那么Z直接依賴于X
函數(shù)依賴□平凡函數(shù)依賴\□局部函數(shù)依賴--“弱”語義關(guān)聯(lián)數(shù)據(jù)依賴□傳遞函數(shù)依賴/□非平凡函數(shù)依賴\□完全函數(shù)依賴--“強”語義關(guān)聯(lián)數(shù)據(jù)依賴□直接函數(shù)依賴/
函數(shù)依賴關(guān)系模式設(shè)計根本要求:●不能將無數(shù)據(jù)語義關(guān)聯(lián)的屬性做成一個關(guān)系模式●不能將弱數(shù)據(jù)語義關(guān)聯(lián)的屬性做成一個關(guān)系模式□根本前提確定給定屬性集合上所有屬性子集之間的函數(shù)依賴關(guān)聯(lián)□根本工具Armstrong公理系統(tǒng)
函數(shù)依賴為什么要創(chuàng)立Armstrong公理系統(tǒng):●對給定屬性集合,需找出其上所有函數(shù)依賴組成集合●給定屬性集有或者顯而易見函數(shù)依賴組的較小集合●需要從這些函數(shù)依賴集合出發(fā)得到所有函數(shù)依賴●通過Armstrong公理系統(tǒng),通過計算機完成上述工作
函數(shù)依賴怎樣通過得到所有函數(shù)依賴之集:□給定屬性集合上函數(shù)依賴集為F通過基于函數(shù)依賴語義推理“邏輯蘊含”得到F的包F+□計算機是不能基于語義進行推理,只能通過基于語法進行推演的“邏輯推演”□需要“比照”函數(shù)依賴語義建立相應(yīng)推演系統(tǒng)這個系統(tǒng)就是Armstrong公理系統(tǒng)
函數(shù)依賴“邏輯蘊含”與“邏輯推演”的等價性:●Armstrong公理比照函數(shù)依賴相關(guān)語義建立,需研究:□邏輯推演的結(jié)果是否一定是“邏輯蘊含”的結(jié)果?□邏輯蘊含結(jié)果是否一定能夠通過“邏輯推演”得到?●基于“語義”推理和基于“語法”推演等價性問題這也是任何計算機智能需要研究的關(guān)鍵性問題●Armstrong公理系統(tǒng)意義□實現(xiàn)了邏輯蘊含和邏輯推演的等價性□純粹數(shù)理邏輯在計算機學(xué)科的成果應(yīng)用案例
函數(shù)依賴使用計算機獲得給定屬性集合函數(shù)依賴集合思路:●通過各種適宜方法獲取初始函數(shù)依賴子集F●通過基于Armstrong公理系統(tǒng)得到F的邏輯推演結(jié)果F0●通過邏輯蘊含和邏輯推演的等價性,F(xiàn)0就是基于邏輯蘊含的閉包F+
函數(shù)依賴1.函數(shù)依賴集的閉包□給定R〔U〕,總有函數(shù)依賴存在,如平凡函數(shù)依賴和由候選鍵確定的函數(shù)依賴?!跬ǔ付ㄒ恍┱Z義明顯的函數(shù)依賴以構(gòu)建一個集合F,以F作為討論的初始根底。這就將問題轉(zhuǎn)化為如何通過由初始函數(shù)依賴集合F得到其它未知函數(shù)依賴
Armstrong公理系統(tǒng)例2-27設(shè)有R〔U〕,X、Y、Z?U,A、B∈U。X→{A,B}、X→Y和Y→Z是R〔U〕上非平凡函數(shù)依賴。按照函數(shù)依賴概念可得X→{A}和X→{B};按照傳遞依賴概念可得X→Z。上述函數(shù)依賴并不直接顯現(xiàn),而是按照一定規(guī)那么〔函數(shù)依賴和傳遞函數(shù)依賴概念〕由函數(shù)依賴“推導(dǎo)”出來將此一般化,就是如何由的函數(shù)依賴集合F,推導(dǎo)出新的函數(shù)依賴
Armstrong公理系統(tǒng)①函數(shù)依賴集合F的邏輯蘊含設(shè)有關(guān)系模式R〔U,F(xiàn)〕,X、Y?U,假設(shè)R中滿足F中函數(shù)依賴的關(guān)系實例r也滿足X→Y,那么稱F邏輯蘊含X→Y,記為F╞X→Y②函數(shù)依賴集合F的閉包被F邏輯蘊含的函數(shù)依賴全體構(gòu)成集合稱為函數(shù)依賴集F的閉包記為F+,即F+={X→Y|F╞X→Y}顯然F?F+如果還有F=F+,那么稱F是函數(shù)依賴的完備集合。
Armstrong公理系統(tǒng)由函數(shù)依賴集F求新函數(shù)依賴可歸結(jié)為求F+但根據(jù)函數(shù)依賴定義完成這項工作卻相當(dāng)困難因為屬性間函數(shù)依賴關(guān)系存在與否完全取決于數(shù)據(jù)語義例如,對于一個教師來說,如果只允許有一個電子郵箱,那么教師工號確定后,其電子郵箱地址隨之確定。但如果教師有多個電子郵箱,那么上述函數(shù)依賴就不存在
Armstrong公理系統(tǒng)□確定函數(shù)依賴,需仔細(xì)研究數(shù)據(jù)語義不能僅根據(jù)當(dāng)前數(shù)據(jù)值進行歸納,更不能“想當(dāng)然”□實際中難以從語義得到所需要各種新函數(shù)依賴,□更難保證沒有遺漏得到能由F邏輯蘊含“所有”函數(shù)依賴
Armstrong公理系統(tǒng)數(shù)理邏輯提供了解決問題的思路:□先將語義求解轉(zhuǎn)換為語法求解,□即將“邏輯蘊含”轉(zhuǎn)換為“邏輯推導(dǎo)”,□再討論兩者“等價性”,即通常所說的有效性與完備性這種根本考慮在關(guān)系模式設(shè)計理論中就表達為基于Armstrong公理系統(tǒng)的函數(shù)依賴推導(dǎo)技術(shù)
Armstrong公理系統(tǒng)2.Armstrong公理系統(tǒng)為建立基于函數(shù)依賴的語法系統(tǒng),求得函數(shù)依賴集合閉包F+于1974年提出一套推導(dǎo)規(guī)那么。這套規(guī)那么能由已有函數(shù)依賴“邏輯推導(dǎo)”出新的函數(shù)依賴經(jīng)過不斷完善,形成了著名的“Armstrong公理系統(tǒng)”為關(guān)系模式設(shè)計提供了一個有效并且完備的理論根底
Armstrong公理系統(tǒng)〔1〕根本公理與推理規(guī)那么1〕根本公理Armstrong公理系統(tǒng)3條根本公理①A1〔自反律,reflexivity〕如果YXU,那么X→Y。②A2〔增廣律,augmentation〕如果X→Y在R〔U〕上成立,且ZU,那么XZ→YZ③A3〔傳遞律,transitivity〕如果X→Y和Y→Z成立,那么X→Z。
Armstrong公理系統(tǒng)將F中函數(shù)依賴看作“形式”公式,即在相關(guān)討論中并不涉及這些公式的語義,僅僅將其看做一些符號的組合,而形式公式正是數(shù)理邏輯中語法系統(tǒng)研究的對象。按照三公理,由F中形式公式“邏輯推導(dǎo)”出新形式公式如果形式公式Q可通過Armstrong公理系統(tǒng)由形式公式P“邏輯推導(dǎo)”得到,那么記為P?Q。
Armstrong公理系統(tǒng)2〕推理規(guī)那么由根本公理A1、A2和A3為根底,可得下面五條推理規(guī)那么⑴A4〔合并性規(guī)那么union〕{X→Y,X→Z}?X→YZ。⑵A5〔分解性規(guī)那么decomposition〕:{X→Y,ZY}?X→Z。⑶A6〔擬傳遞性規(guī)那么pseudotransivity〕{X→Y,WY→Z}?WX→Z。⑷A7〔復(fù)合性規(guī)那么compositionrule〕{X→Y,W→Z}?WX→YZ。⑸A8〔通用一致性規(guī)那么generalunificationrule〕:{X→Y,W→Z}?X〔W-Y〕→YZ。
Armstrong公理系統(tǒng)3.有效性和完備性□如果由F出發(fā)根據(jù)Armstrong公理邏輯推導(dǎo)出的每個形式公式X→Y作為“函數(shù)依賴”X→Y都在F+當(dāng)中,那么稱Armstrong公理系統(tǒng)是有效的?!跞绻鸉+中每個函數(shù)依賴X→Y都可通過將F中元素作為“形式公式”,根據(jù)Armstrong公理系統(tǒng)“邏輯推導(dǎo)”而得到,那么稱Armstrong公理系統(tǒng)是完備的。
Armstrong公理系統(tǒng)●公理系統(tǒng)有效性
保證了所有邏輯推導(dǎo)出的“形式公式”作為函數(shù)依賴都是語義為真,即邏輯推導(dǎo)出的形式公式都是函數(shù)依賴;●公理系統(tǒng)完備性保證了可以邏輯推導(dǎo)出所有可能的函數(shù)依賴,即所有函數(shù)依賴都可以由邏輯推導(dǎo)得到,或者說,不能用公理系統(tǒng)邏輯推導(dǎo)的函數(shù)依賴都不能為真可以證明,Armstrong公理具有有效性與完備性
Armstrong公理系統(tǒng)范式符合某一種級別的關(guān)系模式的集合□關(guān)系數(shù)據(jù)庫中的關(guān)系必須滿足一定的要求□滿足不同程度要求的為不同范式□關(guān)系模式R為第n范式,可簡記為R∈nNF□一個低一級范式的關(guān)系模式通過模式分解可以轉(zhuǎn)換為假設(shè)干個高一級范式的關(guān)系模式的集合過程叫標(biāo)準(zhǔn)化
關(guān)系模式范式〔1〕第一范式□如果一個關(guān)系模式R所有屬性都是不可分的根本數(shù)據(jù)項那么R∈1NF?!醯谝环妒绞菍﹃P(guān)系模式最根本要求不滿足第一范式數(shù)據(jù)庫模式不能稱為關(guān)系數(shù)據(jù)庫□對于不滿足1NF的關(guān)系模式,需將不滿足要求的屬性“分解”為滿足原子性多個屬性
關(guān)系模式范式〔2〕第2范式假設(shè)R∈1NF,且每一個非主屬性完全函數(shù)依賴于鍵,那么稱R滿足第2方式,記為R∈2NF〔3〕第3范式□關(guān)系模式R中假設(shè)不存在這樣的鍵X、屬性組Y及非主屬性Z〔Z?Y〕,使得X→Y,Y→Z成立,那么稱R滿足第3范式記為R∈3NFN假設(shè)R∈3NF必有R∈2NF□假設(shè)R∈3NF,那么每一個非主屬性既不局部依賴于鍵也不傳遞依賴于鍵。
關(guān)系模式范式〔4〕BC范式關(guān)系模式∈1NF,假設(shè)X→Y且Y?X時X必含有鍵,那么稱R滿足BCNF,并記為R∈BCNF。R∈BCNF等價于每一個決定因素屬性組都包含主鍵。當(dāng)假設(shè)R∈BCNF時,所有非主屬性對鍵都是完全函數(shù)依賴;所有主屬性對每一個不包含它的鍵也是完全函數(shù)依賴;沒有任何屬性完全函數(shù)依賴于非鍵的任何一組屬性。R∈BCNF必有R∈3NF。
關(guān)系模式范式多值依賴和連接依賴是更為一般的數(shù)據(jù)依賴聯(lián)系。1.多值依賴與4NF□函數(shù)依賴實質(zhì)上反映的是“多對一”聯(lián)系□在實際應(yīng)用中還會有“一對多”數(shù)據(jù)聯(lián)系□諸如此類不同于函數(shù)依賴的數(shù)據(jù)聯(lián)系也會產(chǎn)生數(shù)據(jù)冗余從而引發(fā)各種數(shù)據(jù)異常
多值依賴和連接依賴〔1〕多值依賴設(shè)有關(guān)系模式R〔U〕,X、Y是屬性集U中兩個子集,而r是R〔U〕中任意給定一個關(guān)系實例。如果下述條件成立,那么稱Y多值依賴于X,記為X→→Y。①對于r在X上的一個確定的值〔元組〕,都有r在Y中一組值與之對應(yīng)②Y的這組對應(yīng)值與r在Z=U-X-Y中的屬性值無關(guān)如果X→→Y,但Z=U-X-Y≠Φ,那么稱其為非平凡多值依賴,否那么稱為平凡多值依賴。平凡多值依賴常見情形是U=X∪Y,此時Z=Φ。
多值依賴和連接依賴〔2〕第4范式——4NF對于R〔U〕中的任意兩個屬性子集X和Y,如果對于任意非平凡多值依賴X→→Y,X都為超鍵,那么稱R〔U〕滿足第4范式,記為R〔U〕∈4NF。①由于R〔U〕上的函數(shù)依賴X→Y可看做多值依賴X→→Y,如果R〔U〕屬于第4范式,此時X就是超鍵,所以X→Y滿足BCNF,即4NF中所有的函數(shù)依賴都滿足BCNF。
多值依賴和連接依賴2.連接依賴與5NF更為一般數(shù)據(jù)依賴是連接依賴。就像引入多值依賴之后,函數(shù)依賴就成為多值依賴特例引入連接依賴概念之后,多值依賴就可以作為連接依賴的特例對于連接依賴,也有相應(yīng)的第5范式。實際應(yīng)用中,主要是函數(shù)依賴及相應(yīng)范式。各種數(shù)據(jù)依賴和范式之間關(guān)系如以下圖所示。
多值依賴和連接依賴
多值依賴和連接依賴第2章關(guān)系數(shù)據(jù)庫根底2.1關(guān)系數(shù)據(jù)模型2.2關(guān)系數(shù)據(jù)語言SQL2.3關(guān)系模式設(shè)計2.4關(guān)系數(shù)據(jù)庫保護2.5關(guān)系數(shù)據(jù)事務(wù)管理關(guān)系數(shù)據(jù)庫保護是指數(shù)據(jù)庫完整性保護和平安性保護□數(shù)據(jù)庫完整性保護:防范目標(biāo):數(shù)據(jù)庫中不符合語義即不正確的數(shù)據(jù)防范對象:合法用戶的非法操作□數(shù)據(jù)庫平安性保護:防范目標(biāo):保護數(shù)據(jù)庫防止惡意破壞和非法存取防范對象:非法用戶的非法操作2.4關(guān)系數(shù)據(jù)庫保護數(shù)據(jù)庫完整性:□邏輯描述上:數(shù)據(jù)正確性和相容性□技術(shù)實現(xiàn)上:指數(shù)據(jù)實體完整性、參照完整性、用戶完整性〔1〕實體完整性在CREATETABLE由PRIMARYKEY定義□如主鍵由單屬性構(gòu)成,可將其定義為列級約束條件□如主鍵由多屬性構(gòu)成,需將其定義為表級約束條件完整性保護〔2〕參照完整性保護關(guān)系模式參照完整性在CREATETABLE中□用FOREIGNKEY定義哪些列為外鍵□用REFERENCES指明這些外鍵參照哪些表的主鍵。例如,關(guān)系SC一元組表示一學(xué)生選修的某門課程的成績〔Sno,Cno〕是主鍵Sno,Cno分別參照引用Student主鍵和Course主鍵完整性保護出現(xiàn)破壞參照完整性情形時DBMS會進行相應(yīng)處理完整性保護違反參照完整性三種處理方式:□拒絕(NOACTION):系統(tǒng)默認(rèn)策略;□級聯(lián)(CASCADE)□設(shè)置為空值〔SET-NULL〕對于參照完整性,除定義外鍵外還應(yīng)定義外鍵列是否允許空值完整性保護〔3〕用戶定義完整性保護用戶定義完整性約束在SQL中分為兩種類型:●直接使用:創(chuàng)立關(guān)系表時定義用戶約束□屬性級約束□元組級約束●間接調(diào)用:獨立定義用戶完整性約束□斷言約束□域約束完整性保護間接調(diào)用:獨立定義用戶完整性約束①斷言〔Asseertion〕完整性約束涉及多個關(guān)系或聚合時可使用SQL“斷言”約束
●創(chuàng)立:CREATEASSERTION<斷言名>CHECK〔<條件>〕
<條件>與SELECT語句中WHERE子句條件關(guān)系達式相同
完整性保護●撤銷:DROPASSERTION<斷言名>
撤銷斷言句法不提供RESTRICT和CHECK〔<條件>〕
例6-27關(guān)系T,S,C,SC中使用斷言寫出完整性約束。
□每位教師開設(shè)的課程不超過10門
CREATEASSERTIONASSE1CHECK
〔10>=ALL(SELECTCOUNT(C#)
FROMC
GROUPBYT#)〕;完整性保護②域(Domain)約束
SQL支持域的使用,可創(chuàng)立一個域并在其上定義相應(yīng)約束
域約束作用于所有屬于指定域的屬性列●創(chuàng)立:CREATEDOMAIN<域名><域類型>CHECK<條件>域約束語句可使用CHECK子句。為便于引用,約束可以命名。
約束命名使用保存字CONSTRAINT。
完整性保護例6-26
CREATEDOMAINGradesCHAR〔1〕DEFULT‘?’
CONSTRAINTVALID-Grades
CHECK〔VALUEIN
〔‘A’,‘B’,‘C’,‘D’,‘E’,‘?’〕〕□上述定義一個新的域Grades□并加一個名為“VALID-Grades”域約束□CHECK子句指明定義在該域列上取值,缺省值為“?”完整性保護如對SC〔S#,C#,G〕中G用域Grades定義:
CREATETABLESC
〔S#NUMERIC〔6〕,
C#CHAR〔6〕,
GGrades,
……〕;對SC進行插入操作時,每插入一條學(xué)生成績記錄,其成績G須為CHECK子句指明值,缺省時為“?”
否那么為非法成績值,系統(tǒng)將會產(chǎn)生一個含有約束名為“VALID-Grades”的診斷信息,以關(guān)系明當(dāng)前操作不滿足該域約束
完整性保護●數(shù)據(jù)庫平安性涉及技術(shù)平安、管理平安和政策平安●數(shù)據(jù)庫學(xué)科主要討論技術(shù)平安 □操作系統(tǒng)平安、 □網(wǎng)絡(luò)平安□數(shù)據(jù)庫自身平安技術(shù)?!駭?shù)據(jù)庫平安技術(shù):數(shù)據(jù)庫自身平安技術(shù)●數(shù)據(jù)庫自身平安技術(shù):數(shù)據(jù)庫平安性控制、視圖和審計其中平安性控制是數(shù)據(jù)庫平安性保護主要技術(shù)支撐平安性保護〔1〕基于存取控制的平安性技術(shù)數(shù)據(jù)庫平安性控制:自主存取控制和強制存取控制①自主存取控制〔DAC〕:□用戶對于不同數(shù)據(jù)庫對象具有不同存取權(quán)限□不同用戶對同一數(shù)據(jù)庫對象具有不同存取權(quán)限□只有具有相應(yīng)權(quán)限的用戶才能存取相應(yīng)的數(shù)據(jù)庫對象平安性保護□用戶權(quán)限:數(shù)據(jù)庫對象操作類型□數(shù)據(jù)庫對象:數(shù)據(jù)庫、根本表、視圖和索引等□數(shù)據(jù)庫操作:創(chuàng)立、更新、查詢等□RDBMS支持自主存取控制□SQL通過GRANT和REVOKE語句實現(xiàn)自主存取控制平安性保護②強制存取控制〔MAC〕:□每個數(shù)據(jù)庫對象都分配一個“密級”□每個用戶也被授予一個級別□對于每個數(shù)據(jù)庫對象,根據(jù)其密級,具有相應(yīng)合法許可證級別的用戶才能存取□相比自主存取控制,強制存取控制平安性檢查更為嚴(yán)格實際應(yīng)用中,在實現(xiàn)MAC之前先實現(xiàn)DAC,由兩者共同構(gòu)成數(shù)據(jù)庫的平安性保護平安性保護〔2〕基于視圖的平安性保護□為不同用戶創(chuàng)立不同視圖□通過將數(shù)據(jù)對象限制在一定范圍□把需要保密的數(shù)據(jù)對無權(quán)存取的用戶屏蔽起來□自動為數(shù)據(jù)提供一定程度的平安性保護例2-46建立計算機系學(xué)生的視圖,把對該視圖的SELECT權(quán)限授于王平,把該視圖上的所有操作權(quán)限授于張明平安性保護先建立計算機系學(xué)生的視圖CS_StudentCREATEVIEWCS_StudentASSELECT*FROMStudentWHERESdept='CS';平安性保護〔3〕基于審計的平安性保護基于存取控制和視圖平安性機制可看作是“事先預(yù)防”任何平安性措施都會有缺陷,都有可能被攻破審計〔audit〕:□將用戶對于數(shù)據(jù)庫對象所有操作都通過審計日志予以記錄□然后通過審計跟蹤性心□重現(xiàn)導(dǎo)致數(shù)據(jù)庫平安性破壞的一系列事件□從而發(fā)現(xiàn)非法存取的人、事件和內(nèi)容等平安性保護第2章關(guān)系數(shù)據(jù)庫根底2.1關(guān)系數(shù)據(jù)模型2.2關(guān)系數(shù)據(jù)語言SQL2.3關(guān)系模式設(shè)計2.4關(guān)系數(shù)據(jù)庫保護2.5關(guān)系數(shù)據(jù)事務(wù)管理完成業(yè)務(wù)工作常常會涉及到多個數(shù)據(jù)操作組成的序列技術(shù)上:每個操作都可獨立完成邏輯上:只有序列中每個操作都完成才能實現(xiàn)一項業(yè)務(wù)工作這些可單個執(zhí)行的操作有內(nèi)在關(guān)聯(lián)它們組成的操作序列需看做一個不可分割的工作單元這種工作單元就是數(shù)據(jù)庫中的事務(wù)2.5關(guān)系數(shù)據(jù)事務(wù)管理事務(wù)〔transaction〕:滿足下述性質(zhì)的數(shù)據(jù)操作序列:①工作執(zhí)行的原子性〔Atomic〕序列中數(shù)據(jù)操作“要么全做,要么全不做”,不能存在局部完成情況②更行操作的一致性〔comsistency〕執(zhí)行數(shù)據(jù)更新過程中保證數(shù)據(jù)前后一致性,能夠從一種一致性狀態(tài)轉(zhuǎn)換到另一種一致性狀態(tài)2.5關(guān)系數(shù)據(jù)事務(wù)管理③并發(fā)執(zhí)行的隔離性〔Isolation〕如果多個操作序列同時執(zhí)行,最終效果需與單個操作序列獨立執(zhí)行相同④成功結(jié)果的持久性〔Durability〕當(dāng)操作序列成功執(zhí)行后相應(yīng)數(shù)據(jù)結(jié)果于數(shù)據(jù)庫影響持久即便是當(dāng)數(shù)據(jù)庫發(fā)生故障遭到破壞時也能恢復(fù)原先結(jié)果2.5關(guān)系數(shù)據(jù)事務(wù)管理數(shù)據(jù)庫根本目標(biāo)是對實現(xiàn)對數(shù)據(jù)的統(tǒng)一管理和用戶共享實現(xiàn)用戶共享數(shù)據(jù)技術(shù)途徑:多項數(shù)據(jù)庫操作并發(fā)執(zhí)行進行統(tǒng)一管理數(shù)據(jù)重要任務(wù):數(shù)據(jù)庫故障恢復(fù)事務(wù)管理:“并發(fā)執(zhí)行”和“故障恢復(fù)”適當(dāng)和有效技術(shù)實現(xiàn)架構(gòu)2.5關(guān)系數(shù)據(jù)事務(wù)管理數(shù)據(jù)庫共享:多用戶同時使用數(shù)據(jù)庫中同一數(shù)據(jù)即數(shù)據(jù)庫多事務(wù)并發(fā)執(zhí)行多事務(wù)并發(fā)執(zhí)行三種實現(xiàn)方式①事務(wù)串行執(zhí)行
每時刻只有一個事務(wù)運行其它事務(wù)須等該事務(wù)結(jié)束方能運行缺點:不能充分利用系統(tǒng)資源,發(fā)揮數(shù)據(jù)庫共享資源特征2.5.1并發(fā)控制②交叉并發(fā)方式〔InterleavedConcurrency〕□單處理機系統(tǒng)并行事務(wù)操作輪流交叉運行,事務(wù)沒真正并行運行,但能減少處理機的空閑時間,提高系統(tǒng)效率③同時并發(fā)方式〔simultaneousconcurrency〕□多處理機系統(tǒng)每個處理機可運行一個事務(wù),多個處理機可以同時運行多個事務(wù),真正實現(xiàn)多事務(wù)并行運行。數(shù)據(jù)庫多事務(wù)并發(fā)執(zhí)行主要研究交叉并發(fā)執(zhí)行。2.5.1并發(fā)控制多事務(wù)并發(fā)執(zhí)行研究課題①如果不進行并發(fā)控制,會出現(xiàn)哪些問題,又如何解決?②并發(fā)調(diào)度有多種方式,如何判定那種方式“適宜”?③并發(fā)執(zhí)行的復(fù)雜性,在上述兩個問題之外,還會產(chǎn)生什么問題,又如何解決?2.5.1并發(fā)控制1.并發(fā)控制根本技術(shù)〔1〕并發(fā)控制必要性并發(fā)執(zhí)行需加以控制或調(diào)度,否那么會出現(xiàn)下述問題。①喪失修改②不可重復(fù)讀□事務(wù)T1讀取數(shù)據(jù)后□事務(wù)T2執(zhí)行更新操作□使T1無法再現(xiàn)前一次讀取結(jié)果2.5.1并發(fā)控制③讀“臟”數(shù)據(jù)□事務(wù)T1修改某一數(shù)據(jù),并將其寫回磁盤□事務(wù)T2讀取同一數(shù)據(jù)后,T1由于某種原因被撤銷□這時T1已修改正的數(shù)據(jù)恢復(fù)原值,T2讀到的數(shù)據(jù)就與數(shù)據(jù)庫中的數(shù)據(jù)不一致□T2讀到的數(shù)據(jù)就為“臟”數(shù)據(jù),即不正確的數(shù)據(jù)2.5.1并發(fā)控制(2)封鎖技術(shù)并發(fā)控制技術(shù):事務(wù)的封鎖技術(shù)。封鎖是系統(tǒng)對事務(wù)并發(fā)執(zhí)行的一種調(diào)度和控制保證系統(tǒng)對數(shù)據(jù)項的訪問以互斥方式進行封鎖根本點:對數(shù)據(jù)對象操作實行某種專有控制在一段時間內(nèi),防止其它事務(wù)訪問指定資源禁止對數(shù)據(jù)J進行操作保證并發(fā)執(zhí)行事務(wù)間相互隔離互不干擾2.5.1并發(fā)控制①事務(wù)T需對數(shù)據(jù)D進行操作〔讀/寫〕時,□須向系統(tǒng)提出申請,對D加以封鎖□加鎖成功后,即具有對數(shù)據(jù)D一定操作與控制權(quán)限□此時,其它事務(wù)不能對加鎖的數(shù)據(jù)D隨意操作②事務(wù)T操作完成之后即釋放鎖此后數(shù)據(jù)即可為其它事務(wù)操作效勞基于封鎖技術(shù)的事務(wù)進程如圖2-13所示。2.5.1并發(fā)控制2.5.1并發(fā)控制表級封鎖兩種形式●排它鎖〔eXclusivelocks〕:事務(wù)T對數(shù)據(jù)對象D加X鎖后,T可對D進行讀寫其它事務(wù)只有等到T解除X鎖后,才能對D進行封鎖和操作排它鎖實質(zhì):保證事務(wù)對數(shù)據(jù)的獨占性排除其它事務(wù)對它執(zhí)行過程的干擾2.5.1并發(fā)控制由于只容許一個事務(wù)單獨封鎖數(shù)據(jù),其它申請封鎖的事務(wù)只能排隊等待,所以采用X鎖時并發(fā)程度較低□共享鎖〔SharingLocks〕:事務(wù)T對數(shù)據(jù)D加S鎖之后,T可讀D但不能寫D其它事務(wù)可對D加S鎖但不能加X鎖□共享鎖實質(zhì):保證多個事務(wù)可以同時讀A但在施加共享封鎖的事務(wù)T釋放D上的S鎖之前其它各個事務(wù)〔包括T本身〕都不能寫D圖2-14所示為X鎖和S鎖的示意圖。2.5.1并發(fā)控制2.5.1并發(fā)控制(3)三級封鎖協(xié)議對數(shù)據(jù)封鎖時需約定一些規(guī)那么,如何時申請封鎖、持鎖時間和什么時間釋放封鎖等,這就是所謂封鎖協(xié)議①一級封鎖協(xié)議:□事務(wù)T對數(shù)據(jù)D進行寫操作前,須對D加X鎖保持加鎖狀態(tài)直到事務(wù)結(jié)束才可釋放加在D上的X鎖□一級封鎖協(xié)議可以防止“修改喪失”2.5.1并發(fā)控制②二級封鎖協(xié)議□事務(wù)T在讀取數(shù)據(jù)D前須先對D加S鎖□讀完之后即刻釋放加在D上的S鎖。此封鎖方式與一級封鎖
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度車輛質(zhì)押貸款合同模板5篇
- 二零二五版白酒市場調(diào)研與分析服務(wù)合同2篇
- 二零二五版便利店區(qū)域代理合作合同范本2篇
- 二零二五年度花卉市場花卉供貨與品牌孵化服務(wù)合同3篇
- 二零二五年環(huán)境監(jiān)測地形圖測繪與污染防控合同3篇
- 二零二五版電影影視基地建設(shè)贊助合同3篇
- 2025版金融機構(gòu)出納人員現(xiàn)金擔(dān)保責(zé)任合同范本3篇
- 二零二五年建材城商鋪租賃合同環(huán)保及安全責(zé)任承諾書3篇
- 二零二五年度民間借貸合同管轄權(quán)變更協(xié)議3篇
- 二零二五年度房地產(chǎn)買賣居間合同模板(含稅費繳納)下載3篇
- 《木蘭詩》第1第2課時示范公開課教學(xué)PPT課件【統(tǒng)編人教版七年級語文下冊】
- EGD殺生劑劑化學(xué)品安全技術(shù)說明(MSDS)zj
- GB/T 12229-2005通用閥門碳素鋼鑄件技術(shù)條件
- 超分子化學(xué)-第三章 陰離子的絡(luò)合主體
- 控制變量法教學(xué)課件
- 血壓計保養(yǎng)記錄表
- 食品的售后服務(wù)承諾書范本范文(通用3篇)
- 新外研版九年級上冊(初三)英語全冊教學(xué)課件PPT
- 初中中考英語總復(fù)習(xí)《代詞動詞連詞數(shù)詞》思維導(dǎo)圖
- 植物和五行關(guān)系解說
- 因式分解法提公因式法公式法
評論
0/150
提交評論