

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、全國計算機四級數(shù)據(jù)庫考試復習資料一、數(shù)據(jù)模型1. 數(shù)據(jù)模型的三要素(1 )數(shù)據(jù)結(jié)構(gòu) 數(shù)據(jù)結(jié)構(gòu)是所研究的對象類型 (Object Type) 的集合。這些對象和對象類型是數(shù)據(jù)庫的組成成分。一般可 分為兩類:一類是與數(shù)據(jù)類型、內(nèi)容和其它性質(zhì)有關(guān)的對象;一類是與數(shù)據(jù)之間的聯(lián)系有關(guān)的對象。前者如網(wǎng)狀模型中的 數(shù)據(jù)項和記錄,關(guān)系模型中的域、屬性和關(guān)系等。后者如網(wǎng) 狀模型中的關(guān)系模型(set type )。在數(shù)據(jù)庫領(lǐng)域中,通常 按照數(shù)據(jù)結(jié)構(gòu)的類型來命名數(shù)據(jù)模型,進而對數(shù)據(jù)庫管理系 統(tǒng)進行分類。如層次結(jié)構(gòu)、網(wǎng)狀結(jié)構(gòu)和關(guān)系結(jié)構(gòu)的數(shù)據(jù)模型 分別稱作為層次模型、網(wǎng)狀模型和關(guān)系模型。相應(yīng)地,數(shù)據(jù) 庫分別稱作為層次數(shù)
2、據(jù)庫、網(wǎng)狀數(shù)據(jù)庫和關(guān)系數(shù)據(jù)庫。(2)數(shù)據(jù)操作 數(shù)據(jù)操作是指對各種對象類型的實例(或值) 所允許執(zhí)行的操作的集合,包括操作及有關(guān)的操作規(guī)則。在數(shù) 據(jù)庫中,主要的操作有檢索和更新(包括插入、刪除、修改) 兩大類。數(shù)據(jù)模型定義了這些操作的定義、語法(即使用這些 操作時所用的語言)。數(shù)據(jù)結(jié)構(gòu)是對系統(tǒng)靜態(tài)特性的描述,而數(shù)據(jù)操作是對系統(tǒng)動態(tài)特性的描述。兩者既有聯(lián)系,又有區(qū)別。(3)數(shù)據(jù)的約束條件數(shù)據(jù)的約束條件是完整性規(guī)則的集合。 完整性規(guī)則是指在給定的數(shù)據(jù)模型中,數(shù)據(jù)及其聯(lián)系所具有的 制約條件和依存條件,用以限制符合數(shù)據(jù)模型的數(shù)據(jù)庫的狀態(tài) 以及狀態(tài)的變化,確保數(shù)據(jù)的正確性、有效性和一致性。2.概念模型數(shù)據(jù)
3、模型是數(shù)據(jù)庫系統(tǒng)的核心和基礎(chǔ)。每個DBMS 軟件都是基于某種數(shù)據(jù)模型的。為了把現(xiàn)實世界中的具體事物或事物之間 的聯(lián)系表示成 DBMS 所支持的數(shù)據(jù)模型,人們首先必須將現(xiàn)實 世界的事物及其之間的聯(lián)系進行抽象,轉(zhuǎn)換為信息世界的概念 模型;然后將信息世界的概念模型轉(zhuǎn)換為機器世界的數(shù)據(jù)模 型。也就是說,首先把現(xiàn)實世界中的客觀對象抽象成一種信息 結(jié)構(gòu)。這種信息結(jié)構(gòu)并不依賴于具體的計算機系統(tǒng)和DBMS 然后,再把概念模型轉(zhuǎn)換為某一計算機系統(tǒng)上某一DBMS 所支持的數(shù)據(jù)模型。因此,概念模型是從現(xiàn)實世界到機器世界的一個 中間層次?,F(xiàn)實世界的事物反映到人的大腦之中,然后人們開 始認識這些事物,經(jīng)過選擇、命名、分
4、類和組織等抽象工作之 后形成概念模型,并進入到信息世界。?用戶(user)關(guān)心的是現(xiàn)實世界中的事物、事物的屬性及其 相互關(guān)系。例如,用戶可能關(guān)心他的顧客及其屬性,如顧客地 址、銀行帳號等等。用戶也關(guān)心自己的定貨帳目如誰訂的貨、訂的什么和訂多少等等。?系統(tǒng)分析員(analyst)同樣也關(guān)心現(xiàn)實世界,但是系統(tǒng)分 析員需要分析用戶的信息需求。作為需求分析的結(jié)果,分析員 必須以文檔的形式對需求進行結(jié)構(gòu)化的描述;這個文檔就是信息模型。?實體(Entity )實體是構(gòu)成數(shù)據(jù)庫的基本元素。實體是指一 個存在的東西以區(qū)別這個東西所具有的屬性和這個東西與其 它東西的聯(lián)系。實體可以是人,也可以是物;可以是實際對象
5、,也可以是概念;可以是事物本身,也可以是指事物之間的聯(lián)系。?屬性(Attribute ) 一個實體可以由若干個屬性來刻畫。屬 性是相對實體而言的,是實體所具有的特性。?關(guān)鍵字(Key)能唯一地標識實體的屬性的集合稱為關(guān)鍵字(或碼)。?域( Domain)屬性的取值范圍稱作域。?實體型(Entity Type ) 一類實體所具有的共同特征或?qū)傩?的集合稱為實體型。一般用實體名及其屬性來抽象地刻畫一類 實體的實體型。?實體集(Entity Set )同型實體的集合叫實體集。例如,學 生就是一個實體集。實體集的名即是實體型。對于學生和(學 號,姓名,年齡,系,年級)均是實體型,而學生是對實體型(學號
6、,姓名,年齡,系,年級)所起的名稱,兩者是指同一 客觀對象。但本科生和研究生可以為相同實體型,而實體集不 同。?聯(lián)系(Relationship )現(xiàn)實世界的事物之間是有聯(lián)系的。一 般存在兩類聯(lián)系:一是實體內(nèi)部的組成實體的屬性之間的聯(lián) 系, 二是實體之間的聯(lián)系。 在考慮實體內(nèi)部的聯(lián)系時,是把屬 性看作為實體。一般來說,兩個實體之間的聯(lián)系可分為三種:(1)一對一(1 : 1)聯(lián)系 若對于實體集 A 中的每一個實體, 實體集 B 中至多有唯一的一個實體與之聯(lián)系,反之亦然,則稱實體集 A 與實體集 B 具有一對一聯(lián)系,記作1 : 1。(2)對多(1 : n)聯(lián)系若對于實體集 A 中的每個實體,實 體集
7、 B 中有 n 個實體(n 0)與之聯(lián)系;反之,對于實體集 B 中的每一個實體,實體集 A 中至多只有一個實體與之聯(lián)系,則稱實體集 A 與實體集 B 有一對多聯(lián)系,記為 1 : n。相應(yīng)地有多 對一(n : 1)聯(lián)系 多對一聯(lián)系,從本質(zhì)上說,是一對多聯(lián)系 的逆轉(zhuǎn)。其定義同一對多聯(lián)系類似,不再贅述。(3)多對多(m:n)聯(lián)系 若對于實體集 A 中的每一個實體,實體集 B 中有 n 個實體(n0)與之聯(lián)系;反之,對于實體集 B 中的每一個實體,實體集 A 中也有 m 個實體(m 0)與之對應(yīng), 則稱實體集 A 與實體集 B 具有多對多聯(lián)系,記作 m:n。實質(zhì)上, 多對多聯(lián)系是任意一種聯(lián)系。另外,同
8、一實體集內(nèi)的各個實體 間也可以有各種聯(lián)系。概念模型的表示方法最常用的是實體一 聯(lián)系方法(Entity-Relationship Approach ),簡稱 E-R 方法。 該方法是由 P.P.S.Chen 在 1976年提出的。E-R 方法用 E-R 圖 來描述某一組織的概念模型。在這里僅介紹 E-R圖的要點。在E-R 圖中:a)長方形框表示實體集,框內(nèi)寫上實體型的名稱。b)用橢圓框表示實體的屬性,并用有向邊把實體框及其屬性 框連接起來。c)用菱形框表示實體間的聯(lián)系,框內(nèi)寫上聯(lián)系名,用無向邊 把菱形框及其有關(guān)的實體框連接起來,在旁邊標明聯(lián)系的種 類。如果聯(lián)系也具有屬性,則把屬性框和菱形框也用無
9、向邊連 接上。3.三種主要的數(shù)據(jù)模型實際 DBM 斷支持的數(shù)據(jù)模型主要有三種:?層次模型(Hierarchical Model )?網(wǎng)狀模型(Network Model )?關(guān)系模型(Relational Model )其中,關(guān)系模型是當前 DBMS 所支持的數(shù)據(jù)模型的主流。90 年代運行的 DBMS!乎都是基于 關(guān)系模型的。層次模型和網(wǎng)狀模型統(tǒng)稱為非關(guān)系模型。非關(guān)系 模型的結(jié)構(gòu)可以和圖論中的圖相對應(yīng),比較直觀,但在理論上 不完備,實現(xiàn)效率較低,故此目前很少用。但是最近,層次模 型在研究面向?qū)ο蟮?DBMS 中已得到重視。在關(guān)系模型中,數(shù)據(jù)在用戶的觀點中(或在用戶視圖中)的邏輯結(jié)構(gòu)是一張二維表
10、(Table )。?關(guān)系(Relation ),對應(yīng)于平常講的一張表。?元組(Tuple),表中的一行。?屬性(Attribute ),表中的一列稱為一個屬性,給每一列起 一個名,稱為屬性名。這一列或這個屬性所有可能取的值的集 合稱為這個屬性的值域(Domain),值域中的一個元素叫做這 個屬性的值。?主關(guān)鍵字(Primary Key Attribute 或 Primary Key ),是指 能唯一標識一個元組的一個或一組屬性。?分量(Attribute value ),是指元組中的一個屬性值。?關(guān)系模式(Relational Schema ),是對關(guān)系的描述,一般用 關(guān)系名(屬性名 1,屬性
11、名2,屬性名 n)來表示。同層次 模型和網(wǎng)狀模型相比較,關(guān)系模型具有下列特點:(1 )概念單一 在關(guān)系模型中,無論是實體還是實體之間的聯(lián) 系都用關(guān)系來表示。在關(guān)系模型中,在用戶的觀點中,數(shù)據(jù)的 邏輯結(jié)構(gòu)就是表,也只有這唯一的概念。在非關(guān)系模型中,用 戶要區(qū)分記錄型與記錄型之間的聯(lián)系兩個概念;當環(huán)境復雜時,數(shù)據(jù)結(jié)構(gòu)異常復雜,難以掌握。而關(guān)系模型,由于概念單 一,可以變復雜為直觀、簡單,易學易用。(2) 規(guī)范化 所謂關(guān)系規(guī)范化是指在關(guān)系模型中,每一個關(guān)系 都要滿足一定的條件要求。這些條件被稱為規(guī)范條件。對于關(guān) 系,一個最基本的規(guī)范條件是,要求關(guān)系中的每一個屬性(或 分量)均是不可分的數(shù)據(jù)項;也就是
12、說不允許表中有表,表是 不可嵌套的。(3) 在關(guān)系模型中,用戶對數(shù)據(jù)的操作的輸入和輸岀都是表,也就是說,用戶通過操作舊表而得到一張新表??傊?,關(guān)系模 型概念簡單,結(jié)構(gòu)清晰,用戶易學易用,有嚴格的以數(shù)學為基 礎(chǔ)的關(guān)系理論作指導,便于DBMS 勺實現(xiàn)。 基于關(guān)系的 DBMS 簡化了應(yīng)用程序員的工作,便于數(shù)據(jù)庫應(yīng)用系統(tǒng)的設(shè)計和維護。故此,關(guān)系模型自誕生以后就得到了迅速的發(fā)展,成為應(yīng)用最 為廣泛的、唯一的數(shù)據(jù)模型。二、數(shù)據(jù)庫系統(tǒng)的結(jié)構(gòu)1.數(shù)據(jù)庫系統(tǒng)的三級模式結(jié)構(gòu)數(shù)據(jù)庫管理系統(tǒng)的三級模式結(jié)構(gòu)由外模式、模式和內(nèi)模式組成。夕卜模式( external schema ),或子模式(subschema)或 用戶
13、模式(user schema),是指數(shù)據(jù)庫用戶所看到的數(shù)據(jù)結(jié)構(gòu), 是用戶看到的數(shù)據(jù)視圖。模式( schema)或邏輯模式(logicschema),是數(shù)據(jù)庫中對全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特性的描述, 是所有用戶所見到的數(shù)據(jù)視圖的總和。外模式是模式的一部分。內(nèi)模式(internal schema),或存儲模式 (storage schema), 或物理模式(physicalschema ),是指數(shù)據(jù)在數(shù)據(jù)庫系統(tǒng)內(nèi)的 存儲介質(zhì)上的表示,即對數(shù)據(jù)的物理結(jié)構(gòu)和存取方式的描述。模式描述的是數(shù)據(jù)的全局的邏輯結(jié)構(gòu),決定了 DBMS 的功能。 外模式涉及的僅是局部的邏輯結(jié)構(gòu),是模式的子集,是對模式 的調(diào)用。數(shù)據(jù)庫系
14、統(tǒng)的三級模式是對數(shù)據(jù)進行三個層次抽象的 工具。通過三級模式,把對數(shù)據(jù)的具體組織留給DBMS 來完成,使得用戶能在高層次上處理數(shù)據(jù)的邏輯結(jié)構(gòu),而不必關(guān)心數(shù)據(jù) 的物理結(jié)構(gòu)。為了實現(xiàn)這三個層次這間的聯(lián)系,DBMS 在溝通三 級模式中提供了兩個映象:外模式-模式映象模式-內(nèi)模式映象(1) 模式 模式規(guī)定了數(shù)據(jù)庫中全部數(shù)據(jù)的一個邏輯表示或描 述形式。模式既不同于內(nèi)模式,也不同于外模式。它比內(nèi)模式 抽象,不涉及數(shù)據(jù)的物理結(jié)構(gòu)和存儲介質(zhì)。它與具體的應(yīng)用程 序或高級語言無關(guān)。(2) 外模式 外模式是個別用戶的數(shù)據(jù)視圖,即與某一應(yīng)用有 關(guān)的數(shù)據(jù)的邏輯表示。(3) 內(nèi)模式內(nèi)模式是全部數(shù)據(jù)庫的內(nèi)部表示或底層描述,是
15、 用來定義數(shù)據(jù)的物理結(jié)構(gòu)和存取方式的。(4) 二級映象 對于同一個模式,可以有任意多個外模式。外 模式-模式的映象定義了某個外模式和模式之間的對應(yīng)關(guān)系。這些映象的定義通常包含在各自的外模式中。當模式改變時, 外模式-模式的映象要做相應(yīng)的改變,以保證外模式的不變性。 這是數(shù)據(jù)庫管理員(DBA 的責任。模式-內(nèi)模式的映象定義了 數(shù)據(jù)邏輯結(jié)構(gòu)和存儲結(jié)構(gòu)之間的對應(yīng)關(guān)系。例如,字段的內(nèi)部 表示等。當數(shù)據(jù)庫的存儲結(jié)構(gòu)改變時,模式-內(nèi)模式的映象也須做相應(yīng)的修改,以使得模式保持不變性。這仍是 DBA 的責任。 正是由于上述二級映象的功能及其自動實現(xiàn),使得數(shù)據(jù)庫系統(tǒng) 中的數(shù)據(jù)具有較高的邏輯獨立性和物理獨立性,從
16、而大大地方 便了用戶的使用。(5)概念模式與模式 ANSI 研究組于 1975年 2 月提出一個臨 時報告。1978 年提出一個最終報告,稱之為 AN- SI/SPARC 報 告,簡稱為 SPARC 報告。SPARC 報告中指出,數(shù)據(jù)庫管理系統(tǒng) 應(yīng)具有三級模式的結(jié)構(gòu),即概念模式、外模式和內(nèi)模式。其中 外模式和內(nèi)模多與上面所講的大致相當。但SPAR(報告中的概念模式是指一個組織或部門所對應(yīng)的現(xiàn)實世界的真實模型,即 概念模型。概念模式僅描述實體及其屬性和聯(lián)系,不涉及機器 世界的概念。概念模型是信息世界范疇內(nèi)的信息的結(jié)構(gòu),而模 式是機器世界范疇內(nèi)的概念模型的邏輯表示。概念模型獨立于 具體的計算機系統(tǒng)
17、,甚至是和計算機無關(guān)的,是一個組織或部 門的模型。常用的描述概念模式的方法是E-R 方法。模式是依賴于具體的計算機及其 DBMS 勺。模式通過三種具體模型:層次 模型、網(wǎng)狀模型和關(guān)系模型來加以實現(xiàn)。概念模式必須轉(zhuǎn)換成 具體的數(shù)據(jù)模型,然后才能在相應(yīng)的DBMS 上實現(xiàn)。概念模型和模式都是描述信息或數(shù)據(jù)的整體結(jié)構(gòu)的,然而它們是在不同 的抽象層次上加以描述的。概念模型離機器更遠,形式化程度 低。從遠離機器的觀點看,概念模型更抽象些,但更接近現(xiàn)實 世界。而模式描述使用的是形式化的語言 -模式 DDL 而概念模 型描述使用的是 E-R 圖和一些自然語言。2.使用數(shù)據(jù)庫的計算機系統(tǒng)結(jié)構(gòu) 廣義地講,實際上使
18、用數(shù)據(jù)庫的計算機系統(tǒng)由下列幾個部分組 成的:(1) 硬件部分 包括主機、外部存儲設(shè)備、網(wǎng)絡(luò)設(shè)備和電源等。(2) 軟件部分包括操作系統(tǒng)、DBMS 編譯系統(tǒng)和應(yīng)用開發(fā)工 具軟件等。(3 ) 人員 包括數(shù)據(jù)庫管理員(Data Base Administrator-DBA ),系統(tǒng)分析員(SystemAna - lyst )、應(yīng) 用程序員(Application Programmer )和用戶(User )。3.數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng) DBMS 是數(shù)據(jù)庫系統(tǒng)的核心。DBMS 是負責數(shù)據(jù) 庫的建立、使用和維護的軟件。DBMS 建立在操作系統(tǒng)之上,實施對數(shù)據(jù)庫的統(tǒng)一管理和控制。用戶使用的各種數(shù)據(jù)庫命
19、令以及應(yīng)用程序的執(zhí)行,最終都必須通過DBMS 另外,DBMS 還承擔著數(shù)據(jù)庫的安全保護工作,按照DBA 所規(guī)定的要求,保證數(shù)據(jù)庫的完整性和安全性。DBMS 的主要功能包括以下幾個主要方 面:(1)數(shù)據(jù)庫的定義功能 DBMS 通過提供數(shù)據(jù)描述語言(也稱數(shù) 據(jù)定義語言) (DataDescrip tive Language- DDL) 來對外模式、模式和內(nèi)模式加以描述。然后模式翻譯程序把用 DDL 寫的各種模式的定義源碼翻譯成相應(yīng)的內(nèi)部表示,形成相應(yīng)的 目標形式,分別叫目標外模式、目標模式、目標內(nèi)模式,這些 目標模式是對數(shù)據(jù)庫的描述,而不是數(shù)據(jù)本身。(目標)模式只刻畫了數(shù)據(jù)庫的形式或框架,而不包括
20、數(shù)據(jù)庫的內(nèi)容。這些 目標模式被保存在數(shù)據(jù)字典(或系統(tǒng)目標)之中,作為DBMS存取和管理數(shù)據(jù)的基本依據(jù)。例如,DBMS 根據(jù)這些模式定義,進行物理結(jié)構(gòu)和邏輯結(jié)構(gòu)的映象,進行邏輯結(jié)構(gòu)和用戶視圖的 映象,以導岀用戶要檢索的數(shù)據(jù)的存取方式。(2 )數(shù)據(jù)操縱功能 DBMS 提供數(shù)據(jù)操縱語言(Data Manipulation Language-DMI)實現(xiàn)對數(shù)據(jù)庫中數(shù)據(jù)的一些基本操作,如:檢索、插入、修改、刪除和排序等等。DML 有兩類:一類是嵌入主語言的,如嵌入到C 或 COBOI 等高級語言中。這類 DML 語言本身不能單獨使用,故此稱為宿主型的DML或嵌入式 DML 另一類是非嵌入式語言(包括交互
21、式命令語言 和結(jié)構(gòu)化語言),它的語法簡單,可以獨立使用,由單獨的解 釋或編譯系統(tǒng)來執(zhí)行,所以一般稱為自主型或自含型的DML命令語言是行結(jié)構(gòu)語言,單條執(zhí)行。結(jié)構(gòu)化語言是命令語言的 擴充或發(fā)展,增加了程序結(jié)構(gòu)描述或過程控制功能,如循環(huán)、 分支等功能。命令語言一般逐條解釋執(zhí)行。結(jié)構(gòu)化語言可以解 釋執(zhí)行,也可以編譯執(zhí)行。現(xiàn)在DBMS 一般均提供命令語言的交互式環(huán)境和結(jié)構(gòu)環(huán)境兩種運行方式,供用戶選擇。DBMS 控制和執(zhí)行 DML 語句(或 DML 程序),完成對數(shù)據(jù)庫的操作。對于 自主型的結(jié)構(gòu)化的 DMLDBMS!常采用解釋執(zhí)行的方法,但也 有編譯執(zhí)行的方法,而且編譯執(zhí)行的越來越多。另外,很多系 統(tǒng)同時
22、設(shè)有解釋和編譯兩種功能,由用戶選其一。對于嵌入型 或縮主型DML DBMS-種提供兩種方法:1預編譯方法。2修改和擴充主語言編譯程序(亦稱增強編譯方法)。預編譯方法是,由 DBMS 提供一個預處理程序,對源程序進行語法掃 描,識別岀 DML 語句,并把這些語句轉(zhuǎn)換成主語言中的特殊調(diào) 用語句。主語言必須和 DML 有調(diào)用接口。這樣在連接形成目標 時和主語言語句一起形成可執(zhí)行的目標。(3) 數(shù)據(jù)庫運行管理數(shù)據(jù)庫運行期間的動態(tài)管理是DBMS 的 核心部分,包括并發(fā)控制、存取控制(或安全性檢查、完整性約束條件的檢查)、數(shù)據(jù)庫內(nèi)部的維護(如索引、數(shù)據(jù)字典的 自動維護等)、緩沖區(qū)大小的設(shè)置等等。所有的數(shù)據(jù)
23、庫操作都 是在這個控制部分的統(tǒng)一管理下,協(xié)同工作,以確保事務(wù)處理 的正常運行,保證數(shù)據(jù)庫的正確性、安全性和有效性。(4) 數(shù)據(jù)庫的建立和維護功能 數(shù)據(jù)庫的建立和維護包括初始 數(shù)據(jù)的裝入、數(shù)據(jù)庫的轉(zhuǎn)儲或后備功能、數(shù)據(jù)庫恢復功能、數(shù)據(jù)庫的重組織功能和性能分析等功能,這些功能一般都由各自 對應(yīng)的實用功能子程序來完成。DBMS 隨軟件產(chǎn)品和版本不同而 有所差異。通常大型機上的DBMS 功能最全,小型機上的 DBMS功能稍弱點,微機上的DBMS 更弱些。但是,目前,由于硬件性能和價格的改進,微機上的DBMS 功能越來越全。三、關(guān)系數(shù)據(jù)庫的標準語言-SQL1.SQL 概述 SQL 的英語名稱是結(jié)構(gòu)查詢語言
24、 (Structured Query Language)實際上它的功能包括查詢(Query )、操縱(Manipulation )、定義(Definition )和控制(Control )四個方面,是一個綜合的、通用的、功能極強的關(guān)系數(shù)據(jù)庫語 言。SQL 支持數(shù)據(jù)庫的三級模式結(jié)構(gòu)。2.SQL 的數(shù)據(jù)定義功能 SQL 的數(shù)據(jù)定義功能包括三部分T 定義基本表,定義視圖和定義索引。它們是:CREATE TABLESQL 的數(shù)據(jù)定義功能可用于定義和修改模式(如基本表),定義外模式(如視圖)和內(nèi)模式(如索引)。3.基本表的定義與刪除定義基本表的語句格式為:CREATE VIEW CREATE INDEX
25、 DROP TABLE DROP VIEW DROP INDEX 修改(UPDATE (亦稱為更新)CREATE TABL 表名 (列名 1 類型NOT NULL,列名 2 類型NOT NULL)其他參數(shù);其中,任選項“其它參數(shù)”是與物理存儲有關(guān)的參數(shù)。根據(jù)具 體系統(tǒng)的不同而不同。刪除基本表的語句為:DROPTABLE 表名;刪除索引的語句為:DROPINDEX 索引名;刪除索引的同時把有關(guān) 索引的描述也從數(shù)據(jù)字典中刪去。但表的內(nèi)涵仍存在且其數(shù)據(jù) 外延內(nèi)容不變。把一個基本表的定義連同表上所有的記錄、索 引以及由此基本表導出的所有視圖全部都刪除,并釋放相應(yīng)的 存儲空間。4.索引的建立與刪除對一個
26、基本表,可以根據(jù)應(yīng)用環(huán)境的需要建立若干索引,以提 供多種存取方式。通常,索引的建立和刪除由DBA 或表的主人(即建立表的人)負責。用戶不必也不能在存取數(shù)據(jù)時選擇索 引。存取路徑的選擇由系統(tǒng)自動進行。索引的描述存放在數(shù)據(jù) 字典中。建立索引的語句格式為:CREATEUNIQUE INDEX 索引名 ON 基本表名(列名次序,列名次序)其他參數(shù);這里的任選項-其他參數(shù)是與物理存儲有關(guān)的參數(shù)。索引可以建在一列或幾列 上。圓括號內(nèi)是索引列的順序說明表。其中的任選項次序,指定了索引值排序的次序。可取ASC(升序)或 DESC(降序)。缺省值為升序。UNIQUE 表示每一索引值只對應(yīng)唯一的數(shù) 據(jù)記錄。5.S
27、QL 的數(shù)據(jù)操縱功能SQL 的數(shù)據(jù)操縱功能包括 SELECT INSERT DELETE 和 UPDATE四個語句,即檢索和更新(包括增、刪、改)兩部分工能。檢 索就是查詢。SQL 更新語句 SQL 的更新語句包括修改,刪除和插入三類語句。修改語句的一般格式為:UPDATE名SET 字段=表達式,字段= 表達式:WHER 謂詞;修改指定表中滿足謂詞(或條件)的元組,把這些元組按SET 子句中的表達式修改相應(yīng)屬性或字段上的值。2刪除(DELETE刪除語句一般格式為:DELETE FRO 表名:WHER 謂詞;從指定表中刪除滿足謂詞的那些記錄。沒有WHER 子句時表示刪去此表中的全部記錄,但此表的
28、定義仍在數(shù)據(jù)字典中,只是一個空表。DELETE 只對表外延操作,不對內(nèi)涵操作。3插入(INSERT 插入語句的一般格式為:INSERT INTO 表名(字段名,字段名) values (常量,常量);或INSERTINTO 表名(字段名,字段名)子查詢;第一種格式把一個新記錄插入指定的表中。第二種格 式把子查詢的結(jié)果插入表中。若表中有些字段在插入語句中沒 有出現(xiàn),則這些字段上的值取空值 NULL。當然在表定義中說明 了 NOT NULL 的字段在插入時不能取 NULL。若插入語句中沒有 指岀字段名,則新記錄必須在每個字段上均有值。6.視圖視圖是從一個或幾個基本表(或視圖)導岀的表。某一用戶可
29、以定義若干視圖。因此對某一用戶而言,按ANSI/SPARC 報告的觀點,他的外模式是由若干基本表和若干視圖組成的。視圖 和基本表不同,視圖是一個虛表,即視圖所對應(yīng)的數(shù)據(jù)不實際 存儲在數(shù)據(jù)庫中,數(shù)據(jù)庫中只存儲視圖的定義(存在數(shù)據(jù)字典 中)。視圖一經(jīng)定義就可以和基本表一樣被查詢、被刪除(DROP,也可以用來定義新的視圖,但更新(增、刪、改) 操作將有一定限制。視圖可以理解成一個數(shù)據(jù)庫,只有內(nèi)涵保 存在數(shù)據(jù)庫字典中,而無外延存儲;其外延是在使用時動態(tài)地 生成的或計算岀來的。(1)視圖的定義與刪除SQL 建立視圖的語句格式為:CREATE VIEW 見圖名(字段名,字段名)AS 子查詢:WITH CH
30、ECK OPTION詞;視圖可以刪除,語句格式為:DROP VIEW圖名;視圖的定義就從數(shù)據(jù)字典中刪除。由此視圖導出的其它視圖也 將自動被刪除。若導出此視圖的基本表刪除了,則此視圖也將 自動刪除。(2)視圖的查詢語句視圖定義后,用戶可以如同基本表那樣對視圖查詢。(3)視圖的更新語句對視圖的更新最終要轉(zhuǎn)換成對基本表的更新(這里的更新,指 INSERT UPDAT 莊口 DELETE 三類操作)。在關(guān)系數(shù)據(jù)庫中,并非所有的視圖都是可更新的,也就是說, 有些視圖的更新不能唯一地有意義地轉(zhuǎn)換成對基本表的更新。(4)視圖的優(yōu)點視圖的概念具有很多優(yōu)點,主要有:a)視圖對于數(shù)據(jù)庫的重構(gòu)造提供了一定程度的邏輯
31、獨立 性;b )簡化了用戶觀點;c)視圖機制使不同的用戶能以不同的方式看待同一數(shù)據(jù);d )視圖機制對機密數(shù)據(jù)提供了自動的安全保護功能。7.SQL 的數(shù)據(jù)控制功能SQL 數(shù)據(jù)控制功能是指控制用戶對數(shù)據(jù)的存取權(quán)力。某個用戶 對某類數(shù)據(jù)具有何種操作權(quán)力是由DBA 決定的。這是個政策問題而不是技術(shù)問題。數(shù)據(jù)庫管理系統(tǒng)的功能是保證這些決定的 執(zhí)行。為此它必須能:(1)把授權(quán)的決定告知系統(tǒng),這是由 SQL 的 GRANT 和 REVOKE 語句來完成的。(2)把授權(quán)的結(jié)果存入數(shù)據(jù)字典。(3)當用戶提岀操作請求時,根據(jù)授權(quán)情況進行檢查,以決定是執(zhí)行操作請求還是拒絕之。授權(quán)語句的一般格式為:GRANT 權(quán)力,
32、權(quán)力 ON 對象類型對象名 TO 用戶, 用戶,:WITH GRANT OPTION!;對不同類型的操作對象可有不同的操作權(quán)力。(1)對基本表、視圖及其字段的操作權(quán)力有查詢、插入、更新、刪除以及它們的總和 ALL PRIVILEGEo(2) 對基本表的操作權(quán)力還有修改(ALTER)和建立索引(INDEXo(3) 對數(shù)據(jù)庫的操作權(quán)力有建立表( CREATETAB 某用戶有 了此權(quán)力就可以使用Create table 建立基本表。稱他為表的 主人,擁有對此表的一切操作權(quán)力。(4)對表空間的權(quán)力有使用(USE 數(shù)據(jù)庫空間存儲基本表的 權(quán)力。(5)系統(tǒng)權(quán)力有建立新數(shù)據(jù)庫( CREATEDBA 的權(quán)力。
33、GRANT 語句中的任選項 WITH GRANT OPTIOI 的作用是使獲得某種權(quán)力的用戶可以把權(quán)力再授予別的用戶。8. 嵌入式SQ|L把 SQL 嵌入主語言使用時必須解決三個問題:(1) 區(qū)分 SQL 語句與主語言語句。這是通過在所有的SQL 語 句前加前綴EXECSQL 來解決的。SQL 語句結(jié)束標志隨主語言不 同而不同,女口 PL/1 用分號(;) ,COBOL! EMD-EXE(來表示。 SQL 語句首先由預編譯程序加以處理,轉(zhuǎn)換為主語言編譯程序能夠識別的形式,然后交主語言編譯程序進一步處理。(2) 數(shù)據(jù)庫工作單元和程序工作單元之間的通信。SQL 語句中可以使用主語言的程序變量(簡稱
34、主變量),這些變量名前加冒號作標志,以區(qū)別地字段名,程序中使用的任何表(基本表或視圖)都要用 EXEC SQL DECLARED 句加以說明。一則使程 序更加清晰,二則使預編譯程序能作某些語法檢查。SQL 語句執(zhí)行后,系統(tǒng)要反饋給應(yīng)用程序若干信息,這些信息送到SQL的通信區(qū) SQL CAoSQLCA 用語句 EXECSQL INCLUDE 加以定義。在 SQL CA 中有一個狀態(tài)指示字段 SQL CODE 當 SQL COD 為零 時,表示 SQL 語句執(zhí)行成功, 否則返回一個錯誤代碼 (負值)或警告信息 (正值) 。 程序員應(yīng)該在每個 SQL語句之后測試 SQL COD 啲值,以便處理各種情
35、況。(3)一個 SQL 語句原則上可產(chǎn)生或處理一組記錄,而主語言 一次只能處理一個記錄,為此必須協(xié)調(diào)兩種處理方式。這是用游標(Cursor )來解決的。下面首先討論不需要游標的DML 語句,然后討論使用游標的 DML 語句。9. 不用游標的 DML 語句不需要游標的 DML 語句有:查詢結(jié)果為單記錄的 SELECT 語句UPDATE(除了 CURRENTS 式的 UPDATE 語句 DELETE(除了 CURREN 形式的DELETE 語句 INSERT 語句(1) 查詢結(jié)果為單記錄的 SELECT 語句這類語句的一般格式是:(主語言為PL/1)EXEC SQL SELECT!標歹廿 INTO
36、 主變量空值標志FROR 基本表(或視圖)WHER 條件表達式;SELECT 語句從數(shù)據(jù)庫中找到符合條件的記錄,把結(jié)果放到主變量中。(2) UPDATED 句(3) DELETE 語句(4) INSERT 語句10.使用游標的 DML 語句一般情況下 SELECT 語句的查詢結(jié)果是記錄的集合而不是單個 記錄,為此需要用游標機制作為橋梁,把集合操作轉(zhuǎn)換為單記 錄處理。與游標有關(guān)的語句有四個:(1 )定義游標。游標是與某一查詢結(jié)果相聯(lián)系的符號名。用 DECLARED 句定義。這是一個說明語句。與游標相對應(yīng)的 SELECT 語句這時并不執(zhí)行。(2) 打開(OPEN 游標。打開游標語句使游標處于活動狀
37、態(tài)。與游標相應(yīng)的查詢語句被執(zhí)行。游標指向查詢結(jié)果集中的第一 個記錄之前。(3) 推進(FETCH 游標。把游標向前推進一個記錄,并把游標指向的當前記錄中的字段值取岀,放到INTO 子句后相應(yīng)的主變量中。FETCH 語句常常用于循環(huán),以借助主語言功能逐一處理結(jié)果集中的數(shù)據(jù)。(4) 關(guān)閉(CLOSE 游標。關(guān)閉游標,使它不再和原來的查詢 結(jié)果相聯(lián)系。關(guān)閉了的游標可以再次被打開,與新的查詢結(jié)果集相聯(lián)系。使用 CURREN 形式的 UPDATE 刪除語句應(yīng)注意:(1 )若游標定義中的 SELECT 語句帶有 UNION 或 ORDER BY 子句,或者這個 SELECT 語句相當于定義了一個不可更新的
38、視圖, 則不能用這兩個更新語句。(2)若使用 CURREN 形式的 UPDATED 句,則游標定義中要包 括 FORUPDAT 子句,指出更新的字段(SET 子句中使用的字段)。 因此,游標定義語句的一般格式為:EXEC SQL DECLARE 游標名CURSOROR 子查詢 UNION 子查詢FORUPDATEDF 字段名, 字段名QRDER-BY 子句;11.SQL 的事務(wù)處理功能(1) 事務(wù)處理的概述所謂事務(wù)(Transaction )是指一系列動 作的組合,這些動作被當作一個整體來處理。這些動作或者相 繼都被執(zhí)行,或者什么也不做。在數(shù)據(jù)庫中,一個動作是指一個 SQL 語句。事務(wù)是一組
39、SQL 語句組成的一個邏輯單位。要么 這些 SQL 語句全部被按順序正確執(zhí)行,要么在某SQL 語句執(zhí)行失敗時,按照用戶要求,取消已執(zhí)行的SQL 語句對數(shù)據(jù)庫中數(shù)據(jù)的修改?;蛘咭词聞?wù)中SQL 語句都被正確執(zhí)行,完成該事務(wù)對數(shù)據(jù)庫中數(shù)據(jù)的所有操作;或者要么相當于一條SQL 語句也未執(zhí)行,數(shù)據(jù)庫數(shù)據(jù)未做任何改動。(2) SQL 語言的事務(wù)處理語句 SQL 語言有 3 條語句用于事務(wù)處 理,它們是:(1) Commit 語句,對于正確執(zhí)行了的事務(wù)進行提交,進行提 交即對數(shù)據(jù)庫中數(shù)據(jù)的修改永久化。同時還釋放事務(wù)和封鎖, 標志該事務(wù)結(jié)束。(2) Save point 語句,定義事務(wù)中的一個回滾保留點,它
40、是 事務(wù)恢復時的一個標記點。(3)rollback語句,無論事務(wù)執(zhí)行的當前位置在哪里,該語句的執(zhí)行要么取消事務(wù)執(zhí)行以來對數(shù)據(jù)庫的全部修改,要么取 消至某個指定回滾點后對數(shù)據(jù)庫的全部修改。釋放自保留點之 后的全部表或行的封鎖(沒有保留點,相當于回滾到事務(wù)開始 處,終止該事務(wù))。事務(wù)的恢復(回滾)是根據(jù)事務(wù)執(zhí)行前保 存下的當時數(shù)據(jù)庫狀態(tài)來實現(xiàn)的。一遇到rollback 語句,就將數(shù)據(jù)庫中數(shù)據(jù)恢復到原來的狀態(tài),相當于撤消事務(wù)中已執(zhí)行 了的 SQL 語句。四、數(shù)據(jù)庫的存儲結(jié)構(gòu)數(shù)據(jù)庫的存儲結(jié)構(gòu)不同于一般文件系統(tǒng)的存儲結(jié)構(gòu)。數(shù)據(jù)庫數(shù) 據(jù)的特點是各種記錄型之間彼此有聯(lián)系, 數(shù)據(jù)是結(jié)構(gòu)化的。 數(shù) 據(jù)的存儲結(jié)構(gòu)
41、不僅涉及每種記錄型的記錄如何存儲,而且要使 數(shù)據(jù)的存儲反映各種記錄型之間的聯(lián)系。在DB 多級模式中引入內(nèi)模式(存儲模式)的主要目的是使模式的數(shù)據(jù)結(jié)構(gòu)的描述 同它的存儲表示的描述分開,以致DBA 為了協(xié)調(diào)數(shù)據(jù)庫性能而對數(shù)據(jù)庫數(shù)據(jù)的存儲方法進行修改時,可不必修改模式,以提高數(shù)據(jù)庫的物理獨立性。在各個數(shù)據(jù)庫管理系統(tǒng)中,對內(nèi)模式 的定義功能各不相同。在關(guān)系數(shù)據(jù)庫管理系統(tǒng)中有些DDL 語句可影響數(shù)據(jù)庫的存儲結(jié)構(gòu)。在DBMS 中各級模式的存儲結(jié)構(gòu)是恒定的或唯一的,而數(shù)據(jù)庫內(nèi)容(或其記錄)的存儲方式是不 唯一的。數(shù)據(jù)庫存儲結(jié)構(gòu)設(shè)計的好壞直接影響系統(tǒng)的性能。在 存儲結(jié)構(gòu)中主要是涉及存儲記錄的設(shè)計。存儲記錄與概
42、念記錄 之間具有對應(yīng)關(guān)系,如果存儲記錄與概念記錄之間具有一一對 應(yīng)關(guān)系,在這種情況下存儲記錄的設(shè)計就比較簡單,不需要進 一步討論。概念記錄是指在邏輯結(jié)構(gòu)中的記錄。 但當一個概念 記錄對應(yīng)多個不同類型的存儲記錄時,存在如何設(shè)計存儲記錄 的問題。對于這樣的概念記錄,其存儲記錄可以有以下幾種設(shè) 計:1. 順序組織將存儲記錄設(shè)計成與概念記錄一一對應(yīng),按SNC 大小(或按記錄到來)的順序?qū)⒂涗浗M成一個順序組織的文件。這樣組織的 優(yōu)點是結(jié)構(gòu)簡單,缺點是會浪費存儲空間。2. 順序帶鏈的組織順序帶鏈組織允許記錄中帶有指針(Pointer ),這樣可以大大節(jié)省存儲空間。3. 帶次關(guān)鍵字索引的順序組織一為了適應(yīng)對
43、多項內(nèi)容的檢索,可以建立索引文件,上述組織可 改為帶次關(guān)鍵字索引的順序組織。4. 多表組織在次關(guān)鍵字索引中,由于一個次關(guān)鍵字值對應(yīng)于多個記錄值, 它們的個數(shù)是不固定的,所以對應(yīng)的指針數(shù)目是可變的。這種 可變性給管理帶來困難,為了解決這個困難,引入了多表組織。 多表組織的實現(xiàn)思想比較簡單,在索引中多個指針分散存放在 每個記錄值中,索引項中的指針指向第一個記錄,在第一個記 錄中的指針指向第二個記錄等等。5. 完全倒排組織在一個記錄型中,對主關(guān)鍵字以外的數(shù)據(jù)項都 建立索引,這樣的組織稱之為完全倒排組織。6. Hash 定址組織對于每一個存儲記錄值存放在數(shù)據(jù)庫的什么 地方,可通過對該記錄的主關(guān)鍵字值的
44、雜湊函數(shù)計算得岀。這 種組織為 Hash 定址組織。雜湊函數(shù)種類很多,如質(zhì)數(shù)除余法、 基數(shù)轉(zhuǎn)換法、平方取中法、折疊法、位移法及各位數(shù)字分析法 等等。關(guān)鍵是如何選擇一個雜湊函數(shù),盡可能避免發(fā)生碰撞。對于不同的主關(guān)鍵字值通過計算而得到同一個地址的映象,稱 之為碰撞。7.聯(lián)系的存儲在關(guān)系數(shù)據(jù)庫中,通過外來關(guān)鍵字( Foreign Key )來表示概 念記錄之間的聯(lián)系。例如,為了表達學生和學校的聯(lián)系,可以 在學生記錄中增加外來關(guān)鍵字“學校號”來表示聯(lián)系。五、關(guān)系數(shù)據(jù)庫卜表格|表格(或簡稱表)表示了用戶的特定類型 (Type)的一些實體。 表頭由一些屬性名(Attribute Name )組成,每個屬性
45、名對應(yīng) 于一列。在表上屬性名必須唯一,不允許重名。表體是由一些 行或元組(tuple )、或記錄(record )組成。一個元組對應(yīng)于 傳統(tǒng)的文件結(jié)構(gòu)中的一個記錄,一個記錄含有若干個域(field )用以存儲屬性值( Attribute value )。一個元組對 應(yīng)于一個“用戶”實體的出現(xiàn)(occurrence )。表體中每一行和某一列的交叉點(相當于記錄中的域)上保存一個屬性值。 這個屬性值叫做這一行(或這個實體岀現(xiàn))的相應(yīng)屬性值。表 體中每一列可以保存的值對應(yīng)于某種屬性類型(Type ofAttribute ),也就是說,這一列的屬性值只能取這個屬性類型 的值。某個屬性所能取的所有值的集
46、合叫做這個屬性的值域(Domain of Attribute )類型和值域的對應(yīng)關(guān)系是一對多的。 一個類型有一個值域,但一個值域可以作為多個類型,基名稱 不同,但實質(zhì)上值域一樣。實際上,類型是對值域的命名。能 唯一標識一個元組的屬性稱之為關(guān)鍵屬性(Primary Key Attribute )或簡稱為主關(guān)鍵字( Primary Key )。主關(guān)鍵字有 時是由多個屬性組成的,此時的主關(guān)鍵字叫做組合關(guān)鍵字(Con catenated primary Key )。有的時候,表中必須由一 些組合的主關(guān)鍵字才能唯一地標識一個元組,也就是說,不存 在能作關(guān)鍵字的一個屬性。這時為了方便,往往引入一個附加 的
47、屬性并稱之為外來關(guān)鍵字( Foreigh Key )來作主關(guān)鍵字。外來關(guān)鍵字為以后檢索和查詢帶來了方便,但也增加了信息冗 余。2. 表名、表頭和表體表名、表頭和表體在關(guān)系模型中具有不同的作用或功能,因而 也具有完全不同的性質(zhì)。表頭是一個屬性的集合,它規(guī)定了表 的結(jié)構(gòu)。表體是一個特殊的集體,稱作為關(guān)系(relation )?!瓣P(guān) 系模型”中的“關(guān)系” 一詞就是指表體中的這個數(shù)學關(guān)系。在 關(guān)系數(shù)據(jù)庫中,表名對應(yīng)于數(shù)據(jù)庫名(或關(guān)系名),表頭對應(yīng)于數(shù)據(jù)描述(或結(jié)構(gòu)描述),表體對應(yīng)于數(shù)據(jù)庫。表體是數(shù)據(jù) 庫的內(nèi)容及數(shù)據(jù)庫操作的對象。另外,有兩個概念必須加以強 調(diào):型(type )和值或出現(xiàn)(occuren
48、ce )。表頭定義了實體(或 元組)的型,也就是說規(guī)定了實體(或元組)的值域。而表體 則給岀了實體(或元組)的岀現(xiàn)。岀現(xiàn)是型中的一個值。3. 關(guān)系的數(shù)學定義關(guān)系模型是建立在集合論(Set Theory )的基礎(chǔ)之上的?,F(xiàn)在, 開始用集合論的術(shù)語來嚴格地定義數(shù)學上的關(guān)系,即給岀關(guān)系 的數(shù)學定義。定義 1 域(Domain)是值(value )的集合。4. 關(guān)系模型關(guān)系模型由三部分組成:數(shù)據(jù)結(jié)構(gòu)(即關(guān)系)、關(guān)系操作、關(guān)系 的完整性。下面將對這三個部分進行分別的討論。(1)單一的數(shù)據(jù)結(jié)構(gòu)-關(guān)系在關(guān)系模型中,無論是實體還是實體之間的聯(lián)系均由單一的類型結(jié)構(gòu)一關(guān)系來表示。在前面,已給岀 了關(guān)系和域的數(shù)學定
49、義,介紹了 n 元關(guān)系、元組和屬性等概念。 下面介紹關(guān)鍵字、關(guān)系模式和關(guān)系數(shù)據(jù)庫等一些基本概念。關(guān) 鍵字關(guān)系中的某一組屬性,若其值可以唯一地標識一個元組, 則稱該屬性組為一個候選關(guān)鍵字(Candidate Key )。若一個關(guān)系有多個候選關(guān)鍵字,則可以任選其中一個作為主關(guān)鍵字(Primary Key )。主關(guān)鍵字中的諸屬性被稱為主屬性。關(guān)系模 式關(guān)系的描述稱為關(guān)系模式。它包括:關(guān)系名、組成關(guān)系的諸 屬性名、屬性到域的映象、屬性間的數(shù)據(jù)依賴關(guān)系等等。所以, 關(guān)系模式由關(guān)系名、諸屬性名和屬性到域的映象三個部分組 成,關(guān)系模式通常簡記為 R ( A 1 ,A 2,A n ),其中 R 是關(guān)系名,A
50、1 ,A2,A n為諸屬性名。屬性到域的映 象一般通過指定屬性的類型和長度來說明。某個關(guān)系模式在某 一時刻所具有的狀態(tài)是指關(guān)系的外延,即元組的集合。關(guān)系的 外延內(nèi)容有時簡稱為關(guān)系。但關(guān)系模式和關(guān)系的內(nèi)容有時也統(tǒng)稱為關(guān)系。讀者可以從上下文中區(qū)別其確切的含義。形象地說,關(guān)系模式是關(guān)于表名和表頭的描述,而關(guān)系的內(nèi)容是表體。關(guān) 系數(shù)據(jù)庫 在關(guān)系數(shù)據(jù)庫中,要分清型和值兩個基本概念。關(guān) 系數(shù)據(jù)庫的型是指數(shù)據(jù)庫的結(jié)構(gòu)描述,它包括關(guān)系數(shù)據(jù)庫名、 若干屬性的定義,以及這些屬性上的若干關(guān)系關(guān)系模式。亦稱 為數(shù)據(jù)庫的內(nèi)涵(Intension ),數(shù)據(jù)庫的值亦稱為數(shù)據(jù)庫的外 延。在關(guān)系數(shù)據(jù)庫中,內(nèi)涵是比較穩(wěn)定的,它規(guī)
51、定了外延的取 值范圍。而外延卻是隨時間變化的。這和在一般的形式邏輯中外延和內(nèi)涵一一對應(yīng)有所區(qū)別。此處外延是指任意一個滿足內(nèi) 涵的集合,而不一定恒指滿足內(nèi)涵的最大的一個集合。關(guān)系模 式(即內(nèi)涵)是穩(wěn)定的;而關(guān)系的內(nèi)容,即外延,卻是隨時間 動態(tài)的變化而變化的。數(shù)據(jù)庫的結(jié)構(gòu)(即模式)是穩(wěn)定的;而 數(shù)據(jù)庫中的數(shù)據(jù)內(nèi)容卻在不斷地更新。(2)關(guān)系操作 關(guān)系模型規(guī)定了關(guān)系操作的功能和特點, 但不 對DBMS 語言的語法做岀具體的規(guī)定。關(guān)系數(shù)據(jù)庫語言的主要 特點(或優(yōu)點)是其高度的非過程化( Non-procedureae )或 者說明性(declarative )。關(guān)系數(shù)據(jù)庫語言的語句是透明的。 用戶只須知
52、道語句做什么,而不須知道怎么做的。Codd 在其早期的文章中,引入了 8 種基本的操作:并(Union )交(Intersection )差(Difference )笛卡爾乘積( Cartesian Product )限制(Restrictions )投影(Projection )連接(Join ) 除(Division )這些操作都是對關(guān)系的內(nèi)容或表體實施操作的, 得到的結(jié)果仍為關(guān)系。注意,這些操作只是基本的操作,而不 是不再可分的原始(Primitive )操作,例如,Join , Intersection 和 Division 可以由其它五種操作合成。但是, 把它們?nèi)齻€也作為基本操作使用
53、起來很方便。另外,Codd 并沒說上述 8 種操作就是關(guān)系數(shù)據(jù)庫只能有的 8 種操作。實際上, 上述 8 種操作僅僅是作為最小的DML 操作的基礎(chǔ)部分,并且也還未考慮到 DDL 的需求。SQL 支持的操作多于上述 8 種 DML 操 作,而且 SQL 還支持DDL 操作。關(guān)系操作的特點是集合操作, 即操作的對象和結(jié)果都是集合。這種操作方式也稱為一次一集 合(set-at-a-time )方式。而非關(guān)系模型的數(shù)據(jù)庫的操作方 式則為一次一記錄(record-at-a-time )方式。關(guān)系操作可以 用兩種方式來表示:1代數(shù)方式,即關(guān)系代數(shù)2邏輯方式,即關(guān)系演算而關(guān)系演算又進一步分為元組關(guān)系演 算和
54、域關(guān)系演算。已經(jīng)證明,這些表示方式在功能上是相互等 價的。一般選其一即可。(3)關(guān)系模型的三類完整性關(guān)系模型的三類完整性是:1實體完整性(Entity Integrity )2參照完整性(Referential Integrity )3用戶定義的完整性(User Defined Integrity )其中,實體完整性和參照完整性是任何關(guān)系模型都必須滿足的完整性約 束條件,應(yīng)該由關(guān)系數(shù)據(jù)庫DBMS 自動支持。而用戶定義的完整性的支持是由 DBMS 提供完整性定義設(shè)施(或機制),可以隨 DBMS 商品軟件不同而有所變化。實體完整性是指:若屬性 A 是基本關(guān)系 R 的主關(guān)鍵字的屬性(即主屬性),則屬
55、性 A 不能取 空值(NULL)。在關(guān)系數(shù)據(jù)庫中有各種關(guān)系,如基本關(guān)系(常 稱為基本表)、查詢表、視圖表等等?;颈硎侵笇嶋H存在的 表,它是實際存儲數(shù)據(jù)的邏輯表示。查詢表是指和查詢結(jié)果相 對應(yīng)的表。而視圖表是由基本表或視圖表導岀的表,是虛表, 不對應(yīng)實際存儲的數(shù)據(jù)。實體完整性是針對基本關(guān)系的??罩?是指“不知道”或者“無意義的”或“不屬于定義域”值???值以“ NULL表示。對于實體完整性作如下說明:(1 )一個基本關(guān)系通常對應(yīng)于現(xiàn)實世界中的一個實體集。例 如學生關(guān)系對應(yīng)于學生實體集。基本關(guān)系不是由其它關(guān)系生成 的關(guān)系?;娟P(guān)系是本原(Primitive ),是定義復雜關(guān)系的出 發(fā)點。(2)
56、現(xiàn)實世界中的實體是可區(qū)分的,即實體具有某種唯一性的標識。(3) 在關(guān)系模型中由主關(guān)鍵字作為滿足唯一性的標識。(4) 主關(guān)鍵字中屬性不能取空值。因為若主關(guān)鍵字中某屬性取空值,則意味著某個實體不可標識;而這和(2)相矛盾。參照完整性是指:若基本關(guān)系 R 中含有另一個基本關(guān)系S 的主關(guān)鍵字 K S 所對應(yīng)的屬性組 F( F 稱為 R 的外部關(guān)鍵字(external keys ),則在關(guān)系 R 中的每個元組中的 F 上的值必須滿足:1或者取空值(即 F 中的每個屬性的值均為空值);2或等于 S 中某個元組的主關(guān)鍵字的值。基本關(guān)系R 和 S 不一定是不同的關(guān)系。 外部關(guān)鍵字也稱為外來關(guān)鍵字。 例如, 某
57、數(shù) 據(jù)庫中有職工關(guān)系 EMP(職工號,姓名,部門號)和部門關(guān)系 DEPT(部門號,部門名稱)為兩個基本關(guān)系。關(guān)系EMP 的主關(guān)鍵字為“職工號” ,DEPT 的主關(guān)鍵字為“部門號”在EMP 中,“部門號”是 EMP 的外部關(guān)鍵字。故此,在 EM 沖的每個元組 中“部門號”的值只有兩種可能性:1取空值。這說明這個職工尚未分到某個部門;2或取非空值。這時“部門號”的值必須是DEPT 中某個元組中的“部門號”的值。這說明一個職工不可能被分配到一個不 存在的部門。也就是說,被參照的關(guān)系DEPT 中一定存在一個元組,該元組的關(guān)鍵字的值等于EMP 中某元組的外部關(guān)鍵字的值。實體完整性和參照完整性是針對任何關(guān)
58、系數(shù)據(jù)庫系統(tǒng)的所有數(shù)據(jù)庫的一般性原則。用戶定義的完整性針對某一具體的數(shù) 據(jù)庫的約束條件。條件是由現(xiàn)實世界中的應(yīng)用環(huán)境決定的。它 涉及到某一具體的應(yīng)用中的數(shù)據(jù)所必須滿足的語義要求。關(guān)型 模型的 DBMS 應(yīng)提供定義和檢驗這類完整性條件的機制,以使 用統(tǒng)一的方法來自動地處理它們而不要求應(yīng)用程序員來承擔 這一功能。5.關(guān)系數(shù)據(jù)庫語言概述關(guān)系數(shù)據(jù)庫語言分三類:數(shù)據(jù)描述語言 DDL,數(shù)據(jù)操縱語言 DML 和數(shù)據(jù)控制語言 DCL其中,DDL 負責數(shù)據(jù)庫的描述,提供一 種數(shù)據(jù)描述機制,用來描述數(shù)據(jù)庫的特征或數(shù)據(jù)的邏輯結(jié)構(gòu)。DML 負責數(shù)據(jù)庫的操作,提供一種處理數(shù)據(jù)庫操作的機制。DCL 負責控制數(shù)據(jù)庫的完整性
59、和安全性,提供一種檢驗完整性和保 證安全的機制。DML 是用戶經(jīng)常使用的語言,包括了 DBMS 的主 要功能。DML 包括數(shù)據(jù)查詢和數(shù)據(jù)的增、刪、改等功能。其中 查詢的表達方式是 DML 的主要部分。關(guān)系數(shù)據(jù)庫的 DML 按照查 詢方式可以分為兩大類:(1) 用對關(guān)系的集合代數(shù)運算來表示查詢的方式,稱為關(guān)系代數(shù)(Relational Algebra )。(2 )用謂詞演算來表達查詢的方式,稱為關(guān)系演算(Relational Calculus )。關(guān)系演算又可按謂詞變元的基本對 象是元 組變量 (tuplevariable ) 還是 域變量 (domain variable )分為元組關(guān)系演算和
60、域關(guān)系演算兩種。關(guān)系代數(shù)和兩種關(guān)系演算均是抽象的查詢語言,這些抽象的查詢語言和實 際的 DBMS 軟件產(chǎn)品中實現(xiàn)的具體的查詢語言并不完全一樣。 但它們是 DBMS 中查詢語言的理論基礎(chǔ)。關(guān)系代數(shù)、元組關(guān)系 演算和域關(guān)系演算這三種語言在表達能力上是彼此相互等價 的,它們均可以作為評價實際DBMS 軟件產(chǎn)品中查詢語言能力的標準。實際 DBMS 軟件產(chǎn)品的查詢語言,除了提供關(guān)系代數(shù) (或一種關(guān)系演算)之外,還提供了許多附加的功能,如庫函 數(shù)、算術(shù)運算等功能。SQL 是介于關(guān)系代數(shù),和關(guān)系演算之間 的一種語言。SQL 不僅具有豐富的查詢功能,而且還具有數(shù)據(jù) 庫定義和數(shù)據(jù)庫控制功能。SQL 是集 DDL
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 湄洲灣職業(yè)技術(shù)學院《中醫(yī)文化傳播》2023-2024學年第一學期期末試卷
- 廣東舞蹈戲劇職業(yè)學院《演出經(jīng)營與管理》2023-2024學年第二學期期末試卷
- 湖北工業(yè)職業(yè)技術(shù)學院《工程力學(Ⅱ)》2023-2024學年第二學期期末試卷
- 山西省忻州市忻府區(qū)2024-2025學年數(shù)學五下期末達標測試試題含答案
- 湖南現(xiàn)代物流職業(yè)技術(shù)學院《現(xiàn)代漢語詞匯研究A》2023-2024學年第一學期期末試卷
- 上海電機學院《公共藝術(shù)》2023-2024學年第二學期期末試卷
- 公共交通車輛檢測評估制度
- 第9課 遼、西夏與北宋并立 教案2024-2025學年七年級歷史下冊新課標
- 寶娜美容會所客戶滿意度調(diào)查
- 木本炭泥施工方案
- 護理美學-第六章 護士的儀態(tài)美
- 2024年全國公共營養(yǎng)師之三級營養(yǎng)師考試重點試題(附答案)
- 管道工(三級)高級工題庫(電子題庫)附有答案
- 小學預防性侵害主題班會
- DZ∕T 0080-2010 煤炭地球物理測井規(guī)范(正式版)
- 《微波法原油含水率在線檢測儀》
- 第1課 立足時代 志存高遠 (課件+視頻)- 【中職專用】高一思想政治《心理健康與職業(yè)生涯》(高教版2023·基礎(chǔ)模塊)
- 19S406建筑排水管道安裝-塑料管道
- MOOC 人工智能基礎(chǔ)-國防科技大學 中國大學慕課答案
- 裝配式建筑預制構(gòu)件安裝-水平構(gòu)件安裝技術(shù)
- 部編版語文五年級下冊第四單元大單元整體教學設(shè)計
評論
0/150
提交評論