更新時(shí)間:2017-04-13 來源:黑馬程序員Java培訓(xùn)學(xué)院 瀏覽量:
數(shù)據(jù)庫表的關(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ù)庫中創(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è)摫?,如圖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é)院
1024首播|39歲程序員逆襲記:不被年齡定義,AI浪潮里再迎春天
2025-10-241024程序員節(jié)丨10年同行,致敬用代碼改變世界的你
2025-10-24【AI設(shè)計(jì)】北京143期畢業(yè)僅36天,全員拿下高薪offer!黑馬AI設(shè)計(jì)連續(xù)6期100%高薪就業(yè)
2025-09-19【跨境電商運(yùn)營(yíng)】深圳跨境電商運(yùn)營(yíng)畢業(yè)22個(gè)工作日,就業(yè)率91%+,最高薪資達(dá)13500元
2025-09-19【AI運(yùn)維】鄭州運(yùn)維1期就業(yè)班,畢業(yè)14個(gè)工作日,班級(jí)93%同學(xué)已拿到Offer, 一線均薪資 1W+
2025-09-19【AI鴻蒙開發(fā)】上海校區(qū)AI鴻蒙開發(fā)4期5期,距離畢業(yè)21天,就業(yè)率91%,平均薪資14046元
2025-09-19