【问题标题】:Product ID that has Two different category IDs in a catalog database在目录数据库中具有两个不同类别 ID 的产品 ID
【发布时间】:2015-05-22 21:25:25
【问题描述】:

在产品目录中,是否可以有一个产品属于两个不同类别但只有一个产品 ID?即使product_ID是product表的主键,category_ID是category表的主键?

例如,假设层次结构是这样的:

Department (i.e. Sweaters)  
Category (i.e. Men's - cat 1, Women's - cat 2, children's - cat 3)
product_ID  (i.e. unisex sweater)

并且您希望相同的毛衣产品同时属于男士毛衣和女士毛衣。

所以这是我无法弄清楚的部分。 您是否必须将毛衣产品 TWICE 存储在 Product 表中,每个都有不同的 product_ID,以便它可以属于两个不同的类别?如果是这样,那么它似乎是一个查询,例如:

SELECT 
  product_id, 
  prod_name, 
  prod_description 
from 
  PRODUCTS 
where 
  department_id = 1 
  and category_id IN (1, 2);

会在返回的列表中显示毛衣(以及部门 1 和类别 1 和 2 中的所有其他内容),但它会在列表中显示两次 - 两个类别 ID 各显示一次 - 对吗?我知道必须有可能做到这一点,但我就是不知道怎么做。

谁能告诉我如何在产品数据库中拥有属于两个不同类别的单个产品?

【问题讨论】:

    标签: mysql sql database


    【解决方案1】:

    您不想多次存储产品信息,因此您需要有一个单独的表,该表与产品表和类别表相关。因此,如果产品 #154 属于类别 #4 和 #5,您的表格将包含:

    Product     Category
    154          4
    154          5
    

    然后,当您拉取一个类别中的所有项目时,您将产品表连接到此表以获取该类别中的所有产品。

    因此,如果这个新表被命名为 ProductCategories,那么您用于提取某个类别(在本例中为 2)的产品的查询将如下所示:

    Select
      * 
    from 
      Products as p
      INNER JOIN ProductCategories as con p.ProductId = c.productid
    where 
      c.categoryid = 2
    

    如果您正在构建生产数据库,则需要先研究一些关系数据库概念,然后再走得更远。如果这做错了,将会使某人(无论是您还是接替您的人)的生活变得悲惨。

    【讨论】:

    • 你的回答很有道理。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-20
    • 1970-01-01
    • 1970-01-01
    • 2017-01-10
    • 2017-05-26
    • 2017-03-02
    • 1970-01-01
    相关资源
    最近更新 更多