這兩天在開發一個資訊裝置申請管理系統,我在設計資料庫的時候遇到一個比較糾結的問題,那就是關於外鍵的定義的問題,因為我不知道哪些欄位需要定義為外鍵,在什麼樣的情況下才定義外鍵,還有外鍵的定義方法,
今天我拿到之前買的一本楊中科老師寫的<<程式員的SQL金典>>研究了一下,終於解開了我的迷惑,所以以此來分享我所理解的外鍵.
一,外鍵的定義:將兩種資料庫表通過欄位關聯起來的方式就被稱為"表關聯",其中關聯到其他表主鍵的欄位被稱為"外鍵".
二,外鍵的定義原則:一句話,當某個欄位的值在表中重複出現的時候,我們就要考慮將它們提取到另外一張表中,然後在源表中引用新建立的表中的資料.
三,外鍵的定義方法:foreign key (外鍵欄位名稱) references 目標表名 (被關聯的欄位名稱)
例如:create table T_Employee (FId int,FNumber varchar(50),FName varchar(50),FDepartmentId varchar(50),foreign key (FDepartmentId) references T_Department (FId))
四,如果在建立表的時候沒有添加外鍵約束,可以使用alter table語句添加外鍵約束,文法如下:
alter table 表名 add constraint 外鍵名 foreign key (外鍵欄位名稱) references 目標表名 (被關聯的欄位名稱)
例如:alter table T_Book add constraint fk_book_author foreign key (FAuthorId) references T_Author (FId);
技巧:關於操作資料庫和寫SQL語句時候的一些約定規範(或者稱為一些好的習慣),這樣可以避免與系統的關鍵字,標識符等衝突,增加程式的正確性,同時也利於維護.
1,資料庫名以"db_"開頭.
2,資料表名以"T_"開頭.
3,欄位名以"F"開頭.
db(DataBase),T(table),F(Field)