首先抱歉我的英语不好hehehe我需要一些帮助,我想设计一个网站的数据库,比如迷你亚马逊。这个数据库将管理各种产品(电视,汽车,电脑,书籍,电子游戏,铅笔,桌子,裤子......),但是,每个产品必须具有一些属性(将被索引),例如,如果产品是一本书,属性将类似流派,年份,作者。如果产品是电视,属性将是大小,颜色,也是年份。如果产品是汽车,那么属性就像年份,颜色,型号等。所以,这是我的想法:
我不确定这是否是最好的方式,数据库将是巨大的,我将在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,我不知道我是否制作此表或如果我为每种产品制作特定的表格。
你有什么建议吗?或者你有更好的主意吗?
提前致谢,请小心!!!
答案 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在运行时获取产品数据。