《數(shù)據(jù)庫(kù)系統(tǒng)原理》課件.ppt
《《數(shù)據(jù)庫(kù)系統(tǒng)原理》課件.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《《數(shù)據(jù)庫(kù)系統(tǒng)原理》課件.ppt(214頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、數(shù)據(jù)庫(kù)系統(tǒng)原理 主講人:黃順強(qiáng) Tel: 18984849883, 13985138163 13368699848 QQ:287986791 E-mail: 貴州大學(xué)軟 件 學(xué) 院 2010年 3月 數(shù)據(jù)庫(kù)發(fā)展經(jīng)歷了人工管理 ,文件系統(tǒng)和數(shù) 據(jù)庫(kù)三個(gè)階段 信息世界表示信息的模型常用 ER模型 數(shù)據(jù)模型有層次,網(wǎng)狀,關(guān)系三種 數(shù)據(jù)庫(kù)系統(tǒng)的具有外模式,模式和內(nèi)模式三 級(jí)模式 數(shù)據(jù)庫(kù)系統(tǒng)包括硬件,操作系統(tǒng), DBMS和相 關(guān)人員(比如 DBA,用戶,系統(tǒng)分析員,程序 設(shè)計(jì)工程師等) 上章內(nèi)容回顧: 2 第二章 關(guān)系數(shù)據(jù)庫(kù) 2 教學(xué)目標(biāo): 關(guān)系模型的概念 關(guān)系模型基本概念的形式化定義 關(guān)系完整性約束
2、第二章 關(guān)系數(shù)據(jù)庫(kù) 2.1 關(guān)系模型概述 2.2 關(guān)系數(shù)據(jù)結(jié)構(gòu) 2.3 關(guān)系的完整性 2.4 關(guān)系代數(shù) 2.5 關(guān)系演算 關(guān)系數(shù)據(jù)庫(kù)簡(jiǎn)介 系統(tǒng)而嚴(yán)格地提出關(guān)系模型的是美國(guó) IBM公司 的 E.F.Codd 1970年提出關(guān)系數(shù)據(jù)模型 E.F.Codd, A Relational Model of Data for Large Shared Data Banks, Communication of the ACM ,1970 之后 , 提出了關(guān)系代數(shù)和關(guān)系演算的概念 1972年提出了關(guān)系的第一 、 第二 、 第三范式 1974年提出了關(guān)系的 BC范式 關(guān)系數(shù)據(jù)庫(kù)簡(jiǎn)介 關(guān)系數(shù)據(jù)庫(kù) 應(yīng)用數(shù)學(xué)方法 來(lái)
3、處理數(shù)據(jù)庫(kù)中的數(shù) 據(jù) 80年代后 , 關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)成為最重要 、 最流 行的數(shù)據(jù)庫(kù)系統(tǒng) 關(guān)系數(shù)據(jù)庫(kù)簡(jiǎn)介 典型實(shí)驗(yàn)系統(tǒng) System R University INGRES 典型商用系統(tǒng) ORACLE SYBASE INFORMIX DB2 INGRES 第二章 關(guān)系數(shù)據(jù)庫(kù) 2.1 關(guān)系模型概述 2.2 關(guān)系數(shù)據(jù)結(jié)構(gòu) 2.3 關(guān)系的完整性 2.4 關(guān)系代數(shù) 2.5 關(guān)系演算 2.6 小結(jié) 2.1 關(guān)系模型概述 關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)是支持關(guān)系模型的數(shù)據(jù)庫(kù)系統(tǒng) 關(guān)系模型的組成 關(guān)系數(shù)據(jù)結(jié)構(gòu) 關(guān)系操作集合 關(guān)系完整性約束 1. 關(guān)系數(shù)據(jù)結(jié)構(gòu) 單一的數(shù)據(jù)結(jié)構(gòu) -關(guān)系 現(xiàn)實(shí)世界的實(shí)體以及實(shí)體間的各種聯(lián)系均用關(guān)
4、系 來(lái)表示 數(shù)據(jù)的邏輯結(jié)構(gòu) -二維表 從用戶角度 , 關(guān)系模型中數(shù)據(jù)的邏輯結(jié)構(gòu)是一張 二維表 。 2. 關(guān)系操作集合 1) 常用的關(guān)系操作 2) 關(guān)系操作的特點(diǎn) 3) 關(guān)系數(shù)據(jù)語(yǔ)言的種類 4) 關(guān)系數(shù)據(jù)語(yǔ)言的特點(diǎn) 關(guān)系操作集合 1) 常用的關(guān)系操作 查詢 選擇 (select)、 投影 (project)、 連接 (join)、 除 (divide)、 并 (union)、 交 (intersection)、 差 (difference) 數(shù)據(jù)更新 插入 (insert)、 刪除 (delete)、 修改 (update) 查詢的表達(dá)能力是其中最主要的部分 關(guān)系操作集合(續(xù)) 2) 關(guān)系操作的
5、特點(diǎn) 集合操作方式 , 即操作的對(duì)象和結(jié)果都是集合 。 非關(guān)系數(shù)據(jù)模型的數(shù)據(jù)操作方式:一次一記錄 文件系統(tǒng)的數(shù)據(jù)操作方式 關(guān)系操作集合(續(xù)) 3) 關(guān)系數(shù)據(jù)語(yǔ)言的種類 有三種:即關(guān)系代數(shù)語(yǔ)言 關(guān)系演算語(yǔ)言 具有以上兩種特點(diǎn)的語(yǔ)言 關(guān)系代數(shù)語(yǔ)言 用對(duì)關(guān)系的運(yùn)算來(lái)表達(dá)查詢要求 典型代表: ISBL 關(guān)系操作集合(續(xù)) 關(guān)系數(shù)據(jù)語(yǔ)言的種類 ( 續(xù) ) 關(guān)系演算語(yǔ)言:用謂詞來(lái)表達(dá)查詢要求 元組關(guān)系演算語(yǔ)言 - 謂詞變?cè)幕緦?duì)象是元組變量 - 典型代表: APLHA, QUEL 域關(guān)系演算語(yǔ)言 - 謂詞變?cè)幕緦?duì)象是域變量 - 典型代表: QBE 具有關(guān)系代數(shù)和關(guān)系演算雙重特點(diǎn)的語(yǔ)言 典型代表: S
6、QL(Structurel Query Language) 它是集 Query、 DDL、 DML、 DCL 于一體的關(guān)系數(shù)據(jù)語(yǔ)言 , 是關(guān)系數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言 關(guān)系操作集合(續(xù)) 4) 關(guān)系數(shù)據(jù)語(yǔ)言的特點(diǎn) 關(guān)系語(yǔ)言是一種高度非過(guò)程化的語(yǔ)言 存取路徑的選擇由 DBMS的優(yōu)化機(jī)制來(lái)完成 用戶不必用循環(huán)結(jié)構(gòu)就可以完成數(shù)據(jù)操作 能夠嵌入高級(jí)語(yǔ)言中使用 關(guān)系代數(shù) 、 元組關(guān)系演算和域關(guān)系演算三種語(yǔ)言 在表達(dá)能力上完全等價(jià) 3. 關(guān)系的三類完整性約束 實(shí)體完整性 通常由關(guān)系系統(tǒng)自動(dòng)支持 參照完整性 早期系統(tǒng)不支持 , 目前大型系統(tǒng)能自動(dòng)支持 用戶定義的完整性 反映應(yīng)用領(lǐng)域需要遵循的約束條件 , 體現(xiàn)了具體
7、 領(lǐng)域中的語(yǔ)義約束 用戶定義后由系統(tǒng)支持 第二章 關(guān)系數(shù)據(jù)庫(kù) 2.1 關(guān)系模型概述 2.2 關(guān)系的數(shù)據(jù)結(jié)構(gòu)及形式化定義 2.3 關(guān)系的完整性 2.4 關(guān)系代數(shù) 2.5 關(guān)系演算 2.6 小結(jié) 2.2 關(guān)系的數(shù)據(jù)結(jié)構(gòu)及形式化定義 關(guān)系模型建立在集合代數(shù)的基礎(chǔ)上 關(guān)系數(shù)據(jù)結(jié)構(gòu)的基本概念 關(guān)系 關(guān)系模式 關(guān)系數(shù)據(jù)庫(kù) 2.2 關(guān)系數(shù)據(jù)結(jié)構(gòu) 2.2.1 關(guān)系 2.2.2 關(guān)系模式 2.2.3 關(guān)系數(shù)據(jù)庫(kù) 2.2 關(guān)系數(shù)據(jù)結(jié)構(gòu) 2.2.1 關(guān)系 2.2.2 關(guān)系模式 2.2.3 關(guān)系數(shù)據(jù)庫(kù) 2.2.1 關(guān)系 域 ( Domain) 2. 笛卡爾積 ( Cartesian Product) 3. 關(guān)系 (
8、Relation) 域( Domain) 域 是一組具有相同數(shù)據(jù)類型的值的集合 。 例 整數(shù) 實(shí)數(shù) 介于某個(gè)取值范圍的整數(shù) 長(zhǎng)度指定長(zhǎng)度的字符串集合 男 , 女 介于某個(gè)取值范圍的日期 2. 笛卡爾積( Cartesian Product) 1) 笛卡爾積 給定一組域 D1, D2, , Dn, 這些域中可以有相同 的 。 D1, D2, , Dn的笛卡爾積為: D1 D2 Dn ( d1, d2, , dn) diDi, i 1, 2, , n 所有域的所有取值的一個(gè)組合 不能重復(fù) 笛卡爾積(續(xù) ) 例 2-1 給出三個(gè)域: D1=SUPERVISOR = 張清玫 , 劉逸 D2=SPECI
9、ALITY=計(jì)算機(jī)專業(yè) , 信息專業(yè) D3=POSTGRADUATE=李勇 , 劉晨 , 王敏 則 D1, D2, D3的笛卡爾積為: D1 D2 D3 (張清玫 , 計(jì)算機(jī)專業(yè) , 李勇 ), (張清玫 , 計(jì) 算機(jī)專業(yè) , 劉晨 ), (張清玫 , 計(jì)算機(jī)專業(yè) , 王敏 ), (張清玫 , 信息專業(yè) , 李勇 ), (張清玫 , 信息專業(yè) , 劉晨 ), (張清玫 , 信息專業(yè) , 王敏 ), (劉逸 , 計(jì)算機(jī)專業(yè) , 李勇 ), (劉逸 , 計(jì)算機(jī)專業(yè) , 劉晨 ), (劉逸 , 計(jì)算機(jī)專業(yè) , 王敏 ), (劉逸 , 信息專業(yè) , 李勇 ), (劉逸 , 信息專業(yè) , 劉晨 ), (
10、劉逸 , 信息 專業(yè) , 王敏 ) 笛卡爾積(續(xù) ) 2) 元組 ( Tuple) 笛卡爾積中每一個(gè)元素 ( d1, d2, , dn) 叫作一個(gè) n元組 ( n-tuple) 或簡(jiǎn)稱元組 。 例 3) 分量( Component) 笛卡爾積元素( d1, d2, , dn)中的每一個(gè)值 di叫作一個(gè) 分量。 4) 基數(shù) ( Cardinal number) 若 Di( i 1, 2, , n) 為有限集 , 其基數(shù)為 mi ( i 1, 2, , n) , 則 D1 D2 Dn的基數(shù) M為: 在上例中,基數(shù): 2 2 3 12,即 D1 D2 D3共 有 2 2 3 12個(gè)元組 笛卡爾積(續(xù)
11、 ) mM i n 1i 笛卡爾積(續(xù) ) 5)笛卡爾積的表示方法 笛卡爾積可表示為一個(gè)二維表 。 表中的每行對(duì)應(yīng) 一個(gè)元組 , 表中的每列對(duì)應(yīng)一個(gè)域 。 在上例中 , 12個(gè)元組可列成一張二維表 表 2 . 1 D 1 , D 2 , D 3 的笛卡爾積 S U P E R V I S OR S P E C I A L IT Y P OS T GR A D U A T E 張清玫 計(jì)算機(jī)專業(yè) 李勇 張清玫 計(jì)算機(jī)專業(yè) 劉晨 張清玫 計(jì)算機(jī)專業(yè) 王敏 張清玫 信息專業(yè) 李勇 張清玫 信息專業(yè) 劉晨 張清玫 信息專業(yè) 王敏 劉逸 計(jì)算機(jī)專業(yè) 李勇 劉逸 計(jì)算機(jī)專業(yè) 劉晨 劉逸 計(jì)算機(jī)專業(yè) 王敏
12、劉逸 信息專業(yè) 李勇 劉逸 信息專業(yè) 劉晨 劉逸 信息專業(yè) 王敏 笛卡爾積(續(xù) ) 表 2 . 1 D 1 , D 2 , D 3 的笛卡爾積 S U P E R V I S OR S P E C I A L IT Y P OS T GR A D U A T E 張清玫 計(jì)算機(jī)專業(yè) 李勇 張清玫 計(jì)算機(jī)專業(yè) 劉晨 張清玫 計(jì)算機(jī)專業(yè) 王敏 張清玫 信息專業(yè) 李勇 張清玫 信息專業(yè) 劉晨 張清玫 信息專業(yè) 王敏 劉逸 計(jì)算機(jī)專業(yè) 李勇 劉逸 計(jì)算機(jī)專業(yè) 劉晨 劉逸 計(jì)算機(jī)專業(yè) 王敏 劉逸 信息專業(yè) 李勇 劉逸 信息專業(yè) 劉晨 劉逸 信息專業(yè) 王敏 3. 關(guān)系( Relation) 1) 關(guān)系 D
13、1 D2 Dn的子集叫作在域 D1, D2, , Dn上 的關(guān)系 , 表示為 R( D1, D2, , Dn) R: 關(guān)系名 n: 關(guān)系的目或度 ( Degree) 關(guān)系(續(xù)) 1) 關(guān)系 (續(xù) ) 注意 關(guān)系是笛卡爾積的有限子集 。 無(wú)限關(guān)系在數(shù)據(jù)庫(kù)系統(tǒng) 中是無(wú)意義的 。 由于笛卡爾積不滿足交換律 , 即 (d1, d2, , dn )(d2, d1, , dn ) 但關(guān)系滿足交換律 , 即 (d1, d2 , , di , dj , , dn) =( d1, d2 , , dj, di , , dn) ( i, j = 1, 2, , n) 解決方法:為關(guān)系的每個(gè)列附加一個(gè)屬性名以取消 關(guān)
14、系元組的有序性 關(guān)系(續(xù)) 例如在表 2.1 的笛卡爾積中取出有實(shí)際意義的元組 來(lái)構(gòu)造關(guān)系 關(guān)系: SAP(SUPERVISOR, SPECIALITY, POSTGRADUATE) 關(guān)系名 , 屬性名 假設(shè): 導(dǎo)師與專業(yè): 1:1( 即一個(gè)導(dǎo)師只能對(duì)一個(gè)專業(yè) ) , 導(dǎo)師與研究生: 1:n( 一個(gè)研究生只能遵從一個(gè)導(dǎo)師 ) 于是: SAP關(guān)系可以包含三個(gè)元組 (張清玫 , 信息專業(yè) , 李勇 ), (張清玫,信息專業(yè),劉晨 ), (劉逸,信息專業(yè),王敏 ) 關(guān)系(續(xù)) 2) 元組 關(guān)系中的每個(gè)元素是關(guān)系中的元組 , 通常用 t表示 。 3) 單元關(guān)系與二元關(guān)系 當(dāng) n=1時(shí) , 稱該關(guān)系為單
15、元關(guān)系 ( Unary relation) 。 當(dāng) n=2時(shí) , 稱該關(guān)系為二元關(guān)系 ( Binary relation) 。 關(guān)系(續(xù)) 4) 關(guān)系的表示 關(guān)系也是一個(gè)二維表 , 表的每行對(duì)應(yīng)一個(gè)元組 , 表的 每列對(duì)應(yīng)一個(gè)域 。 表 2 . 2 S A P 關(guān)系 S U P E R V I S O R S P E C I A L I T Y P O S T G R A D U A T E 張清玫 信息專業(yè) 李勇 張清玫 信息專業(yè) 劉晨 劉逸 信息專業(yè) 王敏 關(guān)系(續(xù)) 5) 屬性 關(guān)系中不同列可以對(duì)應(yīng)相同的域 , 為了加以區(qū)分 , 必 須對(duì)每列起一個(gè)名字 , 稱為屬性 ( Attribut
16、e) 。 n目關(guān)系必有 n個(gè)屬性 。 關(guān)系(續(xù)) 6) 碼 候選碼 ( Candidate key) 若關(guān)系中的某一屬性組的值能唯一地標(biāo)識(shí)一個(gè)元 組,則稱該屬性組為候選碼,在有多個(gè) 候 選碼 時(shí)可以選一個(gè)作為主碼。 在最簡(jiǎn)單的情況下,候選碼只包含一個(gè)屬性。 在最極端的情況下,關(guān)系模式的所有屬性組 是這個(gè)關(guān)系模式的候選碼,稱為 全碼( All-key) 關(guān)系(續(xù)) 碼 (續(xù) ) 主碼 若一個(gè)關(guān)系有多個(gè)候選碼 , 則選定其中一個(gè) 為主碼 ( Primary key) 主碼的諸屬性稱為 主屬性 ( Prime attribute) 。 不包含在任何侯選碼中的屬性稱為 非碼屬性 ( Non-key a
17、ttribute) 關(guān)系(續(xù)) 7) 三類關(guān)系 ( 或稱三類表 ) 基本關(guān)系 ( 基本表或基表 ) 實(shí)際存在的表,是實(shí)際存儲(chǔ)數(shù)據(jù)的邏輯表示 查詢表 查詢結(jié)果對(duì)應(yīng)的表 視圖表 由基本表或其他視圖表導(dǎo)出的表 , 是虛表 , 不對(duì) 應(yīng)實(shí)際存儲(chǔ)的數(shù)據(jù) 8) 基本關(guān)系的性質(zhì) 列是同質(zhì)的( Homogeneous) 每一列中的分量是同一類型的數(shù)據(jù) , 來(lái)自同 一個(gè)域 不同的列可出自同一個(gè)域 其中的每一列稱為一個(gè)屬性 不同的屬性要給予不同的屬性名 基本關(guān)系的性質(zhì) (續(xù) ) 上例中也可以只給出兩個(gè)域: 人 ( PERSON) =張清玫 , 劉逸 , 李勇 , 劉晨 , 王敏 專業(yè) ( SPECIALITY)
18、=計(jì)算機(jī)專業(yè) , 信息專業(yè) SAP關(guān)系的導(dǎo)師屬性和研究生屬性都從 PERSON域中取值 為了避免混淆 , 必須給這兩個(gè)屬性取不同的屬性名 , 而不能直接使 用域名 。 例如定義 : 導(dǎo)師屬性名為 SUPERVISOR-PERSON( 或 SUPERVISOR) 研究生屬性名為 POSTGRADUATE-PERSON( 或 POSTGRADUATE) 基本關(guān)系的性質(zhì) (續(xù) ) 列的順序無(wú)所謂 列的次序可以任意交換 遵循這一性質(zhì)的數(shù)據(jù)庫(kù)產(chǎn)品 (如 ORACLE), 增加新屬性時(shí),永遠(yuǎn)是插至最后一列 但也有許多關(guān)系數(shù)據(jù)庫(kù)產(chǎn)品沒(méi)有遵循這一 性質(zhì),例如 FoxPro仍然區(qū)分了屬性順序 基本關(guān)系的性質(zhì) (
19、續(xù) ) 任意兩個(gè)元組不能完全相同 由笛卡爾積的性質(zhì)決定 但許多關(guān)系數(shù)據(jù)庫(kù)產(chǎn)品沒(méi)有遵循這一性質(zhì) 。 例如 : Oracle, SQL SERVER, FoxPro等都允許關(guān)系表中存 在兩個(gè)完全相同的元組 , 除非用戶特別定義了相應(yīng)的 約束條件 。 基本關(guān)系的性質(zhì) (續(xù) ) 行的順序無(wú)所謂 行的次序可以任意交換 遵循這一性質(zhì)的數(shù)據(jù)庫(kù)產(chǎn)品 (如 ORACLE), 插入一個(gè)元組時(shí)永遠(yuǎn)插至最后一行 但也有許多關(guān)系數(shù)據(jù)庫(kù)產(chǎn)品沒(méi)有遵循這一性 質(zhì) , 例如 FoxPro仍然區(qū)分了元組的順序 基本關(guān)系的性質(zhì) (續(xù) ) 分量必須取原子值 每一個(gè)分量都必須是不可分的數(shù)據(jù)項(xiàng)。 這是規(guī)范條件中最基本的一條 表 2 .
20、3 非規(guī)范化關(guān)系 P O S T G R A D U A T E S U P E R V I S O R S P E C I A L I T Y P G 1 P G 2 張清玫 信息專業(yè) 李勇 劉晨 劉逸 信息專業(yè) 王敏 2.2 關(guān)系數(shù)據(jù)結(jié)構(gòu) 2.2.1 關(guān)系 2.2.2 關(guān)系模式 2.2.3 關(guān)系數(shù)據(jù)庫(kù) 2.2.2 關(guān)系模式 1 什么是關(guān)系模式 2定義關(guān)系模式 3. 關(guān)系模式與關(guān)系 1什么是關(guān)系模式 關(guān)系模式 ( Relation Schema) 是型 關(guān)系是值 關(guān)系模式是對(duì)關(guān)系的描述 元組集合的結(jié)構(gòu) 屬性構(gòu)成 屬性來(lái)自的域 屬性與域之間的映象關(guān)系 元組語(yǔ)義以及完整性約束條件 屬性間的數(shù)據(jù)依
21、賴關(guān)系集合 2定義關(guān)系模式 關(guān)系模式可以形式化地表示為: R( U, D, dom, F) R 關(guān)系名 U 組成該關(guān)系的屬性名集合 D 屬性組 U中屬性所來(lái)自的域 dom 屬性向域的映象集合 F 屬性間的數(shù)據(jù)依賴關(guān)系集合 定義關(guān)系模式 (續(xù) ) 例 : 導(dǎo)師和研究生出自同一個(gè)域 人, 取不同的屬性名,并在模式中定義屬性向 域 的映象,即說(shuō)明它們分別出自哪個(gè)域: dom( SUPERVISOR-PERSON) = dom( POSTGRADUATE-PERSON) =PERSON 定義關(guān)系模式 (續(xù) ) 關(guān)系模式通??梢院?jiǎn)記為 R (U) 或 R (A1, A2, , An) R 關(guān)系名 A1,
22、 A2, , An 屬性名 注:域名及屬性向域的映象常常直接說(shuō)明為 屬性的類型、長(zhǎng)度 3. 關(guān)系模式與關(guān)系 關(guān)系模式 對(duì)關(guān)系的描述 靜態(tài)的 、 穩(wěn)定的 關(guān)系 關(guān)系模式在某一時(shí)刻的狀態(tài)或內(nèi)容 動(dòng)態(tài)的 、 隨時(shí)間不斷變化的 關(guān)系模式和關(guān)系往往統(tǒng)稱為關(guān)系 通過(guò)上下文加以區(qū)別 2.2 關(guān)系數(shù)據(jù)結(jié)構(gòu) 2.2.1 關(guān)系 2.2.2 關(guān)系模式 2.2.3 關(guān)系數(shù)據(jù)庫(kù) 2.2.3 關(guān)系數(shù)據(jù)庫(kù) 1. 關(guān)系數(shù)據(jù)庫(kù) 2. 關(guān)系數(shù)據(jù)庫(kù)的型與值 1. 關(guān)系數(shù)據(jù)庫(kù) 在一個(gè)給定的應(yīng)用領(lǐng)域中 , 所有實(shí)體及實(shí) 體之間聯(lián)系的關(guān)系的集合構(gòu)成一個(gè)關(guān)系數(shù) 據(jù)庫(kù) 。 2. 關(guān)系數(shù)據(jù)庫(kù)的型與值 關(guān)系數(shù)據(jù)庫(kù)也有型和值之分 關(guān)系數(shù)據(jù)庫(kù)的型
23、稱為關(guān)系數(shù)據(jù)庫(kù)模式 , 是對(duì)關(guān)系 數(shù)據(jù)庫(kù)的描述 若干域的定義 在這些域上定義的若干關(guān)系模式 關(guān)系數(shù)據(jù)庫(kù)的值 是這些關(guān)系模式在某一時(shí)刻對(duì)應(yīng) 的關(guān)系的集合 , 通常簡(jiǎn)稱為關(guān)系數(shù)據(jù)庫(kù) 第二章 關(guān)系數(shù)據(jù)庫(kù) 2.1 關(guān)系模型概述 2.2 關(guān)系數(shù)據(jù)結(jié)構(gòu) 2.3 關(guān)系的完整性 2.4 關(guān)系代數(shù) 2.5 關(guān)系演算 2.6 小結(jié) 2.3 關(guān)系的完整性 關(guān)系模型的完整性規(guī)則是對(duì)關(guān)系的某種約束條件 。 關(guān)系模型中三類完整性約束: 實(shí)體完整性 參照完整性 用戶定義的完整性 實(shí)體完整性和參照完整性是關(guān)系模型必須滿足的完整性 約束條件 , 被稱作是關(guān)系的兩個(gè) 不變性 , 應(yīng)該由關(guān)系 系統(tǒng)自動(dòng)支持 。 關(guān)系的完整性 (續(xù)
24、) 2.3.1 實(shí)體完整性 2.3.2. 參照完整性 2.3.3. 用戶定義的完整性 關(guān)系的完整性 (續(xù) ) 2.3.1 實(shí)體完整性 2.3.2. 參照完整性 2.3.3. 用戶定義的完整性 2.3.1 實(shí)體完整性 實(shí)體完整性規(guī)則 ( Entity Integrity) 若屬性 A是基本關(guān)系 R的主屬性 , 則屬性 A不能取空值 例 SAP(SUPERVISOR, SPECIALITY, POSTGRADUATE) POSTGRADUATE屬性為主碼 ( 假設(shè)研究生不會(huì)重名 ) , 則其不能取空值 實(shí)體完整性 (續(xù) ) 關(guān)系模型必須遵守實(shí)體完整性規(guī)則的原因 (1) 實(shí)體完整性規(guī)則是針對(duì)基本關(guān)系
25、而言的 。 一個(gè)基 本表通常對(duì)應(yīng)現(xiàn)實(shí)世界的一個(gè)實(shí)體集或多對(duì)多聯(lián)系 。 (2) 現(xiàn)實(shí)世界中的實(shí)體和實(shí)體間的聯(lián)系都是可區(qū)分的 , 即它們具有某種唯一性標(biāo)識(shí) 。 (3) 相應(yīng)地 , 關(guān)系模型中以主碼作為唯一性標(biāo)識(shí) 。 實(shí)體完整性 (續(xù) ) 關(guān)系模型必須遵守實(shí)體完整性規(guī)則的原因 (續(xù) ) (4) 主碼中的屬性即主屬性不能取空值 。 空值就是 不知道 或 無(wú)意義 的值 。 主屬性取空值 , 就說(shuō)明存在某個(gè)不可標(biāo)識(shí)的實(shí)體 , 即 存在不可區(qū)分的實(shí)體 , 這與第 ( 2) 點(diǎn)相矛盾 , 因此 這個(gè)規(guī)則稱為實(shí)體完整性 。 實(shí)體完整性 (續(xù) ) 注意 實(shí)體完整性規(guī)則規(guī)定基本關(guān)系的所有 主屬性都不能取空值 例 選
26、修(學(xué)號(hào),課程號(hào),成績(jī)) 學(xué)號(hào)、課程號(hào)為主碼,則兩個(gè)屬性都不 能取空值。 關(guān)系的完整性 2.3.1 實(shí)體完整性 2.3.2. 參照完整性 2.3.3. 用戶定義的完整性 2.3.2 參照完整性 1. 關(guān)系間的引用 2. 外碼 3. 參照完整性規(guī)則 1. 關(guān)系間的引用 在關(guān)系模型中實(shí)體及實(shí)體間的聯(lián)系都是用 關(guān)系來(lái)描述的 , 因此可能存在著關(guān)系與關(guān) 系間的引用 。 例 2-2 學(xué)生實(shí)體 、 專業(yè)實(shí)體以及專業(yè)與學(xué)生 間的一對(duì)多聯(lián)系 學(xué)生 ( 學(xué)號(hào) , 姓名 , 性別 , 專業(yè)號(hào) , 年齡 ) 專業(yè) ( 專業(yè)號(hào) , 專業(yè)名 ) 學(xué)號(hào) 姓名 性別 專業(yè)號(hào) 年齡 801 張三 女 01 19 802 李四
27、 男 01 20 803 王五 男 01 20 804 趙六 女 02 20 805 錢七 男 02 19 專業(yè)號(hào) 專業(yè)名 01 信息 02 數(shù)學(xué) 03 計(jì)算機(jī)專業(yè)( 專業(yè)號(hào) ,專業(yè)名) 學(xué)生( 學(xué)號(hào) ,姓名,性別, 專業(yè)號(hào) ,年齡) 關(guān)系間的引用 (續(xù) ) 例 2-3 學(xué)生 、 課程 、 學(xué)生與課程之間的多對(duì)多聯(lián) 系 學(xué)生 ( 學(xué)號(hào) , 姓名 , 性別 , 專業(yè)號(hào) , 年齡 課程 ( 課程號(hào) , 課程名 , 學(xué)分 ) 選修 ( 學(xué)號(hào) , 課程號(hào) , 成績(jī) ) 課程號(hào) 課程名 學(xué)分 01 數(shù)據(jù)庫(kù) 4 02 數(shù)據(jù)結(jié)構(gòu) 4 03 編譯 4 04 P ASC AL 2 學(xué)號(hào) 姓名 性別 專業(yè)號(hào) 年齡
28、 801 張三 女 01 19 802 李四 男 01 20 803 王五 男 01 20 804 趙六 女 02 20 805 錢七 男 02 19 學(xué)號(hào) 課程號(hào) 成績(jī) 801 04 92 801 03 78 801 02 85 802 03 82 802 04 90 803 04 88 學(xué)生 學(xué)生選課 課程 關(guān)系間的引用 (續(xù) ) 例 2-4 學(xué)生實(shí)體及其內(nèi)部的領(lǐng)導(dǎo)聯(lián)系 (一對(duì)多 ) 學(xué)生 ( 學(xué)號(hào) , 姓名 , 性別 , 專業(yè)號(hào) , 年齡 , 班長(zhǎng) ) 學(xué)號(hào) 姓名 性別 專業(yè)號(hào) 年齡 班長(zhǎng) 801 張三 女 01 19 802 802 李四 男 01 20 803 王五 男 01 20
29、802 804 趙六 女 02 20 805 805 錢七 男 02 19 2外碼( Foreign Key) 設(shè) F是基本關(guān)系 R的一個(gè)或一組屬性 , 但不 是關(guān)系 R的碼 。 如果 F與基本關(guān)系 S的主碼 Ks相對(duì)應(yīng) , 則稱 F是基本關(guān)系 R的 外碼 基本關(guān)系 R稱 為 參照關(guān)系 ( Referencing Relation) 基本關(guān)系 S稱 為 被參照關(guān)系 ( Referenced Relation) 或 目標(biāo)關(guān)系 ( Target Relation) 。 外碼 (續(xù) ) 說(shuō)明 關(guān)系 R和 S不一定是不同的關(guān)系 目標(biāo)關(guān)系 S的主碼 Ks 和參照關(guān)系的外碼 F必須定義 在同一個(gè)(或一組)
30、域上 外碼并不一定要與相應(yīng)的主碼同名 當(dāng)外碼與相應(yīng)的主碼屬于不同關(guān)系時(shí),往往 取相同 的名字,以便于識(shí)別 3. 參照完整性規(guī)則 若屬性 ( 或?qū)傩越M ) F是基本關(guān)系 R的外碼 它與基本關(guān)系 S的主碼 Ks相對(duì)應(yīng) ( 基本關(guān) 系 R和 S不一定是不同的關(guān)系 ) , 則對(duì) 于 R中每個(gè)元組在 F上的值必須為: 或者取空值 ( F的每個(gè)屬性值均為空值 ) 或者等于 S中某個(gè)元組的主碼值 。 參照完整性規(guī)則 (續(xù) ) 學(xué)生關(guān)系中每個(gè)元組的 專業(yè)號(hào) 屬性只 取下面兩類值: ( 1) 空值 , 表示尚未給該學(xué)生分配專業(yè) ( 2) 非空值 , 這時(shí)該值必須 是專業(yè)關(guān)系中某個(gè)元組 的 專業(yè)號(hào) 值 , 表示該
31、學(xué)生不可能分配到一個(gè)不 存在的專業(yè)中 參照完整性規(guī)則 (續(xù) ) 選修( 學(xué)號(hào) , 課程號(hào) ,成績(jī)) 學(xué)號(hào)和課程號(hào)是選修關(guān)系中的主屬性 按照實(shí)體完整性和參照完整性規(guī)則,它們 只能取相應(yīng)被參照關(guān)系中已經(jīng)存在的主碼 值 參照完整性規(guī)則 (續(xù) ) 學(xué)生( 學(xué)號(hào) ,姓名,性別,專業(yè)號(hào),年齡, 班長(zhǎng) ) 班長(zhǎng)屬性值可以取兩類值: ( 1)空值,表示該學(xué)生所在班級(jí)尚未選出班長(zhǎng),或該學(xué) 生本人即是班長(zhǎng); ( 2)非空值,這時(shí)該值必須是本關(guān)系中某個(gè)元組的學(xué)號(hào) 值 關(guān)系的完整性 (續(xù) ) 2.3.1 實(shí)體完整性 2.3.2. 參照完整性 2.3.3. 用戶定義的完整性 2.3.3 用戶定義的完整性 用戶定義的完整
32、性是針對(duì)某一具體關(guān)系數(shù)據(jù)庫(kù) 的約束條件 , 反映某一具體應(yīng)用所涉及的數(shù)據(jù) 必須滿足的語(yǔ)義要求 。 關(guān)系模型應(yīng)提供定義和檢驗(yàn)這類完整性的機(jī)制 , 以便用統(tǒng)一的系統(tǒng)的方法處理它們 , 而不要 由應(yīng)用程序承擔(dān)這一功能 。 用戶定義的完整性 (續(xù) ) 例 : 課程 (課程號(hào) , 課程名 , 學(xué)分 ) 課程名 屬性必須取唯一值 非主屬性 課程名 也不能取空值 學(xué)分 屬性只能取值 1, 2, 3, 4 小結(jié) 關(guān)系數(shù)據(jù)結(jié)構(gòu) 關(guān)系 域 笛卡爾積 關(guān)系 - 關(guān)系,屬性,元組 - 候選碼,主碼,主屬性 - 基本關(guān)系的性質(zhì) 關(guān)系模式 關(guān)系數(shù)據(jù)庫(kù) 關(guān)系的數(shù)據(jù)操作集合 查詢 選擇、投影、連接、除、并、交、差 數(shù)據(jù)更新
33、插入、刪除、修改 關(guān)系的完整性約束 實(shí)體完整性 參照完整性 外碼 用戶定義的完整性 2.4 關(guān)系代數(shù) 概述 傳統(tǒng)的集合運(yùn)算 專門的關(guān)系運(yùn)算 概述 1. 關(guān)系代數(shù) 2. 運(yùn)算的三要素 3. 關(guān)系代數(shù)運(yùn)算的三個(gè)要素 4. 關(guān)系代數(shù)運(yùn)算的分類 5. 表示記號(hào) 概述 1.關(guān)系代數(shù) 一種抽象的查詢語(yǔ)言 用對(duì)關(guān)系的運(yùn)算來(lái)表達(dá)查詢 概述 (續(xù) ) 2 關(guān)系代數(shù)運(yùn)算的三個(gè)要素 運(yùn)算對(duì)象:關(guān)系 運(yùn)算結(jié)果:關(guān)系 運(yùn)算符:四類 概述 (續(xù) ) 運(yùn)算符 ( 續(xù) ) 集合運(yùn)算符 將關(guān)系看成元組的集合 運(yùn)算是從關(guān)系的 水平 方向即行的角度來(lái)進(jìn)行 專門的關(guān)系運(yùn)算符 不僅涉及行而且涉及列 算術(shù)比較符 輔助專門的關(guān)系運(yùn)算符進(jìn)行
34、操作 邏輯運(yùn)算符 輔助專門的關(guān)系運(yùn)算符進(jìn)行操作 概述 (續(xù) ) 4關(guān)系代數(shù)運(yùn)算的分類 傳統(tǒng)的集合運(yùn)算 并 、 差 、 交 、 廣義笛卡爾積 專門的關(guān)系運(yùn)算 選擇 、 投影 、 連接 、 除 概述 (續(xù) ) 5表示記號(hào) ( 1) R, tR, tAi 設(shè)關(guān)系模式為 R(A1, A2, , An) 它的一個(gè)關(guān)系設(shè)為 R。 tR表示 t是 R的一個(gè)元組 tAi則表示元組 t中相應(yīng)于屬性 Ai的一個(gè)分量 專門的關(guān)系運(yùn)算 專門的關(guān)系運(yùn)算包括選擇、投影、連接、除等。為了敘述上的方 便,首先引入幾個(gè)記號(hào)。 (1)設(shè)關(guān)系模式為 R(A1,A2,A n),tR表示 t是 R的一個(gè)元組。 tAi 表示元組 t中相
35、應(yīng)于屬性 Ai的一個(gè)分量。 ( 2) 若 A=Ai1, Ai2, , Aik,其中 Ai1, Ai2, , Aik是 A1, A2, , An中的一部分,則 A稱為屬性列或域列。 tA=(tAi1, tAi2, , tAik)表示元組 t在屬性列 A上諸分量的集合。 A則表 示 A1, A2, , An中去掉 Ai1, Ai2, , Aik后剩余的屬性組 。 概述 (續(xù) ) (3) tr ts R為 n目關(guān)系, S為 m目關(guān)系。 tr R, tsS, tr ts稱為 元組的連接。它是一個(gè) n + m列的元組,前 n個(gè)分量為 R 中的一個(gè) n元組,后 m個(gè)分量為 S中的一個(gè) m元組。 概述 (續(xù)
36、 ) (4)象集 Zx 給定一個(gè)關(guān)系 R( X, Z) , X和 Z為屬性組 。 當(dāng) tX=x時(shí) , x在 R 中的 象集 ( Images Set) 為: Zx=tZ|t R, tX=x 它表示 R中屬性組 X上值為 x的諸元組在 Z上分量的集合。 2.4 關(guān)系代數(shù) 概述 傳統(tǒng)的集合運(yùn)算 專門的關(guān)系運(yùn)算 2.4.1 傳統(tǒng)的集合運(yùn)算 并 差 交 廣義笛卡爾積 1. 并( Union) R和 S 具有相同的目 n( 即兩個(gè)關(guān)系都有 n個(gè)屬性 ) 相應(yīng)的屬性取自同一個(gè)域 R S 仍為 n目關(guān)系 , 由屬于 R或?qū)儆?S的元組組成 R S = t|t R t S 并 (續(xù) ) A B C a1 b1
37、 c1 a1 b2 c2 a2 b2 c1 A B C a1 b1 c1 a1 b2 c2 a1 b3 c2 a2 b2 c1 A B C a1 b2 c2 a1 b3 c2 a2 b2 c1 R S R S 2. 差( Difference) R和 S 具有相同的目 n 相應(yīng)的屬性取自同一個(gè)域 R - S 仍為 n目關(guān)系 , 由屬于 R而不屬于 S的所有元組組成 R -S = t|tR tS 差 (續(xù) ) A B C a1 b1 c1 a1 b2 c2 a2 b2 c1 A B C a1 b1 c1 A B C a1 b2 c2 a1 b3 c2 a2 b2 c1 R S R-S 3. 交(
38、 Intersection) R和 S 具有相同的目 n 相應(yīng)的屬性取自同一個(gè)域 RS 仍為 n目關(guān)系 , 由既屬于 R又屬于 S的元組組成 RS = t|t R t S RS = R (R-S) 交 (續(xù) ) A B C a1 b1 c1 a1 b2 c2 a2 b2 c1 A B C a1 b2 c2 a2 b2 c1 A B C a1 b2 c2 a1 b3 c2 a2 b2 c1 R S R S 4. 廣義笛卡爾積( Extended Cartesian Product) R n目關(guān)系 , k1個(gè)元組 S m目關(guān)系 , k2個(gè)元組 R S 列: ( n+m) 列的元組的集合 元組的前
39、n列是關(guān)系 R的一個(gè)元組 后 m列是關(guān)系 S的一個(gè)元組 行: k1 k2個(gè)元組 R S = tr ts |tr R tsS 廣義笛卡爾積 (續(xù) ) A B C a1 b1 c1 a1 b2 c2 a2 b2 c1 A B C a1 b1 c1 a1 b1 c1 a1 b1 c1 a1 b2 c2 a1 b2 c2 a1 b2 c2 a2 b2 c1 a2 b2 c1 a2 b2 c1 A B C a1 b2 c2 a1 b3 c2 a2 b2 c1 R S R S A B C a1 b2 c2 a1 b3 c2 a2 b2 c1 a1 b2 c2 a1 b3 c2 a2 b2 c1 a1 b2
40、 c2 a1 b3 c2 a2 b2 c1 2.4 關(guān)系代數(shù) 概述 傳統(tǒng)的集合運(yùn)算 專門的關(guān)系運(yùn)算 2.4.2 專門的關(guān)系運(yùn)算 選擇 投影 連接 除 1. 選擇( Selection) 1) 選擇又稱為限制 ( Restriction) 2) 選擇運(yùn)算符的含義 在關(guān)系 R中選擇滿足給定條件的諸元組 F(R) = t|tR F(t)= 真 F:選擇條件 , 是一個(gè)邏輯表達(dá)式 , 基本形式為: ( X1Y1 ) ( X2Y2 ) :比較運(yùn)算符 ( , , , , 或 ) X1, Y1等:屬性名 、 常量 、 簡(jiǎn)單函數(shù); 屬性名也可以用它的序號(hào)來(lái)代替; :邏輯運(yùn)算符 ( 或 ) :表示任選項(xiàng) :表示
41、上述格式可以重復(fù)下去 選擇(續(xù)) 3) 選擇運(yùn)算是從行的角度進(jìn)行的運(yùn)算 4) 舉例 設(shè)有一個(gè)學(xué)生 -課程數(shù)據(jù)庫(kù) , 包括學(xué)生關(guān)系 Student 、 課程關(guān)系 Course和選修關(guān)系 SC。 選擇(續(xù)) 學(xué) 號(hào) Sno 姓 名 Sname 性 別 Ssex 年 齡 Sage 所 在 系 Sdept 95001 李勇 男 20 CS 95002 劉晨 女 19 IS 95003 王敏 女 18 MA 95004 張立 男 19 IS (a) Student 例 1 例 2 例 4 例 3 例 9 選擇(續(xù)) (b) Course 課程號(hào) 課程名 先行課 學(xué)分 Cno Cname Cpno Ccr
42、edit 1 數(shù)據(jù)庫(kù) 5 4 2 數(shù)學(xué) 2 3 信息系統(tǒng) 1 4 4 操作系統(tǒng) 6 3 5 數(shù)據(jù)結(jié)構(gòu) 7 4 6 數(shù)據(jù)處理 2 7 PASCAL語(yǔ)言 6 4 例 9 選擇(續(xù)) (c) SC 學(xué) 號(hào) 課 程 號(hào) 成 績(jī) Sno Cno Grade 95001 1 92 95001 2 85 95001 3 88 95002 2 90 95002 3 80 例 7 例 9 選擇(續(xù)) 例 1 查詢信息系 ( IS系 ) 全體學(xué)生 Sdept = IS (Student) 或 5 =IS (Student) 結(jié)果: Sno Sname Ssex Sage Sdept 95002 劉晨 女 19 I
43、S 95004 張立 男 19 IS 選擇(續(xù)) 例 2 查詢年齡小于 20歲的學(xué)生 Sage 20(Student) 或 4 20(Student) 結(jié)果: Sno Sname Ssex Sage Sdept 95002 劉晨 女 19 IS 95003 王敏 女 18 MA 95004 張立 男 19 IS 2. 投影( Projection) 1) 投影運(yùn)算符的含義 從 R中選擇出若干屬性列組成新的關(guān)系 A(R) = tA | t R A: R中的屬性列 2. 投影( Projection) 2) 投影操作主要是從列的角度進(jìn)行運(yùn)算 但投影之后不僅取消了原關(guān)系中的某些列 , 而且 還可能取
44、消某些元組 ( 避免重復(fù)行 ) 投影(續(xù)) 3) 舉例 例 3 查詢學(xué)生的姓名和所在系 即求 Student關(guān)系上學(xué)生姓名和所在系兩個(gè)屬性上 的投影 Sname, Sdept(Student) 或 2, 5(Student) 結(jié)果: 投影(續(xù)) Sname Sdept 李勇 CS 劉晨 IS 王敏 MA 張立 IS 投影(續(xù)) 例 4 查詢學(xué)生關(guān)系 Student中都有哪些系 Sdept(Student) 結(jié)果: Sdept CS IS MA 3. 連接( Join) 1) 連接也稱為 連接 2) 連接運(yùn)算的含義 從兩個(gè)關(guān)系的笛卡爾積中選取屬性間滿足一定條件 的元組 R S = | tr R
45、ts S trAtsB A和 B: 分別為 R和 S上度數(shù)相等且可比的屬性組 :比較運(yùn)算符 連接運(yùn)算從 R和 S的廣義笛卡爾積 R S中選?。?R 關(guān)系)在 A屬性組上的值與( S關(guān)系)在 B屬性組上 值滿足比較關(guān)系的元組。 AB tr ts 連接 (續(xù) ) 3)兩類常用連接運(yùn)算 等值連接( equijoin) 什么是等值連接 -為的連接運(yùn)算稱為等值連接 等值連接的含義 - 從關(guān)系 R與 S的廣義笛卡爾積中選取 A、 B 屬性值相等的那些元組 , 即等值連接為: R S = | tr R ts S trA = tsB A=B tr ts 連接 (續(xù) ) 自然連接 ( Natural join)
46、 什么是自然連接 - 自然連接是一種特殊的等值連接 - 兩個(gè)關(guān)系中進(jìn)行比較的分量必須是相 同的屬性組 - 在結(jié)果中把重復(fù)的屬性列去掉 自然連接的含義 R和 S具有相同的屬性組 B R S = | tr R ts S trB = tsB t r ts 連接 (續(xù) ) 4) 一般的連接操作是從行的角度進(jìn)行運(yùn)算 。 自然連接還需要取消重復(fù)列,所以是同時(shí)從行和 列的角度進(jìn)行運(yùn)算。 AB R S 連接 (續(xù) ) 5)舉例 例 5 A B C a1 b1 5 a1 b2 6 a2 b3 8 a2 b4 12 B E b 1 3 b 2 7 b 3 10 b3 2 b 5 2 R S 連接 (續(xù) ) R S
47、 A R.B C S.B E a1 b1 5 b2 7 a 1 b1 5 b3 10 a 1 b2 6 b2 7 a 1 b2 6 b3 10 a2 b3 8 b3 10 C E 連接 (續(xù) ) 等值連接 R S R.B=S.B A R.B C S.B E a1 b1 5 b1 3 a1 b2 6 b2 7 a2 b3 8 b3 10 a2 b3 8 b3 2 連接 (續(xù) ) 自然連接 R S A B C E a1 b1 5 3 a1 b2 6 7 a2 b3 8 10 a2 b3 8 2 4)象集 Z 給定一個(gè)關(guān)系 R( X, Z) , X和 Z為屬性組 。 當(dāng) tX=x時(shí) , x在 R中的
48、 象集 ( Images Set) 為: Zx=tZ|t R, tX=x 它表示 R中屬性組 X上值為 x的諸元組在 Z上分 量的集合。 4)象集 Z A B C a1 b1 c2 a 2 b3 c7 a 3 b4 c6 a 1 b2 c3 a 4 b6 c6 a 2 b2 c3 a 1 b2 c1 B C D b1 c2 d1 b2 c1 d1 b2 c3 d2 R S 4. 除( Division) 給定關(guān)系 R (X, Y) 和 S (Y, Z), 其中 X, Y, Z為屬性組 。 R中的 Y與 S中的 Y可以有不同的屬性名 , 但必須出自相同 的域集 。 R與 S的除運(yùn)算得到一個(gè)新的關(guān)
49、系 P(X), P是 R中 滿足下列條件的元組在 X屬性列上的投影:元組在 X上分 量值 x的象集 Yx包含 S在 Y上投影的集合 。 R S = tr X | tr R Y (S) Yx Yx: x在 R中的象集 , x = trX 除 (續(xù) ) 2) 除操作是同時(shí)從行和列角度進(jìn)行運(yùn)算 3) 舉例 例 6 R S 除 (續(xù) ) A B C a1 b1 c2 a 2 b3 c7 a 3 b4 c6 a 1 b2 c3 a 4 b6 c6 a 2 b2 c3 a 1 b2 c1 B C D b1 c2 d1 b2 c1 d1 b2 c3 d2 R S A a 1 R S 分析: 在關(guān)系 R中 ,
50、 A可以取四個(gè)值 a1, a2, a3, a4 a1的象集為 (b1, c2), (b2, c3), (b2, c1) a2的象集為 (b3, c7), (b2, c3) a3的象集為 (b4, c6) a4的象集為 (b6, c6) S在 (B, C)上的投影為 (b1, c2), (b2, c1), (b2, c3) 只有 a1的象集包含了 S在 (B, C)屬性組上的投影 所以 R S =a1 5綜合舉例 以學(xué)生 -課程數(shù)據(jù)庫(kù)為例 例 7 查詢至少選修 1號(hào)課程和 3號(hào)課程的學(xué)生號(hào)碼 首先建立一個(gè)臨時(shí)關(guān)系 K: 然后求: Sno.Cno(SC) K Cno 1 3 綜合舉例 (續(xù) ) 例
51、 7續(xù) Sno.Cno(SC) 95001象集 1, 2, 3 95002象集 2, 3 Cno(K)=1, 3 于是: Sno.Cno(SC) K=95001 Sno Cno 95001 1 95001 2 95001 3 95002 2 95002 3 綜合舉例 (續(xù) ) 例 8 查詢選修了 2號(hào)課程的學(xué)生的學(xué)號(hào) 。 Sno( Cno=2( SC) 95001, 95002 綜合舉例 (續(xù) ) 例 9 查詢至少選修了一門其直接先行課為 5號(hào)課程的課 程的學(xué)生姓名 。 Sname(Cpno=5(Course SC Student) 或 Sname(Cpno=5(Course) SC Sno,
52、 Sname(Student) 或 Sname (Sno (Cpno=5 (Course) SC) Sno, Sname (Student) 綜合舉例 (續(xù) ) 例 10 查詢選修了全部課程的學(xué)生號(hào)碼和姓名 。 Sno, Cno( SC) Cno( Course) Sno, Sname( Student) 小結(jié) l 關(guān)系代數(shù)運(yùn)算 關(guān)系代數(shù)運(yùn)算 并 、 差 、 交 、 笛卡爾積 、 投影 、 選擇 、 連接 、 除 基本運(yùn)算 并 、 差 、 笛卡爾積 、 投影 、 選擇 交 、 連接 、 除 可以用 5種基本運(yùn)算來(lái)表達(dá) 引進(jìn)它們并不增加語(yǔ)言的能力 , 但可以簡(jiǎn)化表達(dá) 小結(jié) (續(xù) ) l 關(guān)系代數(shù)
53、表達(dá)式 關(guān)系代數(shù)運(yùn)算經(jīng)有限次復(fù)合后形成的式子 l 典型關(guān)系代數(shù)語(yǔ)言 ISBL( Information System Base Language) 由 IBM United Kingdom研究中心研制 用于 PRTV( Peterlee Relational Test Vehicle)實(shí) 驗(yàn)系統(tǒng) 第二章 關(guān)系數(shù)據(jù)庫(kù) 2.1 關(guān)系模型概述 2.2 關(guān)系數(shù)據(jù)結(jié)構(gòu) 2.3 關(guān)系的完整性 2.4 關(guān)系代數(shù) 2.5 關(guān)系演算 2.6 小結(jié) 2.5 關(guān)系演算 關(guān)系演算 以數(shù)理 邏輯 中的謂詞演算為基礎(chǔ) 種類:按謂詞變?cè)煌诸?1.元組關(guān)系演算: 以 元組變量 作為謂詞變?cè)幕緦?duì)象 元組關(guān)系演算語(yǔ)言 A
54、LPHA 2.域關(guān)系演算: 以 域變量 作為謂詞變?cè)幕緦?duì)象 域關(guān)系演算語(yǔ)言 QBE 2.5.1 元組關(guān)系演算語(yǔ)言 ALPHA 由 E.F.Codd提出 INGRES所用的 QUEL語(yǔ)言是參照 ALPHA語(yǔ)言研制的 語(yǔ)句 檢索語(yǔ)句 GET 更新語(yǔ)句 PUT, HOLD, UPDATE, DELETE, DROP 一、檢索操作 語(yǔ)句格式: GET 工作空間名 ( 定額 ) ( 表達(dá)式 1) : 操作條件 DOWN/UP 表達(dá)式 2 定額:規(guī)定檢索的元組個(gè)數(shù) 格式: 數(shù)字 表達(dá)式 1:指定語(yǔ)句的操作對(duì)象 格式: 關(guān)系名 | 關(guān)系名 . 屬性名 | 元組變量 . 屬性名 | 集函數(shù) , 操作條件:
55、將操作結(jié)果限定在滿足條件的元組中 格式: 邏輯表達(dá)式 表達(dá)式 2:指定排序方式 格式: 關(guān)系名 . 屬性名 | 元組變量 . 屬性 名 , 檢索操作 (續(xù) ) (1) 簡(jiǎn)單檢索 (即不帶條件的檢索 ) (2) 限定的檢索 (即帶條件的檢索 ) (3) 帶排序的檢索 (4) 帶定額的檢索 (5) 用元組變量的檢索 (6) 用存在量詞的檢索 檢索操作 (續(xù) ) (7) 帶有多個(gè)關(guān)系的表達(dá)式的檢索 (8) 用全稱量詞的檢索 (9) 用兩種量詞的檢索 (10) 用蘊(yùn)函 ( Implication) 的檢索 (11) 集函數(shù) ( 1)簡(jiǎn)單檢索 GET 工作空間名 ( 表達(dá)式 1) 例 1 查詢所有被選修
56、的課程號(hào)碼 。 GET W (SC.Cno) 例 2 查詢所有學(xué)生的數(shù)據(jù) 。 GET W (Student) ( 2)限定的檢索 格式 GET 工作空間名 ( 表達(dá)式 1) : 操作條件 例 3 查詢信息系 (IS)中年齡小于 20歲的學(xué)生的學(xué)號(hào) 和年齡 。 GET W (Student.Sno , Student.Sage): Student.Sdept=IS Student.Sage19 條件查詢(與條件) 例 4 求計(jì)算機(jī)科學(xué)系年齡大于 19歲的學(xué)生的學(xué) 號(hào) 。 方法 ( 1) :把兩個(gè)條件寫(xiě)在同一行上 Student Sno Sname Ssex Sage Sdept P.95001
57、19 CS 條件查詢(續(xù)) 方法 ( 2) :把兩個(gè)條件寫(xiě)在不同行上 , 但使用 相同的示例元素值 Student Sno Sname Ssex Sage Sdept P.95001 P.95001 19 CS 條件查詢(續(xù)) 例 5 查詢既選修了 1號(hào)課程又選修了 2號(hào)課程的學(xué)生 的學(xué)號(hào) 。 SC Sno Cno Grade P.95001 P.95001 1 2 條件查詢(續(xù)) 例 6 查詢計(jì)算機(jī)科學(xué)系或者年齡大于 19歲的學(xué)生的 學(xué)號(hào) 。 Student Sno Sname Ssex Sage Sdept P.95001 P.95002 19 CS 多表連接 例 7 查詢選修 1號(hào)課程的
58、學(xué)生姓名 。 注意:示例元素 Sno是連接屬性,其值在兩個(gè)表中要 相同 。 SC Sno Cno Grade 95001 1 Student Sno Sname Ssex Sage Sdept 95001 P.李勇 條件查詢(非條件) 例 8 查詢未選修 1號(hào)課程的學(xué)生姓名 思路:顯示學(xué)號(hào)為 95001的學(xué)生名字 , 而該學(xué)生選修 1號(hào)課程的情 況為假 SC Sno Cno Grade 95001 1 Student Sno Sname Ssex Sage Sdept 95001 P.李勇 條件查詢(續(xù)) 例 9 查詢有兩個(gè)人以上選修的課程號(hào) 思路:查詢這樣的課程 1, 它不僅被 95001選
59、修 而且也被另一個(gè)學(xué)生 ( 95001) 選修了 SC Sno Cno Grade 95001 .95001 P.1 1 3. 集函數(shù) 常用集函數(shù): 函 數(shù) 名 功 能 CNT 對(duì)元組計(jì)數(shù) SUM 求 總 和 AVG 求平均值 MAX 求最大值 MIN 求最小值 集函數(shù)(續(xù)) 例 10 查詢信息系學(xué)生的平均年齡 。 Student Sno Sname Ssex Sage Sdept P.AVG.ALL. IS 4.對(duì)查詢結(jié)果排序 (續(xù)) 例 11 查全體男生的姓名 , 要求查詢結(jié)果按所在 系升序排序 , 對(duì)相同系的學(xué)生按年齡降序排序 。 Student Sno Sname Ssex Sage
60、Sdept P.李勇 男 DO( 2) . AO( 1) . 二、修改操作 例 12 把 95001學(xué)生的年齡改為 18歲 。 方法 (1) :將操作符 U.放在值上 Student Sno Sname Ssex Sage Sdept 95001 U. 18 修改操作 (續(xù) ) 方法 (2): 將操作符 U.放在關(guān)系上 碼 95001標(biāo)明要修改的元組 。 U.標(biāo)明所在的行是 修改后的新值 。 由于主碼是不能修改的 , 所以系統(tǒng)不會(huì)混淆要修改 的屬性 。 Student Sno Sname Ssex Sage Sdept U. 95001 18 修改操作 (續(xù) ) 例 13將計(jì)算機(jī)系所有學(xué)生的年
61、齡都改為 18歲 Student Sno Sname Ssex Sage Sdept 95008 U.18 CS 修改操作 (續(xù) ) 例 14 把 95001學(xué)生的年齡增加 1歲 分兩行分別表示改前和改后的示例元素 必須將操作符 U.放在關(guān)系上 Student Sno Sname Ssex Sage Sdept U 95001 95001 17 17+1 修改操作 (續(xù) ) 例 15 將計(jì)算機(jī)系所有學(xué)生的年齡都增加 1歲 Student Sno Sname Ssex Sage Sdept U 95008 95008 18 18+1 CS 2.插入操作 例 16 把信息系女生 95701, 姓名
62、張三 , 年齡 17歲存入數(shù) 據(jù)庫(kù)中 。 Student Sno Sname Ssex Sage Sdept I. 95701 張三 女 17 IS 3. 刪除操作 例 17 刪除學(xué)生 95089 為保證參照完整性 , 刪除 95089學(xué)生前 , 先刪除 95089學(xué) 生選修的全部課程 Student Sno Sname Ssex Sage Sdept D. 95089 SC Sno Cno Grade D. 95089 聚集操作 聚集操作是指輸入一個(gè)值的集合,然后根據(jù)該 值集合得到一個(gè)單一的值作為結(jié)果。常用的聚 集函數(shù)包括求最大值 max、 最小值 min、 平均 值 avg、 總和值 su
63、n和計(jì)數(shù)值 count等 。 例:在 S( S#, SNAME, AGE, SEX) 中,求男同 學(xué)的平均年齡,可以用式子 avgage( sex=M( S) ) 求年齡為 18歲的人數(shù)可用式子 count(S#)( age=18( S) 2.6 關(guān)系演算 把數(shù)理邏輯的謂詞演算引入到關(guān)系運(yùn)算中, 就可得到以關(guān)系演算為基礎(chǔ)的運(yùn)算。關(guān)系演算又 可分為元組演算和域關(guān)系演算,前者以元組為變 量,后者以屬性(域)為變量,分別稱為元組演 算和域演算。 2.6.1 元組關(guān)系演算 在元組關(guān)系演算 ( Tuple Relation Calculus) 中 ,元組關(guān)系演算表達(dá)式簡(jiǎn)稱為元組表達(dá)式,其一般 形式為 t
64、| P( t) 其中, t是元組變量,表示一個(gè)元數(shù)固定的元組; P是公式,在數(shù)理邏輯中也稱為謂詞,也就是計(jì)算 機(jī)語(yǔ)言中的條件表達(dá)式。 t| P( t) 表示滿足公式 P的所有元組 t的集合。 1 原子公式和公式的定義 在元組表達(dá)式中,公式由原子公式組成。 定義 2.4 原子公式 ( Atoms) 有下列三種形式: R( s) 。 其中 R是關(guān)系名 , s是元組變量 。 它表示了 這樣一個(gè)命題 : “ s是關(guān)系 R的一個(gè)元組 ” 。 si uj。 其中 s和 u是元組變量 , 是算術(shù)比較運(yùn) 算符 , si和 uj分別是 s的第 i個(gè)分量和 u的第 j個(gè)分量 ( 即屬性 )。 si uj表示了這樣
65、一個(gè)命題 : “ 元組 s的 第 i個(gè)分量和 u的第 j個(gè)分量之間滿足 關(guān)系 ” 。 si或 uj。 這里 是常量 。 “ si”表 示這樣一個(gè)命題 : “ 元組 s的第 i個(gè)分量值與常量 之 間滿足 關(guān)系 ” 。 定義 2.5 公式 ( Formula) 的遞歸定義如下 : 每個(gè)原子是一個(gè)公式。其中元組變量是自由變量。 如果 P1和 P2是公式 , 那么 P1、 P1P 2、 P1P 2和 P1P2也 都是公式。分別表示下列命題: “ P1不為真 ” , “ P1或 P2是 真 ” , “ P1和 P2都是真 ” , “ 若 P1為真則 P2必然為真 ” 。 公 式中元組變量的自由約束性質(zhì)如
66、同在 P1和 P2中一樣,仍然是 自由的或約束的。 如果 P1是公式,那么 ( s)( P1 ) 和 ( s)( P1 ) 也 都是公式。其中 s是公式 P1中的自由元組變量, 在 (s)( P1 ) 和 ( s)( P1 ) 中稱為約束元組變量。這兩個(gè)公式分 別表示下列命題: “ 存在一個(gè)元組 s使得公式 P1為真 ” , “ 對(duì)于所有元組 s都使得公式 P1為真 ” 。公式中其他元組的自 由約束性,與 P1中的一樣。 公式中各種運(yùn)算符的優(yōu)先級(jí)從高到低依次為: A. 算術(shù)比較運(yùn)算符最高; B. 量詞次之,且 的優(yōu)先級(jí)高于 的優(yōu)先級(jí); C. 邏輯運(yùn)算符最低 , 且 的優(yōu)先級(jí)高于 的優(yōu)先級(jí) , 的優(yōu)先級(jí)高于 的優(yōu)先級(jí); D. 加括號(hào)時(shí),括號(hào)中運(yùn)算符優(yōu)先,同一括號(hào)內(nèi)的運(yùn) 算符之優(yōu)先級(jí)遵循 A、 B、 C各項(xiàng)。 公式只能由上述四種形式構(gòu)成,除此之外構(gòu)成的都 不是公式。 2關(guān)系代數(shù)表達(dá)式到元組表達(dá)式的轉(zhuǎn)換 關(guān)系代數(shù)表達(dá)式可以等價(jià)地轉(zhuǎn)換到元組 表達(dá)式。由于所有的關(guān)系代數(shù)表達(dá)式都能 用五個(gè)基本操作組合而成,因此我們只要 把五個(gè)基本操作用元組演算表達(dá)出來(lái)就行 了。 例: 設(shè)關(guān)系 R和 S都是三元關(guān)系
- 溫馨提示:
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. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 蘇教版五上《小數(shù)乘整數(shù)》ppt課件
- 蘇教版一年級(jí)數(shù)學(xué)上冊(cè)《數(shù)一數(shù)》ppt課件
- 江南1優(yōu)秀課件
- 提高印字質(zhì)量課件
- 服務(wù)分銷策略課件
- 數(shù)學(xué)必修蘇教版互斥事件課件3(共32張PPT)
- 第三章要素費(fèi)用的核算PPT優(yōu)秀資料
- 元素的質(zhì)量分?jǐn)?shù)計(jì)算答案
- 圖形的欣賞與設(shè)計(jì)
- 八年級(jí)下期Uuit10SectionA課件
- 部編七年級(jí)語(yǔ)文下冊(cè)4孫權(quán)勸學(xué)課件
- 部編一年級(jí)語(yǔ)文下冊(cè)端午粽課件
- 超市防損的技能課件
- 表彰班會(huì)教學(xué)課件教學(xué)課件
- 第17講中考數(shù)學(xué)專題復(fù)習(xí) 函數(shù)的綜合應(yīng)用中考數(shù)學(xué)專題復(fù)習(xí)課件課件各版通用