筆記內(nèi)容參考自《Database System Concept 6th Edition》(數(shù)據(jù)庫系統(tǒng)概念 第六版)
數(shù)據(jù)庫筆記(數(shù)據(jù)基本概念)
1. 數(shù)據(jù)抽象(Data Abstract)
數(shù)據(jù)抽象分為三種不同的抽象,它們分別是:
- 物理層級(Physical Level):最底層的數(shù)據(jù)抽象,該級別的抽象描述數(shù)據(jù)是如何實際被存儲的。
- 邏輯層級(Logical Level):該層抽象描述了什么數(shù)據(jù)被存儲以及這些數(shù)據(jù)之間的關(guān)系扯键。它包含了少許簡單的關(guān)系性結(jié)構(gòu)掠廓,但外部用戶無需了解該結(jié)構(gòu)再愈。
- 視圖層級(View Level):最高層的抽象缰泡,它簡化了邏輯層級,用于與用戶進行交流明肮。同一個數(shù)據(jù)庫可以有多個視圖層級。
2. 實例(Instance)
數(shù)據(jù)庫實例是數(shù)據(jù)庫在特定事件中存儲的數(shù)據(jù)集合缭付。
3. 模式(Schema)
數(shù)據(jù)庫的模式是數(shù)據(jù)庫的總體設(shè)計柿估,以數(shù)據(jù)抽象作為分類,數(shù)據(jù)庫模式可分為:物理模式(Physical Schema)陷猫、邏輯模式(Logical Schema)秫舌、子模式(Subschemas)。這三種模式對應(yīng)的數(shù)據(jù)抽象層級分別為物理層級绣檬、邏輯層級足陨、視圖層級。
4. 數(shù)據(jù)模型(Data Model)
數(shù)據(jù)模型是一系列用于描述數(shù)據(jù)概念工具娇未,包括數(shù)據(jù)關(guān)系墨缘、數(shù)據(jù)語意和一致性約束。數(shù)據(jù)模型提供一種描述物理層級忘蟹、邏輯層級飒房、視圖層級的數(shù)據(jù)庫設(shè)計的方法。數(shù)據(jù)模型主要有一下幾種:
- 關(guān)系數(shù)據(jù)模型(Relational Data Model):該模型使用一系列表格來描述數(shù)據(jù)媚值,每一個表格都有數(shù)個唯一表示的列狠毯。這些表格被稱為關(guān)系(Relation)。大多數(shù)的數(shù)據(jù)庫系統(tǒng)都是基于關(guān)系模型褥芒。
- 實體關(guān)系數(shù)據(jù)模型(Entity-Relationship Data Model):簡稱E-R模型嚼松。該模型通過描述現(xiàn)實中的實體對象及其關(guān)系來描述數(shù)據(jù)嫡良。該模型多用于數(shù)據(jù)庫的設(shè)計。
- 基于對象的數(shù)據(jù)模型(Object-Based Data Model):面向?qū)ο缶幊陶Z言的流行導(dǎo)致該數(shù)據(jù)模型的出現(xiàn)献酗。它可被視為E-R模型加以面向?qū)ο筇匦缘臄?shù)據(jù)模型寝受。
- 半結(jié)構(gòu)化數(shù)據(jù)模型(Semistructured Data Model):該模型與關(guān)系數(shù)據(jù)模型不同,它允許同類數(shù)據(jù)擁有不同的屬性罕偎。其典型應(yīng)用就是XML(Extensible Markup Language)很澄。
5. 數(shù)據(jù)操縱語言(Data-Manipulation Language)
數(shù)據(jù)操縱語言(DML)是一種允許用戶在一種適當?shù)臄?shù)據(jù)模型的組織下訪問并操縱數(shù)據(jù)的語言。訪問的操作包括以下內(nèi)容:
- 數(shù)據(jù)庫存儲的信息的查詢
- 新的數(shù)據(jù)庫信息的插入
- 刪除數(shù)據(jù)庫信息
- 數(shù)據(jù)庫存儲信息的修改
這些操作可以大致分為兩類:
- 過程化DML(Procedual DML):它要求用戶描述獲取什么數(shù)據(jù)和怎樣獲取這些數(shù)據(jù)颜及。
- 聲明性DML(Declarative DML):又稱非過程化DML甩苛,與過程化DML一樣,它要求用戶描述獲取什么數(shù)據(jù)但它不要求描述其獲取方式俏站。
請求獲取數(shù)據(jù)庫信息的語句被稱為查詢(Query)讯蒲,一些包含信息查詢操作的DDL被稱為查詢語言(Query Language)。雖然有一些不正確肄扎,一般來說DML和查詢語言可被視為同義詞墨林。
6. 數(shù)據(jù)定義語言(Data-definition Language)
使用一組定義語句來確定數(shù)據(jù)庫模式的語言被稱為數(shù)據(jù)定義語言(DDL)。其中一種特殊的用于確定存儲結(jié)構(gòu)以及訪問方法的DDL被稱為數(shù)據(jù)存儲與定義語言(Data Storage and Definition Language)犯祠。它定義了數(shù)據(jù)庫模式的實現(xiàn)細節(jié)旭等,但它一般是隱藏的,不被用戶所看見的雷则。
在定義數(shù)據(jù)時辆雾,必須同時定義數(shù)據(jù)的一致性約束(Consistency Constrain)。存儲的數(shù)據(jù)必須滿足定義的一致性約束月劈。一致性約束分為以下幾類:
- 域約束(Domain Constraints):域約束要求存儲的信息的屬性的值必須是約束定義的數(shù)據(jù)類型的值度迂。域約束是最主要的完整性約束,每當新的數(shù)據(jù)項被添加進數(shù)據(jù)庫時該約束會被系統(tǒng)檢查猜揪。
- 參照完整性(Referential Integrity):參照完整性要求兩個存在關(guān)聯(lián)的關(guān)系(表)中存在一個關(guān)系的一組屬性與另一個關(guān)系的對應(yīng)的一組關(guān)系中存在滿射關(guān)系(數(shù)學解釋)惭墓。即數(shù)據(jù)庫中兩個有關(guān)聯(lián)關(guān)系的表中,一個表中的一組屬性的值必須要在另一個表中的對應(yīng)的一組屬性中出現(xiàn)而姐。該關(guān)系用于確定每個關(guān)系(表)的關(guān)聯(lián)性腊凶。若兩個關(guān)系的對應(yīng)屬性不滿足參照完整性,兩個關(guān)系之間的關(guān)聯(lián)性不成立拴念。
- 斷言(Assertion):斷言是任意數(shù)據(jù)庫必須滿足的條件钧萍。可以說域約束與參照性完整性都是特殊的斷言政鼠。斷言要求約束的描述必須要明確风瘦。在斷言被創(chuàng)建時,數(shù)據(jù)庫要進行驗證操作公般,創(chuàng)建的斷言不能違反已經(jīng)創(chuàng)建的斷言万搔。
- 權(quán)限(Authorization):在多用戶的數(shù)據(jù)庫系統(tǒng)中胡桨,每一個用戶對于不同數(shù)據(jù)的操作的權(quán)限不同。權(quán)限用于控制每一個用戶對于特定數(shù)據(jù)的每一種操作的進行的權(quán)力瞬雹。一般權(quán)限包括讀權(quán)限(Read Authorization)昧谊、插入權(quán)限(Insert Authorization)、更新權(quán)限(Update Authorization)酗捌、刪除權(quán)限(Delete Authorization)。這些權(quán)限也可以被組合賦予不同的用戶胖缤。
另外馅巷,DDL執(zhí)行的輸出被稱為數(shù)據(jù)字典(Data Dictionary)草姻,它包含數(shù)據(jù)的數(shù)據(jù)稍刀,即屬性的列表——元數(shù)據(jù)(Metadata)。數(shù)據(jù)字典是一種特殊類型的表账月,只能被數(shù)據(jù)庫系統(tǒng)本身訪問和更新综膀。當數(shù)據(jù)庫讀取或修改實際的數(shù)據(jù)時會首先查詢數(shù)據(jù)字典。