【问题标题】:MySql, Optional Categories, Sub Categories and Sub Sub Categories for productsMySql、产品的可选类别、子类别和子子类别
【发布时间】:2013-03-08 14:06:14
【问题描述】:

假设数据库有一个成员表。在每个成员添加他们可以创建的产品和他们自己的类别之前,然后是一个子类别,甚至是一个子子类别。他们添加的产品可能只属于一个类别,但另一个可能属于子子类别。我正在尝试考虑最有效的方法。我知道下面的示例可能不正确,但希望能解释我的想法。

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

【问题讨论】:

    标签: mysql database


    【解决方案1】:

    首先,产品应该只有一个“categoryID”列,没有子项。

    如果产品可以同时属于多个类别,最好将其放在具有“productID”和“columnID”列的单独表“products2categies”中。

    其次,在数据库中实现树形结构有不同的方法。我会给你最简单的。 在“categories”表中创建这个结构:“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
    

    【讨论】:

    • 因此,在类别表中,如果我有一个 id 为 1 的 Wine 条目,则再创建两个类别,例如红色和白色....它们的父 ID 都是 1。另外,因为该表将被许多成员使用,所以列将是 CatID MemberID Name ParentID。
    • 不太确定如何编码以添加和获取数据。我想如果您想为用户提供顶级父类别,那么您将拉出所有父 ID 为 0 的类别,然后找到子猫找到在 ParentID 中具有 CatID 的字段......听起来是不是对?很抱歉继续……但这意味着所有的猫,子猫……子子猫……都在一张桌子上。
    • 完全在一个表中,产品表中的类别为一列 :) 您在之前的评论中关于在类别表中添加 memberID 的说法是正确的。
    • 感谢您抽出宝贵时间 Yasen,您的帮助很大
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-04
    • 2013-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多