当您试图获取数据时,没有明显简单的方法来完成它,这就是需要使用技巧的时候吗?
当您发现某些内容应该独立成表格时,是吗?
有哪些相关法律规定?
当您试图获取数据时,没有明显简单的方法来完成它,这就是需要使用技巧的时候吗?
当您发现某些内容应该独立成表格时,是吗?
有哪些相关法律规定?
当你开始质疑一个SQL数据库是否需要更多的规范化时。
<grin/>
不,实际上存在着法则,可以查看这个维基百科链接。其他人已经向您介绍了规范化的正式规则。以下是我使用的一些非正式指南:
如果您在表中有列名仅以数字不同的列(例如Phone1和PHone2)。
如果您在表中有任何应该只填写另一列填写时才能填写的列。
如果更新数据库中的“事实”(如街道地址)需要多个UPDATE操作。
如果同一个问题可能会根据您获取信息的表格而得到两个不同的答案。
如果任何非平凡问题的答案可以从数据库中获得,而无需JOIN至少两个表格。
如果您在数据库中有任何基于数量的限制,除了“只允许一个东西”之外(即,“只允许一个地址”是可以的,但“只允许两个地址”表示规范化问题)。
3NF通常是您需要的,它遵循三个规则:
表中的每一列都应该依赖于:
出于性能原因,您经常可以“降级”为2NF,前提是您理解其影响并且仅在遇到问题时使用,但是对于所有设计,3NF应该是最初的目标。
正如其他人所说,当您在多个表中拥有(太多)重复列时,您就会知道。
话虽如此,有时在多个表之间具有冗余列是有用的。这可以减少在复杂查询中必须执行的连接数。只需小心保持所有表同步,否则您只会自找麻烦。
这是一篇相当不错的文章。让数据变得规范化是一门科学,而不是艺术。而知道何时需要反规范化......那就是一门艺术。
http://www.alvechurchdata.co.uk/hints-and-tips/softnorm.html