我问的原因是我们想要使用MySQL当前不支持的某个CHECK约束。如果没有这种类型的约束,使用外键和引用完整性的全部原因似乎都会减少,因为应用程序代码承担了更多数据库的职责。
如果我们要创建一个'哑'数据模型并将所有参照完整性检查移动到应用程序代码中的一个层,那么潜在的测试可能会更简单,因为参照完整性错误将被困在应用程序而不是数据库中。它还可能加速新模块的开发,因为在测试之前它们不一定必须完全引用(是一个术语吗?)。
那么,在MySQL中坚持使用“正确的”数据模型以及保留外键和“ON UPDATE CASCADE”语句等还有其他好处吗?
或者,我们应该抛弃MySQL并转向别的东西吗?!
谢谢!
答案 0 :(得分:7)
一些开发人员主张在数据库中根本没有业务逻辑 - 你的数据存储是愚蠢的。所以这绝对是一个有效的策略。
关于将约束(和其他业务逻辑)移出数据库的问题是,在各地强制执行约束更加困难。每个应用程序中的每个开发人员都可以违反该约束。 DBA也无能为力。
所以,我倾向于在数据库本身中使用这些规则。
答案 1 :(得分:2)
您可以通过其他方式模拟检查约束
这不方便,但不是世界末日。
无论如何,并非所有约束都可以或应该在应用程序中完成。唯一性?零和检查(例如,在取消帐户之前余额=零)。
当出现问题时,这是你的数据和清理工作......
答案 2 :(得分:0)
是的,如果您需要MySQL不支持的功能,那么您可以转移到其他地方。