首頁常見問題正文

Java操作數(shù)據(jù)庫:多表操作中的關(guān)聯(lián)關(guān)系

更新時間:2022-09-29 來源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

  在實際開發(fā)中,需要根據(jù)實體的內(nèi)容設(shè)計數(shù)據(jù)表,實體間會有各種關(guān)聯(lián)關(guān)系。所以根據(jù)實體設(shè)計的數(shù)據(jù)表之間也存在著各種關(guān)聯(lián)關(guān)系,MySQL中數(shù)據(jù)表的關(guān)聯(lián)關(guān)系有三種,具體如下。

  1.多對一

  多對一是數(shù)據(jù)表中最常見的一種關(guān)系。比如,員工與部門之間的關(guān)系,一個部門可以有多個員工,而一個員工不能屬于多個部門,也就是說部門表中的一行在員工表中可以有許多匹配行,但員工表中的一行在部門表中只能有一個匹配行。通過之前的講解,我們知道表之間的關(guān)系是通過外鍵建立的。在多對一的表關(guān)系中,應(yīng)該將外鍵建在多的一方,否則會造成數(shù)據(jù)的冗余。

1664416072200_操作關(guān)聯(lián)表.jpg

  2.多對多

  多對多也是數(shù)據(jù)表中的一種關(guān)系。比如學(xué)生與課程之間的關(guān)系,一個學(xué)生可以選擇多門課程,當(dāng)然一門課程也供多個學(xué)生選擇,也就是說學(xué)生表中的一行在課程表中可以有許多匹配行,課程表中的一行在學(xué)生表中也有許多匹配行。

  通常情況下,為了實現(xiàn)這種關(guān)系需要定義一張中間表(稱為連接表),該表會存在兩個外鍵,分別參照課程表和學(xué)生表。在多對多的關(guān)系中,需要注意的是,連接表的兩個外鍵都是可以重復(fù)的,但是兩個外鍵之間的關(guān)系是不能重復(fù)的,所以這兩個外鍵又是連接表的聯(lián)合主鍵。

  3.一對一

  一對一關(guān)系在實際生活中比較常見,例如人與身份證之間就是一對一的關(guān)系,一個人對應(yīng)一張身份證,一張身份證只能匹配一個人。那么,一對一關(guān)系的兩張表如何建立外鍵?

  首先,要分清主從關(guān)系。從表需要主表的存在才有意義,身份證需要人的存在才有意義。因此人為主表,身份證為從表。要在身份證表中建立外鍵。由實際經(jīng)驗可知,身份證中的外鍵必須是非空唯一的,因此通常會直接用從表(表身份證)中的主鍵作為外鍵。

  需要注意的是,這種關(guān)系在數(shù)據(jù)庫中并不常見,因為以這種方式存儲的信息通常會放在一個表中。在實際開發(fā)中,一對一關(guān)聯(lián)關(guān)系可以應(yīng)用于以下幾方面。

  (1)分割具有很多列的表

  (2)由于安全原因而隔離表的一部分。

  (3)保存臨時的數(shù)據(jù),并且可以毫不費力地通過刪除該表而刪除這些數(shù)據(jù)。

分享到:
在線咨詢 我要報名
和我們在線交談!