2013-04-01 43 views
2

我有三種產品類型。它會更晚。 另外我有產品類別。類別不能有多個產品類型。那麼,我應該如何保留這些類別。在DB中存儲類別和產品類型的最佳方法

id | parent_id | name 1.

我將設置產品類型爲根類別。
例如:

Electronic > computer > laptop 

電子的母公司ID爲0和明年類別將因該鏈接。

  1. id | parent_id | product_type | name

我會從產品類型和計算機的PARENT_ID拿到電子將爲0

哪種方式更好?

回答

1

對於類別:

ID | Name | Parent_ID 

(父ID是類別樹)

適合產品:

ID | Category_ID | Name | Description | Other 

假設類別樹像

Computers [ID: 1 | Parent: 0] 
|-Laptops [ID: 2 | Parent: 1] 
|-Desktop [ID: 3 | Parent: 1] 
|-Printers [ID: 4 | Parent: 1] 
| |-Brand #1 [ID: 5 | Parent: 4] 
| |-Brand #2 [ID: 6 | Parent: 4] 
|-Other stuff [ID: 7 | Parent: 1] 

然後,如果您想要顯示所有產品,例如Printers,只需執行遞歸即可獲取Printers類別及其子類別中的所有項目。

TL; DR

第一種方式是更好的

0

做你的數據庫是這樣的?

表:產品類型

id | parent_id | name 
------------------------------- 
1 | null  | Electronics 
------------------------------- 
2 | 1   | Computer 
------------------------------- 
3 | 2   | Laptop 
------------------------------- 

如果是這樣,爲什麼還需要進一步的表得到的結果? 當你需要一個新的類別時,只需添加一個新的parrent及其子類。

0

正如你所提到的,你現在已經三種,產品類型和產品類型以後可以增加,你需要的產品類型表 -

Product_type 
------------ 
1> product_type_id - Primary Key 

2> product_type_name 

現在你有類別表,這將是分級類數據,並有一個從產品類型表一對多的關係。(如你所說的類別不能有多個產品類型),那麼你的表的設計會像

Product_categories 
------------------ 

1> product_cat_id - Primary key 

2> product_type_desc 

3> parent_product_type_id (for hierarchical relationship) 

4> product_type_id - foreign key to **Product_type** table. 

你可以在這裏詳述任何進一步的要求,這樣我們就可以幫您。

感謝

0

我會建議使用一組嵌套的設計,而不是目前使用的是什麼,鄰接表的設計。

雖然它確實有效,但如果遇到性能問題,嵌套集上的單個查詢可能會產生有關該類別的更多信息,而不是鄰接列表(需要多個數據庫調用)。

我已經使用this article on hierarchical data in mysql,在過去很多應用程序,它工作得很好。

TL; DR:

鄰接表

  • 優點:易於實施
  • 缺點:需要遞歸調用數據庫,以確定在諸如深度信息和位置那個樹。

嵌套集合

  • 優點:可以產生你需要對你的數據在一個查詢
  • 缺點大多數信息:很難實現
相關問題