




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第一章 數(shù)據(jù)庫(kù)系統(tǒng)的世界The Worlds of Database Systems,數(shù)據(jù)庫(kù)系統(tǒng)的發(fā)展 數(shù)據(jù)庫(kù)管理系統(tǒng)的結(jié)構(gòu) 未來(lái)的數(shù)據(jù)庫(kù)系統(tǒng),2,1.1 數(shù)據(jù)庫(kù)系統(tǒng)的發(fā)展c,一、術(shù)語(yǔ) 1.數(shù)據(jù)庫(kù) 是長(zhǎng)期儲(chǔ)存在計(jì)算機(jī)內(nèi)的、有組織的、可共享的數(shù)據(jù)的集合。,3,2.數(shù)據(jù)庫(kù)管理系統(tǒng),數(shù)據(jù)庫(kù)系統(tǒng)基礎(chǔ)教程A First Course in Database SystemsDBMS - DataBase Management System是處理數(shù)據(jù)庫(kù)訪問(wèn)的軟件。提供數(shù)據(jù)庫(kù)的用戶接口。DBMS的目的:提供一個(gè)可以方便地、有效地存取數(shù)據(jù)庫(kù)信息的環(huán)境,5,3.數(shù)據(jù)庫(kù)系統(tǒng) 是指在計(jì)算機(jī)系統(tǒng)中引入數(shù)據(jù)庫(kù)后的系統(tǒng),6
2、,數(shù)據(jù)庫(kù)系統(tǒng)構(gòu)成,7,保存信息的兩種不同方法: 永久性的系統(tǒng)文件、數(shù)據(jù)庫(kù)系統(tǒng)。 文件方式的問(wèn)題: 數(shù)據(jù)的冗余和不一致 數(shù)據(jù)訪問(wèn)困難 數(shù)據(jù)孤立 完整性問(wèn)題 原子性問(wèn)題 并發(fā)訪問(wèn)異常 安全性問(wèn)題,二、文件系統(tǒng)與數(shù)據(jù)庫(kù)系統(tǒng),8,數(shù)據(jù)庫(kù)方法能較好地解決以上的問(wèn)題 數(shù)據(jù)的獨(dú)立性 有效地訪問(wèn)數(shù)據(jù) 減少應(yīng)用程序的開(kāi)發(fā)時(shí)間 數(shù)據(jù)的一致性和安全性 統(tǒng)一的數(shù)據(jù)管理 并發(fā)的數(shù)據(jù)訪問(wèn),三、為什么用數(shù)據(jù)庫(kù),9,幾種模型: 基于樹(shù)的層次模型 基于圖的網(wǎng)狀模型 物理相關(guān)、無(wú)高級(jí)查詢語(yǔ)言 基于表的關(guān)系模型 物理無(wú)關(guān)、支持高級(jí)查詢語(yǔ)言, 基于對(duì)象的面向?qū)ο竽P?OO OR,四、數(shù)據(jù)庫(kù)模型的發(fā)展,定長(zhǎng)記錄,10,關(guān)系數(shù)據(jù)庫(kù)系統(tǒng),
3、11,關(guān)查詢語(yǔ)言 SQL語(yǔ)言 SELECT balance FROM Accounts WHERE accountNO = 67890;,關(guān)系數(shù)據(jù)庫(kù)系統(tǒng),12,DBMS的組成 數(shù)據(jù)、元數(shù)據(jù) 存儲(chǔ)管理程序 事務(wù)管理程序 查詢處理程序,1.2 數(shù)據(jù)庫(kù)管理系統(tǒng)的結(jié)構(gòu),13,數(shù)據(jù)、元數(shù)據(jù) 關(guān)于數(shù)據(jù)結(jié)構(gòu)的信息(關(guān)于數(shù)據(jù)的數(shù)據(jù)) 索引(INDEX),DBMS的組成,14,存儲(chǔ)管理程序 文件管理程序 緩沖區(qū)管理查程序,DBMS的組成,15,查詢處理程序 查詢優(yōu)化 磁盤(pán)訪問(wèn),是查詢的主要代價(jià); 索引是查詢優(yōu)化的利器,DBMS的組成,16,事務(wù)管理程序 事務(wù):是用戶定義的一個(gè)數(shù)據(jù)庫(kù)操作序列 事務(wù)的四個(gè)特性 原子
4、性A 一致性C 隔離性I 持久性D,DBMS的組成,17,客戶-服務(wù)器程序體系結(jié)構(gòu) 瀏覽器-服務(wù)器體系結(jié)構(gòu),DBMS的組成,18,客戶-服務(wù)器程序體系結(jié)構(gòu) 瀏覽器-服務(wù)器體系結(jié)構(gòu),1.3 未來(lái)的數(shù)據(jù)庫(kù)系統(tǒng),第二章 數(shù)據(jù)庫(kù)建模Database Modeling,20,數(shù)據(jù)庫(kù)的設(shè)計(jì)步驟,需求收集和分析 設(shè)計(jì)概念結(jié)構(gòu) 設(shè)計(jì)邏輯結(jié)構(gòu) 設(shè)計(jì)物理結(jié)構(gòu) 物理實(shí)現(xiàn),21,數(shù)據(jù)庫(kù)的設(shè)計(jì)步驟,需求收集和分析 用戶關(guān)心什么 用戶要什么結(jié)果 設(shè)計(jì)概念結(jié)構(gòu) 設(shè)計(jì)邏輯結(jié)構(gòu) 設(shè)計(jì)物理結(jié)構(gòu) 物理實(shí)現(xiàn),22,數(shù)據(jù)庫(kù)的設(shè)計(jì)步驟,需求收集和分析 設(shè)計(jì)概念結(jié)構(gòu) 存什么 關(guān)系(聯(lián)系)如何 ODL或E/R圖,是各種數(shù)據(jù)模型的共同基礎(chǔ) 設(shè)
5、計(jì)邏輯結(jié)構(gòu) 設(shè)計(jì)物理結(jié)構(gòu) 物理實(shí)現(xiàn),23,數(shù)據(jù)庫(kù)的設(shè)計(jì)步驟,需求收集和分析 設(shè)計(jì)概念結(jié)構(gòu) 設(shè)計(jì)邏輯結(jié)構(gòu) 用什么數(shù)據(jù)模型 數(shù)據(jù)庫(kù)的模式(database schema) 用戶子模式 設(shè)計(jì)物理結(jié)構(gòu) 物理實(shí)現(xiàn),24,數(shù)據(jù)庫(kù)的設(shè)計(jì)步驟,需求收集和分析 設(shè)計(jì)概念結(jié)構(gòu) 設(shè)計(jì)邏輯結(jié)構(gòu) 設(shè)計(jì)物理結(jié)構(gòu) 數(shù)據(jù)怎么存 根據(jù)DBMS產(chǎn)品、環(huán)境特點(diǎn) 物理實(shí)現(xiàn),25,數(shù)據(jù)庫(kù)的設(shè)計(jì)步驟,需求收集和分析 設(shè)計(jì)概念結(jié)構(gòu) 設(shè)計(jì)邏輯結(jié)構(gòu) 設(shè)計(jì)物理結(jié)構(gòu) 物理實(shí)現(xiàn) 運(yùn)行DDL 裝入測(cè)試數(shù)據(jù) 應(yīng)用程序,26,數(shù)據(jù)庫(kù)的設(shè)計(jì)步驟,想法 需求,ODL,E / R,關(guān)系,RDBMS,OODBMS,27,2.1 ODL,對(duì)象定義語(yǔ)言 Object
6、 Definition Language 以面向?qū)ο蟮挠^點(diǎn)、方法,說(shuō)明數(shù)據(jù)庫(kù)的概念結(jié)構(gòu) 可方便地直接轉(zhuǎn)換成 OODBMS 的說(shuō)明 經(jīng)過(guò)努力,可以轉(zhuǎn)換成 RDBMS 的說(shuō)明,28,面向?qū)ο蟮脑O(shè)計(jì),對(duì)象標(biāo)識(shí) OID 對(duì)象與對(duì)象的區(qū)別 類(lèi) 具有相同特性的對(duì)象歸為一類(lèi) 對(duì)象的歸并必須有意義 屬于同一類(lèi)的對(duì)象其特性必須相同,29,面向?qū)ο蟮脑O(shè)計(jì),對(duì)象的三個(gè)特性 屬性:特性 聯(lián)系:引用 方法:函數(shù) 接口說(shuō)明 interface ,30,屬性 對(duì)象某方面的特征,屬性就是數(shù)據(jù) 只由基本數(shù)據(jù)類(lèi)型構(gòu)成 屬性的類(lèi)型,不能是類(lèi)、也不能從類(lèi)中構(gòu)造 Interface Movie /Movie Class 的ODL說(shuō)明
7、attribute stringtitle; attribute integeryear; attribute integerlength; attribute enum Film color, blackAndWhite filmType; ;,31,Interface Star attribute stringname; attribute StructAddr string street,string city address; ;,32,聯(lián)系 對(duì)象的引用 對(duì)象的關(guān)聯(lián) 對(duì)象集合的引用(1:N) Relationship Set stars; 單一對(duì)象集合的引用(1:1) Relation
8、ship Star starOf;,33,反向聯(lián)系 ODL要求顯式表示存在的反向聯(lián)系 Interface Movie /Movie Class 的ODL說(shuō)明 attribute stringtitle; attribute integeryear; attribute integerlength; attribute enum Film color, blackAndWhite filmType; relationship Set stars inverse Star : starredIn; /Star與Movie的聯(lián)系 ;,34,聯(lián)系的多重性 N:N 在聯(lián)系中,每個(gè)C都和D的集合有關(guān),而在
9、反向聯(lián)系中,每個(gè)D都和C的集合有關(guān) N:1 在聯(lián)系中,每個(gè)C都和唯一的D有關(guān),而在反向聯(lián)系中,每個(gè)D都和C的集合有關(guān) 1:1 在聯(lián)系中,每個(gè)C都和唯一的D有關(guān),而在反向聯(lián)系中,每個(gè)D都和唯一的C有關(guān),35,Interface Moive relationship Set stars inverse Star : staredIn; relationship Studio ownedBy inverse Studio : owns; ; Interface Star relationship Set staredIn inverse Moive : stars; ; Interface Stud
10、io relationship Set owns inverse Moive : ownedBy; ;,36,ODL中的類(lèi)型 基本類(lèi)型 原子類(lèi)型 接口類(lèi)型 結(jié)構(gòu)類(lèi)型,可由以下類(lèi)型組合而成 集合 無(wú)重復(fù),次序無(wú)關(guān) 包 可重復(fù),次序無(wú)關(guān) 列表 可重復(fù),次序相關(guān) 數(shù)組 結(jié)構(gòu),37,2.2 實(shí)體聯(lián)系圖(E/R),用圖形的方法,描述實(shí)體及實(shí)體間的聯(lián)系 世界由一組稱作實(shí)體的基本對(duì)象及這些對(duì)象間的聯(lián)系組成 元素 實(shí)體(Entity) 客觀存在并可相互區(qū)別的事件或物體 對(duì)應(yīng)于ODL中的對(duì)象 實(shí)體集(Entity Set) 同類(lèi)(具有相同類(lèi)型、相同性質(zhì))實(shí)體的集合 對(duì)應(yīng)于ODL中的類(lèi) 用矩形表示,38,2.2
11、實(shí)體聯(lián)系圖(E/R),元素 屬性(Attribute) 實(shí)體所具有的某一特性 用與實(shí)體集相連的橢圓表示 聯(lián)系(Relationship) 實(shí)體集之間的關(guān)聯(lián) 可涉及多個(gè)實(shí)體集 可表示雙向的聯(lián)系 用與相應(yīng)的實(shí)體集相連的菱形表示,39,Movies,Stars,Stars-in,lenght,filmType,title,year,name,address,40,E/R聯(lián)系的多重性 N與1的表示,Movies,Stars,Stars-in,Studios,Presidents,Runs,Movies,Studios,Owns,41,聯(lián)系的多向性 E/R圖能方便地描述兩個(gè)以上實(shí)體集間的聯(lián)系,42,聯(lián)系
12、中的角色 實(shí)體集在聯(lián)系中的作用 參與聯(lián)系的實(shí)體集互異 只標(biāo)注聯(lián)系名 同一實(shí)體集在一個(gè)聯(lián)系中多次出現(xiàn) 標(biāo)注聯(lián)系名及角色名,43,聯(lián)系中的屬性 聯(lián)系中可以包含屬性 由聯(lián)系而產(chǎn)生的屬性 可為由聯(lián)系產(chǎn)生的屬性建立實(shí)體集,Stars,Movies,Contracts,Studios,salary,44,將多向聯(lián)系轉(zhuǎn)換成二元聯(lián)系 新增連接實(shí)體集 引入連接實(shí)體集至原實(shí)體集的多對(duì)一的聯(lián)系,45,2.3 設(shè)計(jì)原則,真實(shí)性 設(shè)計(jì)應(yīng)當(dāng)忠于規(guī)范 存什么 避免冗余 任何事物只表達(dá)一次 避免引入過(guò)多的元素 選擇合適的元素類(lèi)型 屬性? 類(lèi)/實(shí)體集? 聯(lián)系集?,46,2.4 子類(lèi),特殊化與概括 子類(lèi)與超類(lèi) 屬性的繼承,47,
13、ODL中的子類(lèi) 子類(lèi)繼承其超類(lèi)的所有特性 屬性 聯(lián)系 Interface Cartoon : Movie relationship set voices; ,48,ODL中的多重繼承 類(lèi)的層次 一個(gè)類(lèi)可以有多個(gè)超類(lèi) Interface MurderMystery : Movie attribute string weapon; Interface Cartoon-MurderMystery : Cartoon,MurderMystery ,49,E/R中的子類(lèi) Isa E/R中的繼承,50,2.5 對(duì)約束的建模,建模包含對(duì)現(xiàn)實(shí)世界的對(duì)象及聯(lián)系的描述,也包含對(duì)它們的一些約束 鍵碼 單值約束 參照
14、完整性約束 域的約束 一般約束,51,鍵碼 在類(lèi)的范圍內(nèi)唯一標(biāo)識(shí)一個(gè)對(duì)象(或者在實(shí)體集的范圍內(nèi)唯一標(biāo)識(shí)一個(gè)實(shí)體)的屬性或?qū)傩约?一個(gè)類(lèi)中的兩個(gè)對(duì)象(或一個(gè)實(shí)體集中的兩個(gè)實(shí)體)在構(gòu)成鍵碼的屬性集上取值不能相同 ODL中鍵碼的表示 interface Movie ( key (title,year) ) ,52,超碼 一個(gè)或多個(gè)屬性的集合,能在一個(gè)實(shí)體集中唯一地標(biāo)識(shí)一個(gè)實(shí)體 一個(gè)類(lèi)(或?qū)嶓w集)中可能有多個(gè)超碼 候選碼 其任意真子集都不為超碼的超碼 一個(gè)類(lèi)(或?qū)嶓w集)中可能有多個(gè)候選碼 主碼 從候選碼中選取的一個(gè),一個(gè)類(lèi)(實(shí)體集)中只有一個(gè)主碼 E / R圖中只能表示主碼:主碼屬性名加上下劃線,53
15、,單值約束 要求某個(gè)角色的值是唯一的,如鍵碼 當(dāng)一個(gè)屬性為單值時(shí) 可以要求該屬性值存在(not null) 可以允許該屬性值任選(null) 構(gòu)成鍵碼的屬性,必須有值存在(not null),54,參照完整性約束 要求由某個(gè)對(duì)象引用的值在數(shù)據(jù)庫(kù)中確實(shí)存在 參照與被參照、引用與被引用 參照完整性約束的操作(各產(chǎn)品不同) 禁止刪除被引用的對(duì)象 級(jí)聯(lián)刪除 / 修改 E/R圖中參照完整性的表示,55,2.6 弱實(shí)體集,弱實(shí)體集的屬性不足以形成主碼 有主碼的實(shí)體集稱為強(qiáng)實(shí)體集 弱實(shí)體集只有作為一對(duì)多聯(lián)系的一部分(多)才有意義 弱實(shí)體集與其擁有者之間的聯(lián)系是標(biāo)識(shí)性聯(lián)系,56,2.7 關(guān)于聯(lián)系集,聯(lián)系集的成
16、份 參加聯(lián)系的實(shí)體集的主碼 聯(lián)系集的屬性 聯(lián)系中屬性的決策(二元聯(lián)系) 1:1 聯(lián)系集的屬性:放到任意一端 1:N 聯(lián)系集的屬性:放到 N 端 N:M聯(lián)系集的屬性:只能留在聯(lián)系集中,57,聯(lián)系集的取舍(二元聯(lián)系) 1:1聯(lián)系:將一端的主碼作為另一端的屬性 1:N聯(lián)系:將一端的主碼作為 N 端的屬性 N:M聯(lián)系:必須保留聯(lián)系集 聯(lián)系集的鍵碼(二元聯(lián)系) 1:1聯(lián)系:任意一端的主碼 1:N聯(lián)系:N端的主碼 N:M聯(lián)系:參加聯(lián)系的所有實(shí)體集的主碼,58,ODL、E/R建模 關(guān)心:存什么數(shù)據(jù)、關(guān)系如何 不關(guān)心:用什么數(shù)學(xué)模型、DBMS產(chǎn)品 透過(guò)E/R圖,便于與用戶交流,59,作業(yè) 思考所有帶*的練習(xí),
17、并上網(wǎng)查閱解答 練習(xí)2.1.7 / 2.2.8 / 2.3.2 / 2.5.3 / 2.5.4 /2.6.4(a),第三章 關(guān)系數(shù)據(jù)模型The Relational Data Model,61,ODL、E/R到關(guān)系模型的轉(zhuǎn)換 關(guān)系模型的設(shè)計(jì)理論,62,3.1 關(guān)系模型的基本概念,邏輯數(shù)據(jù)模型 是用戶從數(shù)據(jù)庫(kù)所看到的數(shù)據(jù)模型 與DBMS有關(guān) 層次、網(wǎng)狀、關(guān)系、面向?qū)ο?63,關(guān)系數(shù)據(jù)模型 數(shù)據(jù)結(jié)構(gòu) 兩維的扁平表 數(shù)據(jù)操作 關(guān)系代數(shù) 關(guān)系演算 數(shù)據(jù)的完整性 實(shí)體完整性 參照完整性 用戶定義的完整性,64,現(xiàn)實(shí)世界的實(shí)體以及實(shí)體間的各種聯(lián)系均用關(guān)系表示 關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)是建立在關(guān)系模型上的數(shù)據(jù)庫(kù)系統(tǒng)
18、關(guān)系數(shù)據(jù)庫(kù)是表的集合,65,模型和模式 數(shù)據(jù)模型是描述數(shù)據(jù)的手段 數(shù)據(jù)模式是用給定的數(shù)據(jù)模型對(duì)具體數(shù)據(jù)的描述 屬性 元組 域 型 值 聯(lián)系 關(guān)系的聯(lián)系是通過(guò)關(guān)聯(lián)屬性的值連接的,66,元組 (行、記錄),Student ( sno, sname, ssex, sage, sdept ),67,關(guān)系實(shí)例 關(guān)系 實(shí)體集、類(lèi) 關(guān)系的實(shí)例 元組的集合 元組 實(shí)體、對(duì)象 數(shù)據(jù)庫(kù)實(shí)例 給定時(shí)刻數(shù)據(jù)庫(kù)中數(shù)據(jù)的一個(gè)快照,68,3.2 從ODL設(shè)計(jì)到關(guān)系設(shè)計(jì),ODL設(shè)計(jì)是概念設(shè)計(jì)的產(chǎn)物 ( Using OO ) ODL描述 關(guān)系模式 實(shí)現(xiàn),69,ODL屬性 關(guān)系屬性 原子屬性 類(lèi) 關(guān)系 屬性 屬性 非原子屬性(復(fù)
19、雜數(shù)據(jù)類(lèi)型) 必須轉(zhuǎn)換成原子屬性 記錄結(jié)構(gòu) 結(jié)構(gòu)的每個(gè)item對(duì)應(yīng)一個(gè)屬性 多值集合 針對(duì)每個(gè)值建立一個(gè)元組 會(huì)產(chǎn)生冗余 需規(guī)范化,70,ODL屬性 關(guān)系屬性 (續(xù)) 其他類(lèi)型屬性 (包、數(shù)組、列表) 針對(duì)每個(gè)元素建立一個(gè)元組 增加一個(gè)記數(shù)屬性,表示包的成員號(hào) 定長(zhǎng)數(shù)組 擴(kuò)展為多個(gè)屬性,71,ODL聯(lián)系 關(guān)系描述 單值聯(lián)系 聯(lián)系的類(lèi)型為一個(gè)類(lèi) 增加一個(gè)(組)屬性,存放相關(guān)類(lèi)的鍵碼屬性(組) 將類(lèi)之間的聯(lián)系 關(guān)系之間的聯(lián)系,72,ODL聯(lián)系 關(guān)系描述(續(xù)) 多值聯(lián)系 聯(lián)系的類(lèi)型為某個(gè)類(lèi)的集合類(lèi)型 1 : N、N : M 增加一個(gè)鍵碼屬性 為集合的每個(gè)成員建立一個(gè)元組 其他原始屬性重復(fù)多次(與集合
20、成員的個(gè)數(shù)相等) 導(dǎo)致大量的冗余,需要規(guī)范化,73,鍵碼是必需的 選擇合適的屬性(組)作為鍵碼 學(xué)號(hào)、工號(hào)、身份證號(hào). 增加計(jì)數(shù)屬性 聯(lián)系與反向聯(lián)系 在聯(lián)系的雙方均有聯(lián)系的描述 冗余 ODL:雙向描述 E/R:相關(guān)的鍵碼值進(jìn)行連接,74,3.3 從E/R圖到關(guān)系的設(shè)計(jì),E/R與ODL描述的差異 聯(lián)系作為獨(dú)立的概念 聯(lián)系嵌套在類(lèi)定義中 結(jié)構(gòu)化數(shù)據(jù) 允許使用集合、聚集類(lèi)型 聯(lián)系可以有屬性 聯(lián)系無(wú)屬性 E/R 關(guān)系模式 實(shí)現(xiàn),75,實(shí)體集到關(guān)系的轉(zhuǎn)換 非弱實(shí)體集 實(shí)體集名 關(guān)系名 屬性 屬性 弱實(shí)體集 為弱實(shí)體集建立關(guān)系 屬性:弱實(shí)體集的屬性 + 輔助實(shí)體集的鍵碼,76,E/R聯(lián)系到關(guān)系的轉(zhuǎn)換 用關(guān)
21、系表示聯(lián)系 聯(lián)系名 關(guān)系名 屬性 屬性 + 相關(guān)實(shí)體集的鍵碼屬性(集) 多向聯(lián)系的轉(zhuǎn)換 注意,屬性的命名,77,3.4 子類(lèi)結(jié)構(gòu)到關(guān)系的轉(zhuǎn)換,ODL中的子類(lèi) 一個(gè)對(duì)象完全屬于一個(gè)類(lèi) 子類(lèi)繼承其超類(lèi)的特性 E/R中的子類(lèi) 分層結(jié)構(gòu)通過(guò)與ISA聯(lián)系有關(guān)的實(shí)體集進(jìn)行擴(kuò)展,78,用關(guān)系表示ODL子類(lèi) 每個(gè)子類(lèi)都有自己的關(guān)系 包含該子類(lèi)的所有特性(含繼承特性) 在一個(gè)關(guān)系中含有所有屬性 Movie(title,year,length,filmType,studioName,starName) Cartoon (title,year,length,filmType,studioName,starName,
22、voice) MurderMystery (title,year,length,filmType,studioName,starName,weapon) Cartoon- MurderMystery (title,year,length,filmType,studioName,starName,voice, weapon),79,在關(guān)系模型中表示 isa 聯(lián)系 子類(lèi)的信息被分散到上層的幾個(gè)關(guān)系中 與ISA聯(lián)系有關(guān)的實(shí)體集擁有相同的鍵碼 Movie(title,year,length,filmType) Cartoon(title,year) MurderMystery(title,year,
23、weapon) Voice(title,year,name),80,使用NULL值合并關(guān)系 將關(guān)系描述成一個(gè)全集 屬性:所有可能的屬性 描述:允許Null值 層次越高,取Null值的屬性越多 Movie (title,year,length,filmType,studioName,starName,voice, weapon) 只是一種方法而已,81,作業(yè) 思考所有帶*的練習(xí),并上網(wǎng)查詢解答 練習(xí)3.2.3 / 3.3.1 / 3.4.1 / 3.5.3 /,82,3.5 函數(shù)依賴,數(shù)據(jù)依賴 函數(shù)依賴 多值依賴 數(shù)據(jù)依賴是針對(duì)數(shù)據(jù)模式,而不是特定的實(shí)例,83,函數(shù)依賴(FD) 屬性之間的聯(lián)系
24、假設(shè)給定 X 屬性的值,就知道 Y的值,那么 X 函數(shù)決定 Y 如果R的兩個(gè)元組在屬性A1,A2,An上一致,則它們?cè)诹硪粋€(gè)屬性B上也一致,那么 A1,A2,An函數(shù)決定B,記作A1A2AnB if A1A2AnB1then A1A2AnB2A1A2An B1 B2 . Bm A1A2AnBm,84,關(guān)系的鍵碼 如果一個(gè)或多個(gè)屬性的集合A1A2An滿足如下條件,則該集合為關(guān)系R的鍵碼: 1.這些屬性函數(shù)決定該關(guān)系的所有其他屬性 2. A1A2An的任何真子集都不能函數(shù)決定R的所有其他屬性,85,超鍵碼 包含鍵碼的屬性集稱為超鍵碼,86,尋找關(guān)系的鍵碼(來(lái)自E/R) 來(lái)自實(shí)體集的關(guān)系的鍵碼就是該
25、實(shí)體集的鍵碼屬性 對(duì)于二元聯(lián)系R: N:M,相關(guān)兩個(gè)實(shí)體的鍵碼都是R的鍵碼屬性 N:1,多端實(shí)體集的鍵碼是R的加碼屬性 1:1,任意一端實(shí)體集的鍵碼是R的鍵碼 對(duì)于多向聯(lián)系R: 如果多向聯(lián)系R有一個(gè)箭頭指向?qū)嶓w集E,則響應(yīng)的關(guān)系中,除了E的鍵碼以外,至少還存在一個(gè)鍵碼。,87,尋找關(guān)系的鍵碼(來(lái)自O(shè)DL) 來(lái)自O(shè)DL的關(guān)系的鍵碼不一定就是該類(lèi)的鍵碼屬性 對(duì)于單值聯(lián)系R: 類(lèi)C有一個(gè)指向類(lèi)D的單值聯(lián)系,C的關(guān)系中包含D的鍵碼。C的鍵碼仍是相應(yīng)關(guān)系的鍵碼 對(duì)于多值聯(lián)系R: 被引用類(lèi)的鍵碼加入到引用類(lèi)的鍵碼組合稱為鍵碼,88,3.6 函數(shù)依賴規(guī)則,分解規(guī)則 A1A2An B1 B2 . Bm 等價(jià)于
26、 A1A2An Bi 合并規(guī)則 A1A2An Bi 等價(jià)于 A1A2An B1 B2 . Bm,89,平凡的函數(shù)依賴 如果對(duì)于函數(shù)依賴 A1A2An B,B是A中的一個(gè),則該函數(shù)依賴就是平凡的函數(shù)依賴 平凡依賴是永恒的 title,year title 非平凡 如果B中至少有一個(gè)屬性不在A中 title,year year,length 完全非平凡 如果B中沒(méi)有一個(gè)屬性在A中 title,year length,90,計(jì)算屬性的閉包 閉包 F的閉包是指F邏輯蘊(yùn)涵的所有函數(shù)依賴的集合,記作F+ 閉包的意義 檢驗(yàn)給定的函數(shù)依賴是否蘊(yùn)涵于某個(gè)函數(shù)依賴集S 從給定的函數(shù)依賴,可以推導(dǎo)出蘊(yùn)涵的函數(shù)依賴
27、求閉包 例:對(duì)關(guān)系R(A,B,C,D,E,F),給定函數(shù)依賴ABC,BCAD,DE,CFB,求 A,B+,91,關(guān)系的基與最小基 任何一個(gè)能從中導(dǎo)出關(guān)系的所有依賴的給定依賴集,稱為該關(guān)系的一個(gè)基 如果一個(gè)基的任何真子集都不能推導(dǎo)出該關(guān)系的依賴全集,則稱此基為最小基 求函數(shù)依賴的最小基 例:對(duì)關(guān)系R(A,B,C,D),有ABC,BC,A B,AB C,AC D,求最小函數(shù)依賴集,92,3.7 關(guān)系數(shù)據(jù)庫(kù)模式設(shè)計(jì),什么是好的數(shù)據(jù)庫(kù)設(shè)計(jì) 體現(xiàn)客觀世界的信息 無(wú)過(guò)度的冗余 無(wú)插入異常 無(wú)更新復(fù)雜 無(wú)刪除異常,93,更新復(fù)雜!,刪除異常!,94,異常的原因 數(shù)據(jù)依賴的約束 解決方法 數(shù)據(jù)庫(kù)設(shè)計(jì)的規(guī)范化分
28、解,95,范式(Normal Forms) 規(guī)范化 一個(gè)關(guān)系滿足某個(gè)范式所規(guī)定的一系列條件時(shí),它就屬于該范式 可以用規(guī)范化要求來(lái)設(shè)計(jì)數(shù)據(jù)庫(kù) 也可以用來(lái)驗(yàn)證設(shè)計(jì)結(jié)果的合理性,用其指導(dǎo)優(yōu)化過(guò)程 1NF2NF3NFBCNF4NF,96,第一范式(1NF) 當(dāng)且僅當(dāng)一個(gè)關(guān)系R中,每一個(gè)元組的每一個(gè)屬性只含有一個(gè)值時(shí),該關(guān)系屬于第一范式。 要求屬性是原子的,97,第二范式(2NF) 對(duì)于關(guān)系R,若R1NF,且每一個(gè)非主屬性完全函數(shù)依賴于碼,則R2NF。 不能部分依賴于碼 sc(sno,sname,cno,grade) sno,cnograde snosname,完全依賴,非完全依賴,98,第三范式(3N
29、F) 對(duì)于關(guān)系R,若R2NF,且每個(gè)非主屬性都不傳遞依賴于碼,則R3NF。 主屬性可以傳遞依賴于碼 student(sno,sname,sdept,dept_manager) snosname,sdept sdeptdept_manager 傳遞依賴:snodept_manager,99,Boyce/Codd范式(BCNF) 對(duì)于關(guān)系R,若R1NF,且所有非平凡的函數(shù)依賴,其決定因素是候選碼,則RBCNF。 sct(s,c,t)/學(xué)生,課程,教師 tc/每位教師只上一門(mén)課 (s,c)t (s,t)c/每門(mén)課有若干位教師,100,最高范式 BCNF是基于函數(shù)依賴的最高范式 但不是數(shù)據(jù)庫(kù)模式設(shè)計(jì)的
30、最高范式,101,范式優(yōu)化 分解 A1,A2,An = B1,B2,BnC1,C2,Cn 分解的要求 無(wú)損連接 BCB或BCC 保持依賴 范式要求,102,分解到高層范式(基于FD) 找出一個(gè)不符合范式要求的FD(XY),并使其右端的屬性盡可能地多(求出X+) 創(chuàng)建新的模式,包含上述FD的所有(左右)屬性(X+的所有屬性) 創(chuàng)建另一模式,包含前述FD中的決定因素及剩余的所有屬性(U-X+)X) 反復(fù)13,直至符合范式要求,103,3.8 多值依賴,BCNF 仍有異常,104,多值依賴(MVD) 按P.110的定義,105,多值依賴(MVD) 設(shè)R(U)是屬性集U上的一個(gè)關(guān)系。X、Y、Z是U的子
31、集,且Z=U-X-Y。關(guān)系R(U)中多值依賴XY成立,當(dāng)且僅當(dāng)對(duì)R(U)的任一元組r,給定一對(duì)(x,z)值,有一組y的值,這組值僅僅取決于x值,而與z值無(wú)關(guān)。 對(duì)給定X的值,則Y的取值與Z的取值無(wú)關(guān),106,給定一對(duì)(x,z)值,有一組y的值,107,nametitle,year,108,平凡的多值依賴 如果X包含Y或 XY=U,則XY是平凡的多值依賴 性質(zhì) If XY,and YZ then XZ-Y If XY,and Z=U-X-Y then XZ If XY then XY 無(wú)分解/合并規(guī)則,109,第四范式(4NF) 對(duì)于關(guān)系R,若R1NF,且所有非平凡的多值依賴,其決定因素是候選碼
32、,則R4NF。 基于數(shù)據(jù)依賴的最高范式 分解要求 無(wú)損連接 保持依賴 4NF,110,nametitle,year namestreet,city All Key is BCNF isnt 4NF,R1(name,title,year) R2(name,street,city) All Key is 4NF,111,范式間的聯(lián)系 高層范式包含低層范式 分解特性,112,作業(yè) 思考所有帶*的練習(xí),并上網(wǎng)查詢解答 練習(xí)3.7.5/3.8.3/,第四章 關(guān)系模型中的運(yùn)算,Operations In The Relational Model,114,概述,數(shù)據(jù)庫(kù)的核心應(yīng)用是數(shù)據(jù)庫(kù)的查詢 查詢語(yǔ)言 用戶
33、用來(lái)從數(shù)據(jù)庫(kù)中請(qǐng)求獲取信息的語(yǔ)言 關(guān)系代數(shù)是過(guò)程化的查詢語(yǔ)言 關(guān)系代數(shù)是一種抽象的查詢語(yǔ)言,115,4.1 關(guān)系代數(shù),運(yùn)算對(duì)象:關(guān)系 運(yùn)算結(jié)果:關(guān)系,116,關(guān)系代數(shù),關(guān)系代數(shù)的運(yùn)算 普通的集合運(yùn)算 并、交、差 刪除部分關(guān)系的運(yùn)算 選擇、投影 合并兩個(gè)關(guān)系元組的運(yùn)算 連接、積 改名運(yùn)算,117,關(guān)系代數(shù) 并Union (),R和S的并,RS,是在R或S或兩者中的元素的集合 一個(gè)元素在并集中只出現(xiàn)一次 R和S必須同類(lèi)型(屬性集相同、次序相同,但屬性名可以不同),118,關(guān)系代數(shù) 交Intersect (),R和S的交,RS,是在R和S中都存在的元素的集合 一個(gè)元素在交集中只出現(xiàn)一次 R和S必須同
34、類(lèi)型(屬性集相同、次序相同,但屬性名可以不同),119,關(guān)系代數(shù) 差Minus (-),R和S的差,R-S,是在R中而不在S中的元素的集合 R和S必須同類(lèi)型(屬性集相同、次序相同,但屬性名可以不同),120,關(guān)系代數(shù)投影Projection(),從關(guān)系R中選擇若干屬性組成新的關(guān)系 A1,A2,An(R),表示從R中選擇屬性集A1,A2,An組成新的關(guān)系 列的運(yùn)算 投影運(yùn)算的結(jié)果中,也要去除可能的重復(fù)元組 例: ssex,sage(student) ?,121,關(guān)系代數(shù)選擇Selection(),從關(guān)系R中選擇符合條件的元組構(gòu)成新的關(guān)系 C(R),表示從R中選擇滿足條件(使邏輯表達(dá)式C為真)的元
35、組 行的運(yùn)算 例: sage = 23 AND sdep = CS(student) ? 例:列出CS系的學(xué)號(hào)及姓名 sno,sname(sdep = CS(student) ),122,關(guān)系代數(shù)笛卡兒積(),關(guān)系R、S的笛卡兒積是兩個(gè)關(guān)系的元組對(duì)的集合所組成的新關(guān)系 RS: 屬性是R和S的組合(有重復(fù)) 元組是R和S所有元組的可能組合 是R、S的無(wú)條件連接,使任意兩個(gè)關(guān)系的信息能組合在一起 例: student sc (注意sno的命名),123,關(guān)系代數(shù)自然連接( ),從RS的結(jié)果集中,選取在某些公共屬性上具有相同值的元組,組成新的關(guān)系 R、S的公共屬性 屬性集的交集(名稱及類(lèi)型相同) 公
36、共屬性在結(jié)果中只出現(xiàn)一次 等值連接 例: student sc (注意sno的命名),124,關(guān)系代數(shù)條件連接(),從RS的結(jié)果集中,選取在指定的屬性集上滿足條件的元組,組成新的關(guān)系 是一個(gè)關(guān)于屬性集的邏輯表達(dá)式 R C S,125,關(guān)系代數(shù)改名(),對(duì)關(guān)系R實(shí)施改名運(yùn)算,可顯式地改變關(guān)系名及屬性名 將關(guān)系R改名為S:s(R) 將關(guān)系R(B1,B2,Bn)改名 S(A1,A2,An): S(A1,A2,An)(R),126,關(guān)系代數(shù)查詢中的復(fù)合運(yùn)算,例:找出比95001年齡大的學(xué)生的學(xué)號(hào)和姓名、年齡 s.sno,s.sname,s.sage(s(student) s.sage stu.sage
37、 (stu.sno=95001(stu(student),127,關(guān)系代數(shù)查詢中的復(fù)合運(yùn)算,例:找出比95001年齡大的學(xué)生的學(xué)號(hào)和姓名、年齡(與前例的結(jié)果有何差異?) s.sno,s.sname,s.sage(stu.sno=95001 and s.sage stu.sage (s(student)(stu(student),128,關(guān)系代數(shù)外連接,是連接運(yùn)算的擴(kuò)展,可以處理缺失信息 保留非匹配元組 外連接 左外連接 右外連接 全外連接,129,關(guān)系代數(shù)左外連接,取出左側(cè)關(guān)系中所有與右側(cè)關(guān)系的任一元組都不匹配的元組,用空值填充所有來(lái)自右側(cè)關(guān)系的屬性,再把產(chǎn)生的元組加到自然連接的結(jié)果上 例:列
38、出影星的當(dāng)官情況(是影星,可能不是官) MovieStar MovieExec,130,關(guān)系代數(shù)右外連接,與左外連接對(duì)稱 例:列出行政長(zhǎng)官的從影情況(是長(zhǎng)官,可能不是影星) MovieStar MovieExec,131,關(guān)系代數(shù)全外連接,左外連接與右外連接的合成 例:列出所有行政長(zhǎng)官和所有影星的關(guān)系 MovieStar MovieExec,132,4.5 對(duì)關(guān)系的約束,關(guān)系數(shù)據(jù)模型 數(shù)據(jù)結(jié)構(gòu) 關(guān)系操作 關(guān)系的完整性約束 實(shí)體完整性 參照完整性 用戶定義的完整性,133,用關(guān)系代數(shù)作為約束語(yǔ)言,用關(guān)系代數(shù)可以表達(dá)約束 R = 0; R 0 R S;R-S = 0,134,參照完整性約束,如果對(duì)
39、象(實(shí)體)A與對(duì)象(實(shí)體)B相關(guān),那么B必須存在 如果一個(gè)關(guān)系R的一個(gè)元組有個(gè)分量值為v,那么期望v將出現(xiàn)在另一個(gè)關(guān)系S的某個(gè)元組的特定分量中 v(R) v(S),135,參照完整性約束例,Movie關(guān)系中,每部電影的制片人必須出現(xiàn)在MovieExec關(guān)系中 Movie(title,year,length,incolor,studioName,producerC#) MoiveExec(name,address,cert#,networth) 每個(gè)Movie元組的producerC#分量必須出現(xiàn)在MovieExec元組的cert#分量中 producerC#(Movie) cert#(Movi
40、eExec) producerC#(Movie) -cert#(MovieExec)=0,136,參照完整性約束例,影星只能于存在的Movie中出演角色 Movie(title,year,length,incolor,studioName,producerC#) starsIn(movieTitle,movieYear,starName) movieTitle,movieYear(starsIn) title,year(Movie),137,附加約束函數(shù)依賴,對(duì)關(guān)系student,有snosname stu1.sno = stu2.sno AND stu1.snamestu2.sname(st
41、u1stu2) = 0,138,附加約束用戶定義的約束,某些屬性的取值有特定的要求 genderFAND gender M(MovieStar) = 0,139,4.6 包的關(guān)系運(yùn)算,集合 無(wú)重復(fù) 順序無(wú)關(guān) 包 可重復(fù) 順序無(wú)關(guān) 商業(yè)數(shù)據(jù)庫(kù)系統(tǒng)往往是基于包的 采用包可以獲得比集合快的運(yùn)算速度,140,包的關(guān)系運(yùn)算,并、交、差 投影、選擇 乘積、連接 不必去除重復(fù)元組!,141,作業(yè),練習(xí)4.1.1/4.5.1/4.5.4/4.5.5,第五章 數(shù)據(jù)庫(kù)語(yǔ)言SQL,143,概述,SQL的發(fā)展 1974年,由Boyce和Chamberlin提出 19751979,IBM San Jose Resear
42、ch Lab的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)原型System R實(shí)施了這種語(yǔ)言 SQL-86是第一個(gè)SQL標(biāo)準(zhǔn) SQL-89、SQL-92(SQL2)、SQL-99(SQL3),144,概述,現(xiàn)狀 大部分DBMS產(chǎn)品都支持SQL,成為操作數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言 有方言,支持程度不同,145,數(shù)據(jù)定義(DDL) 定義、刪除、修改關(guān)系模式(基本表) 定義、刪除視圖(View) 定義、刪除索引(Index) 數(shù)據(jù)操縱(DML) 數(shù)據(jù)查詢 數(shù)據(jù)增、刪、改 數(shù)據(jù)控制(DCL) 用戶訪問(wèn)權(quán)限的授予、收回,概述SQL的功能,146,交互式SQL 一般DBMS都提供聯(lián)機(jī)交互工具 用戶可直接鍵入SQL命令對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作 由DB
43、MS來(lái)進(jìn)行解釋,概述SQL的形式,147,嵌入式SQL 能將SQL語(yǔ)句嵌入到高級(jí)語(yǔ)言(宿主語(yǔ)言) 使應(yīng)用程序充分利用SQL訪問(wèn)數(shù)據(jù)庫(kù)的能力、宿主語(yǔ)言的過(guò)程處理能力 一般需要預(yù)編譯,將嵌入的SQL語(yǔ)句轉(zhuǎn)化為宿主語(yǔ)言編譯器能處理的語(yǔ)句,概述SQL的形式,148,數(shù)據(jù)定義 Create、Drop、Alter 數(shù)據(jù)操縱 數(shù)據(jù)查詢:Select 數(shù)據(jù)修改:Insert、Update、Delete 數(shù)據(jù)控制 Grant、Revoke,概述SQL的動(dòng)詞,149,數(shù)據(jù)查詢是數(shù)據(jù)庫(kù)應(yīng)用的核心功能 基本結(jié)構(gòu) Select A1, A2, ., AnFrom r1, r2, ., rmWhere P A1, A2,
44、 ., An(p(r1r1.rm),數(shù)據(jù)查詢,150,Select語(yǔ)句的含義,對(duì) From 子句中的各關(guān)系,作笛卡兒積() 對(duì) Where 子句中的邏輯表達(dá)式進(jìn)行選擇()運(yùn)算,找出符合條件的元組 根據(jù) Select 子句中的屬性列表,對(duì)上述結(jié)果作投影( )操作,151,Select語(yǔ)句的含義,結(jié)果集 查詢操作的對(duì)象是關(guān)系,結(jié)果還是一個(gè)關(guān)系,是一個(gè)結(jié)果集,是一個(gè)動(dòng)態(tài)數(shù)據(jù)集,152,Select子句,對(duì)應(yīng)于關(guān)系代數(shù)的投影()運(yùn)算,用以列出查詢結(jié)果集中的期望屬性,153,SQL具有包的特性 Select 子句的缺省情況是保留重復(fù)元組( ALL ),可用 Distinct 去除重復(fù)元組 Select
45、Distinct sdept From Student Select All sdept From Student 去除重復(fù)元組:費(fèi)時(shí) 需要臨時(shí)表的支持,Select子句重復(fù)元組,154,Select子句 *與屬性列表,星號(hào) * 表示所有屬性 星號(hào) * :按關(guān)系模式中屬性的順序排列,并具有一定的邏輯數(shù)據(jù)獨(dú)立性 顯式列出屬性名:按用戶順序排列 Select * From Student Select Student.*,cno,grade From Student,SC Where Student.sno = SC.sno,155,Select子句更名,為結(jié)果集中的某個(gè)屬性改名 使結(jié)果集更具可讀
46、性 Select sno as stu_no,cno as course_no, grade From SC Select sno,sname,2001 - sage as birthday From Student,156,Where 子句,where子句對(duì)應(yīng)與關(guān)系代數(shù)中的選擇() 查詢滿足指定條件的元組可以通過(guò)Where子句來(lái)實(shí)現(xiàn) 使where子句中的邏輯表達(dá)式返回True值的元組,是符合要求的元組,將被選擇出來(lái),157,Where 子句運(yùn)算符,比較:、=、=、not + 確定范圍: Between A and B、Not Between A and B 確定集合:IN、NOT IN 字符
47、匹配:LIKE,NOT LIKE 空值:IS NULL、IS NOT NULL 多重條件:AND、OR、NOT,158,Where 子句Like,字符匹配:Like、Not Like 通配符 % 匹配任意字符串 _ 匹配任意一個(gè)字符 大小寫(xiě)敏感,159,Where 子句Like,例:列出姓張的學(xué)生的學(xué)號(hào)、姓名。 Select sno,sname From Student Where sname LIKE 張%,160,Where 子句Like,例:列出張姓且單名的學(xué)生的學(xué)號(hào)、姓名。 Select sno,sname From Student Where sname LIKE 張_ _,161,
48、Where 子句轉(zhuǎn)義符 escape,例:列出課程名稱中帶有_的課號(hào)及課名。 Select cno,cname From Course Where cname LIKE %_% escape ,162,From 子句,From子句對(duì)應(yīng)與關(guān)系代數(shù)中的笛卡兒積() 列出將被掃描的關(guān)系(表) 例:列出所有學(xué)生的學(xué)號(hào)、姓名、課號(hào)、成績(jī)。 Select Sudent.sno,sname,SC.cno,grade From Student,SC Where Student.sno = SC.sno,163,From 子句元組變量,為 From 子句中的關(guān)系定義元組變量 方便關(guān)系名的引用 在同一關(guān)系的笛卡兒
49、積中進(jìn)行辨別 例:列出與95001同歲的同學(xué)的學(xué)號(hào),姓名,年齡 SelectT.sno,T.sname,T.sage FromStudent as T,Student as S WhereS.sno = 95001 AND T.sage = S.sage,164,Order By子句,指定結(jié)果集中元組的排列次序 耗時(shí) ASC(缺?。?、DESC、未選中的屬性 例:列出CS系中的男生的學(xué)號(hào)、姓名、年齡,并按年齡進(jìn)行排列(升序) Select sno, sname,sage From Student Where sdept = CS Order By sage ASC,165,SQL的集合操作,SQ
50、L的結(jié)果集是“包” 多個(gè) Select 語(yǔ)句的結(jié)果可以進(jìn)行集合操作,使結(jié)果為“集合”(default) SQL-92支持 參加集合操作的關(guān)系(結(jié)果集)必須是相容的,166,SQL的集合操作相容,屬性個(gè)數(shù)必須一致 對(duì)應(yīng)的類(lèi)型必須一致 屬性名無(wú)關(guān) 最終結(jié)果集采用第一個(gè)結(jié)果的屬性名 缺省為自動(dòng)去除重復(fù)元組 除非顯式說(shuō)明ALL Order By放在整個(gè)語(yǔ)句的最后,167,SQL的集合操作并,union(并,對(duì)應(yīng)與關(guān)系代數(shù)的),標(biāo)準(zhǔn)SQL都支持的 采用集合的觀點(diǎn),合成多個(gè)查詢的結(jié)果 select - without - order by . UNION ALL select - without - or
51、der by . UNION ALL select - without - order by . . ORDER BY integer ASC | DESC , . ,168,例:查詢計(jì)算機(jī)系的學(xué)生或者年齡不大于19歲的學(xué)生,并按年齡倒排序。,SQL的集合操作并,169,intersect(交,對(duì)應(yīng)與關(guān)系代數(shù)的),并不是所有的DBMS都支持 例:查詢計(jì)算機(jī)系的學(xué)生并且年齡不大于19歲的學(xué)生,并按年齡倒排序。 源碼網(wǎng)整理: ,SQL的集合操作交,170,except(差,對(duì)應(yīng)與關(guān)系代數(shù)的 -),并不是所有的DBMS都支持 例:查詢計(jì)算機(jī)系的男生。,SQL的集合操作差,171,數(shù)據(jù)定義語(yǔ)言(Dat
52、a Definition Language) Create、Drop、Alter 定義一組關(guān)系(基本表)、說(shuō)明各關(guān)系的信息 各關(guān)系的模式 各屬性的值域 完整性約束 索引 安全性和權(quán)限,數(shù)據(jù)定義語(yǔ)言(DDL),172,字符型 char(n) 、varchar(n) 數(shù)值型 integer、smallint numeric(p,d) real、double、float(n) 日期/時(shí)間型 date time,DDLSQL中的域類(lèi)型,173,域定義語(yǔ)句(SQL-92支持) 需重復(fù)使用的 Create Domain stu_name varchar(20) Create Domain zip_code
53、 char(6),DDLSQL中的域類(lèi)型,174,Create Table r (A1D1, A2D2, AnDn, , ) 其中: r 關(guān)系名(表名)、 Ai 關(guān)系 r 的一個(gè)屬性名 Dn 屬性Ai域值的域類(lèi)型 主鍵聲明: primary key (Aj1 ,Aj2 ,Ajvm ),DDLSQL的模式定義,175,Create Domain stu_name varchar(20) Create Table Student ( sno char(10) primary key(sno) , sname stu_name , sage smallint, ssex char(1), sdept
54、 char(2),DDLSQL的模式定義,176,Create Table Course ( cno char(10) primary key (cno) , cname varchar(20) , credit smallint ) Create Table SC ( sno char(10) not null , cno char(10) not null , grade smallint, primary key (sno, cno),DDLSQL的模式定義,177,用SQL刪除關(guān)系(表) 將整個(gè)關(guān)系模式(表結(jié)構(gòu))徹底刪除 表中的數(shù)據(jù)也將被刪除 Drop Table r Drop Tab
55、le student;,DDL刪除表結(jié)構(gòu) Drop,178,刪除表中的某屬性 去除屬性及相應(yīng)的數(shù)據(jù) Alter Table r Drop A,DDL修改模式 Alter,179,增加表中的屬性 向已經(jīng)存在的表中添加屬性 allow null 已有的元組中該屬性的值被置為Null Alter Table r Add A D Alter Table student phone char(16);,DDL修改模式 Alter,180,屬性的默認(rèn)值 用戶不提供某屬性的值時(shí),默認(rèn)值被使用 初始值 TimeStamp DDL中: ModifyDate char(30) Default TimeStamp;
56、 Alter Table student Add ID integer Default AutoIncrement;,DDL Default Value,181,定義一個(gè)新的域(用戶定義的域) 需要重復(fù)使用的域 必須具有相同類(lèi)型的屬性 Create Domain As ; Create Domain datelog As char(30) default timestamp 域的刪除 Drop Domain datelog 各DBMS的方法是不同的Restrict/Cascade 使用該域的屬性的處理,DDL 域定義,182,索引是一種數(shù)據(jù)結(jié)構(gòu),是對(duì)照表、指針表 索引是為了加速對(duì)表中元組的檢索
57、而創(chuàng)建的一種分散存儲(chǔ)結(jié)構(gòu)(B樹(shù)) 索引是對(duì)表而建立的,由除存放表的數(shù)據(jù)頁(yè)面以外的索引頁(yè)面組成 索引是把雙刃劍,減慢更新的速度 索引不是SQL標(biāo)準(zhǔn)的要求,DDL 索引 Index,183,索引的種類(lèi) 聚簇索引(Clustered Index) 非聚簇索引(Non-Clustered Index),DDL 索引 Index,184,聚簇索引(Clustered Index) 表中的元組按聚簇索引的順序物理地存放 根級(jí)頁(yè)面-中間層頁(yè)面-葉級(jí)頁(yè)面(數(shù)據(jù)頁(yè)面) 一個(gè)表中只能有一個(gè)聚簇索引 更新的復(fù)雜性,需要大量的臨時(shí)空間,DDL 索引 Index,185,非聚簇索引(Non-Clustered Inde
58、x) 表中元組存儲(chǔ)的物理順序與索引的順序無(wú)關(guān) 葉級(jí)索引頁(yè)面是指向數(shù)據(jù)頁(yè)面的指針 每個(gè)表可有多個(gè)非聚簇索引,DDL 索引 Index,186,CREATE UNIQUE CLUSTERED | NONCLUSTERED INDEX index-name On TableName(Column,Column,) Create Index YearIndex On Movie(year); Create Clustered Index SnoIndex On student(sno) ; Drop Index YearIndex;,DDL 索引 Index,187,查詢與更新的評(píng)估 查詢多? 更新多
59、? 索引的覆蓋 Where表達(dá)式 Where表達(dá)式的順序 索引越多越好嗎? 了解優(yōu)化器,DDL 索引的使用,188,數(shù)據(jù)添加 用SQL的插入語(yǔ)句,向數(shù)據(jù)庫(kù)表中添加數(shù)據(jù) 按關(guān)系模式的屬性順序 Insert Into Student Values ( 95001, 張三,27, M, CS ) 按指定的屬性順序,也可以只添加部分屬性(非Null屬性為必需) Insert Into Student ( sno, sname, sage) Values ( 95002, 李四, 26 ),189,把一列中的值進(jìn)行聚合運(yùn)算,返回單值的函數(shù) 五個(gè)預(yù)定義的聚合函數(shù) 平均值:Avg 總和: Sum 最小值:Min 最大值:Max 計(jì)數(shù): Count Count(*)、Count(Distinct),聚合函數(shù),190,Group By 將查詢結(jié)果集按某一列或多列的值分組,值相等的為一組,一個(gè)分組以一個(gè)元組的形式出現(xiàn) 只有出現(xiàn)在Group By子句中的屬性,才可出現(xiàn)在Select子句中 例:統(tǒng)計(jì)各系學(xué)生的人數(shù)。 Select sdept,count(*)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 以科學(xué)構(gòu)建與實(shí)踐檢驗(yàn)為導(dǎo)向的學(xué)校體育教學(xué)評(píng)價(jià)體系研究
- 規(guī)劃景區(qū)景點(diǎn)管理辦法
- 城市社區(qū)火災(zāi)管理辦法
- 以禮為鑒:《兩漢書(shū)》引《禮》現(xiàn)象與漢代社會(huì)文化的多維審視
- 室外餐飲庫(kù)存管理辦法
- 鹽亭診所備案管理辦法
- 中國(guó)哈哈鏡行業(yè)市場(chǎng)發(fā)展分析及前景趨勢(shì)與投資分析研究報(bào)告(2024-2030)
- 以生命之筆繪就小學(xué)班級(jí)文化藍(lán)圖
- 2025年芳香保健師中級(jí)職業(yè)技能鑒定考試趨勢(shì)預(yù)測(cè)
- 2025年高校輔導(dǎo)員招聘:學(xué)生心理健康教育活動(dòng)策劃與心理測(cè)評(píng)實(shí)施技巧試題
- 電子物料(電感、電容、芯片、PCB)的來(lái)料檢驗(yàn)項(xiàng)及檢驗(yàn)方法SIP
- 刑法學(xué)(總論)輔導(dǎo)教案
- 非遺資源數(shù)據(jù)庫(kù)建設(shè)
- 報(bào)案材料范本
- 林地贈(zèng)與協(xié)議書(shū)(2篇)
- 2023四年級(jí)數(shù)學(xué)上冊(cè) 1 大數(shù)的認(rèn)識(shí)第11課時(shí) 用計(jì)算器計(jì)算教案 新人教版
- 2023年石嘴山市直機(jī)關(guān)遴選公務(wù)員考試真題
- GCP相關(guān)人員職責(zé)
- CTD申報(bào)資料:創(chuàng)新藥IND模塊一-行政文件和藥品信息
- (高清版)JTGT 3331-2024 采空區(qū)公路設(shè)計(jì)與施工技術(shù)規(guī)范
- 2024廣西公需課高質(zhì)量共建“一帶一路”譜寫(xiě)人類(lèi)命運(yùn)共同體新篇章答案
評(píng)論
0/150
提交評(píng)論