如果我总是使用PHP控制数据库输入,那么像NOT NULL和EXEKEY这样的约束有多重要?

2022-08-30 17:59:05

我正在尝试在外键表中创建一列,但在MySQL中,这比它应该的要困难得多。这将要求我返回并对已在使用的表进行某些更改。所以我想知道,MySQL有多大必要确保某个值是合适的?难道我不能用像PHP这样的语言来做到这一点吗,无论如何我都用它来访问这个数据库?

与 NOT NULL 类似。如果我只用PHP访问这个数据库,难道我不能简单地让PHP确保没有输入空值吗?

为什么我应该使用MySQL来强制执行这些约束,而我只能用PHP来做到这一点?


我意识到,由于上述原因,NOT NULL是一个非常愚蠢的部分。但是MySQL不会在没有严重监控的情况下强制执行外键。

在您看来,使用PHP使用“假”外键并简单地检查要输入的值是否与其他表中匹配,这还会不好吗?


答案 1

你会用PHP犯错误,100%保证。PHP 是程序性的。您需要的是声明性约束。你想告诉整个堆栈:“这些是对数据的约束,这些约束不能被违反。你不想用“步骤1 ...步骤 2 ...步骤 3 ...步骤 432 ...“,作为对数据强制实施约束的方法,因为

  • 你会弄错的
  • 当你以后改变它时,你会忘记你现在做了什么
  • 没有人会像你现在知道的那样知道所有这些隐含的约束,包括你未来的自我。
  • 需要大量的代码来正确和一直强制实施约束 - 数据库服务器已经有这个代码,但你准备好写它了吗?

这个问题实际上应该这样说:“当我可以用MySQL做到这一点时,我为什么要使用PHP来强制实施这些约束?


答案 2

你不能“只是”用PHP来做这件事,就像程序员“只是”不能写无错误的代码一样。这比你想象的要难。特别是如果你认为这并不难。


推荐