Форум истории автоспорта > Исследовательская лаборатория

Инструменты. База данных

<< < (8/43) > >>

Алексей Рогачев:
Понятно пока что только одно: похоже, ты так и не сумел понять, что, как правило, связи между таблицами в базах данных - это связи типа "один-ко-многим" или "много-к-одному", а говоря иначе, в одной из двух связанных таблиц поле, по которому осуществляется связь, обязательно должно быть ключевым. У тебя же связь по ключу не осуществляется нигде, а все связи - типа "многие-ко-многим"... Черт, не могу более понятно объяснить... pLuto, помоги, а?

Владимир Коваленко:
Да я уже сам сообразил, что связи надо было осуществлять от ключевых полей, которые я везде выделил и присвоил им статус идентификатора. Собственно, я так и подумал, что лучше везде сделать идентификаторы и не пытаться использовать сами названия и имена в качестве идентификаторов.

Валерий Лутошкин:
Да, для того, собственно, и вводятся идентификаторы, чтобы их использовать в других таблицах. Во-первых, уменьшаются размеры баз (вместо строкового поля в 255 байт хранится одно-двух-четырехбайтное поле ID), во-вторых, изменение в таблице-справочнике (например, исправление опечатки в названии трассы) не ведет за собой необходимость изменений где-то еще.
Так что если перерисовать твой рисунок так, чтобы стрелки везде начинались от "Идентификатор", то будет вполне удобоваримо.
Правда, не совсем понял смысл выделения "Названия соревнований" и "Названия гонок" в отдельные таблицы - может быть много гонок/соревнований с одинаковыми названиями?
Выделение отдельной таблицы "Даты" тоже, думаю, нецелесообразно.
Сразу еще рекомендую не называть в каждой таблице поле "Идентификатор", а называть его, например, ID_страны, ID_класса и так далее. Иначе потом запутаешься в результирующих таблицах. Вообще, надо стараться не создавать в разных таблицах полей с одинаковыми названиями - если, как раз, они не связаны с другими полями с этим же названием.  Т.е., например, в таблице гонки должны быть поля:
ID_гонки (счетчик, ключевое), Дата_гонки, ID_трассы, ID_соревнования, ID_названия, ID_категории, ID_класса, Дистанция, Количество_кругов.
Сама таблица по большей части будет состоять из чисел - значений ключей других таблиц.

Валерий Лутошкин:
Кстати, какой был день недели в тот или иной день - можно получить стандартными функциями Access, соответственно, хранить в базе это значение нецелесообразно совсем.

Владимир Коваленко:
Насчёт названий соревнований и гонок. Во все времена существовала практика проводить в один день несколько гонок для разных классов. Традиционная трактовка истории автоспорта подразумевает рассмотрение каждого класса в отрыве от общей ситуации, а если посмотреть шире, то окажется, что существовали регулярные соревнования, которые имели свои традиции. Скажем, соревнования в Гудвуде или в Бруклендсе в пасхальный понедельник или в августовский выходной. Из года в год они проходили в один и тот же день и становились особым явлением. Поэтому в таблице названий соревнований должны быть и пасхальные, и августовские соревнования, и соревнования в подарочный день в Брэндс-Хэтч, и недели скорости в Ницце или Дайтоне.
А вот в составе этих соревнований были традиционные гонки. Скажем, "Приз Ричмонда" в пасхальных соревнованиях в Гудвуде сначала разыгрывался для машин "формулы-1", а "Кубок Лаванта" - 1100-кубовых; когда в 1952-53 годах "формула-1" была в забвении, в этом классе гонку ещё проводили, но "Кубок Лаванта" "повысили" до "формулы-2", а так как этот класс в 1953 оказался высшим, этот приз повысился до самого высокого статуса и в 1954 году остался в этом статусе, только формула была другая - первая.
В общем, я вижу смысл в том, чтобы списки традиционных гонок составлять. И это я ещё не упоминал основу основ традиционной трактовки - "большие призы".

Навигация

[0] Главная страница сообщений

[#] Следующая страница

[*] Предыдущая страница

Перейти к полной версии