MySQL关联关系
關(guān)聯(lián)關(guān)系
在開(kāi)發(fā)中,需要根據(jù)實(shí)體的內(nèi)容設(shè)計(jì)數(shù)據(jù)表,實(shí)體間會(huì)有各種關(guān)聯(lián)關(guān)系,所以,根據(jù)實(shí)體設(shè)計(jì)的數(shù)據(jù)表之間,也存在著各種關(guān)聯(lián)關(guān)系。
MySQL中,數(shù)據(jù)表的關(guān)聯(lián)關(guān)系分為三種
一對(duì)一
一對(duì)一關(guān)系,在實(shí)際生活中比較常見(jiàn)
比如,人與身份證之間,就是一對(duì)一的關(guān)系,一個(gè)人對(duì)應(yīng)一張身份證,一張身份證只能匹配一個(gè)人。
建立外鍵,首先,要分清主從關(guān)系,從表需要主表的存在才有意義,身份證需要人的存在,才有意義,因此,人為主表,身份證為從表,要在身份證中建立外鍵。
注意,這種方法關(guān)系在數(shù)據(jù)庫(kù)中并不常見(jiàn),因?yàn)?#xff0c;這種方式存儲(chǔ)的信息通常會(huì)放在一個(gè)表中。
在實(shí)際開(kāi)發(fā)中,一對(duì)一關(guān)聯(lián)關(guān)系,可以應(yīng)用于以下幾個(gè)方面
1、分割具有很多列的表
2、由于安全原因,而隔離表的一部分
3、保存臨時(shí)的數(shù)據(jù),并且,可以毫不費(fèi)力的通過(guò)刪除該表,而刪除這些數(shù)據(jù)
多對(duì)一
多對(duì)一是數(shù)據(jù)表中,最常見(jiàn)的一種關(guān)系
比如,員工和部門(mén)之間的關(guān)系,一個(gè)部門(mén)可以有多個(gè)員工,但是,一個(gè)員工從屬于一個(gè)部門(mén),部門(mén)表中的一行在員工表中,可以有許多匹配行,但是,員工表中的一行,在部門(mén)表中只能有一個(gè)匹配行。
建立外鍵,在多對(duì)一的表關(guān)系中,應(yīng)該將外鍵建在多的一方,否則,會(huì)造成數(shù)據(jù)冗余。
多對(duì)多
多對(duì)多也是數(shù)據(jù)表中的一種關(guān)系
比如,學(xué)生與課程之間的關(guān)系,一個(gè)學(xué)生可以選擇多門(mén)課程,一門(mén)課程可以供多個(gè)學(xué)生選擇,學(xué)生表中的一行,在課程表中可以有許多匹配行,課程表中的一行,在學(xué)生表中也有許多匹配行
通常情況下,實(shí)現(xiàn)這種關(guān)系,需要定義一張中間表,稱(chēng)為連接表,該表會(huì)存在兩個(gè)外鍵,分別參考課程表和學(xué)生表
注意,連接表中的兩個(gè)外鍵是可以重復(fù)的,但是,這兩個(gè)外鍵之間的關(guān)系,是不能重復(fù)的,所以,這兩個(gè)外鍵又是連接表的聯(lián)合主鍵
總結(jié)
- 上一篇: MySQL删除外键约束
- 下一篇: MySQL为关联表添加数据