關係資料庫
出自 MBA智库百科(https://wiki.mbalib.com/)
關係資料庫(Relational DataBase,RDB)
目錄 |
什麼是關係資料庫[1]
關係資料庫是採用關係模型作為數據組織方式的資料庫。關係資料庫的特點在於它將每個具有相同屬性的數據獨立地存儲在一個表中。對任一表而言,用戶可以新增、刪除和修改表中的數據,而不會影響表中的其他數據。關係資料庫產品一問世,就以其簡單清晰的概念,易懂易學的資料庫語言,深受廣大用戶喜愛。
關係資料庫的層次結構[2]
關係資料庫的層次結構可以分為四級:資料庫(Database)、表(Table)與視圖、記錄(Record)和欄位(Field),相應的關係理論中的術語是資料庫、關係、元組和屬性,分別說明如下。
- 1.資料庫
關係資料庫可按其數據存儲方式以及用戶訪問的方式而分為本地資料庫和遠程資料庫兩種類型。
(1)本地資料庫:本地資料庫駐留在本機驅動器或區域網中,如果多個用戶併發訪問資料庫,則採取基於文件的鎖定(防止衝突)策略,因此,本地資料庫又稱為基於文件的資料庫。典型的本地資料庫有Paradox、dBASE、FoxPro以及Access等。基於本地資料庫的應用程式稱為單層應用程式,因為資料庫和應用程式同處於一個文件系統中。
(2)遠程資料庫:遠程資料庫通常駐留於其他機器中,用戶通過結構化查詢語言SQL來訪問遠程資料庫中的數據,因此,遠程資料庫又稱為SQL伺服器。有時,來自於遠程資料庫的數據並不駐留於一個機器而是分佈在不同的伺服器上。典型的SQL伺服器有InterBase、Oracle、Sybase、Informix、MicrosoftSQLServer,以及IBMDB2等。基於SQL伺服器的應用程式稱為兩層或多層應用程式,因為資料庫和應用程式駐留在彼此不依賴的系統(層)中。
本地資料庫與SQL伺服器相比較,前者訪問速度快,但後者的數據存儲容量要大得多,且適合多個用戶併發訪問。究竟使用本地資料庫還是SQL伺服器,取決於多方面因素,如要存儲和處理的數據多少,併發訪問資料庫的用戶個數,對資料庫的性能要求等。
- 2.表
關係資料庫的基本成分是一些存放數據的表(關係理論中稱為“關係”)。資料庫中的表從邏輯結構上看相當簡單,它是由若幹行和列簡單交叉形成的,不能表中套表。它要求表中每個單元都只包含一個數據,可以是字元串、數字、貨幣值、邏輯值、時問等較為簡單的數據。一般資料庫中無法存儲c++語言中的結構類型、類對象。圖像的存儲也比較煩瑣,很多資料庫無法實現圖像存儲。
對於不同的資料庫系統來說,資料庫對應物理文件的映射是不同的。例如,在dBASE、FoxPro、Paradox資料庫中,一個表就是一個文件,索引以及其他一些資料庫元素也都存儲在各自的文件中,這些文件通常位於同一個目錄中。而在Access資料庫中,所有的表以及其他成分都存儲在一個文件中。
- 3.視圖
為了方便地使用資料庫,很多DBMS都提供對於視圖(Access中稱為查詢)結構的支持。視圖是根據某種條件從一個或多個基表(實際存放數據的表)或其他視圖中導出的表,資料庫中只存放其定義,而數據仍存放在作為數據源的基表中。故當基表中數據有所變化時,視圖中看到的數據也隨之變化。
為什麼要定義視圖呢?首先,用戶在視圖中看到的是按自身需求提取的數據,使用方便。其次,當用戶有了新的需求時,只需定義相應的視圖(增加外模式)而不必修改現有應用程式,這既擴展了應用範圍,又提供了一定的邏輯獨立性。另外,一般來說,用戶看到的數據只是全部數據中的一部分,這也為系統提供了一定的安全保護。
- 4.記錄
表中的一行稱為一個記錄。一個記錄的內容是描述一類事物中的一個具體事物的一組數據,如一個雇員的編號、姓名、工資數目,一次商品交易過程中的訂單編號、商品名稱、客戶名稱、單價、數量等。一般地,一個記錄由多個數據項(欄位)構成,記錄中的欄位結構由表的標題(關係模式)決定。
記錄的集合(元組集合)稱為表的內容,表的行數稱為表的基數。值得註意的是,表名以及表的標題是相對固定的,而表中記錄的數量和多少則是經常變化的。
- 5.欄位
表中的一列稱為一個欄位。每個欄位表示表中所描述的對象的一個屬性,如產品名稱、單價、訂購量等。每個欄位都有相應的描述信息,如欄位名、數據類型、數據寬度、數值型數據的小數位數等。由於每個欄位都包含了數據類型相同的一批數據,因此,欄位名相當於一種多值變數。欄位是資料庫操縱的最小單位。
表定義的過程就是指定每個欄位的欄位名、數據類型及寬度(占用的位元組數)。表中每個欄位都只接受所定義的數據類型。
123