当前位置: 首页 > 知识库问答 >
问题:

产品和类别表。创建与引用不同类别实体的产品和类别属性的关系

太叔鸿
2023-03-14

我正在尝试创建一个电子商务网站,一个基本的阿里巴巴网站。最终目标是创建彼此不严格相关的n类产品(即鞋子和葡萄酒)。

我的主要问题是找出一种方法来处理与产品表相关的类别表/实体。

产品表将具有通用属性,而ProductCategoryEntity中的属性将特定于类别。

如何创建足够灵活的 ERD 来处理此目标?

我考虑过创建一个product_TO_productCategoryEntity表来链接产品表和 productCategoryEntity 表,当产品链接到类别时,与类别表相关的product_TO_productCategoryEntity外键属性将具有非空值,而对于与产品无关的类别,FK 将为空。

显然,在product_TO_productCategoryEntity表中,我应该列出所有n个类别表,这种模型可能导致难以维护。

我正朝着正确的方向前进吗?

请提供我最终可以学习的任何主题,模式,书籍或参考资料。

@Dan Bracuk的答案,我根据他的建议加入了一个ERD:

共有1个答案

卓雅达
2023-03-14

你提出的设计有一个严重的缺陷。每次添加新类别时,您都必须重新设计数据库。最好通过简单地添加记录来实现这一点。我建议这个设计。

表Product将有一个ProductID、名称,而没有其他内容。

表类别将具有CategoryID、名称,而没有其他内容。

表属性将有一个属性ID、类型和值。例如,类型是颜色,值是蓝色。

然后您将不得不使用表来建立多对多的关系。一个是产品和类别之间的关系,另一个是产品和属性之间的关系。

要真正规范化此设计,您可以为属性类型有一个单独的表,并在属性表中有一个外键引用。

编辑从这里开始

上面的方案将导致属性表具有如下记录:

1|colour|blue
2|colour|red
3|size|small
4|size|medium

由于重复的字符串颜色和大小,因此未归一化。要对此进行规范化,您将有一个 AttributeType 表,其中包含属性类型 Id 和类型记录字段,如下所示:

1|colour
2|size

然后,您的属性记录将变为:

1|1|blue
2|1|red
3|1|small
4|1|medium

我真的会这样做。我只是在最初的answwer上变懒了。

 类似资料:
  • 我正在开发一个电子商务网站,我使用三个表来管理产品和类别。 我需要一个或多个带有实体框架的linq查询来获得母类别列表、子类别列表和相关产品列表。 有一个类别表,如: Id NameCat ParentId 有一个products表,如: Id名称实时信息等。 有一个product-category表,如: Id categoryId productId sortOrder 这是我的viewmod

  • 我有以下实体框架的数据模型。 我有一个抽象的产品。每种产品都与一类产品相关。例如: 还有具体的产品: 我有分层类别,例如: 每个类别都有

  • 我有一个名为“产品类型”的WooCommerce产品类别,我试图列出该类别下的所有类别,但不是这些类别的子类别。例如,我有: 产品类型 碳化物米尔斯 钓鱼工具 儿童类别 我希望它列出“电石磨坊”和“打捞工具”,但不是“儿童类别”。 这是我的代码: 但它仍然返回“儿童类别”。我不知道为什么将深度限制为“1”并将“include_children”设置为“false”不能解决这个问题。

  • 因此,让我们假设我有一个MySQL DB,其中包含以下表: 产品 < li>id < li >名称 < li >类别id 类别 < li>id < li >名称 < li>parent_id 查询数据库的最佳方式是什么,以获得从某个类别id开始的所有产品。例如,如果我有一个子类别树,其中基本类别id=,我如何获得id=子类别下的所有产品,子类别的数量不确定。 我可以这样做: 但是,它仅适用于类别i

  • 在WooCommerce中,我试图使用以下代码将产品类别转换为产品属性: Is的部分工作原理与我在后端产品中需要看到的一样

  • 希望你能帮我解决这个问题。我有一个问题,一些产品在子类别404'ing当去那里的产品页面。但奇怪的是,我在谷歌上找不到的只是他们中的一些人在做这件事。 实例 SKU:产品1--类别:类别1 SKU:产品2--类别:类别2,子类别1 SKU:Product3--类别:类别2,子类别1 SKU:Product4--类别:类别2,子类别1 将显示Product1、Product2、Product4。带有