“外碼”在數(shù)據(jù)庫中是相對主碼而言的,即外鍵(用于建立和加強兩個表數(shù)據(jù)之間的鏈接的一列或多列)!屬性或屬性組X不是關系模式R的碼(既不是主碼也不是候選碼),但X是另一個關系模式的碼,則稱X是R的外部碼,也稱外碼。主碼與外部碼提供了一個實現(xiàn)關系間聯(lián)系的手段,也是在計算機世界描述現(xiàn)實世界實體間聯(lián)系的手段。
1.外碼是另外一個表的主碼;
2.插入數(shù)據(jù)是必須先給所關聯(lián)外碼的那個表插入數(shù)據(jù);
3.報錯的原因是插入的某個屬性在所關聯(lián)外碼表中找不到。
外碼的意義是:保證兩個表之間的數(shù)據(jù)的一致性,例如:職工表中的部門號,必須在部門表中存在。
create table 部門(
部門號 char(20) primary key not null,
名稱 char(20) constraint UK_dName unique not null ,
經(jīng)理名 char(20),
地址 varchar(20),
電話號碼 char(20)
)
drop table 部門
create table 職工(
職工號 char(20) primary key,
姓名 char(20) not null,
年齡 smallint check (年齡>=18 and 年齡<=60),
職務 char(20),
工資 int not null check(工資>=800),
部門號 char(20)
FOREIGN KEY (部門號) REFERENCES 部門(部門號)--直接建立外碼
)
drop table 職工
--新增關系表屬性
--新增表的外碼
--方法二:
alter table 職工
add constraint S_worker
foreign key(部門號)
references 部門(部門號)