18禁网站免费,成年人黄色视频网站,熟妇高潮一区二区在线播放,国产精品高潮呻吟AV

學(xué)習(xí)啦 > 知識大全 > 知識百科 > 百科知識 > 外鍵如何使用

外鍵如何使用

時間: 謝君787 分享

外鍵如何使用

  外鍵表示了兩個關(guān)系之間的相關(guān)聯(lián)系。以另一個關(guān)系的外鍵作主關(guān)鍵字的表被稱為主表,具有此外鍵的表被稱為主表的從表。以下是由學(xué)習(xí)啦小編整理關(guān)于什么是外鍵的內(nèi)容,希望大家喜歡!

  外鍵的定義

  設(shè)F是基本關(guān)系R的一個或一組屬性,但不是關(guān)系的鍵,Ks是基本關(guān)系S的主鍵。如果F與Ks相對應(yīng),則稱F是R的外鍵,并稱基本關(guān)系R為參照關(guān)系,基本關(guān)系S為被參照關(guān)系或目標(biāo)關(guān)系。

  換而言之,如果關(guān)系模式R中的某屬性集不是R的主鍵,而是另一個關(guān)系R1的主鍵則該屬性集是關(guān)系模式R的外鍵,通常在數(shù)據(jù)庫設(shè)計中縮寫為FK。

  在實際操作中,將一個表的值放入第二個表來表示關(guān)聯(lián),所使用的值是第一個表的主鍵值(在必要時可包括復(fù)合主鍵值)。此時,第二個表中保存這些值的屬性稱為外鍵(foreign key)。

  注意

  顯然目標(biāo)關(guān)系的主碼和參照關(guān)系的外碼必須定義在一個或同一組的域上。

  關(guān)系R和S不一定是不同的關(guān)系,即外鍵不一定要與相應(yīng)的主鍵同名。如在學(xué)生(學(xué)號,姓名,性別,專業(yè)號,年齡,班長)關(guān)系中,“學(xué)號”是主鍵,“班長”屬性表示該學(xué)生所在編輯的班長的學(xué)號,它引用了本關(guān)系中“學(xué)號”屬性,因此“班長”是外鍵,這里學(xué)生關(guān)系既是參照關(guān)系也是被參照關(guān)系。不過在實際應(yīng)用中為了便于識別,當(dāng)主鍵與相應(yīng)的外鍵屬于不同關(guān)系時,往往取相同的名字。

  作用

  保持?jǐn)?shù)據(jù)一致性,完整性,主要目的是控制存儲在外鍵表中的數(shù)據(jù)。 使兩張表形成關(guān)聯(lián),外鍵只能引用外表中的列的值或使用空值。

  如果不使用外鍵,表2的學(xué)號字段插了一個值(比如20140999999),但是這個值在表1中并沒有,這個時候,數(shù)據(jù)庫允許插入,并不會對插入的數(shù)據(jù)做關(guān)系檢查。然而在設(shè)置外鍵的情況下,你插入表2學(xué)號字段的值必須要求在表1的學(xué)號字段能找到。 同時,如果你要刪除表1的某個學(xué)號字段,必須保證表2中沒有引用該字段值的列,否則就沒法刪除。這就是所謂的保持?jǐn)?shù)據(jù)的一致性和完整性。如右圖,如果表2還引用表1的某個學(xué)號,你卻把表1中的這個學(xué)號刪了,表2就不知道這個學(xué)號對應(yīng)的學(xué)生是哪個學(xué)生。

  外鍵的使用方法

  主鍵表和外建表:

  使用設(shè)計界面創(chuàng)建外鍵時,出現(xiàn)主鍵表和外建表問題,上述使個人理解有誤:

  CREATE TABLE TABLE1

  (

  [ID] INT IDENTITY(1,1) PRIMARY KEY

  )

  GO

  CREATE TABLE TABLE2

  (

  [ID] INT NOT NULL,

  FOREIGN KEY ([ID]) REFERENCES [TABLE1]([ID])

  )

  GO

  TABLE2 中引用了TABLE1,在此TABLE1為主鍵表,而TABLE2 為外鍵表。

  總結(jié):主鍵表是被引用的表,外鍵表是引用其他表的表。

  外鍵的有效性

  有很多時候,程序員會發(fā)現(xiàn)字段缺少、多余問題或者是創(chuàng)建外鍵以后就不能添加沒有受約束的行[特殊情況下是有必要的],這個時候不想對表結(jié)構(gòu)進(jìn)行操作,就可以使用約束失效。

  以 Northwind 為例:想給產(chǎn)品表【Products表】添加一條不受種類表【Categories表】限制的數(shù)據(jù)??梢允巩a(chǎn)品表中的 Categories 約束失效。

  寫法:ALTER TABLE dbo.Products NOCHECKCONSTRAINT FK_Products_Categories

  添加完成后再使其有效:

  ALTER TABLE dbo.Products CHECK CONSTRAINT FK_Products_Categories

  這樣就完成不受某表約束的數(shù)據(jù)添加了。

  還有一個好處是:如上述例子。修改 Categories 表時 添加字段時 要把所有引用 Categories 表的外鍵給失效。等給 Categories 表添加字段完成后再使所有應(yīng)用 Categories 表的外鍵恢復(fù)有效性即可。
看過“外鍵如何使用”的人還看了:

1.數(shù)據(jù)庫中外鍵的用法

2.信息管理信息系統(tǒng)專業(yè)論文

3.CCNA專業(yè)語匯中英對照

4.餐飲管理系統(tǒng)設(shè)計論文

5.c語言string的用法

2119402