СГ
Светлана Голубева

Вопрос к знатокам баз данных!

Требуется разработать базу данных "мини-футбольный турнир". На этапе проектирования возникла большая загвоздка, которую по-человечески решить пока не получается. Проблема состоит в следующем. На мини-футбольном турнире каждая команда сыграет несколько игр. Перед каждой игрой, каждая команда обязана заполнять заявку на игру, куда вносятся максимум 12 футболистов с каждой стороны. Для удобства было принято решение разделить таблицу с составами гостей и таблицу с составами хозяев. В эти таблицы заносятся данные обо всех участниках всех сыгранных на данный момент игр, т. е сначала идут 12 человек одной команды, потом идут 12 человек другой команды, затем 12 человек третьей команды, а затем может быть ситуация, что снова играет первая команда и мы должны занести их в таблицу опять. У каждой игры есть свой уникальный номер - шифр игры. Ну так вот проблема в следующем - какой выставить первичный ключ для таблиц с составами? Шифр игрока нельзя, т. к. за турнир они сыграют более 1 раза, следовательно и в этой таблице будут фигурировать более 1 раза, а первичное поле дублироваться не должно. Шифр команды, шифр игры тоже нельзя поставить, по тем же причинам.
У кого-нибудь есть светлые идеи? Можно конечно обычный счетчик поставить в качестве первичного поля, но тогда это как-то по-дилетантски будет.. . хранить в бд арифметическую прогрессию, которая нигде и никак не используется.. . не подходит.. . а ничего другого пока в голову не приходит!

Екатерина Семирова
Екатерина Семирова

Разделить эти таблицы было ошибкой. Это одинаковые сущности.
Заводите таблицу "игра", в которой шифр_игры, код_гостевого_состава, код_родного_состава и таблицу
состав из кода, кода_состава (относится к вышеуказанным кодам) , номер игрока, код_икрока. Как-то так наверное.

Евгений
Евгений

Ну почему же по-дилетантски? Почему это не будет? А надо к примеру узнать в каких составах играл Иванов (может игроков не хватало и он перешёл в другую команду чтобы баланс игры был)

Для таблицы с составами нужен идентификатор состава - логично? Логично. Потому что на каждую игру может быть разный состав. Например, вчера играл Петров и сломал руку, а сегодня за него Сидоров. Я так полагаю нужны следующие таблицы:

1. Игроки (фио, возраст)
2. Команды (название, город или микрорайон, картинка-логотип)
3. Состав команд (id_команды, id_игрока, дата с которой действует этот состав)
4. Игра (дата игры, время игры, id_состава команды)
5. Справочник событий игры (название события, т. е. перечислить там гол, красная карточка, жёлтая карточка)
6. События игры (id_события из справочника, id_игры, время события, id_игрока, примечание)

По моему так.

Юл
Юлия

Правильно будет как dragunov_andrey написал.
Чтобы понять свою ошибку читай Норамальная форма

Похожие вопросы
База данных клиентов
Помогите с базой данных!!!
База данных или? (DELPHI)
знатокам по данному вопросу?
Вопрос по базе данных на Acces и Delphi внутри.
База данных для lazarus
База данных Автосалон
Базы данных. С чего начать изучение баз данных??
Вопрос о Базе данных (внутри) . Кто-нибудь знает что это?
Вопрос по базам данных.