hli*_*lim 0 mysql sql database database-design
我正在设计一个db表,它将保存用户收藏的食品清单.我使用以下架构创建了收藏表
id, user_id, food_id
Run Code Online (Sandbox Code Playgroud)
user_id和food_id将是链接到另一个表的外键.
我只是想知道这是否有效且可扩展,如果用户有多个喜欢的东西,那么它将需要多行数据.
即用户有5个收藏的食品,那么它将包含五行以保存该用户的清单.
这有效吗?可扩展?什么是优化此架构的最佳方法?
thnx提前!!!
小智 5
tldr; 这称为"连接表",是在关系数据库中建模MM关系的正确且可扩展的方法.(根据使用的约束,它还可以在"无NULL FK"模式中模拟1-M/1-1关系.)
但是,我认为这里应该省略该id
列,以便该表只是 user_id, food_id
.PK (user_id, food_id)
就是这种情况.
与其他表格不同,其中代理人(又称自动增量)PK有时被认为是,代理人PK通常只会在联接表中添加混乱,因为它具有非常自然的复合PK.
虽然PK本身在这种情况下是复合的,但每个"连接"表仅涉及PK的一部分.根据执行的查询,在food_id
or (food_id, user_id
)上添加覆盖索引可能也是有益的.