一
關系模型
;關系模型是
年由E
F
Codd提出的
與層次
網狀模型相比
它有以下特點
數據結構簡單—二維表格
扎實的理論基礎
a
關系運算理論
b
關系模式設計理論
關系模型的基本概念
;用二維表格結構表示實體
外鍵表示實體間聯系的數據模型稱為關系模型
;介紹二維表格中的術語
體系結構
完整性約束和關系模型的形式定義
; 二維表格的基本術語
二維表格
關系模型中
字段稱為屬性
字段值稱為屬性值
記錄類型稱為關系模型
關系模式名是R
記錄稱為元組
元組的集合稱為關系或實例
一般用大寫字母A
B
C
……表示單個屬性
用小寫字母表示屬性值
關系中屬性的個數稱為
元數
元組的個數稱為
基數
例子的關系元數為
基數為
有時也稱關系為表格
元組為行
屬性為列
鍵
鍵由一個或幾個屬性組成
分為以下幾種
a
超鍵
在關系中能惟一標識元組的屬性集稱為關系模式的超鍵
b
候選鍵
不含多余屬性的超鍵稱為候選鍵
即在候選鍵中
若要再刪除屬性
就不是鍵了
c
主鍵
用戶選作元組標識的一個候選鍵稱為主鍵
一般情況下
鍵指主鍵
關系的定義和性質
關系是一個元數為K(K>=
)的元組的集合
關系是一種規范化的表格
它有以下限制
a
關系中的每一個屬性值都是不可分解的
b
關系中不允許出現相同的元組
c
關系中不考慮元組之間的順序
d
元組中屬性也是無序的
關系模式
關系子模式和存儲模式
關系模型中
概念模式是關系模式的集合
外模式是關系子模式的集合
內模式是存儲模式的集合
關系模式
關系模式實際就是記錄類型
包括
模式名
屬性名
值域名以及模式的主鍵
它不涉及物理存儲方面的描述
只是對數據特性的描述
關系子模式
子模式是用戶所用到的那部分數據的描述
除了指出用戶的數據外
還應指出模式與子模式之間的對應性
存儲模式
關系存儲時的基本組織方式是文件
元組是文件中的記錄
由於關系模式有鍵
因此存儲一個關系可以用散列方法或索引方法實現
關系模型的三類完整性規則
實體完整性規則
這條規則要求關系中元組在組成主鍵的屬性上不能有空值
如有空值
那麼主鍵值就起不了惟一標識元組的作用
參照完整性規則
如果屬性集K是關系模式R
的主鍵
K也是關系模式R
的外鍵
那麼在R
的關系中
K的取值只允許有兩種可能
或為空值
或等於R
關系中某個主鍵值
使用時應注意
a
外鍵和相對應的主鍵可以不同名
只要定義在相同的值域上即可
b
R
和R
也可以是同一個關系模式
表示了屬性之間的聯系
c
外鍵值是否允許為空
應視具體問題而定
用戶定義的完整性規則
這是針對具體數據的約束條件
由應用環境而定
;關系模型的形式定義
三個組成部分
數據結構
數據操作和完整性規則
關系模型的基本數據結構就是關系
關系運算分為關系代數和關系演算
關系模型的三類完整性規則
二
關系代數
關系數據庫的數據操作分為查詢和更新兩類
查詢語句用於各種檢索操作
更新操作用於插入
刪除和修改等操作
關系查詢語言根據其理論基礎的不同分成兩大類
關系代數語言
查詢操作是以集合操作為基礎運算的DML語言
關系演算語言
查詢操作是以謂詞演算為基礎運算的DML語言
關系代數的五個基本運算
關系代數是以關系為運算對象的一組高級運算的集合
關系定義為元數相同的元組的集合
集合中的元素為元組
關系代數中的操作可分為兩類
傳統的集合操作
並
差
交
笛卡爾積
擴充的關系操作
投影
選擇
聯接和自然聯接
除
並
設有兩個關系R和S具有相同的關系模式
R和S的並是由屬於R和S的元組構成的集合
記為R∪S
注意
R和S的元數相同
差
設有兩個關系R和S具有相同的關系模式
R和S的差是由屬於R但不屬於S的元組構成的集合
記為R-S
注意
R和S的元數相同
笛卡爾積
設關系R和S的元數分別為r和s
定義R和S的笛卡爾積是一個(r+s)元的元組集合
每個元組的前r個分量(屬性值)來自R的一個元組
後s個分量來自S的一個元組
記為R×S
若R有M個元組
S有n個元組
則R×S 有m×n個元組
選擇
從關系中找出滿足給定條件的所有元組稱為選擇
其中的條件是以邏輯表達式給出的
該邏輯表達式的值為真的元組被選取
這是從行的角度進行的運算
即水平方向抽取元組
經過選擇運算得到的結果可以形成新的關系
其關系模式不變
但其中元組的數目小於或等於原來的關系中的元組的個數
它是原關系的一個子集
記為
δF(R)≡{t∣t屬於R∧F(t)=true}
投影
從關系中挑選若干屬性組成的新的關系稱為投影
這是從列的角度進行運算
經過投影運算可以得到一個新關系
其關系所包含的屬性個數往往比原關系少
或者屬性的排列順序不同
如果新關系中包含重復元組
則要刪除重復元組
記為
∏A(R)={t[A] ∣t屬於R} A為R中的屬性列
例如
∏
(R)
關系代數的四個組合操作
交
關系R和S的交是由屬於R又屬於S的元組構成的集合
記為R∩S
R和S要求定義在相同的關系模式上
R∩S≡ {t∣t屬於R∧t屬於S}
R和S的元數相同
聯接
聯接有兩種
θ聯接和F聯接(θ是算術比較符
F是公式)
⑴ θ聯接
θ聯接是從關系R和S的笛卡爾積中選取屬性值滿足某一θ操作的元組
記為
R︱×i θj︱S
這裡i和j 分別是關系R和S中第 i個
第j個屬性的序號
R︱×i θj︱S≡ δi θ (r+j)( R×S )
如果θ是等號
=
該聯接操作稱為
等值聯接
⑵F聯接
F聯接操作是從關系R和S的笛卡爾積中選取屬性值滿足某一公式F的元組
記為
R︱×F︱S
這裡的F是形為F
∧F
∧…∧Fn的公式
每一個f都是形為i θj的式子
而i和j 分別是關系R和S中第 i個
第j個屬性的序號
自然聯接
兩個關系R和S的自然聯接用R︱×︱S表示
具體計算過程如下
①計算R×S
②設R和S的公共屬性是A
……
Ak
挑選R×S中滿足R
A
=S
A
……
R
Ak=S
Ak的那些元組
③去掉S
A
……
S
Ak的這些列
如果兩個關系中沒有公共屬性
那麼其自然聯接就轉化為笛卡爾積操作
除法
給定關系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上投影的集合
關系代數表達式及其應用實例
在關系代數運算中
把由五個基本操作經過有限次復合的式子稱為關系代數表達式
這種表達式的結果仍然是一個關系
可以使用關系代數表達式表示各種數據查詢操作
例題
設教學庫中有三個關系
學生關系S(S#
SNAME
AGE
SEX)
學習關系SC(S#
C#
GRADE)
課程關系C(C#
CNAME
TEACHER)
下面用關系代數表達式表達各個查詢語句
檢索學習課程號為C
的學生學號與成績
檢索學習課程號為C
的學生學號與姓名
檢索選修課程名為MATHS的學生學號與姓名
檢索選修課程號為C
或C
的學生學號
檢索至少選修課程號為C
或C
的學生學號
檢索不學C
課的學生姓名有年齡
檢索學習全部課程的學生姓名
∏S#
GRADE(δC#=
C
(SC))
或∏
(δ
=
C
From:http://tw.wingwit.com/Article/os/xtgl/201311/8722.html