php - 不使用 ondelete 或 onupdate 时外键的优势

标签 php mysql sql foreign-keys rdbms

如果我没有设置任何删除或更新约束,那么拥有外键关系有什么好处?

假设我有一个用户可以发布转售商品的表格。

item_id  item_product_id   item_title            other_fields
1        1                 New TV for sale       ...
1        1                 Old TV for sale       ...
1        2                 Radio for sale        ...

产品表将是:

product_id   product_name
1            TV
2            Radio

现在,如果从产品表中删除产品,我不希望这些项目也被删除。用户可以看到他的项目的产品不再存在并且可以选择另一个最接近的合适的产品。所以我的问题是 - 如果这是我所拥有的结构和逻辑,那么通过使用外键链接项目和产品表是否有任何优势?

或者,如果项目中有外键条目,我是否可以从产品中删除?

最佳答案

一个优点是您的 RDMS 一开始就不允许您插入无效数据。如果没有 ID 为 5 的产品,那么您将绝对无法为其创建项目(无论是从脚本还是从 mysql 命令行)。这属于数据完整性的标题。

此外,您可能值得查看 this question

关于php - 不使用 ondelete 或 onupdate 时外键的优势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24663421/

相关文章:

MySQL一对多加入Group By只返回一个观察

sql - 我需要显示员工表中实体的名字和姓氏,这些实体在 StaffSoldVehicle 表中出现十次以上并且是男性

php - 如何将 PHPUnit 与我的代码捆绑在一起?

php - 读取用户输入并检查数据类型

javascript - 使用php将Json数据存储到mysql数据库

php - Laravel 查询生成器,基于条件的位置?

php - 通过 Unix 套接字的 MySQL 连接适用于 mysqli,但不适用于 PDO

带有 SUM 和 MAX 的 MYSQL SELECT CASE

java - 在列中按两次排序

MYSQL LEFT JOIN 在其他表上添加条件