資料庫表中的主鍵和外來鍵如何關聯

時間 2021-10-14 22:24:14

1樓:扈琇保瀚

主鍵:[編輯本段]概念

主關鍵字(主鍵,primarykey)是被挑選出來,作表的行的惟一標識的候選關鍵字。一個表只有一個主關鍵字。主關鍵字又可以稱為主鍵。

主鍵可以由一個欄位,也可以由多個欄位組成,分別成為單欄位主鍵或多欄位主鍵。

[編輯本段]作用

:1)保證實體的完整性;

2)加快資料庫的操作速度

3)在表中新增新記錄時,access會自動檢查新記錄的主鍵值,不允許該值與其他記錄的主鍵值重複。

4)access自動按主鍵值的順序顯示錶中的記錄。如果沒有定義主鍵,則按輸入記錄的順序顯示錶中的記錄。

[編輯本段]特點

1)一個表中只能有一個主鍵。如果在其他欄位上建立主鍵,則原來的主鍵就會取消。在access中,雖然主鍵不是必需的,但最好為每個表都設定一個主鍵。

2)主鍵的值不可重複,也不可為空(null)。

外來鍵:如果公共關鍵字在一個關係中是主關鍵字,那麼這個公共關鍵字被稱為另一個關係的外來鍵。由此可見,外來鍵表示了兩個關係之間的聯絡。

以另一個關係的外來鍵作主關鍵字的表被稱為主表,具有此外來鍵的表被稱為主表的從表。外來鍵又稱作外關鍵字。

以上是摘抄的,簡單來說,主鍵就是一個關係中作為標識用的,而外來鍵是其他關係中的屬性,使用外來鍵可避免冗餘。

2樓:北桓崴

它們都是關聯式資料庫表設計的約束方式而已,為了保證資料庫中不會出現髒資料的限制方法。

主鍵是資料庫表的唯一索引序列,可以由多個欄位組成,但每條資料的這幾個欄位的組合必須唯一;主鍵約束僅涉及本表資料;

外來鍵是本表中該外來鍵欄位的取值要求是已經在目標表中存在的資料;假如說,表b有欄位b_1是表a中欄位a_1的外來鍵,那麼插入表b資料的時候,欄位b_1的取值要求在表a的欄位a_1的當前所有資料的值的範圍內。外來鍵是以外表資料約束本表資料的約束條件。

此外,外來鍵還有個要求,就是a_1必須是表a的主鍵。並且必須說得是,外來鍵是一個很煩人的資料庫約束。

3樓:匿名使用者

主外來鍵的存在是依託兩個實體之間的關係而存在的;

比如班級與學生的關係:

一個班級可以有多個學生,並且一個學生只能屬於一個班級,這就是一對多的關係;

那麼設計資料庫的時候就應該在學生表記憶體放班級的id作為外來鍵,為什麼不在班級表內放學生呢?

因為,你想一想班級表內如果放學生那麼記錄可能就是這樣:

1班id 1班 xx同學id

1班id 1班 xx同學id

..這是不允許的,班級表內班級為主鍵,是唯一的不允許相同記錄的;

下面簡單給你講下大概建成的表結構

--建班級表

create table class(

classid int primary key,--定義班級id為主鍵

classname varchar(15)

)--建學生表

create table students(

studentid int primary key,--定義學生id為主鍵

classid int ,--外來鍵值,跟班級表classid 屬性型別相同

stuname varchar(20),--學生姓名

---定義外來鍵

foreign key(classid) references class(classid) --本表classid是基於class表classid的外來鍵

)---------

如上定義了主外來鍵後,兩個表間的關係就是一對多的關係了,並且學生表內的classid必須依託班級表的classid存在,也就是說外來鍵必須要主鍵存在的時候才能建立,例如:

--在班級表為空的情況往學生表插入一條記錄是不允許的:

insert into students(studentid,classid,stuname)values(1,1,'小明')

系統會丟擲異常提示主鍵表班級表內班級id不存在這樣是不允許插入的;

必須要先往班級表內插入一條記錄:

insert into class(classid,classname)values(1,'一班')

後才能執行插入前面一條往學生表插入資訊的語句..

--------------可瞭解一些了?真累啊.

設定資料庫外來鍵時如何區分那個為主鍵表那個為外來鍵表

a表必須有記錄,b表才能有,這個時候a表是主鍵表,b表外來鍵表。a表裡面的記錄可以隨便錄入,但一般必須唯一,是主鍵 b表裡面錄入的東西就不是亂錄了,必須a表裡面有的記錄,才能錄入到b表中。b表裡面出現的任何一條記錄都必須在a表中找到與之對應的記錄,當然它可以重複出現,如果是1 n的話 例如 學生表,...

sql資料庫兩個外來鍵做聯合主鍵

聯合主鍵是有著特殊的需求的。建表的時候建立 create table 表名 欄位名1 int not null,欄位名2 nvarchar 13 not null primary key 欄位名1,欄位名2 欄位名3 欄位名n 或者建表之後修改表結構 alter table 表名 with noch...

資料庫表中有外來鍵,該怎麼新增資料

有外來鍵的情況應該先新增主表資料,再新增副表資料。如 有以下兩張表 班級表 classid name 1 一班 2 二班 學生表 sid name classid1 張三 12 李四 13 王五 2其中學生表中的classid是班級表classid的外來鍵。現在要求在學生表中新增一條sid 4,na...