You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

开发电影收藏Web应用:Bookmark作为关联表还是拆分为两张?

收藏电影应用数据表设计建议

不需要拆分出UserBookmark和BookmarkMovies两张表,你当前的Bookmark表设计是合理的。

原因很直白:

  • 你的Bookmark表不是单纯的用户-电影关联表,它还带有Review字段,用来存储用户对收藏电影的评价,这已经是一个带业务属性的中间实体,而非仅用于连表的纯关联表。
  • 拆分两张表完全是画蛇添足,会增加数据冗余和查询复杂度。比如拆分后,你得在两张表分别存关联关系,Review字段还要额外找地方存放,后续查询用户的收藏列表及对应评价时,需要多表关联,反而更麻烦。

给你个小优化建议:
因为一个用户不能重复收藏同一部电影,所以要给Bookmark加唯一约束。要么把UserId和MovieId设为复合主键,代码可以这么改:

public class Bookmark
{
    [Key]
    [Column(Order = 0)]
    public int UserId { get; set; }
    [Key]
    [Column(Order = 1)]
    public int MovieId { get; set; }

    public virtual User User { get; set; }
    public virtual Movie Movie { get; set; }
    public int Review { get; set; }
}

要么单独加一个Id主键,再用[Unique]特性约束UserId和MovieId的组合,两种方式都能避免重复收藏的问题。

内容的提问来源于stack exchange,提问作者dyzhuu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 17:10:12