




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第5章
關系數據庫方法本章導讀本章為次重點章,主要介紹了關系模型的關系運算理論、關系代數,使學生理解操作對象為數據表的運算,為后續數據查詢打下基礎,同時對課程綜合案例中的數據表進行運算,使學生進一步理解數據表的運算。5.1.1關系模型概述關系是一張二維表格。在關系數據庫系統中通過二維表格組織數據,表達信息。關系操作指存儲操作和檢索操作,且以檢索操作為核心。關系操作的數據對象是二維表格。關系模型給出了關系操作的能力和特點。關系操作包括:選擇、投影、條件連接、除、并、交、差等查詢操作、添加、刪除和修改操作。關系模型有三類完整性約束,分別是實體完整性、參照完整性和用戶定義的完整性。
5.1關系數據庫的基本概念5.1.2關系數據結構及形式化定義定義5.1:域(Domain)是值的集合,屬性的取值范圍。基數是域的取值個數。例如:域,姓名={李麗,馬俊萍,王永明,姚江},基數為4;域,系={管理信息系,汽車系,海運},基數為3;域,性別={男,女},基數為2;2.笛卡爾積定義5.2:給定一組域D1,D2,…,Dn,則D1×D2×…×Dn={(d1,d2,…,dn)|di∈Di,i=1,2,…,n}稱為D1,D2,…,Dn的笛卡爾積。其中每一個(d1,d2,…,dn)叫做一個n元組(表中的一行,稱為一個元組),元組中的每一個di是Di域中的一個值,稱為一個分量(元組中的屬性)。若Di(i=1,2,…,n)為有限集,其基數為mi(i=1,2,…,n),則D1×D2×…×Dn的基數為:m=m1×m2×…×mn(i=1,2,…,n);其中:m=笛卡爾積的基數。例:給定三個域:D1={李麗,馬俊萍},D2={管理信息系,汽車系},D3={男,女},則D1×D2×D3笛卡爾積是D1,D2,D3各域的各元素間的一切可能的組合。D1×D2×D3的基數為m,m=2×2×2=8。5.1.2關系數據結構及形式化定義姓名系性別李麗管理信息系男李麗管理信息系女李麗汽車系男李麗汽車系女馬俊萍管理信息系男馬俊萍管理信息系女馬俊萍汽車系男馬俊萍汽車系女表5.1D1×D2×D3笛卡爾積5.1.2關系數據結構及形式化定義5.1.2關系數據結構及形式化定義定義5.3關系的描述稱為關系模式。它可以形式化地表示為:R(U),其中R為關系名,U為組成該關系的屬性名集合。簡記為:關系名(屬性名1,屬性名2,…,屬性n)。定義5.4:給定一組域D1,D2,…,Dn
,則D1×D2×…×Dn的子集稱為D1×D2×…×Dn上的關系:記作R(D1,D2,…,Dn,),其中,R為關系名,n為關系R的度或目。當n=1時,稱該關系為單元關系,當n=2時,稱該關系為二元關系。例:表5.1中有兩個元組符合實際情況,構成名為“職工”的關系。如表5.2所示,可記作:職工(姓名,職稱,性別)。姓名系性別李麗管理信息系男李麗管理信息系女李麗汽車系男李麗汽車系女馬俊萍管理信息系男馬俊萍管理信息系女馬俊萍汽車系男馬俊萍汽車系女表5.1
關系中的某一屬性組,若它的值唯一地標識一個元組(記錄),則稱該屬性組為候選鍵(碼),若一個關系有多個候選鍵,則選定其中一個為主鍵(碼),主鍵的諸屬性稱為主屬性。關系可以有三種類型:基本關系(通常又稱為基本表或基表)、查詢表和視圖表。關系性質任意兩個元組(即兩行)不能完全相同。關系中元組(行)的次序是不重要的,可以任意交換。屬性(列)的次序也是不重要的,可以任意交換。同一列中的分量,必須來自同一個域,是同類型的數據。屬性必須有不同的名稱,但不同的屬性可以出自相同的域,即它們的分量可以取值于同一個域。每一分量必須是原子的,即是不可再分的數據項。對關系模式的數據操縱可描述為:操縱的對象基本操縱方式有五種,屬性指定元組選擇關系合并元組插入元組刪除。5.1.3關系數據庫模式多個關系的集合構成了關系數據庫傳統的集合運算主要指并、交、差、笛卡爾積四種運算。它們傳統地用于兩個集合之間的運算。當用于關系運算時,參加運算的關系必須是相容的和可并的,即它們應有相同的度(屬性個數相等),且相應的屬性值來自同一域。如表5.3和表5.4中的關系J和K就是兩個相容的關系。5.2關系代數5.2.1傳統的集合運算學號課程號成績學號課程號成績J0401C0188J0401C0188J0401C0293J0402C0190J0401C0399J0403C0176Q0401C0190表5.3關系J表5.4關系K關系J與關系K之并,記作J∪K1.并運算5.2.1傳統的集合運算學號課程號成績J0401C0188J0401C0293J0401C0399J0402C0190J0403C0176Q0401C0190表5.5J∪K關系J與關系K之差,記作J-K2.差運算5.2.1傳統的集合運算學號課程號成績J0401C0293J0401C0399表5.5J-K關系J與關系K之交,記作J∩K3.交運算5.2.1傳統的集合運算學號課程號成績J0401C0188表5.5J∩
K兩個分別為n目和m目的關系J和K的廣義笛卡爾積是一個(n+m)列的元組的集合。元組的前n列是關系J的一個元組,后m列是關系K的一個元組。若J有k1個元組,K有k2個元組,則關系J和關系K的廣義笛卡爾積有k1×k2個元組。4.廣義笛卡爾積5.2.1傳統的集合運算學號課程號成績學號課程號成績J0401C0188J0401C0188J0401C0188J0402C0190J0401C0188J0403C0176J0401C0188Q0401C0190J0401C0293J0401C0188J0401C0293J0402C0190J0401C0293J0403C0176J0401C0293Q0401C0190J0401C0399J0401C0188J0401C0399J0402C0190J0401C0399J0403C0176J0401C0399Q0401C0190表5.8J×K5.2.2專門的關系運算公式表示:<關系名>[<條件>],記為:σc(J)。作用:在關系的水平方向上選取符合給定條件的子集。例5.1:找出關系J中成績大于或等于90的學號及其選修的課程號。公式:σ成績≥90(J)。1.選擇運算學號課程號成績J0401C0293J0401C03995.2.2專門的關系運算公式表示:∏[<屬性表>](關系名),記為:∏[U](J)。
作用:在關系的水平方向上選取符合給定條件的子集。在關系的垂直方向選取含有給定屬性的子集。如果新關系中包含重復元組,則要刪除重復元組。例5.2:找出關系J中選修了課程的學生學號及其選修的課程號。
公式:∏[學號,課程號](J)2.投影運算學號課程號J0401C01J0401C02J0401C03表5.10
JK5.2.2專門的關系運算例5.3:找出關系SC中選修了課程的學生學號。公式:∏[學號](SC)學號J0401J0402J0403Q0401Q0403表5.11
SNO3.連接JOIN運算(1)條件連接5.2.2專門的關系運算條件連接是二目運算,它的操作對象有兩個關系。條件連接是從關系M和N的笛卡爾積中選取屬性值滿足連接的元組,連接可看成是有選擇的笛卡爾乘積。記為:MiθjN≡σiθ(n+j)(M×N)θ是比較運算符,如果θ是等號“=”,該連接操作稱為“等值連接”。5.2.2專門的關系運算(2)自然連接兩個關系M和N的自然連接用MN表示。選擇M和N公共屬性值均相等的元組,并去掉M×N中重復的公共屬性列。具體計算過程如下。①計算M×N②設M和N的公共屬性是A1,……,Ak,挑選M×N中滿足M.A1=N.A1,……,M.Ak=N.Ak的那些元組③去掉N.A1,……,N.Ak的這些列。5.2.2專門的關系運算例5.4:利用數據表C、SC,求選修了課程“數據庫”的學生學號及課程成績。第一步:
將C與SC建立自然連接(兩數據表的公共屬性相等C.課程號=SC.課程號),得出新關系NEW=CSC,如表5.17所示。5.2.2專門的關系運算第二步,對關系NEW進行條件[課程名=‘數據庫’]選擇,運算結果如表5.18所示,得到新關系NEW1=σ課程名=‘數據庫’(NEW)5.2.2專門的關系運算第三步,對關系NEW1進行投影運算,運算結果如表5.19所示,得到新關系NEW2,NEW2=∏[學號,課程名,成績](NEW1)5.2.2專門的關系運算完整的公式如下:5.2.2專門的關系運算4.除法運算公式表示:<關系1>/<關系2>
,記為:T=M/N。作用:在商關系T中,只包含屬性組X(或者說關系M中的屬性組X、Y已除去N中的屬性組Y)。T中只允許保留這樣的元組:當它們與N連接,所組成的新元組全部能在原來的關系M中找到。例5.5:利用數據表SC(見表5.16),求同時選修了課程號為“C01”和“C02”的學生學號。第一步,組建數據表N,如表5.20所示。驗證:當T與N連接時,所組成的新元組全部能在原來的關系M中找到。第二步,完成除法運算,設M=∏[學號,課程號](SC),T=M/N,如表5.21和表5.22所示5.2.3查詢優化查詢優化的目的是為了系統在執行時,既省時間又能提高效率。優化的策略主要從算法步驟入手,在關系代數表達式中盡可能早地執行選擇操作,把廣義笛卡爾積和隨后的選擇操作合并成連接運算。例5.6:利用數據表S、SC,求“李麗”同學選修的課程號及課程成績。方法一:先進行連接運算,后執行選擇操作。第一步,將S與SC建立自然連接,得出新關系SNEW第二步,對關系sNEW進行條件[姓名=“李麗”]選擇.得出新關系SNEW1第三步,對關系sNEW1進行投影運算.sNEW2=∏[姓名,課程號,成績](sNEW1)方法二:盡可能早地執行選擇操作第一步,對關系S進行條件[姓名=“李麗”]選擇,得到新關系SLI第二步,將S與SC建立自然連接(兩數據表的公共屬性相等SLI.學號=SC.學號),得出新關系SLINEW第三步,對關系sLINEW進行投影運算在關系代數運算中,把由基本操作經過有限次復合的式子稱為關系代數表達式。這種表達式的結果仍然是一個關系。可以使用關系代數表達式表示各種數據查詢操作。5.2.4關系代數應用舉例例題:設“學生選課”數據庫中存在三個關系,具體內容如表5.15~表5.24所示。學生基本資料表S(學號,姓名,性別,出生日期,系,電話)課程數據表C(課程號,課程名,學分,預選課程號,教師)學生選課數據表SC(學號,課程號,成績)下面用關系代數表達式表達各個查詢語句
1.檢索選修課程號為C03的學生學號與成績例題:設“學生選課”數據庫中存在三個關系,具體內容如表5.15~表5.24所示。學生基本資料表S(學號,姓名,性別,出生日期,系,電話)課程數據表C(課程號,課程名,學分,預選課程號,教師)學生選課數據
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論