我有一张桌子:订单明细。订单有很多细节,在我的案例中有100个字段。在数据库中常见的是在一个表中有100个字段,或者我是否应该将其分解为更小的表以及如何?谢谢!
“订单明细”表中的某些数据由销售经理使用,其他数据由产品系列专家使用,而其他数据则由采购部门使用。
我应该将它们全部保存在一起,还是应该将它拆开,哪种NF适用于这个级别?
答案 0 :(得分:4)
简单的答案是否定的。当然,可以存在所需的字段数,并且给定数据库中的字段数不表示设计不良。但是,可以表示设计不佳(正如Kshitij Mehta在评论中指出的那样)高度数据复制(或差normalisation)。
规范化是在数据库中组织数据的过程。这包括根据设计的规则创建表并在这些表之间建立关系,以保护数据并通过消除冗余和不一致的依赖性使数据库更加灵活。
超过1NF(第一范式)的标准化目标由Codd说明如下:
数据库通常被标准化为2NF,在某些情况下更高......
有关详情,请参阅维基百科或this Microsoft article。我希望这会有所帮助。
答案 1 :(得分:0)
只要表中的数据被标准化,将其拆分为多个表就没有多大好处。
答案 2 :(得分:0)
您需要了解两件事:如何规范化以及何时规范化。
如果你已经知道如何规范化,并且表格尽可能正常化,那么不要为了良好的设计而拆分它。如果您不知道如何规范化,请参阅其他一些回复。
何时进行标准化的答案更为微妙。有专家建议一直在进行标准化。还有其他专家没有。我的答案是规范化,除非你有一个更好的计划,对于手头的情况。
对我来说,如果手头的情况是报告数据库,数据集市或数据仓库,我更喜欢星型模式或雪花模式来规范化设计。即使我正常化,我也几乎不担心过去BCNF的规范化形式。