第2章 關系數據庫(重點)
了解:關系數據結構及形式化定義、關系操作、關系的完整性、關系代數
掌握
- 關系模型的三個組成部分及各部分所包括的主要內容
- 關系數據結構及其形式化定義
- 關系的三類完整性約束
- 關系代數及其運算,包括並、交、差、選擇、投影、連接、除、廣義笛卡兒積
知識點
關系模型三個組成部分
- 關系數據結構
- 關系操作集合
- 關系完整性約束
- 實體完整性規則:若屬性A是基本關系R的主屬性,則屬性A不能取空值參照完整性規則:若屬性(或屬性組)F是基本關系R的外碼它與基本關系S的主碼Ks相對應(基本關系R和S不一定是不同的關系),則對於R中每個元組在F上的值必須為:
- 或者取空值(F的每個屬性值均為空值)
- 或者等於S中某個元組的主碼值
- 用戶定義的完整性:針對某一具體關系數據庫的約束條件,反映某一具體應用所涉及的數據必須滿足的語義要求
- 實體完整性規則:若屬性A是基本關系R的主屬性,則屬性A不能取空值參照完整性規則:若屬性(或屬性組)F是基本關系R的外碼它與基本關系S的主碼Ks相對應(基本關系R和S不一定是不同的關系),則對於R中每個元組在F上的值必須為:
關系數據語言的特點和分類
- 關系代數語言
- 關系演算語言
- 具有關系代數和關系演算雙重特點的語言
域、笛卡兒積、關系、元組、屬性
- 域:域是一組具有相同數據類型的值的集合
- 笛卡兒積:D1*D2*…*Dn={(d1,d2,…,dn)|di∈Di,i=1,2,…,n}
- 關系:在域D1,D2,…,Dn上笛卡兒積D1*D2*…*Dn的子集,表示為R(D1,D2,…,Dn)
- 元組:關系中的每個元素是關系中的元組
- 屬性:關系也是一個二維表,表的每行對應一個元組,表的每列對應一個域。由於域可以相同,為了加以區分,對每列起一個名字,稱為屬性
候選碼、主碼、外碼
- 候選碼:若關系中的某一屬性組的值能唯一地標識一個元組,而其子集不能,則稱該屬性組為候選碼(candidate key)
- 主碼:若一個關系有多個候選碼,選定其中一個為主碼(primary key)
- 外碼:設F是基本關系R的一個或一組屬性,但不是關系R的碼,如果F與基本關系S的主碼Ks相對應,則稱F是基本關系R的外部碼(foreign key),簡稱外碼
關系模式、關系、關系數據庫
- 關系模式:關系的描述稱為關系模式(relation schema),
- 關系模式形式化表示為R(U,D,DOM,F)。R為關系名,U為組成該關系的屬性名集合,D為屬性組U中屬性來自的域,DOM為屬性向域的映像集合,F為屬性間數據的依賴關系集合關系:在域D1,D2,…,Dn上笛卡兒積D1*D2*…*Dn的子集,表示為R(D1,D2,…,Dn)
-
- 關系是關系模式在某一時刻的狀態或內容
- 關系數據庫的型:稱為關系數據庫模式,是對關系數據庫的描述,它包括若干域的定義以及在這些域上定義的若干關系模式。
- 關系數據庫的值:是這些關系模式在某一時刻對應的關系的集合,通常就稱為關系數據庫。
關系模式和關系的區別
- 關系模式是型;關系是值,是關系模式的實例
關系模型的完整性規則
- 實體完整性規則:若屬性A是基本關系R的主屬性,則屬性A不能取空值參照完整性規則:若屬性(或屬性組)F是基本關系R的外碼它與基本關系S的主碼Ks相對應(基本關系R和S不一定是不同的關系),則對於R中每個元組在F上的值必須為:
-
- 或者取空值(F的每個屬性值均為空值)
- 或者等於S中某個元組的主碼值
- 用戶定義的完整性:針對某一具體關系數據庫的約束條件,反映某一具體應用所涉及的數據必須滿足的語義要求
用關系代數完成查詢

設有一個SPJ數據庫,包括S,P,J,SPJ四個關系模式:
S( SNO,SNAME,STATUS,CITY);
P(PNO,PNAME,COLOR,WEIGHT);
J(JNO,JNAME,CITY);
SPJ(SNO,PNO,JNO,QTY);
供應商表S由供應商代碼(SNO)、供應商姓名(SNAME)、供應商狀態(STATUS)、供應商所在城市(CITY)組成;零件表P由零件代碼(PNO)、零件名(PNAME)、顏色(COLOR)、重量(WEIGHT)組成;工程項目表J由工程項目代碼(JNO)、工程項目名(JNAME)、工程項目所在城市(CITY)組成;供應情況表SPJ由供應商代碼(SNO)、零件代碼(PNO)、工程項目代碼(JNO)、供應數量(QTY)組成,表示某供應商供應某種零件給某工程項目的數量為QTY。
- 求供應工程J1零件的供應商號碼SNO:
- 求供應工程J1零件P1的供應商號碼SNO:
- 求供應工程J1零件為紅色的供應商號碼SNO:
- 求沒有使用天津供應商生產的紅色零件的工程號JNO:
- 求至少用了供應商S1所供應的全部零件的工程號JNO:
等值連接與自然連接區別和聯系
- 自然連接是一種特殊的等值連接,它要求兩個關系中進行比較分量,即連接屬性必須是相同的屬性組,並且要在結果中去掉其中一個的重復屬性
代數運算,用基本運算表示其他運算
-
- 基本運算
- 【並】:RUS仍為n目關系,由屬於R或屬於S的元組組成
- 【差】:R-S仍為n目關系,由屬於R而不屬於S的所有元組組成
- 【笛卡兒積】(全排列組合):R*S列:(n+m)列元組的集合,元組的前n列是關系R的一個元組,后m列是關系S的一個元組,行:k1*k2各元組【投影】:從R中選擇出若干屬性列組成新的關系
-
- πA(R) = { t[A] | t∈R }
- 例:查詢學生的姓名和所在系,即求Student關系上學生姓名和所在系兩個屬性上的投影 πSname,Sdept(Student)
- σF(R) = {t|t∈R∧F(t)= '真'} F:選擇條件,是一個
- 例:查詢信息系(IS系)全體學生 σSdept = 'IS' (Student)
- 【交】:RnS仍為n目關系,由既屬於R又屬於S的元組組成
- 【連接】:從兩個關系的笛卡兒積中選取屬性間滿足一定條件的元組
- 【除】:給定關系R(X,Y) 和S(Y,Z),其中X,Y,Z為屬性組。R中的Y與S中的Y可以有不同的屬性名,但必須出自相同的域集。R與S的除運算得到一個新的關系P(X),P是R中滿足下列條件的元組在 X 屬性列上的投影:元組在X上分量值x的象集Yx包含S在Y上投影的集合,R÷S = {tr[X] | tr∈R ∧ πY(S) 真包含於 Yx }
- 基本運算
補充
關於關系模型
-
-
- 一個關系至少要有一個候選碼
- 行、列的次序可以任意交換
- 一個列的值只能來自一個域
- 不同的列應有不同的列名
- 一個碼是【可有多個或者一個其值能夠唯一表示該關系模式中任何元組的屬性組成】
- 實體以及實體之間的聯系都可以使用相同的結構類型來表示
- 非主屬性不可能出現在任何候選碼中
- 候選碼都可以唯一地標識一個元組
- 關系操作中,操作的對象和結果都是【集合】
- “性別”屬性要求只能取“男”/“女”,這屬於【用戶定義的完整性】
- 兩個關系R(A,B,C)和S(B,C,D)自然連接,得到結果包含【4】列
- 在左外連接中,保留的是左邊關系中所有的元組
- 在關系模型中,關系操作包括【查詢】【插入】【修改】【刪除】
- 關系模型包括8種查詢操作,【並】【笛卡兒積】【選擇】【投影】【差】是基本操作
- 職工([職工號],姓名,年齡,部門號)和部門([部門號],部門名稱)存在引用關系,其中【職工】是參照關系,【部門號】是外碼
- 候選碼和主碼的關系
- 若關系中的某一屬性組的值能唯一標識一個元組,該屬性組稱為候選碼
- 如果一個關系有多個候選碼,其中一個被選為主碼
- 候選碼可以有多個,主碼是其中的一個
- 什么是關系完備性?關系演算在語言表達能力上是完備的嗎?
- 關系完備性是指一個查詢語言能夠表示關系代數可以表示的所有查詢。
- 關系演算具有完備的表達能力
- 現有如下關系:患者(患者編號,患者姓名,性別,出生日起,所在單位);醫療(患者編號,患者姓名,醫生編號,醫生姓名,診斷日期,診斷結果)其中,醫療關系中的外碼是【醫生編號和患者編號】
- 現有一個關系:借閱(書號,書名,庫存數,讀者號,借期,還期),假如同一本書允許一個讀者多次借閱,但不能同時對一種書借多本,則該關系模式的外碼是【書號+讀者號+借期】
- 關系模型中實現實體間 N:M 聯系是通過增加一個【關系】實現
- 關系代數運算是以【集合運算】為基礎的運算
- 關系數據庫管理系統應能實現的專門關系運算包括【選擇、投影、連接】
- 五種基本關系代數運算是【∪ - × σ π】
- 關系代數表達式的優化策略中,首先要做的是【盡早執行選擇運算】
- 關系數據庫中的投影操作是指從關系中【抽出特定字段】
- 從一個數據庫文件中取出滿足某個條件的所有記錄形成一個新的數據庫文件的操作是【選擇】操作
- 關系代數中的連接操作是由【選擇和笛卡爾積】操作組合而成
- 自然連接是構成新關系的有效方法。一般情況下,當對關系R和S是用自然連接時,要求R和S含有一個或者多個共有的【屬性】
- 假設有關系R和S,在下列的關系運算中,【R×S】運算不要求:“R和S具有相同的元數,且它們的對應屬性的數據類型也相同”
- 假設有關系R和S,關系代數表達式R-(R-S)表示的是【R∩S】
- 有關系SC(S_ID,C_ID,AGE,SCORE),查找年齡大於22歲的學生的學號和分數,正確的關系代數表達式是【πS_ID,SCORE (σ age>22 (SC) ) 】【πS_ID,SCORE (σ age>22 (πS_ID,SCORE,AGE (SC) ) ) 】
- 下面四個關系表達式是等價的,是判別它們的執行效率【E3最快】
E1 =πA (σ B=C ∧ D=E′ (R×S) )E2 =πA (σ B=C (R× σD=E′ (S) )E3 =πA (R∞B=CσD=E′(S) )E4 =πA (σD=E′ (R∞B=C S) ) - 綜合題
-