1. 程式人生 > 其它 >資料庫設計關聯關係表的意義是什麼?

資料庫設計關聯關係表的意義是什麼?

例: 有兩張表,分別是員工表 和 部門表。

方案1:員工表中,存在一個部門ID,用於關聯到部門表中對應的資料。(個人傾向)

方案2:建立第三張表,部門員工表,裡面只有兩個欄位,一個是員工ID,一個是部門ID,用於記錄員工與部門之間的關聯。(客戶傾向)

不知道方案1和方案2的優劣如何?到底要如何設計表關聯方式?

兩種方法都可以表達員工和部門的關係。

1、方案一,在資料關係上,僅僅是一對多

2、方案二,在資料關係上,其實是多對多。相容了一對多的情況。

可以粗略理解為:多對多的情況下一定選擇關係表形式,一對多的關係根據實際業務選擇。(可忽略)

因此,方案二的擴充套件性顯然要更好,這裡不能用正規化或者反正規化來下結論。因為部門和員工之間的關係,可能以後真的就成了多對多。何況還有程式中的資料操作也表達了資料關係,因此僅僅通過資料表的結構,不能簡單的得到反正規化的結論。

再更進一步,在考慮到效能時,有時反正規化也是需要的。比如員工部門表獨立出來,可以進行表快取,甚至進一步載入到快取資料庫中。這樣員工登入時,系統可快速根據部門情況決定其許可權。如果員工表非常大,每次都要進行關聯查詢無疑是增加了資料庫的壓力。這是常見的空間換時間的打法。

參考知乎文章 :https://www.zhihu.com/question/314207532

一個小小後端的爬行痕跡