DBMS(database-management system)包括數據庫和用於存取數據的程序,DBMS的基本目標是爲數據的存取提供方便、高效的方式,此外對大多數企業來講,數據是很是重要的,因此DBMS還要保證數據的安全,好比在系統奔潰或收到未受權訪問請求的時候。
1、數據抽象
a) 數據庫系統隱藏了數據在存儲、維護方面的細節,以視圖的形式爲用戶提供數據。數據庫系統必須能知足高效地查詢數據的需求,爲此設計者將數據庫系統抽象爲三層:物理層、邏輯層、視圖層
b) 物理層,描述了數據在物理存儲介質的實際存儲方式;
邏輯層,描述了數據在數據庫的存儲方式以及數據之間的邏輯關係,儘管爲了實現這些邏輯關係須要複雜的物理關係,邏輯層爲用戶隱藏了這些複雜性。
視圖層,是對數據庫最高級別的抽象,雖然邏輯層隱藏了物理層的複雜度,但對於一個完整的數據庫所儲存的信息來講,邏輯層仍然是很是複雜的,除了DBA有時可能直接操做邏輯層,普通用戶每每只須要訪問其中的一部分數據,視圖層就是爲了簡化普通用戶與數據庫的交互而存在的。同一個數據庫能夠有多份視圖。
c) 隨着數據的增刪改,數據庫會不斷變化。在某一刻數據庫中全部信息的集合稱爲Instance;而數據庫的總體結構稱爲Schema,Schema不多發生變化。用程序來類比的話,Schema至關於預先聲明的變量,Instance則至關於變量的值。
數據庫有不一樣的分層,對應就有不一樣的Schema,視圖層甚至有多個subschema。
2、數據模型
數據模型是用於描述數據、數據關係、數據語義、一致性約束的一系列工具的集合。數據模型能夠從物理、邏輯、視圖的層面描述數據庫的設計,有多種類型:
a) Relational Model
關係模型用表來描述數據及相互關係,每張表有多個列,每一個列有惟一的名稱,表和表之間又存在必定的關係。關係模型是一種基於記錄的模型,採用這種模型記錄的數據都有固定數量的字段或屬性(列),這種模型的使用最爲普遍。
b) Entity-Relationship Model
E-R模型用了實體和實體間關係這樣的概念,實體對應於現實世界的對象。這種模型也被普遍使用。
c) Object-Based Data Model
因爲面向對象的編程語言成爲主流,基於對象的數據模型也應運而生,這種模型結合和關係模型和E-R模型的特性,並增長了封裝、方法等面向對象的思想。
d) Semistructured Data Model
在XML等半結構化的數據模型中,容許數據有不一樣的字段,這與以前的模型都不相同。
3、數據庫語言
SQL包含DDL(data-definition language)和DML(data-manpulate language)。
a) DML
DML用於對數據的操做如增刪改查,分爲過程化DML和非過程化DML,前者在使用時要指定須要操做的數據以及操做的方式,後者只須要指定須要的數據就能夠了,剩下的交給數據庫系統(將查詢語句翻譯成對物理層的操做),因此後者更容易學習和使用。
b) DDL
DDL用於定義數據的schema、存取方式、約束等。
域約束(domain constraints):對數據類型的約束,每次插入數據都會檢查
參照完整性(referential ingegrity):要保證被關聯的對象是存在的,好比course表中dept_name與department表的某列關聯,那麼dept_name的值必須是department實際存在的。數據庫的修改有可能會破壞參照完整性,這時應該阻止操做以免破壞參照完整性。
斷言(assertions):是數據庫在任什麼時候候都必須知足的條件,域約束和參照完整性是特殊的斷言。通常的對相似「每一個部門必須提供至少5個節目」這樣的限制就能夠建立斷言,而後每次對數據改動前都會檢查是否知足斷言。
權限(authorization):常見的權限類型有讀取、插入、更新、刪除等,能夠控制用戶擁有某幾項權限。
DDL語句執行的結果爲數據字典,這種數據字典能夠看做是隻能被數據庫系統維護的特殊表。數據庫在進行數據的查詢、操做前都會先查閱數據字典。
學習資料:Database System Concepts, by Abraham Silberschatz, Henry F.Korth, S.Sudarshan數據庫