卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

數(shù)據(jù)庫期末考試重點

數(shù)據(jù)庫的地位: 數(shù)據(jù)庫技術(shù)是信息系統(tǒng)的核心和基礎(chǔ), 它的出現(xiàn)極大地促進(jìn)了計算機(jī)應(yīng)用向各行各業(yè)的滲透。數(shù)據(jù)庫的建設(shè)規(guī)模、數(shù)據(jù)庫信息量的大小和使用頻度已成為衡量一個國家信息化程度的重要標(biāo)志。數(shù)據(jù)庫系統(tǒng)是最

數(shù)據(jù)庫的地位: 數(shù)據(jù)庫技術(shù)是信息系統(tǒng)的核心和基礎(chǔ), 它的出現(xiàn)極大地促進(jìn)了計算機(jī)應(yīng)用向各行各業(yè)的滲透。數(shù)據(jù)庫的建設(shè)規(guī)模、數(shù)據(jù)庫信息量的大小和使用頻度已成為衡量一個國家信息化程度的重要標(biāo)志。數(shù)據(jù)庫系統(tǒng)是最廣泛使用的軟件系統(tǒng)之一。數(shù)據(jù)庫研究, 開發(fā)與應(yīng)用是計算機(jī)學(xué)科最活躍的領(lǐng)域之一。數(shù)據(jù)庫系統(tǒng)原理主要講述結(jié)構(gòu)化數(shù)據(jù)的管理

實際應(yīng)用對數(shù)據(jù)操作的要求:面臨故障:各種各樣的故障都可能發(fā)生,必須確保數(shù)據(jù)在任何情況下都不被破壞。例如,銀行存款數(shù)據(jù)不能因突然停電而丟失或破壞。數(shù)據(jù)的安全性:防止用戶對數(shù)據(jù)進(jìn)行未經(jīng)授權(quán)的訪問。例如,可以允許銀行客戶查看自己的存款余額,但不能允許他/她們修改。數(shù)據(jù)的完整性:防止不符合語義的數(shù)據(jù)進(jìn)入數(shù)據(jù)庫。例如,我們不能將負(fù)數(shù)作為學(xué)生的成績輸入到數(shù)據(jù)庫中。數(shù)據(jù)的一致性:防止數(shù)據(jù)庫進(jìn)入不一致狀態(tài)

數(shù)據(jù)庫管理系統(tǒng)(DBMS )是一種重要的程序設(shè)計系統(tǒng),它由一個相互關(guān)聯(lián)的數(shù)據(jù)集合和一組訪問這些數(shù)據(jù)的程序組成。這個數(shù)據(jù)集合稱為數(shù)據(jù)庫,它包含了一個企業(yè)、政府部門或一個單位的全部信息。DBMS 的基本目標(biāo)是提供一個方便、有效地訪問這些信息的環(huán)境。功能:1. 數(shù)據(jù)定義:提供數(shù)據(jù)定義語言(DDL ),用于定義數(shù)據(jù)庫中的數(shù)據(jù)對象和它們的結(jié)構(gòu)2. 數(shù)據(jù)操縱:提供數(shù)據(jù)操縱語言(DML ),用于操縱數(shù)據(jù),實現(xiàn)對數(shù)據(jù)庫的基本操作(查詢、插入、刪除和修改)3. 事務(wù)管理和運行管理:統(tǒng)一管理數(shù)據(jù)、控制對數(shù)據(jù)的并發(fā)訪問保證數(shù)據(jù)的安全性、完整性. 4. 數(shù)據(jù)存儲和查詢處理:確定數(shù)據(jù)的物理組織和存取方式, 提供數(shù)據(jù)的持久存儲和有效訪問, 確定查詢處理方法,優(yōu)化查詢處理過程5. 數(shù)據(jù)庫的建立和維護(hù):提供實用程序,完成數(shù)據(jù)庫數(shù)據(jù)批量裝載、數(shù)據(jù)庫轉(zhuǎn)儲、介質(zhì)故障恢復(fù)、數(shù)據(jù)庫的重組和性能監(jiān)測等6. 其他功能包括DBMS 與其它軟件通信異構(gòu)數(shù)據(jù)庫之間數(shù)據(jù)轉(zhuǎn)換和互操作

數(shù)據(jù)庫(簡稱DB )是持久儲存在計算機(jī)中、有組織的、可共享的大量數(shù)據(jù)的集合

使用數(shù)據(jù)庫的優(yōu)點: (1) 數(shù)據(jù)整體結(jié)構(gòu)化:在數(shù)據(jù)庫中,數(shù)據(jù)的組織面向整個機(jī)構(gòu)、面向所有可能的應(yīng)用(2) 數(shù)據(jù)共享:數(shù)據(jù)庫中的數(shù)據(jù)的面向整個機(jī)構(gòu)組織使得它能夠更好地被多個用戶、多個應(yīng)用程序共享。共享的好處是節(jié)省存儲空間,盡量避免同一數(shù)據(jù)不必要地重復(fù)存放(冗余) (3) 數(shù)據(jù)獨立性:數(shù)據(jù)獨立性是指數(shù)據(jù)獨立于應(yīng)用程序,包括數(shù)據(jù)的物理獨立性,數(shù)據(jù)的邏輯獨立性4) 數(shù)據(jù)由DBMS 同一管理和控制,使得系統(tǒng)能夠為數(shù)據(jù)管理提供更多的支持。(5) 標(biāo)準(zhǔn)化:使用數(shù)據(jù)庫進(jìn)行信息管理有利于制定部門標(biāo)準(zhǔn)、行業(yè)標(biāo)準(zhǔn)、工業(yè)標(biāo)準(zhǔn)、國家標(biāo)準(zhǔn)和國際標(biāo)準(zhǔn),促進(jìn)數(shù)據(jù)庫管理系統(tǒng)和數(shù)據(jù)庫開發(fā)工具的研制、開發(fā),推動數(shù)據(jù)管理應(yīng)用的健康發(fā)展

數(shù)據(jù)模型的三要素:1. 數(shù)據(jù)結(jié)構(gòu):數(shù)據(jù)結(jié)構(gòu)描述數(shù)據(jù)庫中的對象和對象之間的聯(lián)系,是對系統(tǒng)靜態(tài)特性的描述,數(shù)據(jù)結(jié)構(gòu)刻畫了數(shù)據(jù)模型最重要的方面,數(shù)據(jù)結(jié)構(gòu)定義基本數(shù)據(jù)項的類型2. 數(shù)據(jù)操作:定義數(shù)據(jù)庫中各種數(shù)據(jù)對象的實例上允許執(zhí)行的操作和操作規(guī)則,是對系統(tǒng)動態(tài)特性的描述 。數(shù)據(jù)庫操作主要包括查詢和更新(包括插入、刪除、修改)3. 數(shù)據(jù)的完整性約束條件:是一組規(guī)則,用以限定符合數(shù)據(jù)模型的數(shù)據(jù)庫狀態(tài)和狀態(tài)的變化,保證數(shù)據(jù)的正確、有效和相容。

從用戶角度,數(shù)據(jù)庫系統(tǒng)的外部結(jié)構(gòu)可以分為:單用戶結(jié)構(gòu),主從式結(jié)構(gòu),分布式結(jié)構(gòu),客戶/服務(wù)器結(jié)構(gòu),瀏覽器/應(yīng)用服務(wù)器/數(shù)據(jù)庫服務(wù)器結(jié)構(gòu)

數(shù)據(jù)庫系統(tǒng)三級模式結(jié)構(gòu):外模式(external schema)也稱子模式或用戶模式。外模式介于模式與應(yīng)用之間,是特定數(shù)據(jù)庫用戶的數(shù)據(jù)視圖,是與某一具體應(yīng)用相關(guān)的數(shù)據(jù)局部邏輯結(jié)構(gòu)的描述。模式(schema )也稱邏輯模式,是數(shù)據(jù)庫中全體數(shù)據(jù)的總體邏輯結(jié)構(gòu)描述,是所有用戶的公共數(shù)據(jù)視圖,模式綜合了所有用戶的數(shù)據(jù)需求,模式是數(shù)據(jù)庫的中心與關(guān)鍵。內(nèi)模式(internal sch ema )也稱存儲模式或物理模式,是數(shù)據(jù)物理結(jié)構(gòu)和存儲方式的描述,定義數(shù)據(jù)在數(shù)據(jù)庫內(nèi)部的表示方式。內(nèi)模式依賴于全局邏輯結(jié)構(gòu),但它既獨立于數(shù)據(jù)庫的用戶視圖(即外模式),也獨立于具體的存儲設(shè)備

所謂數(shù)據(jù)獨立性是指數(shù)據(jù)與應(yīng)用程序相互獨立。數(shù)據(jù)的邏輯獨立性:是指應(yīng)用程序與數(shù)據(jù)庫的邏輯結(jié)構(gòu)之間的相互獨立性。數(shù)據(jù)的物理獨立性:是指應(yīng)用程序與存儲在磁盤上的數(shù)據(jù)庫中數(shù)據(jù)之間的相互獨立性

模式改變時,數(shù)據(jù)庫管理員可以修改有關(guān)的外模式-模式映像,使外模式保持不變,為數(shù)據(jù)的邏輯獨立性提供了保證;內(nèi)模式改變時,數(shù)據(jù)庫管理員可以修改模式-內(nèi)模式映像,使得模式保持不變,為數(shù)據(jù)的物理獨立性提供了保證。

關(guān)系模型:優(yōu)點:關(guān)系模型具有堅實的數(shù)學(xué)基礎(chǔ)。簡潔、直觀的數(shù)據(jù)表示形式。支持易學(xué)易用的非過程化語言 關(guān)系模型的三要素和三級模式結(jié)構(gòu): 數(shù)據(jù)結(jié)構(gòu):關(guān)系。數(shù)據(jù)操作:關(guān)系代數(shù)、關(guān)系演算(元組關(guān)系演算、域關(guān)系演算)。 完整性約束:實體完整性、參照完整性和用戶自定義完整性。三級模式結(jié)構(gòu):關(guān)系模式:記錄的型為關(guān)系模式,關(guān)系模式的集合是數(shù)據(jù)庫的概念模式,關(guān)系模式用DDL 定義(包括:模式名,屬性名,值域名,主碼)。子模式:用戶用到的那部分?jǐn)?shù)據(jù)的描述(包括數(shù)據(jù)與關(guān)系模式中相應(yīng)數(shù)據(jù)的聯(lián)系)及操作權(quán)限的定義。存儲模式:DBMS 中關(guān)系存儲作為文件看待,存儲一個關(guān)系可用散列、索引、堆等來實現(xiàn)

關(guān)系的完整性約束:實體完整性約束是對關(guān)系主碼取值的基本限制。實體完整性規(guī)則:關(guān)系R 的所有元組在主碼上的值必須唯一,并且在主碼的任何屬性上都不能取空值。向一個表中插入元祖或者修改一個表的主屬性就能違反完整性。參照完整性是對外碼取值的限制。參照完整性規(guī)則:如果屬性集FK 是關(guān)系R 的外碼,它參照關(guān)系S 的主碼

,

Ks ,則R 的任何元組在FK 上的值或者等于S 的某個元組在主碼Ks 上的值,或者為空值。用戶定義的完整性反映特定的數(shù)據(jù)庫所涉及的數(shù)據(jù)必須滿足的語義約束條件。由于不存在一般性規(guī)則,這些約束條件必須由用戶根據(jù)實際問題的語義指定

關(guān)系R 的屬性集X 是它的超碼,如果R 的所有可能實例都不包含兩個不同的元組,它們在X 的所有屬性上都具有相同的值

關(guān)系R 的屬性集K 是它的碼,如果K 是R 的超碼,并且K 的任何真子集都不是R 的超碼(即K 是極小超碼)通常,當(dāng)一個關(guān)系具有多個碼時,應(yīng)當(dāng)選擇其中的一個作為唯一識別關(guān)系元組的碼

術(shù)語主碼用于表示由多個碼中選出的作為唯一識別關(guān)系元組的碼,而所有的碼又稱候選碼

形式地,如果FK 是關(guān)系R 的屬性集,并且不是R 的碼,但是FK 與關(guān)系R ’的主碼K ’對應(yīng),則稱FK 是關(guān)系R 的外碼。其中R 是參照關(guān)系,R ’是被參照關(guān)系(R 與R ’不一定是不同的關(guān)系),并稱FK 參照R ’的主碼K ’

數(shù)據(jù)定義語言(DDL )DDL 提供對數(shù)據(jù)定義進(jìn)行修改和刪除的功能。DDL 提供數(shù)據(jù)完整性約束條件的定定義機(jī)制。例如,下面是用SQL 語言定義的關(guān)系表Students :

CREATE TABLE Students

( Sno CHAR(9) PRIMARY KEY,

Sname CHAR(8),

Ssex CHAR(2),

Sbirthday DATE,

Sspeciality CHAR(20));

數(shù)據(jù)操縱語言(DML )表達(dá)對按照某種數(shù)據(jù)模式組織起來的數(shù)據(jù)的訪問

數(shù)據(jù)控制語言(DCL )用于定義用戶對數(shù)據(jù)對象的訪問權(quán)限和審計,提供授權(quán)語句保證數(shù)據(jù)的安全性,還提供了回收授權(quán)和建立審計的語句

視圖:視圖是一種命名的導(dǎo)出表,是從一個或幾個基本表(或視圖)導(dǎo)出的表。與基本表不同,視圖的數(shù)據(jù)并不物理地存儲在數(shù)據(jù)庫中(物化視圖除外)。查詢時,凡是能夠出現(xiàn)基本表的地方,都允許出現(xiàn)視圖。

視圖的作用1. 使用視圖可以使一些查詢表達(dá)更加簡潔2. 視圖提供了一定程度的邏輯獨立性3. 視圖的安全保護(hù)作用4. 視圖使得用戶能夠以不同角度看待相同的數(shù)據(jù)

SQL 語句和主語言語句之間的信息交換(通信)可以通過:SQLCODE 。主語言變量。游標(biāo)

游標(biāo) 為什么需要游標(biāo):主語言是面向記錄的過程式語言,而SQL 是面向集合的非過程式語言。存在矛盾:一個SQL 語句得到的結(jié)果可能是多個記錄,而主語言沒有辦法一次處理多個記錄解決該問題的方法是使用游標(biāo)。

游標(biāo)定義其實就是一個數(shù)據(jù)緩沖區(qū),暫時存放SQL 語句的執(zhí)行結(jié)果,以便主語言可以逐一獲取記錄,進(jìn)行處理 所有使用游標(biāo)的SQL 語句都必須先通過說明定義游標(biāo)。在使用前打開游標(biāo)。然后,反復(fù)推進(jìn)游標(biāo)指針并取當(dāng)前記錄進(jìn)行處理。最后,當(dāng)所有記錄都處理完之后,關(guān)閉游標(biāo)

不使用游標(biāo)的語句包括:說明性語句。數(shù)據(jù)定義語句。數(shù)據(jù)控制語句。查詢結(jié)果為單個記錄的SELECT 語句和非交互形式的更新語句

數(shù)據(jù)完整性旨在保護(hù)數(shù)據(jù)庫中的數(shù)據(jù),防止合法用戶對數(shù)據(jù)庫進(jìn)行修改時破壞數(shù)據(jù)的一致性;

數(shù)據(jù)安全性旨在保護(hù)數(shù)據(jù)庫,防止未經(jīng)授權(quán)的訪問和惡意破壞和修改。

為了維護(hù)數(shù)據(jù)庫的完整性,完整性控制應(yīng)當(dāng)作為DBMS 核心機(jī)制,必須提供:

說明和定義完整性約束條件的方法:DBMS 的DDL 允許用戶根據(jù)實際問題的語義說明和定義各種完整性約束條件。 完整性檢查機(jī)制:DBMS 在數(shù)據(jù)更新可能破壞完整性時自動進(jìn)行完整性檢查。檢查可以在更新操作執(zhí)行時立即執(zhí)行,也可以在事務(wù)提交時進(jìn)行。

違約處理:當(dāng)數(shù)據(jù)更新違反完整性約束時,DBMS 應(yīng)當(dāng)采取相應(yīng)的措施,確保數(shù)據(jù)的完整性。

判斷主屬性是否為空值是簡單的。為了有效地判定主碼上的值是否惟一,通常DBMS 自動在主碼上建立索引(如B 樹索引)。通過索引查找而不必訪問任何元組就能確定主碼上的值是否惟一。

當(dāng)更新導(dǎo)致破壞參照完整性時,可能的處理措施包括:1. 拒絕:拒絕違反參照完整性的更新是最簡單的處理措施

2. 級聯(lián):進(jìn)行更新,并且對更新導(dǎo)致違反參照完整性的參照關(guān)系元組進(jìn)行相應(yīng)更新。3. 置空值:進(jìn)行更新,并且對更新導(dǎo)致違反參照完整性的參照關(guān)系元組的外碼置空值。這種處理方法僅當(dāng)外碼允許取空值時才能使用。4. 置缺省值:進(jìn)行更新,并且對更新導(dǎo)致違反參照完整性的參照關(guān)系元組的外碼置缺省值;其中缺省值必須是被參照關(guān)系某元組主碼上的值 CASCADE 、SET NULL、SET DEFAULT和NO ACTION

域完整性約束:每個屬性都必須在一個值域上取值。

斷言(Assertions )是一種命名約束,它表達(dá)了數(shù)據(jù)庫狀態(tài)必須滿足的邏輯條件。數(shù)據(jù)庫完整性約束可以看成一系

,

列斷言的集合,實體完整性和參照完整性約束都是斷言的特殊形式。所有的約束都可以用斷言形式表達(dá),然而屬性約束和關(guān)系約束使用相應(yīng)的方式說明更方便,也更有效。通常用斷言表達(dá)數(shù)據(jù)庫約束,這些約束不能或很難用其他方法表達(dá)。

觸發(fā)器(trigger )是特殊類型的存儲過程,當(dāng)某個事件發(fā)生時它自動執(zhí)行。

要設(shè)置觸發(fā)器機(jī)制,必須滿足兩個要求:(1) 指明什么事件發(fā)生和滿足什么條件執(zhí)行觸發(fā)器; (2) 指明觸發(fā)器執(zhí)行什么樣的動作

、數(shù)據(jù)庫安全保護(hù)的任務(wù):防止數(shù)據(jù)一致性的意外破壞比防止對數(shù)據(jù)庫的惡意訪問要容易。下面是一些惡意訪問的形式:未經(jīng)授權(quán)讀取數(shù)據(jù)(竊取信息);未經(jīng)授權(quán)修改數(shù)據(jù);未經(jīng)授權(quán)刪除數(shù)據(jù)。

數(shù)據(jù)庫管理員(DBA )的重要的責(zé)任之一是保證數(shù)據(jù)庫的安全性,保護(hù)數(shù)據(jù)庫涉及的任務(wù):防止對數(shù)據(jù)的未經(jīng)過授權(quán)的存取,確保敏感信息沒有被不“需要知道”這些信息的人訪問得到;防止未經(jīng)過授權(quán)的人員刪除和修改數(shù)據(jù);

監(jiān)視對數(shù)據(jù)的訪問和更改等使用情況

數(shù)據(jù)庫設(shè)計:根據(jù)選擇的數(shù)據(jù)庫的支撐環(huán)境(包括DBMS 、操作系統(tǒng)和硬件)和用戶信息需求、處理需求,設(shè)計出數(shù)據(jù)模式(包括外模式、模式和內(nèi)模式)及典型應(yīng)用程序 .

數(shù)據(jù)庫設(shè)計的目標(biāo):為用戶和各種應(yīng)用系統(tǒng)提供一個信息基礎(chǔ)設(shè)施和高效的運行環(huán)境.(即存取效率高、存儲空間的利用率高, 數(shù)據(jù)庫系統(tǒng)運行管理效率高)

為什么說數(shù)據(jù)庫設(shè)計在應(yīng)用系統(tǒng)開發(fā)中起著重要的作用?

(1)不合適數(shù)據(jù)庫設(shè)計,檢索某些類型的信息是困難的或可能得到不正確的檢索信息。

(2)不合適的數(shù)據(jù)庫設(shè)計導(dǎo)致不正確的信息,不正確的信息會影響一個單位正常的使用這些數(shù)據(jù)

數(shù)據(jù)庫設(shè)計與應(yīng)用程序設(shè)計不同: 數(shù)據(jù)庫設(shè)計的目標(biāo)是獲得合理數(shù)據(jù)模式和典型的應(yīng)用程序,它是程序設(shè)計的基礎(chǔ),數(shù)據(jù)庫設(shè)計的好壞直接影響著應(yīng)用程序的性能;而應(yīng)用程序設(shè)計是針對某一特定的數(shù)據(jù)庫進(jìn)行應(yīng)用設(shè)計的,其基本任務(wù)是明確數(shù)據(jù)的組織、繪制數(shù)據(jù)流程圖、設(shè)計用戶界面以及應(yīng)用程序的測試與審查等。

數(shù)據(jù)庫設(shè)計的特點: 反復(fù)性, 試探性,多階段性,多技術(shù)性

數(shù)據(jù)庫設(shè)計的步驟:可行性分析:是確定數(shù)據(jù)庫系統(tǒng)在單位的計算機(jī)系統(tǒng)中的地位以及各個數(shù)據(jù)庫之間的關(guān)系,確定數(shù)據(jù)庫支持的業(yè)務(wù)范圍是建立一個綜合的數(shù)據(jù)庫還是建立若干個專門的數(shù)據(jù)庫。需求分析階段:收集分析用戶對系統(tǒng)的信息需求和處理需求,得到設(shè)計系統(tǒng)所必須需求信息,建立系統(tǒng)說明文檔。概念結(jié)構(gòu)設(shè)計:根據(jù)系統(tǒng)需求,用概念數(shù)據(jù)模型表示數(shù)據(jù)及數(shù)據(jù)之間的聯(lián)系。邏輯結(jié)構(gòu)設(shè)計:在概念結(jié)構(gòu)設(shè)計的基礎(chǔ)上,按照一定原則將概念模式轉(zhuǎn)換為某個具體DBMS 支持的邏輯結(jié)構(gòu)。物理設(shè)計:數(shù)據(jù)庫在物理設(shè)備上的存儲結(jié)構(gòu)和存取方法. 其目的是為了提高數(shù)據(jù)庫的訪問速度并有效地利用存儲空間。。數(shù)據(jù)庫的實施和維護(hù):建立數(shù)據(jù)庫模式、加載數(shù)據(jù),而試運行將檢驗數(shù)據(jù)庫系統(tǒng)的設(shè)計是否達(dá)到設(shè)計目標(biāo)、能否滿足實際需要

需求分析階段的任務(wù):調(diào)查應(yīng)用領(lǐng)域,對應(yīng)用領(lǐng)域中各種應(yīng)用的信息要求、處理要求、安全性和完整性要求進(jìn)行詳細(xì)分析,形成需求分析說明書。

數(shù)據(jù)字典是關(guān)于數(shù)據(jù)庫中數(shù)據(jù)性質(zhì)的描述,即元數(shù)據(jù),而不是數(shù)據(jù)本身。

數(shù)據(jù)字典應(yīng)該具備查詢方便、沒有數(shù)據(jù)冗余、易于修改和更新等特點。

作用:它為設(shè)計人員提供了關(guān)于數(shù)據(jù)詳細(xì)描述的信息,是下一步概念結(jié)構(gòu)設(shè)計的輸入,它和數(shù)據(jù)流圖一起完整地描述了系統(tǒng)的需求信息

數(shù)據(jù)抽象一般有三種抽象方法:(1)將具有某些共同特性和行為的對象抽象為一個概念。 (2)定義某一類型的組成成分。3)定義對象集之間的子集聯(lián)系

各局部E-R 圖之間的沖突主要有三類:屬性沖突、命名沖突和結(jié)構(gòu)沖突。

查詢處理步驟:查詢;語法分析與翻譯器;查詢的內(nèi)部表示;優(yōu)化器(元數(shù)據(jù));查詢執(zhí)行計劃;執(zhí)行引擎;查詢結(jié)果

查詢優(yōu)化就是從多種可能的查詢執(zhí)行方案中選擇一種最有效執(zhí)行的查詢執(zhí)行計劃的過程。必要性:對于相同的查詢,不同的查詢執(zhí)行計劃的時間開銷可能相差幾個數(shù)量級。這意味好的執(zhí)行計劃可能是可行的,而差的執(zhí)行計劃在實踐上是不可行。因此,即使查詢只執(zhí)行一次,查詢優(yōu)化也是必須的

事務(wù)是用戶定義的一個數(shù)據(jù)庫的操作序列,這些操作要么全做, 要么全不做,是一個不可分割的工作單元。事務(wù)是并發(fā)控制與調(diào)度的基本單位,也是數(shù)據(jù)庫恢復(fù)的基本單位。四個特性:原子性一致性隔離性持久性

使用并發(fā)執(zhí)行機(jī)制的動機(jī):提高吞吐量和資源的利用率,減少等待時間

. 丟失修改兩個或多個事務(wù)同時從數(shù)據(jù)庫中讀取相同的數(shù)據(jù)對象并進(jìn)行修改,后提交的事務(wù)的修改覆蓋了先提交的事務(wù)的修改,導(dǎo)致先提交的事務(wù)的修改丟失 。讀“臟”數(shù)據(jù)讀“臟”數(shù)據(jù)是指事務(wù)Ti 修改某一數(shù)據(jù),并將其寫回磁

,

盤。 不可重復(fù)讀 :修改刪除插入

串行調(diào)度是指這些事務(wù)一個接一個地執(zhí)行,其中每個事務(wù)都在上一個事務(wù)(如果有的話)完全結(jié)束之后才開始執(zhí)行。 對于一組事務(wù),串行調(diào)度總是正確的

基本的封鎖類型有兩種:共享鎖(S 鎖):稱讀鎖。T 可以讀但不能寫Q ,釋放Q 上的S 鎖之前,獲得S 鎖,不能獲得X 鎖。排他鎖(X 鎖):稱寫鎖。T 既可以讀又可以寫Q ,釋放Q 上的X 鎖之前,不能獲得Q 上的S 鎖,也不能獲得Q 上的X 鎖。

一級封鎖協(xié)議:事務(wù)T 在更新數(shù)據(jù)對象Q 之前必須先對其加X 鎖,直到事務(wù)結(jié)束才釋放。(數(shù)據(jù)加鎖與否都可以讀) 。一級封鎖協(xié)議可防止丟失修改。二級封鎖協(xié)議在一級封鎖協(xié)議的基礎(chǔ)上,進(jìn)一步要求事務(wù)T 在讀取數(shù)據(jù)對象Q 之前必須先對其加S 鎖,但是讀完后可以立即釋放S 鎖 ??梢赃M(jìn)一步防止讀“臟”數(shù)據(jù),但不能保證可以重復(fù)讀。三級封鎖協(xié)議在一級封鎖協(xié)議的基礎(chǔ)上,進(jìn)一步要求事務(wù)T 在讀取數(shù)據(jù)對象Q 之前必須先對其加S 鎖,并且直到事務(wù)結(jié)束才能釋放S 鎖??梢赃M(jìn)一步保證可重復(fù)讀,可以很好地避免并發(fā)導(dǎo)致的問題

兩段鎖協(xié)議:是最常用的一種封鎖協(xié)議。理論上已經(jīng)證明使用該協(xié)議可保證并發(fā)調(diào)度串行化。兩階段鎖協(xié)議要求每個事務(wù)。在對任何數(shù)據(jù)進(jìn)行讀、寫操作之前,首先要申請并獲得對該數(shù)據(jù)對象的相應(yīng)封鎖。在釋放一個鎖之后,事務(wù)不能再申請任何其他鎖 。兩段封鎖協(xié)議是可串行化調(diào)度的充分條件,其能夠保證并發(fā)事務(wù)執(zhí)行的正確性,保持?jǐn)?shù)據(jù)庫的一致性。但是,遵守兩段鎖協(xié)議的并發(fā)事務(wù)仍有可能發(fā)生死鎖

一個事務(wù)獲得它的最后一個鎖的位置稱為封鎖點

系統(tǒng)能夠同時支持多種封鎖粒度供不同的事務(wù)選擇的封鎖方法稱之為多粒度封鎖

意向鎖:IS 鎖:意向共享鎖,如果對一個數(shù)據(jù)對象加IS 鎖,表示它的后裔結(jié)點擬(意向)加S 鎖。IX 鎖:意向排它鎖,如果對一個數(shù)據(jù)對象加IX 鎖,表示它的后裔結(jié)點擬(意向)加X 鎖。SIX 鎖: 共享意向排它鎖,如果對一個數(shù)據(jù)對象加SIX 鎖,表示對它加S 鎖,再加IX 鎖,即SIX = S IX

封鎖可能產(chǎn)生的問題是活鎖和死鎖現(xiàn)象?;铈i是不公平調(diào)度所引起的,容易處理。死鎖又兩種處理方法:預(yù)防、檢測和解除。

數(shù)據(jù)庫的恢復(fù)機(jī)制就是負(fù)責(zé)將數(shù)據(jù)庫恢復(fù)到故障發(fā)生前的某一個一致狀態(tài),并將崩潰后的數(shù)據(jù)庫不能使用的時間減少到最小。

1.事務(wù)故障是指某個事務(wù)在運行過程中由于種種原因未能運行到正常終止而夭折

2.系統(tǒng)故障是指由于某種原因造成整個系統(tǒng)的正常運行突然停止,致使所有正在運行的事務(wù)都以非正常方式終止

3.介質(zhì)故障是指存儲數(shù)據(jù)庫的存儲設(shè)備故障

恢復(fù)的基本思想:它們的基本思想是一樣的:在系統(tǒng)正常運行時建立冗余數(shù)據(jù),保證有足夠的信息可用于故障恢復(fù) 。故障發(fā)生后采取措施,將數(shù)據(jù)庫內(nèi)容恢復(fù)到某個一致性狀態(tài),保證事務(wù)原子性和持久性。數(shù)據(jù)庫系統(tǒng)主要通過登記日志和數(shù)據(jù)轉(zhuǎn)儲來建立冗余數(shù)據(jù)。日志記錄了數(shù)據(jù)庫的所有更新的詳細(xì)信息,所有故障的恢復(fù)都需要使用它。數(shù)據(jù)轉(zhuǎn)儲制作數(shù)據(jù)庫的后備副本,這些副本與日志配合使用,用來實現(xiàn)介質(zhì)故障恢復(fù)。

1. 在檢查點tc 之前已經(jīng)提交的事務(wù)。這類事務(wù)已提交不需要做redo 。他們對數(shù)據(jù)庫的更新已經(jīng)建立在檢查點時輸出到數(shù)據(jù)庫中。

2. 在檢查點tc 之前開始執(zhí)行,在檢查點之后故障點tf 之前提交的事務(wù)。這類已提交的事務(wù)登記在檢查點記錄中,需要做redo 。

3. 在檢查點tc 之前開始執(zhí)行,在故障點tf 時尚未完成的事務(wù)。這類未完成的事務(wù)登記在檢查點記錄中需要做undo

4. 在檢查點tc 之后開始執(zhí)行,在故障點tf 之前提交的事務(wù)。這類已提交的事務(wù)的日志記錄都在檢查點之后,需要做redo 。

5. 在檢查點tc 之后開始執(zhí)行,在故障點tf 還未完成的事務(wù)。這類未完成的事務(wù)的日志記錄都在檢查點之后,需要做undo 。

,

Departments (Dno, Dname, Dheadno)Teachers (Tno, Tname, Sex, Birthday, Title, Dno)Students (Sno, Sname, Sex, Birthday,

Enroolyear, Speciality, Dno)Courses (Cno, Cname, Period, Credit)Teaches (Tno, Cno)SC (Sno, Cno, Grade)Evalues (Sno, Tno, Cno, Escore) Phones (Phone#, Dno, Office)

Departments (Dno, Dname, Dheadno)Teachers (Tno, Tname, Sex, Birthday, Title, Dno)Students (Sno, Sname, Sex, Birthday, Enrollyear, Speciality, Dno)Courses (Cno, Cname, Period, Credit)Teaches (Tno, Cno)SC (Sno, Cno, Grade)Evalues (Sno, Tno, Cno, Escore)的模式圖

,

用關(guān)系代數(shù)式表示查詢

(1)列出系編號為MA (數(shù)學(xué)系)的所有學(xué)生的詳細(xì)信息δθσDno=’MA’(Students)

(2)列出所有課程的課程號、課程名和學(xué)分。(這是無條件查詢。課程號、課程名和學(xué)分都是Course 的屬性,因此回答該查詢只需要將Course 投影到這些屬性上):ΠCno,Cname,Credit (Courses)

(3) 列出年齡不超過45歲的所有副教授的姓名、性別和年齡。ΠTname,Sex,Age(σAge<45∧Title=’副教授’(Teachers))

(4) 列出選修了課程號為CS201的課程的所有學(xué)生的學(xué)號ΠSno (σCno=’CS201’ (SC))

(1) 列出選修了課程號為CS201的課程的所有學(xué)生的學(xué)號和姓名ΠSno,Sname (σCno=’CS201’ (SC∞Students))

(2) 列出每個學(xué)生選修的每門課程的成績,要求列出的學(xué)號、姓名、課程名和成績ΠSno,Sname,Cname,Grade (Students∞SC ∞Courses)

(3) 求評估得分高于90分的教師所在院系名稱、教師姓名、課程名和評估得分(TCscore )

ΠDname,Tname,Cname,TCscore(ΠDno,Dname(Departments)∞ΠTno,Tname,Dno(Teachers)∞ΠTno,Cno(σTCscore>90(Teaches)∞ΠCno,Cname(Courses))

(1) 列出所有選修了CS101和CS202課程的學(xué)生的學(xué)號ΠSno(σCno=’CS101’ (SC))∩ΠSno(σCno=’CS202’ (SC)) 或者ΠSno,Cno (SC) ÷{CS101, CS202}

(2) 列出所有選修了全部課程的學(xué)生的學(xué)號和姓名ΠSno,Sname ((ΠSno,Cno (SC)÷ΠCno (Course))∞Students) ΠTno, Tname, (2008-year(Birthday)) as Age, Title (Teachers)

用元組關(guān)系演算表示查詢

(1) 列出系編號為MA (數(shù)學(xué)系)的所有學(xué)生的詳細(xì)信息{t | Students(t)∧t*Dno =’MA’}

(2) 列出所有課程的課程號、課程名和學(xué)分

{t(3) | (Еu)(Courses(u)∧t[Cno]=u[Cno]∧t[Cname]=u[Cname]∧t[Credit]=u[Credit])}

(3) 列出年齡不超過45歲的所有副教授的姓名、性別和年齡

{t(3) | (Еu)(Teachers(u)∧u*Title =’副教授’∧t[Tname]=u[Tname]∧t[Sex]=u[Sex]∧t[Age]=u[Age])}

(4) 列出選修了課程號為CS201的課程的所有學(xué)生的學(xué)號

{t(1) | (Еu)(SC(u)∧u*Cno =’CS201’∧t[Sno]=u[Sno])}

(1) 列出選修了課程號為CS201的課程的所有學(xué)生的學(xué)號和姓名

{t(2) | (E u)(E v)(SC(u)∧Students(v)∧u*Cno =’CS201’∧u[Sno]=v[Sno]∧t[Sno]=v[Sno]∧t[Sname]=v[Sname])}

(2) 列出每個學(xué)生選修的每門課程的成績,要求列出的學(xué)號、姓名、課程名和成績

{t(4) | (Εu)(Εv)(Εw)(Students(u) ∧SC(v)∧Courses(w)∧u[Sno]=v[Sno]∧v[Cno]=w[Cno]∧t[Sno]=u[Sno]∧ t*Sname =u*Sname ∧t[Cname]=v[Cname]∧t[Grade]=w[Grade])}

(3) 求評估得分高于90分的教師所在院系名稱、教師姓名、課程名和評估得分

{t(4) | (Εt1)(Εt2)(Εt3)(Εt4)(Departments(t1)∧Teachers(t2)∧Teaches(t3)∧Courses(t4)∧t1[Dno]=t2[Dno]∧t2[Tno]=t3[Tno]∧t3[Cno]=t4[Cno]∧t[Dno]=t1[Dno]∧t[Tname]=t2[Tname]∧t[Cname]=t4[Cname]∧

,

t[TCscore]=t3[TCscore])}

刪除這些元組: R =R -E

插入R ←R ∪E

修改。1. 對“大學(xué)路”支行的所有賬戶支付2.5的利息,可以用如下賦值:

Account ←ПAccount-no, Branch, Balance*1.025(σBranch=’大學(xué)路’(Account))∪(Account-σBranch=’大學(xué)路’(Account))

SQL (Structured Query Language )結(jié)構(gòu)化查詢語言,是關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言。SQL 是一個通用的、功能極強(qiáng)的關(guān)系數(shù)據(jù)庫語言SQL 的特點集多種數(shù)據(jù)庫語言于一體. 高度非過程化 . 面向集合的操作方式 . 一種語法兩種使用方式 功能強(qiáng)大,語言簡潔

創(chuàng)建選課表SC 用如下語句:

CREATE TABLE SC

(Sno CHAR (9),

Cno CHAR (5),

Grade SMALLINT CHECK (Grade>=0 AND Grade<=100),

PRIMARY KEY (Sno,Cno),

FOREIGN KEY (Sno) REFERENCES Students (Sno),

FOREIGN KEY (Cno) REFERENCES Courses (Cno));

創(chuàng)建學(xué)生表

CREATE TABLE Students

(Sno CHAR(9) PRIMARY KEY,

Sname CHAR(10) NOT NULL,

Sex CHAR (2) CHECK (Sex=’男’ OR Sex=’女’),

Birthday D ATE,

Enrollyear CHAR(4),

Speciality CHAR(20),

Dno CHAR (3),

FOREIGN KEY (Dno) REFERENCES Department (Dno));

創(chuàng)建老師CREATE TABLE Teaches

(Tno CHAR (7),

Cno CHAR (5),

TCscore SMALLINT,

PRIMARY KEY (Tno,Cno),

FOREIGN KEY (Tno) REFERENCES Teachers (Tno),

FOREIGN KEY (Cno) REFERENCES Courses (Cno));

例4.2 在Courses 中增加一個新列Pno ,表示課程的先行課的課程號,可以用

ALTER TABLE Courses ADD Pno CHAR (5);

在Students 的Sex 列設(shè)置缺省值“女”可以減少大約一半學(xué)生性別的輸入??梢杂萌缦抡Z句來設(shè)置缺省值: ALTER TABLE Students ALTER Sex SET DEFAULT ‘女’;

而刪除Sex 上的缺省值可以用

ALTER TABLE Students ALTER Sex DROP DEFAULT;

刪除Courses 中的Pno 列可以用

ALTER TABLE Courses DROP Pno;

如果用如下語句刪除SC 表

DROP TABLE SC RESTRICT;

則僅當(dāng)沒有依賴于SC 的任何數(shù)據(jù)庫對象刪除才能成功。然而,如果用

DROP TABLE SC CASCADE;

則表SC 和依賴它的數(shù)據(jù)庫對象都被徹底刪除

例4.4 在Students 的Dno 上創(chuàng)建一個名為Student_Dept的索引

可以用:

,

CREATE INDEX Student_Dept ON Students (Dno);

而在Teachers 上的Dno 創(chuàng)建一個名為Teacher-Dept 的聚簇索引可以用:

CREATE CLUSTER INDEX Teacher_Dept ON Teachers (Dno);

刪除索引Student_Dept。

DROP INDEX Student_Dept

例4.6 為WangQiang 創(chuàng)建一個名為Supply_schema的模式,可以用:

CREATE SCHEMA Supply_schema AUTHORIZATION WangQiang;

所創(chuàng)建的模式在當(dāng)前目錄下,并為WangQiang 所擁有

如果用

CREATE SCHEMA Supply_schema;

則創(chuàng)建一個名為Supply_schema的模式,但未向任何用戶授權(quán)

如果用

CREATE SCHEMA AUTHORIZATION WangQiang;

則為WangQiang 創(chuàng)建一個模式,并用WangQiang 命名

還可以在創(chuàng)建模式的同時創(chuàng)建該模式中的對象

例如

CREATE SCHEMA Supply_schema

CREATE TABLE Suppliers

(Sno CHAR(5) PRIMERY KEY,

Sname CHAR(20) NOT NULL,

Status SMALLINT,

Address CHAR(30),

Phone CHAR(10));

在創(chuàng)建模式Supply_schema的同時還在該模式中定義了一個基本表Suppliers

例4.7 語句

DROP SCHEMA Supply_schema RESTRICT

僅當(dāng)模式Supply_schema中不包含任何數(shù)據(jù)庫對象時,才刪除模式Supply_schema,否則什么也不做。而 DROP SCHEMA Supply_schema CASCADE

將直接刪除模式Supply_schema,并同時刪除該模式中所有的數(shù)據(jù)庫對象

例4.13(1) 查詢所有以“數(shù)據(jù)”開頭的課程名。

SELECT Cname

FROM Courses

WHERE Cname LIKE ‘?dāng)?shù)據(jù)’;

(2) 查詢姓李并且姓名只有兩個漢字的學(xué)生的學(xué)號和姓名。

SELECT Sno, Sname

FROM Students

WHERE Sname LIKE ‘李_ _’

(3)查詢以C_打頭的課程的詳細(xì)信息。

SELECT *

FROM Courses

WHERE Cname LIKE ‘C_’ ESCAPE ‘’;

(2) 查詢每位學(xué)生的每門課程的成績,并將查詢結(jié)果按課程號升序、成績降序排序。

SELECT *

FROM SC

ORDER BY Cno, Grade DESC; 升序ASE

例4.17 查詢每個學(xué)生的平均成績,輸出學(xué)生的學(xué)號和平均成績。

SELECT Sno, AVG (Grade)

FROM SC

,

GROUP BY Sno; 例4.18 查詢每個學(xué)生的平均成績,并輸出平均成績大于85的學(xué)生學(xué)號和平均成績。 SELECT Sno, AVG (Grade)

FROM SC

GROUP BY Sno HAVING AVG (Grade)>85;

例4.21 查詢每個學(xué)生選修的每門課程的成績,要求列出的學(xué)號、姓名、課程名和成績。 SELECT Student.Sno, Sname, Cname, Grade

FROM Students, SC, Courses

WHERE Students.Sno = SC. Sno AND SC.Cno = Course. Cno;

例4.26 查詢平均成績最高的課程的課程號和平均成績。

SELECT Cno, AVG(Grade)

FROM SC

GROUP BY Cno

HAVING AVG(Grade) >=

ALL (SELECT AVG(Grade)

FROM SC

GROUP BY Cno);

例4.28 查詢選修了全部課程的學(xué)生的學(xué)號和姓名。:

SELECT Sno, Sname

FROM Students S

WHERE NOT EXISTS

(SELECT *

FROM Courses C

WHERE NOT EXISTS

(SELECT *

FROM SC

WHERE SC.Sno= S.Sno AND SC.Cno= C.Cno))

例4.29 查詢至少選修了學(xué)號為200515122的學(xué)生選修的全部課程的學(xué)生的學(xué)號和姓名。 SELECT Sno, Sname

FROM Students S

WHERE NOT EXISTS

(SELECT *

FROM SC SC1

WHERE SC1.Sno = ‘200515122’ AND NOT EXISTS

(SELECT *

FROM SC SC2

WHERE SC2.Sno=S.Sno AND SC2.Cno=SC1.Cno))

例4.30 查詢只講授一門課程的教師的姓名和職稱

SELECT Tname, Title

FROM Teachers T

WHERE UNIQUE

(SELECT Tno

FROM Teaches TC

WHERE T.Tno=TC.Tno)

例4.31 查詢平均成績高于85分的課程的課程號

SELECT Cno, Avg_grade

FROM (SELECT Cno, AVG (Grade)

FROM SC

GROUP BY Cno) AS Course_avg_grade (Cno, Avg_grade)

,

WHERE Avg_grade>85;

例4.34 查詢既選修了CS301號課程, 又選修了CS306號課程的學(xué)生的學(xué)號

SELECT DISTINCT Sno

FROM SC

WHERE Cno=‘CS301’ AND Sno IN

(SELECT Sno

FROM SC

WHERE Cno=‘CS306’);

例4.36 將學(xué)號為200616010、姓名為司馬相如、性別為男、生日為1985-01-28、入校年份為2006年、專業(yè)為計算數(shù)學(xué)、所在院系為MATH 的學(xué)生元組插入到Students 表中。

INSERT INTO Students (Sno, Sname, Sex, Birthday, Enrollyear,

Speciality, Dno)

VALUES (‘200616010’, ‘司馬相如’, ‘男’, 1985-01-28, ‘2006’,

‘計算數(shù)學(xué)’, ‘MATH ’);

例4.37下面的語句將刪除計算機(jī)軟件與理論專業(yè)的所有學(xué)生的選課記錄:

DELETE FROM SC

WHERE Sno IN

(SELECT Sno

FROM Students

WHERE Speciality=‘計算機(jī)軟件與理論’);

例4.42 建立軟件工程專業(yè)學(xué)生的視圖SE_Students,它包含Students 中除Speciality 之外的所有屬性和軟件工程專業(yè)所有學(xué)生的信息

CREATE VIEW SE_Students

AS SELECT Sno, Sname, Sex, Birthday, Dno

FROM Students

WHERE Speciality = ‘軟件工程’

WITH CHECK OPTION;

標(biāo)簽: