关系数据库——关系数据语言
關(guān)系
域:一組具有相同數(shù)據(jù)類型的值的集合(即取值范圍)
笛卡爾積:域上的一種集合運(yùn)算。結(jié)果為一個(gè)集合,集合的每一個(gè)元素是一個(gè)元組,元組的每一個(gè)分量來(lái)自不同的域。
基數(shù):一個(gè)域允許的不同取值個(gè)數(shù)。
笛卡爾積的基數(shù):每個(gè)域不同取值的個(gè)數(shù)的乘積,或者說(shuō)元組的個(gè)數(shù)
關(guān)系:域的笛卡爾積的子集叫做在域上的關(guān)系,域的個(gè)數(shù)叫做關(guān)系的目或度。(即列數(shù),屬性的數(shù)目),注意廣義上的笛卡爾積一般不能稱為關(guān)系,因?yàn)榇嬖跓o(wú)效的數(shù)據(jù)。
關(guān)系:表
列:屬性
行:元組
候選碼:某一屬性組的值能唯一地標(biāo)示一個(gè)元組,而其子集不能,則稱該屬性組為候選碼
主屬性:候選碼中的屬性都稱為主屬性,注意:主屬性非空。
非主屬性:候選碼之外的屬性稱為非主屬性
全碼:關(guān)系模式的所有屬性是這個(gè)關(guān)系模式的候選碼
主碼:從候選碼中選取一組能唯一確定一個(gè)元組的屬性組作為主碼。
三類關(guān)系:
1)基本關(guān)系:實(shí)際存在的表,是實(shí)際存儲(chǔ)數(shù)據(jù)的邏輯表示
2)查詢表:查詢結(jié)果對(duì)應(yīng)的表
3)視圖表:由基本表或其他視圖表導(dǎo)出的表,是虛表,不對(duì)應(yīng)實(shí)際存儲(chǔ)的數(shù)據(jù)。
注意:關(guān)系數(shù)據(jù)模型中的關(guān)系必須是有限集合。
關(guān)系的每一個(gè)列必須附加一個(gè)屬性名,屬性名不能重名,這種方法取消了關(guān)系屬性的有序性。
① 列是同質(zhì)的(Homogeneous):每一列中的分量來(lái)自同一個(gè)域,是同一類型的數(shù)據(jù)
② 不同的列可出自同一個(gè)域
-
其中的每一列稱為一個(gè)屬性
-
不同的屬性要給予不同的屬性名
③ 列的順序無(wú)所謂, 列的次序可以任意交換
④ 任意兩個(gè)元組的候選碼不能相同:相同就不是候選碼了
⑤ 行的順序無(wú)所謂,行的次序可以任意交換
⑥ 分量必須取原子值(不允許表中套表)
關(guān)系模式
?
關(guān)系模式:對(duì)關(guān)系的描述,是靜態(tài)的、穩(wěn)定的
關(guān)系:是關(guān)系模式在某一時(shí)刻的狀態(tài)或內(nèi)容,是動(dòng)態(tài)的、隨時(shí)間不斷變化的,指后邊的那個(gè)關(guān)系
關(guān)系模式的形式化表示:
關(guān)系數(shù)據(jù)庫(kù)
在一個(gè)給定的應(yīng)用領(lǐng)域中,所有關(guān)系的集合構(gòu)成一個(gè)關(guān)系數(shù)據(jù)庫(kù)
關(guān)系數(shù)據(jù)庫(kù)的型與值,不是關(guān)系的型與值
1)關(guān)系數(shù)據(jù)庫(kù)的型也稱關(guān)系數(shù)據(jù)庫(kù)模式,是對(duì)關(guān)系數(shù)據(jù)庫(kù)的描述
2)關(guān)系數(shù)據(jù)庫(kù)的值是關(guān)系模式在某一時(shí)刻對(duì)應(yīng)的關(guān)系的集合,簡(jiǎn)稱為關(guān)系數(shù)據(jù)庫(kù)
基本的關(guān)系操作
常用的基本操作:
**查詢:**選擇、投影、連接、除、并、交、差
**數(shù)據(jù)更新:**插入、刪除、修改
**5種基本操作:**選擇、投影、并、差、笛卡爾積?注意:不算交
關(guān)系操作的特點(diǎn):
集合操作方式:操作的對(duì)象和結(jié)果都是集合,一次一集合的方式,操作對(duì)象是集合,操作結(jié)果亦為集合。
?
關(guān)系的完整性
實(shí)體完整性(即主屬性非空)
參照完整性
關(guān)系間的引用:關(guān)系與關(guān)系之間存在著聯(lián)系
外碼:設(shè)F是基本關(guān)系R的一個(gè)或一組屬性,但不是關(guān)系R的主碼,Ks是基本關(guān)系S的主碼。如果F與Ks相對(duì)應(yīng),則稱F是基本關(guān)系R的外碼,外碼所在的基本關(guān)系叫做參照關(guān)系,Ks所在的關(guān)系叫做被參照關(guān)系。
注:
1)R、S不一定是不同的關(guān)系。
2)目標(biāo)關(guān)系S的主碼Ks 和參照關(guān)系的外碼F必須定義在同一個(gè)(或一組)域上
3)外碼并不一定要與相應(yīng)的主碼同名,當(dāng)外碼與相應(yīng)的主碼屬于不同關(guān)系時(shí),往往取相同的名字,以便于識(shí)別
4)外碼的取值:如果外碼是參照關(guān)系的主屬性,則不能為空(實(shí)體完整性),只能為被參照關(guān)系中主碼的取值。如果外碼不是參照關(guān)系的主屬性,則可以取空或者被參照關(guān)系主碼的取值
兩個(gè)不變性:指實(shí)體完整性和參照完整性
用戶定義完整性
針對(duì)某一具體關(guān)系數(shù)據(jù)庫(kù)的約束條件,反映某一具體應(yīng)用所涉及的數(shù)據(jù)必須滿足的語(yǔ)義要求
關(guān)系模型應(yīng)提供定義和檢驗(yàn)這類完整性的機(jī)制,以便用統(tǒng)一的系統(tǒng)的方法處理它們,而不要由應(yīng)用程序承擔(dān)這一功能
關(guān)系代數(shù)
傳統(tǒng)的集合運(yùn)算
傳統(tǒng)的關(guān)系運(yùn)算:
并、交、差、笛卡爾積
操作對(duì)象關(guān)系:
操作方式:同數(shù)學(xué)中的并、交、差、笛卡爾積。只不過(guò)操作對(duì)象的元素是元組。另外需要注意能進(jìn)行運(yùn)算所需要滿足的條件。
對(duì)于并、交、差需要滿足的關(guān)系:1)屬性的數(shù)目相同;2)相應(yīng)的屬性取自同一個(gè)域
專門的關(guān)系運(yùn)算
常見的關(guān)系運(yùn)算有選擇、投影、連接、除
選擇:
在關(guān)系R中選擇滿足給定條件的諸元組。
表達(dá)式:$\sigma_F(R) = {t | t \in R \and F(t) = ''true''}$
F:為選擇條件,是一個(gè)邏輯表達(dá)式,基本形式為:$X_1 \theta Y_1$,其中$\theta$為大于、小于、等于、不等于等。
舉例:
選擇:$\sigma_{Sdept = "IS"}(Student)$
???????
投影:
從R中選擇出若干屬性列組成新的關(guān)系
表達(dá)式:$\prod_{A} (R)= {t[A] | t\in R}$
A為屬性列,即從R中選擇A中屬性列的元組,當(dāng)然選擇之后可能會(huì)刪掉一些元組,因?yàn)楸苊庵貜?fù)。
舉例:還是上方的關(guān)系,經(jīng)過(guò)投影$\prod_{Sname, Sdept}(Student)$,結(jié)果如下:
?
連接
?
1)**一般連接:**從兩個(gè)關(guān)系的笛卡爾積中選取屬性間滿足一定條件的元組
(1)表達(dá)式:$R\bowtie_ {A \theta B} S = {t_r^ \frown t_s | t_r \in R \and t_s \in S \and t_r[A] \theta t_s[B] }$
(2)A和B:分別為R和S上度數(shù)相等且可比的屬性組
(3)$\theta$表示比較運(yùn)算符,
(4)連接運(yùn)算從R和S的廣義笛卡爾積R×S中選取(R關(guān)系)在A屬性組上的值與(S關(guān)系)在B屬性組上值滿足比較關(guān)系θ的元組
2)**等值連接:**當(dāng)上述的運(yùn)算符為等于號(hào)的時(shí)候
(1)含義:從關(guān)系R與S的廣義笛卡爾積中選取A、B屬性值相等的那些元組,即等值連接為:
(2)表達(dá)式:$R\bowtie_ {A = B} S = {t_r^ \frown t_s | t_r \in R \and t_s \in S \and t_r[A] = t_s[B] }$
(3)仍然是從行的角度進(jìn)行運(yùn)算,而不涉及列
(4)屬性組可以不同
3)**自然連接:**一種特殊的等值連接
(1)與等值連接的不同:兩個(gè)關(guān)系R和S必須具有相同的屬性組
(2)將結(jié)果中相同的屬性列去掉
(3)表達(dá)式:$R\bowtie S = {t_r^ \frown t_s | t_r \in R \and t_s \in S \and t_r[A] = t_s[B] }$
4)由自然連接所引發(fā)的一系列問(wèn)題:
(1)懸浮元組:在做自然連接的時(shí)候被舍棄的元組
(2)外連接:如果把舍棄的元組也保存在結(jié)果關(guān)系中,而在其他屬性上填空值(Null),這種連接就叫做外連接,外連接 = 左外連接 + 右外連接
(3)左外連接:如果只把左邊關(guān)系R中要舍棄的元組保留就叫做左外連接
(4)右外連接:如果只把右邊關(guān)系S中要舍棄的元組保留就叫做右外連接
除
1)除運(yùn)算的意義:
(1)假設(shè)關(guān)系R,S,RS,R關(guān)系擁有的屬性是姓名,S關(guān)系擁有的屬性是課程,RS關(guān)系擁有的屬性是姓名和課程的聯(lián)系,則RS/S表示選出所有至少選了表S中所列課程的學(xué)生的元組。
(2)如下圖:
注:RS/S得到的關(guān)系:張三和李四構(gòu)成的表,表示選修了全部課程的同學(xué)的集合。
舉例:
R:
| a1 | b1 | c2 |
| a2 | b3 | c7 |
| a3 | b4 | c6 |
| a1 | b2 | c3 |
| a4 | b6 | c6 |
| a2 | b2 | c3 |
| a1 | b2 | c1 |
S:
| b1 | c2 | d1 |
| b2 | c1 | d1 |
| b2 | c3 | d2 |
R÷S
| a1 |
(1) 找S與R的共同屬性,即公式中的Y屬性
(2)計(jì)算R中每個(gè)X屬性的象集,如果某個(gè)象集包含S在Y屬性上的投影,則該屬為R/S結(jié)果中的一個(gè)值。
解答如下:
在關(guān)系R中,A可以取四個(gè)值{a1,a2,a3,a4},其中:
a1的象集為:{(b1,c2),(b2,c3),(b2,c1)}
a2的象集為:{(b3,c7),(b2,c3)}
a3的象集為:{(b4,c6)}
a4的象集為:{(b6,c6)}
S在(B,C)上的投影為{(b1,c2),(b2,c3),(b2,c1)}。
顯然只有R的象集a1包含S在(B,C)屬性組上的投影,所以R÷S={a1}。
總結(jié)
以上是生活随笔為你收集整理的关系数据库——关系数据语言的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: leetcode208. 实现 Trie
- 下一篇: 数据库2.1.1mysql的特点