0

我被要求为站点管理员提供在数据库表中创建属性的可能性。网站上有卖家和买家,每个卖家在添加某个产品时,填写具体产品的必填字段,然后发布该产品。我对这将如何工作感到有些困惑。如果每个产品都有特定的字段,那么这是否意味着如果网站有 2.000 个产品,我将有 2.000 个表?我从来没有做过这样的事情,所以我真的不知道如何处理这个问题。此外,在管理功能上创建属性。假设产品是番茄。管理员为西红柿添加了称为“条件”的字段,它具有“冷冻”和“新鲜”等选项。然后,当一些卖家试图创造番茄产品时,他们需要选择番茄的状态是新鲜的还是冷冻的。我想到了一个可能的解决方案,例如创建一个保存 .

product_tomato (product_id, user_id, name, description, condition)

产品选择(选择 ID,产品 ID,选择文本)

product_option(option_id,select_id,option_text)

所以,这就是我想象的表格如何做到这一点。因此,当管理员向产品表添加字段时,我将在产品表中添加一列,然后在 prodcut_select 表中创建新行,然后在 product_option 表中列出可能的选项。但是后来我对如何在产品页面上显示它感到困惑。当我不知道管理员创建的列的名称是什么时,我将如何在代码中处理它?

4

2 回答 2

4

这个问题的措辞非常令人困惑,但我相信我明白你在说什么。

不,你不会为每一种产品都制作一张桌子,这很快就会变得很荒谬。对于具有三个表的多个产品,您可以轻松处理此问题。

Tables:

Product
Product_Attributes
Seller_Product

让我们以您假设的带有条件的番茄为例。

管理员决定他的网站现在将提供西红柿作为产品。他创建了一个产品,并将其添加到产品表中。然后,他决定西红柿应该有一个“条件”属性,它有两个可能的值,新鲜的和冷冻的。因此,他将向 Product_Attributes 表添加两行,其中包含三个字段(产品、条件、值)。

因此,您的表格现在看起来像这样。

Product Table:

*Name |*
Tomato

Product_Attribute Table:

*Product | Attribute | Value*
Tomato | Condition | Fresh
Tomato | Condition | Frozen

最后,当您的卖家将商品添加到站点商店或其他任何东西时,您会让他们将数据输入到一个表单中,该表单从该产品的 Product_Attribute 表中获取条件和潜在值。在这种情况下,只有一个属性,所以他们只需填写条件。假设有两个卖家 Jim 和 Tom,他们分别销售新鲜和冷冻的西红柿。最后三张桌子看起来像这样。

Product Table:

*Name |*
Tomato

Product_Attribute Table:

*Product | Attribute | Value*
Tomato | Condition | Fresh
Tomato | Condition | Frozen

Seller Product Table:

*Seller | Product| Attribute | Value*
Jim | Tomato | Condition | Fresh
Tom | Tomato | Condition | Frozen

这样,您可以使用三个表存储有关产品的各种自定义字段。您应该根据需要进行规范化或非规范化,您可能需要一个仅用于卖方产品的表并将它们的条件存储在单独的表中。无论哪种方式,上述方法都可以完成工作。

于 2012-04-23T02:47:39.610 回答
1

我相信这是一个很好的方案:

product_data - 产品 ID、类别 ID、名称、价格、描述

product_meta - 产品 ID、attribute_name、attribute_value

product_variants - 产品 ID、变体 ID、变体值

您还想为变体名称和类别名称/描述提供单独的表格。

例子:

ID  | Category_ID | Name   | Price
251 | 14          | Tomato | 5.00

ID  | Attribute | Value
251 | Condition | Fresh
251 | Color     | Red

ID  | Variant_ID | Name | Value
251 | 50         | Size | Small
251 | 50         | Size | Huge

所以基本上你会有大约 5-10 个表(谷歌数据库规范化的 3 个步骤)。所有表都通过 ID 链接在一起。

您需要做的所有事情 - 使用JOIN语句和WHERE product_id条件检索值。

于 2012-04-23T02:53:41.620 回答