Events(id, date);
Members(id, name, email, regiser_id, comitet_id, event_id);Comitets(id, name, event_id);
Partners(id, name, event_id);
Registration_types(id, name);
Events = [
1 => [
'id' => 1,
'name' => 'Всероссийский фестиваль Искусств «Буратино»',
'date' => '10.09.2019-12.10.2019'
],
2 => [
'id' => 2,
'name' => 'Всероссийский фестиваль Искусств «Буратино»',
'date' => '22.09.2019-24.10.2019'
],
3 => [
'id' => 3,
'name' => 'Всероссийский фестиваль Искусств «Буратино»',
'date' => '10.09.2020-12.10.2020'
]
]Events(id, date, type) //type в этом случае что-то вроде per_year, per_month итд или null если единичный тип
Event_type(id, event_id, type)
Зачем вы вставляете регистрацию в даты? В этом нет смысла, разве дата может регистрироваться? Или вы регистрирутесь на дату? Нет! Регистрироваться может человек, и регистрироваться можно на мероприятие
per_year, per_month итд или null
про нормализацию я читал. Как тогда эти мероприятия обьединить в одни данные? Их ничего не связывает... А мне нужна связь. Хотя бы для того, чтобы посчитать количество участников в мероприятии в общем с учетом всех регистраций.
Один участник может принимать участие в обе даты и в разных регистрациях.
Например, в эти выходные Вокал мероприятия Буратино. А в следующие выходные мероприятие буратино проводит Танцы. И теперь мне нужно посчитать уникальных людей мероприятия. Тут сразу встаёт ступор. Используя ваш подход это сделать невозможно. А чтобы мероприятия различались придется их назвать: Всероссийский фестиваль Искусств «Буратино» Вокал и Всероссийский фестиваль Искусств «Буратино» Танцы.
Если так разделить, то от этого нет смысла. Я уже тоже думал об этом. Даты могут быть разные. Если поставить мероприятие «ежегодное», то даты при этом останутся одни на этот и следующий год. А в нашем случае даты всегда меняются.
В эти выходные мероприятие Буратино с ID = 1, в следующие мероприятие Буратино с ID = 2. Что-бы посчитать уникальных у участников должен быть уникальный идентификатор, (не ID, так как это идентификатор внутри таблицы а не в целом) например email или ИИН. И через него смотрите кто регался на 1, но не на 2ой или наоборот.
Events = [
1 => [
'id' => UUID 1,
'group_id' => '2',
'name' => 'Всероссийский фестиваль Искусств «Буратино»',
'date' => '10.09.2019-12.10.2019'
],
2 => [
'id' => UUID 2,
'group_id' => '3',
'name' => 'Всероссийский фестиваль Искусств «Буратино»',
'date' => '22.09.2019-24.10.2019'
],
3 => [
'id' => UUID 3,
'group_id' => '3',
'name' => 'Всероссийский фестиваль Искусств «Буратино»',
'date' => '10.09.2020-12.10.2020'
]
] Если взять email или ИИН, то опять же это не уникально для каждого мероприятия. Организатор с такими данными может и проводить и другое мероприятие.
что-то я не до кона понял зачем ваш gourp_id, вы хотите сделать 2 мероприятия, и что-бы пользователи одновременно регались на оба?
А мероприятие организует оргкомитет, у которого есть свой собственный ID, и без разницы, организует он 1 ивент или 100
email и ИИН нужны не для мероприятий, а для участников мероприятия. А иметь мероприятия где каждый участник уникален и не посещал прошлые/не станет посещать будущие, это бред.