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