mysql产品和变体数据库模式

时间:2015-01-24 15:08:58

标签: php mysql variants

我正在解决问题,如何在数据库中存储其变体的产品。 我目前的系统看起来像这样:

PARAMETERS - id_parameter (some parameter value - i.e. size XXL),...
PRODUCTS_PARAMTERS - id_product, id_paramter
CATEGORIES - id_category,...
PRODUCTS_CATEGORIES - id_product, id_category
FILES - id_file,...
PRODUCTS _FILES - id_file, id_product
PRODUCTS - id_product, description, price, vat, is_variant (1 or 0, if 1, product is variant), main_product(id is variant, here is stored main products id)

在这个系统中,如果产品不是变体,它将不会只填充价格。这个系统有优点,我不需要在代码和函数中进行如此多的编辑......我认为缺点是大小。因为会有很多或者行 - 主要产品和变体,所以查询需要检查,即10 000行......

现在,我正在思考它,我有这个想法: 将主要产品和变体存储到单独的表中。然后,我将需要编辑映射表 - 我可以添加列,我将指定,如果id_product来自产品变量表或主要产​​品表。或者我需要创建其他maping表 - 在一个maping表中我将存储主要产品的参数,在第二个我将存储产品变体的参数...

您如何看待这两种解决方案?哪一个会更好?对我来说最重要的是速度 - 特别是在过滤产品时......

感谢您的意见或想法,如何制作。

1 个答案:

答案 0 :(得分:1)

如果将几个概念合并到一个表中,通常不是一个好主意。如果您有n个产品和m个变体,那么每当您打算仅按产品过滤时,您的查询将必须处理n * m个记录。如果它们是分开的,那么这种查询将仅从n个记录中搜索。此外,如果您将变体存储在说明中,那么在名称更改的情况下,您将不得不更新说明。阅读正常表格,它们将对您有很大帮助。