Проектирование базы данных: сложная система голосования - PullRequest
0 голосов
/ 14 декабря 2010

У меня есть три таблицы 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

Пользователь может проголосовать за event и feed. Таблица Vote отслеживает, кто и за что голосовал, с тех пор каждый может голосовать только один раз на event или feed. Итак, вот моя проблема: когда я создаю event Y, я также создаю feed скажем X created event Y, который появится в профиле пользователя X. Если кто-то проголосует за или фид или событие Y, за голосование и event Y и голосование feed, в котором говорится X created event Y должно оба быть 1.

а. Каков наилучший способ достижения вышеуказанного ?

б. Также, если X уже проголосовал за feed, в котором было указано X created event Y, то он больше не может голосовать за event Y и наоборот (поскольку каждый пользователь может голосовать только один раз за событие, и в этом случае feed и event действительно одно и то же)

1 Ответ

1 голос
/ 14 декабря 2010

Эта модель данных обрабатывает события и каналы отдельно, но может записывать родительский элемент Candidate. Особый (?) Случай объединенных голосов может быть обработан на прикладном уровне, разрешив голоса только по корневому кандидату WHERE ParentId is NULL.

alt text

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...