pro-dev
@pro-dev

Как связывать данные мероприятий?

Привет! Интересная задача нарисовалась. Необходимо как-то связывать данные в мероприятиях:
1. Оргкомитет
2. Участники
3. Партнеры
4. Регистрации

Конечно, это очень примитивно. На самом деле там будет куча всего. И теперь возникает вопрос как связывать мероприятие. С учетом того, что:
1. Одно и то же мероприятие может проходить несколько раз в разные даты или один раз (ежедневное, ежемесячное, ежегодное, переодически)
2. На каждое мероприятие или дату можно создать от 1 до 3 типов регистраций.
3. Данные должны иметь историю 2018,2019,2020 и так далее. Или по месяцам. В зависимости от периодичности.

У меня возникло две мысли как это организовать:
1. Ссылаясь на id мероприятия, с которым нужно связывать. При этом в таблице мероприятий появляется избыточность: название, организатор, афиша, контакты...
2. Создать дополнительную таблицу periods, где связывать жаты и мероприятия. И уже от периодов все наследовать: Регистрация, организатор...

Минусы:
1. Избыточность данных и постоянное добавление на каждое новое мероприятие.
2. Название мероприятия и афиша может измениться и в истории участника будет информация о другом мероприятии.

Как лучше поступить? Или есть третий вариант?
  • Вопрос задан
  • 111 просмотров
Решения вопроса 1
@Ordec
Не претендую на правильность решения, но вот как бы сделал я.
Завел бы таблицы
Events(id, date);
Members(id, name, email, regiser_id, comitet_id, event_id);

В таблице members, поля comitet_id , это принадлежность к какому либо комитету, или null, если это обычный участник. Event_id принадлежность к мероприятию.
Далее описывающие таблицы
Comitets(id, name, event_id);
Partners(id, name, event_id);
Registration_types(id, name);


event_id в таблицах comitets и partners, показывают какие есть партнеры и комитеты у данного ивента.

Рекомендую почитать про нормализацию баз данных, и посмотреть разные примеры а ютубе
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы