我目前正在开发一款Android应用,我想让用户对其他用户发布的帖子进行评分。
这是我目前的设计,但是,我会将评分作为单独的表格包含在内还是包含在媒体上传表格中?
如果它是一个单独的表,它会是这样的吗?
评级表:(评级,PostID,Rating_Count,Average_Rating)
如果我的设计出现任何其他问题,我们也将不胜感激!
答案 0 :(得分:2)
这一切都取决于你希望评级如何运作,谁进行投票或投票,是否跟踪所有投票以避免同一人投票的人等等。
这就是我要做的:为每个投票添加一个唯一的数字(长?)RatingID
字段,将PostID
字段链接到评论表,添加Rating
(整数) )字段限制为0到5(或您喜欢的任何范围)的值,然后计算所有投票的平均值(删除Rating_Count
和Average_Rating
字段)。您可以定义视图来计算每个帖子的平均评分,以用于您的例程,以确定如何在帖子旁边显示它。
另外,我会为每个用户使用ID,而不是使用他们的名字。
所以我的表格看起来像这样:
RatingID, PostID, UserID, Rating
此外,为了防止用户多次投票,该表格不允许同一PostID
和UserID
的多个条目。
答案 1 :(得分:1)
这取决于您希望如何存储评级。
如果您想跟踪每个评分。您将需要一个评级表,其中包含以下内容:
Column
---------
RatingID (PK)
Username (FK) (UserDetailsID if you change the primary key of the UserDetails table)
PostID (FK)
RatingScore
DateRated
在应用中,您可以使用RankScore
撤回每个PostID
,并根据所述PostID
的计数进行计算。
我会推荐上述方法,因为它可以让你在将来使用评级做更多的事情。另外,您可以使用Comments
表格建立良好的结构。恩。显示谁评分什么和得分。
如果要将其附加到Post
表,则不需要另一个表。您只需将Rating_Count
和Average_Rating
添加到表格中即可。在您的应用中,您不必每次评价帖子时都要执行更新。您必须提取Rating_Count
和Average_Rating
,将Rating_Count
递增1,重新计算Average_Rating
并执行更新。
如果您想提高评分设置,我的第二个建议就不那么灵活了。
答案 2 :(得分:0)
您可以像这样使用担架
enter code here
$table->bigIncrements('id');
$table->bigInteger('user_id')->unsigned();
$table->ipAddress('ip')->nullable();
$table->integer('star');
$table->string('type');
$table->string('title');
$table->string('average')->nullable()->default(0);
$table->integer('count_star')->default(0)->nullable();
$table->float('star_avg')->default(0)->nullable();
$table->float('unstar_avg')->default(0)->nullable();