设计数据库以管理亚马逊等所有类型的产品时遇到的问题

时间:2010-11-27 22:56:04

标签: database database-design normalization relational-database database-normalization

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

  1. 管理部门的一张桌子(如电子产品,书籍......)
  2. 一个表管理部门的类别,这个表将是前一个孩子。如果部门是电子产品,这里将是音频,电视和视频,游戏......(每个类别属于一个部门,关系是一个部门到多个类别)
  3. 管理产品的一个表(每个产品属于一个类别,关系是许多产品的一个类别)
  4. 一个用于管理属性的表格(如年份,颜色,流派,模型......)
  5. 一个表用于使用具有属性的产品,此表将被称为ProductProperties
  6. 我不确定这是否是最好的方式,数据库将是巨大的,我将在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,我不知道我是否制作此表或如果我为每种产品制作特定的表格。

    你有什么建议吗?或者你有更好的主意吗?

    提前致谢,请小心!!!

3 个答案:

答案 0 :(得分:2)

  

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

为什么呢?一个表,类别,形成层次结构。更灵活。

  

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

为什么呢?在这里允许m:n。许多分类中的产品。

  

我不确定这是不是最好的方法,   数据库将是巨大的

啊 - 不。抱歉。不平凡,是的。休?不。只是为了让你知道休 - 我有一个数据库我每天都会向特定的表添加12亿行。一般。这很重要。你最终会得到什么--100,000件?甚至不值得一提。

答案 1 :(得分:1)

Pablo89,您想要的描述与SQL Server的AdventureWorks数据库非常接近。有很多在Web上使用AdventureWorks的例子,从Web应用到报告到BI。

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

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

我使用AdventureWorks因为我使用的是SQL Server。我并不是说它比我说的更好,因为我知道AdventureWorks。

答案 2 :(得分:0)

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