Форум истории автоспорта > Исследовательская лаборатория
Инструменты. База данных
Владимир Коваленко:
Необходимость составления и использования базы данных по автомобильным соревнованиям становится уже очень острой, и я пытаюсь найти подходящее решение этой проблемы. Простейший вариант - "экселевская" таблица. Но она получится весьма громоздкой и не будет обладать некоторыми весьма полезными функциями. Базу данных более высокого уровня, говорят, может позволить создать "Майкрософт Аксесс", но у меня не получается разобраться с возможностями этой программы. Кто-нибудь имеет опыт работы с ней?
Алексей Рогачев:
У меня есть такой опыт. Примерно года два назад начал работу над двумя базами данных в Access - по советским кольцевым гонкам и рекордным заездам. Продолжаю ее и сейчас, по мере накопления сведений.
Владимир Коваленко:
Некоторое время назад я начал приставать к Валере (pLuto) с просьбой помочь в выборе способа создания базы данных. Он попытался объяснить мне, что инструменты создания БД могут быть разные, но прежде всего надо продумать структуру БД. На этом месте я и застрял. Правда, кое-что полезное по этому поводу я нашёл на "Ностальгии": The ulimate database?
Там приведена схема баз данных со связями между ними. Правда, автор темы задумался об абсолютной БД, а у меня цели пока попроще, хотя надо всегда смотреть вперёд и предусматривать варианты развития БД.
Пока что мне нужны БД по соревнованиям, гонкам и результатам в гонках. Суть в том, чтобы всегда можно было бы сделать выборку по любому из полей таблицы (год, трасса, страна, соревнования, гонка, категория, класс, гонщик, заявитель, автомобиль и т.д.). Должен признать, что я не могу в точности очертить свои пожелания, потому что для этого мне надо знать возможность тех или иных существующих программ.
На этом этапе я застрял и с "Аксессом". Я никак не могу понять, что же он может. Я пробовал читать всякие пояснялся и объяснялки, но они написаны людьми, которые знают все возможности программы и стараются эти знания структурировать. Обычный подход, и он неудобен тем, что общая структура какой-либо программы новичку до лампочки, ему, который видит программу впервые, надо обяъснить основы на немного другим способом.
В "Аксессе" я не понимаю практически ничего. В "Экселе" просто: вот тебе таблица - заполняй. В "Аксессе" всё несколько сложнее. В чём суть этих усложнений? Какую задачу решали разработчики программы? Какие возможно открываются при таком способе построения таблиц? В чём он вообще заключается?
У меня сложилось такое впечатление, что там существуют базовые таблицы соответствий, в которых каждому появляющемуся затем в БД понятию, значению, названию и т.п. соответствует свой индекс. Упрощенно говоря, для БД по "Формуле-1" 2005 года есть таблица, в которой названию "Феррари" присвоен индекс 1, "Мак-Ларену" - 2, "Рено" - 3 и т.д. И в самой БД в ячейках столбца "Команда" будут на самом деле не сами названия, а индексы, а по ним название будет браться из базовой таблицы. Так или нет? Это было бы вполне логично для ументшения объёма БД.
Если обратиться конкретно к программе, то присоздании новой БД предлагаются три варианта: создание таблицы в режиме конструктора, с помощью мастера и путём ввода данных. Последний режим наиболее понятен, но тогда чем всё это дело отличается от "Экселя"?
Возможно, все эти вопросы кажутся глупыми, но уж больно я всё по-своему воспринимаю. От этого никуда не деться.
Алексей Рогачев:
Ух, сколько вопросов-то... Пока что могу сказать только одно: есть такое понятие "нормализованная база данных". То есть, например, если ты в одной таблице "Результаты гонок", в столбце "Команда" методично пишешь "McLaren" в каждой записи, соответствующей результатам гонщиков этой команды, то такая база данных не будет нормализованной, а если ты обозначишь "McLaren", скажем, индексом M, а в связанной таблице "Команды" сделаешь запись, что M - это команда "McLaren", да еще и добавишь какие-нибудь необходимые тебе сведения по этой команде, то это будет нормализованная БД. Как будто к такой нормализации должен стремиться каждый разработчик.
Создавать таблицы в Access лично мне легче при помощи конструктора, где сначала задается общая структура таблицы и типы данных для каждого поля, а затем эта пустая таблица заполняется данными. Если оказывается, что при создании структуры что-нибудь не предусмотрено или задано неправильно, всегда можно вернуться в конструктор и изменить параметры, при этом уже введенные данные, как правило, не теряются.
Запросы в БД - это, собственно, то, ради чего ее и стоит делать. Вместо того, чтобы долго и нудно перебирать свои веб-странички за семнадцать сезонов в поисках результатов, скажем, Энна Гриффеля, я просто открываю базу данных и в уже имеющемся созданном ранее шаблоне запроса задаю "Гриффель". Часы поиска вручную заменяются одним кликом мыши. Но и работа по созданию базы данных - это работа адская, честно скажу. Например, когда я вводил в свою БД информацию по сезону 1977 года, это потребовало в общей сложности создания примерно полутора тысяч новых записей во всех таблицах. И это один только сезон с двумя десятками гонок! А теперь представь, что ты собираешься сделать БД по всей истории мирового автоспорта. На такую работу уйдет несколько лет, даже если посвящать ей абсолютно все свободное время.
Для примера могу здесь разместить схему своей базы данных, но предупреждаю сразу: это далеко не идеал, и многие ее недостатки, не замеченные мною на начальной стадии работы, мешают мне сейчас весьма заметно. Но начинать все делать заново желания нет абсолютно никакого.Sourceress38732,5688310185
Владимир Коваленко:
Размести и, если возможно, как раз о недостатках расскажи. Это полезный опыт.
Я попробую пояснить, какого рода таблицы меня интересуют в данный момент. Мой интерес распространяется на период до начала 60-х годов. Это как раз то самое время, о котором я говорю, что тогда всё было по-другому. На самом деле сборные соревнования существуют до сих пор и никогда не исчезали, но сейчас просто принято некоторым их тогдашних гонок, входивших в состав сборных соревнований, придавать особое значение; а многие другие, имевшие значения тогда, но, "к несчастью", не имеющие в своих характеристиках "волшебных" слов, просто игнорируются.
В общем, я бы сказал, что список гонок в хронологическом порядке должен быть двухуровневым. На первом уровне указываются сборные соревнования, на втором - конкретные заезды, из которых они состояли. Скажем, какой-нибудь британский "большой приз" состоял из главной гонки и гонок поддержки. В таблице первого уровня указывается дата и характеристика всего соревнования (англичане называют это meeting). На втором - список всех гонок этого соревнования. Как правило, существовали какие-то ключевые гонки, венчавшие весь соревновательный день. Но не всегда они давали характеристику всему соревнованию. Скажем, "Международный приз КБГ" был главной гонкой всего соревнования, и другие заезды характеризовались именно через главную гонку, например: "В гонке в 500-кубовом классе во время соревнований "Международного приза" победил Мосс". А вот соревнования в Гудвуде всегда были "сборной солянкой" разнообразных гонок в разных категориях и классах. Гонки на приз Гловера или Вудкота были, несомненно, главными, но сами соревнования были известны только как пасхальные, осенние, весенние и т.п. Поэтому на первом уровне БД должно быть обозначение: "Пасхальные гонки БАРК". На втором уровне - полный список гонок.
Я ещё только занимаюсь составлением чернового списка послевоенных британских гонок, а с довоенными уже немного позанимался. Скажем, список гонок в Донингтоне 1933 года.
25.03.33 Donington D&DMC meeting (7 races)
Event One 850cc u/s or s/c
Event Two 850cc s/c & 1100cc u/s (two heats)
Event Three 850cc s/c
Event Four 1500cc u/s
Event Five 1500cc u/s (two heats)
Event Six 1500cc u/s or s/c
Event Seven 1500cc in any trim (ie Formule Libre)
13.05.33 Donington D&DMC meeting (7 races)
Event One MG Midgets & Austin 7s u/s
Event Two MG Magnas, Wolseley Hornets, Singer Nines and Rileys other than Brooklands models
Event Three 850cc in any trim
Event Four 1500cc u/s
Event Five 850cc s/c & 1100cc u/s
Event Six 1500cc u/s
Event Seven 1500cc u/s or s/c
19.08.33 Donington D&DMC meeting (9 races)
Event One 850cc Sports Cars
Event Two MG Magnas, Wolseley Hornets, Singer Nines and Rileys other than Brooklands models
Event Three 850cc s/c or u/s
Event Four 1500cc u/s Sports cars
Event Five 850cc s/c, 1100cc u/s
Event Six 1500cc s/c or u/s
Event Seven 1500cc s/c or 2500cc u/s
Event Eight 3000cc u/s or 2500cc s/c
Event Nine 3000cc u/s or s/c
07.10.33 Donington D&DMC meeting (6 races)
Event One 850cc
Event Two 1100cc
Event Three 1500cc u/s
Event Four Invitation, up to 3000cc
Event Five 3000cc
Event Six 1500cc s/c 2500cc u/s
Строчка с датой - это характеристика первого уровня, то есть описание всего соревнования. Ниже идут списки конкретных гонок. Мне надо, чтобы в БД сначала открывались только списки соревнований, а списки гонок можно было бы открыть дополнительно. Не уверен, что правильно выразил свою мысль.
Попробую так. В главной таблице будет указано:
25.03.33 Donington D&DMC meeting (7 races)
13.05.33 Donington D&DMC meeting (7 races)
19.08.33 Donington D&DMC meeting (9 races)
07.10.33 Donington D&DMC meeting (6 races)
Строки с самими гонками могут быть в этой же таблице, но их надо по умолчанию скрыть, чтобы пре необходимости можно было бы открыть и посмотреть.
Навигация
Перейти к полной версии