Дизайн базы данных для спортивной встречи (в MySQL) - PullRequest
0 голосов
/ 03 января 2009

Я пытаюсь создать базу данных для спортивной встречи.

Я думаю, что у меня есть что-то хорошее, но я не совсем уверен.

Ситуация следующая.

Существует встреча, каждый из нескольких спортивных клубов отправит несколько спортсменов: 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 минут для определенного события в определенном раунде»

Или список туров, которые один спортсмен совершил в одном соревновании, или список всех спортсменов, попавших в определенный раунд ...

Я не совсем уверен, как это добавить.

Ответы [ 2 ]

2 голосов
/ 03 января 2009

Добавить поле результатов в таблицу участия

1 голос
/ 03 января 2009

То, что вы спрашиваете, является скорее вопросом приложения, чем вопросом БД. Ваш дизайн БД выглядит хорошо для того, что вам нужно. Теперь вам нужно написать приложение для запроса к базе данных. Несколько SELECTS и JOINS, и у вас не должно быть проблем!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...