(数据库系统概论|王珊)第二章关系数据库-第二节、第三节:关系操作和关系完整性
文章目錄
- 一:關系操作
- (1)基本的關系操作
- (2)關系數據語言的分類
- 二:關系完整性約束
- (1)實體完整性
- (2)參照完整性
- A:參照關系
- B:外碼
- C:參照完整性規則
- (3)用戶自定義完整性
一:關系操作
(1)基本的關系操作
關系模型常用關系操作如下。
關系操作的特點是集合操作方式,也即操作的對象和結果都是集合。也稱為一次一集合(set-at-a-time)的方式
- 非關系數據模型的數據操作方式稱為一次一記錄(record-at-a-time)
(2)關系數據語言的分類
關系數據語言可分為三類,如下
下面是SQL的了解性內容,可不看(下一章將會重點介紹)
特別地,SQL語言是一種高度非過程化的語言,用戶不必請求數據庫管理員為其建立特殊的存取路徑,存取路徑的選擇由關系數據庫管理系統的優化機制來完成。例如,在一個存儲有幾百萬條記錄的關系中查找符合條件的某一個或某一些記錄,從原理上講可以有多種查找方法。例如,可以順序掃描這個關系,也可以通過某一一種索引來查找。不同的查找路徑(或者稱為存取路徑)的效率是不同的,有的完成某一個
查詢可能很快,有的可能極慢。關系數據庫管理系統中研究和開發了查詢優化方法,系統可以自動選擇較優的存取路徑,提高查詢效率
二:關系完整性約束
關系完整性規則是對關系的某種約束條件,這些約束條件實際上是現實世界的要求,例如性別只能有男、女兩種取值
關系模型中有如下三類完整性約束
- 實體完整性(entity integrity)
- 參照完整性(referential integrity)
- 用戶自定義完整性(user-defined integrity)
其中實體完整性和參照完整性是關系模型必須滿足的完整性約束條件,被稱為關系的兩個不變性
(1)實體完整性
實體完整性:若屬性A是基本關系RRR的主屬性,則屬性A不能取空值
- 例如“選修(學號,課程號,成績)”關系中,若(學號,課程號)為主碼,則學號和課程號都不能取空值
(2)參照完整性
A:參照關系
(注意在關系表示中,下劃線表示主碼)
【例1】如下兩個關系中,學生關系引用了專業關系的主碼“專業號”,也就是說,學生關系中的某個屬性的取值需要參照專業關系的屬性取值
【例2】如下三個關系中,選修關系引用了學生關系的主碼“學號”和課程關系的主碼“課程號”,也就是說,選修關系中某些屬性的取值需要參照其他關系的屬性取值
【例3】還有,同一關系內部也可能存在引用關系。比如在學生(學號,姓名,性別,專業號,年齡,班長)關系中,“學號”屬性是主碼,“班長”屬性表示該學生所在班級的班長的學號,它引用了本關系“學號”屬性,即“班長”必須是確實存在的學生的學號
B:外碼
外碼:設FFF是基本關系RRR的一個或一組屬性,但不是關系RRR的碼【例如這里FFF是學生關系的專業號】,KsK_{s}Ks?是基本關系SSS的主碼【例如這里KsK_{s}Ks?是專業關系的主碼】。若FFF和KsK_{s}Ks?相對應,則稱FFF是RRR的外碼(foreign key)【則稱專業號是學生關系的外碼】,并稱基本關系RRR為參照關系(referencing relation)【這里學生關系就是參照關系】,基本關系S為被參照關系(referenced relation)【這里專業關系就是被參照關系】。關系RRR和SSS不一定是不同的關系
- 注意:外碼并不一定要與相應的主碼同名,如上面第三個例子中,學生關系的主碼為學號,外碼為班長。不過,在實際應用中為了便于識別,當外碼與相應的主碼屬于不同關系時,往往給它們取相同的名字。
上面三個例子的參照關系表示如下
C:參照完整性規則
參照完整性:若屬性或屬性組FFF是基本關系RRR的外碼,它與基本SSS的主碼相對應(關系RRR和SSS不一定是不同的關系),則對于RRR中每個元組在FFF上的值必須
- 要么取空值(此時FFF的每個屬性值均為空值)
- 要么等于SSS中某個元組的主碼值
因此對于【例1】,學生關系中每個元組的專業號只能取下面兩類值
- 空值:表示該學生尚未分配專業
- 非空值(且該值必須是專業關系中某個元組的專業號值):表示該學生不能分配到一個不存在的專業中
而對于【例2】,按照道理來說“學號”和“課程號”也可以取兩類值,但是“學號”和“課程號”它作為的是選修關系的主碼,所以如果取空值的話將會違背實體完整性規則
對于【例3】,RRR和SSS是同一個關系,“班長”可以取兩類值
- 空值:該班還沒有選出班長
- 非空值:班長必須是班里的同學
(3)用戶自定義完整性
用戶自定義完整性1針對某一具體關系數據庫的約束條件,反映某一具體應用所涉及的數據必須滿足的語義要求,例如某個屬性必須取唯一值,某個非主屬性不能取空值等等
總結
以上是生活随笔為你收集整理的(数据库系统概论|王珊)第二章关系数据库-第二节、第三节:关系操作和关系完整性的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 汇编使用跳转实现1累加到100的和
- 下一篇: LWIP裸机环境下实现TCP与UDP通讯