gpt4 book ai didi

mysql - 设计问题: symfony2 ,doctrine2,mysql数据库

转载 作者:行者123 更新时间:2023-11-29 14:31:29 24 4
gpt4 key购买 nike

我想知道如何设计得最好,所以我不会重新发明轮子

我有一个评级实体:

    /**
* Type of the read of this comment,for example quality
*
* @ORM\Column(type="string")
*/
protected $type;
/** @ORM\Column(type="datetime") */
protected $created;

/** @ORM\Column(type="integer") */
protected $thread;
/**
*
*
* @ORM\ManyToOne(targetEntity="User")
*/
private $user;

/**
* @ORM\Column(type="decimal", scale=2)
*/
protected $value;

其中,type 是共享视频的评级类型,例如“file.quality”或“file.story”。

现在我想打开视频的详细信息页面,并显示总评分(作为所有用户的平均值......还有评分,与用户无关,但来自其他地方。 ...就像 IMDB(互联网电影数据库)评级。

我正在考虑添加一个 CompleteRating 实体,每当用户将新投票添加到 Rating 实体时,我都会在其中保存平均评分并直接更新它。也许通过 symfony2 中的监听器类。

这是最好的设计方式吗?你会如何最好地处理这个问题?

最佳答案

我相信有几种方法可以做到这一点,是否有最好的方法实际上取决于您希望评级更新的频率,是否希望服务器承受压力,等等

1) 您的视频实体中可以有两列:CompleteRating、LastRatingUpdateTime。在您的存储库中,您可以有一个 GetRating 函数,每当调用它时,它都会检查上次更新时间,如果与上次评级更新相比晚了一小时,则运行更新评级的数据库查询并输出新评级。这当然意味着用户必须等待才能看到他们的选票计数,但这意味着服务器压力将会降低。

2) 也许你可能讨厌两个单独的评级,1 是外包评级(IMDB 等),它只能通过 cronjob 每晚更新,然后是在用户添加评级时计算的个人评级,甚至只是在数据库在这类事情上的速度非常快。

我的投票是 2,这实际上取决于您用于抓取 IMDB 评级的代码的密集程度。

关于mysql - 设计问题: symfony2 ,doctrine2,mysql数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9942216/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com