像stackoverflow一样创建投票系统。像这样的问题曾多次询问,我已经检查过,但我没有在投票系统中找到一个,你在评价线程和评论。我想知道最好的方法是什么?
这是最好的方法吗?
thread table
id PK
userid
title
description
comment table
id PK
userid
comment
在上表中有评级或者将它们分开吗? :
thread_rating table
threadid PK
userid PK
rating
comment_rating table
commentid PK
userid PK
rating
或只是有一个评论和线程的评级表?
答案 0 :(得分:2)
如果您的评论与线程分开,则每个评级可能没有业务在同一个表中。是的鉴于您打算如何进行主题和评论,您应该为每个评级分别设置表格。
@drachenstern提到的内容也很重要,顺便说一下;您可以使用View或其他机制执行某些操作,以跟踪选民(以及投票的)用户的总体投票。例如,SO显示我们的总上/下票,无论是问题还是答案。但与此同时,还有一些徽章,重要的是要知道哪些是哪个。
如果将表组合作为“合并”投票总数的方式,可能会发生的一个问题是,您可能必须采用不同的方式为线程和注释生成UID,以确保没有任何线程与注释相同的ID(这意味着您需要使表结构更复杂)。在这样的思路中,我的观点可能是将Threads和Comments组合到一个表中。当然,这会引入其自身的复杂性。
:)
答案 1 :(得分:1)
我认为跟踪每个投票的人是有意义的,因此<user,commentid,vote,timestamp>
的表格和<user,answerid,vote,timestamp>
的表格
否则我同意@AndrewBarber