全國計(jì)算機(jī)三級數(shù)據(jù)庫考點(diǎn)分析之?dāng)?shù)據(jù)庫系統(tǒng)基本原理[2]

字號:

考點(diǎn)12關(guān)系數(shù)據(jù)模型
     關(guān)系模型由關(guān)系數(shù)據(jù)結(jié)構(gòu)、關(guān)系操作集合和關(guān)系完整性約束3部分組成。
     1.關(guān)系數(shù)據(jù)結(jié)構(gòu)
     關(guān)系模型中的數(shù)據(jù)結(jié)構(gòu)非常單一。實(shí)體及實(shí)體間的聯(lián)系都用關(guān)系表示,一個(gè)關(guān)系就是一張二維表,是關(guān)系模型中數(shù)據(jù)的邏輯結(jié)構(gòu)。
     2.關(guān)系操作集合
     關(guān)系模型中的關(guān)系操作的理論依據(jù)為關(guān)系代數(shù)和關(guān)系演算。
     關(guān)系模型中常用的關(guān)系操作包括:選擇(select)、投影(project)、連接(join)、除(divide)、并(union)交(intersection)和差(difference)等,以及查詢(query)操作和增(insert)、刪(delete)、改(update)操作兩大部分。查詢的表達(dá)能力是其中最主要的部分。
     關(guān)系數(shù)據(jù)語言可以分為如下3類:關(guān)系代數(shù)語言、關(guān)系演算語言(包括元組關(guān)系演算語言和域關(guān)系演算語言)及具有關(guān)系代數(shù)和關(guān)系演算雙重特點(diǎn)的語言。
     3.關(guān)系的完整性約束
     數(shù)據(jù)庫的數(shù)據(jù)完整性是指數(shù)據(jù)庫中數(shù)據(jù)的正確性和相容性,那是一種語義概念,包括兩個(gè)方面:與現(xiàn)實(shí)世界中應(yīng)用需求的數(shù)據(jù)的相容性和正確性數(shù)據(jù)庫內(nèi)數(shù)據(jù)之間的相容性和正確性。
     關(guān)系模型中有3類完整性約束:實(shí)體完整性、參照完整性和用戶自定義的完整性。
     4.5關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)
     考點(diǎn)13關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)和基本術(shù)語
     (1)關(guān)系( Relation) ;關(guān)系是個(gè)元素個(gè)數(shù)為K(K,1 )的元組集合。一個(gè)關(guān)系對應(yīng)一個(gè)二維表,二維表名就是關(guān)系名。
     (2)屬性(Attribute)和值域(Domain):二維表中的列(字段),稱為屬性,屬性的個(gè)數(shù)稱為關(guān)系的元數(shù),列的值稱為屬性值.屬性值的取值范圍稱為值域
     (3)關(guān)系模式(Relation Schema):關(guān)系的描述稱為關(guān)系模式。
     (4)元組(Tuple):二維表中的行(記錄的值)稱為一個(gè)元組。關(guān)系模式和元組的集合通稱為關(guān)系。
     (5)候選碼(Candidate Key)或候選鍵:如果在一個(gè)關(guān)系中,存在多個(gè)屬性(或?qū)傩约?都能用來標(biāo)識該關(guān)系的元組,這些屬性(或?qū)傩约?都稱為該關(guān)系的候選碼或候選鍵。而包含在任何一個(gè)候選碼中的屬性稱為主屬性或碼屬性,相反,不包含的為非主屬性或非碼屬性。關(guān)系模式的所有數(shù)據(jù)組是這個(gè)關(guān)系模式的候選碼,稱為全碼。
     (6)主碼(Primary Key)或主鍵:在一個(gè)關(guān)系的若十個(gè)候選碼中指定一個(gè)用來標(biāo)識該關(guān)系的元組,這個(gè)的碼稱為該關(guān)系的主碼或主鍵。
     (7)外碼(Foreign Key)或外鍵:當(dāng)關(guān)系中的某個(gè)屬性(或?qū)傩越M)不是該關(guān)系的主碼或只是主碼的一部分,但卻是另一個(gè)關(guān)系的主碼時(shí),稱該屬性(或?qū)傩越M)為這個(gè)關(guān)系的外碼。
     (8)參照關(guān)系(Referencing Relation)與被參照關(guān)系( Referenced Relation):它們是指與外碼相關(guān)聯(lián)的兩個(gè)關(guān)系。以外碼作為主碼的關(guān)系稱為參照關(guān)系;外碼所在的關(guān)系稱為被參照關(guān)系或目標(biāo)關(guān)系。
     (9)分量(Component):元組中的一個(gè)屬性值。
     (10)主屬性(Primary Attribute)和非主屬性(Nonprimary Attribute):關(guān)系中包含在任何一個(gè)候選碼中的屬性稱為主屬性或碼屬性,不包含在任何一個(gè)候選碼中的屬性稱為非主屬性或非碼屬性。
     考點(diǎn)14關(guān)系的形式定義和關(guān)系數(shù)據(jù)庫對關(guān)系的限定
     1.關(guān)系的形式定義
     關(guān)系從數(shù)學(xué)的觀點(diǎn)來定義有以下兩種解釋。
     (1)集合論觀點(diǎn):即前面所述,關(guān)系是一個(gè)元素個(gè)數(shù)為K(K,1)的元組集合。
     (2)值域的觀點(diǎn):關(guān)系是屬性值域笛卡兒積的一個(gè)子集。
     2.關(guān)系數(shù)據(jù)犀對關(guān)系的限定
     當(dāng)關(guān)系作為關(guān)系數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu)時(shí),關(guān)系數(shù)據(jù)庫對關(guān)系有如下的限制。
     (1)列是同質(zhì)的.即每一列中的分量是同一類型的數(shù)據(jù),來自同一個(gè)域。
     (2)不同的列可以出自同一個(gè)域,稱其中的每一列為一個(gè)屬性,不同的屬性要給予不同的屬性名。
     (3)列的順序無關(guān)緊要,即列的次序可以任意交換。
     (4)任意兩個(gè)元組不能完全相同。
     (5)行的順序無關(guān)緊要,即行的次序可以任意交換。
     (6)每一個(gè)屬性是不可分解的這是關(guān)系數(shù)據(jù)庫對關(guān)系的最基本的一條限定。分量必須取原子值,即每一個(gè)分量都必須是不可拆分的數(shù)據(jù)項(xiàng)。
     4.6關(guān)系模型的完整性約束
     考點(diǎn)15數(shù)據(jù)完整性規(guī)則的分類
     關(guān)系模型的完整性規(guī)則是對關(guān)系的某種約束條件。關(guān)系模型中可以有3類完整性約束:實(shí)體完整性、參照完整性和用戶自定義的完整性。其中實(shí)體完整性和參照完整性是關(guān)系模型必須滿足的完整性約束條件,被稱為兩個(gè)不變性、應(yīng)該由關(guān)系系統(tǒng)自動支持。
     1.實(shí)體完整性規(guī)則
     實(shí)體完整性規(guī)則:若屬性“是基本關(guān)系“的主屬性,則屬性A不能取空。實(shí)體完整性關(guān)系的所有主屬性都不能取空值,而不僅是主碼整體不能取空值。說明實(shí)體完整性規(guī)則應(yīng)包括如下幾個(gè)方面:
     (1)實(shí)體完整性規(guī)則是針對基本關(guān)系而言的。一個(gè)關(guān)系(基本表)通常對應(yīng)現(xiàn)實(shí)世界的一個(gè)實(shí)體集。
     (2)現(xiàn)實(shí)世界中的實(shí)體是可區(qū)分的,即它們具有某種性標(biāo)識。
     (3)相應(yīng)地,關(guān)系模型中以主碼作為標(biāo)識。
     (4)主碼中的屬性即主屬性不能取空值。所謂空值就是“不知道”或“不確定”的值。
     2參照完整性規(guī)則
     若屬性(或?qū)傩越M)F是基本關(guān)系R的外碼,它與基本關(guān)系S的主碼K.s相對應(yīng)(基本關(guān)系R和S不一定是不同的關(guān)系),則對于R中每個(gè)元組在F上的值必須為:取空值(F的每個(gè)屬性值均為空值)或者等于S中某個(gè)元組的主碼值。
     3用戶有定義的完整性
     用戶定義的完整性通常是定義對關(guān)系中除外碼與主碼屬性之外的其他屬性取值的約束,即對其他屬性值域的約束,也稱為域完整性規(guī)則,包括數(shù)據(jù)類型、精度、取值范圍、是否允許空值等。
     4.7關(guān)系代數(shù)
     考點(diǎn)16傳統(tǒng)集合運(yùn)算
     傳統(tǒng)的集合運(yùn)算包括并、交、差和廣義笛卡兒積4種運(yùn)算。
     1.并(union)
     設(shè)關(guān)系R和關(guān)系S具有相同的目n(即都有n個(gè)屬性),且相應(yīng)的屬性取自同一個(gè)域,則關(guān)系R與S的并是由屬于R或?qū)儆赟的元組組成的,結(jié)果仍為n目關(guān)系,記做:
     RUS={t/t∈R∨t∈S},t是元組變量。
     2.差(difference)
     設(shè)關(guān)系R和關(guān)系S具有相同的目n,且相應(yīng)的屬性取自同一個(gè)域,則關(guān)系R與關(guān)系S的差是由屬于R而不屬于S的所有元組組成的,結(jié)果仍為n目關(guān)系,記做:
     R-S={t/t∈R∧t¢S},t是元組變量.
     3.交(intersection)
     設(shè)關(guān)系R和關(guān)系S具有相同的目n,且相應(yīng)的屬性取自同一個(gè)域,則關(guān)系R與關(guān)系S的交是由既屬于R而不屬于S的所有元組組成的,結(jié)果仍為n目關(guān)系,記做:
     R∩S={t|t∈R∧t∈S}t ER八:ES},t是元組變量。
     顯然R自s=R一(R一s)。
     4.廣義笛卡兒積(Extended Cartesian Product)
     設(shè)關(guān)系R和s的元數(shù)分別是廠和,,定義R和s的笛卡兒積是一個(gè)(r+s)元元組的集合,每一個(gè)元組的前r個(gè)分量來自R的一個(gè)元組,后s個(gè)分量來自S的一個(gè)元組。若R有m個(gè)元組,S有n個(gè)元組,則關(guān)系R 和S的廣義笛卡兒積有m ×n個(gè)元組,記做:
     R×S={t|t=<t¬¬¬¬r ,ts>∧t¬¬¬¬r ∈ts∈S
     考點(diǎn)17專門的關(guān)系運(yùn)算
     專門的關(guān)系運(yùn)算包括:對單個(gè)關(guān)系進(jìn)行垂直分解(投影操作)或水平分解(選擇操作)和對多個(gè)關(guān)系進(jìn)行結(jié)合(連接操作)等。
     1.選擇(selection)
     選擇又稱為限制,是在關(guān)系R中選擇滿足給定條件的各元組,記做:
     (R)={t|t∈R∧F(t=′真′)},其中F表示選擇條件,是一個(gè)邏輯表達(dá)式。
     選擇運(yùn)算實(shí)際上是從關(guān)系R中選取使邏輯表達(dá)式F為真的元組。這是從行的角度進(jìn)行的運(yùn)算。
     2.投影(projection)
     關(guān)系R上的投影是從R中選擇出若干屬性列組成新的關(guān)系,記做:
     二1(R、={t[A〕I t ER{,A為R的屬性列。
     投影操作實(shí)際上是從關(guān)系中選取某些列,即從列的角度進(jìn)行的運(yùn)算。
     3.連接(join )
     連接是從兩個(gè)關(guān)聯(lián)的笛卡兒積中選取屬性間滿足一定條件的元組。
     連接運(yùn)算中有兩種最為重要也是常用的連接,一種是等值連接( equi - join),一種是自然連接(naturaljoin)自然連接是構(gòu)造新關(guān)系的有效方法。一般,自然連接使用在兩個(gè)關(guān)系有公共屬性的情況中。
     4.除(di%-ision)
     給定關(guān)系R(X,州和別Y, Z),其中X,Y, Z為屬性組。R中的Y與S中的Y可以有不同的屬性名,但必須出自相同的域集R與S的除運(yùn)算得到一個(gè)新的關(guān)系尸(X),P是R中滿足下列條件的元組在X屬性列上的投影:元組在X分量值的對象Yx包含S在Y上投影的集合。記做:
     R÷S=t,[X]t,ER八二,(S) C-玖}
     除操作是同時(shí)從行和列的角度進(jìn)行運(yùn)算。
     4.8 SQL概述:
     考點(diǎn)18結(jié)構(gòu)化查詢語言SQL
     SQL (Structured Query Language)稱為結(jié)構(gòu)化查詢語言,是于1974年由Boyce和Chamberlin提出的,1975年IBM公司研制的關(guān)系數(shù)據(jù)庫管理系統(tǒng)的原型系統(tǒng)System R實(shí)現(xiàn)了SQL語言。SQL是一個(gè)通用的、功能極強(qiáng)的關(guān)系數(shù)據(jù)庫語言。我國制定了SQL的國家標(biāo)準(zhǔn)為GB12911, SQL已經(jīng)成為關(guān)系數(shù)據(jù)庫領(lǐng)域中的一種主流語言。
     考點(diǎn)19 SQL的特點(diǎn)一
     SQL語言集數(shù)據(jù)查詢、數(shù)據(jù)操縱、數(shù)據(jù)定義和數(shù)據(jù)控制功能于一體,主要特點(diǎn)包括以下幾個(gè)方面:
     (1)綜合統(tǒng)一。
     (2)高度非過程化。
     (3)面向集合的操作方式。
     (4)以同一種語法結(jié)構(gòu)提供兩種使用方式。
     (5)語言簡潔,易學(xué)易用。
     考點(diǎn)20 SQL數(shù)據(jù)庫體系結(jié)構(gòu)
     SQL語言支持關(guān)系數(shù)據(jù)庫三級模式結(jié)構(gòu):其中外模式對應(yīng)于視圖和部分基本表,模式對應(yīng)于基本表,內(nèi)模式對應(yīng)于存儲文件:
     基本表是本身獨(dú)立存在的表,在SQL中一個(gè)關(guān)系就是一個(gè)基本表。一個(gè)基本表對應(yīng)一個(gè)存儲文件,一個(gè)表可以帶若干索引,索引也存放在存儲文件中存儲文件的邏輯結(jié)構(gòu)組成了關(guān)系數(shù)據(jù)庫的內(nèi)模式。存儲文件的物理結(jié)構(gòu)是任意的,對用戶是透明的。
     視圖是從一個(gè)或幾個(gè)基本表導(dǎo)出的表二視圖是一個(gè)虛表視圖在概念上與基本表等同,用戶可以在視上再定義視圖。
     4.9 SQL的數(shù)據(jù)定義
     考點(diǎn)21基本表
     1.定義基本表
     SQL語言使用CREATE TABLE語句定義基本表,其格式如下:
     CREATE TABLE<表名>(<列名><數(shù)據(jù)類型>[列級完整性約束〕
     [,<列名><數(shù)據(jù)類型>[列級完整性約束]…=
     〔,<表級完整性約束>〕);
     如果完整性約束條件涉及到該表的多個(gè)屬性列,則必須定義在表級上,否則既可以定義在列級,也可以定義在表級。
     2.修改基本表
     SQL語言用ALTER TABLE語句修改基本表,其格式為:
     ALTER TABLE<表名>
     「ADD<新列名><數(shù)據(jù)類型>[完整性約束〕〕
     [DROP<完整性約束名>〕
     [MODIFY<列名><數(shù)據(jù)類型>」;
     ADD子句用于增加新列和新的完整性約束條件。DROP子句用于刪除指定的完整性約束條件。MOD-IFY子句用于修改原有的列定義,包括修改列名和數(shù)據(jù)類型。
     3.刪除基本表
     當(dāng)某個(gè)基本表不再需要時(shí),可以用DROP TABLE語句進(jìn)行刪除,其格式為:
     DROP TABLE<表名>
     基本表一旦被刪除,表中的數(shù)據(jù)、此表上建立的索引和視圖都將自動被刪除。因此執(zhí)行刪除基本表的操作時(shí)一定要格外小心。