理論篇:基本概念和術語整理 一、關係資料庫 關係資料庫是目前應用最為廣泛的資料庫系統,它採用關係數據模型作為數據的組織方式,關係數據模型由關係的數據結構,關係的操作集合和關係的完整性約束三部分組成。 二、關係資料庫中的一些基本術語和定義 1、關係數據模型 關係數據模型是建立在嚴格的數學概念的基礎上, ...
理論篇:基本概念和術語整理
一、關係資料庫 關係資料庫是目前應用最為廣泛的資料庫系統,它採用關係數據模型作為數據的組織方式,關係數據模型由關係的數據結構,關係的操作集合和關係的完整性約束三部分組成。
1、關係數據模型
關係數據模型是建立在嚴格的數學概念的基礎上,由一組關係組成,每個關係的數據結構是一張嚴格規範化的二維表,簡單說關係數據模型就是用二維表的形式來表示實體和實體間聯繫的數據模型。
①二維表:
簡單說關係資料庫中數據的主要存儲形式是二維表,這種二維表具有嚴格的規則要求,表中每一列代表著關係資料庫中的一個屬性,每一列的名字就是一個屬性名;每一行代表一個記錄,即對應現實中的一個物理實體。其中,列稱為屬性或者欄位,行被稱為元組或者記錄。
用戶編號 | 用戶名 | 密碼 | 性別 | 年齡 |
001 | url123 | 12345789 | 男 | 34 |
002 | adm336 | abcdefg | 女 | 26 |
②關係:一般說某個關係,即是指某張表。一個關係對應一張表。
③元組:表中的某一行成為一個元組,一行即對應一個物理實體,元組就是物理實體的抽象。
④屬性:表中的一列即為一個屬性,給每一列的命名即為屬性名:如例表中的 用戶名一列。
⑤域:即是指某一個屬性的取值範圍,屬性的取值範圍成為該屬性的域,如:性別的取值為男/女;用戶編號的域為一個三位數的整數。
⑥關鍵字或者碼(key):也稱作碼鍵,表中的某個屬性組(多個屬性組成,也可以為單個屬性構成),它可以唯一確定一個元組,例表中用戶編號可以唯一確定一個用戶(即整個表中不存在與這行數據相同的另一行),關係資料庫中通常稱為主碼或者主鍵。有時也會遇到不止一個屬性能唯一確定一個元組的時候,所有可以唯一確定一個元組的屬性統稱為候選碼,而主碼是在候選碼中選出,候選碼包含主碼。
⑦分量:元組中某一個屬性的屬性值
⑧關係模式: 一般的具體書面表示時,一個關係模式的表示形式為 : 關係名(屬性1,屬性2,屬性3……),簡記為:R(U)或者R(A1,A2,A3……)
R(U,D, dom ,F),R為關係名(表名),U是組成該關係的屬性集合,D為屬性的域,dom為屬性向域的映像的集合。
關係術語 | 表格稱謂 |
關係名 | 表格名 |
關係 | 二維表(具體的一張) |
元組 | 一條記錄/表中的一行 |
屬性 | 表中的列 |
屬性名 | 列名 |
屬性值 | 列中的取值 |
分量 | 一行中某個列的列值 |
非規範關係 | 表中表(表的嵌套) |
2、關係數據模型的特點
①關係必須規範化:關係模式中每個關係都必須滿足一定的要求。
②模型概念單一:關係數據模型的優點就是模型概念單一,無論具體的實體還是實體間的聯繫,都用簡單的二維表來描述和表示,對數據的檢索和操作結果也是關係(表),其數據結構簡單清晰,便於理解 和操作。
③操作集合:在關係數據模式中,操作的對象和結果都是元組的集合,即關係(表)
總結:
關係數據模式建立在嚴格的數學概念基礎上,其數據模型的概念單一(即表)。關係數據模型的存取路徑對用戶透明,從而具有更高的數據獨立性、更好的安全保密性,簡化了專業人士的開發建立工作。
3、關係操作
關係操作的對象和結果都是集合,稱為一次一集合的方式,而非關係數據模型的一次一記錄數據操作方式。關係資料庫中常用的數據操作包括: 查詢操作(Query)和插入操作(Insert)、刪除操作(Delete)、修改操作兩大部分。具體見下圖:
以上關係操作均為邏輯理論操作,在實際的資料庫系統中,為了實現這些關係操作,我們可以使用一種關係代數和關係演算之間的語言SQL(結構化查詢語言),SQL具有豐富的查詢、數據定義、數據控制功能。Oracle中主要使用SQL*plus。
4、關係的完整性
①實體完整性:若屬性(一個或者一組)A為關係B的主屬性,則A不能為空。簡單的解釋就是,一個表中的主鍵不能為空值,這裡的主鍵包括單一屬性的主鍵非空,和組合主鍵的屬性組中屬性均不能為空。
實體完整性是針對基本關係的,即一個表中的元組對應現實中的物理實體,而現實中的物理實體是可區分的,每個都是獨立唯一的。而主鍵(主屬性)則作為整個唯一的標識,主鍵為空,則表示存在不可標識的實體,這與理論矛盾,所以主鍵不能為空。
②參照完整性:若屬性(或屬性組)F是基本關係R的外鍵,它與基本關係S的主鍵K相對應(即關係R引用關係S的主鍵為外鍵,其中S和R不一定是不同關係),則對於R中每個元組在F上的值必須為如下兩種情況之一:空值(F中所有屬性為空),等於S中某元組的主鍵。
外鍵:現實世界中,實體之間往往存在著某種聯繫,這些聯繫在關係資料庫中都用關係來描述,這就存在著關係與關係間的引用:如果F是基本關係R的一個或一組屬性,但不是R關係的主鍵,而K是基本關係S的主鍵,如果F與K相對應,則稱F是R的外鍵(Foreign Key),並稱基本關係R為參照關係(Referencing Relation),基本關係S被稱為被參照關係或目標關係。
用戶名(主鍵) | 密碼 | 年齡 |
GMM123 | 123456 | 35 |
SST789 | admin22 | 45 |
Id(主鍵) | 用戶名 | 職務 |
001 | GMM123 | 老師 |
002 | SST789 | 老師 |
例如上面兩表,關係S中的用戶名為關係S的主鍵,與R中的用戶名屬性對應,則用戶名為關係R的外鍵。
③用戶自定義完整性:實體完整性和參照完整性是任何關係資料庫都必須遵守的,除此以外,根據具體不同的情況和問題,往往需要一些額外的約束條件,具體為用戶在定義關係時自己定義的。
5、關係資料庫中的規範化理論
函數依賴: 設R(U)是屬性集合U上的一個關係模式,X,Y是U的子集,若對於R(U)的任意一個可能的關係r,r中不可能存在兩個元組在X上的屬性值相等而在Y上的屬性值不等,則稱X函數確定Y或者Y依 賴於X,記作X→Y。
函數依賴的分類:
平凡函數依賴與非平凡函數依賴
完全函數依賴與部分函數依賴
傳遞函數依賴
範式理論:
①第一範式(1NF):如果關係模式R中每一個屬性值都是一個不可分解的數據項,則稱該關係模式滿足第一範式,記為R∈1NF。(不可分割意思為單一屬性,屬性值必須為“原子”的)
②第二範式(2NF):在滿足第一範式的前提下(即R∈1NF),且它的所有非主屬性都完全函數依賴與R的任一候選鍵,則稱該關係滿足第二範式,即R∈2NF。
③第三範式(3NF):在滿足R∈2NF的前提下,且所有非主屬性,都不傳遞函數依賴於任何候選鍵,則R滿足第三範式,即R∈3NF。
④BCNF範式(BCNF):對於一個關係模式R,如果對於每一個函數依賴X→Y,其中的決定因素X都含有鍵,則稱關係模式R滿足BCNF範式,即R∈BCNF。
通常認為BC範式是對第三範式的修正和擴展,BCNF的本質意義在於:其中每一個決定因素都是一個主鍵。或者說,在BCNF中除了候選鍵決定其所有屬性或主鍵決定其所有屬性之外,絕不會存在其他的非平凡函數依賴。
範式在資料庫的設計中占有很大的比重,通過它可以優化資料庫設計,避免一些問題,例如:減少數據的冗餘,改進資料庫整體組織,增強數據的一致性,增加資料庫設計的靈活性。因此在資料庫設計時,應根據實際情況,使關係模式滿足適當的範式,使資料庫設計更加規範
三、資料庫設計1、實體 - 關係模型(E - R)
實際具體設計中,我們需要將現實生活中的實際物體進行抽象化,轉變成數學模型,進而轉化為關係模型。
①實體(Entity):是E—R模型的基本對象,是現實世界中各種事務的抽象。簡單點說就是對應著現實生活中確實存在的事務,例如:張三、李四具體的某個人,也可以是學生這個現實中的群體。
②屬性(Attribute):實體的若幹特征,即為實體的屬性。例如,現實生活中學生會有學號這個特征,轉化為關係中的學號屬性。
③聯繫(Relationship): 實體之間會存在各種各樣的關係與聯繫,例如老師和學生存在師生關係,一個語文老師可能是一個班所有學生的共同語文老師,而對於具體某個學生而言,他們只有一個語文老師,即一對多,和一對一。
一對一聯繫(1:1):對於實體集A和B來說,A中任意一個實體a,B中至多有一個實體b與之聯繫,反過來也是如此,則A與B就是一對一聯繫。
一對多聯繫(1:N):在實體集A中每一個實體a,B中有N個實體與之聯繫,對於實體集B中的每一個實體b,實體集A中至多有一個實體a與之聯繫,則A與B為一對多聯繫。
多對多聯繫(M:N):如果對於實體集A中每一個實體a,B中有N個實體與之對應,而且對於B中每個實體b,A中有M個實體與之對應,則A和B是多對多聯繫。
2、E—R圖繪製