Система обратной связи, как Ebay, но для событий: схема БД - PullRequest
1 голос
/ 01 августа 2010

Я создаю систему обратной связи вроде eBay. (После покупки товара вы можете оставить отзыв о его покупке)

Но вместо продуктов свои мероприятия (вечеринки, встречи). Пользователи могут посетить событие и тогда только пользователи, которые подтвердили свое посещение, могут оставить отзыв после завершения события (известное логическим значением event_over).

Мне интересно, как лучше всего создавать строки и позволять пользователям оставлять отзывы. Когда пользователь нажимает на посещение новой строки Event_RSVP, производится.

  1. Должен ли я в то же время создать строку обратной связи для пользователей, которые щелкнули «посещение» (они могут изменить свой статус RSVP в любой момент, предшествующий событию). Но разрешить доступ к обратной связи только по окончании мероприятия?

  2. Или я должен создать сотни строк обратной связи одновременно, когда событие заканчивается для всех пользователей, которые посетили его? Затем разрешите им использовать обратную связь

текущая схема

Event       Event_RSVP      Feedback
------      -----------     -----------
id          id              id 
user_id     user_id         user_id
event_over  event_id        event_id 
            rsvp_status     message

Есть какие-либо мнения или предложения?

1 Ответ

1 голос
/ 01 августа 2010

Что касается обратной связи, я бы пошел с KISS - вставлять новую строку в таблицу «Обратная связь» только при заполнении фактической обратной связи. Нет необходимости предварительно заполнять строки.

Другой вариант - просто переместить поле «сообщения» обратной связи обратно в таблицу «Event_RSVP»; и обновите это поле после обратной связи. Недостатком здесь является то, что вы не можете иметь несколько сообщений в одном и том же отзыве, если решите, что вам это нужно, в то время как отдельную таблицу отзывов гораздо проще изменить, чтобы разместить несколько сообщений для каждого отзыва.

Кроме того, независимо от обратной связи, я бы удалил user_id из события, если бы это был идентификатор посетителя (если это был идентификатор оригинатора, я извиняюсь и оставляю его). События не должны содержать списки пользователей. Если вы хотите отследить, кому было отправлено приглашение, создайте новую таблицу «Приглашения» (event_id, user_id) или, что еще лучше, просто отследите приглашения через таблицу RSVP, вставив новую строку после отправки приглашения и обновления » rsvp_status "когда пользователь на самом деле RSVPs.

...