2016-08-18 42 views
0

我有一個列表產品其中每個可以屬於產品類別建模「多對一」關係時,如何處理不屬於「一方」記錄的「多」方記錄?

我可以讓兩個表:

product(id, product_name, category_id); 
category(id, category_name); 

有些產品還沒有定義的類別或者不屬於任何定義的類別。我該如何處理?

我可以使空值爲category_id,或者可以使空值爲category_name,或者兩者兼有。或者我可以創建一個「not_yet_assigned」值作爲category_name的一部分。

有沒有很好的解決方案呢?

+2

我會創建一個名爲uncategorized的類別。 – Peter

+0

或只是允許NULL爲category_id? – Naruto

+0

@Naruto,那是我的困境。我可以NULL'category_id',但然後...爲什麼不創建一個NULL類別,並保持'category_id'不可爲空...然後我卡住 – Dennis

回答

1

使Product.Category_id nullable將強制使用outer joins查看您的所有產品與他們的Category.Category_Name,所以我會避免這一點,我會創建一個名爲未分類或類似的類別。
或者也許一個未分類(這將是默認值)和一個其他對於那些不屬於任何其他類別的產品。

0

基本上,我想回答你的問題在於要區分與否的兩種情況之間的事實:

  1. 的產品屬於雜項類別,或
  2. 該產品具有尚未分類。

如果區別是應用程序顯著,比我的建議是建立一個類別「Miscellaneaous」(或類似),並指定其id爲外鍵第一套產品,並留下空的產品仍然必須進行分類。

如果區別並不重要,您可以將類別留空或定義一個「空」類別,我認爲這兩種方法之間沒有太大的區別。

相關問題