日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

超键、候选键、主键、外键、联合主键、复合主键

發布時間:2025/3/21 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 超键、候选键、主键、外键、联合主键、复合主键 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先看看各種鍵的定義:

超鍵(super key):在關系中能唯一標識元組的屬性集稱為關系模式的超鍵(只要有一個鍵唯一,再隨便組其他的鍵,合起來叫主鍵)

候選鍵(candidatekey):不含有多余屬性的超鍵稱為候選鍵(最小的超鍵,ID,身份證號)

主鍵(primary key):關系型數據庫中的一條記錄中有若干個屬性,若其中某一個屬性(注意是)能唯一標識一條記錄,該屬性組就可以成為一個主鍵?(在超鍵選取一個作為主鍵,如果有多個字段的叫為聯合主鍵)

外鍵(foreign key)如果關系模式R1中的某屬性集不是R1的主鍵,而是另一個關系R2的主鍵則該屬性集是關系模式R1的外鍵。

結合實例的具體解釋:

假設有如下兩個表:

學生(學號,姓名,性別,身份證號,教師編號)

教師(教師編號,姓名,工資)

超鍵:

由超鍵的定義可知,學生表中含有學號或者身份證號的任意組合都為此表的超鍵。如:(學號)、(學號,姓名)、(身份證號,性別)等。

候選鍵:

候選鍵屬于超鍵,它是最小的超鍵,就是說如果再去掉候選鍵中的任何一個屬性它就不再是超鍵了。學生表中的候選鍵為:(學號)、(身份證號)。

主鍵:

主鍵就是候選鍵里面的一個,是人為規定的,例如學生表中,我們通常會讓“學號”做主鍵,教師表中讓“教師編號”做主鍵。

外鍵:

外鍵比較簡單,學生表中的外鍵就是“教師編號”。外鍵主要是用來描述兩個表的關系。


超鍵(super key):在關系中能唯一標識元組的屬性集稱為關系模式的超鍵

候選鍵(candidate key):不含有多余屬性的超鍵稱為候選鍵

主鍵(primary key):用戶選作元組標識的一個候選鍵程序主鍵

比如一個小范圍的所有人,沒有重名的,考慮以下屬性

身份證 姓名 性別 年齡

身份證唯一,所以是一個超鍵

姓名唯一,所以是一個超鍵

(姓名,性別)唯一,所以是一個超鍵

(姓名,性別,年齡)唯一,所以是一個超鍵

--這里可以看出,超鍵的組合是唯一的,但可能不是最小唯一的

身份證唯一,而且沒有多余屬性,所以是一個候選鍵

姓名唯一,而且沒有多余屬性,所以是一個候選鍵

--這里可以看出,候選鍵是沒有多余屬性的超鍵

考慮輸入查詢方便性,可以選擇 身份證 為主鍵

也可以 考慮習慣 選擇 姓名 為主鍵

--主鍵是選中的一個候選鍵

一題搞懂什么是候選鍵?

看下題目先?

在SQL Server數據庫中,有一個學生信息表如下所示,在該表中不能作為候選鍵的屬性集合為( ) (選擇一項)?

學號 姓名 性別 年齡 系別 專業?

20020612 李輝 男 20 計算機 軟件開發?

20060613 張明 男 18 計算機 軟件開發?

20060614 王小玉 女 19 物理 力學?

20060615 李淑華 女 17 生物 動物學?

20060616 趙靜 男 21 化學 食品化學?

20060617 趙靜 女 20 生物 植物學?

a){學號}?

b){學號、姓名}?

c){年齡、系別}?

d){姓名、性別}?

e){姓名、專業}?

可能大家不知道如何來選擇。如果這個題目我們可以正確的解答,那么對于超鍵以及候選鍵和主鍵的概念已經有很深刻的認識了。?

看下概念:?

超鍵:在關系中能惟一標識元組的屬性集稱為關系模式的超鍵。?

候選鍵:不含有多余屬性的超鍵稱為候選鍵。也就是在候選鍵中,若要再刪除屬性就不是鍵了。?

主鍵:用戶選作元組標識的一個候選鍵稱為主鍵。?

透過概念,我們可以了解到,超鍵包含著候選鍵,候選鍵中包含著主鍵。主鍵一定是惟一的。為什么呢?因為他的爺爺超鍵就是惟一的。?

我們分析一下上面的題目,abcde5個答案都可以作為超鍵,他們組合在一起的集合可以用來惟一的標識一條數據記錄(實體)。?

請注意我們的要求:候選鍵。候選鍵要求是不能包含多余屬性的超鍵,我們看一下答案b。在答案b中,如果我們不使用姓名也可以惟一的?

標識一條數據實體,可以說姓名字段在這里是多余的。那么很明顯,b選項包含了多余字段屬性。那么這題答案應該選擇b

那么其他的4個選項都可以作為候選鍵,假設很幸運,a)學號 被選擇作為用戶正在使用的候選鍵來惟一標識元組了,那么他很幸運的獲得了主鍵的稱號。

?


聯合主鍵 復合主鍵

?

其實“主鍵是唯一的索引”這話有點歧義的。舉個例子,我們在表中創建了一個ID字段,自動增長,并設為主鍵,這個是沒有問題的,因為“主鍵是唯一的索引”,ID自動增長保證了唯一性,所以可以。

此時,我們再創建一個字段name,類型為varchar,也設置為主鍵,你會發現,在表的多行中你是可以填寫相同的name值的,這豈不是有違“主鍵是唯一的索引”這句話么?

所以我才說“主鍵是唯一的索引”是有歧義的。(復合主鍵)應該是“當表中只有一個主鍵時,它是唯一的索引;當表中有多個主鍵時,稱為復合主鍵,復合主鍵聯合保證唯一索引”。

為什么自增長ID已經可以作為唯一標識的主鍵,為啥還需要復合主鍵呢。因為,并不是所有的表都要有ID這個字段啊哈哈,比如,我們建一個學生表,沒有唯一能標識學生的ID,怎么辦呢,學生的名字、年齡、班級都可能重復,無法使用單個字段來唯一標識,這時,我們可以將多個字段設置為主鍵,形成復合主鍵,這多個字段聯合標識唯一性,其中,某幾個主鍵字段值出現重復是沒有問題的,只要不是有多條記錄的所有主鍵值完全一樣,就不算重復。

?

什么是數據表的復合主鍵

所謂的復合主鍵 就是指你表的主鍵含有一個以上的字段組成
比如
create table test
(
?? name varchar(19),
?? id number,
?? value varchar(10),
?? primary key (name,id)
)

上面的name和id字段組合起來就是你test表的復合主鍵

它的出現是因為你的name字段可能會出現重名,所以要加上ID字段這樣就可以保證你記錄的唯一性
一般情況下,主鍵的字段長度和字段數目要越少越好

聯合主鍵
什么是聯合主鍵?
(主鍵原則上是唯一的,別被唯一值所困擾。)
顧名思義就是多個主鍵聯合形成一個主鍵組合
一個簡單的例子
主鍵A跟主鍵B組成聯合主鍵
主鍵A跟主鍵B的數據可以完全相同(困擾吧,沒關系),聯合就在于主鍵A跟主鍵B形成的聯合主鍵是唯一的。
下例主鍵A數據是1,主鍵B數據也是1,聯合主鍵其實是11,這個11是唯一值,絕對不充許再出現11這個唯一值。(這就是多對多關系)
主鍵A數據主鍵B數據
1      1
2      2
3      3
主鍵A與主鍵B的聯合主鍵值最多也就是
11
12
13
21
22
23
31
32
33

總結

以上是生活随笔為你收集整理的超键、候选键、主键、外键、联合主键、复合主键的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。