數(shù)據(jù)庫系統(tǒng)概論之關(guān)系模型課件_第1頁
數(shù)據(jù)庫系統(tǒng)概論之關(guān)系模型課件_第2頁
數(shù)據(jù)庫系統(tǒng)概論之關(guān)系模型課件_第3頁
數(shù)據(jù)庫系統(tǒng)概論之關(guān)系模型課件_第4頁
數(shù)據(jù)庫系統(tǒng)概論之關(guān)系模型課件_第5頁
已閱讀5頁,還剩129頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第三章關(guān)系模型--本章內(nèi)容基礎(chǔ)知識回顧關(guān)系模型概述關(guān)系模型基本概念關(guān)系模型的完整性約束關(guān)系代數(shù)邏輯數(shù)據(jù)庫設(shè)計:ER到關(guān)系的轉(zhuǎn)換關(guān)系演算第三章關(guān)系模型--本章內(nèi)容基礎(chǔ)知識回顧1基礎(chǔ)知識回顧數(shù)據(jù)庫發(fā)展以數(shù)據(jù)模型劃分第一代網(wǎng)狀、層次數(shù)據(jù)庫系統(tǒng)。代表:1969年IBM的IMS(informationManagementSystem);美國CODASYL(ConferenceOnDataSystemLanguage)下屬的DBTG(DataBaseTaskGroup)于60年代末70年代初提議的方法。層次數(shù)據(jù)庫是數(shù)據(jù)庫的先驅(qū),而網(wǎng)狀數(shù)據(jù)庫是數(shù)據(jù)庫概念、方法、技術(shù)的奠基者。第二代關(guān)系數(shù)據(jù)庫系統(tǒng)。1970年IBM公司的研究員E.F.Codd提出了數(shù)據(jù)庫的關(guān)系模型,關(guān)系方法和關(guān)系數(shù)據(jù)理論的研究。代表:IBM的SystemR和Berkele大學(xué)的INGRES,成果:奠定了關(guān)系模型的理論基礎(chǔ);研究了關(guān)系數(shù)據(jù)庫語言,有關(guān)系代數(shù)、關(guān)系演算、SQL語言、QBE等;研制了大量的RDBMS的原型,實現(xiàn)了查詢優(yōu)化、并發(fā)控制、故障恢復(fù)等關(guān)鍵技術(shù);基礎(chǔ)知識回顧數(shù)據(jù)庫發(fā)展2基礎(chǔ)知識回顧數(shù)據(jù)庫發(fā)展第三代以面向?qū)ο髷?shù)據(jù)模型為主要特征的數(shù)據(jù)庫系統(tǒng)。模型更加豐富、數(shù)據(jù)管理功能功能更加強大、能支持傳統(tǒng)數(shù)據(jù)庫難以支持的新的應(yīng)用。特征:支持數(shù)據(jù)管理、對象管理和知識管理;保持或者繼承第二代數(shù)據(jù)庫的技術(shù);對其他系統(tǒng)開放(支持數(shù)據(jù)庫語言標(biāo)準(zhǔn)和標(biāo)準(zhǔn)網(wǎng)絡(luò)協(xié)議)。僅支持面向?qū)ο髷?shù)據(jù)模型并不能稱為第三代數(shù)據(jù)庫系統(tǒng)?;A(chǔ)知識回顧數(shù)據(jù)庫發(fā)展3基礎(chǔ)知識回顧關(guān)系數(shù)據(jù)庫系統(tǒng)關(guān)系數(shù)據(jù)庫系統(tǒng)。產(chǎn)品的發(fā)展情況:(1)對關(guān)系模型的支持:第一階段(70年代):僅支持關(guān)系數(shù)據(jù)結(jié)構(gòu)、基本的關(guān)系操作(選擇、投影、連接)。如:dBASE第二階段(80年代):SQL成為關(guān)系數(shù)據(jù)庫語言的國際標(biāo)準(zhǔn)第三階段(90年代):加強了完整性、安全性的支持。(2)運行環(huán)境:第一階段:在大、中、小型機上的RDBMS,多用戶系統(tǒng)第二階段:提高可移植性,能在多種硬件平臺、和操作系統(tǒng)環(huán)境下運行;聯(lián)網(wǎng),向分布式發(fā)展,支持多種協(xié)議。第三階段:分布式數(shù)據(jù)庫和客戶/服務(wù)器結(jié)構(gòu)的數(shù)據(jù)庫系統(tǒng)的推出。追求開放性(可移植性、可連接性、可伸縮性)。基礎(chǔ)知識回顧關(guān)系數(shù)據(jù)庫系統(tǒng)4基礎(chǔ)知識回顧關(guān)系數(shù)據(jù)庫系統(tǒng)關(guān)系數(shù)據(jù)庫系統(tǒng)。產(chǎn)品的發(fā)展情況:(3)RDBMS系統(tǒng)構(gòu)成:第一階段:早期的RDBMS產(chǎn)品主要提供數(shù)據(jù)定義、數(shù)據(jù)存取、數(shù)據(jù)控制等基本操作和數(shù)據(jù)存儲組織、并發(fā)控制、安全性、完整性檢查、系統(tǒng)恢復(fù)等RDBMS的核心功能。第二階段:以RDBMS基本功能為核心,開發(fā)外圍軟件系統(tǒng),如:FORM報表生成系統(tǒng),REPORT報表系統(tǒng)、MENU菜單生成系統(tǒng)、GRAPHIC圖形軟件等等。為用戶提供了良好的第四代應(yīng)用開發(fā)環(huán)境。(4)對應(yīng)用的支持:第一階段:用于信息管理、輔助決策等應(yīng)用領(lǐng)域。第二階段:聯(lián)機事務(wù)處理的應(yīng)用領(lǐng)域,提高RDBMS事務(wù)處理的能力。第三階段:由集中到分布,由局部到整個企業(yè)甚至整個行業(yè)。支持整個企業(yè)的聯(lián)機事務(wù)處理?;A(chǔ)知識回顧關(guān)系數(shù)據(jù)庫系統(tǒng)5關(guān)系模型概述為什么要學(xué)習(xí)關(guān)系模型?關(guān)系模型是目前廣泛使用的一種數(shù)據(jù)模型IBMDB2,MiscrosoftSQLServer,Informix,Oracle,Sybase,…………….僅有少量的遺產(chǎn)系統(tǒng)使用舊的數(shù)據(jù)模型IBM的IMS目前仍在使用目前關(guān)系模型的競爭者:面向?qū)ο蟮臄?shù)據(jù)模型Objectstore,Versant,Ontos,……….對象關(guān)系模型:InformixUniversalServer,UniSQL,O2,ORACLE,DB2,………...關(guān)系模型概述為什么要學(xué)習(xí)關(guān)系模型?6關(guān)系模型概述關(guān)系數(shù)據(jù)模型是由E.F.Codd于1970年提出在此之前大多數(shù)數(shù)據(jù)庫系統(tǒng)是基于層次數(shù)據(jù)模型和網(wǎng)狀數(shù)據(jù)模型的關(guān)系模型給數(shù)據(jù)庫領(lǐng)域帶來了一場革命,并取代了舊的數(shù)據(jù)模型,E.F.Codd并因此于1983年獲得TuringAwards在70年代中期,IBM和UC-Berkeley開發(fā)了早期的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)關(guān)系模型概述關(guān)系數(shù)據(jù)模型是由E.F.Codd于1970年提出7關(guān)系模型概述現(xiàn)在的關(guān)系型數(shù)據(jù)庫系統(tǒng)有IBM的DB2InformixOracleSybaseMicrosoft的Access,SQLServerFox-xParadox關(guān)系模型概述現(xiàn)在的關(guān)系型數(shù)據(jù)庫系統(tǒng)有8關(guān)系模型概述關(guān)系模型是十分簡單的關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)非常單一,實體、聯(lián)系都表示成關(guān)系一個關(guān)系是一個具有行和列的二維表關(guān)系模型給出關(guān)系操作的能力,但不對RDBMS語言給出具體的語法要求查詢操作:選擇、投影、連接、除、并、交、差等更新操作:增加、刪除和修改一次一集合關(guān)系代數(shù)和關(guān)系演算高度非過程化關(guān)系模型概述關(guān)系模型是十分簡單的9關(guān)系模型概述關(guān)系模型的三類完整性約束系統(tǒng)支持:實體完整性和參照完整性用戶定義:用戶定義的完整性本章主要討論以下問題關(guān)系模型是如何表示數(shù)據(jù)的關(guān)系模型可以表示何種完整性約束數(shù)據(jù)是如何被查詢的如何將由ER模型表示數(shù)據(jù)庫概念模式轉(zhuǎn)換為關(guān)系模式(模式)的視圖(外模式)問題關(guān)系模型概述關(guān)系模型的三類完整性約束10關(guān)系模型基本概念關(guān)系域:一組具有相同數(shù)據(jù)類型值的集合笛卡爾積:給定一組域D1,D2,…,Dn,它們的笛卡爾積為:D1XD2X…Dn={(d1,d2,…,dn)|di∈Di,i=1,2,…n)元組:每一個元素(d1,d2,…,dn)叫做一個n元組,或元組分量:元素中的每一個值di叫做一個分量基數(shù):若Di為有限集,其基數(shù)為mi,則D1XD2X…Dn的基數(shù)為:關(guān)系模型基本概念關(guān)系11關(guān)系模型基本概念例如:給定三個域D1=MAN={王兵,李平,張英},D2=WOMAN={丁梅,吳芳}D3=CHILD={王一,李一,李二}D1XD2XD3={(王兵,丁梅,王一),(王兵,丁梅,李一),(王兵,丁梅,李二),(王兵,吳芳,王一),(王兵,吳芳,李一),…}笛卡爾積可以表示為一個二維表,表中的每一行對應(yīng)一個元組,每一列對應(yīng)一個域關(guān)系模型基本概念例如:給定三個域D1=MAN={王兵,李平,12關(guān)系模型基本概念MANWOMANCHILD王兵丁梅王一王兵丁梅李一王兵丁梅李二王兵吳芳王一王兵吳芳李一王兵吳芳李二李平丁梅王一李平丁梅李一李平丁梅李二李平吳芳王一李平吳芳李一李平吳芳李二MANWOMANCHILD張英丁梅王一張英丁梅李一張英丁梅李二張英吳芳王一張英吳芳李一張英吳芳李二續(xù)左表關(guān)系模型基本概念MANWOMANCHIL13關(guān)系模型基本概念關(guān)系:D1XD2X…Dn的子集叫做在域D1,D2,…,Dn上的關(guān)系表示為R(D1,D2,…,Dn)關(guān)系的目或度:n單元關(guān)系:n=1二元關(guān)系:n=2關(guān)系是一個二維表(子集)例如:假設(shè)王兵的妻子是丁梅,他們的孩子是王一,李平的妻子是吳芳,他們的孩子是李一和李二,則取笛卡爾積的一個子集構(gòu)造一個關(guān)系FAMILY關(guān)系模型基本概念關(guān)系:D1XD2X…Dn的子集叫做在域D114關(guān)系模型基本概念在R(D1,D2,…,Dn)表示中,域可以重名,給每列一個名字,稱為屬性,關(guān)系表示為:R(A1,A2,…,An)例如:FAMILY(FATHER,MOTHER,CHILD)MANWOMANCHILD王兵丁梅王一李平吳芳李一李平吳芳李二FAMILY關(guān)系模型基本概念在R(D1,D2,…,Dn)表示中,域15關(guān)系模型基本概念候選碼:能夠唯一標(biāo)識一個元組的最小屬性組主碼:主屬性:候選碼中的屬性非碼屬性:不包含在任何候選碼中的屬性關(guān)系的性質(zhì):關(guān)系模型要求在一個關(guān)系中不能存在完全相同的元組(但實際商用關(guān)系數(shù)據(jù)庫系統(tǒng)支持重復(fù)元組)關(guān)系中元組行的序并不重要關(guān)系中列的序并不重要(但有些系統(tǒng)例外)關(guān)系模型基本概念候選碼:能夠唯一標(biāo)識一個元組的最小屬性組16關(guān)系模型基本概念分量必須取原子值不同的列可以出自同一個域給定域:person={王兵,李平,張英,丁梅,吳芳}child={王義,李一,李二}MANWOMANCHILDfirstsecond王兵丁梅王一李平吳芳李一李二FAMILYbad關(guān)系模型基本概念分量必須取原子值MANWOMAN17關(guān)系模型基本概念構(gòu)造FAMILY關(guān)系,仍然取personXpersonXchild的子集,表示為:FAMILY(FATHER,MOTHER,CHILD)此處dom(FATHER)=dom(MOTHER)=person關(guān)系模式:關(guān)系的描述形式化表示:R(U,D,dom,F),簡記為R(U)或R(A1,A2,…,An)屬性向域的映象常常說明為屬性的類型和長度關(guān)系模式是型,關(guān)系是值關(guān)系模型基本概念構(gòu)造FAMILY關(guān)系,仍然取personX18關(guān)系模型基本概念在關(guān)系模型中,實體和聯(lián)系都是用關(guān)系表示的例如:左圖

學(xué)生(學(xué)號,姓名,性別,專業(yè),年齡)

課程(課程號,課程名,學(xué)時,學(xué)分)選修(學(xué)號,課程號,成績)一個關(guān)系數(shù)據(jù)庫是一組關(guān)系的集合;關(guān)系數(shù)據(jù)庫模式則是該數(shù)據(jù)庫所有關(guān)系模式的集合學(xué)生課程選修mn關(guān)系模型基本概念在關(guān)系模型中,實體和聯(lián)系都是用關(guān)系表示的學(xué)生19關(guān)系模型--關(guān)系的完整性關(guān)系模型的完整性是對關(guān)系的某種約束實體完整性:主碼中的屬性不可取空值(例子)參照完整性:例子:對于關(guān)系模式學(xué)生(學(xué)號,姓名,性別,專業(yè),年齡)

課程(課程號,課程名,學(xué)時,學(xué)分)選修(學(xué)號,課程號,成績)外碼:設(shè)F是關(guān)系R的一個或一組屬性,但不是關(guān)系R的碼,如果F與關(guān)系S的主碼Ks相對應(yīng),則稱F為關(guān)系R的外碼關(guān)系模型--關(guān)系的完整性關(guān)系模型的完整性是對關(guān)系的某種約束20關(guān)系模型--關(guān)系的完整性參照關(guān)系R,被參照關(guān)系S參照完整性:F的取值必須為:或者取空值或者等于S中某個元組的主碼值例如:部門(部門號,部門名,電話)

雇員(雇員號,雇員名,職稱,部門號)雇員中部門號的取值部門雇員擁有1n關(guān)系模型--關(guān)系的完整性參照關(guān)系R,被參照關(guān)系S部門雇員擁有21關(guān)系模型--關(guān)系的完整性用戶定義的完整性:任何關(guān)系數(shù)據(jù)庫系統(tǒng)都應(yīng)支持實體完整性和參照完整性用戶定義的完整性定義某一具體應(yīng)用中所涉及的數(shù)據(jù)必須滿足的語義要求,例如年齡的取值關(guān)系數(shù)據(jù)庫系統(tǒng)提供定義和檢驗這類完整性機制關(guān)系模型--關(guān)系的完整性用戶定義的完整性:22關(guān)系模型--關(guān)系代數(shù)關(guān)系代數(shù)運算分為:傳統(tǒng)的集合運算和專門的關(guān)系運算集合運算前提:關(guān)系R和關(guān)系S具有相同的目,相應(yīng)的屬性取自同一個域并:關(guān)系R和關(guān)系S的并記作:RS(下頁)差:關(guān)系R和關(guān)系S的差記作:R-S交:關(guān)系R和關(guān)系S的交記作:RS關(guān)系模型--關(guān)系代數(shù)關(guān)系代數(shù)運算分為:傳統(tǒng)的集合運算和專門的23關(guān)系模型--關(guān)系代數(shù)ABCABCABCa1b1c1a1b2c2a1b1c1a1b2c2a1b3c2a1b2c2a2b2c1a2b2c1a2b2c1a1b3c2ABCABCa1b2c2a1b1c1a2b2c1RSRSRSR-S關(guān)系模型--關(guān)系代數(shù)ABC24關(guān)系模型--關(guān)系代數(shù)R×SABCABCABCa1b1c1a1b1c1a1b2c2a1b2c2a1b1c1a1b3c2a2b2c1a1b1c1a2b2c1a1b2c2a1b2c2ABCa1b2c2a1b3c2a1b2c2a1b2c2a2b2c1a1b3c2a2b2c1a1b2c2a2b2c1a2b2c1a1b3c2a2b2c1a2b2c1RS關(guān)系模型--關(guān)系代數(shù)R×SABC25關(guān)系模型--關(guān)系代數(shù)廣義笛卡爾積:兩個分別為n和m目的關(guān)系R和S的廣義笛卡爾積是一個n+m列的元組的集合。若R有k1個元組,S有k2個元組,則廣義笛卡爾積有k1×k2個元組記作:R×S關(guān)系模型--關(guān)系代數(shù)廣義笛卡爾積:兩個分別為n和m目的關(guān)系R26關(guān)系的建立和修改--SQL-92SQL語言的簡單發(fā)展歷史SQL語言是由IBM公司在SystemR系統(tǒng)中首先提出SQL在1986年被ANSI采納為標(biāo)準(zhǔn),稱為SQL-86在1989又對SQL標(biāo)準(zhǔn)進行了少量修改,稱為SQL-89在1992年ANSI和ISO對SQL標(biāo)準(zhǔn)進行主要修改,稱之為SQL-92在1999年又對SQL-92進行大量修改(面向?qū)ο蟮奶攸c),稱之為SQL-3,有時也稱為SQL-99關(guān)系的建立和修改--SQL-92SQL語言的簡單發(fā)展歷史27關(guān)系的建立和修改關(guān)系表建立CREATETABLEStudents(sidCHAR(20),nameCHAR(30),loginCHAR(20),ageINTEGER,gpaREAL)關(guān)系表刪除DROPTABLEStudents關(guān)系表修改ALTERTABLEStudentsADDCOLUMNmaiden-nameCHAR(10)關(guān)系的建立和修改關(guān)系表建立28關(guān)鍵字約束--實現(xiàn)實體完整性通過UNIQUE子句來定義候選碼(候選關(guān)鍵字)通過PRIMARYKEY子句來定義主碼(主關(guān)鍵字)CREATETABLEStudents(sidCHAR(20),nameCHAR(30),loginCHAR(20),ageINTEGER,gpaREAL,UNIQUE(name,age),UNIQUE(login),PRIMARYKEY(sid))關(guān)鍵字約束--實現(xiàn)實體完整性通過UNIQUE子句來定義候選碼29外鍵約束--實現(xiàn)參照完整性外鍵約束指的是兩個關(guān)系之間的關(guān)鍵字約束關(guān)系,考慮下列關(guān)系Students(sid,name,login,age,gpa)Enrolled(sid,cid,grade)從語義上來講,在關(guān)系Enrolled中出現(xiàn)的sid值,在關(guān)系Students中必須存在,Enrolled中的sid稱為外鍵,引用關(guān)系Students中的主關(guān)鍵字sid外鍵必須與被引用關(guān)系中的主關(guān)鍵字相匹配可以有不同的名字列數(shù)要相同,且要具有兼容的數(shù)據(jù)類型外鍵約束--實現(xiàn)參照完整性外鍵約束指的是兩個關(guān)系之間的關(guān)鍵字30外鍵約束----示例外鍵約束----示例31外鍵約束的語義在被參照關(guān)系中關(guān)鍵字的值在參照關(guān)系中不一定出現(xiàn)但在參照關(guān)系中出現(xiàn)的關(guān)鍵字值在被參照關(guān)系中必須要出現(xiàn)如果我們向關(guān)系Enrolled中插入元組<55555,Art104,A>,這個操作將被拒絕因為違反了外鍵約束外鍵約束的語義在被參照關(guān)系中關(guān)鍵字的值在參照關(guān)系中不一定出現(xiàn)32外鍵約束的語義對于操作:將關(guān)系Students中的<53666,Jones,joines@cs,18,3.4>刪除,有兩種處理禁止這種刪除操作同時刪除參照關(guān)系中的相關(guān)元組值得注意的是外鍵可能來自于同一關(guān)系,也就是被參照關(guān)系就是參照關(guān)系Students(sid,name,login,age,gpa,partner),partner是對sid的一個外鍵約束Courses(cid,name,desc,preq),preq是對cid的一個外鍵約束當(dāng)一門課程沒有前期課程時,preq可以為空,空值并不違反外鍵約束外鍵約束的語義對于操作:將關(guān)系Students中的<536633外鍵約束的定義---SQL-92外鍵約束的定義---SQL-9234邏輯數(shù)據(jù)庫設(shè)計:ER到關(guān)系的轉(zhuǎn)換實體集到表的轉(zhuǎn)換實體集中的屬性映射為表中的屬性實體集中的(主)關(guān)鍵字映射為關(guān)系中的(主)關(guān)鍵字實體集中屬性的域映射為關(guān)系中屬性的域邏輯數(shù)據(jù)庫設(shè)計:ER到關(guān)系的轉(zhuǎn)換實體集到表的轉(zhuǎn)換35實體集到表的轉(zhuǎn)換--示例實體集到表的轉(zhuǎn)換--示例36多對多聯(lián)系集到表的轉(zhuǎn)換多對多聯(lián)系被映射為一個關(guān)系表,包括屬性:每個參加聯(lián)系的實體集的主關(guān)鍵字屬性,作為外鍵存在所有外鍵構(gòu)成該實體集的主關(guān)鍵字聯(lián)系集本身的屬性--一般屬性多對多聯(lián)系集到表的轉(zhuǎn)換多對多聯(lián)系被映射為一個關(guān)系表,包括屬性37多對多聯(lián)系集到表的轉(zhuǎn)換--例1mn多對多聯(lián)系集到表的轉(zhuǎn)換--例1mn38多對多聯(lián)系集到表的轉(zhuǎn)換--例1多對多聯(lián)系集到表的轉(zhuǎn)換--例139多對多聯(lián)系集到表的轉(zhuǎn)換--例2mnp多對多聯(lián)系集到表的轉(zhuǎn)換--例2mnp40多對多聯(lián)系集到表的轉(zhuǎn)換--例2CREATETABLEWork3-In(ssnCHAR(11),didinteger,fromdate,todate,PRIMARYKEY(ssn,did,from,to)FOREIGKEY(ssn)REFERENCESEmployees,ONDELETENOACTION,FOREIGKEY(did)REFERENCESDepartments,FOREIGNKEY(from)REFERENCEDURATION,FOREIGNKEY(to)REFERENCEDURATION)多對多聯(lián)系集到表的轉(zhuǎn)換--例2CREATETABLEWo41一對多聯(lián)系集的翻譯1n一對多聯(lián)系集的翻譯1n42一對多聯(lián)系集的翻譯----方法一將一對多聯(lián)系翻譯為一個獨立的表一對多聯(lián)系集的翻譯----方法一將一對多聯(lián)系翻譯為一個獨立43一對多聯(lián)系集的翻譯----方法二將Manages和Departments翻譯為一個關(guān)系一對多聯(lián)系集的翻譯----方法二將Manages和Depa44關(guān)于聯(lián)系集到關(guān)系映射的思考題在一對多聯(lián)系中,Manages和Departments為什么可以合并為一個關(guān)系?對于一對多聯(lián)系翻譯的兩種方法的優(yōu)缺點是什么?對于一個多對多聯(lián)系集為什么必須映射為一個獨立的關(guān)系表?一對一聯(lián)系應(yīng)如何翻譯?關(guān)于聯(lián)系集到關(guān)系映射的思考題在一對多聯(lián)系中,Manages和45思考題部分答案方法一和方法二的優(yōu)缺點方法一多產(chǎn)生一個關(guān)系對于有些查詢,方法一需要兩次連接,而方法二只需要一次連接即可方法二的缺點是浪費空間,如果有些部門沒有經(jīng)理的話思考題部分答案方法一和方法二的優(yōu)缺點46具有參加約束的聯(lián)系集的翻譯1nnm具有參加約束的聯(lián)系集的翻譯1nnm47具有參加約束的1:n(1:1)聯(lián)系集的翻譯具有參加約束的1:n(1:1)聯(lián)系集的翻譯48具有參加約束的聯(lián)系集的翻譯ssn的非空定義反映了參加約束使用上面的第一種方法也可以表示Manages和Departments,但使用方法二比方法一好,(why?因為方法二浪費空間的缺點已不復(fù)存在)具有參加約束的聯(lián)系集的翻譯ssn的非空定義反映了參加約束49弱實體集的翻譯一個弱實體總是參加一個二元一對多聯(lián)系(?)全參加約束1m弱實體集的翻譯一個弱實體總是參加一個二元一對多聯(lián)系(?)1m50弱實體集的翻譯使用具有1:n聯(lián)系的第二種翻譯方法(Why?),但必須考慮下面的具體要求必須考慮弱實體集有一個部分關(guān)鍵字當(dāng)一個Owner實體被刪除以后,弱實體集中相應(yīng)的實體也應(yīng)被刪除弱實體集的翻譯使用具有1:n聯(lián)系的第二種翻譯方法(Why?)51弱實體集的翻譯弱實體集的翻譯52類層次的翻譯類層次的翻譯53類層次的翻譯--方法一三個實體集翻譯成三個關(guān)系實體集Employees的翻譯比較簡單關(guān)系Hourly_Emps的屬性包括:ssn,hourly_wages,hours_worked,;ssn是主關(guān)鍵字;同時ssn一個外鍵;當(dāng)超類中實體被刪除時子類中的對象也必須刪除Contract_Emps的翻譯相類似思考題:為什么在關(guān)系Hourly_Emps的屬性中不包含屬性name和lot?

體現(xiàn)繼承性了嗎?類層次的翻譯--方法一三個實體集翻譯成三個關(guān)系54類層次的翻譯--方法一CREATETABLEHourly_Emps(ssnCHAR(20),hourly_wagesREAL,hours_workedINTEGER,PRIMARYKEY(ssn),FOREIGKEY(ssn)REFERENCESEmployees,ONDELETECASCADE)類層次的翻譯--方法一CREATETABLEHourl55類層次的翻譯--方法二三個實體集翻譯成兩個關(guān)系僅生成兩個關(guān)系:Hourly_Emps和Contract_Emps,他們都包含超類Employees的屬性,除了主關(guān)鍵字約束以外,不需要定義任何約束當(dāng)然,對于overlap約束只能用通用約束機制來實現(xiàn)對于方法一來講,covering約束也只能用通用約束機制來實現(xiàn)類層次的翻譯--方法二三個實體集翻譯成兩個關(guān)系56類層次的翻譯--兩種方法的比較方法一:當(dāng)查詢涉及到Employees的屬性和其它一些細節(jié)屬性時需要連接操作;當(dāng)查詢僅涉及到Employees的屬性時則在Employees關(guān)系上進行即可;另一個優(yōu)點是可以存儲非Hourly_Emps和Contract_Emps的實體方法二:主要確定無法存儲非Hourly_Emps和Contract_Emps的實體,且name和lot出現(xiàn)了兩次;優(yōu)點是僅涉及到Hourly_Emps或Contract_Emps的查詢僅在一個關(guān)系上進行即可,不需要額外的連接操作,但涉及到所有雇員的查詢則需要在兩個關(guān)系上進行;類層次的翻譯--兩種方法的比較方法一:當(dāng)查詢涉及到Empl57實例分析一個公司數(shù)據(jù)庫需要存儲雇員、部門和雇員小孩的信息。雇員工作在部門(一個雇員只能工作在一個部門),每個部門由一個雇員管理,每個雇員小孩的名字是唯一的,假定小孩只有一個家長工作在這個公司,而且我們不關(guān)心哪些已經(jīng)調(diào)離雇員的小孩情況。請畫出ER圖撲獲這些信息。雇員(ssn,salary,phone)部門(dno,dname,budget)小孩(name,age)實例分析一個公司數(shù)據(jù)庫需要存儲雇員、部門和雇員小孩的信息。雇58實例分析部門雇員小孩工作有1m管理n11ndnodnamebudgetssnsalaryphonenameage雇員(ssn,salary,phone,dno)部門(dno,dname,budget,ssnnotnull)小孩(ssn,name,age)實例分析部門雇員小孩工作有1m管理n11ndnodnameb59實例分析一個大學(xué)數(shù)據(jù)庫包括教授、課程信息。教授講授課程,下面幾種情況都是描述有關(guān)講授聯(lián)系集的,對于每一種情況畫ER圖描述教授可以在幾個學(xué)期講授同一門課程,但僅最近一次的講授活動需被記錄下來教授可以在幾個學(xué)期講授同一門課程,每次講授活動需被記錄下來每個教授必須講授課程每個教授只講授一門課程實例分析一個大學(xué)數(shù)據(jù)庫包括教授、課程信息。教授講授課程,下面60實例分析每個教授只講授一門課程,每門課程可有幾位教授講授假定一些課程可由一組教授聯(lián)合講授假定一些特定課程只能由一組教授聯(lián)合講授,且這些教授中的任一位不可能獨立講授這門課程(思考題)實例分析每個教授只講授一門課程,每門課程可有幾位教授講授61實例分析教授課程講授nm職工號姓名電話課號課時學(xué)分班級學(xué)期人數(shù)(1)實例分析教授課程講授nm職工號姓名電話課號課時學(xué)分班級學(xué)期人62實例分析教授課程講授nm職工號姓名電話課號課時學(xué)分班級學(xué)期人數(shù)教授課程講授nm職工號姓名電話課號課時學(xué)分班級學(xué)期人數(shù)?講授情況p(2)實例分析教授課程講授nm職工號姓名電話課號課時學(xué)分班級學(xué)期人63實例分析教授課程講授nm職工號姓名電話課號課時學(xué)分班級學(xué)期人數(shù)講授情況n(3)實例分析教授課程講授nm職工號姓名電話課號課時學(xué)分班級學(xué)期人64實例分析教授課程講授m1職工號姓名電話課號課時學(xué)分班級學(xué)期人數(shù)講授情況n(4,5)實例分析教授課程講授m1職工號姓名電話課號課時學(xué)分班級學(xué)期人65實例分析教授課程講授m1職工號姓名電話課號課時學(xué)分班級講授號人數(shù)講授情況n學(xué)期(6)實例分析教授課程講授m1職工號姓名電話課號課時學(xué)分班級講授號66實例分析教授課程m1職工號姓名電話課號課時學(xué)分n(7)組構(gòu)成nmISA一般課程特定課程講授2講授11參考答案實例分析教授課程m1職工號姓名電話課號課時學(xué)分n(7)組構(gòu)成67第三章關(guān)系模型--本章內(nèi)容基礎(chǔ)知識回顧關(guān)系模型概述關(guān)系模型基本概念關(guān)系模型的完整性約束關(guān)系代數(shù)邏輯數(shù)據(jù)庫設(shè)計:ER到關(guān)系的轉(zhuǎn)換關(guān)系演算第三章關(guān)系模型--本章內(nèi)容基礎(chǔ)知識回顧68基礎(chǔ)知識回顧數(shù)據(jù)庫發(fā)展以數(shù)據(jù)模型劃分第一代網(wǎng)狀、層次數(shù)據(jù)庫系統(tǒng)。代表:1969年IBM的IMS(informationManagementSystem);美國CODASYL(ConferenceOnDataSystemLanguage)下屬的DBTG(DataBaseTaskGroup)于60年代末70年代初提議的方法。層次數(shù)據(jù)庫是數(shù)據(jù)庫的先驅(qū),而網(wǎng)狀數(shù)據(jù)庫是數(shù)據(jù)庫概念、方法、技術(shù)的奠基者。第二代關(guān)系數(shù)據(jù)庫系統(tǒng)。1970年IBM公司的研究員E.F.Codd提出了數(shù)據(jù)庫的關(guān)系模型,關(guān)系方法和關(guān)系數(shù)據(jù)理論的研究。代表:IBM的SystemR和Berkele大學(xué)的INGRES,成果:奠定了關(guān)系模型的理論基礎(chǔ);研究了關(guān)系數(shù)據(jù)庫語言,有關(guān)系代數(shù)、關(guān)系演算、SQL語言、QBE等;研制了大量的RDBMS的原型,實現(xiàn)了查詢優(yōu)化、并發(fā)控制、故障恢復(fù)等關(guān)鍵技術(shù);基礎(chǔ)知識回顧數(shù)據(jù)庫發(fā)展69基礎(chǔ)知識回顧數(shù)據(jù)庫發(fā)展第三代以面向?qū)ο髷?shù)據(jù)模型為主要特征的數(shù)據(jù)庫系統(tǒng)。模型更加豐富、數(shù)據(jù)管理功能功能更加強大、能支持傳統(tǒng)數(shù)據(jù)庫難以支持的新的應(yīng)用。特征:支持數(shù)據(jù)管理、對象管理和知識管理;保持或者繼承第二代數(shù)據(jù)庫的技術(shù);對其他系統(tǒng)開放(支持數(shù)據(jù)庫語言標(biāo)準(zhǔn)和標(biāo)準(zhǔn)網(wǎng)絡(luò)協(xié)議)。僅支持面向?qū)ο髷?shù)據(jù)模型并不能稱為第三代數(shù)據(jù)庫系統(tǒng)?;A(chǔ)知識回顧數(shù)據(jù)庫發(fā)展70基礎(chǔ)知識回顧關(guān)系數(shù)據(jù)庫系統(tǒng)關(guān)系數(shù)據(jù)庫系統(tǒng)。產(chǎn)品的發(fā)展情況:(1)對關(guān)系模型的支持:第一階段(70年代):僅支持關(guān)系數(shù)據(jù)結(jié)構(gòu)、基本的關(guān)系操作(選擇、投影、連接)。如:dBASE第二階段(80年代):SQL成為關(guān)系數(shù)據(jù)庫語言的國際標(biāo)準(zhǔn)第三階段(90年代):加強了完整性、安全性的支持。(2)運行環(huán)境:第一階段:在大、中、小型機上的RDBMS,多用戶系統(tǒng)第二階段:提高可移植性,能在多種硬件平臺、和操作系統(tǒng)環(huán)境下運行;聯(lián)網(wǎng),向分布式發(fā)展,支持多種協(xié)議。第三階段:分布式數(shù)據(jù)庫和客戶/服務(wù)器結(jié)構(gòu)的數(shù)據(jù)庫系統(tǒng)的推出。追求開放性(可移植性、可連接性、可伸縮性)?;A(chǔ)知識回顧關(guān)系數(shù)據(jù)庫系統(tǒng)71基礎(chǔ)知識回顧關(guān)系數(shù)據(jù)庫系統(tǒng)關(guān)系數(shù)據(jù)庫系統(tǒng)。產(chǎn)品的發(fā)展情況:(3)RDBMS系統(tǒng)構(gòu)成:第一階段:早期的RDBMS產(chǎn)品主要提供數(shù)據(jù)定義、數(shù)據(jù)存取、數(shù)據(jù)控制等基本操作和數(shù)據(jù)存儲組織、并發(fā)控制、安全性、完整性檢查、系統(tǒng)恢復(fù)等RDBMS的核心功能。第二階段:以RDBMS基本功能為核心,開發(fā)外圍軟件系統(tǒng),如:FORM報表生成系統(tǒng),REPORT報表系統(tǒng)、MENU菜單生成系統(tǒng)、GRAPHIC圖形軟件等等。為用戶提供了良好的第四代應(yīng)用開發(fā)環(huán)境。(4)對應(yīng)用的支持:第一階段:用于信息管理、輔助決策等應(yīng)用領(lǐng)域。第二階段:聯(lián)機事務(wù)處理的應(yīng)用領(lǐng)域,提高RDBMS事務(wù)處理的能力。第三階段:由集中到分布,由局部到整個企業(yè)甚至整個行業(yè)。支持整個企業(yè)的聯(lián)機事務(wù)處理?;A(chǔ)知識回顧關(guān)系數(shù)據(jù)庫系統(tǒng)72關(guān)系模型概述為什么要學(xué)習(xí)關(guān)系模型?關(guān)系模型是目前廣泛使用的一種數(shù)據(jù)模型IBMDB2,MiscrosoftSQLServer,Informix,Oracle,Sybase,…………….僅有少量的遺產(chǎn)系統(tǒng)使用舊的數(shù)據(jù)模型IBM的IMS目前仍在使用目前關(guān)系模型的競爭者:面向?qū)ο蟮臄?shù)據(jù)模型Objectstore,Versant,Ontos,……….對象關(guān)系模型:InformixUniversalServer,UniSQL,O2,ORACLE,DB2,………...關(guān)系模型概述為什么要學(xué)習(xí)關(guān)系模型?73關(guān)系模型概述關(guān)系數(shù)據(jù)模型是由E.F.Codd于1970年提出在此之前大多數(shù)數(shù)據(jù)庫系統(tǒng)是基于層次數(shù)據(jù)模型和網(wǎng)狀數(shù)據(jù)模型的關(guān)系模型給數(shù)據(jù)庫領(lǐng)域帶來了一場革命,并取代了舊的數(shù)據(jù)模型,E.F.Codd并因此于1983年獲得TuringAwards在70年代中期,IBM和UC-Berkeley開發(fā)了早期的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)關(guān)系模型概述關(guān)系數(shù)據(jù)模型是由E.F.Codd于1970年提出74關(guān)系模型概述現(xiàn)在的關(guān)系型數(shù)據(jù)庫系統(tǒng)有IBM的DB2InformixOracleSybaseMicrosoft的Access,SQLServerFox-xParadox關(guān)系模型概述現(xiàn)在的關(guān)系型數(shù)據(jù)庫系統(tǒng)有75關(guān)系模型概述關(guān)系模型是十分簡單的關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)非常單一,實體、聯(lián)系都表示成關(guān)系一個關(guān)系是一個具有行和列的二維表關(guān)系模型給出關(guān)系操作的能力,但不對RDBMS語言給出具體的語法要求查詢操作:選擇、投影、連接、除、并、交、差等更新操作:增加、刪除和修改一次一集合關(guān)系代數(shù)和關(guān)系演算高度非過程化關(guān)系模型概述關(guān)系模型是十分簡單的76關(guān)系模型概述關(guān)系模型的三類完整性約束系統(tǒng)支持:實體完整性和參照完整性用戶定義:用戶定義的完整性本章主要討論以下問題關(guān)系模型是如何表示數(shù)據(jù)的關(guān)系模型可以表示何種完整性約束數(shù)據(jù)是如何被查詢的如何將由ER模型表示數(shù)據(jù)庫概念模式轉(zhuǎn)換為關(guān)系模式(模式)的視圖(外模式)問題關(guān)系模型概述關(guān)系模型的三類完整性約束77關(guān)系模型基本概念關(guān)系域:一組具有相同數(shù)據(jù)類型值的集合笛卡爾積:給定一組域D1,D2,…,Dn,它們的笛卡爾積為:D1XD2X…Dn={(d1,d2,…,dn)|di∈Di,i=1,2,…n)元組:每一個元素(d1,d2,…,dn)叫做一個n元組,或元組分量:元素中的每一個值di叫做一個分量基數(shù):若Di為有限集,其基數(shù)為mi,則D1XD2X…Dn的基數(shù)為:關(guān)系模型基本概念關(guān)系78關(guān)系模型基本概念例如:給定三個域D1=MAN={王兵,李平,張英},D2=WOMAN={丁梅,吳芳}D3=CHILD={王一,李一,李二}D1XD2XD3={(王兵,丁梅,王一),(王兵,丁梅,李一),(王兵,丁梅,李二),(王兵,吳芳,王一),(王兵,吳芳,李一),…}笛卡爾積可以表示為一個二維表,表中的每一行對應(yīng)一個元組,每一列對應(yīng)一個域關(guān)系模型基本概念例如:給定三個域D1=MAN={王兵,李平,79關(guān)系模型基本概念MANWOMANCHILD王兵丁梅王一王兵丁梅李一王兵丁梅李二王兵吳芳王一王兵吳芳李一王兵吳芳李二李平丁梅王一李平丁梅李一李平丁梅李二李平吳芳王一李平吳芳李一李平吳芳李二MANWOMANCHILD張英丁梅王一張英丁梅李一張英丁梅李二張英吳芳王一張英吳芳李一張英吳芳李二續(xù)左表關(guān)系模型基本概念MANWOMANCHIL80關(guān)系模型基本概念關(guān)系:D1XD2X…Dn的子集叫做在域D1,D2,…,Dn上的關(guān)系表示為R(D1,D2,…,Dn)關(guān)系的目或度:n單元關(guān)系:n=1二元關(guān)系:n=2關(guān)系是一個二維表(子集)例如:假設(shè)王兵的妻子是丁梅,他們的孩子是王一,李平的妻子是吳芳,他們的孩子是李一和李二,則取笛卡爾積的一個子集構(gòu)造一個關(guān)系FAMILY關(guān)系模型基本概念關(guān)系:D1XD2X…Dn的子集叫做在域D181關(guān)系模型基本概念在R(D1,D2,…,Dn)表示中,域可以重名,給每列一個名字,稱為屬性,關(guān)系表示為:R(A1,A2,…,An)例如:FAMILY(FATHER,MOTHER,CHILD)MANWOMANCHILD王兵丁梅王一李平吳芳李一李平吳芳李二FAMILY關(guān)系模型基本概念在R(D1,D2,…,Dn)表示中,域82關(guān)系模型基本概念候選碼:能夠唯一標(biāo)識一個元組的最小屬性組主碼:主屬性:候選碼中的屬性非碼屬性:不包含在任何候選碼中的屬性關(guān)系的性質(zhì):關(guān)系模型要求在一個關(guān)系中不能存在完全相同的元組(但實際商用關(guān)系數(shù)據(jù)庫系統(tǒng)支持重復(fù)元組)關(guān)系中元組行的序并不重要關(guān)系中列的序并不重要(但有些系統(tǒng)例外)關(guān)系模型基本概念候選碼:能夠唯一標(biāo)識一個元組的最小屬性組83關(guān)系模型基本概念分量必須取原子值不同的列可以出自同一個域給定域:person={王兵,李平,張英,丁梅,吳芳}child={王義,李一,李二}MANWOMANCHILDfirstsecond王兵丁梅王一李平吳芳李一李二FAMILYbad關(guān)系模型基本概念分量必須取原子值MANWOMAN84關(guān)系模型基本概念構(gòu)造FAMILY關(guān)系,仍然取personXpersonXchild的子集,表示為:FAMILY(FATHER,MOTHER,CHILD)此處dom(FATHER)=dom(MOTHER)=person關(guān)系模式:關(guān)系的描述形式化表示:R(U,D,dom,F),簡記為R(U)或R(A1,A2,…,An)屬性向域的映象常常說明為屬性的類型和長度關(guān)系模式是型,關(guān)系是值關(guān)系模型基本概念構(gòu)造FAMILY關(guān)系,仍然取personX85關(guān)系模型基本概念在關(guān)系模型中,實體和聯(lián)系都是用關(guān)系表示的例如:左圖

學(xué)生(學(xué)號,姓名,性別,專業(yè),年齡)

課程(課程號,課程名,學(xué)時,學(xué)分)選修(學(xué)號,課程號,成績)一個關(guān)系數(shù)據(jù)庫是一組關(guān)系的集合;關(guān)系數(shù)據(jù)庫模式則是該數(shù)據(jù)庫所有關(guān)系模式的集合學(xué)生課程選修mn關(guān)系模型基本概念在關(guān)系模型中,實體和聯(lián)系都是用關(guān)系表示的學(xué)生86關(guān)系模型--關(guān)系的完整性關(guān)系模型的完整性是對關(guān)系的某種約束實體完整性:主碼中的屬性不可取空值(例子)參照完整性:例子:對于關(guān)系模式學(xué)生(學(xué)號,姓名,性別,專業(yè),年齡)

課程(課程號,課程名,學(xué)時,學(xué)分)選修(學(xué)號,課程號,成績)外碼:設(shè)F是關(guān)系R的一個或一組屬性,但不是關(guān)系R的碼,如果F與關(guān)系S的主碼Ks相對應(yīng),則稱F為關(guān)系R的外碼關(guān)系模型--關(guān)系的完整性關(guān)系模型的完整性是對關(guān)系的某種約束87關(guān)系模型--關(guān)系的完整性參照關(guān)系R,被參照關(guān)系S參照完整性:F的取值必須為:或者取空值或者等于S中某個元組的主碼值例如:部門(部門號,部門名,電話)

雇員(雇員號,雇員名,職稱,部門號)雇員中部門號的取值部門雇員擁有1n關(guān)系模型--關(guān)系的完整性參照關(guān)系R,被參照關(guān)系S部門雇員擁有88關(guān)系模型--關(guān)系的完整性用戶定義的完整性:任何關(guān)系數(shù)據(jù)庫系統(tǒng)都應(yīng)支持實體完整性和參照完整性用戶定義的完整性定義某一具體應(yīng)用中所涉及的數(shù)據(jù)必須滿足的語義要求,例如年齡的取值關(guān)系數(shù)據(jù)庫系統(tǒng)提供定義和檢驗這類完整性機制關(guān)系模型--關(guān)系的完整性用戶定義的完整性:89關(guān)系模型--關(guān)系代數(shù)關(guān)系代數(shù)運算分為:傳統(tǒng)的集合運算和專門的關(guān)系運算集合運算前提:關(guān)系R和關(guān)系S具有相同的目,相應(yīng)的屬性取自同一個域并:關(guān)系R和關(guān)系S的并記作:RS(下頁)差:關(guān)系R和關(guān)系S的差記作:R-S交:關(guān)系R和關(guān)系S的交記作:RS關(guān)系模型--關(guān)系代數(shù)關(guān)系代數(shù)運算分為:傳統(tǒng)的集合運算和專門的90關(guān)系模型--關(guān)系代數(shù)ABCABCABCa1b1c1a1b2c2a1b1c1a1b2c2a1b3c2a1b2c2a2b2c1a2b2c1a2b2c1a1b3c2ABCABCa1b2c2a1b1c1a2b2c1RSRSRSR-S關(guān)系模型--關(guān)系代數(shù)ABC91關(guān)系模型--關(guān)系代數(shù)R×SABCABCABCa1b1c1a1b1c1a1b2c2a1b2c2a1b1c1a1b3c2a2b2c1a1b1c1a2b2c1a1b2c2a1b2c2ABCa1b2c2a1b3c2a1b2c2a1b2c2a2b2c1a1b3c2a2b2c1a1b2c2a2b2c1a2b2c1a1b3c2a2b2c1a2b2c1RS關(guān)系模型--關(guān)系代數(shù)R×SABC92關(guān)系模型--關(guān)系代數(shù)廣義笛卡爾積:兩個分別為n和m目的關(guān)系R和S的廣義笛卡爾積是一個n+m列的元組的集合。若R有k1個元組,S有k2個元組,則廣義笛卡爾積有k1×k2個元組記作:R×S關(guān)系模型--關(guān)系代數(shù)廣義笛卡爾積:兩個分別為n和m目的關(guān)系R93關(guān)系的建立和修改--SQL-92SQL語言的簡單發(fā)展歷史SQL語言是由IBM公司在SystemR系統(tǒng)中首先提出SQL在1986年被ANSI采納為標(biāo)準(zhǔn),稱為SQL-86在1989又對SQL標(biāo)準(zhǔn)進行了少量修改,稱為SQL-89在1992年ANSI和ISO對SQL標(biāo)準(zhǔn)進行主要修改,稱之為SQL-92在1999年又對SQL-92進行大量修改(面向?qū)ο蟮奶攸c),稱之為SQL-3,有時也稱為SQL-99關(guān)系的建立和修改--SQL-92SQL語言的簡單發(fā)展歷史94關(guān)系的建立和修改關(guān)系表建立CREATETABLEStudents(sidCHAR(20),nameCHAR(30),loginCHAR(20),ageINTEGER,gpaREAL)關(guān)系表刪除DROPTABLEStudents關(guān)系表修改ALTERTABLEStudentsADDCOLUMNmaiden-nameCHAR(10)關(guān)系的建立和修改關(guān)系表建立95關(guān)鍵字約束--實現(xiàn)實體完整性通過UNIQUE子句來定義候選碼(候選關(guān)鍵字)通過PRIMARYKEY子句來定義主碼(主關(guān)鍵字)CREATETABLEStudents(sidCHAR(20),nameCHAR(30),loginCHAR(20),ageINTEGER,gpaREAL,UNIQUE(name,age),UNIQUE(login),PRIMARYKEY(sid))關(guān)鍵字約束--實現(xiàn)實體完整性通過UNIQUE子句來定義候選碼96外鍵約束--實現(xiàn)參照完整性外鍵約束指的是兩個關(guān)系之間的關(guān)鍵字約束關(guān)系,考慮下列關(guān)系Students(sid,name,login,age,gpa)Enrolled(sid,cid,grade)從語義上來講,在關(guān)系Enrolled中出現(xiàn)的sid值,在關(guān)系Students中必須存在,Enrolled中的sid稱為外鍵,引用關(guān)系Students中的主關(guān)鍵字sid外鍵必須與被引用關(guān)系中的主關(guān)鍵字相匹配可以有不同的名字列數(shù)要相同,且要具有兼容的數(shù)據(jù)類型外鍵約束--實現(xiàn)參照完整性外鍵約束指的是兩個關(guān)系之間的關(guān)鍵字97外鍵約束----示例外鍵約束----示例98外鍵約束的語義在被參照關(guān)系中關(guān)鍵字的值在參照關(guān)系中不一定出現(xiàn)但在參照關(guān)系中出現(xiàn)的關(guān)鍵字值在被參照關(guān)系中必須要出現(xiàn)如果我們向關(guān)系Enrolled中插入元組<55555,Art104,A>,這個操作將被拒絕因為違反了外鍵約束外鍵約束的語義在被參照關(guān)系中關(guān)鍵字的值在參照關(guān)系中不一定出現(xiàn)99外鍵約束的語義對于操作:將關(guān)系Students中的<53666,Jones,joines@cs,18,3.4>刪除,有兩種處理禁止這種刪除操作同時刪除參照關(guān)系中的相關(guān)元組值得注意的是外鍵可能來自于同一關(guān)系,也就是被參照關(guān)系就是參照關(guān)系Students(sid,name,login,age,gpa,partner),partner是對sid的一個外鍵約束Courses(cid,name,desc,preq),preq是對cid的一個外鍵約束當(dāng)一門課程沒有前期課程時,preq可以為空,空值并不違反外鍵約束外鍵約束的語義對于操作:將關(guān)系Students中的<5366100外鍵約束的定義---SQL-92外鍵約束的定義---SQL-92101邏輯數(shù)據(jù)庫設(shè)計:ER到關(guān)系的轉(zhuǎn)換實體集到表的轉(zhuǎn)換實體集中的屬性映射為表中的屬性實體集中的(主)關(guān)鍵字映射為關(guān)系中的(主)關(guān)鍵字實體集中屬性的域映射為關(guān)系中屬性的域邏輯數(shù)據(jù)庫設(shè)計:ER到關(guān)系的轉(zhuǎn)換實體集到表的轉(zhuǎn)換102實體集到表的轉(zhuǎn)換--示例實體集到表的轉(zhuǎn)換--示例103多對多聯(lián)系集到表的轉(zhuǎn)換多對多聯(lián)系被映射為一個關(guān)系表,包括屬性:每個參加聯(lián)系的實體集的主關(guān)鍵字屬性,作為外鍵存在所有外鍵構(gòu)成該實體集的主關(guān)鍵字聯(lián)系集本身的屬性--一般屬性多對多聯(lián)系集到表的轉(zhuǎn)換多對多聯(lián)系被映射為一個關(guān)系表,包括屬性104多對多聯(lián)系集到表的轉(zhuǎn)換--例1mn多對多聯(lián)系集到表的轉(zhuǎn)換--例1mn105多對多聯(lián)系集到表的轉(zhuǎn)換--例1多對多聯(lián)系集到表的轉(zhuǎn)換--例1106多對多聯(lián)系集到表的轉(zhuǎn)換--例2mnp多對多聯(lián)系集到表的轉(zhuǎn)換--例2mnp107多對多聯(lián)系集到表的轉(zhuǎn)換--例2CREATETABLEWork3-In(ssnCHAR(11),didinteger,fromdate,todate,PRIMARYKEY(ssn,did,from,to)FOREIGKEY(ssn)REFERENCESEmployees,ONDELETENOACTION,FOREIGKEY(did)REFERENCESDepartments,FOREIGNKEY(from)REFERENCEDURATION,FOREIGNKEY(to)REFERENCEDURATION)多對多聯(lián)系集到表的轉(zhuǎn)換--例2CREATETABLEWo108一對多聯(lián)系集的翻譯1n一對多聯(lián)系集的翻譯1n109一對多聯(lián)系集的翻譯----方法一將一對多聯(lián)系翻譯為一個獨立的表一對多聯(lián)系集的翻譯----方法一將一對多聯(lián)系翻譯為一個獨立110一對多聯(lián)系集的翻譯----方法二將Manages和Departments翻譯為一個關(guān)系一對多聯(lián)系集的翻譯----方法二將Manages和Depa111關(guān)于聯(lián)系集到關(guān)系映射的思考題在一對多聯(lián)系中,Manages和Departments為什么可以合并為一個關(guān)系?對于一對多聯(lián)系翻譯的兩種方法的優(yōu)缺點是什么?對于一個多對多聯(lián)系集為什么必須映射為一個獨立的關(guān)系表?一對一聯(lián)系應(yīng)如何翻譯?關(guān)于聯(lián)系集到關(guān)系映射的思考題在一對多聯(lián)系中,Manages和112思考題部分答案方法一和方法二的優(yōu)缺點方法一多產(chǎn)生一個關(guān)系對于有些查詢,方法一需要兩次連接,而方法二只需要一次連接即可方法二的缺點是浪費空間,如果有些部門沒有經(jīng)理的話思考題部分答案方法一和方法二的優(yōu)缺點113具有參加約束的聯(lián)系集的翻譯1nnm具有參加約束的聯(lián)系集的翻譯1nnm114具有參加約束的1:n(1:1)聯(lián)系集的翻譯具有參加約束的1:n(1:1)聯(lián)系集的翻譯115具有參加約束的聯(lián)系集的翻譯ssn的非空定義反映了參加約束使用上面的第一種方法也可以表示Manages和Departments,但使用方法二比方法一好,(why?因為方法二浪費空間的缺點已不復(fù)存在)具有參加約束的聯(lián)系集的翻譯ssn的非空定義反映了參加約束116弱實體集的翻譯一個弱實體總是參加一個二元一對多聯(lián)系(?)全參加約束1m弱實體集的翻譯一個弱實體總是參加一個二元一對多聯(lián)系(?)1m117弱實體集的翻譯使用具有1:n聯(lián)系的第二種翻譯方法(Why?),但必須考

溫馨提示

  • 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. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論