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