在过去的 18 个月里,我们一直在研究复杂的数据库和客户端界面。我们会定期向此应用程序添加新功能,现在每天都有数十名用户在我们的所有办公室(包括站点和海外)使用。这只是为了告诉您它是一个带有 REAL 数据库的 REAL 应用程序。
到现在为止,我们仍然不用写任何存储过程,除了临时解决客户端版本和更新数据库模型之间的小问题(旧客户端版本不会正确更新新创建的字段,直到大家安装最新的版本)。
同样,我们仍然不需要任何触发器。事实上,唯一的 SP 和触发器是系统的,或者是为了复制目的而添加的。
当开发人员认为数据库优化必须反对数据库规范化时,我有一种奇怪的感觉,即 SP 和触发器主要用于补偿数据库设计默认值和/或试图绕过数据库设计规则。
问题是这些工具非常耗时(无论是开发还是维护)。然后每个开发人员都应该非常小心地使用它们,记住它们是在数据库中维护的最“昂贵”的项目。
我们是否可以认为在数据库中没有或只有很少的存储过程/触发器是其规范化水平和/或代码维护成本的一个很好的指标?
编辑:
你们中的一些人为使用触发器和 SP 提供了公平的论据。但我一直认为,大多数时候这些工具的使用方式不当或过度。设置了多少触发器来在表字段之间进行一些花哨的更新,或者重新计算总计或其他聚合数据?有多少 SP 用于构建用于报告问题的临时表?这是开发人员使用这些工具的许多情况中的两种,我认为这通常说明数据库设计/规范化缺陷。
其他一些人承认应该严格控制 SP 和触发器的使用。我也觉得很有必要。
我必须承认,我试图找到一些支持的论点,所有这些在我们其他数据库上工作的 SQL 极客都看不起我们,告诉他们的朋友“你知道吗?他们甚至不使用 SP 和触发器!哈哈!”