軟考軟件設(shè)計(jì)師重點(diǎn)難點(diǎn):數(shù)據(jù)庫
軟件設(shè)計(jì)師重點(diǎn)難點(diǎn)——數(shù)據(jù)庫
數(shù)據(jù)庫管理系統(tǒng)(DBMS)
數(shù)據(jù)庫管理系統(tǒng)(DBMS)是指DBS中對(duì)數(shù)據(jù)進(jìn)行管理的軟件系統(tǒng),它是DBS的核心成分。DBS中所有與數(shù)據(jù)庫打交道的操作,包括建庫、查詢、更新及數(shù)據(jù)控制,都是通過DBMS進(jìn)行的。數(shù)據(jù)庫管理系統(tǒng)總是基于某種數(shù)據(jù)庫模型,可分為網(wǎng)狀型、層次型、關(guān)系型和面向?qū)ο笮虳BMS。
數(shù)據(jù)庫管理系統(tǒng)的主要目標(biāo):把數(shù)據(jù)作為可管理的資源處理。
數(shù)據(jù)庫管理系統(tǒng)的5個(gè)重要功能:
◆數(shù)據(jù)庫的定義功能:DBMS提供數(shù)據(jù)定義語言(DDL)定義數(shù)據(jù)庫的3級(jí)結(jié)構(gòu),包括外模式、概念模式、內(nèi)模式及其相互之間的映象,定義數(shù)據(jù)的完整性約束、保密限制等條件。因此在DBMS中包括DDL的編譯程序。
◆數(shù)據(jù)庫的操縱功能:提供數(shù)據(jù)操縱語言(DML)實(shí)現(xiàn)對(duì)數(shù)據(jù)的操作。有4種基本操作:檢索(查詢)、插入、刪除、修改。在DBMS中包括DML的編譯程序或解釋程序。
◆數(shù)據(jù)庫的保護(hù)功能:DBMS對(duì)數(shù)據(jù)庫的保護(hù)主要通過4個(gè)子系統(tǒng):
A.數(shù)據(jù)庫恢復(fù)(在數(shù)據(jù)庫被破壞或數(shù)據(jù)不正確時(shí),系統(tǒng)有能力把數(shù)據(jù)庫恢復(fù)到最近某個(gè)正確的狀態(tài)
B.數(shù)據(jù)完整性控制(保證數(shù)據(jù)庫中數(shù)據(jù)及語義的正確性和有效性,防止任何對(duì)數(shù)據(jù)錯(cuò)誤的操作)
C.多用戶環(huán)境下的并發(fā)控制。
D.數(shù)據(jù)安全性控制(防止未被授權(quán)的用戶蓄謀或無意地存取數(shù)據(jù)庫中的數(shù)據(jù),以免數(shù)據(jù)的泄露或破壞)。
◆數(shù)據(jù)庫的維護(hù)功能:這部分包括數(shù)據(jù)庫的初始數(shù)據(jù)載入、轉(zhuǎn)換功能、存儲(chǔ)功能、數(shù)據(jù)庫的改組、性能監(jiān)視功能。
◆數(shù)據(jù)字典(DD):DD管理數(shù)據(jù)庫3級(jí)結(jié)構(gòu)的定義。對(duì)于數(shù)據(jù)庫的操作都要通過查閱DD才能進(jìn)行。現(xiàn)在有的大型系統(tǒng)中,把DD單獨(dú)抽出來自成一個(gè)系統(tǒng),成為一個(gè)系統(tǒng)工具,使得DD成為一個(gè)比DBMS更高級(jí)的用戶與數(shù)據(jù)庫之間的接口。
要注意的是:應(yīng)用程序并不屬于DBMS的范圍。應(yīng)用程序是用主語言和DML編寫的,程序中的DML語句由DBMS執(zhí)行,而其余部分仍由主語言編譯程序完成。
數(shù)據(jù)庫系統(tǒng)(DBS)
數(shù)據(jù)庫系統(tǒng)是一個(gè)復(fù)雜的系統(tǒng),它是采用了數(shù)據(jù)庫技術(shù)的計(jì)算機(jī)系統(tǒng)。因此,它不僅僅是一組對(duì)數(shù)據(jù)進(jìn)行管理的軟件(即DBMS),也不僅僅是一個(gè)數(shù)據(jù)庫。它是一個(gè)實(shí)際可運(yùn)行的、按照數(shù)據(jù)庫方法存儲(chǔ)、維護(hù)和向應(yīng)用系統(tǒng)提供數(shù)據(jù)支持的系統(tǒng)。它是存儲(chǔ)介質(zhì)、處理對(duì)象和管理系統(tǒng)的集合體,由數(shù)據(jù)庫DB、硬件支持系統(tǒng)、軟件支持系統(tǒng)和數(shù)據(jù)庫管理員DBA這四部分組成。
SQL語句
◆基本表的定義可用“CREATE TABLE”語句實(shí)現(xiàn),增加屬性可以用ALTER...ADD...”語句,刪除屬性可以用“ALTER...DROP...”語句;刪除已存在的表可用“DROP TABLE...”語句。
◆視圖的定義和撤消
◆索引的定義和撤銷
◆SELECT 查詢語句
◆DELETE刪除語句
◆INSERT插入語句
◆uPDATE語句
關(guān)系運(yùn)算
專門的關(guān)系運(yùn)算包括選擇、投影、連接、除等。
選擇(Selection)
選擇又稱為限制(Restriction)。它是在關(guān)系R中選擇滿足給定條件的諸元組,記作:
σF(R) = {t|t∈R ∧ F(t)='真'}
其中F表示選擇條件,它是一個(gè)邏輯表達(dá)式,取邏輯值‘真’或‘假’。
邏輯表達(dá)式F的基本形式為:
X1 θ Y1 [ φ X2 θ Y2 ]
θ表示比較運(yùn)算符,它可以是>、≥、<、≤、=或≠。X1、Y1等是屬性名或常量或簡(jiǎn)單函數(shù)。屬性名也可以用它的序號(hào)來代替。φ表示邏輯運(yùn)算符,它可以是僼、∧或∨。[ ]表示任選項(xiàng),即[ ]中的部分可以要也可以不要,...表示上述格式可以重復(fù)下去。
因此選擇運(yùn)算實(shí)際上是從關(guān)系R中選取使邏輯表達(dá)式F為真的元組。這是從行的角度進(jìn)行的運(yùn)算。
舉例
設(shè)有一個(gè)學(xué)生-課程關(guān)系數(shù)據(jù)庫,包括學(xué)生關(guān)系Student、課程關(guān)系Course和選修關(guān)系SC。下面的許多例子將對(duì)這三個(gè)關(guān)系進(jìn)行運(yùn)算。
例1 查詢信息系(IS系)全體學(xué)生
σSdept='IS'(Student) 或 σ5='IS'(Student)
例2 查詢年齡小于20歲的元組
σSage<20(Student)
或σ4<20(Student) 。
投影(Projection)
關(guān)系R上的投影是從R中選擇出若干屬性列組成新的關(guān)系。記作:
ΠA(R) = { t[A] | t∈R }
其中A為R中的屬性列。
舉例
例3 查詢學(xué)生關(guān)系Student在學(xué)生姓名和所在系兩個(gè)屬性上的投影:
ΠSname,Sdept(Student)
或
Π2,5(Student)
結(jié)果如圖2-7(a)。
投影之后不僅取消了原關(guān)系中的某些列,而且還可能取消某些元組,因?yàn)槿∠四承⿲傩粤泻,就可能出現(xiàn)重復(fù)行,應(yīng)取消這些完全相同的行。
例4 查詢學(xué)生關(guān)系Student中都有哪些系,即查詢學(xué)生關(guān)系Student在所在系屬性上的投影
ΠSdept(Student)
投影之后不僅取消了原關(guān)系中的某些列,而且還可能取消某些元組,因?yàn)槿∠四承⿲傩粤泻,就可能出現(xiàn)重復(fù)行,應(yīng)取消這些完全相同的行。
連接(Join)
連接也稱為θ連接。它是從兩個(gè)關(guān)系的笛卡爾積中選取屬性間滿足一定條件的元組。記作:
其中A和B分別為R和S上度數(shù)相等且可比的屬性組。θ是比較運(yùn)算符。連接運(yùn)算從R和S的笛卡爾積R×S中選取(R關(guān)系)在A屬性組上的值與(S關(guān)系)在B屬性組上值滿足比較關(guān)系θ的元組。
連接運(yùn)算中有兩種最為重要也最為常用的連接,一種是等值連接(equi-join),另一種是自然連接(Natural join)。
θ為“=”的連接運(yùn)算稱為等值連接。它是從關(guān)系R與S的笛卡爾積中選取A、B屬性值相等的那些元組。即等值連接為:
自然連接(Natural join)是一種特殊的等值連接,它要求兩個(gè)關(guān)系中進(jìn)行比較的分量必須是相同的屬性組,并且要在結(jié)果中把重復(fù)的屬性去掉。即若R和S具有相同的屬性組B,則自然連接可記作:
一般的連接操作是從行的角度進(jìn)行運(yùn)算。但自然連接還需要取消了重復(fù)列,所以是同時(shí)從行和列的角度進(jìn)行運(yùn)算。
除(Division)
給定關(guān)系R(X,Y)和S(Y,Z),其中X、Y、Z為屬性組。R中的Y與S中的Y&127;可以有不同的屬性名,但必須出自相同的域集。R與S的除運(yùn)算得到一個(gè)新的關(guān)系P(X),P是R中滿足下列條件的元組在X屬性列上的投影:元組在X上分量值x的象集Yx包含S在Y上投影的集合。記作:
其中Yx為x在R中的象集,x=tr[X]。
舉例
例6 設(shè)關(guān)系R、S分別為圖2-9中的(a)和(b),R÷S的結(jié)果為圖2-9(c)。
在關(guān)系R中,A可以取四個(gè)值{a1, a2, a3, a4}。其中:
a1的象集為{(b1,c2), (b2,c3), (b2,c1)}
a2的象集為{(b3,c7), (b2,c3)}
a3的象集為{(b4,c6)}
a4的象集為{(b6,c6)}
S在(B,C)上的投影為{(b1,c2), (b2,c3), (b2,c1)}
顯然只有a1的象集(B,C)a1包含S在(B,C)屬性組上的投影,所以R÷S={a1}。
R |
| S |
| R÷S | ||||
A | B | C | B | C | D | A | ||
a1 | b1 | c2 | b1 | c2 | d1 | a1 | ||
a2 | b3 | c7 | b2 | c1 | d1 |
| ||
a3 | b4 | c6 | b2 | c1 | d1 |
| ||
a1 | b2 | c3 | b2 | c3 | d2 |
| ||
a4 | b6 | c6 |
|
|
|
| ||
a2 | b2 | c3 |
|
|
|
| ||
a1 | b2 | c1 |
|
|
|
| ||
(a) | (b) | (c) |