來源
《數據庫系統原理》
第二節 關係數據模型
關係數據庫系統是支持關係模型的數據庫系統。作爲一種數據模型,關係模型同樣包含三個組成要素,分別是關係數據結構、關係操作集合和關係完整性約束。
一、關係數據結構
關係模型的數據結構非常簡單,只包含單一的數據結構。即關係。在關係模型中,現實世界的實體以及實體間的各種聯繫,均是使用關係來表示。在用戶看來,關係模型是把數據庫表示爲數據的集合,且關係數據庫 是以二維表格的形式組織數據,例如表2.1就是一張記錄學生基本信息的二維表格,該表格爲學生基本信息登記表。
表2.1 學生基本信息登記表
學號 |
姓名 |
性別 |
出生日期 |
籍貫 |
民族 |
班號 |
身份證號 |
201311111 |
張沙 |
男 |
1997/12/11 |
山西 |
漢 |
AC1311 |
XXX1 |
201311112 |
張萌 |
女 |
1996/6/1 |
安徽 |
漢 |
AC1311 |
XXX2 |
201311113 |
張伊尉 |
女 |
1998/1/1 |
安徽 |
漢 |
AC1311 |
XXX3 |
下面。以表2.1所示的二維表格爲例,介紹關係數據庫的基本術語。
1.表(Table)
表,也稱爲關係,是一個二維的數據結構,它由表名、構成表的各個列(如學號,姓名,性別,出生日期等)及若干行數據(各個學生的基本信息)組成。每個表有一個唯一的表名,表中每一行數據描述一條具體的記錄值,如一個學生的基本信息。
2.關係(Relation)
一個關係邏輯上對應一張二維表,可以爲每個關係取一個名稱進行標識。例如,表2.1所示的學生基本信息登記表,也即學生基本信息登記表關係。
關係可以有三種類型,即基本關係、查詢表和視圖表。其中,基本關係通常又稱爲基本表或基表,是實際存在的表,它是實際存儲數據的邏輯表示;查詢表是查詢結果對應的表;視圖表是由基本表或其他視圖表導出的表,是虛表,部隊營實際存儲的數據。
3.列(Column)
表中的列,也稱作字段(Field)或屬性(Attribute)。表中每一列有一個名稱,稱爲列名、字段名或屬性名。每一列表示實體的一個屬性,具有相同的數據類型。如表2.2所示,它列出了表2.1學生基本信息登記表中各個字段的字段名及其數據類型的定義。
表2.2 學生基本信息登記表的結構定義
中文字段名 |
數據類型 |
寬度 |
學號 |
字符型 |
10 |
姓名 |
字符型 |
20 |
性別 |
字符型 |
3 |
出生日期 |
日期型 |
|
籍貫 |
字符型 |
20 |
民族 |
字符型 |
30 |
班號 |
字符型 |
8 |
身份證號 |
字符型 |
18 |
需要說明的是:在一個數據庫中,表名必須唯一;在表中,字段名必須唯一,不同表中可以出現相同的字段名;表和字段的命名應儘量有意義,儘量簡單。
4.屬性(Attribute)
表中的一列即爲一個屬性,給每一個屬性起一個名稱極爲屬性名。與之同義的術語是“列”。表中屬性的個數稱爲關係的元或度。列的值稱爲屬性值;屬性值的取值範圍稱爲值域。例如,表2.1中學生基本信息登記表關係的屬性有:學號、姓名、性別、出生日期、籍貫、民族、版號、身份證,所以元數是8,即學生基本信息登記表關係是一個8元關係或8度關係。
5.行(Row)
表中的行(Row),也稱作元組(Tuple)或記錄(Record)。表中的數據是按行存儲的。表中的一行數據即爲一個元組或一條記錄,其每行由若干字段值組成,每個字段值描述該對象的一個屬性或特徵。例如,在表2.1中,第一行數據表示的是學號爲201311111、姓名爲張沙的學生基本信息。
6.元組(Tuple)
表中的一行即爲一個元組。例如,在表2.1中的元組有:
201311111 |
張沙 |
男 |
1997/12/11 |
山西 |
漢 |
AC1311 |
XXX1 |
201311112 |
張萌 |
女 |
1996/6/1 |
安徽 |
漢 |
AC1311 |
XXX2 |
201311113 |
張伊尉 |
女 |
1998/1/1 |
安徽 |
漢 |
AC1311 |
XXX3 |
等。
7.分量(Component)
元組中的一個屬性值,稱爲分量。例如,在學生基本信息登記表中元組
201311112 |
張萌 |
女 |
1996/6/1 |
安徽 |
漢 |
AC1311 |
XXX2 |
的每一個屬性值:“201311112”、“張萌”、“女”、“1996/6/1”,“安徽”,“漢”,“AC1311”,“XXX2”都是它的分量。
8.碼或鍵(Key)
如果在一個關係中,存在這樣的屬性(或屬性組),使得在該關係的任何一個關係狀態中的兩個元組,在該屬性(或屬性組)上值的組合都不相同,即這些屬性(或屬性組)的值都能用來唯一標識該關係的元組,稱這些屬性(或屬性組)爲該關係的碼或鍵。(讀者譯:物理數據“實際數據”值的引用)
9.超碼或超鍵(Super Key)
如果在關係的一個碼中移去某個屬性,它仍然是這個關係的碼,則稱這樣的碼或鍵爲該關係的超碼或超鍵。一般的,每個關係至少有一個默認的超碼或超鍵,即該關係的所有屬性的集合,也是這個關係的最大超碼或超鍵。例如,在表2.1中,
學號 |
姓名 |
性別 |
出生日期 |
籍貫 |
民族 |
班號 |
身份證號 |
都是超碼或超鍵。
10.候選碼或候選鍵(Candidate Key)
如果在關係的一個碼或鍵中,不能從中移去任何一個屬性,否則它就不是這個關係的碼或鍵,則稱這樣的爲該關係的候選碼或候選鍵。可見,一個關係的候選碼是這個關係的最小超碼或超鍵。例如,表2.1最中學號和身份證號都是候選建,因爲若給定學號或身份證號,都可以確定一個學生的全部基本信息。
有些情況下,需要幾個屬性(即屬性組或屬性集合)才能唯一確定一條記錄。例如,對於表2.3所示的學生成績表的結構定義,僅僅確定學號或課程號,都不能唯一確定某個學生具體一門課程的成績。所以,學生成績表的主鍵是由學號和課程號兩個屬性組成的屬性集合,即(學號,課程號)。
表2.3 學生成績表的結構定義
中文字段名 |
數據類型 |
寬度 |
學號 |
字符型 |
10 |
課程號 |
字符型 |
6 |
開課學期 |
字符型 |
5 |
成績 |
數值型 |
|
11.主碼或主鍵(Primary Key)
在一個關係的若干候選碼或候選鍵中指定一個用來唯一標識關係的元組,則稱這個被指定的候選碼或候選鍵爲該關係的主碼或主鍵。
12.全碼或全鍵(All-Key)
一個關係模式的所有屬性集合是這個關係的主碼或主鍵,責成這樣的主碼或主鍵爲全碼或全鍵。
13.主屬性(Primary Attribute)和非主屬性(Nonprimary Attribute)
關係中包含在任何一個候選碼中的屬性稱爲主屬性或碼屬性,不包含在任何一個候選碼中的屬性稱爲非主屬性或非碼屬性。例如,在表2.1在學生基本信息登記表中,學號和身份證號是主屬性,其他屬性是非主屬性。
14.外碼或外鍵(Foreign Key)
當關系中的某個屬性(或屬性組)不是這個關係的主碼或候選碼,而是另一關係的主碼時,稱該屬性(或屬性組)爲這個關係的外碼或外鍵。例如,在表2.4中班號是班級表的主鍵,而該屬性又是表2.1學生基本信息登記表的一個屬性,則成屬性班號爲學生基本信息表的外鍵。
中文字段名 |
數據類型 |
寬度 |
班號 |
字符型 |
8 |
班級名稱 |
字符型 |
20 |
所屬院系 |
字符型 |
30 |
入學時間 |
日期型 |
|
班級最大人數 |
數值型 |
|
15.參照關係(Referencing Relation)和被參照關係(Referened Relation)
參照關係也稱爲從關係,被參照關係也稱爲主關係,它們是指以外鍵相關聯的兩個關係。以爲外鍵爲主碼的關係稱爲被參照關係;外鍵所在的關係稱爲參照關係。被參照關係與參照關係是通過外鍵相聯繫的,這種聯繫通常是一對多聯繫。例如,表2.4所定義的班級表是被參照關係,而表2.1所示的學生基本信息登記表是參照關係,它們通過外鍵“班號”相聯繫。
16.域(Domain)
域表示屬性的取值範圍。
17.數據類型(Date Type)
表中每個列都有對應的數據類型,它用於限制(或容許)該列中存儲的數據。每個字段表示同一類信息,具有相同的數據類型。
18.關係模式(Relation Schema)
同數據模型一樣,數據庫也有“型”(Type)和“值”(Value)之分。在關係數據庫中,關係模式是型,關係是值,即關係模式是對關係的描述,例如表2.2就是對對關係的結構定義,關係則是元組的集合,是關係模式在某一時刻的狀態或內容。
關係模式是靜態的、穩定的,而關係是動態的、隨時間變化的。這是因爲關係操作在不斷的更新着數據庫中的數據,例如,(讀者譯:別例如了,這東西自己想象,哦描述了數據模式,用概念來創造一個概念模型,這個模型在開發中,是不能更改的,除非用戶需求更改)。
在實際工作中,人們常常會把關係模式和關係都籠統地稱爲關係,(讀者譯:甚至表>__<),當然這不難從上下文中加以區別。
19.關係數據庫(Relation DateBase)
關係數據庫是以關係模型作爲數據的邏輯模型,並採用關係作爲組織方式的一類數據庫,其數據庫操作建立在關係代數的基礎上。在一個給定的應用領域中,所有關係的集合構成一個關係數據庫。
此外,儘管關係模型的數據結構表示爲二維表,但不是任意的一個二維表都可以作爲一個關係。關係數據庫對關係是有限定的,具體要求如下。
i)每一個屬性都是不可分解的。這是關係數據庫對關係的最基本的一個限定,要求關係的每一個分量必須是一個不可分的數據項。
ii)每一個關係僅僅有一種關係模式,即每一個關係模式中的屬性的數據類型以及屬性的個數是相對固定的。
iii)每一個關係模式中的屬性必須命名,在同一個關係模式中屬性名必須是不同的。
iv)同一個關係中不允許出現候選碼或候選鍵完全相同的元組。
v)在關係中元組順序(即行序)是無關緊要的,任意交換。
vi)在關係中屬性的順序(即列序)是無關緊要的。任意交換。