外键、约束、默认值等项目应该由数据库管理系统(在本例中为 MS Sql 2005)还是应用程序处理?我听取了双方的意见,老实说,我不确定该走哪条路。
我最初打算将它构建到数据库中,但是我发现这对于我当前的数据库设计并不总是可行的。例如,某些表包含循环引用,无法使用ON UPDATE CASCADE
. 我遇到的另一个问题是我们可能会使用多个数据库/服务器,并且外键约束不适用于链接服务器。
我有一些开发人员建议我在应用程序层上进行数据验证,并让数据库保持原样——一个存储数据的地方。我喜欢这个想法,但我在很多地方都读到过,最好将引用完整性构建到数据库中,以允许不通过应用程序层传递的事务。我同意这一点,尽管当我们完成时,所有数据库事务都应该通过应用程序。即使我们决定稍后构建插件,我们也使用 ObjectModel 框架,因此插入/更新/删除查询永远不需要重写。
所以我的问题是,在这种情况下,您是否仍然建议将参照完整性构建到数据库中,或者是否可以将其构建到应用程序层中?为什么?