如果我有一个有100个字段的表,那表明数据库设计不好?

时间:2012-03-28 14:50:35

标签: database-design

我有一张桌子:订单明细。订单有很多细节,在我的案例中有100个字段。在数据库中常见的是在一个表中有100个字段,或者我是否应该将其分解为更小的表以及如何?谢谢!

“订单明细”表中的某些数据由销售经理使用,其他数据由产品系列专家使用,而其他数据则由采购部门使用。

我应该将它们全部保存在一起,还是应该将它拆开,哪种NF适用于这个级别?

3 个答案:

答案 0 :(得分:4)

简单的答案是否定的。当然,可以存在所需的字段数,并且给定数据库中的字段数不表示设计不良。但是,可以表示设计不佳(正如Kshitij Mehta在评论中指出的那样)高度数据复制(或差normalisation)。

规范化是在数据库中组织数据的过程。这包括根据设计的规则创建表并在这些表之间建立关系,以保护数据并通过消除冗余和不一致的依赖性使数据库更加灵活。

超过1NF(第一范式)的标准化目标由Codd说明如下:

  1. 从不受欢迎的插入,更新和删除依赖项中释放关系集合;
  2. 随着新型数据的引入,减少重建关系集合的需要,从而延长应用程序的使用寿命;
  3. 使关系模型对用户更具信息性;
  4. 使查询统计信息的关系集合中立,这些统计信息随着时间的推移可能会发生变化。 -E.F. Codd,“数据库关系模型的进一步规范化”
  5. 数据库通常被标准化为2NF,在某些情况下更高......

    有关详情,请参阅维基百科或this Microsoft article。我希望这会有所帮助。

答案 1 :(得分:0)

只要表中的数据被标准化,将其拆分为多个表就没有多大好处。

答案 2 :(得分:0)

您需要了解两件事:如何规范化以及何时规范化。

如果你已经知道如何规范化,并且表格尽可能正常化,那么不要为了良好的设计而拆分它。如果您不知道如何规范化,请参阅其他一些回复。

何时进行标准化的答案更为微妙。有专家建议一直在进行标准化。还有其他专家没有。我的答案是规范化,除非你有一个更好的计划,对于手头的情况。

对我来说,如果手头的情况是报告数据库,数据集市或数据仓库,我更喜欢星型模式或雪花模式来规范化设计。即使我正常化,我也几乎不担心过去BCNF的规范化形式。