數據庫基礎理論
一、數據庫
數據庫(Database,DB)是長期存儲在計算機內的、有組織的、可共享的、統一管理
的相關數據的集合。按照字面的理解,數據庫就是存放數據的倉庫。
二、數據庫管理系統(DBMS)
DBMS 的功能:數據庫定義功能;數據存取功能;數據庫運行管理功能;數據庫的
建立和維護功能;數據通信功能。
DBMS 的組成:語言編譯處理程序;系統運行控制程序;系統建立、維護程序;數
據字典。
三、數據庫系統(DBS)的組成
數據:數據是數據庫系統的工作對象,它們是某特定應用環境中進行管理和決策所
必需的信息。
用戶:用戶是指存儲、維護和檢索數據庫中數據的人員。數據庫系統中主要有 3 類
用戶:終端用戶、應用程序員和數據庫管理員。
硬件:硬件是指存儲數據庫和運行數據庫管理系統 DBMS 的硬件資源。
軟件:軟件是指負責數據庫存取、維護和管理的軟件系統,通常叫做數據庫管理系統(DBMS)。
四、數據庫系統的特點
- 數據低冗餘、共享性高。
- 數據獨立性提高。
- 有統一的數據控制功能。
五、數據庫應用系統
數據庫應用系統(Database ApplicationSystem,DBAS) , 是指在 BMS 的基礎上,針對一個實際問題開發出來的面向用戶的系統。
六、數據庫系統的體系結構
內部體系結構:數據庫系統得內部體系結構是三級模式結構,分別爲模式、外模式和內模式。
外部體系結構:外部體系結構主要有集中式結構、文件服務器結構和客戶/服務器結構。
七、概念模型
實體與實體集:實體是現實世界中可區別於其他對象的“事件”或物體;實體集是具
有相同類型及共享相同性質(屬性)的實體集合。
屬性:實體通過一組屬性來表示;屬性是實體集中每個成員具有的描述性性質。
關鍵字和域:實體的某一屬性或屬性組合,其值能惟一標識出某一實體,稱爲關鍵
字,也稱碼;每個屬性都有一個可取值的集合,稱爲該屬性的域,或者該屬性的值集;
聯繫:兩個實體之間的聯繫又可分爲一對一聯繫(1:1)、一對多聯繫(1:n)和多對多的聯繫(m:n)。
八、常用的數據模型
層次模型:層次數據模型是數據庫系統最早使用的一種模型,它的數據結構是一顆有向樹。層次結構模型具有如下特徵:有且僅有一個結點沒有雙親,該結點是根結點。 其他結點有且僅有一個雙親。
網狀模型:如果取消層次模型的兩個限制,即兩個或兩個以上的結點都可以有多個雙親,則“有向樹”就變成了“有向圖”。“有向圖”結構描述了網狀模型。網狀模型具有如下特徵:可有一個以上的結點沒有雙親。至少有一個結點可以有多於一個雙親。
關係模型:關係模型(Relational Model)是用二維表格結構來表示實體及實體之間聯繫的數據模型。關係模型的數據結構是一個“二維表框架”組成的集合,每個二維表又可稱爲關係,因此可以說,關係模型是“關係框架”組成的集合。
關係模型是使用最廣泛的數據模型,目前大多數數據庫管理系統都是關係型的,如MySQL、Sql server、Oracle 都是關係數據庫管理系統。
關係模型中的基本術語
-
關係:一個關係就是一張二維表。
-
元組:二維表中的每一條記錄就是一個元組。
-
屬性:二維表中的一列就是一個屬性,又稱爲字段。 域:屬性的取值範圍。
-
分量:元組中的一個屬性值。關係模式:對關係的描述。
-
候選關鍵字:關係中的一個或幾個屬性的集合,該屬性集惟一標識一個元組。 關係數據庫:對應於一個關係模型的所有關係的集合稱爲關係數據庫。
-
主關鍵字(主鍵):一個關係中有多個候選關鍵字,可以選擇其中一個作爲主關鍵字。
-
外部關鍵字(外鍵):如果一個屬性組不是所在關係的關鍵字,但它是其他關係的關鍵字,則該屬性組稱爲外部關鍵字。
-
主屬性:包含在任一候選關鍵字中的屬性稱爲主屬性。
關係的性質
關係是一個二維表,但並不是所有的二維表都是關係。關係應具有以下性質:
每一列中的分量是同一類型的數據。
不同的列要給予不同的屬性名。
列的次序可以任意交換。
一個關係中的任意兩個元組不能完全相同。
行的次序可以任意交換。
每一個分量必須是不可分的數據項。
關係數據庫中的表之間的關係
在關係數據庫中,可以通過外部關鍵字實現表與表之間的聯繫,公共字段是一個表的主鍵和另一個表的外鍵。
關係模型的完整性約束
實體完整性(Entity Integrity):若屬性(指一個或一組屬性)A 是基本關係 R 的主屬性,則 A 不能取空值。所謂空值就是“不知道”或“不存在”的值。(主鍵不能爲空)
參照完整性(Referential Integrity):若屬性(或屬性組)F 是基本關係 R 的外鍵,它與基本關係 S 的主鍵 Ks 相對應(基本關係 R 和 S 不一定是不同的關係),則對於 R 中每個元組在 F 上的值必須爲空或是等於 S 中某個元組的主鍵值。
用戶定義的完整性(User-defined Integrity):用於定義的完整性就是針對某一具體關係數據庫的約束條件。