mysql - 使用数据透视表时我真的需要外键吗?

标签 mysql sql foreign-keys

假设我有一个简单的数据库,其中包含 3 个表 = posts、categories 和 post_category(即数据透视表)。

  • 帖子 - ID |标题 | body |创建位置/更新位置
  • 类别 - ID |名称 |创建位置/更新位置
  • post_category - post_id |类别_id

主键是一个ID,但我没有指定外部(在帖子中)。我应该将外键(category_id)指定为帖子表中的一列,还是可以使用我已经指定了这两个表之间关系的数据透视表(post_category)?

提前致谢!

最佳答案

SQL 不需要显式声明外键,特别是在查询表时。外键强制关系完整性。也就是说,它们确保应该相互引用的表实际上确实相互引用。

也就是说,MySQL 与大多数数据库的不同之处在于实际上使用外键声明执行某些操作:MySQL 构建二级索引。通过提高性能,该索引对于查询来说非常方便。

但是,对于外键关系,没有任何要求

关于mysql - 使用数据透视表时我真的需要外键吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47664676/

相关文章:

MySQL获取特定字符之前的所有字符,如果不是则获取整个值

sql - 忽略违反重复键索引的行的插入

mysql - 验证(子)表中值的存在并返回 "boolean"结果

mysql - 在一对多关系中显示不需要的重复结果

python - 删除级联的 Django 在 PostgreSQL 中没有产生正确的约束

mysql - 按邮政编码公式计算的距离

MySQL查询优化: UNION with rand()

ruby-on-rails - 模型中的自定义 foreign_key 给出 PG::Error column does not exist - Rails

php - 使用时间戳计算员工的工作时间

sql - 根据日期和月份的出现情况生成日期列表