mysql 产品和变体数据库架构

mysql products and variants database schema

我正在解决问题,如何在数据库中存储产品及其变体。 我当前的系统如下所示:

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 行...

现在,我仔细考虑了一下,我有了这个想法: 将主要产品和变体存储到单独的 table 中。然后,我需要编辑映射 tables - 我可以在那里添加列,我将在其中指定 id_product 是来自产品变体 table 还是来自主要产品 table秒。或者我需要创建其他映射 tables - 在一个映射 table 中,我将存储主要产品的参数,在第二个映射中,我将存储产品变体的参数...

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

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

如果将几个概念合并为一个table,通常不是一个好主意。如果您有 n 个产品和 m 个变体,那么只要您打算仅按产品过滤,您的查询就必须处理 n * m 条记录。如果它们是分开的,那么这种查询将只从 n 条记录中搜索。此外,如果您将变体存储在描述中,那么在名称更改的情况下,您将必须更新描述。阅读正规形式,它们将对您有很大帮助。