新聞中心
外鍵是關(guān)系型數(shù)據(jù)庫(kù)中一種重要的數(shù)據(jù)關(guān)系表達(dá)方式,它能夠?qū)⒉煌瑪?shù)據(jù)表之間的關(guān)聯(lián)關(guān)系通過(guò)程序語(yǔ)言實(shí)現(xiàn)。外鍵的存在使得數(shù)據(jù)庫(kù)的設(shè)計(jì)更加靈活和便捷,同時(shí)也有助于維護(hù)數(shù)據(jù)表的完整性和一致性。本文將闡述。

一、外鍵的作用
1. 關(guān)聯(lián)表數(shù)據(jù)
外鍵將關(guān)聯(lián)表中的行與所參照的主表中的行進(jìn)行關(guān)聯(lián)。這樣,雖然數(shù)據(jù)分散在不同的表中,但數(shù)據(jù)庫(kù)可以使用外鍵將這些表關(guān)聯(lián)起來(lái),在某些操作時(shí)可以一起處理。
2. 維護(hù)數(shù)據(jù)的完整性
外鍵保證了關(guān)聯(lián)表中數(shù)據(jù)的完整性和一致性。如果兩個(gè)表中有一個(gè)外鍵關(guān)系,當(dāng)在父表中刪除一個(gè)行時(shí),其對(duì)應(yīng)的子表中的行將被自動(dòng)刪除或者禁止子表中的行成為孤兒行。
3. 支持多對(duì)多關(guān)系
外鍵能夠?qū)崿F(xiàn)關(guān)系數(shù)據(jù)庫(kù)中的多對(duì)多關(guān)系,實(shí)現(xiàn)了數(shù)據(jù)庫(kù)中關(guān)聯(lián)關(guān)系的靈活性和便捷性。通過(guò)在一個(gè)表中存儲(chǔ)另一個(gè)表的主鍵,使用外鍵可以在不同的數(shù)據(jù)表之間建立有效的關(guān)聯(lián)關(guān)系。
二、外鍵的實(shí)現(xiàn)方式
外鍵實(shí)現(xiàn)方式主要包括手動(dòng)添加外鍵和使用數(shù)據(jù)庫(kù)管理系統(tǒng)自動(dòng)生成外鍵。
1. 手動(dòng)添加外鍵
手動(dòng)添加外鍵需要在子表中定義一個(gè)外鍵列,使用外鍵列去連接父表的主鍵。具體實(shí)現(xiàn)時(shí),需要在父表中創(chuàng)建一個(gè)主鍵或惟一索引,然后在子表中定義一個(gè)FOREIGN KEY約束,這個(gè)約束連接到父表的主鍵或等價(jià)于主鍵的惟一索引。
例:
CREATE TABLE 父表
(
父表主鍵 INT PRIMARY KEY
);
CREATE TABLE 子表
(
子表主鍵 INT PRIMARY KEY,
父表外鍵 INT,
FOREIGN KEY(父表外鍵) REFERENCES 父表(父表主鍵)
);
2. 使用數(shù)據(jù)庫(kù)管理系統(tǒng)自動(dòng)生成外鍵
許多數(shù)據(jù)庫(kù)管理系統(tǒng)自帶外鍵功能,會(huì)自動(dòng)在子表上創(chuàng)建一個(gè)外鍵列,并自動(dòng)關(guān)聯(lián)到父表的主鍵列。這種方法在一定程度上減輕了程序員的工作負(fù)擔(dān),同時(shí)也防止了因程序員失誤而導(dǎo)致的錯(cuò)誤。
例:
CREATE TABLE 父表
(
父表主鍵 INT PRIMARY KEY
);
CREATE TABLE 子表
(
子表主鍵 INT PRIMARY KEY,
父表外鍵 INT,
FOREIGN KEY(父表外鍵) REFERENCES 父表(父表主鍵) ON DELETE CASCADE
);
在這個(gè)例子中,在子表創(chuàng)建外鍵約束時(shí),使用了ON DELETE CASCADE,這意味著當(dāng)父表中刪除一個(gè)主鍵行時(shí),子表中對(duì)應(yīng)的帶有外鍵的行會(huì)被自動(dòng)刪除。另外,外鍵的操作還可以定義為將外鍵值設(shè)為 NULL 或 DEFAULT。
三、常見(jiàn)的外鍵限制條件
1. ON DELETE [CASCADE | SET NULL | SET DEFAULT]
ON DELETE用于定義當(dāng)父表中的主鍵行被刪除時(shí)發(fā)生的動(dòng)作。CASCADE選項(xiàng)表示當(dāng)父表中的行被刪除時(shí),它們所對(duì)應(yīng)的子表中的行也將被刪除。SET NULL選項(xiàng)表示當(dāng)父表中的行被刪除時(shí),它們所對(duì)應(yīng)的子表中的外鍵列將被設(shè)為空。SET DEFAULT選項(xiàng)表示當(dāng)父表中的行被刪除時(shí),它們所對(duì)應(yīng)的子表中的外鍵列將被設(shè)為默認(rèn)值。
2. ON UPDATE [CASCADE | SET NULL | SET DEFAULT]
ON UPDATE定義了當(dāng)父表中的主鍵值被修改時(shí),其對(duì)應(yīng)的子表中的外鍵列應(yīng)該如何修改。
3. NOT NULL
NOT NULL 用于指定外鍵列中的值不能為空。
4. UNIQUE
關(guān)聯(lián)表中的外鍵列已經(jīng)是惟一的,可以在創(chuàng)建表時(shí)指定外鍵為惟一的,這樣子表中就不會(huì)創(chuàng)建一個(gè)外鍵在父表中相關(guān)聯(lián)的行。
外鍵在關(guān)系型數(shù)據(jù)庫(kù)中具有重要的作用,方便了不同數(shù)據(jù)表之間的關(guān)聯(lián)和數(shù)據(jù)維護(hù)。不同的數(shù)據(jù)庫(kù)系統(tǒng)可能支持不同的外鍵實(shí)現(xiàn)方式,但外鍵約束可以保證數(shù)據(jù)的完整性和一致性,同時(shí)也為程序員提供了一種有效的數(shù)據(jù)表關(guān)聯(lián)方式。
相關(guān)問(wèn)題拓展閱讀:
- 數(shù)據(jù)庫(kù)外鍵怎么設(shè)置?
- 數(shù)據(jù)庫(kù)同時(shí)有主鍵和外鍵怎么表
- 數(shù)據(jù)庫(kù)外鍵
數(shù)據(jù)庫(kù)外鍵怎么設(shè)置?
SQL 數(shù)據(jù)庫(kù)建表時(shí)怎么設(shè)置外鍵,
1> — 創(chuàng)建測(cè)試主表. ID 是主鍵.
2> CREATE TABLE test_main (
3> id INT,
4> value VARCHAR(10),
5> PRIMARY KEY(id)
6> );
7> go
— 建表時(shí)設(shè)置外鍵
1> CREATE TABLE test_sub (
2> id INT,
3> main_id INT,
4> value VARCHAR(10),
5> PRIMARY KEY(id),
6> FOREIGN KEY (main_id) REFERENCES test_main
7> );
8> go
sql怎么設(shè)置外鍵
可以在創(chuàng)建表的時(shí)候創(chuàng)建,也可以在創(chuàng)建表之后創(chuàng)建。
創(chuàng)建表時(shí)創(chuàng)建:
create table student
(id int primary key,
name char(4),
dept char(9)
sex char(4))
create table grade
(id int ,
grade int
constraint id_fk foreign key (id) references student (id)
)
或創(chuàng)建了兩表之后再建
alter table grade
add constraint id_fk foreign key (id) references student (id)
呵呵,希望能幫助你。
sql server中圖形界面如何設(shè)置外鍵
在那個(gè)屬性上右鍵 有約束 自己添加就OK了
mysql怎么設(shè)置外鍵?
ALTER TABLE b ADD CONSTRAINT c FOREIGN KEY(c) REFERENCES a(c) ON DELETE CASCADE ON UPDATE CASCADE; 哎呀。。好像寫(xiě)反了。我寫(xiě)的是把表B的c設(shè)置為外鍵了。。你改一下吧。
如何在數(shù)據(jù)庫(kù)的建立表的時(shí)候設(shè)置表的外鍵
1> — 創(chuàng)建測(cè)試主表. ID 是主鍵.
2> CREATE TABLE test_main (
3> id INT,
4> value VARCHAR(10),
5> PRIMARY KEY(id)
6> );
7> go
— 建表時(shí)設(shè)置外鍵
1> CREATE TABLE test_sub (
2> id INT,
3> main_id INT,
4> value VARCHAR(10),
5> PRIMARY KEY(id),
6> FOREIGN KEY (main_id) REFERENCES test_main
7> );
8> go
sql server 2023 怎么設(shè)置外鍵
建外鍵的前提是此外鍵必須是另外一個(gè)表的主鍵。建外鍵的步驟: 之一步打開(kāi)要建外辯彎鍵表的設(shè)計(jì)器,右擊選擇“關(guān)系”。然后彈出“外裂談鍵關(guān)系”窗體,我們選擇“添加”,然后點(diǎn)擊“表和列規(guī)范”后面的小按鈕,就會(huì)彈出另外一個(gè)窗體讓我們選擇主鍵表和列,選好之后點(diǎn)擊確定。然后我們INSERT和UPDATE規(guī)范,在更新規(guī)則和刪除規(guī)則有四個(gè)選項(xiàng),分別是“不執(zhí)行任何操作攜源悶”、“級(jí)聯(lián)”、“設(shè)置為NULL”、“設(shè)置默認(rèn)值”。默認(rèn)的不執(zhí)行任何操作。如果是“不執(zhí)行任何操作”,當(dāng)我們刪除或更新主鍵表的數(shù)據(jù)時(shí),會(huì)告訴用戶不能執(zhí)行刪除或更新該操作?!凹?jí)聯(lián)”的意思是當(dāng)我們刪除或更新主鍵表的數(shù)據(jù)時(shí),會(huì)刪除或更新外鍵表中所涉及的相關(guān)數(shù)據(jù)的所有行。 “設(shè)置Null”的意思是當(dāng)我們刪除或更新主鍵表的數(shù)據(jù)時(shí),外鍵表中的外鍵列的值會(huì)設(shè)為Null,但前提是該列允許為空。 “設(shè)置默認(rèn)值”的意思是如果我們將外鍵列定義了默認(rèn)值,當(dāng)我們刪除或更新主鍵表的數(shù)據(jù)時(shí),外鍵表中的外鍵列的值設(shè)為定義的默認(rèn)值。 當(dāng)然我們可以用代碼創(chuàng)建,當(dāng)我們?cè)趧?chuàng)建數(shù)據(jù)庫(kù)表T——Card時(shí)只要加上一句話就OK啦,“Foreign key (studentNo) references T_Student(studentNo)”。如果我們已經(jīng)創(chuàng)建了改表,那如何用代碼實(shí)現(xiàn)了,這也很簡(jiǎn)單也就一句話“ add constraint CMPKey(外鍵名) foreign key(studentNo) references T_Student(studentNo)”。
sql中怎樣創(chuàng)建外鍵約束
在創(chuàng)建表之后,添加外鍵約束:
alter table yuangong add constraint fk foreign key (部門(mén)罰) references bumen(部門(mén)號(hào))
或者在創(chuàng)建表的時(shí)候添加外鍵
foreign key (部門(mén)號(hào)) references bumen(部門(mén)號(hào))放在最后,用”,”與列分隔
數(shù)據(jù)庫(kù)中,一對(duì)多的時(shí)候外鍵設(shè)置在多的那張表嗎?如果一對(duì)一的時(shí)候,外鍵應(yīng)該設(shè)置在哪里?多對(duì)多的時(shí)候,
首先,外鍵引用的那個(gè)列在主表中必須是主鍵列或者唯一列。
所以1:n的肯定把外鍵建立在n的那張表上。
1:1,一般要看誰(shuí)是主表,誰(shuí)是附屬表,外鍵當(dāng)然建立在附屬表中。
n:m的情況,需要建立一個(gè)關(guān)系表,兩個(gè)原表和其關(guān)系分別是1:n,1
:m
數(shù)據(jù)庫(kù)語(yǔ)句怎么加外鍵
1,創(chuàng)建表的時(shí)候添加:foreign key (你的外鍵) references (表名)(字段名);
2,創(chuàng)建好之后修改:
alter table dbo.mh_User
add constraint FK_mh_User_…_id foreign key (你的外鍵) references (表名)(字段名);
Sql server怎樣創(chuàng)建主外鍵關(guān)系
在要設(shè)置關(guān)系的外鍵表中,右擊關(guān)系→添加→在表和列規(guī)范中選擇關(guān)聯(lián)的主表再選擇外鍵表與其關(guān)聯(lián)的字段
數(shù)據(jù)庫(kù)同時(shí)有主鍵和外鍵怎么表
主頌褲鍵是能確定一條記錄的唯一標(biāo)識(shí)野賀簡(jiǎn),比如,一條記錄包括身份正號(hào),姓名,年齡。 身份證號(hào)是唯一能確定你這個(gè)人的,其他都可能有重拍派復(fù),所以,身份證號(hào)
2. 外鍵用于與另一張表的關(guān)聯(lián)。是能確定另一張表記錄的字段,用于保持
關(guān)系型數(shù)據(jù)庫(kù)中的一條記錄中有若干個(gè)屬性,若其中某一個(gè)屬性組(注意是組)能唯一標(biāo)識(shí)一條記錄,該屬性組就可以成為一個(gè)主鍵
比如
學(xué)生表晌野(學(xué)號(hào),姓衡鉛名,性別,班級(jí))
其中每個(gè)學(xué)生的學(xué)號(hào)是唯一的,學(xué)號(hào)就是一宴攔喊個(gè)主鍵
課程表(課程編號(hào),課程名,學(xué)分)
其中課程編號(hào)是唯一的,課程編號(hào)就是一個(gè)主鍵
成績(jī)表(學(xué)號(hào),課程號(hào),成績(jī))
成績(jī)表中單一一個(gè)屬性無(wú)法唯一標(biāo)識(shí)一條記錄,學(xué)號(hào)和課程號(hào)的組合才可以唯一標(biāo)識(shí)一條記錄,所以 學(xué)號(hào)和課程號(hào)的屬性組是一個(gè)主鍵
數(shù)據(jù)庫(kù)外鍵
所謂外鍵:如果公鑰關(guān)系中是主鍵,然后在公共密鑰被稱為另一個(gè)關(guān)系的外鍵前純。因此,外鍵關(guān)系代表了兩者之間的聯(lián)系。與另一個(gè)表的主鍵的外鍵關(guān)系被稱為主表的外鍵被稱為主表,從表中的表。至于主鍵:主鍵被挑出唯一確定的候選鍵表行。一個(gè)表只能有一個(gè)主鍵??梢苑Q為主鍵與主鍵。正如我們可以看到:如果名稱是B表的主鍵,表A作為名稱或外鍵。從上述定義表A表B是慧漏咐主表中搜鄭,表A表B表,
關(guān)于關(guān)系型數(shù)據(jù)庫(kù) 外鍵的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
成都創(chuàng)新互聯(lián)建站主營(yíng):成都網(wǎng)站建設(shè)、網(wǎng)站維護(hù)、網(wǎng)站改版的網(wǎng)站建設(shè)公司,提供成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、成都網(wǎng)站推廣、成都網(wǎng)站優(yōu)化seo、響應(yīng)式移動(dòng)網(wǎng)站開(kāi)發(fā)制作等網(wǎng)站服務(wù)。
分享名稱:外鍵在關(guān)系型數(shù)據(jù)庫(kù)中的作用與實(shí)現(xiàn)方式(關(guān)系型數(shù)據(jù)庫(kù)外鍵)
本文網(wǎng)址:http://www.5511xx.com/article/coggspo.html


咨詢
建站咨詢
