我正在尝试在表中创建一个外键列,但在 MySQL 中这比它应该做的要难。这将需要我返回并对已使用的表进行某些更改。所以我想知道,MySQL 有多大必要确定某个值是合适的?难道我不能只使用像 PHP 这样的语言来做到这一点,无论如何我都用它来访问这个数据库?
与 NOT NULL 类似。如果我只用 PHP 访问这个数据库,难道我不能简单地让 PHP 确保没有输入空值吗?
为什么我应该使用 MySQL 来执行这些约束,而我只能使用 PHP 来执行?
我意识到 NOT NULL 是一个非常愚蠢的部分,由于上述原因而被忽视。但是 MySQL 不会在没有严重程度的胡闹的情况下强制执行外键。
在您看来,使用“假”外键并简单地使用 PHP 检查要输入的值是否与其他表中的值匹配是否仍然不好?
最佳答案
您会在 PHP 上犯错,100% 保证。 PHP 是程序化的。你想要的是声明性约束。你想告诉整个堆栈:“这些是对数据的约束,不能违反这些约束。”您不想过多地使用“步骤 1 ... 步骤 2 ... 步骤 3 ... 步骤 432 ...”作为对数据实现约束的方法,因为
- 你会弄错的
- 当你以后改变它时,你会忘记你现在做了什么
- 没有人会像你现在知道的那样了解所有这些隐式约束,包括你 future 的自己
- 需要大量代码才能始终正确地执行约束 - 数据库服务器已经有了这些代码,但您准备好编写它了吗?
这个问题实际上应该用措辞来表达,“为什么我应该使用 PHP 来强制执行这些约束,而我可以使用 MySQL 来做到这一点?”
关于php - 如果我总是使用 PHP 控制我的数据库输入,像 NOT NULL 和 FOREIGN KEY 这样的约束有多重要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/382309/