具有可变标题数量的表的Mysql表结构

时间:2017-09-23 13:23:25

标签: php mysql

我有需要存储在数据库中的产品的大小图表。现在它们是普通的表格,其标题如下:大小胸围臀部等。标题并非所有表格都常见。有一个强制性标题 - 大小。其他人是可以改变的,他们没有静态计数。可能有4或6个。我看到在DB中存储这些表的两种变体。首先,我们不要使用表格,而是这样的数组:

[
    [
        'Size' => 'l'
        'Bust' => 1,
        'Hips' => 2
    ]
    [
        'Size' => 'm'
        'Bust' => 3,
        'Hips' => 4
    ]
]

第一个变种。表格结构:iddatadata存储序列化数组。

第二个变种。表格结构idtable_idsizebusthipswaist等。我包括waist,因为正如我所说的标题不是statid并且是可变的。一张桌子可以拥有它,另一张桌子没有。我的情况waist将是null

那么表格结构还有其他变种吗?哪个最好?

1 个答案:

答案 0 :(得分:1)

你应该创建三个表:

表1 - 选项

id int(11),
option_name varchar(255), // eg. size, waist, hips
PRIMARY_KEY(id)

表2 - 产品

id int(11),
name varchar(255),
...
PRIMARY_KEY(id)

表3 - product_options

product_id int(11),
option_id int(11),
option_value varchar(255) // eg. large, 36D, 4

如果您想稍后检索数据,这将为您提供最大的灵活性。您可以使用以下命令检索给定产品的所有可用选项:

SELECT o.option_name, po.option_value FROM options o INNER JOIN product_options po ON o.id = po.option_id WHERE po.product_id = $productId