数据库学习笔记04——关系数据库2
文章目錄
- 第三節(jié).關(guān)系的完整性
- (一)實體完整性
- (二)參照完整性
- 關(guān)系間的引用
- 外碼
- 參照完整性(外碼取值要求)
- (三)用戶定義的完整性
- 第四節(jié).關(guān)系代數(shù)
- (一)傳統(tǒng)集合運算
- 并
- 差
- 交
- 笛卡爾積
- (二)專門的關(guān)系運算
- 基礎(chǔ)符號
- 選擇
- 投影
- 連接
- 除
第三節(jié).關(guān)系的完整性
- 所謂完整性是關(guān)系 需要 滿足的某種約束條件,關(guān)系的值需要滿足約束條件
- 三類完整性:實體完整性、參照完整性、用戶定義完整性
- 前兩個是關(guān)系模型必須滿足的,稱為關(guān)系的兩個不變性
- 最后一個是具體領(lǐng)域的具體約束
(一)實體完整性
- 實體完整性是針對基本關(guān)系而言的,一個基本表通常對應(yīng)現(xiàn)實世界的一個實體集,每個實體之間應(yīng)該有某種唯一標(biāo)識
- 關(guān)系模型中以主碼作為唯一性標(biāo)識
- 簡單來說就是,候選碼中的屬性即主屬性不能取空值
(二)參照完整性
關(guān)系間的引用
-
實體與實體間的聯(lián)系都是用關(guān)系來描述的,自然存在著關(guān)系與關(guān)系間的引用
-
兩個關(guān)系間的引用
-
學(xué)生的專業(yè)號必須是學(xué)校有的專業(yè)號,兩個專業(yè)號之間是引用關(guān)系,學(xué)生關(guān)系的專業(yè)號引用專業(yè)的專業(yè)號
-
學(xué)生(學(xué)號,姓名,性別,專業(yè)號,年齡)
專業(yè)(專業(yè)號,專業(yè)名)
-
-
兩個以上關(guān)系的引用
- 學(xué)生(學(xué)號,姓名,性別,專業(yè)號,年齡)
- 課程(課程號,課程名,學(xué)分)
- 選課(學(xué)號,課程號,成績)
-
同一關(guān)系內(nèi)部屬性間的引用
-
學(xué)生(學(xué)號,姓名,性別,專業(yè)號,年齡,班長)
-
班長引用的學(xué)生關(guān)系中的學(xué)號
-
外碼
- 設(shè)F是基本關(guān)系R的一個或一組屬性,但不是關(guān)系R的碼,Ks是基本關(guān)系S的主碼。如果F與Ks相對應(yīng),則稱F是R的外碼
- R和S可以是相同的關(guān)系,也可以是不同的關(guān)系
- S的主碼Ks和F必須定義在同一個域上
- 外碼并不一定要與相應(yīng)的主碼同名,當(dāng)外碼與相應(yīng)的主碼屬于不同關(guān)系時,往往取相同的名字,以便于識別
- 說白了就是F不是R的碼但是S的碼,F是R的外碼,外碼的作用是表示關(guān)系之間的聯(lián)系
參照完整性(外碼取值要求)
-
若屬性(或?qū)傩越M)F 是關(guān)系R 的外碼,它與關(guān)系S 的主碼Ks 相對應(yīng)(關(guān)系R 和S 不一定是不同的關(guān)系),則對于R 中每個元組在F 上的值必須為:
- 或者取空值(F 的每個屬性值均為空值)
- 或者等于S中某個元組的主碼值
-
理解1:
- 學(xué)生(學(xué)號,姓名,性別,專業(yè)號,年齡)
- 專業(yè)(專業(yè)號,專業(yè)名)
學(xué)生沒選專業(yè)之前他的專業(yè)號就是空值,當(dāng)專業(yè)確定之后專業(yè)號取值必須在專業(yè)關(guān)系中選擇
-
理解2:
- 學(xué)生(學(xué)號,姓名,性別,專業(yè)號,年齡)
- 課程(課程號,課程名,學(xué)分)
- 選課(學(xué)號,課程號,成績)
選修關(guān)系的主屬性不能取空值,只能取相應(yīng)被參照關(guān)系中已經(jīng)存在的主碼值
-
理解3:
- 學(xué)生(學(xué)號,姓名,性別,專業(yè)號,年齡,班長)
- 空值表示還沒有選班長
- 非空值表示班長學(xué)號必須是本關(guān)系的學(xué)號之一
(三)用戶定義的完整性
- 例子:課程(課程號,課程名,學(xué)分)
- “課程號”屬性必須取唯一值(實體完整性)
- 非主屬性“課程名”也不能取空值(用戶定義完整性,這是人為希望的,規(guī)定不能是null)
- “學(xué)分”屬性只能取值{1,2,3,4}(用戶定義完整性,這是認(rèn)為希望的,規(guī)定值域的范圍)
第四節(jié).關(guān)系代數(shù)
- 關(guān)系代數(shù)是一種抽象的查詢語言,它用關(guān)系運算來表達(dá)查詢
- 運算對象是關(guān)系,結(jié)果是關(guān)系,兩大類:傳統(tǒng)的集合運算符和專門的關(guān)系運算符
- 傳統(tǒng)的僅涉及到行,專門的涉及到行和列
(一)傳統(tǒng)集合運算
并
-
前提
- 目(屬性個數(shù))要相同
- 相應(yīng)的屬性要取自同一個域
-
運算
-
結(jié)果屬性個數(shù)不變,有屬于R或?qū)儆赟的元組組成,可以換順序
-
一定注意:結(jié)果是一行一行的看,看哪一行不同則加到一起
-
元組元組元組
-
差
- 前提
- 目(屬性個數(shù))要相同
- 相應(yīng)的屬性要取自同一個域
- 運算:
- 屬于R 而不屬于S 的所有元組組成 ,不能換順序
- 把R中元組依次和S每一個比較,如果S沒有則就是結(jié)果之一
交
- 前提
- 目(屬性個數(shù))要相同
- 相應(yīng)的屬性要取自同一個域
- 運算:
- 既屬于R又屬于S的元組組成 ,可以換順序
笛卡爾積
-
前提
- 嚴(yán)格地講應(yīng)該是廣義的笛卡爾積,笛卡爾積的元素是元組
- R: n目關(guān)系,k1個元組
- S: m目關(guān)系,k2個元組
-
運算
-
實質(zhì)上的拼接,前邊的每一個元組與后面的元組依次拼接,不能調(diào)換順序
-
列
-
一共是m+n列
-
元組的前n列是關(guān)系R的一個元組
-
后m列是關(guān)系S的一個元組
-
-
行
- k1×k2個元組
-
(二)專門的關(guān)系運算
基礎(chǔ)符號
- R,t屬于R,t[Ai]
- 設(shè)關(guān)系模式為 R(A1,A2,…,An),它的一個關(guān)系設(shè)為R
- t屬于R 表示t是一個元組
- t[Ai] 表示元組t中屬性Ai的一個分量
- A,t[A], A取反
- A:所有屬性的一部分,稱為屬性列或?qū)傩越M
- t[A]=(t[Ai1],t[Ai2],…,t[Aik])表示元組 t 在屬性列A上k個分量的集合
- A非,表示把所有屬性列中A的部分去掉。
- tr連接ts(類似于廣義的笛卡爾積)
- R為n目關(guān)系,S為m目關(guān)系
- tr 屬于R,ts屬于S, tr連接ts稱為元組的連接
- tr連接ts是一個n + m列的元組,前n個分量為R中的一個n元組,后m個分量為S中的一個m元組
- 象集——
- 給定一個關(guān)系R(X,Z),X和Z為屬性組。當(dāng)t[X]=x時,x在R中的象集定義為Zx={ t[Z]|t∈R,t[X]=“x” }
- 它表示R中屬性組X上值為x的所有元組在Z上分量的集合
- 即固定一個,選出與固定的這個有關(guān)的分量
選擇
-
選擇又稱為限制
-
在關(guān)系R中選擇滿足給定條件的元組
σF(R)=t∣t屬于R∧F(t)=TrueσF(R) = {t|t屬于R∧F(t)= True} σF(R)=t∣t屬于R∧F(t)=True-
F:選擇條件,是一個邏輯表達(dá)式,基本形式為: X1θY1
-
θ表示比較運算符,它可以是>,≥,<,≤,=或<>
-
選擇運算是從關(guān)系R中選取使邏輯表達(dá)式F為真的元組,是從行的角度進(jìn)行的運算
-
選擇就是根據(jù)要求的條件選擇行來查詢
-
投影
-
從R中選擇出若干屬性列組成新的關(guān)系
πA(R)=t[A]∣tI^RπA(R) = { t[A] | t ?R } πA(R)=t[A]∣tI^R
? A:R中的屬性列 -
投影操作主要是從列的角度進(jìn)行運算
-
但是有一種特殊的情況,如果只選擇一個列,可能會有很多重復(fù)的分量,DBMS會自動去重,所以把重復(fù)元組就去掉了
連接
- 連接也稱為θ連接
- 從兩個關(guān)系的笛卡爾積中選取屬性間滿足一定條件的元組
- 分類:
- 等值連接:θ為=的連接運算,從關(guān)系R與S的廣義笛卡爾積中選取A、B屬性值相等的那些元組
- 自然連接:是一種特殊的等值連接,把重復(fù)的屬性列去掉,從行和列的角度運算
- 一般連接:從行的角度,根據(jù)θ取值來進(jìn)行連接
- 懸浮元祖
- 兩個關(guān)系R和S在做自然連接時,關(guān)系R中某些元組有可能在S中不存在公共屬性上值相等的元組,從而造成R中這些元組在操作時被舍棄了,這些被舍棄的元組稱為懸浮元組
- 外連接:
- 如果把舍棄的元組也保存在結(jié)果關(guān)系中,而在其他屬性上填空值(Null),這種連接就叫做外連接
- 左外連接:如果只把左邊關(guān)系R中要舍棄的元組保留就叫做左外連接
- 右外連接:如果只把右邊關(guān)系S中要舍棄的元組保留就叫做右外連接
- 外連接 = 左外連接+右外連接,外連接的方法就是做一個百搭元組,把所有的分量都置成null
除
- 給定關(guān)系R (X,Y) 和S (Y,Z),其中X,Y,Z為屬性組。R中的Y與S中的Y可以有不同的屬性名,但必須出自相同的域集。R與S的除運算得到一個新的關(guān)系P(X),P是R中滿足下列條件的元組在X屬性列上的投影:元組在X上分量值x的象集Yx包含S在Y上投影的集合
- 步驟:
- 1.劃分X、Y、Z,只有R有的是X,只要S有的是Z,公共的是Y
- 求關(guān)系R中X屬性各個分量在Y上的象集
- 關(guān)系S對Y做投影
- 包含S對Y上投影的象集對應(yīng)的屬性分量
- 簡而言之,最關(guān)鍵的三個步驟就是,劃分后的求象集、找S對Y的投影,比較包含
- 出現(xiàn)至少、全部等字眼用除
總結(jié)
以上是生活随笔為你收集整理的数据库学习笔记04——关系数据库2的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 耶格肺功能仪软件 - 弥散测试
- 下一篇: SQL Server Managemen