上下投票システムに関するヘルプを探しています。
現時点では、投票したユーザー、投票されたユーザー、および投票された情報 (駐車場) を参照する投票テーブルがあります。
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 に投票した場合
ユーザーがすでに投票したかどうか、および挿入していないかどうかを確認するにはどうすればよいですか。
ユーザー (uploaded_by_user_id) スコアを更新するにはどうすればよいですか。賛成票の場合はプラス 1、反対票の場合はマイナス 1 です。
したがって、一般的な流れは次のようになります。
ユーザーが投票を押すと、サーバーはすでに投票されているかどうかを確認します。投票されている場合は、再度投票することはできません。そうでない場合は、vote_casted_user_id = 現在のユーザー、parking_spot_id = 現在の情報、uploaded_by_user_id = 情報をアップロードした人であり、upload_by_user スコアは投票の種類に応じて更新されます。
MYSQL データベースへの JDBC 接続で Java サーブレットを使用しています。
私に何かアイデアはありますか?