YahooAnswersのような質疑応答サイトを作っています。ユーザーが回答に投票できるポイントシステムが導入される予定ですが、トピックが削除された場合にユーザーが獲得したポイントを削除する必要があるかどうかはわかりません(また、トピックが削除された場合に削除されたポイントを追加し直す必要があります)投票)。これは私の主な質問につながります:これを行うための最良の方法は何でしょうか?
私はpoints
テーブルを作成し、ユーザーがポイントを獲得するたびにテーブルに記録され、points
テーブルの合計から加算/減算されusers
ます。
しかし、質問が削除された場合、獲得したポイントを差し引く(そして反対票で失ったポイントを追加する)にはどうすればよいでしょうか?
私のテーブルの構造は次のpoints
とおりです(私はSHOW CREATE TABLE points
クエリを実行しました):
CREATE TABLE `points` (
`pid` int(11) NOT NULL AUTO_INCREMENT,
`point_user` int(11) NOT NULL,
`question_id` int(11) NOT NULL,
`timestamp` int(25) NOT NULL,
PRIMARY KEY (`pid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
そしてusers
テーブル:
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`uid` int(11) NOT NULL,
`fname` varchar(30) COLLATE utf8_unicode_ci NOT NULL,
`lname` varchar(30) COLLATE utf8_unicode_ci NOT NULL,
`username` varchar(15) COLLATE utf8_unicode_ci NOT NULL,
`password` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
`confirm_key` varchar(40) COLLATE utf8_unicode_ci NOT NULL,
`email` varchar(80) COLLATE utf8_unicode_ci NOT NULL,
`user_pic` varchar(300) COLLATE utf8_unicode_ci NOT NULL,
`user_title` varchar(30) COLLATE utf8_unicode_ci NOT NULL,
`moderator` varchar(5) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'false',
`deleted` varchar(4) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'no',
`suspended` varchar(4) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'no',
`points_count` int(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
質問が削除された場合に、その質問で獲得/失ったポイントを削除/還元するのが良いかどうかはわかりません。
Stack Overflowがこれを行うことは知っていますが、はるかに高度なシステムがあります。