我正在寻找一个向上下降的投票系统的帮助。
目前,我有一个投票表,它引用了投票的用户、被投票支持的用户和被投票支持的信息(停车位)。
CREATE TABLE parking_spots_votes(
vote_id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
parking_spot_id INTEGER DEFAULT NULL,
key parking_spot_id_fk (parking_spot_id),
FOREIGN KEY (parking_spot_id) REFERENCES parking_spots(id),
uploaded_by_user_id INTEGER DEFAULT NULL,
key user_id_fk (uploaded_by_user_id),
FOREIGN KEY (uploaded_by_user_id) REFERENCES parking_angel_users(id),
vote_casted_user_id INTEGER DEFAULT NULL,
key vote_cast_user_id_fk (vote_casted_user_id),
FOREIGN KEY (vote_casted_user_id) REFERENCES parking_angel_users(id),
vote_type INTEGER NOT NULL
)投票类型可以是0表示不投票,1代表向上投票,2表示否决。
现在我遇到了一点逻辑上的麻烦。
例如
如果用户已经在parking_spot
所以一般的流程是,
用户按下投票,服务器检查是否已被投票,如果已经投票,则不能再次投票。如果没有,那么vote_casted_user_id =当前用户,parking_spot_id =当前信息,uploaded_by_user_id =上传信息的人,那么uploaded_by_user分数将根据投票类型更新。
我正在使用java与MYSQL数据库的JDBC连接。
有什么好主意吗?
发布于 2011-07-20 14:05:04
您可以考虑使用parking_spot_id、uploaded_user_id、casted_user_id设置主键。
因此,当同一用户对同一上传用户的同一停车位进行投票时,您可以捕捉到异常并处理“您已经投票了!”
如果您不喜欢这样,您可以通过编写自己的控制机制来处理过程。
在保存选票之前,用parking_spot_id、uploaded_user_id、casted_user_id写一个获取记录计数的选择--如果计数大于0--这意味着已经有了一张选票,那么不要保存和给您的message.Otherwise保存选票,选择用户的投票得分,通过投票增加它并更新记录。
希望这能有所帮助。
发布于 2011-07-20 14:12:59
如果用户已经在parking_spot?
这些基本上都是同一个问题:如何测试用户是否已经对parking_spot进行了投票?只需运行一个查询,获取parking_spot_id和vote_casted_user_id匹配的记录。
如何更新用户(Uploaded_by_user_id)评分。加上一个投赞成票,减一个投反对票?
如果不是太麻烦的话,我会将vote_type的值改为+1表示向上投票,-1表示否决。那就是SELECT SUM(vote_type) FROM table WHERE uploaded_by_user_id=...的事了
我希望这能帮到你
https://stackoverflow.com/questions/6763101
复制相似问题