【问题标题】:How to associate sub-category to a field in database?如何将子类别与数据库中的字段相关联?
【发布时间】:2014-06-09 13:20:59
【问题描述】:

我正在创建一个 MySQL 数据库。我有一个名为产品名称的列。该产品有一个主要类别。但是,它可以属于 n 个子类别。我需要将这些子类别映射到该产品。我该怎么做?

表 1 - Product Info
列 - IDNameMainCategorySubCategory (Not Sure Exactly)

表 2 - MainCategory
列 - IDName

表 3 - SubCategory
列 - IDName

Table1 与 Table2 具有一对一的关系。 如何将 Table1 映射到 Table3?我做错了吗?

想法:我想以这样的方式来做,这样每当我点击网站上的任何子类别名称时,我都会得到该类别下所有产品的列表。就像在线商店网站中发生的一样。

示例:产品外置硬盘将归于计算机配件。但我想给它子类别,如 offer_running500GBSomeCompanyNameblack 等。

希望我能解释我的问题。请帮助我设计数据库。我已经掌握了 DBMS 的所有基础知识,但我不知道如何涉及关键字并将它们存储和映射到数据库中。

【问题讨论】:

    标签: mysql database mapping e-commerce keyword


    【解决方案1】:

    下面的结构怎么样:

    表 1 - Product Info
    列 - IDNameMain_Category_ID

    表 2 - Category
    列 - IDName

    表 3 - Product_Category
    列 - IDProduct_IDCategory_IDName

    然后你可以使用下面的查询来获取所有的信息:

    SELECT p.*, c.Name 
    FROM [Product Info] p
    INNER JOIN Product_Category pc ON p.ID = pc.Product_ID
    INNER JOIN Category c ON pc.Category_ID = c.ID
    

    请注意,在Product Info 表中,我添加了一个Main_Category_ID 字段。如果您确实需要确定主要类别,那么这将起作用:

    SELECT p.ID, p.Name, NULL AS MainCat, c.Name AS SubCat
    FROM [Product Info] p
    INNER JOIN Product_Category pc ON p.ID = pc.Product_ID
    INNER JOIN Category c ON pc.Category_ID = c.ID
    UNION 
    SELECT p.ID, p.Name, c.Name AS MainCat, NULL AS SubCat
    FROM [Product Info] p
    INNER JOIN Category c ON p.Main_Category_ID = c.ID
    

    【讨论】:

      【解决方案2】:

      首先,如果表 1 和表 2 是 1-1 的关系,则不需要两个单独的表。这将使查询处理速度更快,并且无需额外的连接。

      您能否澄清表 3 中的 ID 列指的是什么?这是表 3 的唯一 ID 还是表 1 的 ID?

      如果是前者,那么您需要将表 1 的 ID 列作为表 3 中的外键。这样可以解决您的问题。

      希望对您有所帮助。

      【讨论】:

        猜你喜欢
        • 2012-10-04
        • 1970-01-01
        • 2010-11-13
        • 2020-01-25
        • 2020-02-02
        • 2021-03-27
        • 1970-01-01
        • 2014-09-11
        • 1970-01-01
        相关资源
        最近更新 更多