數據庫基本概念

1. 什麼是數據庫

 

0931460

 

在計算機中,和咱們的操做系統同樣,有一套軟件。這種軟件用於管理咱們存儲的數據,這個軟件稱爲數據庫管理系統(DBMS),而咱們平時說的數據庫,指的就是這個數據庫管理系統。在咱們的生活中,到處都有數據的身影。而咱們天天都在產生着數據,這些數據在計算機中怎麼存儲呢?總不能隨便亂放吧,這樣,若是咱們在須要的時候要獲取這些數據,那麼不是得找死人啊。要是能夠把那些數據進行分類,並進行管理,那麼就能夠對這些數據進行有效的利用。而數據庫管理系統就是擔當這個重任,用於對數據的管理。固然,數據庫管理系統的能力是很強大的,不僅是這些。數據庫

 

有些人可能以爲,我在文件夾中保存數據,經過不一樣的目錄結構來對數據進行組織,也能夠達到對數據的有效管理。可是,數據庫的出現,除了要對數據進行有效的組織,關鍵是爲了解決以下的問題:編程

  • 數據的冗餘和不一致:若是相同的信息被存儲在不一樣的位置,那麼可能會出現數據的冗餘,就是能夠在一個地方存的數據,恰恰要分好多的地方存儲。並且若是在不一樣的位置存儲了相同的數據,並且在存儲的時候存儲的結果不一樣,那麼就會致使數據存儲的不一致。
  • 數據訪問困難:若是用戶須要查看一些數據,那麼在沒有數據庫管理系統的狀況下,即便數據組織的很好,可是在查詢的時候也可能會不可避免的須要手工勞動,更加別提在混亂的數據中查找本身須要的信息了。
  • 數據孤立:因爲數據存儲在不一樣的文件中,在須要的時候必須分散到每一個文件中收集信息。
  • 完整性問題:在數據庫中,能夠定義完整性約束條件,使得數據在保存的時候能夠知足必定的約束性條件。
  • 原子性問題:在訪問數據數據的時候,可能須要進行原子操做(所謂的原子操做,若是一個操做是不能分多步進行的,那麼這個操做就是原子的)。如銀行帳戶的存取款操做,就須要涉及到原子操做。
  • 併發操做:在訪問數據的時候,可能會出現多個用戶訪問同一個數據源,那麼這須要保證數據是能夠被併發訪問的。
  • 安全性問題:有些數據是須要保護的,不是全部的數據都是公開給每個用戶的。因此須要對數據訪問設置安全措施。

 

2. 數據視圖

 

數據庫系統是一些相關聯的數據和一組訪問數據庫和修改數據庫的程序的集合。數據庫系統提供給用戶抽象的視圖,而且隱藏了低層的存儲細節。安全

 

2.1 數據抽象

 

數據庫爲了方便對數據的檢索,對數據進行分層次來屏蔽複雜性併發

1-2-1

數據抽象對數據分爲3層:數據庫設計

  • 物理層:最低層次的抽象,描述數據是怎樣存儲的。
  • 邏輯層:處在物理層之上,邏輯層描述數據庫中存儲了什麼數據以及這些數據間存在的關係。邏輯層經過簡單的結構描述了整個數據庫。
  • 視圖層:處在最高的層次,描述了整個數據庫的某個部分,爲了適應用戶的不一樣需求,該層能夠利用數據庫中多樣的信息,構建出用戶須要的數據。

 

2.2 實例和模式

 

特定時刻存儲存儲在數據庫中的信息集合稱爲數據庫的一個實例,而數據庫的整體設計稱爲數據庫模式。這個有點抽象,形象的說,類比C語言,模式就至關因而定義的一個變量,而實例就至關因而變量存儲的值,而變量的值在不一樣的時刻是不一樣的。編程語言

對於數據庫的不一樣抽象層次,數據庫的模式能夠分爲物理模式,對應了數據庫層次中的物理層邏輯模式對應了數據庫抽象層次中的邏輯層;而對於視圖層次,則能夠分爲多個子模式,對應了多個視圖。工具

 

2.3 數據模型

 

數據庫結構的基礎是數據模型。數據模型是一個描述數據,數據聯繫,數據語義以及一致性約束的概念工具集合。數據模型提供了一種描述物理層,邏輯層以及視圖層數據庫設計的方式。操作系統

數據模型能夠被分爲:設計

  • 關係模型:關係模型使用表來表示數據之間的關係,是目前主流數據庫管理系統使用的數據模型,關係型數據庫,如MySQL數據庫。
  • 實體聯繫模型
  • 基於對象的數據模型
  • 半結構化數據模型

 

3. 數據庫語言

 

3.1 數據操縱語言

 

數據操縱語言(DML)是一種使用戶能夠訪問或操做那些經過必定的數據模型組織起來的數據的語言。對象

數據操縱語言能夠分爲:

  • 過程化DML:要求用戶指定須要的數據已經獲取這些數據的方式。
  • 聲明式DML:只要求用戶指定須要的數據,而不須要用戶指明獲取數據的方式。

查詢是要求對信息進行檢索的語句。DML中涉及信息檢索的部分稱爲查詢語言

 

3.2 數據定義語言

 

數據庫模式是經過一系列定義來講明的,這些定義由一種稱做數據定義語言(DDL)的特殊語言來定義的。數據庫系統使用的存儲結構和訪問方式是經過一系列特殊的DDL語句來講明,這種特殊的DDL稱做數據存儲和定義語言。這些語言定義了數據庫模式的實現細節,而這些細節對用戶來講一般是不可見的。

存儲在數據庫中的數據值必須知足一些一致性約束,約束條件包括:

  • 域約束:每一個屬性都必須對應一個全部可能的值構成的域(如:整數型,字符型,日期類型)。聲明一種屬性屬於某種具體的域就至關於約束它能夠取得值。域約束是完整性約束的最基本形式。
  • 參照完整性:若是一個關係中給定屬性集上的取值也在另外一個關係中出現,這就是須要知足參照完整性。
  • 斷言:一個斷言就是數據庫須要時刻知足的某一個條件,域約束和參照完整性約束是斷言的特殊形式。
  • 受權:對於不一樣的用戶,對數據庫的訪問權限是不一樣的,這些須要經過受權來表達。

 

4. 關係數據庫

 

4.1 關係數據庫的結構

 

在關係數據庫中,關係是經過來表示的。在一個表中,每一行表明一個聯繫,而一個關係就是由許多的聯繫組成的集合。表的概念和數學上的關係的概念是密切相關的。在數學中,一個元組就是一組值得序列,在n個值之間的聯繫能夠在數學上用關於這些值得一個n元組表示。

這樣,在關係模型中,關係用來指表明,而元組用來指代行,屬性就是表中的列。

對於每個屬性,都存在一個容許取值的集合,稱爲該屬性的

 

4.2 數據庫模式

 

在數據庫中,數據庫模式就至關於編程語言中定義的變量,而數據庫實例就至關因而這個變量保存的值。在不一樣的時刻,數據庫中保存的內容是可能改變的,而數據庫的邏輯定義通常是不會被改變的。

通常來講,關係模式由屬性序列以及各屬性對應的域組成。關係實例由數據庫中存儲的內容組成。

 

4.3 碼

 

在數據庫中,必須有一種能夠區分給定關係中的不一樣的元組的方法。也就是說,一個元組的屬性值必須是可以惟一區分元組的。

超碼是一個或多個屬性的集合,這些屬性的組合可使得咱們在一個關係中惟一地標識一個元組。在一個超碼中,可能包含了可有可無的屬性,若是對於一些超碼,他們的任意真子集都不能成爲超碼,這樣的最小超碼稱爲候選碼

當數據庫的設計者在候選碼中選中了一個碼用來在一個關係中區分不一樣的元組,那麼這個被選中的候選碼就被稱爲主碼。

 

4.3.1 參照關係和被參照關係:

一個關係模式R1,在它的屬性中包含了另外一個關係模式R2的主碼,那麼這個屬性在R1上被稱爲是一個參照R2的外碼。關係R1也稱爲這個外碼依賴的參照關係,R2被稱爲外碼的被參照關係。在參照關係和被參照關係上的約束被稱爲參照完整性約束。參照完整性約束要求在參照關係中,任意一個元組在特定屬性上的取值必然等於被參照關係中某個元組在特定屬性上的取值。

 


參考:《Database System Concepts》

相關文章
相關標籤/搜索