一、關系數據庫概述
20世紀80年代后,在商用數據庫管理系統中,( 關系模型 )逐漸取代早 期的網狀模型和層次模型,成為主流數據模型
SQL3(SQL-99):1999年
SQL2(SQL-92):1992年
SQL(SQL-89) :1989年
關系數據庫的基本特征是使用關系數據模型組織數據,這種思想來源於數學。
關系數據庫的優點:高級的分過程語言接口、較好的數據獨立性,為商品化的關系數據庫管理系統的研制做好了技術上的准備
二、關系數據模型
數據模型的要素包括:數據結構、數據操作、數據約束
關系數據模型的組成要素:關系數據結構、關系操作集合、關系完整性約束
********************************1、關系數據結構***************************
表(Table): 也稱為關系,是一個二維的數據結構,由表名、列、若干行數據組成;每個表有唯一的表名,表中每一行數據描述一條具體的記錄值
關系(Relation): 一個關系邏輯上對應一張二維表,可以為每個關系取一個名稱進行表示。基本關系 (基本表、 基表)、 查詢表、 視圖表(導出的虛表)
列(Column) :也稱為字段(Field)或屬性(Attribute)。屬性的個數稱為關系的元或度;列的值稱為屬性值,其取值范圍稱為值域
行(Row): 也稱為元組(Tuple)或記錄(Record)。表中的數據按行存儲。
分量(Component):(具體的數據項) :元組(行)中的一個屬性值,稱為分量。
域(Domain) :表示屬性的取值范圍
數據類型(Data Type): 每個列都有相應的數據類型,它用於限制(或容許)該列中存儲的數據。
碼或鍵(Key): 屬性(或屬性組)的值都能用來唯一標識該關系的元組,則稱這些屬性( 或屬性組)為該關系的碼或鍵
超碼或超鍵(Super Key): 在碼中去除某個屬性,它仍然是這個關系的碼
候選碼或候選鍵(Candidate Key): 在碼中不能從中移去任何一個屬性,否則它就不再是這個關系的碼或鍵;候選碼或候選鍵是這個關系的最小超碼或超鍵。
主屬性(Primary Attribute)或非主屬性(Nonprimary Attribute): 包含在任何一個候選碼中的屬性稱為主屬性或碼屬性
主碼或主鍵(Primary Key): 在若干個候選碼中指定一個唯一標識關系的元組(行)
全碼或全鍵(All Key) :一個關系模式的所有屬性集合是 這個關系的主碼或主鍵,這樣的 主碼或主鍵稱為全碼或全鍵。
外碼或外鍵(Foreign Key): 某個屬性(或屬性組)不是這個關系的主碼或候選碼,而是另一個關系的 主碼
參照關系(Referencing Relation)和被參照關系(Referenced Relation): 參照關系也稱為從關系,被參照關系也稱為主關系,它們是指以外碼相關聯 的兩個關系。
關系模式(Relation Schema): 關系模式是型(type),關系是 值(value),即關系模式是對關 系的描述;關系模式是靜態的、穩定的; 關系是動態的、隨時間不斷變化 的。
關系數據庫(Relation Database) 所有關系的集合,構成一個關系數據庫。 以關系模型作為數據的邏輯模型,並采用關系作為數據組織方式的一類數 據庫,其數據庫操作建立在關系代數的基礎上。
關系數據庫對關系的限定/要求:
1)每一個屬性都是不可分解的(不允許表中有表);
2)每一個關系僅僅有一種關系模式;
3)每一個關系模式中的屬性必須命名,屬性名不同;
4)同一個關系中不允許出現候選碼或候選鍵值完全相同的元組;
5)在關系中元組的順序(即行序)是無關緊要的,可以任意交換;
6)在關系中屬性的順序(即列序)是無關緊要的,可以任意交換。
******************************2、關系操作集合**************************************
基本的關系操作:
查詢 Query (集合的操作方式(一次一集合))
插入 Insert
刪除 Delete
修改 Update
****************************************************************************
關系數據語言的分類
關系代數語言:任何一種操作都包含三大要素: 操作對象、 操作符 、操作結果
SQL:結構化查詢語言
關系演算語言: 元組關系演算 、域關系演算
共同特點:具有完備的表達能力,是非過程化的集合操作語言,功能強, 能夠獨立使用也可以嵌入高級語言中使用。
傳統的集合運算:
*************************差(DIFFERENCE):R3=R1-R2******************************
**********************交(INTERSECTION):R3=R1∩R2**************************
********************笛卡爾積(CARTESIAN PRODUCT):R3=R1×R2********************
專門的關系運算
***************************投影(PROJECTION):πA(R)**************************************
A:是屬性序列
關系代數中投影運算是對關系進行的垂直分解
*************************連接(JOIN),也稱θ連接:**************************************
***********************除(DIVISION):R÷S************************************************
************************************************例題**********************************************************
******************************3、關系的完整性約束**************************************
數據庫的數據完整性是指數據庫中數據的正確性、相容性、一致性
關系的完整性約束分類:
- 實體完整性約束:主碼的組成不能為空,主屬性不能是空值NULL
- 參照完整性約束:定義外碼和主碼之間的引用規則 要么外碼等於主碼中某個元組的主碼值,要么為空值(NULL)
- 用戶定義完整性約束:域完整性約束(針對某一應用環境的完整性約束)、其他
執行插入操作的檢驗
執行刪除操作
一般只需要對被參照關系檢查參照完整性約束(是否被引用)
執行更新操作
上述兩種情況的綜合
三、關系數據庫的規范化理論
關系模式中可能存在的冗余和異常問題
- 數據冗余:指同一數據被反復存儲的情況
- 更新異常:數據冗余造成的,多個內容更改使操作錯誤
- 插入異常
- 刪除異常
函數依賴與關鍵字
函數依賴:關系中屬性間的對應關系
X→Y:設R為任一給定關系,如果對於R中屬性X的每一個值,R中的屬性Y只有唯一 值與之對應,則稱X函數決定Y或稱Y函數依賴於X,記作X→Y。其中X稱為決 定因素。
X /→ Y:
函數依賴分類:完全函數依賴 、部分函數依賴 、傳遞函數依賴
*****************完全函數依賴************************
*****************部分函數依賴************************
*****************傳遞函數依賴************************
關鍵字
范式與關系規范化過程
規范化(Normalization):一個低一級范式的關系模式通過模式分解(Schema Decomposition)可以轉換為若干個高一級范式的關系模式 的集合,這種過程就叫規范化(Normalization)
*****************第一范式1NF***********************
第一范式的缺點:
*********************第二范式2NF*************************
設R為任一給定關系,若R為1NF, 且其所有非主屬性都完全函數依賴於候選關鍵字,則R為第二范式。
*************************第三范式3NF*******************
設R為任一給定關系,若R為2NF, 且其每一個非主屬性都不傳遞函數依賴於候選關鍵字,則R為第三范式
********************第三范式的改進形式BCNF******************
1NF->2NF
找到候選關鍵字,看其余的屬性是否完全函數依賴候選關鍵字,
是的,與候選關鍵字一同抄下來形成一個表格,
不是的,抄下來,形成第二個表格,並且將候選關鍵字里能夠唯一決定表格2的屬性組抄在第一列
2NF->3NF
找到表格中的傳遞函數依賴關系的三個屬性組,設為x,y,z
將這三個屬性組拆成兩個表格 第一個表格為x,y
第二個表格為y,z
3NF->BCNF
列出表格中的所有函數依賴關系 每個關系拆出一個表格
SQL的主要構成: