2013-03-08 141 views
0

讓我們假設一個數據庫有一個成員表。在每個成員添加一個他們可以創建的產品和他們自己的類別之前,然後是一個子類別,甚至是一個子類別。他們添加的產品可能只屬於一個類別,但另一個可能屬於子類別。我試圖想到這樣做的最有效的方法。我知道下面的例子可能不正確,但希望解釋我的想法是什麼。MySql,產品的可選類別,子類別和子子類別

Member 
MemberID Name 
----------------------- 
Member_Category 
CategoryID, MemberID, CategoryName 
------------------------------------ 
Member_SubCategory 
SubCategoryID, CategoryID, SubCategoryName 
--------------------------------- 
Member_SubSubCategory 
SubSubCategoryID, SubCategoryID, SubSubCategoryName 
---------------------------- 
Product 
ProductID, MemberID, CategoryID, SubCategoryID, SubSubCategoryID, ProductName, Cost 

回答

0

首先產品應該只有一個'categoryID'列,沒有潛水艇。

如果產品可以同時處於多個類別中,那麼最好將其放在單獨的'products2categies'與'productID'和'columnID'列中。

其次,在DB中實現樹結構有不同的方法。我會爲您提供最簡單的。 在'類別'表中創建此結構:'categoryID','category_name'和'parentID'列。前兩個是自我解釋性的,第三個指向父類別。如果這是一個主類,使「的parentID」 = 0

更多關於樹結構DB看到這個What are the known ways to store a tree structure in a relational DB?

Member 
MemberID Name 
----------------------- 
Member_Category 
CategoryID, MemberID, CategoryName, ParentID 
------------------------------------ 
Product 
ProductID, MemberID, CategoryID, ProductName, Cost 
+0

所以,在類別表,如果我有酒有ID的條目爲1,然後創建了兩個類別,例如紅色和白色......他們的父母ID都是1.同樣,由於該表將被許多成員使用,所以這些列將是CatID MemberID Name ParentID。 – simmo 2013-03-08 16:47:45

+0

不太確定這將如何編碼添加和獲取數據。我想如果你想給用戶最高的父類別,那麼你會拿出所有那些父母ID爲0的,然後找到子郵件找到的字段,其具有CatID的ParentID ....是否聽起來有關對?抱歉繼續......但這就意味着所有的貓,副貓......副貓......都在一張桌子上。 – simmo 2013-03-08 16:49:27

+0

所有產品都在一個表格中,產品表格中的類別爲一列:)而且您在前面的評論中爲您在類別表中添加memberID所說的話是正確的。 – 2013-03-08 17:13:40