關系型數據模型


關系模型是由若干個關系模式組成的集合,關系模式的實例稱為關系,每個關系實際上是一張二維表格。關系模型用鍵導航數據,其表格簡單,用戶只需用簡單的查詢語句就可以對數據庫進行操作,並不涉及存儲結構、訪問技術等細節。SQL語言是關系數據庫的代表性語言,已經得到了廣泛的應用。典型的關系數據庫產品有DB2、Oracle、Sybase、SQL Server等。

關系數據庫是以關系模型為基礎的數據庫,是一種根據表、元組、字段之間的關系進行組織和訪問數據的數據庫,它通過若干個表來存取數據,並且通過關系將這些表聯系在一起。關系數據庫是目前應用最廣泛的數據庫。關系數據是支持關系模型的數據庫,下面先介紹關系數據模型。

目前,在實際數據庫系統中支持的數據模型主要有3種:層次模型(Hierarchical Model)、網狀模型(Network Model)和關系模型(Relational Model)。20世紀80年代以來,計算機廠商推出的數據庫管理系統幾乎都是支持關系模型的數據庫系統。關系模型已經占領市場主導地位。

關系模型有3個組成部分:數據結構、數據操作和完整性規則。

關系模型建立在嚴格的數學概念的基礎上,它用二維表來描述實體與實體間的聯系。下面以學生信息表(如下表所示)為例,介紹關系模型中的一些術語。

⑴關系(Relation):對應通常所說的一張表。

⑵元組(Tuple):表中的一行即為一個元組,可以用來標識實體集中的一個實體,表中任意兩行(元組)不能相同;

⑶屬性(Attribute):表中的一列即為一個屬性,給每個屬性起一個名稱即屬性名,表中的屬性名不能相同。

⑷主碼(Key):表中的某個屬性組,它可以唯一確定一個元組。

⑸域(Domain):列的取值范圍稱為域,同列具有相同的域,不同的列也可以有相同的域。

⑹分量:元組中的一個屬性值。

⑺關系模式:對關系的描述。可表示為:關系名(屬性1,屬性2,…,屬性n)。例如上面的關系可以描述為:學生(學號,姓名,年齡,性別,系別)。

一個關系模型是若干個關系模式的集合。在關系模型中,實體以及實體間的聯系都是用關系來表示的。例如學生、課程、學生與課程之間的多對多聯系在關系模型中可以如下所示。

學生(學號,姓名,年齡,性別,系別)

課程(課程號,課程名,學分)

選修(學號,課程號,成績)

由於關系模型概念簡單、清晰、易懂、易用,並有嚴密的數學基礎以及在此基礎上發展起來的關系數據理論,簡化了程序開發及數據庫建立的工作量,因而迅速獲得了廣泛的應用,並在數據庫系統中占據了統治地位。

盡管關系與傳統的二維表格數據文件具有類似之處,但是它們又有區別,嚴格地說,關系是一種規范化的二維表格,具有如下性質。

⑴屬性值具有原子性,不可分解。

⑵沒有重復的元組。

⑶理論上沒有行序,但是使用時有時可以有行序。在關系數據庫中,關碼碼(簡稱碼)是關系模型的一個重要概念,是用來標識行(元組)的一個或幾個列(屬性)。如果碼是唯一的屬性,則稱為唯一碼;反之由多個屬性組成,則稱為復合碼。

碼的主要類型如下。

⑴超碼:在一個關系中,能唯一標識元組的屬性或屬性集稱為關系的超碼。

⑵候選碼:如果一個屬性集能唯一標識元組,且又不含有多余的屬性,那么這個屬性集稱為關系的候選碼。

⑶主碼:如果一個關系中有多個候選碼,則選擇其中的一個碼為關系的主碼。用主碼可以實現關系定義中“表中任意兩行(元組)不能相同”的約束。

例如,在一個數據庫圖書管理系統中,可將圖書明細表中的圖書編號列假設是唯一的,因為圖書館管理員是通過該編號對圖書進行操作的。因此,把圖書編號作為主碼是最佳的選擇,而如果使用圖書名稱列作為主碼則會存在問題。為此,最好創建一個單獨的碼將其明確地指定為主碼,這種唯一標識符在現實生話中很普遍,例如,身份證號、牌照號、訂單號、學生標識號和航班號等。

⑷外碼:如果一個關系R中包含另一個關系S的主碼所對應的屬性組F,則稱此屬性組F為關系R的外碼,並稱關系S為參照關系,關系R是依賴關系。為了表示關聯,可以將一個關系的主碼作為屬性放入另外一個關系中,第二個關系中的那些屬性就稱為外碼。


免責聲明!

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



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