DBMS(database-management
system)包括數(shù)據(jù)庫(kù)和用于存取數(shù)據(jù)的程序,DBMS的基本目標(biāo)是為數(shù)據(jù)的存取提供方便耻矮、高效的方式秦躯,此外對(duì)大多數(shù)企業(yè)來(lái)說(shuō),數(shù)據(jù)是非常重要的,所以DBMS還要保證數(shù)據(jù)的安全裆装,比如在系統(tǒng)奔潰或收到未授權(quán)訪(fǎng)問(wèn)請(qǐng)求的時(shí)候宦赠。
一陪毡、數(shù)據(jù)抽象
a) 數(shù)據(jù)庫(kù)系統(tǒng)隱藏了數(shù)據(jù)在存儲(chǔ)、維護(hù)方面的細(xì)節(jié)勾扭,以視圖的形式為用戶(hù)提供數(shù)據(jù)毡琉。數(shù)據(jù)庫(kù)系統(tǒng)必須能滿(mǎn)足高效地查詢(xún)數(shù)據(jù)的需求,為此設(shè)計(jì)者將數(shù)據(jù)庫(kù)系統(tǒng)抽象為三層:物理層妙色、邏輯層桅滋、視圖層
b) 物理層,描述了數(shù)據(jù)在物理存儲(chǔ)介質(zhì)的實(shí)際存儲(chǔ)方式;
邏輯層身辨,描述了數(shù)據(jù)在數(shù)據(jù)庫(kù)的存儲(chǔ)方式以及數(shù)據(jù)之間的邏輯關(guān)系丐谋,盡管為了實(shí)現(xiàn)這些邏輯關(guān)系需要復(fù)雜的物理關(guān)系,邏輯層為用戶(hù)隱藏了這些復(fù)雜性煌珊。
視圖層号俐,是對(duì)數(shù)據(jù)庫(kù)最高級(jí)別的抽象,雖然邏輯層隱藏了物理層的復(fù)雜度定庵,但對(duì)于一個(gè)完整的數(shù)據(jù)庫(kù)所儲(chǔ)存的信息來(lái)說(shuō)吏饿,邏輯層仍然是非常復(fù)雜的,除了DBA有時(shí)可能直接操作邏輯層蔬浙,普通用戶(hù)往往只需要訪(fǎng)問(wèn)其中的一部分?jǐn)?shù)據(jù)象泵,視圖層就是為了簡(jiǎn)化普通用戶(hù)與數(shù)據(jù)庫(kù)的交互而存在的蚊伞。同一個(gè)數(shù)據(jù)庫(kù)可以有多份視圖。
c) 隨著數(shù)據(jù)的增刪改佳魔,數(shù)據(jù)庫(kù)會(huì)不斷變化厘线。在某一刻數(shù)據(jù)庫(kù)中所有信息的集合稱(chēng)為Instance烙心;而數(shù)據(jù)庫(kù)的整體結(jié)構(gòu)稱(chēng)為Schema粱甫,Schema很少發(fā)生變化搂漠。用程序來(lái)類(lèi)比的話(huà),Schema相當(dāng)于預(yù)先聲明的變量亮隙,Instance則相當(dāng)于變量的值袁余。
數(shù)據(jù)庫(kù)有不同的分層,對(duì)應(yīng)就有不同的Schema咱揍,視圖層甚至有多個(gè)subschema。
二棚饵、數(shù)據(jù)模型
數(shù)據(jù)模型是用于描述數(shù)據(jù)煤裙、數(shù)據(jù)關(guān)系、數(shù)據(jù)語(yǔ)義噪漾、一致性約束的一系列工具的集合硼砰。數(shù)據(jù)模型可以從物理、邏輯欣硼、視圖的層面描述數(shù)據(jù)庫(kù)的設(shè)計(jì)题翰,有多種類(lèi)型:
a) Relational Model
關(guān)系模型用表來(lái)描述數(shù)據(jù)及相互關(guān)系,每張表有多個(gè)列,每個(gè)列有唯一的名稱(chēng)豹障,表和表之間又存在一定的關(guān)系冯事。關(guān)系模型是一種基于記錄的模型,采用這種模型記錄的數(shù)據(jù)都有固定數(shù)量的字段或?qū)傩裕校┭@種模型的使用最為廣泛昵仅。
b) Entity-Relationship Model
E-R模型用了實(shí)體和實(shí)體間關(guān)系這樣的概念,實(shí)體對(duì)應(yīng)于現(xiàn)實(shí)世界的對(duì)象累魔。這種模型也被廣泛使用摔笤。
c) Object-Based Data Model
由于面向?qū)ο蟮木幊陶Z(yǔ)言成為主流,基于對(duì)象的數(shù)據(jù)模型也應(yīng)運(yùn)而生垦写,這種模型結(jié)合和關(guān)系模型和E-R模型的特性吕世,并增加了封裝、方法等面向?qū)ο蟮乃枷搿?/p>
d) Semistructured Data Model
在XML等半結(jié)構(gòu)化的數(shù)據(jù)模型中梯投,允許數(shù)據(jù)有不同的字段命辖,這與之前的模型都不相同。
三晚伙、數(shù)據(jù)庫(kù)語(yǔ)言
SQL包含DDL(data-definition language)和DML(data-manpulate language)吮龄。
a) DML
DML用于對(duì)數(shù)據(jù)的操作如增刪改查,分為過(guò)程化DML和非過(guò)程化DML咆疗,前者在使用時(shí)要指定需要操作的數(shù)據(jù)以及操作的方式漓帚,后者只需要指定需要的數(shù)據(jù)就可以了,剩下的交給數(shù)據(jù)庫(kù)系統(tǒng)(將查詢(xún)語(yǔ)句翻譯成對(duì)物理層的操作)午磁,所以后者更容易學(xué)習(xí)和使用尝抖。
b) DDL
DDL用于定義數(shù)據(jù)的schema、存取方式迅皇、約束等昧辽。
域約束(domain constraints):對(duì)數(shù)據(jù)類(lèi)型的約束,每次插入數(shù)據(jù)都會(huì)檢查
參照完整性(referential ingegrity):要保證被關(guān)聯(lián)的對(duì)象是存在的登颓,比如course表中dept_name與department表的某列關(guān)聯(lián)搅荞,那么dept_name的值必須是department實(shí)際存在的。數(shù)據(jù)庫(kù)的修改有可能會(huì)破壞參照完整性框咙,這時(shí)應(yīng)該阻止操作以避免破壞參照完整性咕痛。
斷言(assertions):是數(shù)據(jù)庫(kù)在任何時(shí)候都必須滿(mǎn)足的條件,域約束和參照完整性是特殊的斷言喇嘱。一般的對(duì)類(lèi)似“每個(gè)部門(mén)必須提供至少5個(gè)節(jié)目”這樣的限制就可以創(chuàng)建斷言茉贡,然后每次對(duì)數(shù)據(jù)改動(dòng)前都會(huì)檢查是否滿(mǎn)足斷言。
權(quán)限(authorization):常見(jiàn)的權(quán)限類(lèi)型有讀取者铜、插入腔丧、更新放椰、刪除等,可以控制用戶(hù)擁有某幾項(xiàng)權(quán)限愉粤。
DDL語(yǔ)句執(zhí)行的結(jié)果為數(shù)據(jù)字典砾医,這種數(shù)據(jù)字典可以看作是只能被數(shù)據(jù)庫(kù)系統(tǒng)維護(hù)的特殊表。數(shù)據(jù)庫(kù)在進(jìn)行數(shù)據(jù)的查詢(xún)科汗、操作前都會(huì)先查閱數(shù)據(jù)字典藻烤。
學(xué)習(xí)資料:Database System Concepts, by Abraham Silberschatz, Henry F.Korth, S.Sudarshan