2013-02-10 156 views
-2

我需要建立一个网站,显示所有类型的产品,他们都具有相同的属性。像Shopping.com,亚马逊等。产品的数据库设计

我目前正在考虑两种选择:每个产品类型

  1. 一个表(电视机,摄像机,音箱等),并在其中会有所有该类型的属性相同。例如,如果它TV_Table将有分辨率,价格,重量,技术等。
  2. 有此表:
    • 产品:ID,名称
    • ProductColumn:ID,产品ID,名称,类型
    • ColumnValue :ID,ColumnID的,价值

这两种方式似乎确定我和他们每个人都会有自己的优点和缺点。

我正在寻找一个解决方案:

  • 重复的代码将在数据库尽可能的少
  • 搜索和其他的东西(的分组,计数等)将是简单,方便,快捷,代码友好的(我不喜欢10号线一个SQL查询)
  • ,基本上会以正确的方式

请告知,如果你有这似乎更好其他的方式 - 欢迎您SH是。

谢谢。

回答

1

您正在寻找一个基于类的结构。 第二种方法至少可以说是丑陋的。这确实是一个解决方案的肮脏破解。

基本上,如果您熟悉OOP范例并且继承支柱回收您的知识。

您将有产品,然后表延伸一个抽象的表,添加另外的属性,直到你可以叫它型“电视”或“交易卡”的产品。对于子类型选择,将一系列OR子句连接到SQL检索脚本中的WHERE过滤器。

为简洁的SQL语句在id列上执行NATURAL JOIN。

祝你好运!

+0

我的第一个选择(或你的答案)的问题是,在代码中,我会有很多类似的查询(在呈现数据时)和很多关节(在搜索上)。不管他们是否扩展抽象类,因为列是不同的。再加上我需要复制页面代码并根据产品类型进行更改,虽然它们看起来是一样的,因为列不完全相同 – Nir 2013-02-10 17:48:34