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

時間 2021-10-14 22:23:54

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表修改a表,若修改之後的結果是b表外來鍵欄位的值在a表中找不到了,則會報錯,不允許進行此修改,其他情況可以任意修改。修改b表,必須保證修改後b表外來鍵欄位的值依然能在a表中找到,否則會報錯。倆表自己的修改,只會影響自己表的資料,對其他表無影響。 灝忓...

資料庫中如何讓外來鍵自動填充主鍵的值

1.sql的主鍵和外來鍵的作用 2.外來鍵取值規則 空值或參照的主鍵值。1 插入非空值時,如果主鍵表中沒有這個值,則不能插入。2 更新時,不能改為主鍵表中沒有的值。3 刪除主鍵表記錄時,你可以在建外來鍵時選定外來鍵記錄一起級聯刪除還是拒絕刪除。4 更新主鍵記錄時,同樣有級聯更新和拒絕執行的選擇。3....

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

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