版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第2章 創(chuàng)建數(shù)據(jù)庫和創(chuàng)建表數(shù)據(jù)庫原理與應(yīng)用(SQL Server)12.1 關(guān)系模型2.2 關(guān)系代數(shù)2.3 關(guān)系演算2.4 SQL簡介22.1 關(guān)系模型2.1.1關(guān)系數(shù)據(jù)結(jié)構(gòu)1. 關(guān)系1)域(Domain)定義2.1 域是一組具有相同數(shù)據(jù)類型的值的集合。例如,整數(shù)、正整數(shù)、實數(shù)、大于等于0且小于等于100的正整數(shù)、0,1,2,3,4等都可以是域。2.)笛卡爾積(Cartesian Product) 定義2.2 設(shè)定一組域D1, D2, , Dn,在這組域中可以是相同的域。定義D1, D2, , Dn,的笛卡爾積為 D1D2Dn=(d1, d2, , dn) | diDi, i=1, 2, ,
2、n 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)32.1.1 關(guān)系數(shù)據(jù)結(jié)構(gòu)其中每一個元素(d1, d2, , dn)叫做一個n元組(n-tuple)或簡稱元組(Tuple),元素中的每個值di(i=1, 2, n)叫做一個分量(Component)。 如果Di(i=1, 2, n)為有限集,其基數(shù)(Cardinal number)為mi(i=1, 2, n),則D1D2Dn的基數(shù)為笛卡爾積可以表示為一個二維表,表中每一行對應(yīng)一個元組,每一列的值來自一個域?!纠?.1】 笛卡爾積舉例 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)42.1.1 關(guān)系數(shù)據(jù)結(jié)構(gòu) 給出3個域: D1=學(xué)號集合stno=12100
3、1, 121002 D2=姓名集合stname=周浩然, 王麗萍 D3=性別集合 stsex=男, 女 則D1, D2, D3,的笛卡爾積為: D1D2D3=(121001,周浩然, 男), (121001,周浩然, 女), (121001,王麗萍, 男), (121001,王麗萍, 女), (121002,周浩然, 男), (121002,周浩然, 女), (121002,王麗萍, 男), (121002,王麗萍, 女)其中(121001,周浩然, 男), (121001,周浩然, 女), (121002,王麗萍, 男)等都是元組,121001, 121002,周浩然,王麗萍 數(shù)據(jù)庫原理與應(yīng)
4、用(SQL Server)52.1.1 關(guān)系數(shù)據(jù)結(jié)構(gòu) 男, 女等都是分量,這個笛卡爾積的基數(shù)是222=8,即共有8個元組,可列成一張二維表,如表2.1所示。表2.1 D1, D2, D3的笛卡爾積 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)62.1.1 關(guān)系數(shù)據(jù)結(jié)構(gòu)3.)關(guān)系(Relation)定義2.3 笛卡爾積D1D2Dn的子集稱為D1,D2,Dn上的關(guān)系,表示為R(D1,D2,Dn)這里的R表示關(guān)系的名稱,n是關(guān)系的目或度(Degree)。當(dāng)n=1時,稱該關(guān)系為單元關(guān)系或一元關(guān)系。當(dāng)n=2時,稱該關(guān)系為二元關(guān)系。當(dāng)n=m時,稱該關(guān)系為m元關(guān)系。關(guān)系中的每個元素是關(guān)系中的元組,通常用t表示。
5、在一般情況下,D1,D2,Dn的笛卡爾積是沒有實際意義的,只有它的某個子集才有實際意義,舉例如下。 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)72.1.1 關(guān)系數(shù)據(jù)結(jié)構(gòu)【例2.2】 關(guān)系舉例在例2.1的笛卡爾積中,許多元組是沒有意義的,因為一個學(xué)號只標識一個學(xué)生的姓名,一個學(xué)生只有一個性別,表2.1的一個子集才有意義,才可以表示學(xué)生關(guān)系,將學(xué)生關(guān)系取名為S,表示為S(stno, stname, stsex),列成二維表如表2.2所示。表2.2 S關(guān)系 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)82.1.1 關(guān)系數(shù)據(jù)結(jié)構(gòu)(1)關(guān)系的元組、屬性和候選碼關(guān)系是笛卡爾積的有限子集,所以關(guān)系也是一個二維表。
6、 元組(Tuple)表的每一行,對應(yīng)一個元組。 屬性(Attribute)表的每一列,對應(yīng)一個域,由于域可以相同,為了加以區(qū)分,必須對每一列起一個唯一的名字,稱為屬性。 候選碼(Candidate key)若關(guān)系中某一屬性組的值能唯一地標識一個元組,則稱該屬性組為候選碼。 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)92.1.1 關(guān)系數(shù)據(jù)結(jié)構(gòu)候選鍵碼中的諸屬性稱為為主屬性(Prime attribute),不包含在任何候選碼中的屬性稱為非主屬性(Non-prime attribute)或非碼屬性(Non-key attribute)。在最簡單的情況下,候選碼只包含一個屬性,在最極端的情況下,關(guān)系模
7、式的所有屬性組成這個關(guān)系模式的候選碼,稱為全碼(All-key)。 主碼(Primary key)在一個關(guān)系中有多個候選碼,從中選定一個作為主碼。(2)關(guān)系的類型關(guān)系有3種類型:基本關(guān)系(又稱基本表或基表)、查詢表和視圖表。 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)102.1.1 關(guān)系數(shù)據(jù)結(jié)構(gòu) 基本關(guān)系:實際存在的表,是實際存儲數(shù)據(jù)的邏輯表示 查詢表:查詢結(jié)果對應(yīng)的表 視圖表:由基本表或其它視圖標導(dǎo)出的表,是虛表,不對應(yīng)實際存儲的數(shù)據(jù)(3)關(guān)系的性質(zhì)關(guān)系具有以下的性質(zhì): 列的同質(zhì)性:每一列中的分量是同一類型的數(shù)據(jù),來自同一個域。 列名唯一性:每一列具有不同的屬性名,但不同列的值可以來自同一個域
8、。 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)112.1.1 關(guān)系數(shù)據(jù)結(jié)構(gòu) 元組相異性:關(guān)系中任意兩個元組的候選碼不能相同。 行序的無關(guān)性:行的次序可以互換。 列序的無關(guān)性:列的次序可以互換。 分量原子性:分量值是原子的,即每一個分量都必須是不可分的數(shù)據(jù)項。(4)規(guī)范化關(guān)系模型要求關(guān)系必須是規(guī)范化(normalization)的,規(guī)范化要求關(guān)系必須滿足一定的規(guī)范條件,而在規(guī)范條件中最基本的一條是每一個分量必須是不可分的數(shù)據(jù)項。規(guī)范化的關(guān)系簡稱為范式(Normal Form)。 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)122.1.1 關(guān)系數(shù)據(jù)結(jié)構(gòu)例如,表2.3所示的關(guān)系就是不規(guī)范的,存在”表中有表
9、”的現(xiàn)象。 表2.3 非規(guī)范化關(guān)系2. 關(guān)系模式在關(guān)系數(shù)據(jù)庫中,關(guān)系模式是型,關(guān)系是值。關(guān)系是元組的集合,關(guān)系模式是對關(guān)系的描述,所以關(guān)系模式必須指出這個元組集合的結(jié)構(gòu),即它由哪些屬性構(gòu)成,這些屬性來自哪些域。 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)132.1.1 關(guān)系數(shù)據(jù)結(jié)構(gòu)定義2.4 關(guān)系模式(Relation Schema)可以形式化地表示為R(U, D, DOM, F)其中:R是關(guān)系名,U是組成該關(guān)系的屬性名集合,D是屬性所來自的域,DOM是屬性向域的映象集合,F(xiàn)是屬性間的數(shù)據(jù)依賴關(guān)系集合。關(guān)系模式通??梢院営洖镽(U)或 R(A1, A2, , An)其中,R是關(guān)系名,A1, A2
10、, , An 為屬性名。關(guān)系是關(guān)系模式在某一時刻的狀態(tài)或內(nèi)容。關(guān)系模式是靜態(tài)的、穩(wěn)定的,而關(guān)系是動態(tài)的、隨時間不斷變化的,因為關(guān)系操作在不斷地更新著數(shù)據(jù)庫中的數(shù)據(jù)。 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)142.1.1 關(guān)系數(shù)據(jù)結(jié)構(gòu)在實際應(yīng)用中,我們常常把關(guān)系模式和關(guān)系統(tǒng)稱為關(guān)系。3. 關(guān)系數(shù)據(jù)庫在一個給定的應(yīng)用領(lǐng)域中,所有實體及實體之間聯(lián)系的關(guān)系的集合構(gòu)成一個關(guān)系數(shù)據(jù)庫。關(guān)系數(shù)據(jù)庫的型稱為關(guān)系數(shù)據(jù)庫模式,是對關(guān)系數(shù)據(jù)庫的描述,包括若干域的定義和在這些域上定義的若干關(guān)系模式。關(guān)系數(shù)據(jù)庫的值是這些關(guān)系模式在某一時刻對應(yīng)的關(guān)系的集合。 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)152.1.2 關(guān)系
11、操作1. 基本的關(guān)系操作關(guān)系操作包括查詢(Query)操作和插入(Insert)、刪除(Delete)、修改(Update)操作兩大部分。查詢操作是關(guān)系操作最重要的部分,可分為選擇(Select)、投影(Project)、連接(Join)、除(Devide)、并(Union)、差(Except)、交(Intersection)、笛卡爾積等。其中的5種基本操作是并、差、笛卡爾積,選擇、投影,其它操作可由基本操作來定義和導(dǎo)出。關(guān)系操作的特點是集合操作方式,即操作的對象與結(jié)果都是集合。這種操作方式亦稱為一次一集合(set-at-a-time)方式,相應(yīng)地,非關(guān)系模型的數(shù)據(jù)操作方式則為一次一記錄(re
12、cord-at-a-time)方式。 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)162.1.2 關(guān)系操作2. 關(guān)系操作語言關(guān)系操作語言是數(shù)據(jù)庫管理系統(tǒng)提供的用戶接口,是用戶用來操作數(shù)據(jù)庫的工具,關(guān)系操作語言靈活方便,表達能力強大,可分為關(guān)系代數(shù)語言、關(guān)系演算語言和結(jié)構(gòu)化查詢語言三類。(1)關(guān)系代數(shù)語言用對關(guān)系的運算來表達查詢要求的語言,如ISBL。(2)關(guān)系演算語言 用謂詞來表達查詢要求的語言,又分為元組關(guān)系演算語言和域關(guān)系演算語言,前者如ALPHA,后者QBE。 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)172.1.2 關(guān)系操作(3)結(jié)構(gòu)化查詢語言介于關(guān)系代數(shù)和關(guān)系運算之間,具有關(guān)系代數(shù)和關(guān)系演
13、算雙重特點,如SQL。以上三種語言,在表達能力上是完全等價的。關(guān)系操作語言是一章高度非過程化語言,存取路徑的選擇由數(shù)據(jù)庫管理系統(tǒng)的優(yōu)化機制自動完成。 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)182.1.3 關(guān)系的完整性1. 實體完整性(Entity Integrity)規(guī)則2.1實體完整性規(guī)則 若屬性(一個或一組屬性) A是基本關(guān)系R的主屬性,則A不能取空值??罩?null value)指”不知道”或”不存在”的值。例如,在學(xué)生關(guān)系S(stno, stname, stsex)中,學(xué)號stno是這個關(guān)系的主碼,則stno不能取空值。又如在選課關(guān)系選課(學(xué)號, 課程號, 分數(shù))中,”學(xué)號, 課程號
14、”為主碼,則”學(xué)號”和”課程號”兩個屬性都不能取空值。實體完整性規(guī)則說明如下:(1)實體完整性規(guī)則是針對基本關(guān)系而言。一個基本表通常對應(yīng)現(xiàn)實世界的一個實體集。 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)192.1.3 關(guān)系的完整性(2)現(xiàn)實世界中的實體是可區(qū)分的,即它們具有某種唯一性標識。(3)相應(yīng)地,關(guān)系模型中以主碼作為唯一性標識。(4)主碼中的屬性即主屬性不能取空值。2. 參照完整性(Referential Integrity)在現(xiàn)實世界中實體之間存在的聯(lián)系,在關(guān)系模型中都是用關(guān)系來描述,自然存在關(guān)系與關(guān)系間的引用,參照完整性一般指多個實體之間的聯(lián)系,一般用外碼實現(xiàn),舉例如下?!纠?.3】
15、學(xué)生實體與學(xué)院實體可用以下關(guān)系表示,其中的主碼用下劃線標識。 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)202.1.3 關(guān)系的完整性學(xué)生(學(xué)號, 姓名, 性別, 出生日期, 專業(yè), 總學(xué)分, 學(xué)院號)學(xué)院(學(xué)院號, 學(xué)院名, 院長) 這兩個關(guān)系存在屬性的引用,學(xué)生關(guān)系引用了學(xué)院關(guān)系的主碼”學(xué)院號”,學(xué)生關(guān)系”學(xué)院號”必須是確實存在的學(xué)院的學(xué)院號,即學(xué)院關(guān)系有該學(xué)院的記錄。 【例2.4】 學(xué)生、課程、學(xué)生與課程之間的聯(lián)系可用以下3個關(guān)系表示,其中的主碼用下劃線標識。 學(xué)生(學(xué)號, 姓名, 性別, 出生日期, 專業(yè), 總學(xué)分) 課程(課程號,課程名,學(xué)分) 選課(學(xué)號,課程號,分數(shù)) 數(shù)據(jù)庫原理與應(yīng)
16、用(SQL Server)212.1.3 關(guān)系的完整性這3個關(guān)系存在屬性的引用,選課關(guān)系引用了學(xué)生關(guān)系的主碼”學(xué)號”和課程關(guān)系的主碼”課程號”,選課關(guān)系”學(xué)號”和”課程號”的取值需要參照學(xué)生關(guān)系的”學(xué)號”取值和課程關(guān)系的”課程號”取值。【例2.5】 學(xué)生關(guān)系的內(nèi)部屬性之間存在引用關(guān)系,其中的主碼用下劃線標識。學(xué)生(學(xué)號, 姓名, 性別, 出生日期, 專業(yè), 總學(xué)分, 班長學(xué)號)在該關(guān)系中,”學(xué)號”屬性是主碼,”班長學(xué)號”屬性是所在班級班長的學(xué)號,它引用了本關(guān)系”學(xué)號”屬性,即”班長學(xué)號”必須是確實存在的學(xué)生學(xué)號。 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)222.1.3 關(guān)系的完整性定義2.5
17、設(shè)F是基本關(guān)系R的一個或一組屬性,但不是關(guān)系R的碼,Ks是基本關(guān)系S的主碼。如果F與Ks相對應(yīng),則稱F是R是的外碼(Foreign Key)。并稱基本關(guān)系R為參照關(guān)系(Referencing Relation),基本關(guān)系S為被參照關(guān)系(Referenced Relation)或目標關(guān)系(Target Relation)。關(guān)系R和S不一定是不同的關(guān)系。在例2.3中,學(xué)生關(guān)系的”學(xué)院號”與學(xué)院關(guān)系的主碼”學(xué)院號”相對應(yīng),所以,”學(xué)院號”屬性是學(xué)生關(guān)系的外碼,學(xué)生關(guān)系是參照關(guān)系,學(xué)院關(guān)系是被參照關(guān)系。在例2.4中,選課關(guān)系”學(xué)號”和學(xué)生關(guān)系的主碼”學(xué)號”相對應(yīng),選課關(guān)系”課程號”和課程關(guān)系的主碼”課
18、程號”相對應(yīng), 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)232.1.3 關(guān)系的完整性所以,”學(xué)號”屬性和”課程號”屬性是選課關(guān)系的外碼,選課關(guān)系是參照關(guān)系,學(xué)生關(guān)系和課程關(guān)系都是被參照關(guān)系。在例2.5中,”班長學(xué)號”屬性與本身的主碼”學(xué)號”屬性相對應(yīng),所以,”班長學(xué)號”屬性是學(xué)生關(guān)系的外碼,學(xué)生關(guān)系既是參照關(guān)系,也是被參照關(guān)系。外碼不一定要與相應(yīng)的主碼同名,在例2.5中,學(xué)生關(guān)系的主碼名是”學(xué)號”,外碼名是”班長學(xué)號”。但在實際應(yīng)用中,為了便于識別,當(dāng)外碼與相應(yīng)的主碼屬于不同的關(guān)系時,往往取相同的名字。參照完整性規(guī)則就是定義外碼與主碼之間的引用規(guī)則。 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)2
19、42.1.3 關(guān)系的完整性規(guī)則2.2 參照完整性規(guī)則 若屬性(或?qū)傩越M) F是基本關(guān)系R的外碼,它與基本關(guān)系S的主碼Ks相對應(yīng)(基本關(guān)系R和S不一定是不同的關(guān)系),則對于R中每個元組在F上的值必須為 或者取空值(F的每個屬性值均為空值); 或者等于S中某個元組的主碼值。在例2.3中,學(xué)生關(guān)系每個元組的”學(xué)院號”屬性只能取下面兩類值:(1)空值,表示尚未給該學(xué)生分配學(xué)院;(2)非空值,被參照關(guān)系”學(xué)院號”中一定存在一個元組,它的主碼值等于該參照關(guān)系”學(xué)院號”中的外碼值。 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)252.1.3 關(guān)系的完整性3. 用戶定義完整性(User-defined Integ
20、rity)用戶定義的完整性是針對某一具體關(guān)系數(shù)據(jù)庫的約束條件,使某一具體應(yīng)用涉及數(shù)據(jù)必須滿足語義要求。 用戶定義的完整性數(shù)據(jù)也稱為域完整性或語義完整性,通過這些規(guī)則限制數(shù)據(jù)庫只接受符合完整性約束條件的數(shù)據(jù)值,不接受違反約束條件的數(shù)據(jù),從而保證數(shù)據(jù)庫的中數(shù)據(jù)的有效性和可靠性。 按應(yīng)用語義,屬性數(shù)據(jù)有:(1)類型與長度限制。(2)取值范圍限制。 例如,學(xué)生關(guān)系中”性別”數(shù)據(jù)只能是男或女,選課關(guān)系中”成績”數(shù)據(jù)為1到100之間,等等。 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)262.2 關(guān)系代數(shù)關(guān)系代數(shù)是一種抽象的查詢語言,它用對關(guān)系的運算來表達查詢。關(guān)系代數(shù)是施加于關(guān)系上的一組集合代數(shù)運算,關(guān)系代
21、數(shù)的運算對象是關(guān)系,運算結(jié)果也是關(guān)系。關(guān)系代數(shù)中的操作可以分為兩類: (1)傳統(tǒng)的集合運算,如并、交、差、笛卡兒積。這類運算將關(guān)系看成元組的集合,運算時從行的角度進行。(2)專門的關(guān)系運算,如選擇、投影、連接、除。這些運算不僅涉及行而且也涉及到列。關(guān)系代數(shù)使用的運算符:(1)傳統(tǒng)的集合操作:U(并)、(差)、 (交)、 (笛卡兒積)。 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)272.2 關(guān)系代數(shù)(2)專門的關(guān)系操作: (選擇)、 (投影)、 (連接)、(除)。(3)比較運算符:(大于)、(大于等于)、(小于)、(小于等于)、(等于)、(不等于)。(4)邏輯運算符: (與)、 (或)、 (非)。
22、 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)282.2.1 傳統(tǒng)的集合運算傳統(tǒng)的集合運算有并、差、交和笛卡爾積運算,它們都是二目運算。設(shè)關(guān)系R和關(guān)系S具有相同的n目(即兩個關(guān)系都有n個屬性),且相應(yīng)的屬性取自同一個域,t是元組變量,tR表示t是R的一個元組。以下定義并、差、交和笛卡爾積運算。1. 并(Union)關(guān)系R和關(guān)系S的并記為 ,即其結(jié)果仍為n目關(guān)系,由屬于R或?qū)儆赟的元組組成。 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)292.2.1 傳統(tǒng)的集合運算2. 差(Except)關(guān)系R和關(guān)系S的差記為 ,即其結(jié)果仍為n目關(guān)系,由屬于R且不屬于S的所有元組組成。 3. 交(Intersectio
23、n)關(guān)系R和關(guān)系S的交為 ,即 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)關(guān)系R和關(guān)系S的差記為 302.2.1 傳統(tǒng)的集合運算結(jié)果仍為n目關(guān)系,由既屬于R又屬于S的元組組成。關(guān)系的交可用差來表示,即4. 笛卡爾積(Cartesian Product)這里的笛卡爾積是廣義笛卡爾積,因為笛卡爾積的元素是元組。設(shè)n目和m目的關(guān)系R和S,它們的笛卡兒積是一個(n+m)目的元組集合。元組的前n列是關(guān)系R的一個元組,后m列是關(guān)系S的一個元組。若R有r個元組,S有s個元組,則關(guān)系R和關(guān)系S的笛卡兒積應(yīng)當(dāng)有rs個元組,記為RS,即 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)312.2.1 傳統(tǒng)的集合運算【例2.
24、6】 有2個關(guān)系R、S,如圖2.1所示,求以下各傳統(tǒng)的集合運算的結(jié)果。(1) (2) (3) (4)RS 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)322.2.1 傳統(tǒng)的集合運算 圖2.1 2個關(guān)系R、S解:(1) 由屬于R和屬于S的所有不重復(fù)的元組組成。(2) 由屬于R且不屬于S的所有元組組成。(3) 由既屬于R又屬于S的元組組成。(4) RS 為R和S的笛卡兒積,共有33=9個元組傳統(tǒng)的集合運算結(jié)果如圖2.2所示。 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)332.2.1 傳統(tǒng)的集合運算 圖2.2 傳統(tǒng)的集合運算結(jié)果 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)342.2.2 專門的關(guān)系運算專門的
25、關(guān)系運算有選擇、投影、連接和除等運算。在介紹專門的關(guān)系運算前,引入以下符號。(1)分量設(shè)關(guān)系模式為 ,它的一個關(guān)系設(shè)為R, 表示t 是R 的一個元組, 則 表示元組t 中屬性Ai 上的一個分量。(2)屬性組若 ,其中 是 中的一部分,則 稱A為屬性組或?qū)傩粤小?表示元組t 在屬性列A 上諸分量的集合。 則表示 中去掉 后剩余的屬性組。 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)352.2.2 專門的關(guān)系運算(3)元組的連接R 為 n目關(guān)系,S 為 m目關(guān)系, 稱為元組的連接(Concatenation)或元組的連接。(4)象集給定一個關(guān)系 ,Z和X為屬性組,當(dāng)時,x在R中的象集(Images S
26、et)定義為 表示 中屬性組 上值為 的諸元組在 上分量的集合。 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)362.2.2 專門的關(guān)系運算【例2.7】 在關(guān)系R 中, Z和X 為屬性組, X包含屬性x1, x2, 包含屬性z1, z2,如圖2.3所示,求X 在 R中的象集。 圖2.3 象集舉例 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)372.2.2 專門的關(guān)系運算解:在關(guān)系 R中, X可取值 的象集為 的象集為 的象集為1. 選擇(Selection)在關(guān)系R中選出滿足給定條件的諸元組稱為選擇,選擇是從行的角度進行的運算,表示為 =t | tRF(t)=真其中F是一個邏輯表達式,表示選擇條件,取
27、邏輯值”真”或”假”,t表示R中的元組,F(xiàn)(t)表示R中滿足F條件的元組。 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)382.2.2 專門的關(guān)系運算邏輯表達式F的基本形式是其中 由比較運算符(、)和邏輯運算符(、 )組成, , 等是屬性名、常量或簡單函數(shù),屬性名也可用它的序號來代替。2. 投影(Projection)在關(guān)系R中選出若干屬性列組成新的關(guān)系稱為投影,投影是從列的角度進行的運算,表示為其中 A為R的屬性列。 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)392.2.2 專門的關(guān)系運算【例2.8】 關(guān)系R如圖2.4所示,求以下選擇和投影運算的結(jié)果。(1)(2) 解:(1) 由R的C屬性值為8的
28、元組組成。(2) 由R的A、B屬性列組成。 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)402.2.2 專門的關(guān)系運算選擇和投影運算結(jié)果如圖2.5所示。 3. 連接(Join)連接也稱為連接,它是從兩個關(guān)系R和S的笛卡爾積中選取屬性值滿足一定條件的元組,記作R S 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)412.2.2 專門的關(guān)系運算其中A和B分別為R和S上度數(shù)相等且可比的屬性組,為比較運算符,連接運算從R和S的笛卡爾積RS中選取R關(guān)系在A屬性組上的值和S關(guān)系在B屬性組上的值滿足比較運算符的元組。下面介紹幾種常用的連接。(1)等值連接(Equijoin)為等號”=”的連接運算稱為“等值連接”,記作
29、R S等值連接從R和S的笛卡爾積RS中選取A B屬性值相等的元組 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)422.2.2 專門的關(guān)系運算(2)自然連接(Natural join)自然連接是除去重復(fù)屬性的等值連接,記作R S等值連接與自然連接的區(qū)別如下: 自然連接一定是等值連接,但等值連接不一定是自然連接。因為自然連接要求相等的分量必須是公共屬性,而等值連接相等的分量不一定是公共屬性。 等值連接不把重復(fù)的屬性去掉,而自然連接要把重復(fù)屬性去掉。一般連接是從行的角度進行計算,而自然連接要取消重復(fù)列,它同時從行和列的角度進行計算。 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)432.2.2 專門的關(guān)系運算
30、(3)外連接(Outer join)兩個關(guān)系R和S在做自然連接時,關(guān)系R中某些元組可能在S中不存在公共屬性上值相等的元組,造成R中這些元組被舍棄,同樣,S中某些元組也可能被舍棄。如果把舍棄的元組保存在結(jié)果關(guān)系中,而在其它屬性上填空值(Null),這種連接稱為全外連接(Full Outer Join),符號為R S.如果只把左邊關(guān)系R中舍棄的元組保留,這種連接稱為左外連接(Left Outer join 或Left join),符號為R S.如果只把右邊關(guān)系S中舍棄的元組保留,這種連接稱為右外連接(Right Outer join 或Right join),符號為R S. 數(shù)據(jù)庫原理與應(yīng)用(SQ
31、L Server)442.2.2 專門的關(guān)系運算【例2.9】 關(guān)系R、S如圖2.6所示,求以下各個連接運算的結(jié)果。(1)R S(2)R S(3)R S(4)R S(5)R S(6)R S 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)452.2.2 專門的關(guān)系運算 圖2.6 關(guān)系R、S解:(1)R S 該連接由R的C屬性值大于S的D屬性值的元組連接組成。 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)462.2.2 專門的關(guān)系運算(2)R S該等值連接由R的B屬性值等于S的B屬性值的元組連接組成(3)R S 該自然連接由R的B屬性值等于S的B屬性值的元組連接組成,并去掉重復(fù)列。(4)R S 該左外連接取出
32、左邊關(guān)系R中舍棄的所有元組,用空值填充右邊關(guān)系S中的屬性,再把產(chǎn)生的元組添加到自然連接結(jié)果中。(5)R S 該右外連接取出右邊關(guān)系S中舍棄的所有元組,用空值填充左邊關(guān)系R中的屬性,再把產(chǎn)生的元組添加到自然連接結(jié)果中。 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)472.2.2 專門的關(guān)系運算(6)R S該全外連接既做左外連接又做右外連接,并把產(chǎn)生的元組添加到自然連接結(jié)果中。各個連接運算的結(jié)果如圖2.7所示。 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)482.2.2 專門的關(guān)系運算4. 除(Division)給定關(guān)系R(X,Y)和S(Y,Z),其中X、Y、Z為屬性組。R中的Y與S中的Y可以有不同的屬性
33、名,但必須出自相同的域集。R與S的除運算得到一個新的關(guān)系P(X),P是R中滿足下列條件的元組在X屬性列上的投影:元組在X上的分量值x的象集Yx包含S在Y上投影的集合。記作 RS=tr X | trR Y(S) Yx其中的Yx為x在R中的象集,x=trX。除運算是同時從行和列的角度進行的運算。 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)492.2.2 專門的關(guān)系運算【例2.10】關(guān)系R,S如圖2.8所示,求RS。 解:在關(guān)系 中,A可取值a, b, ca的象集為 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)502.2.2 專門的關(guān)系運算b的象集為c的象集為S在 上的投影為可以看出,只有a的象集 包含了
34、S在 上的投影,所以RS=a如圖2.9所示。 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)512.2.2 專門的關(guān)系運算【例2.11】 設(shè)有如圖2.10所示的學(xué)生課程數(shù)據(jù)庫,包括學(xué)生關(guān)系S(Sno, Sname, Sex, Age, Speciality),各屬性含義為學(xué)號、姓名、性別、年齡、專業(yè);課程關(guān)系C(Cno, Cname, Teacher),各屬性含義為課程號、課程名、教師;選課關(guān)系SC(Sno, Cno, Grade),各屬性含義為學(xué)號、課程號、成績;試用關(guān)系代數(shù)表示下列查詢語句,并給出(1)、(5)、(10)的查詢結(jié)果。(1)查詢”電子信息工程”專業(yè)學(xué)生的學(xué)號和姓名。(2)查詢年齡小
35、于22歲的女學(xué)生學(xué)號、姓名和年齡。(3)查詢選修了”1001”號課程的學(xué)號、姓名。(4)查詢選修了”1001”號課程或”2004”號課程的學(xué)號。 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)522.2.2 專門的關(guān)系運算(5)查詢未選修”1001”課程的學(xué)號、姓名。(6)查詢選修課程名為”數(shù)據(jù)庫原理與應(yīng)用”的學(xué)號和姓名。(7)查詢選修”郭亞平”老師所授課程的學(xué)生姓名。(8)查詢”劉德川”未選修課程的課程號。(9)查詢”李莎”的”英語”成績。(10)查詢選修了全部課程的學(xué)號和姓名。 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)532.2.2 專門的關(guān)系運算 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)542
36、.2.2 專門的關(guān)系運算解:(1)查詢結(jié)果如圖2.11所示。 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)552.2.2 專門的關(guān)系運算(2)(3) S)(4)(5) S)查詢結(jié)果如圖2.12所示。 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)562.2.2 專門的關(guān)系運算(6) SC S)(7) SC S) 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)572.2.2 專門的關(guān)系運算(8) SC) (9) SC (10) 查詢結(jié)果如圖2.13所示 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)582.3 關(guān)系演算關(guān)系演算以數(shù)理邏輯中的謂詞演算為基礎(chǔ),關(guān)系演算可分為元組關(guān)系演算和域關(guān)系演算,前者以元組為變量,后者
37、以域為變量。2.3.1 元組關(guān)系演算在抽象的在元組關(guān)系演算中,為了討論方便,先允許關(guān)系是無限的,然后作適當(dāng)修改,保證關(guān)系演算中每一個公式表達的是有限關(guān)系。在元組關(guān)系演算系統(tǒng)中,稱 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)592.3.1 元組關(guān)系演算為元組演算表達式,其中t是元組變量, 是元組關(guān)系演算公式,簡稱公式,它是由原子公式和運算符組成。原子公式有下列3種形式:(1)R(t)R是關(guān)系名,t是元組變量,R(t)表示t是關(guān)系R的元組,關(guān)系R可表示為(2)tiuj:t和u都是元組變量,是算術(shù)比較運算符,該原子公式表示命題”元組t的第i個分量與元組u的第j個分量之間滿足關(guān)系”,例如,t4u5,表示
38、元組的t第4個分量大于元組u的第5個分量。 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)602.3.1 元組關(guān)系演算(3)t ic或cti這里c是一個常量,該原子公式表示命題”元組t的第i個分量與常量a之間滿足關(guān)系” ,例如,t2=6,表示元組的t第2個分量等于6。在公式中各種運算符的優(yōu)先級從高到低依次為:算術(shù)運算符、量詞(、)、邏輯運算符( 、)。其中,為存在量詞符號, 為全稱量詞符號。若元組演算公式中的一個元組變量前有存在量詞()和全稱量詞(),則稱該變量為約束元組變量,否則稱自由元組變量。關(guān)系代數(shù)的5種基本運算可以用元組演算表達式表示如下。 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)612.3
39、.1 元組關(guān)系演算(1)并RS=t | R(t)S(t)。(2)差R-S=t | R(t)S(t)。(3)笛卡爾積RS=t(r+s)|(u(r)(v(s)(R(u)S(v)t1=u1tr=urtr+1=v1tr+s=vs)其中t(r+s)表示t有r+s個屬性。(4)投影i1,ik(R)=t(k) | (u)(R(u)t1=ui1tk=uik)。 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)622.3.1 元組關(guān)系演算(5)選擇 =t | R(t)F其中F是F的等價表示形式。上面定義的關(guān)系演算允許出現(xiàn)無限關(guān)系,例如, 表示所有不屬于R的元組,有無限多個,必須排除這類無意義的表達式。為此引入元組關(guān)系公
40、式 的域,即 。 是所引用的所有值的集合,通常要進行安全限制,定義 是一個有限符號集。 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)632.3.1 元組關(guān)系演算【例2.12】 有兩個關(guān)系R和S,如圖2.14所示,求以下元組關(guān)系演算結(jié)果:R1=t | R(t)S(t)R2=t | (u)(S(t)R(u)t2 u3)R3=t | (u)(R(t)S(u)t1 4z10 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)702.3.2 域關(guān)系演算(2)R2=xyz | R(xyz)S(xyz)z=8(3)R3=xyz | (u)( v)(R(zxu)W(yv)uv解:(1)R1由R中第2列大于4、第3列小于10
41、的元組組成。(2)R2由R中第2列、大等于8的元組組成 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)712.3.2 域關(guān)系演算(3)R3由R中第2列、W中第1列、R中第1列組成,這些元組滿足條件:R中第3列小于W中第2列。域關(guān)系演算結(jié)果如圖3.17所示。【例2.15】 設(shè)R和S分別是三元和二元關(guān)系,試把表達式: 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)722.3.2 域關(guān)系演算轉(zhuǎn)換成等價的:(1)中文查詢句子。(2)元組關(guān)系演算表達式。(3)域關(guān)系演算表達式。解:(1)中文查詢含義為:從R與S的笛卡爾積中選擇R的第2列與S的第1列相等或者R的第3列與S的第1列相等的元組,并投影R的第1列和S的第2
42、列。(2)元組關(guān)系演算表達式為t(2)|(u)(v)(R(u)S(v)t1=u1t2=v2(u2=v1u3=v1)。(3)域關(guān)系演算表達式為xv | (x)( u)(R(xyz)S(uv)(y=uz=u) 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)732.4 SQL簡介2.4.1 SQL語言分類通常將SQL語言分為以下4類。(1)數(shù)據(jù)定義語言(Data Definition Language, DDL)用于定義數(shù)據(jù)庫對象,對數(shù)據(jù)庫、數(shù)據(jù)庫中的表、視圖、索引等數(shù)據(jù)庫對象進行建立和刪除,DDL包括CREATE、ALTER、DROP等語句。(2)數(shù)據(jù)操縱語言(Data Manipulation Language, DML)用于對數(shù)據(jù)庫中的數(shù)據(jù)進行插入、修改、刪除等操作,DML包括INSERT、UPDATE、DELETE等語句。 數(shù)據(jù)庫原理與應(yīng)用(SQL Server)742.4.1 SQL語言分類(3)數(shù)據(jù)查詢語言(Data Query Language, DQL)用于對數(shù)據(jù)庫中的數(shù)據(jù)進行查詢操作,例如用 SE
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 探索有效實驗教學(xué)策略助力小學(xué)科學(xué)教學(xué)發(fā)展
- 展會組織者如何預(yù)防合同欺詐和糾紛的處理方法
- 2025年度民房托管與社區(qū)醫(yī)療服務(wù)合同4篇
- 2025年度高端精密模具加工技術(shù)服務(wù)合同樣本4篇
- 二零二五版汽車后市場服務(wù)股份投資與汽車維修技術(shù)培訓(xùn)合同3篇
- 碎石買賣合同(2025年度版)2篇
- 二零二五年度物聯(lián)網(wǎng)項目股權(quán)變更及合作協(xié)議3篇
- 2025年度金融理財產(chǎn)品銷售與服務(wù)合作協(xié)議4篇
- 二零二五版露營用品研發(fā)與市場拓展合同4篇
- 上海建筑勞務(wù)分包合同范本模板(2024版)
- 2024年高純氮化鋁粉體項目可行性分析報告
- 安檢人員培訓(xùn)
- 危險性較大分部分項工程及施工現(xiàn)場易發(fā)生重大事故的部位、環(huán)節(jié)的預(yù)防監(jiān)控措施
- 《榜樣9》觀后感心得體會四
- 2023事業(yè)單位筆試《公共基礎(chǔ)知識》備考題庫(含答案)
- 化學(xué)-廣東省廣州市2024-2025學(xué)年高一上學(xué)期期末檢測卷(一)試題和答案
- 2025四川中煙招聘高頻重點提升(共500題)附帶答案詳解
- EHS工程師招聘筆試題與參考答案(某大型央企)2024年
- 營銷策劃 -麗亭酒店品牌年度傳播規(guī)劃方案
- 2025年中國蛋糕行業(yè)市場規(guī)模及發(fā)展前景研究報告(智研咨詢發(fā)布)
- 護理組長年底述職報告
評論
0/150
提交評論