使用数据透视表时是否真的需要外键?

时间:2017-12-06 00:01:05

标签: mysql sql foreign-keys

比方说,我有一个简单的数据库,包含3个表= posts,categories和post_category(这是数据透视表)。

  • 帖子 - ID |标题|身体| created_at /的updated_at
  • 类别 - ID |名字| created_at /的updated_at
  • post_category - post_id | CATEGORY_ID

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

提前致谢!

1 个答案:

答案 0 :(得分:0)

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

也就是说,MySQL与大多数数据库的区别在于实际使用外键声明:MySQL构建了一个二级索引。通过提高性能,此索引可以非常方便查询。

但是,关于外键关系,