投票系统,你会在同一张表中有线程投票和评论投票吗?

时间:2010-11-14 03:11:25

标签: sql

像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

或只是有一个评论和线程的评级表?

2 个答案:

答案 0 :(得分:2)

如果您的评论与线程分开,则每个评级可能没有业务在同一个表中。是的鉴于您打算如何进行主题和评论,您应该为每个评级分别设置表格。

@drachenstern提到的内容也很重要,顺便说一下;您可以使用View或其他机制执行某些操作,以跟踪选民(以及投票的)用户的总体投票。例如,SO显示我们的总上/下票,无论是问题还是答案。但与此同时,还有一些徽章,重要的是要知道哪些是哪个。

如果将表组合作为“合并”投票总数的方式,可能会发生的一个问题是,您可能必须采用不同的方式为线程和注释生成UID,以确保没有任何线程与注释相同的ID(这意味着您需要使表结构更复杂)。在这样的思路中,我的观点可能是将Threads和Comments组合到一个表中。当然,这会引入其自身的复杂性。

:)

答案 1 :(得分:1)

我认为跟踪每个投票的人是有意义的,因此<user,commentid,vote,timestamp>的表格和<user,answerid,vote,timestamp>的表格

否则我同意@AndrewBarber