產品屬性資料庫設計_如何設計Product Table可存在多種顏色跟尺寸或不同材質?

通常產品對應不同顏色我們習慣設計

將顏色資訊與產品資訊分開存儲,避免了重複儲存顏色描述。
分割成兩個表格,每個表格負責一個特定的資料實體,使得資料庫的維護更加容易。





第二種表格架構中,Product 表格依然負責儲存產品的基本資訊,但不再直接包含顏色資訊。
第二種表格架構需要額外的Product_entry 表格來關聯產品與顏色,產品的顏色資訊儲存在 Product_entry 表格,它關聯了 Product 表格和 Color 表格的外鍵,通過 product_id 關聯到 Product 表格的產品識別碼,ColorId 關聯到 Color 表格的顏色識別碼。
Color 表格獨立存儲顏色資訊,每個顏色都有一個唯一的 ColorId 作為識別碼,並有ColorDescription 來描述該顏色。
第二種表格架構允許你更靈活地處理產品和顏色之間的關聯,例如一個產品可以有多個顏色,或者一個顏色可以用於多個產品,這樣的設計更適合一對多或多對多的關聯關係。


後續延伸
可以試想一下
顏色
尺寸
材質
是既定的一個清單(選單)值域
每一個我們都可分配一個編號對應相應屬性

產品對顏色會存在多對多關係中繼表
產品對尺寸會存在多對多關係中繼表
產品對材質會存在多對多關係中繼表


多對多關係中繼表可同時保有跨兩個以上table的PK主要用於做產品對應不同規格類別的映射

為何不直接將顏色定義於產品table
主要就是因為可能你要維護此顏色
對此產品很多次
而且顏色也不適合直接類似將顏色產品規格直接定義死在產品主檔中
比方雨衣這個產品可能你直接有一個顏色



多對多關係映射中繼表(Many-to-Many)













留言

這個網誌中的熱門文章

何謂淨重(Net Weight)、皮重(Tare Weight)與毛重(Gross Weight)

Architecture(架構) 和 Framework(框架) 有何不同?_軟體設計前的事前規劃的藍圖概念

經得起原始碼資安弱點掃描的程式設計習慣培養(五)_Missing HSTS Header