2010-12-14 10 views
0

私は3つのテーブルFeed,VoteおよびEventを持っています。データベース設計:複合投票システム

Feed 
+id 
+content 
+voteCount --> hold the number of votes on this feed 

Vote 
+id 
+feedId --> FK to id in Feed 
+eventId --> FK to id in Event 

Event 
+id 
+name 
+voteCount --> hold the number of votes on this event 

eventfeed両方がアップ投票ユーザによることができます。 Voteテーブルでは、以後何を投票したかを把握しており、それぞれeventまたはfeedで1回のみ投票することができます。だからここに私の問題があります:event Yを作成すると、私はと言ってX created event Yと言うでしょう。これはユーザXのプロフィールに現れます。誰かがいずれかフィードまたはイベントY、両方event Yの投票とX created event Yべき両方を言っfeedの投票に投票した場合1.

なります。上記のを達成する最良の方法は何ですか?

b。またXすでにX created event Y言っfeedに投票、その後、彼はもうevent Yに投票カントとその逆(各ユーザーが唯一のイベントで一度投票することができるので、この場合のfeedeventが本当に同じものである)場合

+1

、私はあなたがフィードとイベントの間の外部キー関係が必要だと思います。 – orangepips

答えて

1

このデータモデルは、イベントとフィードを別々に処理しますが、親Candidateを記録できます。結合票の特殊(?)の場合は、ルート候補の投票のみを許可することで、アプリケーション層で処理できます。WHERE ParentId is NULLあなたの質問に基づいて

alt text

関連する問題