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

标签 php mysql constraints

我正在尝试在表中创建一个外键列,但在 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/

相关文章:

PHP问号

php - 如何将项目数组转换为其对应的 id 数组

php - WordPress : Call to a member function generate_cart_id() in Woocommerce

Mysql 比较两列

mysql - 如何使用选择 AND

mysql - 如何将非 select mysql 语句的结果放入 OUTFILE?

java - 从php查询远程mysql数据库并获取结果集

ios - 向 TextView 添加约束在 Swift 中不起作用

matlab - 线性规划约束 : multiplication of optimization variables

postgresql - 创建表上的 liquibase 约束引用