官术网_书友最值得收藏!

1.1.6 主鍵

表中的每一行都應該由某列(或列的集合)來唯一標識該行。一個包含客戶信息的表可能會使用客戶編號來實現這個目標,而包含訂單的表可能會使用訂單ID。一個員工清單的表可能會使用員工ID或者雇員社會保險號來標識各行。

新術語

主鍵(Primary Key) 其值唯一標識表中各行的列(或多列的集合)。

唯一標識表中每一行的列(或者多列的集合)叫做主鍵。主鍵用來關聯特定的行。如果沒有主鍵,在表中更新或刪除特定的行會很麻煩,因為無法確保只有這些行受到影響了。

提示

務必定義主鍵 盡管主鍵并不是必需的,但是多數數據庫設計者確保每一個表都有一個主鍵,以便將來的數據操作是可行和便于管理的。實際上,如果你忽略主鍵,有些數據庫引擎會自動替你創建一下,這種做法通常讓人感到困惑,并且不是你所期望的行為。既然這樣,就牢記總是定義主鍵吧。

一個表的任何列都可以作為主鍵,只要它遵循下面兩個條件:

·任意兩行不具有同樣的主鍵值。

·每一行必須有一個主鍵值(即主鍵列不能包含NULL值)。

提示

主鍵規則 這里列出的規則由MariaDB自身保證實施。

主鍵通常由一個表中單一的列定義。然而這不是必須的,多列結合在一起也可以定義一個主鍵。當使用多列時,前面列出的規則必須應用到所有組成主鍵的列中,并且列組合的值必須是唯一的(多列中個別的列不需要有唯一的值)。

提示

定義主鍵是最佳實踐 除了MariaDB保證實施的規則外,也應該堅持使用一些普遍接受的最佳實踐:

·不要更新作為主鍵的列值。

·不要重復主鍵的列值。

·不要使用可能改變的主鍵列值。(例如,當你使用一個名字作為主鍵來標識供應商時,如果供應商合并并且改變名字時,你必須修改主鍵。)

鍵的另一個重要的概念是“外鍵”,我們將在第15章討論。

主站蜘蛛池模板: 尼木县| 樟树市| 京山县| 思南县| 原平市| 九寨沟县| 大悟县| 绿春县| 松桃| 延庆县| 孝昌县| 龙海市| 东平县| 海丰县| 赤壁市| 龙江县| 凌源市| 固阳县| 观塘区| 察雅县| 秀山| 田东县| 仪征市| 高雄县| 清新县| 肥城市| 台南县| 且末县| 仙桃市| 临潭县| 庆安县| 永福县| 新巴尔虎左旗| 富锦市| 连云港市| 武功县| 潜江市| 乐山市| 石景山区| 扶余县| 龙州县|