MySQL數據庫8(十一)表關系
阿新 • • 發佈:2018-09-04
常用 nbsp width 其他 就會 學生 p s 查詢 帶來
表關系
表關系:表與表之間(實體)有什麽樣的關系,每種關系應該如何設計表結構。
一對一
一對一,一張表中的一條記錄與另外一張表中最多有一條明確的關系,通常,此設計方案保證兩張表中使用同樣的主鍵即可。(唯一鍵可以為null,無法匹配)
學生表:
學生ID(PRI) |
姓名 |
年齡 |
性別 |
籍貫 |
婚否 |
信仰 |
|
|
|
|
|
|
|
表的使用過程中,常用的信息會經常去查詢,而不常用的信息會偶爾才會用到。
解決方案:將表拆分,常見的放一張表,不常見的放一張表。
常用表
學生ID(PRI) |
姓名 |
年齡 |
性別 |
|
|
|
|
不常用表
學生ID(PRI) |
籍貫 |
婚否 |
信仰 |
|
|
|
|
一對多
一對多,通常也叫作多對一的關系,通常一對多的關系設計的方案,在“多”關系的表中去維護一個字段,這個字段是“一”關系的主鍵。
母親表
母親ID |
姓名 |
年齡 |
身高 |
M1 |
|
|
|
M2 |
|
|
|
在孩子中加入一列母親ID(增加字段)
孩子表
孩子ID |
姓名 |
年齡 |
身高 |
母親ID |
K1 |
|
|
|
M1 |
K2 |
|
|
|
M2 |
多對多
多對多:一張表中的一條記錄在另外一張表中可以匹配到多條記錄,反過來也一樣。
多對多的關系如果按照多對一的關系維護中:就會出現一個字段中有多個其他表的主鍵,在訪問的時候就會帶來不便。
既然通過兩張表自己增加字段解決不了問題,那麽久通過第三張表來解決。
師生關系
1、一個老師教過多個班級的 學生
2、一個學生聽過多個老師講的課
首先得有兩個實體:老師表和學生表
從中間設計一張表,維護兩張表對應的聯系,每一種聯系都包含。
多對多解決方案:增加一個中間表,讓中間表與對應的其他表形成兩個多對一的關系:多對一的解決方案是在“多”表中增加“一”表對應的主鍵字段。
MySQL數據庫8(十一)表關系