程序规模不大的话,也没有性能要求的话,随便吧,否则从程序设计的角度上看,外键会使你的程序对底层 DB 强依赖,其实是不利于程序的扩展的,在不少的分层设计中,仓储层是需要无感知能替换切换的,用了外键就不能实现这一点,而且用了外键,分库分表的之类的就没办法做了,一些分布式的 DB 也基本不支持外键,当 DB 成为瓶颈点再来大改的话反而更麻烦。 另外那个评论的例子,我想知道有没有什么其他有实际意义的场景,以这个例子来看,参照完整性好像没有什么意义,就算是子表多了一条脏数据,其实对业务本身是没有关系的,完全可以后续再清理。