外键是为了保证数据完整性的,如果不依赖数据库的完整性功能(物理删除),就不要使用外键。
如果是分库分表,有可能主键和外键并没有分在一起,这种情况下就不能用外键。
- 微服务必分库,用户微服务独占用户库,视频微服务独占视频库,用户库和视频库是两个独立的库,没有办法建立外键。
- 像mysql InnoDB这种索引组织树的数据库,每张表的数据行数不能超过一定阈值,超了主键索引就会从3层变为4层,速度就会变得贼慢,这个时候就需要分表了。分表了,数据都不在一张表上,也不太好用外键(因为外键只能外键到一张表上,不能外键多张表)。
如果业务上要求是逻辑删除,这种情况就不能使用外键。
以“用户表,视频表,用户观看表(中间表)”为例,如果用户不在了被封杀了,也就是用户表删了一行数据,用户观看表中和这个用户相关的数据还留着么?这个和业务有关。
本文发表于 0001-01-01,最后修改于 0001-01-01。
本站永久域名「 jiavvc.top 」,也可搜索「 后浪笔记一零二四 」找到我。