主鍵和外來鍵

2021-10-01 07:39:07 字數 1401 閱讀 7457

主鍵(primary key):一列(或一組列),其值能夠唯一區分表中每一行。

唯一標識表中的每一行的這個列(或這組列)稱為主鍵。主鍵用來表示乙個特定的行,沒有主鍵,更新或者刪除表中的特定行很困難。

應該總是定義的主鍵——雖然並不是總是都需要主鍵,但是大多數資料設計庫人員都應該保證他們建立的每乙個表中都有乙個主鍵,以便於後面資料的管理個操作。

表中任何列都可以作為主鍵,只要滿足一下條件:

任意兩行都不能有相同的主鍵每一行都需要有乙個主鍵值(不允許為null)

主鍵通常定義在表的一列上,但這並不是必需的,也可以一起使用 多個列作為主鍵。在使用多列作為主鍵時,上述條件必須應用到構成主鍵的所有列,所有列值的組合必須是唯一的(但單個列的值可以不唯一)。

主鍵的最好的習慣:

不更新主鍵列中的值

不重用主鍵列的值

不再主鍵中使用可能會被更改的值。(例如,如果使用乙個名字作為主鍵以標識某個**商,當**商的名字更改的時候,就必須更改這個主鍵)

外來鍵(foreing key):用來在兩個表之間建立連線,他可以是一列或者多列。乙個表中可以有多個外來鍵。

外來鍵是表的乙個字段,不是本表的主鍵,但對應另乙個表的主鍵。定義外來鍵之後,不允許刪除另乙個表中有關聯的行。

例如:student表

mysql> create table student

-> (

-> stdno int(11) primary key,

-> stdname varchar(20) not null

-> );

stdno

stdname

1001

tom2002

john

scores表

mysql> create table scores

-> (

-> id int(11) primary key,

-> stdno varchar(20),

-> socres int(11),

-> subject varchar(20),

-> foreign key(stdno) references student(stdno)

->);

id

stdno

score

subject

11001

90math

21001

80chinese

score表中的stdno就是score中的外來鍵。

外來鍵對應的是參照性完整,乙個表中的外來鍵可以為空值,若不為空值,則每乙個外來鍵的值必須等於另乙個表中主鍵的某個值。

主鍵和外來鍵

主鍵和外來鍵是把多個表組織為乙個有效的關聯式資料庫的粘合劑。主鍵和外來鍵的設計對物理資料庫的效能和可用性都有著決定性的影響。必須將資料庫模式從理論上的邏輯設計轉換為實際的物理設計。而主鍵和外來鍵的結構是這個設計過程的癥結所在。一旦將所設計的資料庫用於了生產環境,就很難對這些鍵進行修改,所以在開發階段...

主鍵和外來鍵

主鍵的存在就代表著表結構的完整性,表的記錄必須得有唯一區分的字段,主鍵主要是用於其他表的外來鍵關聯,本記錄的修改與刪除,當我們沒有主鍵時,這些操作會變的非常麻煩。我強調主鍵不應該具有實際的意義,這可能對於一些朋友來說不太認同,比如訂單表吧,會有 訂單編號 字段,而這個欄位呢在業務實際中本身就是應該具...

主鍵和外來鍵

關係型資料庫中的某乙個屬性組能唯一標識一條記錄,該屬性組就可以成為乙個主鍵 主鍵只能有乙個,不能有重複的,不允許為空,用來保證資料完整性 外來鍵用於與另一張表的關聯。是能確定另一張表記錄的字段,用於保持資料的一致性。表的外來鍵是另一表的主鍵,外來鍵可以有重複的,可以是空值。用來和其他表建立聯絡用的 ...