我记得听过Joel Spolsky在播客014中提到他几乎没用过外键(如果我没记错的话).但是,对我而言,在整个数据库中避免重复和后续数据完整性问题似乎非常重要.
人们有一些坚实的理由为什么(避免与Stack Overflow原则一致的讨论)?
database database-design referential-integrity foreign-keys data-integrity
可能重复:
我应该使用外键吗?
好的,我们假设我们有两个表,users并且comments.在评论中,我们有一个列comment_made_by_user_id,它意味着哪个用户键入了该特定注释.为什么我们需要将其指定为外键?如果我们不这样做,它仍然会起作用.我们指定主键,因为据我所知它会使查询更快(我们只需要搜索一行,而当我们没有主键/索引时,我们必须遍历所有行).这只是一个很好的编码实践吗?