概述 (抱歉,它含糊不清 - 我认为如果我更详细地介绍它只会使事情复杂化)
我有三个表,表一包含一个 ID,表二包含它自己的 ID 和表一的 ID,表三包含它自己的 ID 和表二的 ID。
我思考了很久,觉得如果表三也包含相关表的id会更有效率。
-这将意味着我将不必连接三个表,我可以只查询表三(对于将经常使用的查询)
-通过仅锁定表 3 中包含表 1 中特定 ID 的行,我可以更轻松地实现预订系统。
对于任何想了解更多关于数据库布局的人,这里有更多信息 here
问题
去规范化有哪些不利因素?我见过一些人完全反对它,而另一些人则相信在正确的情况下它是一个有用的工具。 id 永远不会改变,所以除了必须两次插入相同的数据外,我没有看到任何缺点,因此它会消耗额外的空间(因为它只是 id 肯定可以忽略不计)。
最佳答案
我的建议是遵循以下一般规则:默认情况下进行规范化,然后在您发现它将解决的性能问题时进行反规范化。
我发现标准化数据和处理它的代码更容易维护,也更合乎逻辑。我不认为使用非规范化来提高性能有任何问题,但我不会推测性地应用任何性能优化,这会导致可维护性下降,直到您确定它们是必要的。
关于mySQL - 我应该反规范化吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1729191/