在库表设计中我们使用了GORM的软删除功能。虽然这个功能在一定程度上能通过隐式删除来提升效率,但是数据库上的索引并不会物理删除。因此,唯一索引的机制会和软删除产生冲突。以Follows表为例,为了保证数据唯一性,我们通常会在user_id和follower_id列上设置一个唯一索引。考虑关注后取关再关注的场景,取关操作通过软删除完成,但索引中仍有该key存在,因此再次关注时数据库会认为键值重复拒绝insert操作。因此,需要将该索引设置为一般索引仅用于提升查询速度,而数据唯一性由service层保证。