Database 数据库完整性:在数据库或应用程序逻辑中管理它?
通常,当我编写使用DB的应用程序时,我会尝试通过我使用的编程语言(在我的例子中是Java)而不是DB本身来确保数据的一致性。原因如下:Database 数据库完整性:在数据库或应用程序逻辑中管理它?,database,separation-of-concerns,Database,Separation Of Concerns,通常,当我编写使用DB的应用程序时,我会尝试通过我使用的编程语言(在我的例子中是Java)而不是DB本身来确保数据的一致性。原因如下: 数据管理逻辑不是“立即可见”的,也就是说,它不是(至少)我习惯的那种代码 很难将DB代码保持在源代码控制之下 然而,我可以看到在数据库端保留“数据完整性”逻辑的意义,主要是相同的数据库可以被其他应用程序(或其他人编写的应用程序的一部分)使用,而不会有损坏它的风险 “正确的方法”是什么?在将其存储在DB或应用程序的特殊层之间有什么选择标准吗?从我的角度来看,在数据
“正确的方法”是什么?在将其存储在DB或应用程序的特殊层之间有什么选择标准吗?从我的角度来看,在数据库中定义引用完整性是强制性的 你应该总是在那里定义它。本质上,它是您的“最后一道防线”,确保没有外部应用程序会弄乱您的数据 如果您的数据有价值,那么从长远来看,它将被多个应用程序访问。而且,您的数据很可能会比您当前构建的应用程序寿命长,并且一个新的应用程序将接管 此外,数据库中的约束可以防止手动运行SQL语句时出现人为错误(请考虑升级脚本、大规模导入) 大多数现代数据库也可以使用约束来优化语句。ORM生成的语句通常包含对表的引用,这些表可能并不总是需要的。外键约束就位可以帮助数据库删除它们 这里有两个链接显示了一些示例:
最后但并非最不重要的一点:他们记录您的模型。如果您查看一个没有外键约束的数据库,您就不知道表之间是如何关联的(有些工具甚至可以帮助您编写语句,如果它们可以检测到数据库中的外键约束)。谢谢。我从来没有真正想过这个故事的自我记录部分。