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