數據庫的關聯

By | July 18, 2013

一個好的數據庫設計,一定離不開關聯(relationship),你可以說表與表之間的關係。它們的關係可以是:一對一,一對多,多對多。

一對一

一對一通常用於安全性的資料,例如把用戶(User) 和用戶資料(profile) 分離成2個表,這樣用戶登入時不用讀取個人資料,而且可以在權限設定是可以更有彈性,不是所有人可以查看用戶資料。

用戶–1—-1–用戶資料 : 就是一對一,一個用戶只有一個用戶資料

一對多

例子:一個書的類別(category)可以包含多本書(book items), 在設計書籍數據庫時,書本的類別不是直接填入類別,而是紀錄category id,這樣可以節省很多空間。多本不同的書都是屬於這個類別,它們的category id 都是同一個數字,書本的類別id 稱為fk(foreign key)

類別id –1—M–書本類別fk

多對多

例子:一本書有多個作者,一個作者可以有多本書,這樣根據上面就不符合了,因此就會產生第三個表,進行多對多關係。把書的id, 作者的id 合併在一起,

book_id, authors_id
2     ,        10
2     ,        15
4     ,        10
5     ,        15

上面圖表可以見到,一個book_id 可以有不同的authors_id,authors_id 可以有不同的book_id,這樣很容易就可以找出一本書的作者id, 一作者擁有的書id