成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

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

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

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

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

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

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

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

數(shù)據(jù)模型的三要素:1. 數(shù)據(jù)結(jié)構:數(shù)據(jù)結(jié)構描述數(shù)據(jù)庫中的對象和對象之間的聯(lián)系,是對系統(tǒng)靜態(tài)特性的描述,數(shù)據(jù)結(jié)構刻畫了數(shù)據(jù)模型最重要的方面,數(shù)據(jù)結(jié)構定義基本數(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é)構可以分為:單用戶結(jié)構,主從式結(jié)構,分布式結(jié)構,客戶/服務器結(jié)構,瀏覽器/應用服務器/數(shù)據(jù)庫服務器結(jié)構

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

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

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

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

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

,

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

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

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

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

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

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

CREATE TABLE Students

( Sno CHAR(9) PRIMARY KEY,

Sname CHAR(8),

Ssex CHAR(2),

Sbirthday DATE,

Sspeciality CHAR(20));

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

,

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

,

盤。 不可重復讀 :修改刪除插入

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

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

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

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

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

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

意向鎖: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)度所引起的,容易處理。死鎖又兩種處理方法:預防、檢測和解除。

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

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

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

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

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

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

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

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

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

5. 在檢查點tc 之后開始執(zhí)行,在故障點tf 還未完成的事務。這類未完成的事務的日志記錄都在檢查點之后,需要做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)的模式圖

,

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

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

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

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

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

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

(2) 列出每個學生選修的每門課程的成績,要求列出的學號、姓名、課程名和成績Π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課程的學生的學號ΠSno(σCno=’CS101’ (SC))∩ΠSno(σCno=’CS202’ (SC)) 或者ΠSno,Cno (SC) ÷{CS101, CS202}

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

用元組關系演算表示查詢

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

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

{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的課程的所有學生的學號

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

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

{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) 列出每個學生選修的每門課程的成績,要求列出的學號、姓名、課程名和成績

{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. 對“大學路”支行的所有賬戶支付2.5的利息,可以用如下賦值:

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

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

創(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)建學生表

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 列設置缺省值“女”可以減少大約一半學生性別的輸入??梢杂萌缦抡Z句來設置缺省值: 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;

則僅當沒有依賴于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)建的模式在當前目錄下,并為WangQiang 所擁有

如果用

CREATE SCHEMA Supply_schema;

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

如果用

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

僅當模式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 ‘數(shù)據(jù)’;

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

SELECT Sno, Sname

FROM Students

WHERE Sname LIKE ‘李_ _’

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

SELECT *

FROM Courses

WHERE Cname LIKE ‘C_’ ESCAPE ‘’;

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

SELECT *

FROM SC

ORDER BY Cno, Grade DESC; 升序ASE

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

SELECT Sno, AVG (Grade)

FROM SC

,

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

FROM SC

GROUP BY Sno HAVING AVG (Grade)>85;

例4.21 查詢每個學生選修的每門課程的成績,要求列出的學號、姓名、課程名和成績。 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 查詢選修了全部課程的學生的學號和姓名。:

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 查詢至少選修了學號為200515122的學生選修的全部課程的學生的學號和姓名。 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號課程的學生的學號

SELECT DISTINCT Sno

FROM SC

WHERE Cno=‘CS301’ AND Sno IN

(SELECT Sno

FROM SC

WHERE Cno=‘CS306’);

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

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

Speciality, Dno)

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

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

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

DELETE FROM SC

WHERE Sno IN

(SELECT Sno

FROM Students

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

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

CREATE VIEW SE_Students

AS SELECT Sno, Sname, Sex, Birthday, Dno

FROM Students

WHERE Speciality = ‘軟件工程’

WITH CHECK OPTION;

標簽: