gpt4 book ai didi

mysql - MYSQL(innoDB)中产品特性的电子商务数据库结构

转载 作者:搜寻专家 更新时间:2023-10-30 23:05:49 24 4
gpt4 key购买 nike

我需要知道哪种数据库模型的性能更好。

第一个数据库模型

三个表。功能、产品、功能值。

特征表是

+----+-----------+
| id | name |
+----+-----------+
| 1 | Brand |
| 2 | Color |
| 3 | Dimension |
| 4 | Model |
+----+-----------+

和特征值表

+----+---------+------------+
| id | name | feature_id |
+----+---------+------------+
| 1 | Sony | 1 |
| 2 | Samsung | 1 |
| 3 | Red | 2 |
| 4 | Blue | 2 |
| 5 | 20 " | 3 |
| 6 | 30 " | 3 |
| 7 | Model A | 4 |
| 8 | Model B | 4 |
+----+---------+------------+

和产品表。

+----+--------------------+----------+
| id | product_name | features |
+----+--------------------+----------+
| 1 | Sony Television | 1-3-5-7 |
| 2 | Samsung Television | 2-4-6-8 |
+----+--------------------+----------+

如您在此结构中所见,如果用户想要根据功能搜索产品,我需要在查询中使用 REGEXP 或全文搜索。

第二个数据库模型

在第二个数据库模型中,我将从产品表中删除特性并添加名为 product_features 的新表。

+----+--------------------+
| id | product_name |
+----+--------------------+
| 1 | Sony Television |
| 2 | Samsung Television |
+----+--------------------+

和新表 product_features;

+----+------------+------------+
| id | feature_id | product_id |
+----+------------+------------+
| 1 | 1 | 1 |
| 2 | 3 | 1 |
| 3 | 5 | 1 |
| 4 | 7 | 1 |
| 5 | 2 | 2 |
| 6 | 4 | 2 |
| 7 | 6 | 2 |
| 8 | 8 | 2 |
+----+------------+------------+

现在如果用户想根据功能搜索产品,我需要搜索 product_features 然后加入产品。

问题

我的问题是如果我使用第二个模型并且我在产品表中有超过 200 亿行,并且认为每个产品至少有 10 个特征,那么 product_features 表将有超过 2000 亿行。也许根据特征查询会很慢。

如果我使用第一个模型,当用户根据特征搜索时,我必须在 200 亿行中使用全文搜索或 REGEXP 进行查询。

我不知道哪种方式更好?你有什么建议?

最佳答案

第一个模型

它甚至不是 1NF 形式,因为它在 features 属性中具有非原子值。此外,在产品表中添加、更新或删除任何新功能真的很困难。所以根本不可行。

第二个模型

它被规范化到 5NF 并且看起来不错,用于优化搜索使用子查询并在 product_id 和 feature_id 上使用索引。尽量避免在如此大的数据中使用 JOIN。

关于mysql - MYSQL(innoDB)中产品特性的电子商务数据库结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26668467/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com