數據庫系統原理(第二章關系數據庫 )


一、關系數據庫概述

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的主要構成:

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM