外鍵引用完整性限制:外鍵不可指空
域完整性限制(Domain integrity constraint):表中每個元組每個屬性值都必須符合其值域要求
實體完整性限制(Entity integrity constraint):主鍵不能為空
Example Instances
R1
sid | bid | day |
---|---|---|
22 | 101 | 10/10/96 |
58 | 103 | 11/12/96 |
B2
bid | bname | color |
---|---|---|
101 | tiger | red |
103 | lion | green |
105 | hero | blue |
S1
sid | sname | rating | age |
---|---|---|---|
22 | dustin | 7 | 45.0 |
31 | lubber | 8 | 55.5 |
58 | rusty | 10 | 35.0 |
S2
sid | sname | rating | age |
---|---|---|---|
28 | yuppy | 9 | 35.0 |
31 | lubber | 8 | 55.5 |
44 | guppy | 5 | 35.0 |
58 | rusty | 10 | 35.0 |
關系代數(Relational Algebra)
關系代數是關系模型的理論基礎。
關系模型最大的特點是,它把現實中的實體以及實體間的聯系用表來表示。資料庫裡面存的資料就是表,對資料庫的各種操作,包括操作的結果都是表。
基礎操作:
- 選擇操作[selectio] σ —— 選擇滿足條件的行(元組)
- 投影操作[projection] π —— 去掉不需要的列
- 笛卡爾乘積[cross-product] × —— 把兩個關系拼接在一起(類似點乘)
- 集合差[set-difference] - —— A - AB
- 集合并[union] ∪ —— 滿足并相容條件的元組合并
支援以上五個操作,則稱關系完備。關系模型中,所有其他任何操作都可由這五個操作導出。
Projection
把表S2投影到姓名和級别上,結果:
sname | rating |
---|---|
yuppy | 9 |
lubber | 8 |
guppy | 5 |
rusty | 10 |
注:1.**投影操作會消除重複元組。**關系模型裡,一張表的兩個元組,如果它們所有屬性的值都相等,我們認為它表達的是現實世界中的同一個事情。
2.盡管理論上投影操作會消除重複元組,但在實際資料庫系統裡,用SOL語言表達投影操作時,除非使用者要求消除重複元組,否則不會自動消除。
若把S2投影到年齡上,結果:
age |
---|
35.0 |
55.5 |
選擇操作(selection)
在一張表裡,把滿足條件的元組找出來
σ r a t i n g > 8 S ( 2 ) {\sigma _{{\rm{rating}}{\kern 1pt} {\kern 1pt} > 8}}{\kern 1pt} S(2) σrating>8S(2)
結果:
sid | sname | rating | age |
---|---|---|---|
28 | yuppy | 9 | 35.0 |
58 | rusty | 10 | 35.0 |
注:
- 選擇操作本身不會造成重複元組
-
選擇操作之後的模式與選擇前完全相同
操作之間的組合:
π s n a m e , r a t i n g ( σ r a t i n g > 8 ( S 2 ) ) {\pi _{sname,rating\left( {{\sigma _{rating > 8}}(S2)} \right)}} πsname,rating(σrating>8(S2))
先選擇,後投影,結果:
sname | rating |
---|---|
yuppy | 9 |
rusty | 10 |
二進制操作:集合的并交叉(與數學中集合的并交叉運算相同)。參與運算的兩個關系必須滿足并相容條件。
并相容條件:1. 屬性個數相同
2.對應屬性的類型必須一樣(名字有點差别沒關系)