寫在開頭:
一直搞不清楚資料庫表之間的關係,看了很多部落格還是有些瀰漫,沒有具體的例子輔助。所以寫了下面的內容,此文中的案例以學校為例,個人理解,可能會有諸多不妥之處,僅供參考。
什麼是主鍵?外來鍵?
1.主鍵:主鍵是表的乙個特殊字段,可以唯一地標識表中的每條資訊。比如:身份證號。乙個表中可以有乙個或多個主鍵。
作用:唯一標識、快速查詢
2.外來鍵:如果表b的乙個字段(外來鍵)依賴於表a的主鍵。則成表a為父表,表b為子表。
原則:外來鍵必須依賴於資料庫中已經存在的父表的主鍵,外來鍵可以為空
作用:建立該錶與父表的關聯關係
包括單錶、多表(一對
一、一對多、多對多)
就是一張表,所有的資料都在一張表中。
例:下面這張表,學習資訊都存在一張表中。
2.1一對一 (不常用)
a 表中的一行最多只能匹配於 b 表中的一行
應用場景:
1.單錶太大,一分為二
2.由於安全原因而隔離表的一部分
例:為了收集學生的****,又建了一張學生聯絡表,如下圖。
聯絡表(子表)中的外來鍵(學號),必須依賴於資訊表(父表)中的主鍵(學號)存在。
2.2一對多
a 表中的一行可以匹配 b 表中的多行,但是 b 表中的一行只能匹配 a 表中的一行
例:學生到校後,需要分班,下面的兩張表就產生了。乙個班有多個學生,乙個學生只能歸屬乙個班級,
2.3多對多
多對多就是兩個一對多
a 表中的一行可以匹配 b 表中的多行,反之亦然。要建立這種關係,需要定義第三個表,稱為結合表,它的主鍵由 a 表和 b 表的外來鍵組成。
例:辦級分好之後學生就該選課了。我們需要一張課程表。乙個學生可以選擇多門科,一門課也可以多名同學上。此時我們通過第三張表來對映這種關係。
課程表:
學生分班表:
選課結果(第三張表):
表關係 一對一,一對多,多對多
可以在資料庫圖表中的表之間建立關係,以顯示乙個表中的列與另乙個表中的列是如何相鏈結的。更好的方法是將有關出版社的資訊在單獨的表,publishers,中只儲存一次。然後可以在titles表中放置乙個引用出版社表中某項的指標。為了確保您的資料同步,可以實施titles和publishers之間的參照完...
表關係 一對一,一對多,多對多
可以在資料庫圖表中的表之間建立關係,以顯示乙個表中的列與另乙個表中的列是如何相鏈結的。更好的方法是將有關出版社的資訊在單獨的表,publishers,中只儲存一次。然後可以在titles表中放置乙個引用出版社表中某項的指標。為了確保您的資料同步,可以實施titles和publishers之間的參照完...
mySQL 表關係 一對一 一對多 多對多
一對一 a中的乙個實體至多與b中的乙個實體相關聯,且b中的乙個實體也至多與a中乙個實體相關聯。1.一對一 one to one 每個實體的獨有屬性 區別於其他實體 如個人的郵箱,每個使用者的郵箱都是不同的,即使用者與郵箱之間的關係為一對一關係。使用者與購物行為,因為多個使用者都可以購物,則兩者為多對...