В настоящее время я нахожусь на этапе планирования создания веб-приложения для планирования (для добровольного укомплектования персоналом мероприятий), и у меня есть вопрос для тех, у кого больше опыта.
Справочная информация:
Есть календарь событий, и любой пользователь в любое время может зарегистрироваться для любого из событий. Позже, но до этого события, один из администраторов войдет и выберет «Список персонала» из зарегистрированных, а остальные будут внесены в «Альтернативный список».
До сих пор я думал о том, что будет таблица событий, таблица пользователей, а затем еще три:
- UserEvent
- Сопоставляет пользователей с событиями, на которые они зарегистрированы. Не подразумевает ни состава персонала, ни членства в списке Alt.
- UserStaff
- Сопоставляет пользователей с событиями, на которые они зарегистрированы, а также с персоналом.
- UserAlt
Тогда вопрос состоит из двух частей:
- Это хороший способ сделать это?
- Должна ли каждая из этих трех ассоциативных таблиц иметь идентификатор пользователя и идентификатор события?
Этот второй вопрос действительно тот, который я бы хотел обсудить. Кажется, что это много дублированного материала (все в UserStaff или UserAlt всегда будет в UserEvent), поэтому я думал о создании уникального ключа для таблицы UserEvent, в дополнение к составному ключу, что другие таблицы (UserStaff и UserAlt) будет ссылаться на. С другой стороны, дублированного контента меньше, с другой стороны - промежуточная таблица (UserEvent), на которую нужно ссылаться практически в каждом запросе.
Надеюсь, я был достаточно ясен, и заранее спасибо.