關系模型和關系運算講述_第1頁
關系模型和關系運算講述_第2頁
關系模型和關系運算講述_第3頁
關系模型和關系運算講述_第4頁
關系模型和關系運算講述_第5頁
已閱讀5頁,還剩96頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

《數據庫技術》簡介一.

內容數據庫技術的基本理論和方法數據庫領域研究的的新理論、新技術。二.

要求掌握相關理論、原理和技術有課后書面作業期末閉卷考試成績:平時成績(20)+考試成績(80)

三.

教材與參考書1.教材:

數據庫理論與新技術北京理工大學出版社

2.參考資料:1.王珊

薩師煊數據庫系統概論高等教育出版社2.閃四清,數據庫系統原理與應用教程,清華大學出版社,北京,2008.43.李昭原,數據庫技術新進展

清華大學出版社2007.104.SYBASE、ORACLE、IBMDB2、INFORMIX、MSSQLSERVER數據庫系統有關資料。3.教材和參考書的使用

本課程以教材為主,課件內容主要來自教材和參考書,課程內容自成體系。對以前一點沒有學過數據庫基本知識的同學,可以從參考書1或其它相關參考書中查到一些最基本的知識。四.本課程主要內容第一章關系和關系模型

數據模型,關系和關系模式,鍵,關系的更新.第二章關系運算布爾運算,選擇,投影,連接,除,常關系,屬性命名,關系代數.第三章數據依賴函數依賴、多值依賴和連接依賴,數據依賴的公理系統,依賴集的等價和覆蓋及算法。第四章關系數據庫范式范式的概念,1NF~5NF,模式分解及其算法,生成范式的不同算法。第五章數據庫系統設計數據庫系統設計與數據庫設計,數據庫系統設計的任務與內容,數據庫系統設計方法與步驟。第六章數據庫管理系統數據庫管理系統的系統結構、主要功能、實現技術、語言處理,當前流行的主流數據庫管理系統簡介。本課程主要內容第七章分布式數據庫系統分布式數據庫系統的特點,分布式數據庫系統的體系結構,分布式查詢處理,分布式事務管理,分布式目錄,數據庫的安全保護,數據庫的完整性保護。第八章面向對象數據庫新應用的需求與傳統數據庫的局限性,面向對象數據模型,面向對象數據庫系統的查詢、并發控制,面向對象數據庫管理系統,對象-關系數據庫管理系統。第九章數據庫技術新進展數據庫技術新進展,包括:數據倉庫、數據挖掘、并行數據庫、Web數據庫、多媒體數據庫、工程數據庫、主動數據庫等。第十章數據庫技術論文選讀選擇10-15篇與教學內容相關的學術論文進行講解,讓學生了解本學科的基本研究方法和研究方向。五.數據庫領域研究的三個主要方面1.數據庫管理系統軟件(DBMS)

研究其設計方法和實現技術,數據模型,對持久性數據的有效存儲和存取方法,數據結構定義和數據操縱語言,用戶接口等。數據庫管理系統軟件是位于用戶和操作系統之間的數據管理軟件。如ORACLE、SQLServer、DB2、ACCESS等2.

數據庫應用系統的設計方法和工具

早期有設計指南和規范標準,設計階段的計算機輔助設計工具,計算機輔助設計全過程。要求設計工具能夠支持不同應用領域數據庫設計,如支持復雜對象設計等。

3.有關數據模型及設計理論的研究(7方面)(1)數據依賴理論函數依賴、多值依賴、連接依賴(2)規范化理論范式、算法、模式分解(3)查詢優化理論包括邏輯層和物理層的優化4.泛關系理論泛關系模型、泛關系表示、泛關系查詢5.符號表追蹤理論6.超圖理論利用超圖研究數據庫模式的特性7.空值理論(不確定信息)空值表示,加了空值后的運算、推理,空值的分類,分解方法、查詢優化等。分布式數據庫面向對象數據庫對象—關系數據庫并行數據庫多媒體數據庫工程數據庫智能數據庫模糊數據庫嵌入式數據庫主動數據庫空間數據庫時態數據庫Web數據庫數據倉庫和數據挖掘

六.數據庫領域的新技術人工管理階段(上世紀50年代初期)數據不保存應用程序管理數據數據不共享數據不具有獨立性應用程序1應用程序2應用程序n數據集1數據集2數據集n

七.數據管理技術的產生和發展

文件系統階段(上世紀50年代后期)

數據物理結構和邏輯結構的分離數據可以長期保存由文件系統管理數據數據文件是面向應用的數據共享性差,冗余度大數據獨立性差數據文件1應用程序1應用程序n文件管理系統數據文件n數據庫系統階段(上世紀60年代后期)數據結構化數據的共享性高,冗余度低,易擴充數據獨立性高數據由DBMS統一管理和控制程序1程序2程序n數據庫管理系統數據庫數據庫(DataBase,DB)

長期存放在計算機內的、有組織的、可共享的數據集合。數據庫管理系統(DataBaseManagementSystemDBMS)

數據庫管理系統是位于用戶和操作系統之間的數據管理軟件。如ORACLE、SQLServer、DB2、ACCESS等。

數據庫管理系統的功能是:科學地組織和存儲數據、高效地獲取和維護數據。八.數據庫、數據庫管理系統、數據庫系統數據庫系統(DBS)由:數據庫、數據庫管理系統、應用系統、數據庫管理員(DBA)、數據庫用戶構成的系統用戶1用戶2用戶3應用系統操作系統數據庫用戶開發工具數據庫管理系統DBA后頁

任課教師:蘇桂平

手機/p>

郵箱:sugp@答疑地點:青年公寓6號樓2層214-3答疑時間:周三上午3-4節第一章

關系和關系模型主要內容:數據模型關系和關系模式鍵關系的更新數據模型的組成要素:

數據結構、數據操作、數據的完整性基本的數據模型分類:

層次、網狀、關系數據模型、面向對象數據模型1.1數據模型

1.1.1數據模型的組成要素

(l)數據結構:用于描述數據的靜態結構,包括應用所涉及的對象類和對象類所具有的特性以及它們之間的聯系。(2)數據操作:是施加在對象上的一組操作,是對系統動態特性的描述。

(3)數據的完整性:是對數據靜態和動態特征性的限制,是一組完整性規則的集合。完整性規則是用以限定符合數據模型的數據庫狀態以及狀態的變化,以保證數據的正確、有效、相容。1.層次模型有且僅有一個結點無雙親,稱為根結點;其它結點有且僅有一個雙親。

層次模型的數據結構是一棵樹。1.1.2基本數據模型分類

大學組織機構的層次模型

2.網狀模型

允許一個結點可以有多個雙親;多個結點無雙親結點。班級課程學生基本結構是二維表,一張表稱為一個關系。與層次和網狀模型比較,關系模型有下列優點:數據結構單一;建立在嚴格的數學概念基礎上;將數據定義和數據操縱統一在一種語言中,使用方便,易學易用。

由于關系模型具有許多優點,因而在80年代之后的商品化數據庫系統幾乎都是關系型的。所以關系數據庫是本課程的主要研究內容之一。

3.關系數據模型9020042

陸川

2004029020041

劉敏

2004019020031

李麗

200302

9020031

王鳴

200301

班級

姓名

學號

(a)學生關系

9020042

計算機

曹巖

9020041

人工智能

計算機

馬小路

9020032英語

9020031

計算數學

吳云峰

班級

課程

系別

教師姓名

(b)教師開課關系

可以表示復雜對象;模塊化的結構,便于管理;具有定義抽象數據類型的能力。面向對象的數據模型是新一代數據庫系統的基礎,是數據庫技術發展的方向。

4.面向對象數據模型1.2關系和關系模式1.2.1關系

在關系模型中唯一的數據結構是關系,一個關系對應一張二維表。域

:具有相同數據類型的值的集合。定義1(笛卡爾積):D1,D2,...,Dn的笛卡爾積為:

D1D2...Dn={(d1,d2,...,dn)diDi,i=1,2,...,n}。其中每一個元素(d1,d2,...,dn)叫做一個n元組(n-tuple),元素中第i個值di叫做第i個分量。例:設D1={1,2,3},D2={a,b}D1D2={(1,a),(1,b),(2,a),(2,b),(3,a),(3,b)}實際上,如D1—學生集(50個),如D2—班級集(2個),

D1D2有多少元素?意義?定義2(關系):集合D1,D2,...,Dn笛卡爾積的任一個子集稱該集合上的一個關系(Relation)。

其中,集合D1,D2,...,Dn是關系中元組的取值范圍,稱關系的域(domain),這些域是有限的非空集合,n叫做關系的度(degree)。關系的基本概念關系(Relation)二維表,關系用關系名標識,如關系r。元組(Tuple)表中的行,一般用變量t表示。屬性(Attribute)表中的一列,如列Ai,dom[Ai]表示屬性Ai的域

鍵(Key,碼)可以唯一地確定一個元組的屬性組。關系舉例:火車時刻表dom(NUMBER)={565,523,532,K95,K96}dom(FROM)=dom(TO)={BeiJing,XuZhou,…,ShenZhen}dom(DEPARTS)=dom(ARRIVES)=一組時間。表1火車時刻表7:3717:13WuChangShenZhenK967:1816:55ShenZhenWuChangK959:4021:45BeiJingLuoYang5326:0621:30LuoYangXuZhou5237:5420:40BeiJing565ARRIVESDEPARTS

FROMNUMBER

TOXuZhou關系的性質(關系數據庫中對關系的限定)

1.每一列中的值是同類型的數據,來自同一個域。2.不同的列可以有相同的域,每一列稱為屬性,用屬性名標識。3.列的順序是無關緊要的。4.任意二個元組不能完全相同。(相同元組稱重復組)5.行的順序是無關緊要的。6.關系中的每個分量都是原子值,是不可分的數據項。

1.2.2關系模式

關系模式一般表示為:關系名(屬性1、……屬性n)

如:R(A1,A2,…,An)。用U表示關系R的屬性集合U=A1∪A2∪…∪An,

模式R上的一個關系r是從U到D的映象。元組t∈r,t的分量用t[Ai]表示.t[Ai]∈Di例:在學生關系模式S(SNO,SNAME,AGE,SEX,CNO)中,當CNO=1,就可以一班學生的列表,即一個具體的關系;當CNO=2,就可以二班學生的列表,即另一個具體的關系。

定義(關系數據庫模式):

設屬性集U和U的屬性所關聯的域為D,U上的關系數據庫模式R是R1,R2,…,Rp

的集合,即:R={R1,R2,…,Rp}

,且U

=R1∪R2∪…∪Rp。比如:R1為學生關系:S(Sno,Sname,Sbirth,Dept,Class,Rno)R2為班級關系:C(Class,Pname,Dept,Cnum,Cyear)R3為系關系:D(Dept,Dno,Office,Dnum)R4為學生會關系:M(Mname,Myear,Maddr,Mnum)關系數據庫:一個關系數據庫模式R對應的所有關系集合

{r1,r2,…,rp}稱為關系數據庫模式R上的一個關系數據庫d.

關系模式和關系的區別和聯系:關系模式:對一類實體特征的結構性描述,即對關系的結構性描述,該描述一般包括關系名、屬性名、屬性域的類型和長度,屬性之間固有的依賴聯系等。關系模式和關系的區別和聯系:關系模式描述的是關系的靜態結構信息,是對一個關系的“型”的描述,是相對固定的。關系是在關系模式約束之下的若干實體的集合,實體的數量是隨時間變化的,但這種變化必定在關系模式的約束范圍內。

一般用大寫字母表述關系的結構,比如R,用小寫字母一個具體的關系值,如r.

1.3

鍵(Key)和關系的完整性

1.鍵設關系模式R(U),KU,r是R上的任一關系,若對r中的任意二個不同的元組t1、t2滿足:(1)t1[K]t2[K];

(2)若KK而t1[K]t2[K]不成立。稱K是R的鍵。若僅條件(1)成立,K是R的超鍵。有鍵的定義得出:鍵是能唯一標示元組的最小屬性集。在上面火車時刻表的例子中,NUMBER是一個鍵。

2.主鍵、隱含鍵、候選鍵、超鍵主鍵:有的關系具有多于一個鍵,這種情況下指派其中一個鍵為主鍵,簡稱為關系的鍵。用帶下劃線的屬性表示。例如:TRAIN(NUMBER,FROM,TO,DEPARTS,ARRIVES)TRAIN(NUMBER,FROM,TO,DEPARTS,ARRIVES)隱含鍵:未被制定的鍵稱隱含鍵,也稱替補鍵。候選鍵:主鍵和隱含鍵統稱為候選鍵。超鍵:在上面鍵的定義中,若條件(2)不成立,稱K為R的超鍵。例如:NUMBER、FROM是一個超鍵。3.關系的完整性

(1)關系模型的三要素:

數據結構

關系模型的數據結構為單一的關系,它表示了實體和實體間的聯系。關系操作

關系操作關系代數:布爾運算、專門關系運算;關系演算:關系元組演算、域演算。完整性約束

實體完整性、參照完整性、用戶定義的完整性。

實體完整性

關系中鍵屬性的值不能取空值。

例如:學生關系S(SNO,SNAME,AGE,SEX,CNO)

參照完整性

是關系間引用所遵循的規則,與外鍵有關。

用戶定義的完整性

數據間應滿足的語義約束關系,由用戶定義,由系統檢查。(2)完整性約束

下下頁

外鍵:

設F是關系R的一個或一組屬性,但不是R的鍵。若F是另一個關系S的鍵,則稱F是關系R的外鍵。

R為參照關系,S為被參照關系。

例如:參照關系學生關系S(SNO,SNAME,AGE,SEX,CNO)班級關系C(CNO,CMN)---被參照關系

參照完整性規則關系R中外鍵的值或者為空值,或者為被參照關系中主鍵的值。建立表結構和完整性約束

補充:SQL語言簡介

SQL是英文StructuredQueryLanguage的縮寫,意思為結構化查詢語言。SQL語言將數據定義語言DDL、數據操縱語言DML、數據控制語言DCL的功能集于一體,可以獨立完成數據庫生命周期中的全部活動.

SQL被作為關系型數據庫管理系統的標準語言。目前,絕大多數流行的關系型數據庫管理系統,如Oracle,Sybase,MicrosoftSQLServer,Access等都采用了SQL語言標準。基本的SQL語句包括Select、Insert、Update、Delete、Create、Drop,它們可以被用來完成幾乎所有的數據庫操作。很多數據庫根據不同的需要對SQL語句進行了再開發和擴展。

SQL的基本語句

1.創建新表

create

tabletabname(col1type1[notnull][primarykey],col2type2[notnull],..)

例:CREATETABLEC

(CNONUMBER(6),

CMNCHAR(10))2.選擇select*fromtable1where范圍例:SELECTSNO,SNAMEFROMSWHERECNO=2002013.插入insertintotable1(field1,field2)values(value1,value2)例:INSERTINTOSVALUES(909901,‘李利’,21,‘男’,200205);4.刪除deletefromtable1where范圍例:DELETEFROMSWHERESNO=20100162;5.更新(修改)updatetable1setfield1=value1where范圍例:UPDATESSETSage=23WHERESno=‘20100162’

完成核心功能SQL語言只用9個動詞,并且它的表達接近英語句子,所以比較簡單、易學。

SQL語言既是自含式語言,又是嵌入式語言。作為自含式語言,它能夠獨立地用于聯機交互的使用方式,用戶可以在終端鍵盤上直接鍵入SQL命令對數據庫進行操作;作為嵌入式語言,

SQL語句能夠嵌入到高級語言,比如:C、PL/1、FORTRAN。

CREATETABLES

(SNONUMBER(4),

SNAMECHAR(10)NOTNULL,

AGENUMBER(3), SEXCHAR(1), CNONUMBER(6),

CONSTRAINTSK1PRIMARYKEY(SNO),

CONSTRAINTSK2FOREIGNKEY(CNO)REFERENCESC(CNO)),

CONSTRAINTSK3CHECK(AGEIN(16,45)));CREATETABLEC

(CNONUMBER(6),

CMNCHAR(10),

CONSTRAINTCKPRIMARYKEY(CNO));1.4關系的更新—插入、刪除、修改

1.插入

對關系r(A1,A2,…,An),插入操作形式為:

ADD(r;A1=d1,A2=d2,…An=dn)ADD(r;d1,d2,…,dn)

例:ADD(S;SNO=909901,SNAME=李利,AGE=21,SEX=男,CLASSNO=200205)插入操作的有效檢查: (1).描述的元組是否符合所指定的關系模式; (2).元組的某些值是否屬于對應的域; (3).元組的鍵是否已在關系中存在。

例:用SQL語言實現在學生關系S中插入一個元組。

INSERTINTOSVALUES(909901,‘李利’,21,‘男’,200205);

2.刪除

對關系r(A1,A2,…,An),刪除操作形式為:

DEL(r;A1=d1,A2=d2,…An=dn)DEL(r;d1,d2,…dn

);

若K=B1B2…Bm,DEL(r;B1=k1,B2=k2,…Bm=km)例:DEL(S;SNO=909901,SNAME=李利,AGE=21,SEX=男,CLASSNO=200205)刪除操作的檢查:如果被刪除元組在關系中不存在,這個關系將保持不變,但需給出一個出錯提示。**刪去最后一個元組不受限制,即允許是空關系。

實際上,為了識別被刪除的元組并不需要所有元組的信息,只需要制定鍵的值就足夠了。比如:刪除學號為909901的學生元組

DELETEFROMSWHERESNO=909901;

3.修改

修改元組的部分值。對關系r(A1,A2,…,An),若屬性集{C1,C2,…,Cp}{A1,A2,…An},則修改操作形式為:

CH(r;A1=d1,A2=d2,…An=dn;C1=e1,C2=e2,…,Cp=ep)

如果K={B1,B2,…Bm}為鍵,則可簡化為:

CH(r;B1=k1,B2=k2,…Bm=km;C1=e1,C2=e2;…Cp=ep)例:CH(S;SNO=909901;CLASSNO=200203)修改操作可用刪除操作后跟一個插入操作實現。對插入和刪除操作的限制可運用到修改操作中。例:施加一系列操作于火車時刻表1.ADD(train;33,TianJin,ShangHai,17:20,10:36);2.ADD(train;Y15,BeiJing,TianJin,10:05,12:43);3.DEL(train;523);4.CH(train;NUMBER=532;DEPARTS=22:45,ARRIVES=10:42)。

火車時刻表7:3717:13WuChangShenZhenK967:1816:55ShenZhenWuChangK959:4021:45BeiJingLuoYang5326:0621:30LuoYangXuZhou5237:5420:40BeiJing565ARRIVESDEPARTS

FROMNUMBER

TOXuZhou練習2.建立一個關于系、學生、班級、學會等諸信息的關系數據庫。學生:學號、姓名、出生年月、系名、班號、宿舍區。班級:班號、專業名、系名、人數、入校年份。系:系名、系號、系辦公地點、人數。學會:學會名、成立年份、辦公地點、人數。語義如下:一個系有若干專業,每個專業每年只招一個班,每個班有若干學生。一個系的學生住在同一宿舍區。每個學生可參加若干學會,每個學會有若干學生。學生參加某學會有一個入會年份。請給出關系模式,指出各關系模式的候選鍵和外鍵。練習解答解:(1)關系模式如下:學生:S(Sno,Sname,Sbirth,Dept,Class,Rno)

班級:C(Class,Pname,Dept,Cnum,Cyear)

系:D(Dept,Dno,Office,Dnum)

學會:M(Mname,Myear,Maddr,Mnum)(2)各關系模式的候選鍵、外部鍵如下:

A、學生S候選鍵:Sno;外部鍵:Dept、Class;

B、班級C候選鍵:Class;外部鍵:Dept;

C、系D候選鍵:Dept或Dno;無外部鍵;

D、學會M候選鍵:Mname;無外部鍵。課后練習:如何用SQL來創建該數據庫?(建議沒有學過數據庫的同學在自學SQL后練習一下)第二章

關系運算本章的主要內容:布爾運算選擇投影連接除常關系屬性重命名關系代數2.1布爾運算

關系可以看做元組的集合,那么集合的并、交、差等布爾運算算都可以用到關系中。關系的布爾運算包括:并、交、差、廣義笛卡爾積、補、有效補。同類關系:若R和S是同類關系,則滿足如下條件:(1)R和S具有相同的度;(2)R和S的對應屬性定義在同一個域上。同類關系也稱相容運算,布爾運算大多是在同類關系中進行。并(Union)關系R和S的并其結果由屬于R或屬于S的所有元組組成,其結果為一個新關系。記為:

Q=R∪S={t|t∈R或t∈S}

交(Intersection)

關系R和S的交其結果由既屬于R又屬于S的所有元組組成。記為:

Q=R∩S={t|t∈R且t∈S}

差(Difference)

關系R和S的差由屬于R但不屬于S的所有元組組成。記為:

Q=R-S={t|t∈R但tS}例子:R∪S

ABCa1b1c1a1b2c2a2b2c1ABCa1b1c1a1b2c2a1b3c2a2b2c1ABCa1b2c2a1b3c2a2b2c1RSR∪S

c1b2a2c2b2a1c1b1a1CBAc1b1a1CBAc1b2a2c2b3a1c2b2a1CBARSR-S

例子:R-S

c1b2a2c2b2a1c1b1a1CBAc1b2a2c2b2a1CBAc1b2a2c2b3a1c2b2a1CBARSR∩S

例子:R∩

S

例:并運算的SQL實現查詢200201班的學生和年齡超過23歲的學生姓名。SELECTSNO,SNAMEFROMSWHERECNO=200201UNIONSELECTSNO,SNAME FROMSWHEREAGE>23;*INTERSECT(交)、MINUS(差)

廣義笛卡爾積關系R和S的笛卡爾積為R中所有元組和S中所有元組的串接。結果關系的屬性個數:k1+k2

其中k1和k2分別為R和S的屬性數結果關系的元組數:

m×n

其中m、n分別為R和S的元組數。

R和S的笛卡爾積記為:

Q=R×S={t|t

=trts,tr∈R

且ts∈S}廣義笛卡爾積的例子:ABCa1b1c1a1b2c2a2b2c1ABCa1b2c2a1b3c2a2b2c1RSR×S

c1b1a1c1b1a1c1b2a2c1b2a2c2b2a1c1b2a2c1b1a1R.CR.BR.Ac2b2a1c2b2a1c2b2a1c2b3a1c1b2a2c2b2a1c2b3a1c1b2a2c2b2a1S.CS.BS.Ac1b2a2c2b3a1有學生關系S(Sno,Sname,Sage)和選課關系SC(Sno,Cno,Grade)SELECTS.*,SC.*FROMS,SC例:廣義笛卡爾積的SQL實現

補(Complement)

關系模式R(A1,A2,…,An),R上的關系r。

補運算:設dom(R)表示模式R上的所有元組的集合,則關系r的補為:

r=dom(R)-r

例:設R(A,B),dom(A)={a1,a2,,a3},dom(B)={b1,b2}R上的關系r和r的補r如下所示。

r=(AB)

r=(AB)a1b1a2b2a1b2a3b1

a2b1a3b2例:設R(A,B,C),dom(A)={a1,a2},dom(B)=整數的集合,

dom(C)={c1,c2}。求r的補。

r=(ABC)

a11

c1a12

c2a21

c1a22

c1a23

c2

r=adom(R,r)-r

adom(R,r)為模式R上的所有屬性對應關系r的有效值域組成的所有元組的集合。由于adom(R,r)是有限的,則r的有效補r總是一個關系。~~

有效補

關系模式R(A1,A2,…,An),屬性Ai的有效值域:

adom(Ai,r)={d|d∈Di,存在t∈r且t[Ai]=d}定義r的有效補為:例:設R(A,B,C),dom(A)={a1,a2},dom(B)=整數的集合,

dom(C)={c1,c2}。R上的關系r和r的有效補如下。~~

r=(ABC)r=(ABC)a11

c1a11

c2

a12

c2a12

c1

a21

c1a13

c1

a22

c1

a13

c2

a23

c2

a21

c2

a22

c2

a23

c1

思考:在關系模式R(A1,A2,…,An)中,若每個屬性Ai的值域都有限,任一關系r的補和有效補是否一致?

例:設R(A,B),dom(A)={a1,a2,,a3},dom(B)={b1,b2}。

R上的關系r和r的補r及r的有效補r

如下所示。

r=(AB)r

=(AB)

r=(AB)a1b1a2b2a2b2a1b2a3b1

a2b1a3b2

~~有效補的應用:當關系元組數比其有效補元組數多得多時,有效補可作為數據壓縮手段。例如:學生選課,一個班有50個學生選數據庫課,3個學生不選,則存儲選修了數據庫課的學生可用存儲其有效補實現。練習

1.設R(A,B,C),dom(A)={a1,a2},

dom(B)={b1,b2,b3},

dom(C)={c1,c2}

r(ABC)a2b3c1

a2b1c1

a2b2c1

a1b1c1求:r的補和有效補從關系中選擇在指定屬性上有確定值的關系的子集。表示為:

A=a(r)={tt∈r

且t[A]=a}。

選擇運算是選擇關系中行的子集,即選擇滿足條件元組。例:在下面關系train中求:

FROM=’beijing’(train);DEPARTS=’16:55’(train)

2.2選擇(Select)

(2)可分配

σA=a(rθs)=σA=a(r)θσA=a(s)其中θ=∩、∪或-,且r和s是同類關系。

廣義選擇:

A

a(r)={t|tr且t[A]a}

其中為、、、、、。選擇運算的特性設r(R)是一個關系,A和B為R的屬性。

(1)可交換

σA=a(σB=b(r))=σB=b(σA=a(r))。例:學生關系中,A=2011年入學, B=信息學院

2.3投影(Project)投影是選取關系中列的子集。設模式R上關系r,X是R上屬性的子集,r到X上的投影r表示為:

r(X)=x(r)={t[X]|t∈r}。

投影的結果不是原來的關系,是X中幾列屬性。

**如果X中不包含R的鍵,則選取的列中會出現重復元組,r(X)中應不包含重復元組。例:Sno,Sname(S);Cno(S)投影的特性:

投影的串接給定關系r(R),且YXR,則:Y(X(r))=Y(r)對一串投影而言,若X1X2…

Xm

R,則:X1(X2(…(Xm(r))…))=X1(r)

投影和選擇的可交換性

設r是R上的一個關系,A∈X,XR,則下式成立:

X(A=a(r))=A=a(X(r))SELECTSNO,SNAMEFROMSWHERECNO=200401投影選擇檢索200401班學生的姓名。如果R∩S=Φ,則r

s為關系r和s的笛卡爾積:r×s。2.4.1

自然連接(NaturalJoin)

自然連接是在兩個關系共同屬性上的等值連接。設有關系r(R)和s(S),屬性A是關系模式R和S的公共屬性,

r與s的自然連接可用下式表示:

rs={t|t=tr

ts[A]tr∈r,ts∈s

&tr

=t[R]

&ts=t[S]&tr[A]=ts[A]}

它表示r中元組和S中元組的串接,而且它們的公共屬性值只出現一次。2.4連接(Join)ABCa1b15a1b26a2b38a2b412BEb13b27b310b32b52RS例子:求R和S自然連接ABCEa1b153a1b267a2b3810a2b382自然連接R

S

連接運算:有學生關系S和課程關系C.SELECTSNO,SNAME,S.CNO,CMNFROMS,CWHERES.CNO=C.CNO

連接運算可模擬選擇運算設關系r(R),A∈R,a∈dom(A)。設s(A)只含一個分量A

A=a(r)可表示為:

rs

A=a1(r)∪A=a2(r)∪…∪A=ak(r)表示為:rs

連接運算的可交換和可結合性

qr=rq (qr)s=q(rs)

A

.

a

連接對并、交、差的可分配性(r∪r)s=(rs)∪(rs)

連接的上述性質在查詢優化中是很有用的,在第7章分布式數據庫的查詢優化中要用到。連接的特性:

A

.

a1a2…

ak

多元連接

可連接:

設關系s1(S1),s2(S2),…,sm(Sm),t1,t2,…,tm為元組序列,且ti∈Si,1≤i≤m。又R=S1∪S2∪…∪Sm。若在r(R)上存在一個元組t,使得ti=t[Si],1≤i≤m,則稱元組序列t1,t2,…,tm在R上是可連接的。完全連接:設關系序列s1(S1),s2(S2),…,sm(Sm),如果對關系Si(1≤i≤m)中的每個元組都是可連接序列中的成員,則稱s1s2…sm

為完全連接。完全連接的例子:

s1(AB)

s2(BC)

s3(AC)

a1b1

b1c2a1c2a1b2

b2c1a2c2a2b1

s1

s2

s3=(ABC)a1b1c2a2b1c2

a1c1加入a1

b2c12.4.2θ_連接(Theta_Join)θ_連接:設r(R)和s(S)為兩個關系,且A∈R,B∈S,dom(A)=dom(B),r和s在A和B上的θ_連接寫作:

r[AθB]s設Q=R∪S,則θ_連接可用下式表示:

q[Q]={t|tq,trr&tss

&t[R]=tr&t[S]=ts&t[A]θt[B]}其中θ為比較符:、、、、、示例ABCa1b15a1b26a2b38a2b412BEb13b27b310b32b52RS例子:RSAR.BCS.BEa1b15b27a1b15b310a1b26b27a1b26b310a2b38b310

[C<E]AR.BCS.BEa1b15b13a1b26b27a2b38b310a2b38b32等值連接R

S[R.B=S.B]ABCEa1b153a1b267a2b3810a2b382自然連接R

S學生關系S(SNO,SNAME,AGE,SEX,DEPTNO)專業系DEPT(DEPTNO,DNAME)

選擇運算:SNAME=‘LiMing’(S);投影運算:SNO,SNAME,DEPTNO(S);

連接運算:

SDEPT

示例:

思考:在第一章的建立數據庫例子中,如何通過學號查該學生的入學年份和所學專業?如何通過系號查該系同學所住的宿舍區?如何通過學號查該學生所在系的的辦公地點?

建立一個關于系、學生、班級、學會等諸信息的關系數據庫。學生:學號、姓名、出生年月、系名、班號、宿舍區。班級:班號、專業名、系名、人數、入校年份。系:系名、系號、系辦公地點、人數。學會:學會名、成立年份、辦公地點、人數。學生:S(Sno,Sname,Sbirth,Dept,Class,Rno)

班級:C(Class,Pname,Dept,Cnum,Cyear)

系:D(Dept,Dno,Office,Dnum)

學會:M(Mname,Myear,Maddr,Mnum)2.5除法(Division)

即:對每一元組ts∈s都存在一元組tr∈r,使得tr[R']=t且tr[s]=ts設r÷s

得到的新關系其屬性集為X,則除法可用下式表示:R(X,Y)÷

S(Y)=

X(R)–X(

X(R)×S–R)即

r÷s是滿足下列條件的最大關系:

r÷s的每個元組t與s中每個元組u組成的元組<t,u>必在關系r中。

定義除:設關系r(R)和s(S),且SR。令R'=R–S,除運算r÷s

的結果為一個新關系r',記作:

r÷s=r'(R')={t|tr'且tr∈r,ts∈s,t=tr[R']&tr[S]=ts,tsr}909803

除法運算:

SC÷CDS

909802

DB

909802

OS

909801

DB909801

課程號

學號

DB

SC課程號

DBC課程號

OSDSCC課程號

DBOS

關系代數運算的應用:查詢例:學生關系:S(SNO,SNAME,...)

課程關系:C(CNO,CNAME)

學生選課關系:SC(SNO,CNO,G)查詢:1.選修了數據庫課的學生姓名.

2.選修了全部課程的學生號和姓名SNAME(CNAME=‘數據庫’(C)SCS)SNO,CNO(SC)÷

CNO(C)

SNO,SNAME(S)設A1,A2,...,An為互不相同的屬性名且常量Ci

dom(Ai),1≤i≤n。常元組表示為:<C1:A1,C2:A2,...,Cn:An>

常關系是常元組的集合,模式A1A2...An上的一個常關系可表示為:{<C11:A1C21:A2C31:A3......Cn1:An>,

<C12:A1C22:A2C32:A3......Cn2:An>,

...... <C1k:A1C2k:A2C3k:A3......Cnk:An>}2.6常關系(ConstantRelation)

設關系r(R),AR,BR,但A和B有相同的域。又設R'=(R-A)∪B,則屬性A被重命名為B后的關系記作:

r'(R')=A→B(r)可以一次對多個屬性重命名:

A1,A2,...,AK→B1,B2,...,BK(r)2.7屬性重命名例1:

設關系R(A,C,D),S(B,C,D),A和B有相同的域,則下列運算可以進行:

R∪B→A(S)例2:設學生表S(SNO,SNAME,CLASS)SELECTS2.SNAMEFROMSS1,SS2whereS1.SNAME=‘李利’ANDS1.CLASS=S2.CLASS*SQL中的同義名

關系代數是一個7元組從U到D的映射

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論