關系數據庫中的每個表都應該具有主鍵。主鍵是唯一標識每一行的一列或列集合。表中不能有兩個行具有相同的主鍵值。
在示例數據庫中, employee 表存儲與職員有關的信息。它具有名為emp_id 的主鍵列,保存指派給每一職員的唯一 ID 號。保留 ID 號的單列是指派主鍵的常見方式,並且此方式優於名稱和其它標識符,因為它們不一定始終是唯一的。
在示例數據庫的 sales_order_items 表中可以看到更復雜的主鍵。該表保存
與公司訂單上各單獨項有關的信息,並且具有以下列:
•id訂單號,標識某項所屬於的訂單。 •line_id 行號,標識任一訂單上的每一項。 •prod_id 產品 ID,標識所訂購的產品。 •quantity數量,顯示訂購了多少項。 •ship_date 發貨日期,顯示發貨的時間。
特定銷售訂單項是由它所屬於的訂單以及該訂單上的行號標識的。這兩個數字存儲在 id 和 line_id 列中。多個項可以共享一個 id 值 (為多個項對應於一個訂單),或者它們可以共享一個 line_id 號 (不同訂單上的所有第一個項的 line_id 均為 1)。但沒有兩個項同時共享這兩個值,因此主鍵由這兩列組成。
一個表中的信息可以通過外鍵與其它表中的信息關聯。
示例數據庫具有一個保存職員信息的表和一個保存部門信息的表。
department 表具有以下列:
•dept_id 部門的 ID 號。這是該表的主鍵。 •dept_name部門的名稱。 •dept_head_id 部門經理的職員 ID。
為了查找特定職員的部門的名稱,不需要將該職員的部門名稱放入employee 表中。而是在 employee 表包含一列,該列保存與部門列中某一dept_id 值的數字匹配的數字。
employee 表中的 dept_id 列被認為是 department 表的外鍵。外鍵引用包含相應主鍵的表中的特定行。
在此示例中, employee 表 (包含關系中的外鍵)稱作外表外表或引用表引用department 表 (包含引用的主鍵)稱作主表主表或被引用表被引用表。