更新時(shí)間:2017-04-13 來(lái)源:黑馬程序員Java培訓(xùn)學(xué)院 瀏覽量:
數(shù)據(jù)庫(kù)表的關(guān)聯(lián)關(guān)系有如下三種:
· 一對(duì)多
· 一對(duì)一
· 多對(duì)多
一對(duì)多的關(guān)系比較常見(jià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è)摫恚鐖D1-5所示:
圖1-5 student表信息
(2)創(chuàng)建teacher表,并向表中插入兩條數(shù)據(jù),最后查詢?cè)摫恚鐖D1-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é)院