一位前同事坚持认为,一个数据库中包含更多表且每个列较少的数据库比一个数据库中包含较少表且每个列更多的数据库更好。例如,您将没有名称表,地址表,城市表等,而不是具有名称,地址,城市,州,邮政编码等列的客户表。

他认为这种设计更加有效和灵活。也许它更灵活,但是我没有资格评论它的效率。即使效率更高,我认为增加的复杂性可能会抵消这些 yield 。

因此,具有较少列的更多表相对于具有较多列的较少表有什么明显的好处吗?

最佳答案

设计数据库时,我遵循一些非常简单的经验法则,我认为这些规则可用于帮助做出这样的决策...。

  • 支持规范化。非规范化是优化的一种形式,它具有所有必要的折衷,因此应以YAGNI的态度进行处理。
  • 确保将引用数据库的客户端代码与架构充分分离,以至于对其进行重做不需要对客户端进行重大的重新设计。
  • 当它为性能或查询复杂性带来明显好处时,不要害怕对其进行规范化。
  • 在数据量和使用场景允许的情况下,使用 View 或下游表来实现规范化,而不是规范化架构的核心。

  • 这些规则的通常结果是,初始设计将偏爱表而不是列,重点是消除冗余。随着项目的进展和非规范化点的确定,总体结构将朝着平衡的方向发展,以有限的冗余和色谱柱扩散为代价,以换取其他有值(value)的利益。

    关于database - 有什么更好的数据库设计:更多表或更多列?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59482/

    10-12 13:55
    查看更多