除了作为'哑'数据存储之外,将MySQL用于其他任何方面是否有任何好处?

时间:2012-01-16 17:08:31

标签: php mysql referential-integrity

我问的原因是我们想要使用MySQL当前不支持的某个CHECK约束。如果没有这种类型的约束,使用外键和引用完整性的全部原因似乎都会减少,因为应用程序代码承担了更多数据库的职责。

如果我们要创建一个'哑'数据模型并将所有参照完整性检查移动到应用程序代码中的一个层,那么潜在的测试可能会更简单,因为参照完整性错误将被困在应用程序而不是数据库中。它还可能加速新模块的开发,因为在测试之前它们不一定必须完全引用(是一个术语吗?)。

那么,在MySQL中坚持使用“正确的”数据模型以及保留外键和“ON UPDATE CASCADE”语句等还有其他好处吗?

或者,我们应该抛弃MySQL并转向别的东西吗?!

谢谢!

3 个答案:

答案 0 :(得分:7)

一些开发人员主张在数据库中根本没有业务逻辑 - 你的数据存储是愚蠢的。所以这绝对是一个有效的策略。

关于将约束(和其他业务逻辑)移出数据库的问题是,在各地强制执行约束更加困难。每个应用程序中的每个开发人员都可以违反该约束。 DBA也无能为力。

所以,我倾向于在数据库本身中使用这些规则。

答案 1 :(得分:2)

您可以通过其他方式模拟检查约束

  • 触发
  • FK到单行表
  • 单值枚举

这不方便,但不是世界末日。

无论如何,并非所有约束都可以或应该在应用程序中完成。唯一性?零和检查(例如,在取消帐户之前余额=零)。

当出现问题时,这是你的数据和清理工作......

答案 2 :(得分:0)

是的,如果您需要MySQL不支持的功能,那么您可以转移到其他地方。

相关问题