数据库设计:一个大表与几个较小的表

Gra*_*ush 6 database sql-server database-design

我必须创建一个数据库来存储从第三方Web服务门户发送和接收的信息.虽然我可以通过规范化删除大约50个字段,但是有大约150个字段要发送的信息(例如,有三组地址可以保存在地址表中).但是,这仍然会留下一个可能有100列的表.

虽然我不确定使用哪种方法,但我想出了两种处理方式:

1.有一个包含100列的表和三个对地址表的引用.

2.将其划分为15-20个独立的专用表.

选项1似乎是最快的,因为它涉及最少的连接,但是有100列的表的想法感觉不对.

选项2感觉更好,并且会将内容分解为更多可管理的块,但它不会节省任何数据库空间并且会增加连接数.几乎所有数据库中的列都有一个值,我无法进一步规范化这些列.

我的问题是,在这种情况下,可以接受一个包含c.100列的表,或者我应该尝试将其分解为几个表以进行演示?

请注意:表结构在使用过程中不会改变,将为新版本的Web服务门户创建新数据库.我无法控制Web服务数据结构.

编辑: @ Oded在下面的回答让我更多地考虑如何访问数据; 它实际上只能被访问,而不是部分访问.例如,我不需要定期返回5-20列.

答:我在发布后根据评论接受了Oded的答案,帮助我开始思考,我决定选择1.因为数据是完全访问的,所以有一个表似乎是更好的解决方案.例如,如果我经常想要访问第5-20列而不是完整的表行,那么出于性能原因,我会看到将其分解为单独的表.

Ode*_*ded 11

从关系纯粹主义的角度来说 - 首先,如果它们是相关的,那么表中就不会有100列.这里的要点是,如果在规范化后你仍然有100列,那就没问题.

但是你应该规范化,并且在这个过程中你最终可能会得到15-20个独立的专用表,大多数关系数据库专业人员都认为这是一个更好的设计(避免数据重复与相关的更新/删除问题,更小的数据占用空间等...).

但是,实际上,如果存在可测量的性能问题,那么为了性能优势而将设计非规范化可能是明智的.关键在于 - 可测量.在遇到实际问题之前不要进行优化.

在这方面,我会说你应该使用15-20个表作为初始设计.