设计数据库以管理各种产品(如亚马逊)时遇到的问题

Posted

技术标签:

【中文标题】设计数据库以管理各种产品(如亚马逊)时遇到的问题【英文标题】:Problems while designing a database to manage all kind of products like Amazon 【发布时间】:2011-05-16 17:09:01 【问题描述】:

首先抱歉我的英语不好,呵呵,我需要一些帮助,我想为一个网站设计一个数据库,比如迷你亚马逊。该数据库将管理各种产品(电视、汽车、电脑、书籍、电子游戏、铅笔、桌子、裤子......),而且,每个产品都必须有一些属性(将被索引),例如,如果产品是一本书,属性将类似于流派、年份、作者。如果产品是电视,属性将是尺寸、颜色和年份。如果产品是汽车,属性将是年份、颜色、型号等。所以,这是我的想法:

    一张桌子用于管理部门(如电子、图书...) 一个表来管理部门的类别,这个表将是前一个表的子表。如果部门是电子,这里是音频、电视和视频、游戏......(每个类别属于一个部门,关系是一个部门对多个类别) 一张表管理产品(每个产品属于一个类别,关系是一个类别对多个产品) 一个表格来管理属性(如年份、颜色、流派、型号...) 一个表用于关联产品的属性,该表将被称为 ProductProperties

我不确定这是否是最好的方法,数据库会很大,我将在 mysql 上开发数据库。但是,我认为这不是最好的方式,这篇文章讲的是“数据库抽象:聚合和泛化”http://cs-exhibitions.uni-klu.ac.at/index.php?id=433,换句话说就是泛型对象(我认为),但这种方式已经过时了(70 年代)。在这篇文章http://www.simple-talk.com/sql/database-administration/ten-common-database-design-mistakes/ 在“一个表保存所有域值”部分中说这是错误的方式......我说这一切是因为表 ProductProperties,我不知道我是否制作了这张表为每种产品制作特定的表格。

你有什么建议吗?还是你有更好的主意?

提前谢谢,保重!!!

【问题讨论】:

【参考方案1】:

1.一张桌子来管理部门(如电子、书籍……) 2.一个表来管理部门的类别,这个表将是一个 前一个的孩子。如果 部门是电子的,这里会 是音频、电视和视频、游戏......(每个 类别属于一个部门, 关系是一个部门 很多类别)

为什么?一张表,分类,形成层次。更灵活。

3.一个表管理产品(每个产品属于一个类别, 关系是一类 很多产品)

为什么?在此处允许 m:n。多品类的产品。

我不确定这是否是最好的方法, 数据库会很大

啊——不。对不起。不平凡,是的。休?不。只是为了让您了解休-我有一个数据库,我每天将 12 亿行添加到特定表中。一般。这很大。你最终得到什么 - 100.000 件?甚至不值得一提。

【讨论】:

【参考方案2】:

Pablo89,你想要的描述与 AdventureWorks 数据库的 SQL Server 所做的非常接近。从 Web 应用程序到向 BI 报告,有很多使用 AdventureWorks on the Web 的示例。

下载并安装 SQL Server Express 2008 R2。下载并安装上述产品的示例数据库。检查 AdventureWorks 的数据库设计。

在您可能发布的问题中使用 AdventureWorks 作为示例。

我使用 AdventureWorks,因为我使用 SQL Server。我并不是说它比其他数据库产品更好我这样说是因为我知道 AdventureWorks。

【讨论】:

【参考方案3】:

我不认为某些数据库可以快速处理 500,000,000 个项目。 amazon.com 的完整产品类别树包含 51,000 个节点 (amazoncategories.info)。此外,数据每小时更新一次,因此保存的产品信息可能不正确。我认为最好的方法是存储类别树,只在运行时使用亚马逊的 API 获取产品数据。

【讨论】:

以上是关于设计数据库以管理各种产品(如亚马逊)时遇到的问题的主要内容,如果未能解决你的问题,请参考以下文章

系统设计 - 亚马逊产品结帐流程

在亚马逊附属产品 API 中出现问题以从亚马逊获取产品

亚马逊产品广告 API - 商品无法访问

如何为 iOS 实现亚马逊的产品广告 API?

第三组冲刺会议 2017.7.27

企业业务产品上云设计