1.屬性和域
在現實世界中,一個事物常常取若干特性來描述,這些特性成為屬性(Attribute)。每個屬性的取值范圍對應一個值的集合,成為該屬性的域(domain)。一般在關系數據模型中,限制所有的域都是原子數據(atomic data)。例如,整數、字符串是原子數據,而集合、記錄、數組是非原子數據。關系數據模型的這種限制稱為第一范式(First Normal Form,1NF)條件。
2.主要術語
- 目或度(Degree):屬性個數n是關系的目或度。
- 候選碼(Candidate Key):若關系中某一屬性(或屬性組)的值能唯一地標識一個元組,則稱該屬性(屬性組)為候選碼。
- 主碼(Primary Key):若一個關系能多個候選碼,則選定其中一個為主碼。
- 主屬性(Key attribute):包含在任何候選碼中的屬性稱為主屬性。
- 非碼屬性(Non-Key attribute):不包含在任何候選碼中的屬性稱為非碼屬性。
- 外碼(Foreign Key):如果關系模式R中的屬性(屬性組)不是該關系的碼,但它是其他關系的碼,那么該屬性(屬性組)對關系模式R而言是外碼。例如,客戶與貨款之間的借貸聯系c-l(c-id, loan-no),屬性c-id是客戶關系的碼,所以c-id是外碼;屬性loan-no是貸款關系中的碼,所以loan-no也是外碼。
- 全碼(All-Key):關系模型的所有屬性組是這個關系模型的候選碼,稱為全碼。
例如,關系模式R(T,C,S),屬性T表示教師,屬性C表示課程,屬性S表示學生。假設一個教師可以講授多門課程,某門課程可以由多個教師講授,學生可以聽不同教師講授的不同的課程,那么,要想區分關系中的每一個元組,這個關系模式R的碼應為全屬性T,C和S,即All-Key。
3.關系的性質
一個基本關系具有以下5條性質。
- 分量必須取原子值,每個分量必須是不可再分的數據項。
- 列是同質的,每列中的分量必須是同一類型的數據,來自同一個域。
- 屬性不能重名。
- 行列的順序無關。
- 任何兩個元組不能完全相同,這是由主碼約束來保證的。但是有些數據庫若用戶沒有定義完整性約束條件,允許有兩行以上的相同的元組。
4.關系的三種類型
- 基本關系(通常又稱為基本表或基表)。是實際存在的表,它是實際存儲數據的邏輯表示。
- 查詢表。查詢結果對應的表。
- 視圖表。是由基本表或其他視圖表導出的表。由於它本身不獨立存儲在數據庫中,數據庫中只存放它的定義,所以常稱為虛表。
