數(shù)據(jù)庫應用與開發(fā)課件第2章_第1頁
數(shù)據(jù)庫應用與開發(fā)課件第2章_第2頁
數(shù)據(jù)庫應用與開發(fā)課件第2章_第3頁
數(shù)據(jù)庫應用與開發(fā)課件第2章_第4頁
數(shù)據(jù)庫應用與開發(fā)課件第2章_第5頁
已閱讀5頁,還剩67頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第2章關系數(shù)據(jù)庫數(shù)學模型

主要內(nèi)容2.1關系數(shù)據(jù)模型2.2EER模型到關系模式的轉換2.3關系代數(shù)2.4關系演算*

學習目標了解關系數(shù)據(jù)庫模型掌握EER模型到關系模式的轉換了解關系代數(shù)的概念熟練掌握關系演算

導入案例

關系模型是當前數(shù)據(jù)庫廠商最廣泛采用的數(shù)據(jù)庫系統(tǒng)模型,是相對高效和安全的。層次模型和網(wǎng)狀模型都有各自的缺點。關系模型采取二維表來表示一切實體及其關系,二維表是一個關系集合,以代數(shù)的關系運算為理論基礎,二維表上的數(shù)據(jù)操作及完整性約束都可以使用關系代數(shù)上的關系運算來描述和推理,是更加科學的,由此也保證了關系數(shù)據(jù)庫的安全、高效、更易推廣普及。相對應的關系代數(shù)運算還可以更加細致的用以離散數(shù)學為理論基礎的關系演算來描述,演算語言更加接近于自然語言。接近英語母語的數(shù)據(jù)庫語言SQL的設計與實現(xiàn)是在兩種語言的基礎上誕生的。本章首先介紹關系數(shù)據(jù)模型及用來描述它的數(shù)學概念,之后的EER模型轉化為關系模式介紹了概念模型向關系模式轉化的方法,重點介紹了關系代數(shù)語言,對關系演算語言進行了簡單介紹。

2.1關系數(shù)據(jù)模型關系數(shù)據(jù)模型概述關系數(shù)據(jù)結構及形式化定義關系完整性

2.1.1關系數(shù)據(jù)模型概述關系數(shù)據(jù)庫系統(tǒng)是支持關系模型的數(shù)據(jù)庫系統(tǒng)。關系數(shù)據(jù)模型(RDBMS)包含三要素:關系數(shù)據(jù)結構、關系操作集合、關系完整性約束。關系數(shù)據(jù)結構:是單一的數(shù)據(jù)結構—關系。關系是二維表(行列),實體及其聯(lián)系都用關系表示。在用戶看來關系數(shù)據(jù)的邏輯模型就是一張二維表。

關系操作包括:查詢:選擇Select;投影Project;連接Join; 除Divide;并Union;交Intersection;差Difference;編輯:增加Insert;刪除Delete;修改Update;關系數(shù)據(jù)模型概述(續(xù))

關系數(shù)據(jù)模型概述(續(xù))描述關系操作的語言有關系代數(shù)語言和關系演算語言。

關系數(shù)據(jù)模型概述(續(xù))完整性約束包括:實體、參照 、DBMS保證、用戶自定義。特點是集合方式(操作對象和結果都是關系——元組的集合——關系),而非關系完整性約束特點是以記錄為操作單位。

2.1.2關系數(shù)據(jù)結構及形式化定義

概念1.域(Domain):一組具有相同數(shù)據(jù)類型的值的集合。例:自然數(shù),實數(shù),英文字母。

關系數(shù)據(jù)結構及形式化定義(續(xù))概念2.笛卡爾積(CartesianProduct):給定一組域D1,D2,…,Dn,這些域中可以有相同的。則D1,D2,…,Dn的笛卡爾積為:

D1xD2x…xDn={(d1,d2,…,dn)|di∈Di,i=1,2,…,n}(d1,d2,…,dn)--------n元組(n-tuple);di--------元組的每一分量(Component);Di為有限集時,其基數(shù)為mi,則卡積的基數(shù)為M=m1*m2*…*mn。

關系數(shù)據(jù)結構及形式化定義(續(xù))【例2.1】:若 A={a,b},B={1,2,3}

則AxB={(a,1),(a,2),(a,3),(b,1),(b,2),(b,3)}??ǚeD1xD2x…xDn={(d1,d2,…,dn)|di∈Di,i=1,2,…,n}

特性說明:1)從每一集合中抽一個元素做組合;(有序)2)卡積沒有交換率;3)亦可看成是一個二維表;基數(shù),二維表的行數(shù),集合元素的個數(shù)。

關系數(shù)據(jù)結構及形式化定義(續(xù))概念3.關系:D1xD2x…xDn的子集叫做在域D1,D2,..Dn上的關系。表示為:R(D1,D2,…,Dn),其中,R為關系名;n為關系的度或目。關系中的每個元素是關系中的元組,通常用t表示。n=1,單元關系(unaryrelation);n=2,二元關系(Binaryrelation)。

關系數(shù)據(jù)結構及形式化定義(續(xù))關系為卡積的有限子集,也為二維表,行對應元組,列對應于域。不同的列用不同的名字來區(qū)分,稱為屬性。n目關系有n個屬性。例如: R1={(a,1),(b,2)}, R2={(a,1),(a,2),(b,1),(b,3)}。關系是元組的集合,是笛卡爾積的子集。一般來說,一個關系只取笛卡爾積的子集才具有意義。此外,還要對關系的要求進行規(guī)范,將沒有實際意義的元組排除。

關系數(shù)據(jù)結構及形式化定義(續(xù))概念4.候選瑪(Candidatekey):可唯一標識每一元組的屬性(組)。概念5.主碼(Primarykey):候選碼中選擇其一稱為主碼。相應屬性組為主屬性。概念6.非碼屬性(Non-keyattribute):不包含在任何候選碼中的屬性。概念7.全碼(All-Key):用所有屬性來唯一標識表中元組時的候選碼。

關系性質(zhì)1)關系必須是有限集;2)卡積無交換率,通過給屬性命名取消元組分量的有序性;

a.列同質(zhì)(homogeneous)----分量同類型;

b.不同列可出自同一域;

c.列的順序無所謂

d.任意兩個元組不能完全相同;

e.行的順序無所謂;

f.分量必須取原子值。

關系數(shù)據(jù)結構及形式化定義(續(xù))概念8.關系模式(Relationschema):是對關系的描述,關系是元組的集合(屬性、域及其映象關系);元組語義(使n目謂詞<屬性>為真的卡積中的元素的全體)。形式化定義:R(U,D,dom,F),5元組包括:R,關系名;U,組成關系的屬性名的集合;D,為屬性組U中屬性的域;Dom,為屬性向域的映象集合;F,為屬性間數(shù)據(jù)的依賴關系集合。通常簡記為:R(U)或R(A1,A2,…,An)。其中A1,A2,…An為屬性名。D及Dom則直接說明為屬性的類型和長度。

關系數(shù)據(jù)結構及形式化定義(續(xù))關系與關系模式的關系:關系模式是關系的型,關系是值,二者有時混用,但可從上下文進行區(qū)分。關系是關系模式在某一個時刻的狀態(tài)或內(nèi)容。關系模式是靜態(tài)的、穩(wěn)定的,而關系是動態(tài)的、隨時間不斷變化的,因為關系操作在不斷地更新著數(shù)據(jù)庫中的數(shù)據(jù)。實際當中,常把關系模式和關系都稱為關系。

2.1.3關系完整性關系的完整性約束條件包括:實體完整性、參照完整性、用戶自定義完整性。

實體完整性實體完整性(EntityIntegrity):若屬性A是基本關系R的主屬性,則屬性A不能為空值;如學生關系中的“學號”屬性。

參照完整性外碼(Foreignkey):設F是關系R的非碼屬性(組)。如果F與關系S的主碼K相對應(定義在同一個(組)域上),則稱F是關系R的外碼。其中,關系R稱為:參照關系(ReferencingRelation),S為被參照關系(或目標關系)(ReferencedRelation)。規(guī)則:定義外碼與主碼之間的引用規(guī)則,即外碼F取值:可以是空NULL;必須是目標關系中存在的值;表內(nèi)屬性間的參照也要有存在的值。

用戶自定義完整性用戶自定義完整性(User-definedIntegrity):反應某一具體應用所涉及的數(shù)據(jù)必須滿足的語意要求。例:性別(男,女),年齡(15-25)。

【例2.2】:有以下關系:學生(學號,姓名,年齡,性別,專業(yè)號),專業(yè)(專業(yè)號,專業(yè)名),課程(課程號,課程名,學分),選修(學號,課程號,成績),找出關系完整性。劃下劃線的為主屬性(組)。實體完整性規(guī)定基本關系的所有主屬性不能取空值。參照完整性規(guī)定基本關系的外碼取值。如上述學生關系的“專業(yè)號”屬性與專業(yè)關系的主碼“專業(yè)號”對應,因此“專業(yè)號”屬性是學生關系的外碼。它的取值規(guī)定如下:(1)空值:表示尚未給該學生分配專業(yè);(2)非空值 必須是目標關系-專業(yè)關系中某個元組的“專業(yè)號”值。此外,用戶還須注意,外碼并不一定與目標關系的主碼同名;參照關系與目標關系可以是同一個關系。如學生關系(學號,姓名,性別,年齡,班長)中,“班長”屬性的取值情況。

2.2EER模型到關系模式的轉換

實體類型的轉換一對多的二元關系的轉換多對多的二元關系的轉換實體內(nèi)部之間聯(lián)系的轉換三元關系的轉換

2.2.1實體類型的轉換每種實體型可由一個關系模式來表示。實體類型的屬性為關系的屬性;實體類型的主鍵作為關系的主鍵。eg:學生(學號,姓名,性別,出生年月,入學時間,系)

2.2.2一對多的二元關系的轉換分析一個1:n 的二元關系強制性成員:如果一種聯(lián)系表示實體類型的各種實例必須具有這種聯(lián)系,則說明該實體的成員類在這種聯(lián)系下是強制性的。圖中1:n的“管理”聯(lián)系表示了一個經(jīng)理管理許多職工。如果規(guī)定每個職工必須有一個管理者,則“職工”中的成員類在聯(lián)系“管理”中是強制性的。非強制性成員:圖中1:n的“管理”聯(lián)系中,如果允許存在不用管理者的職工,則“職工”中的成員類在聯(lián)系“管理”中是非強制性的。

一對多的二元關系的轉換(續(xù))對于強制性成員類:如果一個實體是某個聯(lián)系的強制性成員,則在二元關系轉化為關系模式的實現(xiàn)方案中要增加一條完整性約束。具體操作為:如果實體類型E2在實體類型E1的n:1聯(lián)系中是強制性成員,則的E2關系模式中要包含E1的主屬性。eg:規(guī)定每一項工程必須有一個部門管理,則實體類型Project是聯(lián)系”Runs”的強制性成員,因而在Project的關系模式中包含部門Department的主屬性。即:Project(P#,DName,Title,Start_Date,End_Date,……)這里DName既是關系Department的主屬性,又是關系Project的外鍵。

一對多的二元關系的轉換(續(xù))對于非強制性成員類:如果一個實體是某個聯(lián)系的非強制性成員,則通常新建一個分離關系來表示這種聯(lián)系和屬性。具體操作為:如果實體類型E2在與實體類型E1的n:1聯(lián)系中是一個非強制性的成員,引入一個分離模式來表示聯(lián)系和屬性。分離的關系模式包含E1和E2的主屬性。

一對多的二元關系的轉換(續(xù))eg:圖書館數(shù)據(jù)庫的E-R模型中,有兩個實體類型借書者(Borrower)和書(Book)之間的聯(lián)系如圖借書者和書的E-R關系圖

一對多的二元關系的轉換(續(xù))分析1:可以轉換為以下兩個模式:

Borrower(B#,Name,Address,……) Book(ISBN,B#,Title,……)關系Book中的外鍵B#表明借書者的信息,但圖書館的書很多,可能有許多書沒有借出,則B#的值為空。此時,對于不能處理空值的DBMS,會出現(xiàn)問題!

一對多的二元關系的轉換(續(xù))分析2:為此,本例中引入一個分離關系On_Load(借出的書),可以避免空值的出現(xiàn)。這樣,存在以下三個關系模式:

Borrower(B#,Name,Address,……) Book(ISBN,Title,……) On_Load(ISBN,B#,Date1,Date2)只有借出的書才會出現(xiàn)在關系On_Load中,避免空值的出現(xiàn),并把屬性Date1和Date2加到關系On_Load中。

2.2.3多對多的二元關系的轉換多對多的二元關系:m:n的二元關系通常要引入一個分離關系來表示兩個實體類型之間的聯(lián)系,該關系由兩個實體類型的主屬性及其聯(lián)系屬性組成。如學生與課程的m:n聯(lián)系及學生選課的關系轉換。

多對多的二元關系的轉換(續(xù))

多對多的二元關系的轉換(續(xù))學生和課程兩個實體可以轉換為以下兩個關系模式:Student(Stu#,Name,Dep,……)Cource(Cou#,CName,PreCou#,Tea,……)

多對多的二元關系的轉換(續(xù))可以有多個學生選修一門課程,一個學生也要選修多門課程,二者之間不存在唯一的強制關系。分離出一個關系模式On_Choose(選課),這樣存在以下三個關系模式:Student(Stu#,Name,Dep,……)Cource(Cou#,CName,PreCou#,Tea,……)On_Choose(Stu#,Cou#,Score)

2.2.4實體內(nèi)部之間聯(lián)系的轉換當實體本身是一個系統(tǒng)的時候,實體內(nèi)部之間也是存在聯(lián)系的。擁有這樣實體的系統(tǒng),一般情況下,將其轉化為EER模型。實體內(nèi)部之間的聯(lián)系也分為1:1,1:n和m:n三種。

實體內(nèi)部之間聯(lián)系的轉換(續(xù))實體內(nèi)部之間1:1的聯(lián)系:如非強制性的婚姻關系,可引入一個分離關系。

實體內(nèi)部之間聯(lián)系的轉換(續(xù))因此婚姻狀況可以分離為男方、女方以及結婚這三個關系模式:Man(MC#,Name,Age,FatherC#,MatherC#……)Womon(WC#,Name,Age,FatherC#,MatherC#……)Marry(C#,MC#,WC#,……)

實體內(nèi)部之間聯(lián)系的轉換(續(xù))實體內(nèi)部之間1:n的聯(lián)系:如部門實體中職工與管理人員的聯(lián)系。分強制與非強制聯(lián)系。這個基本與二元實體之間的1:n關系的轉換原則相同。實體內(nèi)部之間m:n的聯(lián)系:如某公司的圖書角部門,借閱者屬性和圖書屬性之間的關系。一般要引入分離關系。參考二元實體的m:n關系的轉換原則。

2.2.5三元關系的轉換三個實體及以上的關系,本質(zhì)上需要通過要引入多個分離關系將其轉化為兩兩實體的聯(lián)系。

三元關系的轉換(續(xù))eg:公司、產(chǎn)品和國家之間的m:n:p的三元關系及銷售聯(lián)系

三個實體關系圖

三元關系的轉換(續(xù))將公司、產(chǎn)品和國家系統(tǒng)轉化為關系模式為:公司實體、產(chǎn)品實體、國家實體、生產(chǎn)關系模式和銷售關系模式:Product(ProdoctC#,Name,Type,Function,……)Company(CompanyC#,Name,Adress,CountryC#,……)Country(CountryC#,Name,……)On_Production(ProductionC#,CompanyC#,ProdoctC#,Number,ProductDate,……)On_Sale(SaleC#,ProductC#,CountryC#,Numer,……)

2.3關系代數(shù)關系代數(shù)概述傳統(tǒng)的集合運算專門的關系運算

2.3.1關系代數(shù)概述關系代數(shù)的運算符集合運算符 并U交∩差-專門的關系運算符笛卡爾積×選擇σ投影π連接除算術比較符>≥<≤=≠邏輯運算符非?與^或v

關系代數(shù)概述(續(xù))關系代數(shù)的運算類型傳統(tǒng)的集合運算-關系看作元組的集合(行);專門的關系運算-同時涉及關系的行和列;比較運算和邏輯運算用于輔助專門的關系運算符進行操作。

2.3.2傳統(tǒng)的集合運算四類:并,交,差,廣義笛卡爾積;關系并、交、差的前提:關系R,S都為n目,且對應屬性域相同。并:RUS={t|t∈RVt∈S}

屬于R和S的元組構成的關系;(去掉重復)

差:R-S=

{t|t∈R^t∈S}

由屬于R但不屬于S的元組的構成的關系;

交:R∩S

={t|t∈R^t∈S}

由既屬于R亦屬于S的元組構成的關系;廣義笛卡爾積:R×S

={trts|tr∈R^ts∈S}

R的元組構成的集合與S的元組構成的集合進行笛卡爾積;

傳統(tǒng)的集合運算(續(xù))R:ABCa1b1c1a1b2c2a2b2c1S:ABCa1b2c2a1b3c2a2b2c1RUS

:ABC a1b1c1 a1b2c2 a2b2c1 a1b3c2R∩S

:ABC a1b2c2 a2b2c1R-S

:ABCa1b1c1R×S:ABCABCa1b1c1a1b2c2a1b1c1a1b3c2a1b1c1a2b2c1a1b2c2a1b2c2a1b2c2a1b3c2a1b2c2a2b2c1a2b2c1a1b2c2a2b2c1a1b3c2a2b2c1a2b2c1【例2.3】:有關系R和S,求R與的并、交、差和笛卡爾積。

2.3.3專門的關系運算四類:選擇,投影,連接,除;幾個特殊記號:(1)R(A1,A2,…An)關系模式;(2)t∈R:t是關系R的一個元組(3)t[A]:是元組t在屬性A上的分量(值)(4)R為n目,S為m目。tr∈R,ts∈S,trts稱為元組的連接。它是一個n+m列的元組,前n個分量為R中的一個n元組,后m個分量為S中的一個m元組。(5)象集(ImagesSet):

專門的關系運算(續(xù))5.象集(ImagesSet):給定關系R(X,Z),X和Z為屬性組。定義,當t[X]=x時,x在R中的象集為:Zx={t[Z]|t

∈R,t[X]=x}即:R中屬性X為x的元組的Z分量的集合

專門的關系運算(續(xù))

專門的關系運算(續(xù))

專門的關系運算(續(xù))連接(JoinJN):在兩個關系的笛卡爾積上選擇滿足條件的元組RS=σR.AθS.B(R×S)

是從關系R與S的笛卡兒積中,選取R的第i個屬性和S的第j個屬性值之間滿足一定條件的元組,這些元組構成的關系是R×S的一個子集。

此外連接還可以表示為:

(R)JNR.AθS.B(S)

或SLR.AθS.B(R×S) AθB

專門的關系運算(續(xù))這里,AθBA,B為度數(shù)相等到的屬性組;θ為比較運算符,例:A>B根據(jù)θ的不同,又分為:等值連接:A=B自然連接(NJN):AB為相同屬性組,且去除重復的屬性且等值。

專門的關系運算(續(xù))等值連接:RS={trts|tr∈R^ts∈S^tr[A]=ts[B]},其中A和B分別為R和S上度數(shù)相等且可比(同域值)的屬性組。A=B

專門的關系運算(續(xù))自然連接(NationalJoinNJN):用RS表示。RS={trts|tr∈R^ts∈S^tr[A]=ts[A]}集合表示;RS=πi1,i2,…ip(σR.A1=S.A1^R.A2=S.A1^…^R.AK=S.AK(R×S));其中A(A1,A2,…AK)是關系R和S的公共屬性集;如R為m目,S為n目,公共屬性有k個,則p=m+n-k。(去除重復)兩個關系必須含有公共屬性組A。意義:從笛卡爾積中選擇出公共屬性值相等的元組集合,構成一個新的關系。結果中把重復的屬性列(水平方向)去除。自然連接也可以用(R)NJN(S)表示。

【例2.6】:如圖2.7(a)、(b)所示的兩個關系R與S,(c)為R和S的大于連接(C>D),(d)為R和S的等值連接(C=D),(e)為R和S的等值連接(R.B=S.B),(f)為R和S的自然連接。

專門的關系運算(續(xù))左連接(LeftJoinLJN):“R左連接S”的結果關系是包括所有來自R的元組和那些連接字段相等處的S的元組。表示為:(R)LJN(S)。右連接(RightJoinRJN):“R右連接S”的結果關系是包括所有來自S的元組和那些連接字段相等處的R的元組。表示為:(R)RJN(S)。 其中關系R和S有相同的屬性集合(A1,A2,…,AK),R.A1=S.A1^R.A2=S.A2^…^R.AK=S.AK。

專門的關系運算(續(xù))R:ABCa1b15a1b26a2b38a2b412

S:BEb13b27b310b32b52RS:AR.BCS.BEa1b15b27a1b15b310a1b26b27a1b26b310a2b38b310C<ERS:AR.BCS.BEa1b15b13a1b26b27a2b38b310a2b38b32R.B=S.BRS:ABCEa1b153a1b267a2b3810a2b382RXS:AR.BCS.BEa1b15b13a1b15b27a1b15b310a1b15b32a1b15b52a1b26b13a1b26b27a1b26b310a1b26b32a1b26b52a2b38b13a2b38b27a2b38b310……

專門的關系運算(續(xù))除法(Division):設有關系R(X,Y)和S(Y,Z),其中X,Y,Z為屬性組。R中的Y與S中的Y可以名不同,但必須出自同一域集。R與S的除法運算表示為:W=R÷S。除法操作的結果產(chǎn)生一個新關系W。W是R中滿足下列條件的元組在X屬性列上的投影:元組在X上分量值x的象集Yx包含S在Y上投影的集合。記為W={tr[X]|tr∈R^πy(S)Yx},其中Yx為x在R中的象集,x=tr[X]。

【例2.7】:已知關系R,S,求R÷S。

專門的關系運算(續(xù))R:ABCa1b1c2a2b3c7a3b4c6a1b2c3a4b6c6a2b2c3a1b2c1S:BCDb1c2d1b2c1d1b2c3d2RS:Aa1關系R中,A取四個值{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的象集(B,C)a1包含了S在(B,C)屬性組上的投影,因此RS={a1}

2.4關系演算*關系演算是把數(shù)理邏輯

溫馨提示

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

評論

0/150

提交評論