[TOC]
# **實體**:
現實世界中客觀存在并可以被區別的事物。比如“一個學生”、“一本書”、“一門課”等等。它也可以是虛擬的,比如說“老師與學校的關系”。
# **屬性**:
實體所具有的某一特性,比如說,“性別”是“人”的一個屬性。在關系數據庫中,屬性又是個物理概念,屬性可以看作是“表的一列”。
# **元組**:
表中的一行就是一個元組。
# **分量**:
元組中的一個屬性值。1NF(第一范式)要求每個分量為不可再分的數據項。在一個關系數據庫中,它是一個操作原子,即關系數據庫在做任何操作的時候,屬性是“不可分的”。否則就不是關系數據庫了。
(比如“工資”可以下分為“基本工資”和“加班費”等,這在關系模式的數據庫是不支持的。而在面向對象模式的數據庫則是支持,也就是**面向對象模式的數據庫不滿足第一范式**。)
# **碼**:
表中可以唯一確定一個元組的某個屬性(或者是屬性組),如果這樣的碼有不止一個,那么大家都叫做候選碼,我們從中挑選一個做老大,它就叫做主碼。
# **模式**:
數據庫整套表格的完整設計稱為數據庫的模式。它是數據庫的設計藍圖。一個模式應該顯示表格及表格的列、每個表的主鍵和外鍵。可以使用非正式的圖表表示、實體關系圖表表示,或者使用文本格式表示。
* * * * *
# 候選碼
若關系中的某一屬性或屬性組的值能唯一的標識一個元組,而其任何真子集都不能再標識,則稱該屬性組為(**超級碼**)**候選碼**。
例如:在學生實體中,“學號”是能唯一的區分學生實體的,同時又假設“姓名”、“班級”的屬性組合足以區分學生實體,那么{學號}和{姓名,班級}都是(超級碼)候選碼。
# 主碼
簡單的說,**候選碼(超級碼)就是可以被選為主碼的屬性或屬性組**。當一個關系有N個屬性或屬性組可以唯一標識時,則說明該關系有N個候選碼,可以選定其中一個作為主碼。
# 外碼
一個屬性(或屬性組),它不是碼,但是它別的表的碼,它就是外碼。
# 主屬性
**主屬性**就是包含在任何候選碼中的屬性;
**非主屬性**就是不包含在任何候選碼中的屬性。
例如:關系 工人(工號,身份證號,姓名,性別,部門).顯然工號和身份證號都能夠唯一標示這個關系,所以都是候選碼。工號、身份證號這兩個屬性就是主屬性。如果主碼是一個屬性組,那么屬性組中的屬性都是主屬性。
> [百度百科-候選碼](http://baike.baidu.com/view/742205.htm)