2013-02-25 35 views
0

我有一个表,有很多领域保持它作为一个表持有“总计”,例如:当链接表或多个字段

UserID | total_classA | total_classB | total_classC // and so on 

我能有第二个表但是有:

ClassType | Total | UserID 

但我真的不知道第二张桌子对于多对一的关系是多么有益,首先我将不得不存储更多行数据,并且我必须使用连接来选择数据。

但很多事情我读会建议有两个表是最好的了一个表,有很多领域......这是为什么,因为我看不到的优点是,在上述情况=/

+0

那么,你需要在将来能够添加'total_classD'吗? 'classA','classB'或'classC'在数据库的其他地方具有语义含义吗? – 2013-02-25 03:23:30

+0

他们没有意义,如果没有,你们将来会有更多的班级。 – Sir 2013-02-25 03:25:08

回答

2

商店你的数据干净利落,就像你提出的“第二张桌子”一样。

您总是可以使用PIVOT(取决于您的平台)或专业查询(如果需要时)获得汇总列总显示。

这样做的最大好处就是无需改变你的表格结构,因为你决定引入其他的类型。只需添加行(DML而不是DDL),您就可以扩展数据跟踪功能。

查看second normal form获取更多有关走这条路线的技术说明。

+0

所以它更多的是为了方便设计而不是提高性能? – Sir 2013-02-25 04:00:28

+0

我会要求你展示一下你的“性能收益”指标。通过多个请求来阻止对更新单个记录的争用通常会降低更新速度,减少争用更少的粒度数据。 – Tahbaza 2013-02-25 15:12:02