使用MySql数据库存储特定产品属性的正确方法

时间:2018-08-12 08:41:26

标签: mysql laravel database-design entity-attribute-value

我知道问这样的问题可能很奇怪,但我很高兴听到您对此案的编辑和建议。

比方说,我有一个名为产品和属性的表,其中诸如color,size,volume和...之类的内容存储在属性表中。 我很难存储产品的属性,例如T恤,它具有蓝色,绿色和大大小小。

我已经尝试过的方法是在产品表中使用JSON,如下所示:

{color : 'red' , size : 'large' , available : 1} , {color : 'red' , size : 'small' , available : 0 } , {color :blue : size : Medium , available : 1},...

但这看起来不太好,因为属性将具有很多属性,并且JSON变得太大 任何建议都将受到欢迎

P.S。我正在使用laravel开发我的应用程序。

2 个答案:

答案 0 :(得分:0)

JSON不会变得“太大”。

具有一个包含 some 字段作为常规列的表,以及所有其他杂项的JSON字段。

可以使用常规列来简化搜索。根据典型搜索选择哪些列。使用MySQL来搜索它们,然后使用JSON测试(如果您有足够新的MySQL,或者使用客户端代码来深入研究JSON来完成过滤。

您的样本JSON代表3种不同的产品,而不是一种。作为一个单独的步骤(可能还有另一个表格),您可以将这3个“产品”归类为“ T恤”。显然,Tshirt(等等)将在其自己的列中,而不必在JSON中。

More

答案 1 :(得分:-2)

您需要处理数据库关系才能完成此任务。

  1. 创建一个“大小”

    | id |名称||
    + ---- + ----------- +
    | 1 |大||
    | 2 |小||
    | 3 |中等||

  2. 创建一个表格“颜色”

    | id |名称||
    + ---- + ---------- +
    | 1 |红色||
    | 2 |绿色||
    | 3 |蓝色||

  3. 创建一个“产品”

    | id ||名称||
    + ---- + ------------ +
    | 1 | T恤||
    | 2 |裤子||
    | 3 |夹克||

  4. 最终创建“库存”

    | id | size_id | color_id | product_id |数量|
    + ---- + --------- + ----------- + ------------- ++ -------- + < br /> | 1 | 1 | 1 | 1 | 100 | (大号红色T恤-100件)
    | 1 | 3 | 2 | 2 | 200 | (绿色中裤-200 pc)
    | 1 | 2 | 3 | 3 | 150 | (小蓝夹克-150件)