關系數據結構關系定義關系性質關系模式關系的完整性實體課件_第1頁
關系數據結構關系定義關系性質關系模式關系的完整性實體課件_第2頁
關系數據結構關系定義關系性質關系模式關系的完整性實體課件_第3頁
關系數據結構關系定義關系性質關系模式關系的完整性實體課件_第4頁
關系數據結構關系定義關系性質關系模式關系的完整性實體課件_第5頁
已閱讀5頁,還剩167頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

關系數據結構關系定義關系性質關系模式關系的完整性實體完整性參照完整性用戶定義完整性關系代數關系演算關系數據庫第2章2022/12/161數據庫原理關系數據結構關系數據庫第2章2022/12/111數據庫●

關系數據庫系統研究進展

1970年E.F.Codd“ARelationalModelofDataforSharedDataBanks”1978年IBM公司QUERYBYEXAMPLE1979年IBM公司SYSTEMR1981年IBM公司

SQL/DSORACLE公司ORACLERDBMS INFOMIX公司INFOMIX SYBASE公司SYBASE MicroSoft公司SQL-SERVER奠定關系數據庫的理論基礎2022/12/162數據庫原理●關系數據庫系統研究進展1970年E.F.Cod2.1關系模型概述關系模型關系數據結構關系操作集合關系完整性約束數據結構單一,實體間的聯系用關系表示,數據的邏輯結構是一張二維表。集合操作方式,即操作對象和結構都是集合。實體完整性、參照完整性和用戶完整性。2022/12/163數據庫原理2.1關系模型概述關系模型關系數據結構關系操作集合關系完整關系操作(Select)選擇(Join)連接(Project)投影(Divide)除(Union)并(Intersection)交(Difference)差(Insert)增加(Delete)刪除(Update)修改2022/12/164數據庫原理關系操作(Select)(Join)(Project)(Di關系數據語言關系代數語言關系演算語言具有關系代數和關系演算雙重特點的語言元組關系演算語言域關系演算語言例如:ISBL例如:APLHA,QUEL例如:QBE例如:SQL2022/12/165數據庫原理關系數據語言關系代數語言關系演算語言具有關系代數和關系演算雙2.2關系數據結構及形式化定義2.2.1關系⒈域(Domain)定義2.1域是一組具有相同數據類型的值的集合。例:D1={A,2,3,4,5,……,10,J,Q,K}在關系中用域來表示屬性的取值范圍域中所包含的值的個數稱域的基數(用m表示)D2={,,,}D3={數據庫原理,面向對象數據庫技術}M2=4M3=2M1=132022/12/166數據庫原理2.2關系數據結構及形式化定義2.2.1關系⒈域(Do其中每一個元素(d1,d2,…,dn)叫作一個n元組(n-Tuple),或簡稱為元組(Tuple)。元素中的每一個值di叫作一個分量(Component)。若Di(i=1,2,…,n)為有限集,其基數(Cardinalnumber)為mi(i=1,2,…,n),則D1×D2×…×Dn的基數為:M=∏mi

i=1

n

定義2.2給定一組域D1,D2,…,Dn,(允許部分或全部相同)。D1,D2

,…,Dn的笛卡爾積為:D1×D2×…×Dn={(d1,d2,…,dn)|di∈Dj,j=1,2,…,n}⒉笛卡爾積(CartesianProduct)笛卡爾積也是一個集合2022/12/167數據庫原理其中每一個元素(d1,d2,…,dn)叫作一個n元組設有域D2={,,,}D1×D2={(A,),(A,),(A,),(A,)

............

(K,),(K,),(K,),(K,)}

D1={A,2,3,……,J,Q,K},PCK....AA花色牌值分量元組基數:13×4=52

笛卡爾積可表示為一個二維表。表中的每行對應一個元組,表中的每列對應一個域。

,則笛卡爾積2022/12/168數據庫原理設有域D2={,,,3.關系(relation)定義2.3D1×D2×…×Dn的子集稱為在域D1,D2,…,Dn上的關系,表示為R(D1,D2,…,Dn)。其中:R為關系的名;n為關系的度或目(Degree)。關系中每個元素是關系中的元組,通常用t表示;當n=1時,稱為單元關系(UnaryRelation);當n=2時,稱為二元關系(BinaryRelation);同樣可以把關系看作是一個二維表:每一行對應一個元組;表的每一列對應一個域,每個域起一個名字——稱為

屬性;2022/12/169數據庫原理3.關系(relation)定義2.3D1×D2×…關系類型基本關系查詢表視圖表實際存在的表,是實際存儲數據的邏輯表示。查詢結果對應的表。由基本表或其他視圖表導出的表,是虛表,不對應實際存儲的數據。2022/12/1610數據庫原理關系類型基本關系查詢表視圖表實際存在的表,是實際存儲數據的邏例:設D1=男人集合(MAN)={王強、李東、張兵

}

D2=女人集合(WOMAN)={趙紅、吳芳

}

D3=兒童集合(CHILD)={王輝、李明、李亮}(1)求上面三個集合的笛卡兒積MWC王強趙紅王輝王強趙紅李明王強趙紅李亮王強吳芳王輝王強吳芳李明王強吳芳李亮李東趙紅王輝李東趙紅李明李東趙紅李亮李東吳芳王輝李東吳芳李明李東吳芳李亮張兵趙紅王輝張兵趙紅李明張兵趙紅李亮張兵吳芳王輝張兵吳芳李明張兵吳芳李亮李亮吳芳李東李明吳芳李東王輝趙紅王強CHILDWOMANMANFamily(2)構造一個家庭關系,可表示為:

FAMILY(MAN,WOMAN,CHILD)2022/12/1611數據庫原理例:設D1=男人集合(MAN)={王強、李東、張兵主碼的諸屬性稱為主屬性。若一個關系有多個候選碼,則選定其中的一個為主碼。關系R的某一屬性組X不是R的碼,但是其他某一關系的碼,稱X為R的外部碼。5.主碼(Primarykey)6.主屬性(Primeattribute)若關系中的某一屬性組的值能唯一的標識一個元組,稱該屬性組為候選碼。4.候選碼(Candidatekey)7.非碼屬性(Non-keyattribute)8.全碼(All-key)不包含在任何候選碼中的屬性稱為非碼屬性。9.外部碼(foreignkey)關系模式的所有屬性組是這個關系模式的候選碼,稱為全碼。2022/12/1612數據庫原理主碼的諸屬性稱為主屬性。若一個關系有多個候選碼,則選定其中的例:學生:S(S#,SNAME,SA,SD)課程:C(C#,CNAME)選課:SC(S#,C#,GR)S:候選碼:S#,SNAME; 主碼:S#假設沒有學生重名C:候選碼:C#; 主碼:C#SC:候選碼:(S#,C#);主碼:(S#,C#); 外部碼:S#,C#2022/12/1613數據庫原理例:學生:S(S#,SNAME,SA,SD)S:候選

列是同質的(Homogeneous),即每一列中的分量是同一類型的數據,來自同一個域。

不同的列可對應于同一個域,但給予不同的屬性名。列的順序無所謂,即列的次序可以任意交換。任意兩個元組不能完全相同,即無重復行。行的順序無所謂,即行的次序可以任意交換。

分量必須取原子值,即每一個分量都必須是不可分的數據項。基本關系性質:注:許多關系數據產品,不完全具備該性質關系模型要求關系必須是規范化的,規范條件最基本的一條就是,性質6。規范化的關系簡稱為范式(NormalForm)。2022/12/1614數據庫原理列是同質的(Homogeneous),即每一列中的分量2.2.2關系模式定義2.4對關系的描述稱為關系模式,記為R(U,D,dom,F);其中:R為關系名,U為組成該關系的屬性名集合,D為U中屬性所來自的域,dom為屬性向域的映象集合,F為屬性間數據的依賴關系集合。S(S#,SNAME,SA,SD)關系模式通常簡記為:R(U)關系模式就是關系的框架(表框架)它是對關系結構的描述域名及屬性向域的映象常直接說明為屬性的類型、長度●關系模式是型,是靜態的、穩定的;●

關系是關系模式的值,是動態的、隨時間而變化的。

2022/12/1615數據庫原理2.2.2關系模式定義2.4對關系的描述稱為關系模式,學生關系模式S(S#,SNAME,AGE,SEX)學生課程關系模式SC(S#,C#,GRADE)

課程關系模式C(C#,CNAME,TEACHER)S#SNAMEAGESEXS#C#GRADEC#CNAMETEACHERSCCS2022/12/1616數據庫原理學生關系模式S(S#,SNAME,AGE,SE2.2.3關系數據庫

在關系模型中,實體以及實體間的聯系都是用關系來表示。在一個給定的應用領域中,所有實體及實體之間的聯系的關系的集合構成一個關系數據庫。

關系數據庫也有型和值之分:型(關系數據庫模式):對關系數據庫的描述,包括若干域的定義以及在這些域上定義的若干關系模式。值:關系模式在某一時刻對應的關系的集合,通常稱為關系數據庫。2022/12/1617數據庫原理2.2.3關系數據庫在關系模型中,實體以及2.3關系的完整性完整性約束實體完整性參照完整性用戶定義的完整性關系的兩個不變性2022/12/1618數據庫原理2.3關系的完整性完整性約束實體完整性參照完整性用戶定義的(EntityIntegrity)規則2.1若屬性A是基本關系R(u)(A∈u)上的主屬性,則屬性A不能取空值。例:選課SC中的S#,C#均不能取空值。實體完整性該規則是針對基本關系而言的;現實世界中的實體是可區分的,即它們具有某種唯一性標識;關系模型中以主碼作為唯一性標識;主碼中的屬性即主屬性不能取空值。2022/12/1619數據庫原理(EntityIntegrity)規則2.1若屬性A是(ReferentialIntegrity)規則2.2若屬性(或屬性組)F是關系R的外碼,它與基本關系S的主碼Ks相對應(基本關系R和S不一定是不同的關系),則對于R中每個元組在F上的取值必須為:或者取空值(F的每個屬性值均為空值);或者等于S中的某個元組的主碼值。參照完整性定義外碼與主碼之間的引用規則2022/12/1620數據庫原理(ReferentialIntegrity)規則2.2例:職工EMP(EMP#,ENAME,JOB,DEPT#)

部門DEPT(DEPT#,DNAME,LOC)例:學生S(S#,SNAME,AGE,SEX)課程C(C#,CNAME,TEACHER)

學生課程SC(S#,C#,GRADE)則:EMP中的DEPT#為空或為DEPT中的DEPT#的值則:SC中的S#為空或為S中的S#的值;SC中的C#為空或為C中的C#的值。2022/12/1621數據庫原理例:職工EMP(EMP#,ENAME,JOB,DEPT#)(User-definedIntegrity)用戶定義的完整性用戶自定義完整性是針對某一具體數據的約束條件,反映某一具體應用所涉及的數據必須滿足的語義要求,由應用環境決定。例:屬性的取值范圍;屬性的非空限制2022/12/1622數據庫原理(User-definedIntegrity)用戶定義的完關系數據庫語言關系代數具有關系代數和關系演算雙重特點關系演算域演算關系數據庫標準語言SQL用關系運算來表達查詢,以ISBL為代表用謂詞公式來表達查詢元組演算(以行為變量),以ALPHA為代表域演算(以列為變量),以QBE為代表元組演算元組演算、域演算2022/12/1623數據庫原理關系數據庫語言關系代數具有關系代數和關系演算雙重2.4關系代數一種抽象的查詢語言,用對關系的運算來表達查詢。運算的三大要素:運算對象——關系運算符運算結果——關系集合運算符(并、差、交)專門的關系運算符(廣義笛卡爾積、選擇、投影、連接、除)算術比較符(大/小于、大/小于等于、等于、不等于)邏輯運算符(非、與、或)2022/12/1624數據庫原理2.4關系代數一種抽象的查詢語言,用對關系的運算來表達查詢2.4.1傳統的集合運算并(Union)運算c1b1a1c1b2a2c2b3a1c2b2a1CBAR1∪R2設關系R和關系S具有相同的目n(即兩個關系都有n個屬性),且相應的屬性取自同一個域,則關系R與關系S的并由屬于R或屬于S的元組組成。其結果關系仍為n目關系。記作:R∪S={t|t∈R∨t∈S}

c1b2a2c2b2a1c1b1a1CBAR1c1b2a2c2b3a1c2b2a1CBAR22022/12/1625數據庫原理2.4.1傳統的集合運算并(Union)運算c1b1a1c1b1a1CBAR1-R2設關系R和關系S具有相同的目n,且相應的屬性取自同一個域,則關系R與關系S的差由屬于R而不屬于S的所有元組組成,其結果仍為n目關系。記作:R-S={t|t∈R∧tS}∈差(Difference)運算c1b2a2c2b2a1c1b1a1CBAR1c1b2a2c2b3a1c2b2a1CBAR22022/12/1626數據庫原理c1b1a1CBAR1-R2設關系R和關系S具有相同的ABCa1b2c2a2b2c1R1∩R2c1b2a2c2b2a1c1b1a1CBAc1b2a2c2b3a1c2b2a1CBAR1R2設關系R和關系S具有相同的目n,且相應的屬性取自同一個域,則關系R與關系S的交由既屬于R又屬于S的元組組成,其結果仍為n目關系。記作:R∩S={t|t∈R∧t∈S}交(Intersection)運算2022/12/1627數據庫原理ABCa1b2c2a2b2c1R1∩R2c1b2a2c2b2廣義笛卡爾積(ExtendedCartesianProduct)運算R1×R2c1b1a1c1b1a1c1b1a1CBAc1b2a2c2b3a1c2b2a1CBA......c2b3a1c2b2a1......c2b2a1c2b2a1兩個分別為n目和m目的關系R和S的廣義笛卡爾積是一個(n+m)列的元組的集合。元組的前n列是關系R的一個元組,后m列是關系S的一個元組。若R有k1個元組,S有k2個元組,則關系R和關系S的廣義笛卡爾積有k1×k2個元組。記作:c1b2a2c2b2a1c1b1a1CBAc1b2a2c2b3a1c2b2a1CBAR1R22022/12/1628數據庫原理廣義笛卡爾積(ExtendedCartesianPro2.4.2專門的關系運算學號學生姓名所屬系名學生年齡

S#SNSDSAS1ACS20S2BCS21S3CMA19S4DCI19S5EMA20S6FCS22S2022/12/1629數據庫原理2.4.2專門的關系運算學號學生姓名所屬系名學生年選擇運算是從關系中選取使公式為真的元組。這是從行的角度進行的運算。在關系R中選擇滿足給定條件的元組,記作:

σF

(R)={t|t∈RΛF(t)=‘真’}F是一個公式,表示形式為由邏輯運算符(∧,∨,?)連接各算術表達式組成。算術表達式的基本形式為:XθY。θ={>,≥,<,≤,=,≠}

。選擇(Selection)運算(b)2022/12/1630數據庫原理選擇運算是從關系中選取使公式為真的元組。這是例1求計算機科學系CS的學生學號學生姓名所屬系名學生年齡

S#SNSDSAS1ACS20S2BCS21S3CMA19S4DCI19S5EMA20S6FCS22(a)SS’

S#SNSDSAS1ACS20S2BCS21S6FCS22σSD=‘CS’(S)2022/12/1631數據庫原理例1求計算機科學系CS的學生學號學生姓名所屬系名例2求計算機科學系CS,年齡不超過21歲的學生。σ

SD=‘CS’∧SA≤21(S)S’

S#SNSDSAS1ACS20S2BCS21S’

S#SNSDSAS1ACS20S2BCS21S6FCS22學號學生姓名所屬系名學生年齡

S#SNSDSAS1ACS20S2BCS21S3CMA19S4DCI19S5EMA20S6FCS22SσSD=‘CS’(S)2022/12/1632數據庫原理例2求計算機科學系CS,年齡不超過21歲的學生。σS這是從列的角度進行的運算。

關系R上的投影是從R中選擇若干屬性列組成新的關系。記做:

πA(R)={t[A]|t∈R}投影之后不僅取消了某些列,還可能取消某些元組。投影(Projection)運算2022/12/1633數據庫原理這是從列的角度進行的運算。關系R上的例3

πSN,SD(S)

即求得學生關系S在學生姓名和所在系這兩個屬性上的投影結果。πSN,SD(S)學號

學生姓名所屬系名學生年齡

S#

SNSDSAS1

ACS20

S2BCS21S3CMA19S4DCI19S5

EMA20S6

FCS22(a)(S)πSA(S)SA20211922SNSDACSBCSCMADCIEMAFCSπSA(S)

即求得學生關系S在年齡屬性上的投影結果。2022/12/1634數據庫原理例3πSN,SD(S)即求得學生關系S在學生姓名

連接運算是從兩個關系的笛卡爾積中選取屬性間滿足一定條件的元組。記做:2b52b310b37b23b1EBS12b4a28b3a26b2a15b1a1CBARRS

C<E10b38b3a210b36b2a17b26b2a110b35b1a17b25b1a1ES.BCR.BA連接(Join)運算其中,F是條件表達式,它涉及到對兩個關系中的屬性的比較。例4設關系R、S如下圖:2022/12/1635數據庫原理連接運算是從兩個關系的笛卡爾積中選取屬性間例5設關系R、S如下圖:AR.BCS.BEa1b15b13a1b26b27a2b38b310a2b38b32RS∞

R.B=S.Bθ為“=”的連接運算稱為等值連接:

等值連接2b52b310b37b23b1EBS12b4a28b3a26b2a15b1a1CBAR2022/12/1636數據庫原理例5設關系R、S如下圖:AR.BCS.B自然連接是一種特殊的等值連接,它要求兩個關系中進行比較的分量必須是相同的屬性組,并且要在結果中把重復的屬性去掉。

例6關系R、S的自然連結:自然連接ABCEa1b153a1b267a2b3810a2b382RS∞

AR.BCS.BEa1b15b13a1b26b27a2b38b310a2b38b32RS∞

R.B=S.B2b52b310b37b23b1EBS12b4a28b3a26b2a15b1a1CBAR2022/12/1637數據庫原理自然連接是一種特殊的等值連接,它要求兩個關系中進行比

給定關系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∧Yx

ΠY(S)}

其中Yx為x在R中的象集,x=tr[X]。除(Division)運算2022/12/1638數據庫原理給定關系R(X,Y)和S(Y,Z),其中例7c1b2a1c3b2a2c6b6a4c3b2a1c6b4a3c7b3a2c2b1a1CBARZXYc3c1c2Cd2d1d1Db2b2b1BS2022/12/1639數據庫原理例7c1b2a1c3b2a2c6b6a4c3b2a1c6ba1的象集為:a2的象集為:a3的象集為:a4的象集為:{(b1,c2),(b2,c3),(b2,c1)}{(b3,c7),(b2,c3)}{(b4,c6)}{(b6,c6)}S在B、C上的投影{(b1,c2),(b2,c3),(b2,c1)}

R÷S={tr[X]|tr∈R∧YxΠY(S)}

R÷S={a1}除(Division)運算c1b2a1c3b2a2c6b6a4c3b2a1c6b4a3c7b3a2c2b1a1CBARc3c1c2Cd2d1d1Db2b2b1BS2022/12/1640數據庫原理a1的象集為:a2的象集為:a3的象集為:a4的象集為:{(并、差、笛卡兒積、選擇、投影RS=R-(R-S)

或RS=S-(S-R)R∩S={t|t∈R∧t∈S}123σAθB

(R×S)R÷S={tr[X]|tr∈R∧YxΠY(S)}

關系代數五種基本運算交、連接和除可以用上述5種基本運算表示2022/12/1641數據庫原理并、差、笛卡兒積、選擇、投影RS=R-(R-S)3除運算

給定關系R(X,Y)和S(Y,Z),其中X,Y,Z為屬性組。

R÷S={tr[X]|tr∈R∧YxΠY(S)}其中Yx為x在R中的象集,x=tr[X]①T=π

x(R)②P=πy

(S)③Q=(T×P)-R④W=π

x(Q)⑤R÷S=T-WR÷S=π

x(R)-π

x((T×πy

(S))-R)Sc1b2a1c3b2a2c6b6a4c3b2a1c6b4a3c7b3a2c2b1a1CBAd2c3b2d1c1b2d1c2b1DCBR2022/12/1642數據庫原理3除運算給定關系R(X,Y)和S(Y①T=π

x(R)②P=πy

(S)③Q=(T×P)-R④W=π

x(Q)⑤R÷S=T-WABCa1b1c2a2b3c7a3b4c6a1b2c3a4b6c6a2b2c3a1b2c1BCDb1c2d1b2c1d1b2c3d2RSABCa1b1c2a1b2c1a1b2c3a2b1c2a2b2c1a2b2c3a3b1c2a3b2c1a3b2c3a4b1c2a4b2c1a4b2c3Aa1a4a3a2a1ATa4a3a2AWPc3c1c2Cb2b2b1B3除運算2022/12/1643數據庫原理①T=πx(R)②P=πy(S)③Q

設教學數據庫中有三個關系:學生關系S(S#,SNAME,SD,AGE)課程關系C(C#,CN,CP#)學習關系SC(S#,C#,GRADE)例1檢索學習課程號為C2的學生學號與成績學號課程號學習成績

S#C#GRADES1C1AS1C2AS1C3AS1C5BS2C1BS2C2CS2C4CS3C2B......SCπS#,GRADE(σC#=‘C2’

(SC))σC#=‘C2’(SC)關系代數表達式學號

課程號

學習成績

S#

C#

GRADES1

C2

AS2

C2

CS3

C2

B..

....2022/12/1644數據庫原理設教學數據庫中有三個關系:例1檢索學習課程號為C2的學學號課程號學習成績

S#C#GRADES1C1AS1C2AS1C3AS1C5BS2C1BS2C2C......SC學號學生姓名所屬系名學生年齡

S#SNAMESDSAS1李勇CS20S2劉晨CS21S3王敏MA19S4張力CI19S5田芳MA20........

S例2檢索學習課程號為C2的學生學號和姓名SSC∞

學號學生姓名所屬系名學生年齡課程號學習成績

S#SNAMESDSAC#GRADES1李勇CS20C1AS1李勇CS20C2AS1李勇CS20C3AS1李勇CS20C5AS2劉晨CS21C1BS2劉晨CS21C2C............σC#=‘C2’()SSC∞

S#SNAMES1李勇S2劉晨=πS#,SNAME(s

σC#=‘C2’

(sc))SSCπS#,SNAME(σ

C#=‘C2’

())2022/12/1645數據庫原理學號課程號學習成績SC學號學生姓名所屬系名例3求選修《數據庫原理》這門課程的學生名和所在系。πSN,SD(

(σCN=‘數據庫原理’(C))

)

SSC

設教學數據庫中有三個關系:學生關系S(S#,SNAME,SD,AGE)課程關系C(C#,CN,CP#)學習關系SC(S#,C#,GRADE)2022/12/1646數據庫原理例3求選修《數據庫原理》這門課程的學生名和所在系。πSN學號課程號學習成績

S#C#GRADES1C1AS1C2AS1C3AS1C5BS2C1BS2C2C......SC學號學生姓名所屬系名學生年齡

S#SNAMESDSAS1ACS20S2BCS21S3CMA19S4DCI19S5EMA20........

S例4檢索學習課程號為C2或C3的學生學號和所在系πS#,SD(

πS#

(σC#=‘C2’∨C#=‘C3’(SC))

)

S2022/12/1647數據庫原理學號課程號學習成績SC學號學生姓名所屬系名例5求至少選修C2和C3這兩門課程的學生名。C#C2C3KπSN((πS#,C#

(SC)÷K))

SπSN(

(πS#,C#

(SC)÷πC#

(σC#=‘C2’∨C#=‘C3’(C)))

S解法22022/12/1648數據庫原理例5求至少選修C2和C3這兩門課程的學生名。KπSN(例7求選修全部課程的學生名。例8求至少選修了劉晨所選課程的學生名。πS#(SC)-πS#

(σC#=‘C2’(SC))例6求不學C2這門課程的學生名。πS#(S)-πS#

(σC#=‘C2’(SC))×√

πSN((πC#,S#

(SC)÷C)

)

S

πSN((πC#,S#

(SC)÷K))

S不是所有的學生都選修了課程K=πC#

(σSNAME=‘劉晨’(S)SC)2022/12/1649數據庫原理例7求選修全部課程的學生名。例8求至少選修了劉晨2.5關系演算關系演算是以數理邏輯中的謂詞演算為基礎的。按謂詞變元的不同,關系演算可分為元組關系演算和域關系演算。元組關系演算以元組變量作為謂詞變元的基本對象。

ALPHA語言主要有:GET、PUT、HOLD、UPDATE、DELETE、DROP六條語句域關系演算以元組變量的分量作為謂詞變元的基本對象。

QBE是QueryByExample(即通過例子進行查詢)2022/12/1650數據庫原理2.5關系演算關系演算是以數理邏輯中的謂詞演算為基2.5.1元組關系演算語言ALPHA元組關系演算語言ALPHA

ALPHA語言是元組關系演算語言,謂詞變元是元組變量。元組變量的二個用途是:

(1)簡化關系名;

(2)操作條件中使用量詞時必須用元組變量。

例查詢計算機系學生的姓名元組變量X用來簡化關系名Student

RANGEStudentXGETW(X.Sname):

X.Deptno=‘CS’

操作語句工作空間名表達式操作條件(tuplerelationalcalculus)2022/12/1651數據庫原理2.5.1元組關系演算語言ALPHA元組關系演算語言ALP檢索操作更新操作

(1)簡單檢索(即不帶條件的檢索)

(2)限定的檢索(即帶條件的檢索)

(3)帶排序的檢索

(4)帶定額的檢索

(5)用元組變量的檢索

(6)用存在量詞的檢索

(7)帶有多個關系的表達式的檢索

(8)用全稱量詞的檢索

(9)用兩種量詞的檢索

(10)用蘊函(Implication)的檢索

(11)集函數

(1)修改操作

(2)插入操作

(3)刪除元組關系演算2022/12/1652數據庫原理檢索操作更新操作(1)簡單檢索(即不帶條件的檢索)檢索操作(1)簡單檢索(即不帶條件的檢索)

例1查詢所有被選修課程的課程號碼例2查詢所有學生的數據書59頁的數據庫GETW(SC.Cno)這里條件為空,表示沒有限定條件。W為工作空間名。GETW(Student)2022/12/1653數據庫原理檢索操作(1)簡單檢索(即不帶條件的檢索)例1查詢所(2)限定的檢索(即帶條件的檢索)例3查詢信息系(IS)中年齡小于20歲的學生的學號和年齡

例4查詢計算機科學系(CS)學生的學號、年齡,并按年齡降序排序(3)帶排序的檢索檢索操作GETW(Student.Sno,Student.Sage):Student.Sdept='IS'∧Student.Sage<20GETW(Student.Sno,Student.Sage):Student.Sdept='CS'DOWNStudent.Sage2022/12/1654數據庫原理(2)限定的檢索(即帶條件的檢索)例3查詢信息系(IS)中(4)帶定額的檢索

例5取出一個信息系學生的學號

檢索操作規定了檢索出元組的個數,方法是在W后括號中加上定額數量。

例6查詢信息系年齡最大的三個學生的學號及其年齡,結果按年齡降序排序。排序和定額可以一起使用GETW(1)(Student.Sno):Student.Sdept='IS'GETW(3)

(Student.Sno,Student.Sage):Student.Sdept='IS'DOWNStudent.Sage2022/12/1655數據庫原理(4)帶定額的檢索例5取出一個信息系學生的學號

例7查詢信息系學生的名字(5)用元組變量的檢索檢索操作元組變量是在某一關系范圍內變化(也稱為范圍變量RangeVariable),一個關系可以設多個元組變量。其用途有:簡化關系名;操作條件中使用量詞時必須用元組變量。RANGEStudentXGETW(X.Sname):X.Sdept='IS'2022/12/1656數據庫原理例7查詢信息系學生的名字(5)用元組變量的檢索檢索操作(6)用存在量詞的檢索

例8查詢選修2號課程的學生名字例9查詢選修了其直接先行課是6號課程的課程的學生學號RANGESCXGETW(Student.Sname):?X(X.Sno=Student.Sno∧X.Cno='2')

RANGECourseCXGETW(SC.Sno):?CX(CX.Cno=SC.Cno∧CX.Pcno='6')2022/12/1657數據庫原理檢索操作(6)用存在量詞的檢索例8查詢選修2號課程的學生例10查詢至少選修一門其先行課為6號課程的學生名字前束范式(Prenexnormalform)的形式:RANGECourseCXSCSCXGETW(Student.Sname):?SCX(SCX.Sno=Student.Sno∧ ?CX(CX.Cno=SCX.Cno∧CX.Pcno='6'))GETW(Student.Sname):?SCX?CX(SCX.Sno=Student.Sno∧CX.Cno=SCX.Cno∧CX.Pcno='6')2022/12/1658數據庫原理例10查詢至少選修一門其先行課為6號課程的學生名字前束范(7)帶有多個關系的表達式的檢索例11查詢成績為90分以上的學生名字與課程名字RANGESCSCXGETW(Student.Sname,Course.Cname):?SCX

(SCX.Grade≥90∧SCX.Sno=Student.Sno∧Course.Cno=SCX.Cno)檢索操作查詢結果表達式中可以有多個關系(本查詢所要求的結果學生名字和課程名字分別在Student和Course兩個關系中。)2022/12/1659數據庫原理(7)帶有多個關系的表達式的檢索例11查詢成績為90分以檢索操作

(8)用全稱量詞的檢索

例12查詢不選1號課程的學生名字

存在量詞來表示:RANGESCSCXGETW(Student.Sname):?SCX(SCX.Sno≠Student.Sno∨SCX.Cno≠'1')RANGESCSCXGETW(Student.Sname):??SCX(SCX.Sno=Student.Sno∧SCX.Cno='1')2022/12/1660數據庫原理檢索操作(8)用全稱量詞的檢索例12查詢不選1號課程(9)用兩種量詞的檢索

例13查詢選修了全部課程的學生姓名檢索操作RANGECourseCXSCSCXGETW(Student.Sname):?CX?SCX

(SCX.Sno=Student.Sno∧SCX.Cno=CX.Cno)2022/12/1661數據庫原理(9)用兩種量詞的檢索例13查詢選修了全部課程的學生姓名檢索操作(10)用蘊函(Implication)的檢索例14查詢最少選修了95002學生所選課程的學生學號RANGECouseCXSCSCXSCSCYGETW(Student.Sno):?CX(?SCX(SCX.Sno='95002'∧SCX.Cno=CX.Cno)=>?SCY(SCY.Sno=Student.Sno∧SCY.Cno=CX.Cno))2022/12/1662數據庫原理檢索操作(10)用蘊函(Implication)的檢索例1檢索操作(11)集函數(Aggregationfunction)函數名功能COUNT對元組計數TOTAL求總和MAX求最大值MIN求最小值AVG求平均值例15查詢學生所在系的數目例16查詢信息系學生的平均年齡GETW(COUNT(Student.Sdept))

GETW(AVG(Student.Sage)):Student.Sdept='IS'2022/12/1663數據庫原理檢索操作(11)集函數(Aggregationfuncti更新操作(1)修改操作首先用HOLD語句將要修改的元組從數據庫中讀到工作空間中然后用宿主語言修改工作空間中元組的屬性

最后用UPDATE語句將修改后的元組送回數據庫中UPDATE語句實現步驟是:例1795007學生從計算機科學系轉到信息系ALPHA語言中,不允許修改主碼值;只能先刪除該元組,再插入具有新主碼值的元組。HOLDW(Student.Sno,Student.Sdetp):Student.Sno='95007'

(從Student關系中讀出95007學生的數據)MOVE'IS'

TOW.Sdept(用宿主語言進行修改)UPDATEW(Student)

(把修改后的元組送回Student關系)2022/12/1664數據庫原理更新操作(1)修改操作首先用HOLD語句將要修改的元組更新操作(2)插入操作首先用宿主語言在工作空間中建立新元組

然后用PUT語句把該元組存入指定的關系中PUT語句實現步驟:例18學校新開設了一門2學分的課程“計算機組織與結構”,其課程號為8,直接先行課為6號課程。插入該課程元組。PUT語言只對一個關系操作,即表達式必須為單個關系名。MOVE'8'TOW.CnoMOVE'

計算機組織與結構'

TOW.CnameMOVE'6'TOW.CpnoMOVE'2'TOW.CcreditPUTW(Course)2022/12/1665數據庫原理更新操作(2)插入操作首先用宿主語言在工作空間中建立新更新操作(3)刪除用HOLD語句把要刪除的元組從數據庫中讀到工作空間中用DELETE語句刪除該元組DELETE語句實現步驟:例1995110學生因故退學,刪除該學生元組HOLDW(Student):Student.Sno='95110' DELETEW2022/12/1666數據庫原理更新操作(3)刪除用HOLD語句把要刪除的元組從例20將學號95001改為95102

HOLDW(Student):Student.Sno='95001'DELETEW(Student)MOVE'95102'TOW.SnoMOVE‘李勇'

TOW.SnameMOVE‘男'

TOW.SsexMOVE'20'TOW.SageMOVE'CS'TOW.SdeptPUTW(Student)2022/12/1667數據庫原理例20將學號95001改為95102HOLDW(St例21刪除全部學生HOLDW(SC)DELETEW+HOLDW(Student)DELETEWSC與Student之間具有參照關系,為保證參照完整性,刪除Student中元組時相應的要刪除SC中的元組。2022/12/1668數據庫原理例21刪除全部學生HOLDW(SC)+HOL2.5.3域關系演算語言QBE域關系演算用域變量代替元組變量的每一個分量,域變量的變化范圍是某個值域而不是一個關系。QBE為基于屏幕表格的查詢語言,用戶通過終端屏幕編輯程序以填寫表格的方式構造查詢要求,而查詢結果也是以表格形式顯示。QBE是QueryByExample(即通過例子進行查詢)2022/12/1669數據庫原理2.5.3域關系演算語言QBE域關系演算用域變量代替檢索操作更新操作

(1)簡單查詢

(2)條件查詢

(3)集函數

(4)對查詢結果排序

(1)修改操作

(2)插入操作

(3)刪除操作域關系演算2022/12/1670數據庫原理檢索操作更新操作(1)簡單查詢(2)條件查詢(3)檢索操作(1)簡單查詢例1求信息系全體學生的姓名1)用戶提出要求2)屏幕顯示空白表格3)用戶在最左邊一欄輸入關系名4)屏幕顯示該關系的欄名,即Student關系的各個屬性名5)用戶在上面構造查詢要求6)屏幕顯示查詢結果Student

SnoSnameSsexSageSdept

P.T

IS

P.李勇

IS

IS劉晨張立StudentSnoSnameSsexSageSdept操作步驟:2022/12/1671數據庫原理檢索操作(1)簡單查詢例1求信息系全體學生的姓名1例2查詢全體學生的全部數據Student

SnoSnameSsexSageSdeptP.95001P.李勇

P.男

P.20P.CS

Student

SnoSnameSsexSageSdeptP.示例元素下面要加下劃線,P.是表示打印的操作符。示例元素是這個域中可能的一個值,不必是查詢結果中的元素。2022/12/1672數據庫原理例2查詢全體學生的全部數據StudentSno(2)條件查詢例3求年齡大于19歲的學生的學號Student

SnoSnameSsexSageSdeptP.95001

>19

檢索操作2022/12/1673數據庫原理(2)條件查詢例3求年齡大于19歲的學生的學號例4求計算機科學系年齡大于19歲的學生的學號Student

SnoSnameSsexSageSdeptP.95001

>19CS

Student

SnoSnameSsexSageSdeptP.95001 CS

P.95001

>192022/12/1674數據庫原理例4求計算機科學系年齡大于19歲的學生的學號Stu例5查詢計算機科學系或者年齡大于19歲的學生的學號Student

SnoSnameSsexSageSdeptP.95001 CS

P.95002

>19例6查既選修了1號課程又選修了2號課程的學生的學號SC

SnoCnoGradeP.950011P.950012 2022/12/1675數據庫原理例5查詢計算機科學系或者年齡大于19歲的學生的學號S“與”:(1)條件寫在同一行上;

(2)把兩個條件寫在不同行上,但使用

相同的示例元素。“或”:兩個條件寫在不同行上,且使用不同的示例元素。2022/12/1676數據庫原理“與”:(1)條件寫在同一行上;“或”:兩個條件寫在不同行上例7查詢選修1號課程的學生姓名Student

SnoSnameSsexSageSdept

95001

P.李勇

SC

SnoCnoGrade

950011Sno為連接屬性,其值在兩個表中要相同。2022/12/1677數據庫原理例7查詢選修1號課程的學生姓名Student例8查詢未選修1號課程的學生姓名Student

SnoSnameSsexSageSdept┓95001P.李勇

SC

SnoCnoGrade

950011邏輯非——將其寫在關系名下面。2022/12/1678數據庫原理例8查詢未選修1號課程的學生姓名Student例9查詢有兩個人以上選修的課程號SC

SnoCnoGrade

95001P.1┓95001

12022/12/1679數據庫原理例9查詢有兩個人以上選修的課程號SCSno檢索操作(3)集函數函數名功能CNT對元組計數SUM求總和AVG求平均值MAX求最大值MIN求最小值例10查詢信息系學生的平均年齡Student

SnoSnameSsexSageSdept

P.AVG.ALL.IS2022/12/1680數據庫原理檢索操作(3)集函數函數名功能檢索操作(4)對查詢結果排序Student

SnoSnameSsexSageSdept例11查全體男生的姓名,要求查詢結果按所在系升序排序,對相同系的學生按年齡降序排序P.李勇男

AO(i).DO(i).i

為排序的優先級,i值越小,優先級越高升序降序DO(2).AO(1).2022/12/1681數據庫原理檢索操作(4)對查詢結果排序StudentSno更新操作(1)修改操作例12把95001學生的年齡改為18歲Student

SnoSnameSsexSageSdept

95001U.18

Student

SnoSnameSsexSageSdept

U.9500118

QBE中,不允許修改主碼值;只能先刪除該元組,再插入具有新主碼值的元組;操作符為“U.”。方法1:將操作符“U.”放在值上:方法2:將操作符“U.”放在關系上:2022/12/1682數據庫原理更新操作(1)修改操作例12把95001學生的年齡例13把95001學生的年齡增加1歲Student

SnoSnameSsexSageSdept

9500117

U.9500117+1

例14將計算機科學系所有學生的年齡都增加1歲Student

SnoSnameSsexSageSdept

95001

17CSU.95001

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論