另一方面,开发人员对数据库的一知半解可能是一件比较危险的事情。我看到过很多数据库被设计得过于死板,这些数据库的设计者坚持把所有东西都放在查询表中。
是的,数据库开发者需要知道规范化的规则,但是你也需要知道什么时候要停止去用规范化,什么时候逆规范化反而可能会带来更好的效果。
6、隐藏应用逻辑的“黑匣子”
存储过程和触发器是两个非常伟大的功能。当你有多个客户访问一个数据库的时候,它们可以帮助你确保对数据的一致性处理。
不过,它们也可能会变成一个隐藏应用逻辑的“黑匣子”,让Web和瘦客户端开发者无法查看和调试这些逻辑。在大多数情况下,数据库代码不能像其他应用程序代码一样被进行代码测试和代码调试。
因此,当你要将代码放到数据库中的时候,花点时间来问一下自己:这些代码是否真的适合放在数据库中?
7、备份!备份!备份!
你的数据库需要备份吗?当然需要!
我们为什么要把数据存在数据库中的原因之一就是想长久地保存它们。然而,我却经常碰到这样的情况,有的开发人员却因为这样或那样的原因——例如硬件故障、黑客或数据库错误——因为没有备份而导致珍贵的数据永远丢失。因此在你开始开发之前,就应该制定一个数据备份计划,包括备份的频率、备份的类型,以及离线备份的频率等等,而不应该在数据丢失后才想起备份的重要。
我不希望“亡羊补牢”的故事发生在各位数据库程序员的身上。