在計算機中,和咱們的操做系統同樣,有一套軟件。這種軟件用於管理咱們存儲的數據,這個軟件稱爲數據庫管理系統(DBMS),而咱們平時說的數據庫,指的就是這個數據庫管理系統。在咱們的生活中,到處都有數據的身影。而咱們天天都在產生着數據,這些數據在計算機中怎麼存儲呢?總不能隨便亂放吧,這樣,若是咱們在須要的時候要獲取這些數據,那麼不是得找死人啊。要是能夠把那些數據進行分類,並進行管理,那麼就能夠對這些數據進行有效的利用。而數據庫管理系統就是擔當這個重任,用於對數據的管理。固然,數據庫管理系統的能力是很強大的,不僅是這些。數據庫
有些人可能以爲,我在文件夾中保存數據,經過不一樣的目錄結構來對數據進行組織,也能夠達到對數據的有效管理。可是,數據庫的出現,除了要對數據進行有效的組織,關鍵是爲了解決以下的問題:編程
數據庫系統是一些相關聯的數據和一組訪問數據庫和修改數據庫的程序的集合。數據庫系統提供給用戶抽象的視圖,而且隱藏了低層的存儲細節。安全
數據庫爲了方便對數據的檢索,對數據進行分層次來屏蔽複雜性併發
數據抽象對數據分爲3層:數據庫設計
特定時刻存儲存儲在數據庫中的信息集合稱爲數據庫的一個實例,而數據庫的整體設計稱爲數據庫模式。這個有點抽象,形象的說,類比C語言,模式就至關因而定義的一個變量,而實例就至關因而變量存儲的值,而變量的值在不一樣的時刻是不一樣的。編程語言
對於數據庫的不一樣抽象層次,數據庫的模式能夠分爲物理模式,對應了數據庫層次中的物理層;邏輯模式對應了數據庫抽象層次中的邏輯層;而對於視圖層次,則能夠分爲多個子模式,對應了多個視圖。工具
數據庫結構的基礎是數據模型。數據模型是一個描述數據,數據聯繫,數據語義以及一致性約束的概念工具集合。數據模型提供了一種描述物理層,邏輯層以及視圖層數據庫設計的方式。操作系統
數據模型能夠被分爲:設計
數據操縱語言(DML)是一種使用戶能夠訪問或操做那些經過必定的數據模型組織起來的數據的語言。對象
數據操縱語言能夠分爲:
查詢是要求對信息進行檢索的語句。DML中涉及信息檢索的部分稱爲查詢語言。
數據庫模式是經過一系列定義來講明的,這些定義由一種稱做數據定義語言(DDL)的特殊語言來定義的。數據庫系統使用的存儲結構和訪問方式是經過一系列特殊的DDL語句來講明,這種特殊的DDL稱做數據存儲和定義語言。這些語言定義了數據庫模式的實現細節,而這些細節對用戶來講一般是不可見的。
存儲在數據庫中的數據值必須知足一些一致性約束,約束條件包括:
在關係數據庫中,關係是經過表來表示的。在一個表中,每一行表明一個聯繫,而一個關係就是由許多的聯繫組成的集合。表的概念和數學上的關係的概念是密切相關的。在數學中,一個元組就是一組值得序列,在n個值之間的聯繫能夠在數學上用關於這些值得一個n元組表示。
這樣,在關係模型中,關係用來指表明,而元組用來指代行,屬性就是表中的列。
對於每個屬性,都存在一個容許取值的集合,稱爲該屬性的域。
在數據庫中,數據庫模式就至關於編程語言中定義的變量,而數據庫實例就至關因而這個變量保存的值。在不一樣的時刻,數據庫中保存的內容是可能改變的,而數據庫的邏輯定義通常是不會被改變的。
通常來講,關係模式由屬性序列以及各屬性對應的域組成。關係實例由數據庫中存儲的內容組成。
在數據庫中,必須有一種能夠區分給定關係中的不一樣的元組的方法。也就是說,一個元組的屬性值必須是可以惟一區分元組的。
超碼是一個或多個屬性的集合,這些屬性的組合可使得咱們在一個關係中惟一地標識一個元組。在一個超碼中,可能包含了可有可無的屬性,若是對於一些超碼,他們的任意真子集都不能成爲超碼,這樣的最小超碼稱爲候選碼。
當數據庫的設計者在候選碼中選中了一個碼用來在一個關係中區分不一樣的元組,那麼這個被選中的候選碼就被稱爲主碼。
一個關係模式R1,在它的屬性中包含了另外一個關係模式R2的主碼,那麼這個屬性在R1上被稱爲是一個參照R2的外碼。關係R1也稱爲這個外碼依賴的參照關係,R2被稱爲外碼的被參照關係。在參照關係和被參照關係上的約束被稱爲參照完整性約束。參照完整性約束要求在參照關係中,任意一個元組在特定屬性上的取值必然等於被參照關係中某個元組在特定屬性上的取值。
參考:《Database System Concepts》