【问题标题】:Need guidance for Ecommerce Database design for multilevel categories多级类别的电子商务数据库设计需要指导
【发布时间】:2020-10-03 04:23:30
【问题描述】:

我正在为我的实践和使用 MySQL DB 构建一个基本的电子商务网站。我已经设计了它的一些部分。对于类别表,我设计了多达 3 个级别,例如 Category、subCategory1、subcategory2、subCategory3。 一般来说,它的外观如下所示。

 - Tv
   - Smart Tv
     - Samsuns Smart Tv s45
     - Samsung Smart Tv k7x
   - 3D Tv
     - some product
 - Laptops
   - Intel Core 7
      - Some product
   - Inter Core 5
      - Some product

现在我的困惑是,如果有人希望所有产品都应在 Tv 表下列出。表示所有智能电视、3D 电视产品都应在此处列出。但我无法弄清楚它的数据库设计。

我的数据库设计只能向他显示所有产品或最后一级(智能电视或 3D 电视或英特尔酷睿 7 或英特尔酷睿 5) 类别产品,而不是我上面提到的中级产品.

Laptops -> Intel Core 7 -> Some product

我是否需要为此添加标签/slug,或者有另一种设计的好方法。

【问题讨论】:

  • 考虑电视将智能电视和 3D 电视的可能性。

标签: mysql database database-design database-normalization


【解决方案1】:

我找到了两种方法来做到这一点 -

  1. 简单的方法 - 在产品表中创建列,例如“category, subCategory1, subCategory2, subCategory3...”

  2. 我们需要创建 4 个表,category、subCategory1、subCategory2、subCategory3 和最后一个表,其中包含此完整外键中列出的所有产品。

Category 表将是 subCategory1 中的外键,subCategory1 将是 subCategory2 中的外键,subCategory2 将是 subCategory3 表中的外键,最后一个表将具有指向 subCategory3 表的外键。

【讨论】:

    【解决方案2】:

    您可以使用两种方式:

    第一种方法:

    您只需要一列来管理高达nth level 的类别和子类别

    id
    name
    parent_id
    

    默认情况下,主类别的 parent_id 将为 0,然后 parent_id 将取自父类别的 id。

    你可以参考这个链接categories & sub_categories来了解如何在mysql中使用parent_id并获取所有可能的结果。

    第二种方法:

    • 使用 columns id, name ... 创建一个表 products,其中将包含 TV、Smart TV、Samsuns Smart Tv s45 等。
    • 使用columns id, product_id, parent_id 创建另一个表product_categories。使用此方法,您可以轻松管理产品和类别。此外,对于同一产品属于多个类别的情况,您可以轻松处理而无需冗余。

    【讨论】:

      猜你喜欢
      • 2014-07-29
      • 2018-09-03
      • 1970-01-01
      • 2013-10-27
      • 2015-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多