【问题标题】:ER Model of User RatingsER 用户评分模型
【发布时间】:2014-06-30 15:47:06
【问题描述】:

我有很多“用户”,每个用户最多有 5 个“服务”。用户应该能够对每项服务进行评分 (0-5)。我还想保留用户的平均评分。

这就是我的想法,但还有更好的方法吗?

用户

id | user_name | dob | ...

服务(固定数量的服务)

id |service_description | service_code | avg_rating

评分:

id | service_id | user_id | rating (0-5)

【问题讨论】:

  • 是否允许用户更改评级?你在乎他们之前对它的评价吗?
  • 为什么要存储平均值而不是计算它?
  • 对于想要“高、中、低”三个等级而不是 5 个等级等级的人,您将如何分配?
  • @RajMore 感谢您的提问。 1. 允许用户更改评级 2. 是的,计算可能是一个更好的主意。从性能的角度来看,我不确定哪种方法更好。 3. 这将是亚马逊风格的固定 5 星评级(但我也有兴趣了解如何保持评级水平灵活)

标签: database-design entity-relationship


【解决方案1】:

我创建了一个 E/R 图来描述多评级系统的实施方式。请注意,我在很多事情上都使用了通用名称。

【讨论】:

  • 您的解决方案绝对是可扩展的,但是在我们的项目中这是一个相对较小的功能请求,不会有很多更改,我希望我为这个功能创建 5 个表获得批准:)。感谢您的时间和精力!
  • 如果我知道评级将保持相同类型,Service 和 RatingValue 之间的关系是什么。我想我们会少一张桌子?
【解决方案2】:

如果您允许用户更改他们的评分并希望跟踪他们的更改,您只需将 created_at 属性添加到 Rating 实体即可。通过这种方式,您始终知道当前评分(最后/最高时间戳),并且您还可以查看用户对其评分所做的哪些更改。很多数据库系统默认添加了这个属性,还有last_changed属性。

【讨论】:

    猜你喜欢
    • 2016-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多