1. 程式人生 > >MySQL數據庫8(十一)表關系

MySQL數據庫8(十一)表關系

常用 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(十一)表關系