包含许多产品类别的电子商务网站的数据库设计

时间:2017-06-02 11:20:24

标签: mysql database database-design architecture

我需要为电子商务应用设计数据库,该应用具有范围广泛的产品类别,从引脚到平面。所有产品都有不同的功能。例如,移动电话具有诸如存储器,相机百万像素,屏幕尺寸等特定功能,而房屋具有地面大小,楼层和房间的数量,车库大小等。这些特定的特征继续和我们一样多。产品。惠斯特都有一些共同的特征,大多数都是非常不同和具体的特征。因此,在设计数据库时,它有点混乱。我是第一次这样做。

我的查询是关于数据库设计。以下是我打算做的事情:

  1. 创建一个包含所有字段的主表,用于指示字段是公共字段还是特定字段,并将它们映射到产品的相应类别。所有产品都有#34;普通"但是"具体"将只显示一个类别。
  2. 表:ALL_COLUMNS

    列: ID, 名称, 类型(普通或特定), 类别(手机,汽车,笔记本电脑等)

    1. 从all_columns表中获取相应的字段,同时显示前面的字段。

    2. 将用户数据与映射字段一起存储在另一个表中

    3. 表:ALL_USER_DATA

      列: ID, ColumnID的, 价值

      我不知道什么是正确的方式以及如何使用已建立的应用和网站完成。所以,我很期待有人能说出这是一种电子商务应用程序的数据库架构的正确方式,它具有高度全面和稀疏的类别和功能。

      谢谢大家。

1 个答案:

答案 0 :(得分:0)

这个问题有很多可能的答案 - 请参阅"相关"与此问题并列的问题。

ALL_USER_DATA表的设计通常称为"实体/属性/值" (EAV)。它被广泛认为是可怕的(搜索SO为什么) - 它在理论上是灵活的,但想象一下发现波音制造的飞机,翼展至少20米,适合飞行员一个新的资格" - 你的查询变得几乎无法理解。

另一种方法是创建一个可以存储多态数据类型的模式 - 再次查看Stack Overflow,看看它是如何工作的。

简单的答案是,关系模型并不适合这种情况 - 您不希望为商店使用的每种新产品类型进行架构更改,并且您不希望拥有数百个不同的表/列。

我的建议是在SQL中存储核心,公共信息和所有关系,并将扩展信息存储为XML或JSON。 MySQL非常擅长查询JSON,它是一种原生数据类型。

您的数据模型如下:

Categories
---------
category_id
parent_category_id
name

Products
--------
product_id
price
valid_for_sale
added_date
extended_properties (JSON/XML)

Category_products
-----------------
category_id
product_id
相关问题