Я пытаюсь создать базу данных для спортивной встречи.
Я думаю, что у меня есть что-то хорошее, но я не совсем уверен.
Ситуация следующая.
Существует встреча, каждый из нескольких спортивных клубов отправит несколько спортсменов: 1 или более.
Спортсмены могут участвовать более чем в одном соревновании.
Есть несколько событий: марафон, прыжки с шестом, метание копья, ...
У каждого события есть первый раунд, четвертьфинал, полуфинал и финал.
Каждое отдельное событие имеет 1 чиновник, который снимает данные, будь то время, высота или расстояние.
Так что, в основном, здесь есть отношения N: M со спортсменами и событиями.
1 Спортсмен может участвовать во многих событиях, и есть много событий, в которые может войти более одного спортсмена.
Я думал, что с клубами и атлетами будет то же самое, но я просто добавил поле 'club_id' в таблицу Атлетов, чтобы указать, из какого клуба пришел.
Что у меня есть это:
Table Clubs:
club_id int primary key auto_increment not null,
club_name varchar(50) not null
Table Athletes:
athlete_id int primary key auto_increment not null,
athlete_name varchar(40) not null,
athlete_club int not null,
index (athlete_club),
foreign key (athlete_club) references Clubs(club_id)
Table Events:
event_id int primary key auto_increment not null, (if there's a new round, it's a new event too)
event_name varchar(40) not null,
official_id int not null,
round enum('FIRST','QUARTER','HALF','FINAL')
Table Participations:
athlete_id int not null,
event_id int not null,
primary key (athlete_id,event_id),
index (athlete_id),
index (event_id),
foreign key (athlete_id) references Athletes(athlete_id),
foreign key (event_id) references Events(event_id)
И я думаю, что это в основном так.
Чего не хватает, так это способа связать серию с результатами.
Так что я думаю, что должно быть другое отношение N: M, поскольку спортсмен может пройти в финал или где-то посередине, но каждый раунд, который они делали, их результаты должны записываться вниз.
Так, например, мне нужно иметь возможность сделать запрос, который в основном дает мне «имена всех спортсменов, время которых было быстрее, чем 5 минут для определенного события в определенном раунде»
Или список туров, которые один спортсмен совершил в одном соревновании, или список всех спортсменов, попавших в определенный раунд ...
Я не совсем уверен, как это добавить.