首頁技術(shù)文章正文

JAVA培訓(xùn)之?dāng)?shù)據(jù)庫(kù)表關(guān)聯(lián)關(guān)系

更新時(shí)間:2017-04-13 來源:黑馬程序員Java培訓(xùn)學(xué)院 瀏覽量:

數(shù)據(jù)庫(kù)表的關(guān)聯(lián)關(guān)系有如下三種:

· 一對(duì)多

· 一對(duì)一

· 多對(duì)多

一對(duì)多的關(guān)系比較常見,我們?cè)谥熬毩?xí)的都是一對(duì)多的關(guān)系操作,因此這里就不再重復(fù)介紹了。

1.一對(duì)一關(guān)系

在現(xiàn)實(shí)生活中,丈夫與妻子之間的關(guān)系就是一對(duì)一的關(guān)系,下面我們將這兩個(gè)實(shí)體轉(zhuǎn)換成兩個(gè)表。表名分別是:husband,wife。

(1)創(chuàng)建husband表,如圖1-1所示:

圖1-1 創(chuàng)建husband表

(2)創(chuàng)建wife表,如圖1-2所示:

圖1-2 創(chuàng)建wife表

圖1-2中,創(chuàng)建wife表時(shí)該表的外鍵與主鍵相同,都是wid,并且引用自husband表的主鍵,這樣做就保證了wife表中的記錄與husband表中的記錄是一對(duì)一的關(guān)系,wife表的主鍵wid就必須滿足以下三個(gè)要求:

非空:wid是主鍵,那么必然是非空的;

唯一:wid是主鍵,那么必然也是唯一的不能重復(fù)的;

引用husband表的主鍵hid

(3)向husband表中插入三條記錄,如圖1-3所示:

圖1-3 插入記錄

(4)向wife表中插入數(shù)據(jù),如圖1-4所示:

圖1-4 向wife表中插入記錄

圖1-4中,向wife表中插入一條記錄,主鍵值為4,wid不僅僅是wife表的主鍵,也是外鍵,它的值是引用husband表的主鍵值,而在husband表中并不存在值為4的主鍵,因此插入失敗。

2.多對(duì)多關(guān)系

學(xué)生與老師之間的關(guān)系就是多對(duì)多的關(guān)系,下面我們?cè)跀?shù)據(jù)庫(kù)中創(chuàng)建兩個(gè)表,分別是student,teacher。多對(duì)多關(guān)系不會(huì)體現(xiàn)在這兩個(gè)表中,而是將這個(gè)關(guān)系保存在第三張表中。

(1)創(chuàng)建student表,然后向student表中插入四條記錄,最后查詢?cè)摫?,如圖1-5所示:

圖1-5 student表信息

(2)創(chuàng)建teacher表,并向表中插入兩條數(shù)據(jù),最后查詢?cè)摫?,如圖1-6所示:

圖16 teacher表信息

(3)創(chuàng)建第三張表,名為stu_tea,如圖1-7所示:

圖1-7 創(chuàng)建關(guān)系表

(4)建立學(xué)生表與教師表之間的關(guān)系,如圖1-8所示:

圖1-8 建立表與表之間的關(guān)系

圖1-8中,student表中的所有學(xué)生都是teacher表中主鍵為1的老師的學(xué)生,表明了一個(gè)老師有多個(gè)學(xué)生,而student表中主鍵為2的學(xué)生還有一個(gè)老師,他的主鍵是2,表明了一個(gè)學(xué)生可以有多個(gè)老師。如此,student表與teacher表建立了多對(duì)多的關(guān)聯(lián)關(guān)系。

本文版權(quán)歸黑馬程序員Java培訓(xùn)學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明作者出處。謝謝!

作者:黑馬程序員Java培訓(xùn)學(xué)院

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!