我想了解數據庫規範化,特別是3NF。試圖瞭解數據庫規範化 - 3NF
我正在建立一個商店數據庫,並試圖歸一化到3NF已經拿出了下面的結構。
結構如下假設
- 有可能是每個產品多個類別
- 有每個產品只有永遠一個storage_location &製造商
- 有可能是無限的extra_fields
任何人可以告訴我,如果我在正確的軌道上,3NF中的下面的結構,還是關閉?
Products
----------------
pid (pk)
title
desc
price
weight_base
weight_additional
note
quantity
manufacturer_id (fk)
storage_location_id (fk)
Categories
-----------------
category_id (pk)
category_name
parent_id
description
Product_categories
-----------------
pid (pk)
category_id (pk)
Manufacturers
-------------------
manufacturer_id (pk)
name
description
Storage_locations
---------------------
storage_location_id (pk)
storage_ref
storage_note
Product_extra_field_values
-----------------------------------
PID (pk)
extra_id (fk)
value
Product_extra_fields
--------------------------------
extra_id (pk)
label
兩件事我不確定:
是否正確使用複合鍵Product_categories以適應在表中的多個相同的PID?
將外鍵簡單添加到製造商和storage_location的主要Products表中是否正確,因爲它們只會在每個產品記錄中出現一次?還是應該具體的製造商和storage_location ID從初級產品表,新表中刪除是這樣產生:
使用三個表Product_storage_locations ---------------------------------- PID (pk) storage_location_id (pk)
感謝您的答案 - 我想使用extra_field動態添加額外的可選產品數據,如條件(新的或使用)。然而,考慮到Product_extra_field_values在上述示例(即'new'或'used')的情況下會充滿相同的值,因此可能最好創建第三個extra_field表,例如'Product_extra_field_value_options',其值爲value_option_id和value_option_value然後在Product_extra_field_values表中代替'value'具有value_option_id – someuser