当前位置:  开发笔记 > 编程语言 > 正文

最好有数百列或拆分成多个表?

如何解决《最好有数百列或拆分成多个表?》经验,为你挑选了1个好方法。

我正在设计一个关于机械设备运行的统计数据库.每批数据将包含数百个统计信息,因此我尝试决定是创建包含数百列的单个表还是将其拆分为多个表,每个表包含相关的统计信息.例如,我可以有一个表包含与故障相关的统计信息,另一个表包含与卡纸相关的统计信息等.

使用多个表会使整个系统变得更加复杂,但从概念上讲,我可能更容易处理几个较小的表而不是一个较大的表.

将事情分开会有任何性能上的好处吗?看起来查询带有几十列的表可能比查询具有数百列的表更快.

有没有人有这种经历的经验?我正在使用Oracle进行这个项目,虽然这是我将来可能遇到的数据库,所以任何数据库的答案都会受到赞赏.



1> Tony Andrews..:

我想我们需要更多地了解您的设计才能正确回答.例如,我很好奇可能会有很多与故障相关的列,与堵塞有关的许多(不同的)等等(不管堵塞只是一种故障吗?)

你的设计是否正常化了?大概你没有"jam1","jam2"等栏目?!

假设设计是好的并且标准化,关于是否有一个宽表或许多较窄表的决定是各种因素之间的权衡:

所有/大多数记录都有所有类型的统计数据吗?是=>一张桌子,没有=>很多

您经常需要一起查询所有类型的统计数据吗?是=>一张桌子,没有=>很多

你是否在同一个屏幕上保存了所有不同的统计数据?是=>一张桌子,没有=>很多

您是否可能达到任何数据库限制,例如每个表最多1000列?

无论您采用哪种方式,您都可以使用视图来呈现替代结构,以方便开发人员:

一个表:许多视图选择特定类型的统计数据

许多表:将所有表连接在一起的视图

更新

根据您的评论,我现在知道您在机器上的40个不同位置有卡纸计数,而其他类型的统计数据是类似性质的计数.这表明下表设计:

create table machines (machine_id ... primary key, ...);
create table machine_stats 
   ( machine_id references machines
   , stat_group -- 'jams', 'malfunctions' etc.
   , stat_name  -- 'under the hood', 'behind the door' etc.
   , stat_count 
   );

正如下面有人评论的那样,这些允许您更轻松地对统计数据进行求和 - 在统计类型内或跨统计类型.如果需要将新统计数据添加到统计类型,也可以轻松扩展.

推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有