相对表的相对值表

时间:2012-06-05 18:15:44

标签: sql

我很难做出这个决定。我有一个架构,我希望特定类别的产品具有该类别中的特定值。

我已经进入了5张桌子,我只是想知道这是否是正确的做法。

方案: 主表:

Element (id, name, category_ID)
Category (id, name)
Characteristic (id, name, unity)

我希望类别具有特定数量的特征(即,计算机需要具有cpu,ram,screenize等特征,并且鼠标需要具有isCordless,numberOfButtons等),所以我已经创建了表Category_has_Characteristic:

Category_has_Characteristic(id_category, id_characteristic)

为了从我创建此表的类别中为每个特征设置特定元素值:

Element_has_Characteristic ( id_element, id_Category_has_Characteristic, value)

这是创建表格以获得每个特征的特定元素值的最佳方法吗?

我错过了什么,或者这是唯一/最好的方法吗?

任何评论都将受到高度赞赏。

1 个答案:

答案 0 :(得分:1)

这听起来像是过度正常化的经典案例。考虑一个表:

Category
  id
  name varchar(50)
  isCordless bit
  numberOfButtons int
  ...

这会导致更简单的查询。如果您的特征是动态的,那么您只需要多对多的关系。例如,如果您计划编写一个控制面板,用户可以使用该控制面板向类别添加特征。