多产品规格索引的电子商务网站数据库设计

Zer*_*ity 5 database-design

我正在设计一个用于在线购物的网站,我有一个与此相关的问题。如您所知,购物网站可能有不同统计/规格的不同产品。设计数据库的最佳方法是什么?以下是我想到的想法

  1. 为不同的产品类型创建不同的表。前任。电话、电视、电子游戏、手表、衣服、电脑等。

忧虑:

但是让我们说 a 来显示移动规范 [就像这样例子] 我需要大约 40-50 列来存储移动规范。假设明天一个新功能出现在移动设备上,那么我可能不得不再添加一列,该列将保存该特定模型的值,而对于其他所有移动设备,该列将为 NULL。

2:有主要产品表,例如。电子、服装及配饰、健康等。每张表都有单独的规格表。前任。Electronics 表将包含平板电脑、手机、固定线路等的主要详细信息,Electronics_Spec 将包含具有相关规范的列。

忧虑:

产品之间有许多与其他产品不匹配的特性。前任。固定电话将有关于电线长度的规范,而平板电脑则没有。

一般问题:

有些产品的规格相当少。例如:床、玩具、鞋类。

有没有其他更好的方法来设计一个数据库来保存与多个产品相关的大量规范?

我的意图是将数据库空间保存到最好。我真诚地为我糟糕的英语道歉。

Fru*_*ner 12

你可以有一个基本的产品表,然后还有一个表来存储不同类型的规格,然后另一个表来存储规格本身:

产品
--------
  ID
  姓名
  (其他一些必要的字段)

product_spec_types
------------------
  ID
  姓名

product_spec_values
-------------------
  ID
  product_id(FK 到 product.id)
  spec_id(FK 到 product_spec_types.id)
  价值

因此,您可以拥有如下所示的数据:

产品
身份证 | 姓名
----|------------
1 | 电视
2 | 童靴

product_spec_types
身份证 | 姓名
------------------
1 | 刷新率
2 | 尺寸(对角线)
3 | 鞋号
4 | 颜色

product_spec_values
身份证 | 产品编号 | 规格_ID | 价值
-------------------------------------
1 | 1 | 1 | 60赫兹
2 | 1 | 2 | 32英寸
3 | 2 | 3 | 4
4 | 2 | 4 | 蓝色配灰色

这是实体-属性-值模式的一个非常简单的实现。如果需要,您可以更进一步,并添加数据类型限制(例如数字、字母数字、枚举等...)product_spec_types

这种方法的主要好处是它非常灵活。

这种方法的缺点是搜索并不总是很快,因为所有产品的所有属性都在一个表中。有时最好创建单独的表,您的用户的搜索将从中运行,这些表将具有您希望他们能够搜索的所有属性的真实列。