История автоспорта

Форум истории автоспорта => Исследовательская лаборатория => Тема начата: Владимир Коваленко от Января 14, 2006, 10:27:01

Название: Инструменты. База данных
Отправлено: Владимир Коваленко от Января 14, 2006, 10:27:01
Необходимость составления и использования базы данных по автомобильным соревнованиям становится уже очень острой, и я пытаюсь найти подходящее решение этой проблемы. Простейший вариант - "экселевская" таблица. Но она получится весьма громоздкой и не будет обладать некоторыми весьма полезными функциями. Базу данных более высокого уровня, говорят, может позволить создать "Майкрософт Аксесс", но у меня не получается разобраться с возможностями этой программы. Кто-нибудь имеет опыт работы с ней?
Название: Re: Инструменты. База данных
Отправлено: Алексей Рогачев от Января 14, 2006, 10:33:27
У меня есть такой опыт. Примерно года два назад начал работу над двумя базами данных в Access - по советским кольцевым гонкам и рекордным заездам. Продолжаю ее и сейчас, по мере накопления сведений.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Января 14, 2006, 11:33:16
Некоторое время назад я начал приставать к Валере (pLuto) с просьбой помочь в выборе способа создания базы данных. Он попытался объяснить мне, что инструменты создания БД могут быть разные, но прежде всего надо продумать структуру БД. На этом месте я и застрял. Правда, кое-что полезное по этому поводу я нашёл на "Ностальгии": The ulimate database? (http://forums.autosport.com/showthread.php?threadid=65455)
Там приведена схема баз данных со связями между ними. Правда, автор темы задумался об абсолютной БД, а у меня цели пока попроще, хотя надо всегда смотреть вперёд и предусматривать варианты развития БД.
Пока что мне нужны БД по соревнованиям, гонкам и результатам в гонках. Суть в том, чтобы всегда можно было бы сделать выборку по любому из полей таблицы (год, трасса, страна, соревнования, гонка, категория, класс, гонщик, заявитель, автомобиль и т.д.). Должен признать, что я не могу в точности очертить свои пожелания, потому что для этого мне надо знать возможность тех или иных существующих программ.
На этом этапе я застрял и с "Аксессом". Я никак не могу понять, что же он может. Я пробовал читать всякие пояснялся и объяснялки, но они написаны людьми, которые знают все возможности программы и стараются эти знания структурировать. Обычный подход, и он неудобен тем, что общая структура какой-либо программы новичку до лампочки, ему, который видит программу впервые, надо обяъснить основы на немного другим способом.
В "Аксессе" я не понимаю практически ничего. В "Экселе" просто: вот тебе таблица - заполняй. В "Аксессе" всё несколько сложнее. В чём суть этих усложнений? Какую задачу решали разработчики программы? Какие возможно открываются при таком способе построения таблиц? В чём он вообще заключается?
У меня сложилось такое впечатление, что там существуют базовые таблицы соответствий, в которых каждому появляющемуся затем в БД понятию, значению, названию и т.п. соответствует свой индекс. Упрощенно говоря, для БД по "Формуле-1" 2005 года есть таблица, в которой названию "Феррари" присвоен индекс 1, "Мак-Ларену" - 2, "Рено" - 3 и т.д. И в самой БД в ячейках столбца "Команда" будут на самом деле не сами названия, а индексы, а по ним название будет браться из базовой таблицы. Так или нет? Это было бы вполне логично для ументшения объёма БД.
Если обратиться конкретно к программе, то присоздании новой БД предлагаются три варианта: создание таблицы в режиме конструктора, с помощью мастера и путём ввода данных. Последний режим наиболее понятен, но тогда чем всё это дело отличается от "Экселя"?
Возможно, все эти вопросы кажутся глупыми, но уж больно я всё по-своему воспринимаю. От этого никуда не деться.
Название: Re: Инструменты. База данных
Отправлено: Алексей Рогачев от Января 14, 2006, 12:47:38
Ух, сколько вопросов-то... (http://oldsmile/smiley2.gif) Пока что могу сказать только одно: есть такое понятие "нормализованная база данных". То есть, например, если ты в одной таблице "Результаты гонок", в столбце "Команда" методично пишешь "McLaren" в каждой записи, соответствующей результатам гонщиков этой команды, то такая база данных не будет нормализованной, а если ты обозначишь "McLaren", скажем, индексом M, а в связанной таблице "Команды" сделаешь запись, что M - это команда "McLaren", да еще и добавишь какие-нибудь необходимые тебе сведения по этой команде, то это будет нормализованная БД. Как будто к такой нормализации должен стремиться каждый разработчик.
Создавать таблицы в Access лично мне легче при помощи конструктора, где сначала задается общая структура таблицы и типы данных для каждого поля, а затем эта пустая таблица заполняется данными. Если оказывается, что при создании структуры что-нибудь не предусмотрено или задано неправильно, всегда можно вернуться в конструктор и изменить параметры, при этом уже введенные данные, как правило, не теряются.
Запросы в БД - это, собственно, то, ради чего ее и стоит делать. Вместо того, чтобы долго и нудно перебирать свои веб-странички за семнадцать сезонов в поисках результатов, скажем, Энна Гриффеля, я просто открываю базу данных и в уже имеющемся созданном ранее шаблоне запроса задаю "Гриффель". Часы поиска вручную заменяются одним кликом мыши. Но и работа по созданию базы данных - это работа адская, честно скажу. Например, когда я вводил в свою БД информацию по сезону 1977 года, это потребовало в общей сложности создания примерно полутора тысяч новых записей во всех таблицах. И это один только сезон с двумя десятками гонок! А теперь представь, что ты собираешься сделать БД по всей истории мирового автоспорта. На такую работу уйдет несколько лет, даже если посвящать ей абсолютно все свободное время.
Для примера могу здесь разместить схему своей базы данных, но предупреждаю сразу: это далеко не идеал, и многие ее недостатки, не замеченные мною на начальной стадии работы, мешают мне сейчас весьма заметно. Но начинать все делать заново желания нет абсолютно никакого.Sourceress38732,5688310185
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Января 14, 2006, 13:41:28
Размести и, если возможно, как раз о недостатках расскажи. Это полезный опыт.
Я попробую пояснить, какого рода таблицы меня интересуют в данный момент. Мой интерес распространяется на период до начала 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)

Строки с самими гонками могут быть в этой же таблице, но их надо по умолчанию скрыть, чтобы пре необходимости можно было бы открыть и посмотреть.
Название: Re: Инструменты. База данных
Отправлено: Алексей Рогачев от Января 14, 2006, 14:03:07
Цитата: Владимир Коваленко
Мне надо, чтобы в БД сначала открывались только списки соревнований, а списки гонок можно было бы открыть дополнительно. Не уверен, что правильно выразил свою мысль.

Понимаешь, собственно исходные таблицы в базе данных предназначены не столько для непосредственного просмотра, сколько для создания на их основе запросов. Если ты хочешь просто просматривать таблицы, то лучше использовать Excel - проще и меньше возни, а функции фильтров и поиска там, кажется, тоже имеются. Так что сначала, прежде чем браться за создание БД, сформулируй себе цели: какую информацию она должна включать, какие типы запросов на основе этой информации ты собираешься строить, какая степень подробности тебе необходима. Главное - типы запросов. Будут ли это просто списки гонок сезона, результаты отдельных гонок, выборки по конкретным гонщикам, автомобилям или командам, статистика по числу побед или, например, пройденных в гонках кругов? В зависимости от задач, которые ты будешь ставить, и будет определяться структура твоей будущей БД. Как говорил на четвертом курсе наш препод по предмету "Базы данных", это называется "концептуальный уровень создания БД", и он непременно должен быть самым первым. Так что давай следовать канонам, а не пытаться бросаться сразу в омут (http://oldsmile/smiley2.gif)Sourceress38732,0610648148
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Января 14, 2006, 14:06:01
Давай следовать канонам, кто ж спорит? Итак, что такое вообще запросы?
Название: Re: Инструменты. База данных
Отправлено: Алексей Рогачев от Января 14, 2006, 14:20:28
Не уверен, что способен дать исчерпывающе правильное определение, - может, pLuto сможет, если сюда заглянет? Но я попробую. Запрос - это команда выбрать из базы данных и вывести для просмотра в виде таблицы некоторые сведения, условия отбора которых задает сам пользователь. При этом выданная пользователю конечная таблица вовсе не обязательно должна состоять из столбцов одной-единственной исходной таблицы БД - это могут быть данные, взятые из разных таблиц, которые в структуре базы данных связаны между собой.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Января 14, 2006, 14:23:17
Понял. Буду думать.
Название: Re: Инструменты. База данных
Отправлено: Валерий Лутошкин от Января 14, 2006, 16:08:02
Я вообще редко сюда заглядываю...
Но определение Алексея с моей кочки зрения абсолютно правильное, единственное уточнение - что потенциально непрофессионал может не понять: "вывести для просмотра в виде таблицы" - это не обязательное действие. Результат может и в памяти осесть и потом как-то разбираться программным кодом.
Подробнее о запросах и о построении баз данных можно прочитать в старой канонической книге Мартина Грубера "Понимание SQL". Книга гениальная. Начало там рассчитано на неподготовленных людей (хотя и с техническим складом ума), поэтому, думаю, первые пару-тройку глав для общего понимания концепции Владимиру будет прочитать нелишним. К Access оно не привязано совсем, но, думается мне, это не страшно.
http://doc.marsu.ru/lang/sql/sql2/index.html - вот здесь она в текстовом виде вся.
Название: Re: Инструменты. База данных
Отправлено: Алексей Рогачев от Января 14, 2006, 16:52:40
Вот структура моей БД:
(http://www.stop-n-go.ru/ussr-autosport/images/database.png)
Про недостатки расскажу завтра.
Название: Re: Инструменты. База данных
Отправлено: Алексей Рогачев от Января 15, 2006, 05:57:40
Итак, обещанный рассказ о недостатках. Таковых я в своей базе данных насчитываю шесть:
1. ID гонки. У меня он числовой, шестизначный, например 741601 значит "1974 год, шестнадцатые соревнования сезона, первая гонка". Задумывал я эти ID с тем расчетом, чтобы они не только служили ключом таблицы, но по ним можно было также задавать год при создании запросов, например, 1974 год кодировался бы как ">740000 and <750000". Это, разумеется, работает, но я тогда как-то не сообразил, что гораздо проще и естественнее будет работать с полем "Дата проведения". В итоге это привело к тому, что создать запрос на результаты какой-нибудь конкретной гонки очень сложно: надо или лезть в таблицу "Гонки" и искать там вручную нужное значение ID, или писать в запросе полное название гонки, например "Гонки на приз "Янтарная "Волга""" (со всеми кавычками). Выходом из положения могло бы стать создание составного ключа в таблице "Гонки", а именно состоящего из трех полей: "ID-год", "ID-соревнования", "ID-гонка". Тогда вместо 741601 эти три поля содержали бы такие значения: 74, ЯВ, 01. "ЯВ" - это "Янтарная "Волга"", и такие двух- или трехбуквенные обозначения можно было бы придумать для всех соревнований. Их легко запомнить, и тогда запрос на результаты той гонки создать было бы очень легко, задав значения 74 и ЯВ в соответствующих полях конструктора запросов. Возможно, тогда я еще просто не понимал, что ключ может быть составным, да и сейчас, хотя эта идея и реализована в таблице "Результаты отдельных заездов", я отношусь к составному ключу весьма настороженно...
2. Место. В таблице "Результаты гонок" пришлось установить для этого поля не числовое, а текстовое значение, чтобы можно было вписывать в него такие обозначения, как НФ, НС, НК и ДК. В результате нельзя составить запрос типа: "выбрать гонщиков, занявших места с четвертого и ниже". В отличие от предыдущего случая, этот вопрос встал передо мной сразу же при создании таблицы, но найти разумный выход из положения я не сумел и поэтому вынужден был сделать поле текстовым. Да и сейчас не знаю, как поступить. Можно было бы, конечно, сделать два поля, одно из которых будет текстовым, а другое - числовым (в нем все сошедшие, дисквалифицированные, не стартовавшие кодировались бы нулем), но это только увеличит объем БД и сделает ее более громоздкой.
3. Результаты чемпионатов СССР. Таблица нужная, без нее никуда. Но чемпионаты-то эти далеко не всегда были многоэтапными, порой они состояли из одной-единственной гонки, а значит, в этих случаях таблица "Результаты чемпионатов СССР" попросту дублирует записи в таблице "Результаты гонок", и при пополнении БД информацией приходится их вводить дважды. Это проблема фундаментальная, на стадии создания БД я ее не предвидел, потому что тогда таблицу с результатами чемпионатов еще и не задумывал вовсе.
4. Быстрейшие круги в гонках. Порой случалось так, что быстрейший круг в гонке показывали двое, а то и трое гонщиков (при хронометраже с точностью до 0,1 с это случалось не так уж и редко), а до 1959 года экипаж состоял из двух человек. В таких случаях в поле "Быстрейший круг (имя)" приходится писать два имени, а в поле "Быстрейший круг (фамилия)" - две фамилии. Это делает невозможным выбор по запросу одной из этих фамилий.
5. Общее время гонки приходится задавать в секундах, а не в часах, минутах и секундах, потому что в Access я попросту не нашел такого формата поля.
6. Соответствия между временем, скоростью, отставанием от лидера и дистанцией. По-хорошему надо было бы связать эти поля, чтобы значение одного рассчитывалось автоматически по значениям других. Я думал на этим, но тут сыграла роль специфика данных, с которыми я работаю. Порой я знаю скорость, но не знаю дистанцию и время; знаю время, но не знаю скорость и дистанцию; знаю отставание от лидера, но не знаю времени лидера. Мастер подстановок эти пробелы, боюсь, не переварил бы. Поэтому при занесении в БД гонок, о которых имеется много информации, вплоть до времени каждого из участников, приходится выполнять все расчеты вручную, а при изменении одного из параметров пересчитывать все остальные. Иногда бывает и так, что из-за неточности или противоречивости данных скорость, время и дистанция не соответствуют друг другу.Sourceress38732,7761921296
Название: Re: Инструменты. База данных
Отправлено: Александр Готвянский от Января 15, 2006, 16:55:31
 
Цитата: Sourceress
Итак, обещанный рассказ о недостатках. Таковых я в своей базе данных насчитываю шесть:
 
 
2. Место. В таблице "Результаты гонок" пришлось установить для этого поля не числовое, а текстовое значение, чтобы можно было вписывать в него такие обозначения, как НФ, НС, НК и ДК. В результате нельзя составить запрос типа: "выбрать гонщиков, занявших места с четвертого и ниже". В отличие от предыдущего случая, этот вопрос встал передо мной сразу же при создании таблицы, но найти разумный выход из положения я не сумел и поэтому вынужден был сделать поле текстовым. Да и сейчас не знаю, как поступить. Можно было бы, конечно, сделать два поля, одно из которых будет текстовым, а другое - числовым (в нем все сошедшие, дисквалифицированные, не стартовавшие кодировались бы нулем), но это только увеличит объем БД и сделает ее более громоздкой.
 

 
Вмешаюсь и я. Опыт с Access имел небольшой, но в универе для лучшего понимания БД просто для себя пытался составлять себе базы данных с футбольными результатами, а этим летом пытался упорядочить свою музыкальную колекцию. Рекомендую сделать для себя простенькую базу небольшого объема для понимания основных принципов построения и поджидающих в будущем ошибок. Потом просто будет легче.
 
Для указания всяких НС, НК, НФ и др. предлагаю просто присвоить им числовые индексы типа -1, -2 и т. д. Это не нарушит логики таблицы и в то же время позволит присвоить полю тип "Числовой"
Название: Re: Инструменты. База данных
Отправлено: Алексей Рогачев от Января 15, 2006, 17:17:03
Черт побери!! Все гениальное просто!! (http://oldsmile/smiley32.gif)
Название: Re: Инструменты. База данных
Отправлено: Александр Готвянский от Января 15, 2006, 17:43:42
 (http://oldsmile/smiley14.gif) Не надо аплодисментов. Я вот только что подумал, что эти цифры будут вылазить перед обладателем первых мест, поскольку они меньше. Лучше наверное заменить их на, например, 101,102 и т.д. Все равно таких финишных позиций не бывает. Но попробуй и первый вариант. Может тебе и так сойдет, я же не знаю твоих запросов.
Название: Re: Инструменты. База данных
Отправлено: Алексей Рогачев от Января 15, 2006, 17:49:52
Да нет, я-то оставлю у себя все как есть, потому что в таблице "Результаты гонок" уже больше пяти тысяч записей, и вводить новое поле и заполнять его вручную будет очень уж трудоемко (http://oldsmile/smiley5.gif) А вот для вновь создаваемой БД такой подход может здорово пригодиться.
Название: Re: Инструменты. База данных
Отправлено: Валерий Лутошкин от Января 16, 2006, 06:13:01
Мне не кажется хорошей идеей использовать в качестве _идентификатора_ чего-либо значимые параметры. Потому что практически невозможно предсказать, в каком месте нехватит заложенных в идентификатор ограничений на то или иное значение.
С моей кочки зрения наилучшее решение - когда именно идентификатор внутри базы - это простое поле Counter, т.е. уникальный неповторяющийся цифровой счетчик, значения которого присваиваются автоматически.
Дата, соревнование и прочие записи, которые, как я понял, использовались в ID, должны просто храниться в отдельных полях и, соответственно, ссылаться на конкретные ID (опять же, счетчики) в других базах.
Тогда любая реструктуризация базы (необходимость которой существует _всегда_) не приведет к катастрофическим последствиям.
Хотя это, конечно, мое кочкообразное суждение :) Но выстраданное достаточно большим опытом проектирования.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Января 16, 2006, 11:18:24
Пускай вас не смущает отсутствие моих комментариев - я читаю и перевариваю, но пока с трудом.
Название: Re: Инструменты. База данных
Отправлено: Алексей Рогачев от Января 16, 2006, 12:55:41
Мой шестизначный ID устроен так, что ограничения, в него заложенные, ни в коей мере мешать не могут. Суди сам: годы, которые будут представлены в БД, целиком относятся к XX веку, значит, двух первых цифр вполне хватит. Больше двух с небольшим десятков соревнований за сезон в СССР не проводилось никогда, значит, тоже достаточно двух цифр. И, наконец, каждое из этих соревнований включало в себя максимум десять гонок - еще две цифры. С этим как раз все в порядке. Счетчики в качестве ключа я стараюсь, наоборот, не использовать именно потому, что значение не несет никакого смысла и лишь увеличивает объем базы данных впустую. А если бы я в таблице "Гонки" поставил счетчик в качестве ключа, запрос на результаты гонки вообще стал бы кошмаром, потому что пришлось бы набирать в запросе полное длинное название гонки, со всеми запятыми и кавычками. Идея составного значимого ключа, который бы служил основой для запросов, пришла мне в голову слишком поздно...
Название: Re: Инструменты. База данных
Отправлено: Сергей Блинов от Января 16, 2006, 13:49:10
Тоже немножко прокомментирую:
1. ID - согласен с pLuto. Конечно можно позабивать и со смыслом номера, но можно запутаться и случайно присвоить одинаковые номера.
2. Суть структуры в чем, в том, что показываются связи между различными таблицами данных, которые в свою очередь являются самостоятельными источниками. Если с помощью правильно построенных запросов(отчетов, форм и т.п.) можно вывести таблицу "Результаты чемпионатов СССР", тогда эта таблица и не нужна.
3. Можно выполнять запросы "по содержанию", т.е. если есть в графе БК 2 фамилии запрос на 1 из них, уже будет удовлетворять условию отбора. В крайнем случае можно использовать поиск по маске *name*.
4. Для времени можно придумать вывод в форму (все равно так смотреть результаты удобнее) с приведением к виду чч.мм:сс делением без остатка на 3600 и 60 соответственно
5. Результат гонки есть прохождение определенной дистанции за определенное время, поэтому для отставших менее чем на круг определенно надо задавать временем, среднюю скорость, отставание в сек от лидера расчитывалось машиной. Здесь я имею ввиду что лучше забивать в таблицы минимум данных, которые могли бы быть получены автоматически.
6. Отрицательные номера лучше, кто знает вдруг появится необходимость протоколировать соревнования с большим кол-вом участников. Можно будет отсортировать по маске.
Название: Re: Инструменты. База данных
Отправлено: Алексей Рогачев от Января 16, 2006, 14:06:22
1. Как можно ввести одинаковые значения в ключевое поле? Access тут же выдаст сообщение, что значения поля повторяются.
2. Если бы все чемпионаты СССР состояли из одной гонки, таблица не была бы нужна, но ведь чемпионаты-то были как многоэтапные, так и одноэтапные...
3. Можно подробнее? Что такое запрос по содержанию и как он строится в Access?
4. Форм у меня в БД нет - возни много, а толку мало. Все равно они мне не нужны (по крайней мере, на данный момент, когда база данных еще очень далека от завершения).
5. Все верно, лучше минимум данных, остальное вычисляется автоматически. Но я уже писал выше, что те данные, с которыми я работаю, не дают мне возможности автоматизировать вычисления.Sourceress38733,952650463
Название: Re: Инструменты. База данных
Отправлено: Валерий Лутошкин от Января 17, 2006, 10:30:09
Цитата: Sourceress
Мой шестизначный ID устроен так, что ограничения, в него заложенные, ни в коей мере мешать не могут. Суди сам: годы, которые будут представлены в БД, целиком относятся к XX веку, значит, двух первых цифр вполне хватит. Больше двух с небольшим десятков соревнований за сезон в СССР не проводилось никогда, значит, тоже достаточно двух цифр. И, наконец, каждое из этих соревнований включало в себя максимум десять гонок - еще две цифры. С этим как раз все в порядке. Счетчики в качестве ключа я стараюсь, наоборот, не использовать именно потому, что значение не несет никакого смысла и лишь увеличивает объем базы данных впустую. А если бы я в таблице "Гонки" поставил счетчик в качестве ключа, запрос на результаты гонки вообще стал бы кошмаром, потому что пришлось бы набирать в запросе полное длинное название гонки, со всеми запятыми и кавычками. Идея составного значимого ключа, который бы служил основой для запросов, пришла мне в голову слишком поздно...

Я о чем и говорю - для текущих задач этого индекса хватает, но если тебе когда-нибудь захочется расширить базу - да тривиально добавить туда 19 или 21 век - то ты уже натыкаешься на концептуальную невозможность этого. Если ты уверен на 100%, что никогда не захочешь расширить свою базу и эта база никогда не будет включена в чужие как подмножество - тогда конечно. Но такая уверенность - штука крайне редкая.
А про запрос на результат гонки - не понял. Ты же знаешь дату ее проведения, почему ты не делаешь запрос по дате? Я уж не говорю про ключевое слово NEAR, которое позволяет искать по части поля (например, по части названия).
В современных условиях, когда размер - далеко не самый определяющий параметр, экономить на спичках (т.е. на счетчиках) я бы таки не стал. Хотя каждому свое, конечно.
Название: Re: Инструменты. База данных
Отправлено: Алексей Рогачев от Января 17, 2006, 12:54:03
Раз меня интересует исключительно советский автоспорт, то шестизначный индекс вполне удовлетворяет этим условиям. Дореволюционными и нынешними российскими гонками заниматься не планирую - это стопроцентно. Первыми давно уже занимается другой человек, ну а на нынешний автоспорт и без меня знатоки найдутся.
Запрос на результаты гонки подразумевает, что мне надо найти их, зная только год и название гонки. Не могу же я знать даты всех проведенных гонок! А с использованием NEAR вышел некоторый облом. Какой там синтаксис выражения с его использованием?
Название: Re: Инструменты. База данных
Отправлено: Валерий Лутошкин от Января 18, 2006, 06:05:59
Сорри, про NEAR я прогнал - потерял мысль. Конечно же, имелся в виду оператор LIKE.
WHERE (DATE BETWEEN 19550101 AND 19551231) AND (NAME LIKE '%КУБОК%')
выдаст все гонки 1955 года, в названии которых присутствует слово КУБОК.
Название: Re: Инструменты. База данных
Отправлено: Алексей Рогачев от Января 18, 2006, 10:32:55
Насколько я понимаю, это часть запроса, составленного на SQL... А  конструктор запросов в Access подобное выражение поймет?
Название: Re: Инструменты. База данных
Отправлено: Сергей Блинов от Января 18, 2006, 11:15:42
В Access запросы можно писать и на SQL. Нужно только привести запрос к данному виду (выбрать в меню).Sergey38735,8349189815
Название: Re: Инструменты. База данных
Отправлено: Алексей Рогачев от Января 18, 2006, 11:19:15
Это я знаю, но уж больно неохота связываться с SQL, раз есть конструктор... (http://oldsmile/smiley9.gif)
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Января 28, 2006, 08:37:58
Почитал я Валерину книжку, посмотрел на дискуссию, посоображал маленько и решил, что чего-то понял и пора приступать к работе.
Для начала мне надо немного - только списки гонок, но надо заранее заложить в БД возможность безболезненного расширения путём добавления новых таблиц.
Как я понял, в любой таблице всегда существует столбец с уникальными данными, которые нигде больше не повторяются. Остальные данные в строке могут появляться несколько раз в БД. Скажем, если это название трассы, то повторяющимися данными будет название страны и местонахождение.
"Нюрбургринг"         Нюрбург     Германия
"Хоккенхаймринг"      Хоккенхайм  Германия
"Монжуик"             Барселона   Испания
"Каталунья Монтмело"  Барселона   Испания

Поэтому сначала надо всё продумать, решить какие данные в таблице будут повторяющимися и следать для них отдельные таблицы, из на которые просто делать типа ссылок. В приведённом примере надо сделать две таблицы: для городов и стран. В таблице городов могут быть такие поля, как страна, координаты и, возможно, что-то ещё. Поскольку названия городов могут и совпадать, их не получится принять в качестве ключевых слов, поэтому в таблице будет отдельный, ключевой столбец с идентификатором, уникальный для данной совокупности "город-страна-координаты".
В таблице стран может быть только один столбец - с названием страны. Больше от неё ничего не надо.
Таким образом, составляя каталог трасс, мы будем одновременно заполнять три таблицы, но это будет не утроение работы, а упрощение с точки зрения перспективы. Вносим в таблицу стран Германию и обращаемся к таблице городов, в которую вносим Нюрбург и делаем связь с названием страны в соответствующей таблице. Правильно я мыслю?
Теперь заполняем главную таблицу, трасс, и вносим в неё название трассы и тут же связываем его с таблицей городов, из которой добывается, при необходимости, город и дальше по связи - название страны.
Название трассы может повторяться, особенно, если у ней нет названия, а есть описание (типа четвертьмильный трек где-нибудь на городской ярмарке в Айдахо); либо параметры трассы могут меняться, и столбец с названием трассы может оказаться не уникальным. Уникальным оказывается сочетания нескольких параметров. Для каждого их них просто присваивается идентификатор. Это и есть ключевое поле.
Скажем, идентификатор 001 - это сочетания названия "Нюрбургринг" и длины одного из вариантов, возьмём 22 км. 002 - это "Нюрбургринг" и 4,5 км, 003 - это "Нюрбургринг" и 20 км. В зависимости о того, на каком варианте трассы проводится гонка, мы ставим в поле "Трасса" идентификатор 001, 002 или 003. То есть реально в ячейках будут идентификаторы, а для поля будет задана связь с таблицей трасс, и если мне надо будет посмотреть список гонок в каком-то году (это мы не обсуждались, но такая БД будет строиться по такому же принципу), база будет по связям обращаться к нужным идентификаторам и вытаскивать из различных мест нужные названия.
Правильно я мыслю?
Название: Re: Инструменты. База данных
Отправлено: Александр Готвянский от Января 28, 2006, 12:40:09
В общем да. А в частностях я и сам не разбираюсь (http://oldsmile/smiley4.gif)
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Января 28, 2006, 13:43:53
Начал разбираться конкретно в работе "Аксесса".
"Создание таблицы с помощью мастера", как мне кажется, не подходит. Теоретически там можно найти поля, которые полходят под ситуацию, но на самом деле лучше всё делать самому. Поэтому лучше использовать конструктор?
Делаю первую таблицу - "Страна". В ней пока одно поле, с названием страны. Нужен ли дополнительный идентификатор, или само название может служить идентификатором? Может ли идентификатор быть криллическим? Если нет, то название страны не подходит. Можно в качестве идентификатора воспользоваться международными кодами (RUS, AUT, D, F и т.д.)? Что надо делать, чтобы оставить в будущем возможность добавлять поля (скажем, может понадобиться добавлять названия этой страны на разных языках)?
Название: Re: Инструменты. База данных
Отправлено: Алексей Рогачев от Января 28, 2006, 16:04:41
Я не совсем все-таки понял, что ты писал в предыдущем сообщении. Гораздо более понятно было бы, если бы ты начертил схему связи таблиц, которые ты хочешь делать, и выделил бы в них ключевые поля (подобно схеме на предыдущей странице темы). Тогда вникнуть в суть твоих идей стало бы куда проще, ergo, дать совет - тоже проще. Пока что могу с уверенностью сказать насчет таблицы стран. Ясно, что здесь связь будет типа "один-ко-многим", значит, поле, по которому будет осуществляться связь (какое бы ты ни выбрал - международный код или что-нибудь еще), должно быть ключевым в таблице стран. Поля в будущем можно добавлять практически без ограничений - конструктор таблиц это позволяет сделать без труда.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Января 28, 2006, 23:40:16
Ключевое поле может быть на кириллице?
И если в таблице гонок мне нужны поля трасс и стран, а страны связаны уже с таблицей трасс, то можно ли делать связь из таблицы гонок только с таблицей трасс, чтобы при этом автоматически отображалась страна?
Попробую начертить схему.
Название: Re: Инструменты. База данных
Отправлено: Алексей Рогачев от Января 29, 2006, 03:51:07
Кажется, кириллица вполне может быть использована для ключевого поля... Ну да, точно, я же использовал ее для ID автомобилей в таблице "Автомобили". И ничего - работает!
А на второй вопрос смогу ответить, скорее всего, лишь имея перед глазами предполагаемую схему твоих данных... Так что ждем-с (http://oldsmile/smiley2.gif)
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Января 29, 2006, 04:03:16
Да вот, рисую.
Кстати, Валера, помнишь, как ты мне пытался объяснять, что прежде чем создавать базу данных, надо хорошо продумать всю структуру, а я никак не мог этого понять. Я этого не понимал, потому что не понимал сам принцип построения бад данных из отдельных таблиц для уникальных данных. То есть создаются отдельные таблицы для стран, городов, трасс, гонщиков, автомобилей и т.п., а собственно та БД, ради которой всё это затевается - это совокупность ссылок из общей таблицы на поля и ячейки частных. Вот тут действительно надо сначала чётко представить структуру.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Января 29, 2006, 05:09:07
Получилось вот что:
(http://uploads/UnknownUser/2006-01-29_135357_database-05.gif)
Понятно из этого что-нибудь?
Название: Re: Инструменты. База данных
Отправлено: Алексей Рогачев от Января 29, 2006, 05:36:57
Понятно пока что только одно: похоже, ты так и не сумел понять, что, как правило, связи между таблицами в базах данных - это связи типа "один-ко-многим" или "много-к-одному", а говоря иначе, в одной из двух связанных таблиц поле, по которому осуществляется связь, обязательно должно быть ключевым. У тебя же связь по ключу не осуществляется нигде, а все связи - типа "многие-ко-многим"... Черт, не могу более понятно объяснить... pLuto, помоги, а? (http://oldsmile/smiley9.gif)
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Января 29, 2006, 06:20:15
Да я уже сам сообразил, что связи надо было осуществлять от ключевых полей, которые я везде выделил и присвоил им статус идентификатора. Собственно, я так и подумал, что лучше везде сделать идентификаторы и не пытаться использовать сами названия и имена в качестве идентификаторов.
Название: Re: Инструменты. База данных
Отправлено: Валерий Лутошкин от Января 30, 2006, 09:01:59
Да, для того, собственно, и вводятся идентификаторы, чтобы их использовать в других таблицах. Во-первых, уменьшаются размеры баз (вместо строкового поля в 255 байт хранится одно-двух-четырехбайтное поле ID), во-вторых, изменение в таблице-справочнике (например, исправление опечатки в названии трассы) не ведет за собой необходимость изменений где-то еще.
Так что если перерисовать твой рисунок так, чтобы стрелки везде начинались от "Идентификатор", то будет вполне удобоваримо.
Правда, не совсем понял смысл выделения "Названия соревнований" и "Названия гонок" в отдельные таблицы - может быть много гонок/соревнований с одинаковыми названиями?
Выделение отдельной таблицы "Даты" тоже, думаю, нецелесообразно.
Сразу еще рекомендую не называть в каждой таблице поле "Идентификатор", а называть его, например, ID_страны, ID_класса и так далее. Иначе потом запутаешься в результирующих таблицах. Вообще, надо стараться не создавать в разных таблицах полей с одинаковыми названиями - если, как раз, они не связаны с другими полями с этим же названием.  Т.е., например, в таблице гонки должны быть поля:
ID_гонки (счетчик, ключевое), Дата_гонки, ID_трассы, ID_соревнования, ID_названия, ID_категории, ID_класса, Дистанция, Количество_кругов.
Сама таблица по большей части будет состоять из чисел - значений ключей других таблиц.
Название: Re: Инструменты. База данных
Отправлено: Валерий Лутошкин от Января 30, 2006, 09:03:26
Кстати, какой был день недели в тот или иной день - можно получить стандартными функциями Access, соответственно, хранить в базе это значение нецелесообразно совсем.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Января 30, 2006, 09:50:10
Насчёт названий соревнований и гонок. Во все времена существовала практика проводить в один день несколько гонок для разных классов. Традиционная трактовка истории автоспорта подразумевает рассмотрение каждого класса в отрыве от общей ситуации, а если посмотреть шире, то окажется, что существовали регулярные соревнования, которые имели свои традиции. Скажем, соревнования в Гудвуде или в Бруклендсе в пасхальный понедельник или в августовский выходной. Из года в год они проходили в один и тот же день и становились особым явлением. Поэтому в таблице названий соревнований должны быть и пасхальные, и августовские соревнования, и соревнования в подарочный день в Брэндс-Хэтч, и недели скорости в Ницце или Дайтоне.
А вот в составе этих соревнований были традиционные гонки. Скажем, "Приз Ричмонда" в пасхальных соревнованиях в Гудвуде сначала разыгрывался для машин "формулы-1", а "Кубок Лаванта" - 1100-кубовых; когда в 1952-53 годах "формула-1" была в забвении, в этом классе гонку ещё проводили, но "Кубок Лаванта" "повысили" до "формулы-2", а так как этот класс в 1953 оказался высшим, этот приз повысился до самого высокого статуса и в 1954 году остался в этом статусе, только формула была другая - первая.
В общем, я вижу смысл в том, чтобы списки традиционных гонок составлять. И это я ещё не упоминал основу основ традиционной трактовки - "большие призы".
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Февраля 12, 2006, 02:14:12
А вот такой вариант понятен?
(http://uploads/UnknownUser/2006-02-12_105909_database-04.jpg)
Название: Re: Инструменты. База данных
Отправлено: Алексей Рогачев от Февраля 12, 2006, 18:01:31
Ух... Я честно пытался вникнуть в столь запутанную структуру, но мозгов не хватило (http://oldsmile/smiley9.gif) Похоже, ты хочешь все и сразу. А не проще ли было бы составить сначала две-три основные таблицы, связать их, внести в каждую по десятку тестовых записей и испытать на этом "макете" все виды запросов, какие он может обеспечить? Если все работает, пристрой следующую табличку, снова пробные записи и пробные запросы с использованием этой новой таблички. И так далее. Понимаешь, тут есть риск с ходу потеряться во всей этой паутине связей и самому забыть, как устроена твоя база данных. Хотя это я рассуждаю со своей точки зрения; тебе-то, как творцу всего этого, наверняка схема понятна. Но все-таки осмелюсь дать тебе совет: когда связываешь два поля в разных таблицах, лучше называй его одинаково и в той, и в другой - для пущей ясности.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Февраля 12, 2006, 22:36:19
Цитата: Sourceress
Но все-таки осмелюсь дать тебе совет: когда связываешь два поля в разных таблицах, лучше называй его одинаково и в той, и в другой - для пущей ясности.

А так как одно из связываемых полей всегда - идентификатор, то вместо названия поля везде будут названия идентификаторов?
Возможно, проще будет понять всё это, если напомнить, что всё это безобразие задумано ради двух основных таблиц, расположенных в левой верхней части, в которых должна быть информация о соревнованиях и гонках. Представь себе где-нибудь в журнале список соревнований: дата, трасса, соревнование. "Соревнование" - это несколько гонок, проводимых в один день. Вот, скажем, как на этапах чемпионата СССР или "Кубка дружбы". Зачастую необязательно знать списки гонок, надо посмотреть или отсортировать лишь соревнования. Но также надо иметь и использовать информацию о конкретных гонках: дата, трасса, название или описание гонки, категория, класс, количество кругов, дистанция.
Вот, это две остальные таблицы, остальные - это таблицы для полей с повторяющейся информации. Они нужны для того, чтобы заполнить эти основные таблицы.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Февраля 13, 2006, 03:06:38
Может, в схеме БД стоит что-то выделять цветами для пущей наглядности?
Я представил англоязычный вариант схемы в теме The ulimate database? (http://forums.autosport.com/showthread.php?s=&threadid=65455) и получил кое-какие дельные отклики. Аллен Браун ещё дал ссылку на тему Scribble, Scribble, Scribble (http://forums.autosport.com/showthread.php?threadid=15732).
Один из его советов - собирать нужную информацию в текстовом формате, находить в ней самые необычные и сложные случаи и строить БД с их учётом. Логично.
Ещё я не задумывался о сревнованиях, длившихся несколько дней. Это тоже надо учесть.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Февраля 19, 2006, 09:25:14
Прочёл эти темы, и в них упоминаются язык SQL и формат XML. Я плохо представляю, о чём идёт речь, но хочу понять, есть ли смысл мне разбираться в этих языках-форматах, либо достаточно освоить "Аксесс". Кто-нибудь может пояснить?
Название: Re: Инструменты. База данных
Отправлено: Сергей Блинов от Февраля 20, 2006, 11:10:36
Как мне один друг программист написал, заранее прошу прощения за стиль
Цитата: Will
А че тут велосипед изобретать?
Чтоб отовсюду доступно было - только сайт.
Если сайт - то Mysql + php + домен + программист
Вот и все. Че еще?
 
Пусть ищут себе программера и делают. самим им не сделать (судя по их уровню
общения на форуме).
 
Если access - то проблема с обновлением: им придется достаточно часто
выкладывать свою базу, а вам (тебе в том числе) придется все время эти
обновления скачивать.
 
К тому же, в первом случае можно работу по заполнению базы разделить: скажем
есть 4 добросовестных человека, вот они каждый в базу и вносят добавления. У
каждого свой логин/пасс, права, обязанности и т.д.
 
Могут поискать готовые движки, но по-моему навряд ли найдут - т.к. ваша
дрянь узкоспециализированная.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Февраля 20, 2006, 12:47:34
Стиль пока не имеет значения, если есть полезные мысли, а они сейчас очень нужны.
Значит, нужно искать программиста среди "формулистов". Но ему всё равно надо будет дать уже готовую структуру.
Название: Re: Инструменты. База данных
Отправлено: Алексей Рогачев от Мая 19, 2006, 12:08:04
Вопрос к pLuto: если прописывать в BDE алиас к базе данных, сделанной в Access, обязательно ли задавать в ODBC Administrator имя пользователя и пароль? Если их не задавать, сделанное в C++ Builder приложение все равно требует их ввода при каждом подключении к базе данных. В принципе ничего страшного, но надоедает просто. Если есть способ от этого избавиться, напиши, плиз, как это сделать.
 
Еще вопрос. Допустим, я создаю в C++ Builder приложение, которое через Query делает запрос к базе данных (по нескольким таблицам сразу) и выдает полученную таблицу в DBGrid. Имеют ли эти компоненты какое-нибудь свойство, позволяющее автоматически подсчитать количество записей в получаемой таблице?
 
Да, между прочим, твой давнишний совет по SQL-овскому оператору LIKE в Access не действует. Почему - не знаю...Sourceress38856,8780092593
Название: Re: Инструменты. База данных
Отправлено: Александр Амецинский от Мая 19, 2006, 12:32:28
Цитата: Sourceress
Да, между прочим, твой давнишний совет по SQL-овскому оператору LIKE в Access не действует. Почему - не знаю...

Можно попробовать регулярные выражения...
Правда не знаю, есть что-то подобное в Access...AlexF138856,8877893519
Название: Re: Инструменты. База данных
Отправлено: Алексей Рогачев от Мая 19, 2006, 13:17:13
Вот такие глюки и заморочки "аксессовского" интерфейса меня уже слегка достали, потому-то и решил попробовать написать приложение, которое бы позволило выполнять хотя бы самые основные вещи, которые я делаю со своей БД, не запуская при этом сам Access. На работе я часто имею дело с C++ Builder, в нем и начинаю сейчас понемногу экспериментировать. Там, кстати, оператор LIKE работает как часы. Еще интересно, что если в компонент Query скопировать уже готовый текст запроса на SQL из Access, работать он не будет! А если тот же самый запрос сочинить в C++ Builder вручную, все в порядке. Видимо, тут дело в какой-то разнице между "борландовским" и "мелкомягким" стандартами SQL.
Название: Re: Инструменты. База данных
Отправлено: Валерий Лутошкин от Мая 22, 2006, 11:07:40
Я заранее извиняюсь - я очень редко захожу в этот форум.
По работе с BDE я мало что могу сказать, потому что с борландом уже не работаю очень давно.
LIKE у меня работает легко, правда, не в самом Access'е, а с акцессовскими базами в ASP/Visual Basic. Напрямую в акцессе я тоже не работаю.
Вот, например, живой пример ASP кода моего последнего сайта:
        strSQL = "SELECT song_id, song_name, song_text " _
                & "FROM songs " _
                & "WHERE song_text LIKE '%" & Replace(strSearch, "'", "''") & "%' " _
                & "ORDER BY song_text;"
        Set rstSearch = cnnSearch.Execute(strSQL)

По поводу базы как веб-интерфейса на php - что-то в этом есть, но последующая ее привязка к тому же "Архиву" будет затруднена хотя бы потому, что Архив хранится фактически в одном месте. При этом, опять же, на php я не пишу, предпочитаю asp и вообще платформу MS, поэтому вряд ли чем-то смогу помочь в этой теме. А с другой стороны - при переносе форума на новый хостинг было бы логично разместить и базу на нем же.pLuto38859,8293981481
Название: Re: Инструменты. База данных
Отправлено: Валерий Лутошкин от Мая 22, 2006, 11:31:30
Добавление:
Попробовал построить Запрос напрямую в акцессе. Для той же базы, пример для которой приводил выше. В режиме конструктора запросов написал в поле "Условие отбора" для поля базы "Song_text" значение LIKE '%небо%'. Акцесс автоматически исправил его на ALIKE и все заработало. Так что запросы с LIKE в Access'е живут без проблем.
Вот цитата из хелпа от Access (нижеупомянутый режим запроса переключается в "Сервис-Параметры-Таблицы и запросы-Синтаксис для SQL Server"):
Также можно использовать подстановочные знаки в условиях на значение поля. Используемые подстановочные знаки зависят от режима запроса ANSI SQL (http://mk:@MSITStore:C:\Program%20Files\Microsoft%20Office\OFFICE11\1049\acmain11.chm::/html/acrefExamplesValidationRulesS.htm#)базы данных Microsoft Access (http://mk:@MSITStore:C:\Program%20Files\Microsoft%20Office\OFFICE11\1049\acmain11.chm::/html/acrefExamplesValidationRulesS.htm#).
Следующий пример работает в базе данных Microsoft Access, использующей синтаксис Microsoft Jet SQL.
 
Условие на значение поляСообщение об ошибке
Like "K???"Значение должно содержать четыре знака и начинаться с буквы K.
Следующий пример работает в базе данных Microsoft Access, использующей Microsoft SQL Server-совместимый синтаксис (ANSI-92).
 
Условие на значение поляСообщение об ошибке
Alike "K___"Значение должно содержать четыре знака и начинаться с буквы K.
Название: Re: Инструменты. База данных
Отправлено: Алексей Рогачев от Мая 22, 2006, 13:17:57
ALIKE?! Ну идиотизм!!! (http://oldsmile/smiley11.gif) Правда, действительно работает, но додуматься до такого вряд ли кто способен, а мой Access ничего автоматически не исправляет. В общем, мелкомягкие маст дай...
Название: Re: Инструменты. База данных
Отправлено: Валерий Лутошкин от Мая 26, 2006, 14:01:24
Sourceress, достаточно пяти минут и поиска в хелпе по слову Like, чтобы вопрос снимался сразу и навсегда. "Если ничего не помогает - прочтите, наконец, инструкцию" (С)
А в акцессе есть режим совместимости и с Like - если используется Microsoft Jet SQL синтаксис. Я же не зря привел кусок хелпа.
Майкрософт обвинять во всем на свете модно, но не очень-то продуктивно.
Название: Re: Инструменты. База данных
Отправлено: Алексей Рогачев от Мая 26, 2006, 14:56:15
Я не настолько глуп, как тебе кажется, и файл справки к Access'у изучил первым делом. Все, что там написано по обсуждаемому вопросу, оказалось полной липой.
Название: Re: Инструменты. База данных
Отправлено: Валерий Лутошкин от Мая 27, 2006, 11:43:09
Видимо, у тебя какой-то очень особенный Access. Я пользуюсь Microsoft Access 2003 из комплекта Microsoft Office 2003 Rus. Все, процитированное мной из хелпа там работает именно так, как написано.
А что оказалось липой? У тебя не работает ALIKE? Или у тебя не работает LIKE после переключения синтаксиса в MS JET? Что из этого липа?pLuto38864,853900463
Название: Re: Инструменты. База данных
Отправлено: Алексей Рогачев от Мая 27, 2006, 17:56:18
У меня тоже Access 2003. В файле помощи написано так, как ты мне советовал в первый раз: LIKE '%...%'. Я так и пробовал сделать. Не работало. Затем ты посоветовал написать ALIKE вместо LIKE, и все пришло в норму. А программа автоматически не исправляет LIKE на ALIKE. Вот, собственно, в этом и заключается основная проблема. Точнее, заключалась, потому что теперь для построения основных типов нужных мне запросов я использую собственную программку - несложная, зато делал я ее под себя, с учетом своих потребностей. Да и с оператором LIKE там проблем нет (http://oldsmile/smiley2.gif)
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Июля 08, 2006, 10:42:58
Я тут купил несколько книжек по "Аксессу", из которых узнал, что схемы баз данных он сам рисует на основе построенных таблиц и установленных связей. То есть надо просто делать таблицы, проводить связи - и схема будет.
Так что мне проще будет составить предполагаемую базу данных, чтобы уже конкретно её обсуждать.
Название: Re: Инструменты. База данных
Отправлено: Кристобаль Хунта от Июля 09, 2006, 14:38:23
А я все делаю в Экселе. Не люблю все усложнять, хотя простенькие базы данных в Акцессе делал, но удовольствия от этого не получал.
Обычно делаю так: столбцы "Гонщик", "Страна", "Шасси-модель-мотор", "Команда".
Потом столбцы разделенные на две части: стартовая позиция и результат.
Финишные позиции выделяются толщиной линий и цветом.Кристобаль Хунта38907,9748842593
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Июля 19, 2006, 08:27:39
Вот схема базы данных гонок.
(http://img82.imageshack.us/img82/5603/20060719database01kt1.th.jpg) (http://img82.imageshack.us/my.php?image=20060719database01kt1.jpg)
В ней в центре помещены те таблицы, ради которых всё это и задумывалось: соревнований и гонок. Остальные таблицы - первичные, служащие источником стандартных данных.
Я могу использовать неправильную терминологию, но буду учиться, чтобы выражаться правильно.
Кому интересно или кто разбирается, гляньте, пожалуйста и выскажите своё мнение.
Название: Re: Инструменты. База данных
Отправлено: Джен от Июля 19, 2006, 10:36:48
 у кого как, а мне видно очень... в общем, ничего не видно :) 
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Июля 19, 2006, 10:38:24
В каком смысле?
Название: Re: Инструменты. База данных
Отправлено: Джен от Июля 19, 2006, 10:40:54
 ну, я кликаю на превью, чтобы посмотреть картинку в нормальном, так скажем, виде, она увеличивается, но буквы все сливаются, ничего прочитать не могу - не знаю, в чем трабл.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Июля 19, 2006, 10:57:11
Я думаю, что картинка уменьшается в браузере, подстраиваясь под размер экрана. Её надо сохранить на компьютере и открыть в графическом просмотрщике.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Июля 20, 2006, 02:29:40
В принципе, на этапе создания таблиц всё оказалось подозрительно несложно, так что я подумываю о расширении всей базы данных до "идеального" варианта, включающего в себя и результаты гонок, и параметры автомобилей, и информацию о гонщиках. Всё это можно заложить заранее, а потом только заполнять.
Единственная опасность - чего-то не предусмотреть и затем потерять часть информации при преобразованиях.
Название: Re: Инструменты. База данных
Отправлено: Александр Кульчицкий от Июля 20, 2006, 05:03:05
Цитата: Владимир Коваленко
В принципе, на этапе создания таблиц всё оказалось подозрительно несложно, так что я подумываю о расширении всей базы данных до "идеального" варианта, включающего в себя и результаты гонок, и параметры автомобилей, и информацию о гонщиках. Всё это можно заложить заранее, а потом только заполнять.
Единственная опасность - чего-то не предусмотреть и затем потерять часть информации при преобразованиях.

А я, дурак, думал над тем, как все сделать попроще, а для тебя, оказывается, это "подозрительно несложно" и ты хочешь включить еще и результаты гонок.
Я же всерьез подумывал, как убедить тебя отказаться от двухуровневой базы данных (соревнование - гонка) и перейти на одноуровневый (гонка) сделав соревнование одним из параметров гонки. Кроме того, для глобальной базы данных по всем гонкам думал над тем, от каких из показателей на этом этапе можно отказаться. Абсолютно все показатели со статистикой и прочим полагал возможным ввести исключительно в отдельные БД по группам гонок.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Июля 20, 2006, 06:37:02
Я не знаю, насколько ты знаком с принципами реляционных баз данных (я сам, к слову, только разбираюсь), но удобство такой БД заключается в том, что огромные объёмы информации можно хранить в одном месте, не заботясь о красоте и удобстве их использования. Структрура отдельных таблиц может быть какой угодно, а отображение нужной информации определяется запросами. Один раз сделал запрос - и по нему будет выводиться только та информация, которая нужна.
В обычных таблицах для этого надо создавать отдельные таблицы с повторением данных.
В той БД, которую я хотел бы создать, нужно заложить максимум необходимых данных, а потом постепенно заполнять её.
Название: Re: Инструменты. База данных
Отправлено: Александр Кульчицкий от Июля 20, 2006, 08:08:31
Цитата: Владимир Коваленко
Я не знаю, насколько ты знаком с принципами реляционных баз данных (я сам, к слову, только разбираюсь), но удобство такой БД заключается в том, что огромные объёмы информации можно хранить в одном месте, не заботясь о красоте и удобстве их использования. Структрура отдельных таблиц может быть какой угодно, а отображение нужной информации определяется запросами. Один раз сделал запрос - и по нему будет выводиться только та информация, которая нужна.
В обычных таблицах для этого надо создавать отдельные таблицы с повторением данных.
В той БД, которую я хотел бы создать, нужно заложить максимум необходимых данных, а потом постепенно заполнять её.

Володя, дело совсем не в красоте, просто чем сложнее система, тем сложнее предусмотреть в ней все возможные варианты параметров. Например, в чистых гонках результат определяется временем, затрачиваемым на преодоление дистанции, и все. В старых ралли результат определялся штрафными минутами, результатами дополнительных состязаний и еще черт знает чем. Были соревнования, в которых результат определялся баллами. Кроме привычных нам соревнований к спортивным мероприятиям относились раньше и конкурсы элегантности и соревнования "караванов" со своими правилами. И как все это объединить в одной базе данных? А ведь кроме окончательных результатов может захотется запихнуть в статистику результаты квалификаций со всех их разнообразием. Поэтому, для начала, я предлагаю о результатах просто не думать - ведь специальная база данных может существовать и в таком виде.
Относительно теории баз данных и терминологии, ты прав, с ними я практически не знаком, но на практике немного приходилось такими вещами заниматься.
 
Название: Re: Инструменты. База данных
Отправлено: Владимир от Июля 21, 2006, 14:48:34
 
Цитата: Владимир Коваленко
Единственная опасность - чего-то не предусмотреть и затем потерять часть информации при преобразованиях.
Да. Это основная проблема при разработке структуры базы данных.
Если Вы её сформируете, затем реализуете программно и заполните данными, а потом появится что-либо новое или что-то  не будет учтено, то изменить  структуру базы данных будет практически невозможно. Очень трудное это дело.

Вот сложный случай: в 1950-ых годах гонщики менялись машинами и на финише делили очки (иногда и по три гонщика участвовало в дележке очков за одно место, я уж не говорю про дележ очков за быстрый круг). Таким образом, у одного пилота - несколько машин, у одной машины - несколько пилотов.
И нормально реализовать это сложновато. До сих пор не решил эту проблему.
Также менялись системы начисления очков и системы квалификаций.
В гонках иногда начислялось очков в два раза меньше чем обычно
Все это также необходимо учитывать.
gp238919,9825810185
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Июля 24, 2006, 08:51:56
Насчёт результатов. В традиционной трактовке истории не используется такое явление, как заявочный список. Между тем, это очень интересная форма отображения статистики. Если брать за основу именно заявочные списки, то списки результатов будут содержать следующие колонки: номер, заявитель, марка и модель автомобиля, заявочное название, номер шасси, двигатель, заводской номер двигателя, гонщик, результаты в предварительных заездах и гонках, очки (если есть). Уточню, что я ориентируюсь не на "Формулу-1", а на автоспорт в целом до шестидесятых годов - тогда были несколько иные порядки.
Вот вышеописанная схема справедлива для жёсткой связки гонщзика и автомобиля. В тех случаях, когда происходили какие-то замены, делается отдельная строчка с полным описанием конкретной комбинации. Вопрос только в том, как оформить в привычный вид несколько строчек, описывающих замены. Подумаю.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Августа 07, 2006, 05:18:11
Я выкроил немного времени и подумал над доработкой планируемой БД. Я не трогал уже имевшиеся таблицы, а только добавил несколько новых.
Похоже, вырисовывается такая картина. Две основные таблицы - это списки гонок и результаты. Если задуматься, это основное, что требуется от базы данных. Смотришь на список гонок, выбираешь гонку и получаешь полную информацию об участниках и их достижениях.
Необходимость двух разных таблиц для соревнований и гонок вызывает сомнения. В принципе, можно заложить информацию о соревнованиях в таблицу гонок.
Зачем вообще появилась таблица соревнований? В упрощенном подходе к истории автоспорта не рассматриваются соревнования, обычно клубные, состоявшие из нескольких разных гонок в разных классах на разные дистанции разного формата. Это было характерно для Великобритании, а сейчас возрождено в несколько ином качестве на примере, скажем ДТМ, где за один уик-энд проводятся разные гонки под эгидой основной серии.
В традиционной трактовке истории упрощение ситуации производится путём выбора какой-нибудь гонки из программы соревнований, которая считается за главную и затем рассматривается как имеющая тем или иным боком отношение к какой-нибудь "формуле", а остальные становятся гонками поддержки. Например, в гудвудских соревнованиях выбирается гонка в классе "формула-1" и рассматривается главной, потому что всё должно быть притянуто к несуществовавшей серии "Формула-1", а остальные гонки становятся гонками поддержки и игнорируются, хотя в иные годы главными были гонки не в Ф1, а в свободной формуле. Историки ещё удивляются: какая-то левая гонка на абсурдно короткую для "Формулы-1" (фанфары!!!) дистанцию, - а оказывается, что там всё было по-другому.
В общем, разделение на списки соревнований и гонок оказывается удобным для любого рода многозаездных мероприятий, вопрос только в том, что отчасти эти две таблицы пересекаются и повторяют друг друга.
В принципе, можно было бы информацию о соревнованиях отобразить в таблице гонок, только надо разобраться, как можно настраивать отображение таблицы в разных видах, чтобы было как бы две таблицы, а на самом деле информация в них выбиралась из одной и той же таблицы.
Тогда в базе данных будут ДВЕ ГЛАВНЫЕ ТАБЛИЦЫ: гонки и результаты.
А пока что я добавил таблицу "Результаты", которая будет формироваться из первичных таблиц "Гонщики", "Автомобили" и "Заявители". "Гонщиков" я сделал, а до "Автомобилей" и "Заявителей" ещё не добрался.
Поскольку имена гонщиков повторяются, есть смысл сделать первичную таблицу для имён (и названий), в которую помещать вообще все встречающиеся имена собственные с их оригинальным написанием и вариантами перевода.
Эта таблица, по идее, должна быть посвящена исключительно лингвистической стороне дела, то есть надо только перечислить имена и названия, чтобы потом выбирать их для других таблиц. Но состав этой и некоторых других таблиц наталкивает на мысль об объединении таблиц "Названия соревнований", "Названия гонок", "Организаторы", "Санкционеры", "Географические пункты" и "Страны". Везде есть всякие транкрипции, транслитерации и т.д. Может получиться одна большая таблица, в которой каждое название будет характеризоваться по своему виду.
Надо думать.
А пока что вот схема чуть-чуть дополненной БД.
(http://img136.imageshack.us/img136/3280/databaserussian02tr8.th.jpg) (http://img136.imageshack.us/my.php?image=databaserussian02tr8.jpg)
Название: Re: Инструменты. База данных
Отправлено: Кристобаль Хунта от Августа 17, 2006, 10:50:43
Вот просмотрел еще раз базу данных. По моему но в ней неучтено, какие результаты гонщик показывал на событии, которые мы называем квалификационными заездами. Между тем для любой базы данных это стартовое поле - немаловажная деталь.
Также нет команд/заявителей.
Еще нужно предусмотреть, как указывать, если шасси и двигатель разных производителей.
В то же время такие показатели как страна, географический пункт, трасса лучше сократить.
Если же говорить о названиях, то дабы лишний раз не ломать копья и голову, лучше оставить написание на родном языке и перевод на русский.
Вот такие у меня, мысли.Кристобаль Хунта38946,8170138889
Название: Re: Инструменты. База данных
Отправлено: Александр Амецинский от Августа 17, 2006, 12:38:20
Схема базы для веб-проекта или для личного пользования?
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Августа 17, 2006, 12:56:37
Для личного. Ну, не абсолютно личного - поделюсь с любым желающим. Но для персонального компьютера.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Сентября 19, 2006, 06:51:39
Выбрал свободную минутку и ещё немного поработал над БД. До этого ещё почитал книжки по "Аксессу" для начинающих и порассматривал добытые в разных местах готовые файлы. Кое-что понял, но на этом заострять внимание не буду - это промежуточные ступени.
В результате поубирал все сделанные ранее связи и в каждой таблице сделал поле "Код ...", которое сделал ключевым. Добавил табличку "Тип географического названия"... Ага, неправильно получилось - надо был "Тип географического пункта". Потом переделаю. И ещё надо добавить табличку "Тип имени". Добавлю.
Со связями я ещё буду разбираться, а пока представлю промежуточную схему БД для тех, кому интересно разобраться в идее.
(http://img98.imageshack.us/img98/1059/databaserussian03yr1.th.gif) (http://img98.imageshack.us/my.php?image=databaserussian03yr1.gif)
Здесь три таблицы в верхнем ряду - собственно, те, ради которых всё это и замышлялось. На самом деле, возможно, их все можно соединить в одну, но над этим я ещё подумаю.
Все таблицы ниже "поставляют" в основные нужные данные. Судя по книгам, устоявшаяся терминология немного не подходит для нашего случая, потому что обычно главными называют таблицы, из которых берутся записи в таблицы, которые, в частности, в моём случае, являются основными по своему предназначению. А они, в свою очередь, называются подчинёнными.
Правда, есть и ещё один вариант: материнские и дочерние. Можно воспользоваться такой терминологией.
Итак, три верхних таблицы - дочерние по отношению ко всем остальным, потому что они используют поля материнских.
Таблица "Имена и названия" - материнская, в свою очередь, для таблиц всей нижней части схемы. В предыдущем варианте БД я расписывал переводы имён и названий в каждой материнской таблице, где они появлялись, а теперь решил всё это сосредоточить в одной таблице, из которой потом, в случае чего, выбирать нужные данные.
Итак, сверху - основные таблицы по сути и дочерние по терминологии, поля которых составляются из материнских таблиц. Вот, собственно, и объяснение такого количества таблиц.
Скажем, хочу я создать таблицу со списком соревнований и достаточным их описанием. Что мне надо включить в такую таблицу?
Название традиционного или разового соревнования. В прошлом гонки нередко состояли из нескольких равнозначных или разнозначных гонок, и весь этот набор каким-то образом именовался или воспринимался под каким-то обобщающим названием. Скажем, в Гудвуде проводились пасхальные гонки. Нормальное описание многозаездного соревнования. Его надо поместить в таблицу, а поскольку оно проводилось каждый год, оно будет повторяться в БД неоднократно, и его есть смысл брать по коду из специальной материнской таблицы. Для этого служит таблица Названия соревнований.
Соревнование проходило в какой-то день, и для описания этого существуют внутренние возможности программы. Соревнование проходило на какой-то трассе, и её тоже надо упомянуть. Списки трасс помещаются в свою материнскую таблицу, от которой выводится связь в таблицу соревнований.
У соревнования были организатор и иногда санкционер, которых тоже полезно упомянуть, и каждый из которых берётся из своей материнской таблицы.
Точно так же расписываются поля других дочерних таблиц.
Материнские таблицы я сгруппировал по видам. Названия соревнований и Названия гонок; Организаторы и Санкционеры; Классы автомобилей и Категории автомобилей; Гонщики оказались сами по себе; Трассы оказались в одной группе со Странами, Географическими пунктами и Типами географических пунктов.
Имена и названия будут поставлять данные практически для каждой таблицы.
Ну и как, понятней стала идея?
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Сентября 19, 2006, 07:53:48
Я тут обнаружил одну неприятную особенность, связанную со вводом данных. Скажем, я составляю таблицу результатов, где мне надо указать гонщика. Поле "Гонщик" связано с соответствующей материнской таблицей, где перечислены все гонщики, для каждого из которых существует свой уникальный код. Для того, чтобы в данной конкретной записи таблицы результатов появилось нужное имя, я должен указать код гонщика из материнской таблицы. Естественно, я не могу помнить наизусть коды каждого из тысяч гонщиков. Получается, что мне надо вручную открывать таблицу гонщиков, искать в ней нужное имя и затем вручную вводить в таблицу результатов найденный код.
Было бы удобнее, если бы из выбранной ячейки открывалась связанная с этим полем таблица, где можно было бы щёлкнуть на нужном имени, и его код остался бы в нужной ячейке таблицы результатов.
Я не узрел такой возможности. Может, я плохо смотрел?
Название: Re: Инструменты. База данных
Отправлено: Александр Готвянский от Сентября 19, 2006, 10:21:00
Вроде надо просто в таблице с гонщиками скрыть поле с кодами, и тогда автоматом будет выпадать список с фамилиями. Я себе вроде бы так делал свою музыкальную БД.
 
Проверь почтуalgot38979,7966319444
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Сентября 19, 2006, 11:04:51
Почта сегодня вечером почему-то не работает.
Насчёт скрывания поля с кодами я не понял. Я пока только изучаю возможности "Аксесса". Мне важно при заполнении дочерней таблицы не открывать одну за другой все материнские таблицы, а искать нужное значение, скажем, через правый клик с автоматическим выходом на связанную с этим полем материнскую таблицу.
То есть если я заполняю ячейку "Гонщик", удобнее всего будет её выделить, нажать что-нибудь и получить список из материнской таблицы, из которого можно было бы выбрать нужное имя, но в ячейку при этом был бы проставлен код. Вот так.
Название: Re: Инструменты. База данных
Отправлено: Александр Готвянский от Сентября 19, 2006, 11:34:58
Это делается не так.
В таблице с фамилиями код генерится автоматом?
Если так, то в таблице "Гонщики" эту колонку с кодом делаешь скрытой. Тогда в таблице результаты при заполнении ячейки "Гонщик" у тебя появится выпадающий список гонщиков. Можно выбрать из него или ввести первые букви имени. Реально подставится код.
 
Я это делал прошлым летом, поэтому плохо помню, но вроде так.
Вот моя база
http://www.is.svitonline.com/algot/My_Music.rar
 
В ней главной таблицей является таблица "Альбомы", а в нее я подставляю исполнителей и годы.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Сентября 19, 2006, 11:39:32
Если автоматом, то это режим "Счётчик". Я так не хочу, потому что хотелось бы, чтобы всё было красиво, и коды автоматически сортировались бы в порядке, соответствующем алфавитному порядку самих имён. Хотя, возможно, это всего лишь предрассудок, связанный с плохим знанием программы и неопытностью в составлении баз данных.
Название: Re: Инструменты. База данных
Отправлено: Александр Готвянский от Сентября 19, 2006, 11:44:28
По алфавиту ты их в любой момент отсортируешь.
А этот код можно скрыть и забыть о нем навсегда.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Сентября 19, 2006, 11:49:23
Значит, есть смысл не заботиться о красоте кода? Пусть будет счётчик - и хрен с ним?
Название: Re: Инструменты. База данных
Отправлено: Александр Готвянский от Сентября 19, 2006, 11:53:15
 
Цитата: Владимир Коваленко
Значит, есть смысл не заботиться о красоте кода? Пусть будет счётчик - и хрен с ним?

 
Именно. Открой мою таблицу Artist. В ней список исполнителей в алфавитном порядке. В левом углу списка кликни правой кнопкой и выбери "Отобразить столбцы" и увидишь, что номера не по порядку. А как ты собирался добавлять новых гонщиков?
 
PS Выйди в аську, чтобы мы форум не засоряли.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Сентября 19, 2006, 12:03:31
"Аська" у меня только на работе, и я её включаю только по особой необходимости, а то она отнимает много времени. Но, возможно, я всё-таки поставлю её дома.
Но сейчас у меня другая проблема, из-за которой я не смогу открыть твой файл: "Офис" требует активации, и осталось всего лишь 3 запуска из 50. Замена файлика MCO.DLL ничего не дала, хотя он, возможно, не тот, какой нужен. Так что посмотреть твой файл я смогу тоже на работе.
Интересно, если "Офис" переустановить, проблема исчезнет?
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Сентября 19, 2006, 12:05:33
А, вот и почта заработала. Но твоих писем нет. Адрес - tomskdx@sibmail.com.
Название: Re: Инструменты. База данных
Отправлено: Александр Готвянский от Сентября 19, 2006, 12:05:53
А что это за дивный Оффис такой?
Название: Re: Инструменты. База данных
Отправлено: Александр Готвянский от Сентября 19, 2006, 12:08:33
Я в нете выложил точно такой же архив, как и в почте.
А отправлял я на RFC.
Название: Re: Инструменты. База данных
Отправлено: Александр Готвянский от Сентября 22, 2006, 21:13:42
Ну как продвигаются дела? Интересно просто, нет ли каких-либо новых вопросов.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Сентября 22, 2006, 23:18:54
Продвигаются, толбко дюже некогда было хотя бы пару строчек чиркнуть.
Я всем полям с кодами в таблицах присвоил тип счётчика и выяснил, что связанные поля должны при этом иметь тип числовой. Текстовый я оставил только для кодов стран, потому что думаю, что мне удобнее будет вносить стандартные трёхбуквенные коды типа AUS, RUS, SWE.
Пока не разобрался, как делать то, о чём ты говорил про заполнение при скрытом поле кода, но разберусь.
Зато разобрался в принципе, по которому существуют плюсики в самой левой колонке таблицы. Если нажать на плюсик, открывается таблица, и её смысл вот в чём. Если в дочерней таблице результатов гонок указаны несколько автомобилей "Мазерати-250Ф", при нажатии плюсика напротив этого автомобиля в таблице материнской (автомобилей)откроется список всех участников на этой модели. Иногда это может быть полезным, но пока что меня волнует не просмотр, а заполнение таблиц.
Название: Re: Инструменты. База данных
Отправлено: Александр Готвянский от Сентября 24, 2006, 17:23:07
 
Цитата: Владимир Коваленко

Пока не разобрался, как делать то, о чём ты говорил про заполнение при скрытом поле кода, но разберусь.
 

 
Открой мою БД (ссылку см. выше) и посмотри как у меня сделано.
В твоем случае открываешь таблицу "Гонщики", выделяешь столбец с кодом и выбираешь "Скрыть столбец". И все.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Сентября 25, 2006, 06:59:32
Да я не про это, а про то, как эту таблицу потом использовать для заполнения дочерней.
То есть мне надо составить таблицу с результатами некой гонки. Чтобы вставить в неё код гонщика Иванова, мне надо открывать таблицу гонщиков, искать Иванова и что-то делать, чтобы его скрытый код попал в заполняемую таблицу?
Название: Re: Инструменты. База данных
Отправлено: Александр Готвянский от Сентября 25, 2006, 09:08:04
Нет, в таблице гонок при клике на поле "гонщик" у тебя появится выпадающий список фамилий. Если не скрывать поле "код" в списке гонщиков, то тогда будет выпадающий список кодов гонщиков.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Сентября 26, 2006, 07:51:19
Я попробую, но до сих пор так не получалось. Возможно, у меня связи были неправильно установлены.
Пока что вот схема очередной версии БД:
(http://img149.imageshack.us/img149/325/databaserussian04zj2.th.gif) (http://img149.imageshack.us/my.php?image=databaserussian04zj2.gif)
Что мы имеем? Вверху - три таблицы, ради которых всё это затевается. Внизу - их составляющие. Пока это всё ещё выглядит криво, но я ещё разберу каждую из этих трёх таблиц. Идея "разбирательства" проста: подтвердить необходимость каждого поля и чётко проследить его происхождение из материнских таблиц.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Сентября 27, 2006, 07:49:50
Если кто-нибудь подтвердит моё предположение, буду очень рад.
Я начал конструировать три дочерние таблицы, исходя из того, какие в них нужны столбцы для использования. Скажем, если мне при использовании таблицы гонок нужно знать страну, в которой проходила гонка, и трассу, то оба этих столбца должны быть в таблице.
Но теперь я начинаю соображать, что эти самые таблицы не предназначены для использования - они предназначены для заполнения. Используется база данных посредством форм и запросов. Это ведёт к той мысли, что если в дочерней таблице указать на код трассы, всегда будет возможность увидеть в форме или запросе все данные из всех материнских таблиц. Если страна уже указана с таблице трасс, то для неё отдельное поле создавать не надо.
В сильно упрощенном варианте таблица гонок может содержать такие поля: дата, название, трасса. Для названия гонки и трассы указываются коды. А в той таблице, которая предназначена для непосредственной работы и которая формируется путём запроса, полей будет больше, потому что все они вызываются из материнских таблиц названий гонок и трасс: дата, название гонки, название гонки в оригинале, страна, трасса, длина круга.
Я ещё не изучал правила создания запросов, но думаю, что найду там подтверждение этих предположений.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Сентября 27, 2006, 08:23:30
Ещё одна проблема. Если гонка или соревнование проводилось в одном определённом классе, достаточно указать код класса. А если классов было несколько? Это особенно актуально для соревнований. Если в программе соревнования пять гонок, и каждая проводится в своём классе, то в поле классов таблицы соревнований было бы хорошо иметь перечисление всех классов.
Может ли программа автоматически поместить в одну ячейку сразу несколько классов?
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Ноября 12, 2006, 01:12:52
В принципе, можно было бы уже хоть сейчас начать вносить в таблицы хоть какие-то данные, но мешает неопределённость с хранением имён собственных.
Тут две проблемы.
1. Общая. На данном этапе задумано, что ВСЕ имена собственные (имена, фамилии, географические и прочие названия) будут содержаться в одной таблице,в которой будут приводиться как оригинальные написания, так и различные варианты переводов, а также будет указываться тип имени: имя фамилия, название автоспроизводителя, название команды, название трассы, географическое название и т.п. То есть это должна быть чисто словарная таблица: слово - перевод, слово - перевод, слово - перевод. Можно даже не проводить классификацию по типам, потому что всё равно будут отдельные таблицы для гонщиков, трасс, марок, команд и т.д. И изначально было задумано, что в каждой из этих таблиц будет информация о переводе имени. Раз суть релционной базы данных состоит в уменьшении количества повторяющихся данных и полей, я и счёл, что для переводов названий можно сделать отдельную таблицу, чтобы не плодить одинаковые поля и иногда одинаковые записи в специализированных таблицах. Но вот что-то сейчас ещё меня беспокоит. Я даже не могу сказать, что, но почему-то кажется, что в этом решении есть какие-то существенные недостатки.
2. Имена и фамилии гонщиков. Разнести их по разным полям? То есть один столбец - имя, другой - фамилия? В принципе, это было бы удобно для сортировки. Вопрос опять-таки в том, можно ли при необходимости объединить две записи в одну. Пока ещё не искал ответ на этот вопрос.
Но, в приципе, пока писал это, обдумал, и мне показалось, что так всё можно и оставить.
Название: Re: Инструменты. База данных
Отправлено: Александр Амецинский от Ноября 12, 2006, 07:32:09
Цитата: Владимир Коваленко
2. Имена и фамилии гонщиков. Разнести их по разным полям? То есть один столбец - имя, другой - фамилия? В принципе, это было бы удобно для сортировки. Вопрос опять-таки в том, можно ли при необходимости объединить две записи в одну. Пока ещё не искал ответ на этот вопрос.
можно склеить две и более записи в одну, указав соответствующие поля определенной команде...
Помимо имени и фамилии можно создать еще поля для псевдонимов, прозвищ и сокращенных вариантов имени...
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Ноября 12, 2006, 10:56:53
Да, всё это нужно будет сделать, но я так понимаю, что такие поля всегда при необходимости можно безболезненно для имеющейся информации добавлять в процессе заполнения БД.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Декабря 17, 2006, 12:17:41
Вот текущий вариант разрабатываемой базы данных: http://disk.tom.ru/257385.
Откройте, пожалуйста, таблицу "Имена и названия" и попробуйтие добавить запись. Потребуется указать коды в полях "Тип имени" и "Язык". Чтобы это сделать вручную, надо открывать эти таблицы, находить в них значение счётчика для нужного поля и выставлять его в таблице имён. А как сделать так, чтобы перейти к этим таблицам непосредственно от заполняемых ячеек?
Это та самая ситуация, которая обсуждалась выше на этой странице, но я ничего подобного тому, что объяснял Саша Готвянский, не вижу. Что-то здесь не так.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Декабря 18, 2006, 01:33:45
Цитата: pLuto
Только покопавшись в ней, именно по гонщикам я нашел некоторые непонятности. У гонщика поле "имя гонщика" текстовое, а при этом есть отдельный справочник "имена и названия", в котором имена уже структурируются. Если хочется, чтобы эти таблицы были связаны - придется менять структуру и имя/фамилию любого гонщика сначала заносить в справочник, а потом уже из справочника выбирать при заполнении таблицы "гонщики".

Собственно, так и было задумано, и у меня до сих пор остаются сомнения, насколько это оптимальное решение. Альтернатива - каждое имя указывать индивидуально в соответствующих таблицах, где и расписывать переводы. Недостаток альтернативного варианта - одни и те же имена могут дублироваться в разных таблицах. И ещё тогда для расписывания переводов длинных имён гонщиков потребуется изощрённая структура полей.
Цитата: pLuto
... для того, чтобы выбирать значения из связанной таблицы, необходимо использовать инструмент "Подстановка". Когда редактируешь поле - обрати внимание, что снизу есть еще одна закладка с таким названием и попробуй посмотреть хелп по ней, там всё очень подробно расписано.

Спасибо, я посмотрю.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Декабря 18, 2006, 11:51:23
Этот грёбаный "хелп", блин, не только не помог, но и переключил браузер на справку в интернете, загубив набранное, но не отправленное сообщение. Пилят!
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Декабря 18, 2006, 13:11:02
В общем, я не понял, что надо менять в структуре.
Я вижу пока проблему, связанную с объединением имён и фамилий из разных записей таблицы "Имена и названия". То есть в таблице "Гонщики" надо предусмотреть два поля, которые будут объединяться. Так?
Название: Re: Инструменты. База данных
Отправлено: Валерий Лутошкин от Декабря 23, 2006, 05:33:19
Фактически, раз у тебя создан справочник имен и фамилий, то в любой таблице, где у тебя используются хоть какие-то имена и фамилии, необходимо предусмотреть поля для хранения индекса имени и индекса фамилии из справочника (т.е. поля "Код имени"). Сами же имена и фамилии будут храниться только в одном единственном месте.
И тут всплывают сразу две проблемы. Проблема №1 заключается в том, что ты не знаешь точно, сколько имен-фамилий будет у гонщика. В том плане, что гонщика могут звать ведь и "Остап Сулейман Берта Мария". Если ты хранишь это в одном поле имени - то замечательно, а если хочешь в разных и собирать полное имя из кусочков - то получается отношение между таблицами "многие ко многим", которое разрешается только через промежуточную таблицу. Это реализуемо, но требует определенных действий.
Проблема №2 - я, честно говоря, уже давно не следил за темой имен, поэтому не знаю - сошлись вы на том, что используете для перевода исторически сложившуюся транскрипцию или забиваете на нее и переводите всегда однозначно. Самый популярный пример первого - это "Джордж Харрисон и Гарри Гаррисон". Если нужна реализация такого варианта - тогда в таблице имен придется хранить два отдельных варианта с одинаковым оригинальным именем и разными переводами. Что усложняет ее заполнение и приводит к путанице. Забить на сложившуюся же транскрипцию - технически упрощает решение, но с точки зрения удобства восприятия - может создать проблемы.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Декабря 23, 2006, 06:28:24
Цитата: pLuto
Фактически, раз у тебя создан справочник имен и фамилий, то в любой таблице, где у тебя используются хоть какие-то имена и фамилии, необходимо предусмотреть поля для хранения индекса имени и индекса фамилии из справочника (т.е. поля "Код имени"). Сами же имена и фамилии будут храниться только в одном единственном месте. И тут всплывают сразу две проблемы. Проблема №1 заключается в том, что ты не знаешь точно, сколько имен-фамилий будет у гонщика. В том плане, что гонщика могут звать ведь и "Остап Сулейман Берта Мария". Если ты хранишь это в одном поле имени - то замечательно, а если хочешь в разных и собирать полное имя из кусочков - то получается отношение между таблицами "многие ко многим", которое разрешается только через промежуточную таблицу. Это реализуемо, но требует определенных действий.

Ага, я понял. Значит, в таблице вместо поля "Имя гонщика" в текстовом формате должно быть поле "Код имени" в числовом?
А промежуточная таблица - это таблица для составных имён? Тогда совсем фигня запутанная получится.
Цитата: pLuto
Проблема №2 - я, честно говоря, уже давно не следил за темой имен, поэтому не знаю - сошлись вы на том, что используете для перевода исторически сложившуюся транскрипцию или забиваете на нее и переводите всегда однозначно. Самый популярный пример первого - это "Джордж Харрисон и Гарри Гаррисон". Если нужна реализация такого варианта - тогда в таблице имен придется хранить два отдельных варианта с одинаковым оригинальным именем и разными переводами. Что усложняет ее заполнение и приводит к путанице. Забить на сложившуюся же транскрипцию - технически упрощает решение, но с точки зрения удобства восприятия - может создать проблемы.

Это-то как раз и не проблема, ибо в таблице "Имена и названия" изначально задуманы поля "Имя собственное в оригинале", "Транслитерация", "Транскрипция", "Традиционный перевод" и "Дословный перевод", а ещё - "Имя собственное по-английски" и "Выбранное имя". Как усложнение заполнения это в принципе не рассматривается, так как таблица как раз  и задумана для этого "усложнённого заполнения".
Название: Re: Инструменты. База данных
Отправлено: Валерий Лутошкин от Декабря 24, 2006, 03:47:05
Цитата: Владимир Коваленко
Цитата: pLuto
Фактически, раз у тебя создан справочник имен и фамилий, то в любой таблице, где у тебя используются хоть какие-то имена и фамилии, необходимо предусмотреть поля для хранения индекса имени и индекса фамилии из справочника (т.е. поля "Код имени"). Сами же имена и фамилии будут храниться только в одном единственном месте. И тут всплывают сразу две проблемы. Проблема №1 заключается в том, что ты не знаешь точно, сколько имен-фамилий будет у гонщика. В том плане, что гонщика могут звать ведь и "Остап Сулейман Берта Мария". Если ты хранишь это в одном поле имени - то замечательно, а если хочешь в разных и собирать полное имя из кусочков - то получается отношение между таблицами "многие ко многим", которое разрешается только через промежуточную таблицу. Это реализуемо, но требует определенных действий.

Ага, я понял. Значит, в таблице вместо поля "Имя гонщика" в текстовом формате должно быть поле "Код имени" в числовом?
А промежуточная таблица - это таблица для составных имён? Тогда совсем фигня запутанная получится.

Проблема как раз в том, что у тебя не одно имя будет для гонщика. Как минимум имя и фамилия. Если для каждого гонщика будет только одно имя и только одна фамилия - то можно предусмотреть два поля "Код имени" и "Код фамилии". Тогда у тебя отношение "Одно ко многим", т.е. одной записи для гонщика не может соответствовать больше одного кода в таблице имен (речь про одну конкретную ячейку в таблице гонщиков, естественно - сделаешь две, три или десять ячеек - будет, соответственно, столько же соответствий "Одно ко многим").
А если ты хочешь, чтобы количество имен для гонщика изменялось динамически - то тебе придется предусматривать промежуточную таблицу, в которой будут ячейки "Код гонщика", "Код имени", "Позиция имени". Заполнять такую таблицу в акцессе в режиме редактирования таблицы неудобно, для этого уже необходимо предусматривать специальный код - хоть в акцессе, хоть в вебе - который будет облегчать ее заполнение.
Правда, я все равно не очень понял, как ты собираешься указывать сложившееся написание для разных гонщиков с одинаковым именем. Как пример - есть два гонщика, Harry Smith и Harry Jones. При этом одного на русский обычно переводили Гарри Смит, а второго - Хэрри Джонс. Если у тебя в таблице имен для обоих используется имя Harry, то как ты укажешь, что для первого традиционное написание такое, а для второго - такое?
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Декабря 24, 2006, 06:45:15
Выходит, придётся оставить идею общей таблицы имён и приводить переводы для каждого полного имени и названия.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Октября 12, 2007, 02:31:58
Всё-таки создание базы данных надо определить как одну из первоочередных задач. Каждый день надо хотя бы по капельке, но что-то делать.
В настоящий момент база данных находится в следующем состоянии:
(http://img73.imageshack.us/img73/1693/database2007101201yt6.th.gif) (http://img73.imageshack.us/my.php?image=database2007101201yt6.gif)
Я ещё подумал и решил всё-таки оставить общую таблицу для имён с переводами.
Сегодня я позанимался таблицей трасс. Для примера вписал в таблицу несколько вариантов трассы в Донингтоне:
     
Код трассы
 
Название трассы
 
Описание трассы
 
Страна
 
Город
 
Длина круга, км
 
Длина круга, миль
 
Годы функционирования
 
Название трассы в оригинале
 
1
 
Донингтон-Парк
 
Донингтон-Парк (1931)
 
Великобритания
 
Донингтон
 
 
 
2,327
 
1931-1935
 
Donington Park
 
2
 
Донингтон-Парк
 
Донингтон-Парк (1935)
 
Великобритания
 
Донингтон
 
 
 
2,971
 
1935-1937
 
Donington Park
 
3
 
Донингтон-Парк
 
Донингтон-Парк (1937)
 
Великобритания
 
Донингтон
 
 
 
3,220
 
1937-1939
 
Donington Park
Что есть смысл добавить или изменить?
Можете предлагать данные по доругим трассам по предложенной схеме. Я их вобью в БД для дальнейшей отладки.
Название: Re: Инструменты. База данных
Отправлено: Александр Кульчицкий от Октября 12, 2007, 02:54:50
У меня есть сомнения относительно основного языка наименования и необходимости двух колонок для длины круга.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Октября 12, 2007, 05:46:40
Из-за особенностей построения данного вида баз данных колонка с названием трассы в оригинале будет в любом случае, но её можно будет не отображать в этой таблице. Для любых имён и названий будет отдельная таблица, в которой будут перечислены все варианты названий, переводов и т.п.
Насчёт длин круга, в принципе, есть возможность сделать формулы для пересчёта. Длина в милях может пригодиться при использовании публикаций с неметрическими данными.
Название: Re: Инструменты. База данных
Отправлено: Александр Кульчицкий от Октября 12, 2007, 07:23:02
Цитата: Владимир Коваленко
Из-за особенностей построения данного вида баз данных колонка с названием трассы в оригинале будет в любом случае, но её можно будет не отображать в этой таблице.

В принципе это я и имел в виду. Строить базу данных и осуществлять поиск не по оригинальному названию (переводу) несколько сложнее.
Цитата: Владимир Коваленко
Насчёт длин круга, в принципе, есть возможность сделать формулы для пересчёта. Длина в милях может пригодиться при использовании публикаций с неметрическими данными.

Желательна формула для пересчета и возможность переключения, как для заведения данных, так и для просмотра в двух системах, но чтобы постоянно отображалась - одна. Понимаю, что это чуть сложнее, но приятней для пользования.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Октября 12, 2007, 08:09:25
Цитата: Александр Кульчицкий
В принципе это я и имел в виду. Строить базу данных и осуществлять поиск не по оригинальному названию (переводу) несколько сложнее.

Теперь понял.
Сложнее - только тем, кто не хочет учиться. Я не собираюсь усугублять и без того хреновое состояние знания русского языка. Лучше пускай знают один язык хорошо, чем два - плохо.
Цитата: Александр Кульчицкий
Желательна формула для пересчета и возможность переключения, как для заведения данных, так и для просмотра в двух системах, но чтобы постоянно отображалась - одна. Понимаю, что это чуть сложнее, но приятней для пользования.

Да, конечно. Я предусмотрел мили по той причине, что иногда в первоисточниках именно в них всё указывается, и попытки пересчёта дают некоторую погрешность. То есть, если взять длину круга в километрах и поделить на время прохождения круга, получится скорость в км/ч. Если использовать длину круга в милях, скорость будет в милях/ч. Если известна только скорость в милях/ч и длина круга в километрах, то можно высчитать из них время через пересчёт длины, а затем пересчитать в км/ч. В общем, результат должен несколько отличаться.
Название: Re: Инструменты. База данных
Отправлено: Мозговой Роман от Октября 12, 2007, 09:33:41
Мили-километры будут отличаться ненамного в результате пересчёта, бОльшую погрешность даст неточность в самом источнике. Поэтому поддержу достаточность указания в метрических единицах.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Октября 15, 2007, 02:04:52
Решил всё-таки отказаться от общей таблицы имён и названий и всю лингвистическую информацию размещать в тематических таблицах, из которых переработал пока что только "Трассы". Вот схема БД:
(http://img91.imageshack.us/img91/2420/database2007101501no1.th.gif) (http://img91.imageshack.us/my.php?image=database2007101501no1.gif)
А вот пример заполнения таблицы "Трассы", только в несколько необычном виде:
     Код трассы 1 2 3 4  Трасса Донингтон Донингтон Донингтон Валенсия  Название в оригинале Donington Donington Donington Valencia  Язык английский английский английский испанский  Транскрипция Донингтон Донингтон Донингтон Валенсия  Транслитерация Донингтон Донингтон Донингтон Валенсия  Другие варианты перевода          Описание трассы Донингтон (1933) Донингтон (1935) Донингтон (1937)    Официальное название трассы "Донингтон-Парк" "Донингтон-Парк" "Донингтон-Парк" трасса имени Рикардо Тормо  Официальное название трассы в оригинале Donington Park Donington Park Donington Park Ricardo Tormo Circuit  Страна Великобритания Великобритания Великобритания Испания  Город Донингтон Донингтон Донингтон Валенсия  Длина круга, км          Длина круга, миль 2,327 2,971 3,220    Год начала функционирования 1933 1935 1937    Год окончания функционирования 1935 1937 1939  
Валенсию я добавил в качестве примера трассы, имеющей некое специальное название, не совпадающее с описанием трассы по географическому признаку. Я не искал испанского названия трассы, так что можете подсказать (в данном случае вопрос абсолютной точности неважен, это всего лишь пример построения и функционирования БД).
Можете предлагать каверзные примеры, которые, может быть, не вписываются в предложенную схему.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Ноября 23, 2007, 01:37:58
Цитата: Андрей Безбожный
Как программер, я бы мог многое подсказать и, возможно, что-нибудь и сделать. Проблема в том, что я не могу понять как должен выглядеть сайт-архив. Какие разделы и т.д.? Речь идёт о некоей базе - как она должна выглядеть (в смысле интерфейс - поля ввода, селекторы и т.д.) и в каком виде выдавать результаты запросов?

Андрей, в данной БД основной упор делается не на результаты участников (место в гонке, причина схода и т.п.), а на заявочные списки. То есть в первую очередь должны быть списки соревнований, затем - списки гонок в рамках соревнований и списки участников по стартовым номерам. Потом уже можно будет добавлять результаты заездов.
Всё это нужно для того, чтобы идентифицировать фотографии. Например, у тебя есть фотография, на которой видно, что трасса - Гудвуд, автомобиль - "Ягуар", а его номер - 23. Надо открыть БД и сделать выборку по этим параметрам, чтобы дальше уже решить, в какой из гонок был сделан данный кадр.
Иногда возникает потребность проследить все выступления того или иного автомобиля или гонщика. Например, если ты пишешь статью о гонщике, надо в хронологическом порядке расписать, когда он выступал на одном автомобиле, когда - на другом. Интересно же, как Майк Хоторн завоевал себе место в "Феррари" в 1952 году за рулём своего "купера", а Мосс - в "Мерседесе" на личной "мазерати" в 1954 году.
Для этого нужна БД, позволяющая сделать выборки по таблицам.
Я пришёл к выводу, что рабочих таблиц должно быть три.
1. Таблица соревнований. Во все времена старались за день-два провести по несколько гонок. Вот этот набор гонок и называется соревнованием. В таблице надо только показать, в какой день на какой трассе проводилось такое вот масштабное мероприятие. Что-то типа этого: http://f1.pluto.net.ru/forum_posts.asp?FID=4&TID=606&TPN=1&get=#17589.
2. Таблица гонок. А вот теперь уже для каждого соревнования расписываются конкретные гонки, входившие в программу. Здесь заполняются такие данные, как дистанция в кругах и километрах, категория и класс автомобилей.
3. Таблица участников. Здесь уже для каждой гонки приводится список участников со стартовыми номерами, марками, моделями и заводскими номерами автомобилей и двигателей, а также результатами заездов.
Получается, что самая подробная таблица - третья. В ней будет код конкретной гонки из второй таблицы. А во второй таблице будет код соревнования из первой.
То есть, например, в строчке третьей таблицы будет всё подробно расписано: стартовый номер, марка автомобиль, модель, заводской номер, марка двигателя, модель, заводской номер; гонщик, результат в тренировке, результат в гонке. Всё это привязывается к конкретной гонке через ещё одно поле - с кодом гонки.
На данный момент схема БД остаётся такой же, как в предыдущем сообщении.
Название: Re: Инструменты. База данных
Отправлено: Vadim от Ноября 23, 2007, 03:23:01
Добавлю свои три копейки.
Насколько я понимаю ситуацию... цель - получить удобную для дальнейшей обработки информацию.
На начальном этапе проще всего набивать информацию в Excel'e. И вот здесь мне Черепович советовал выбрать главным критерием - первоначальный набор данных по дате. То есть, для первой в списке гонки берется ID - год+номер гонки в году, например 189501, следующая строка 189502 и так далее. Это будет первый лист, который набиваешь, назовем его RACES. Второй лист состоит из результатов, кот. назовем CLASSIFICATION -Здесь вбиваем результаты. А потом уже, когда обработан большой объем информации, всё это добро загоняется в Access, из которого можно будет формировать любые таблицы по любому запросу... будь то место проведения, дата, фамилия гонщика, и т.д. и т.п.
Вот, например, как могут выглядеть страницы для набора инфы в Exel'e:
     ID Date Place Distance, km Distance, miles Laps Lap, km Lap, miles Starters Weather Name Notes   189501 11-13.06.1895  1178,00     46 entries, 22 starters Paris-Bordeaux-Paris (I GP de l'A.C.F.)  Race named in retrospect: I Grand Prix de l'A.C.F.; First two ineligible for prizes as cars were two seaters and only four seaters were eligible; Route: Paris-Versailles-Orleans-Vouvray-Tours-Poitiers-Ruffec-Angouleme-Bordeaux and back (B)
   189502 28.11.1895 (02.11)   92    about 100 entries, only two cars started Times-Herald Contest Chicago-Evanston Chicago-Waukegan-Chicago; Source:"The Checquered Flag" by Ivan Rendall (1993); According to "A Record of Motor Racing" by Gerald Rose (1909, 1949)  about 100 entries, only two cars started; The winners' time  8:44, Average speed 10.76 mph; The 2nd classifier J. Frank Duryea did not finish the race
 
-----------
 
     GP Order Driver Nat Chassis Entrant Class Cla Reason Pos Time Laps Speed Speed, mph No Starting Pos Fastest Lap Pole Position Q speed Laps lead Notes    189501 1 Emile Levassor FRA Panhard 4 hp   Classified  1 48:48'00"  24.54kph/15.25mph         189501 2 Rigoulot FRA Peugeot   Classified  2 54:35'00"              189501 3 A. Koechlin  Peugeot   Classified  3 59:48'00"            
 
     189502 1 Oscar Mueller  Mueller Benz   Classified  1  
Название: Re: Инструменты. База данных
Отправлено: Алексей Рогачев от Ноября 23, 2007, 07:09:52
Предложенная тобой структура в точности повторяет две основные таблицы моей базы данных (разве что они у меня называются Events и Raceresults, а индекс состоит из трех частей - год, соревнования, гонка в рамках соревнований). Но я советую не связываться с Excel, а сразу создавать таблицы в Access - вдруг при импорте данных возникнут неувязки в формате полей? Я могу ошибаться (с Access давно не работал, моя БД реализована на совершенно иной программной основе), но, кажется, длина текстового поля ограничена 255 символами, то есть пространные текстовые примечания столбца Notes при импорте таблиц в Access могут оказаться потерянными или обрезанными.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Ноября 23, 2007, 23:05:58
В принципе, я иду примерно в том же направлении, только у меня три таблицы, а у вас - по две.
Вадим, ты соревнования вообще не учитываешь. Вероятно, ты просто учитываешь только какие-то наиболее значимые гонки, а их можно считать самодостаточными, и необходимость разбираться в сборных соревнованиях отпадает.
Лёша, ты каким-то образом соревнования учитываешь, но не так явно. В твоей БД можно получить выборкой список соревнований? Я пытаюсь понять, не является ли моя таблица соревнований лишней.
Название: Re: Инструменты. База данных
Отправлено: Алексей Рогачев от Ноября 24, 2007, 03:20:03
Не совсем понял твой вопрос, а именно: что именно должна содержать выборка, сформированная запросом? Список соревнований, проводившихся в каждом конкретном сезоне? Если да, то это сделать можно, и довольно просто. Поскольку каждая гонка, входившая в состав каких-либо соревнований, в таблице Events в поле EventName имеет одно и то же название (например, "Чемпионат СССР, 3 этап" или "Гонки на приз общества "Калев""), то можно составить такой запрос:
SELECT DISTINCT EventName
FROM events
WHERE (IDEvent>740000)AND(IDEvent<750000)
ORDER BY EventName
Этот запрос расшифровывается так: выбрать все различные значения поля EventName таблицы Events для сезона 1974 года, упорядочив по значению Event Name. Я сам использую его в своей базе данных - правда, в неявной форме, текст запроса был записан один-единственный раз в ходе программирования, а для его выполнения надо только указать конкретный год - по введенному значению вычисляются параметры для предложения WHERE, и запрос выполняется.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Ноября 24, 2007, 10:49:29
Вот, например, фрагмент таблицы гонок:
1963.03.30 Sat Snetterton          Lombank Trophy Meeting       (1/3) Race 1                               Appendix C Sports Cars and GT prototypes
Название: Re: Инструменты. База данных
Отправлено: Vadim от Ноября 24, 2007, 12:41:53
Владимир, ты сам ответил на свой вопрос.
Да, есть ещё поле(столбец) с названием соревнования, по которому ты и сможешь выбрать потом из базы необходимые тебе гонки и сформировать список/таблицу/etc.
Таких дополнительных полей(столбцов) может быть сколько угодно. Главное, чтобы они тебе были нужны для последующей группировки, сортировки, обработки и осмысления.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Ноября 24, 2007, 13:00:11
Мы дождёмся ответа Алексея.
Если ты рассматривал схему моей БД, ты должен был увидеть, что всё это уже реализовано. Если у Алексея нет таблицы соревнований, то в этом отношении я пошёл на шаг дальше его схемы и на два - твоей. Ты ведь вообще не заложил в свою таблицу соревнования - только отдельные гонки.
И мне здесь важно понять, не наворотил ли я лишнего.
Да, кстати.
Цитата: Flicker
Да, есть ещё поле(столбец) с названием соревнования, по которому ты и сможешь выбрать потом из базы необходимые тебе гонки и сформировать список/таблицу/etc.

Это тот случай, когда нужна максимальная точность в терминологии. Сначала ты сказал "соревнования", а потом - "гонки". По таблице соревнований нельзя выбирать гонки. Просто оговорка?
Название: Re: Инструменты. База данных
Отправлено: Алексей Рогачев от Ноября 24, 2007, 13:11:43
По-моему, ты здесь именно "наворотил лишнего" (http://oldsmile/smiley2.gif) Стремление к полной нормализации базы данных - это, конечно, хорошо, но скажи, зачем тебе отдельная таблица соревнований? У меня ее нет, потому что в свое время я попросту счел ее ненужной. Получить список всех соревнований сезона я легко могу и без нее - при помощи приведенного выше запроса. Если же вводить еще одну таблицу, БД только станет более громоздкой, сложной в работе и менее доступной для понимания ее структуры. Короче говоря, при конструировании своей БД я создавал отдельные таблицы только тогда, когда это действительно было необходимо.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Ноября 24, 2007, 13:20:36
Я так понимаю, суть реляционных баз данных в том и состоит, чтобы разбить весь массив на наиболее простые таблицы, из которых затем по идентификаторам составлять любые комбинации данных.
А как у тебя выглядят описания соревнований? У меня это - комбинация даты и названия соревнования (которое может быть повторяющимся, например, "пасхальные соревнования БАРК").
Название: Re: Инструменты. База данных
Отправлено: Алексей Рогачев от Ноября 24, 2007, 13:43:21
Разбивать массив данных на простые таблицы стоит до поры до времени - пока это обоснованно. После какого-то момента это, наоборот, не упрощает, а усложняет работу.
А вот тебе для примера фрагмент моей таблицы Events:
     600401
Название: Re: Инструменты. База данных
Отправлено: Алексей Гончарик от Ноября 25, 2007, 12:08:59
А кто-то подсчитывал количество участников в гонках? Я пытался подсчитывать - по таким сериям как Ф-1, Ф-3000 проще, т.к. по этим сериям есть множество ссылок в Интернете. Зато по европейской Ф-2 много противоречивой информации.
Данная проблема возникает с тем, что есть заявочные списки, но при этом не все участники стартовали.
 
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Ноября 25, 2007, 13:46:52
Лично меня подобные вопросы просто не интересуют. Статистика в виде количественного подсчёта чего-либо и сопоставления разных чисел - штука вообще для истории вредная, так как не учитывает то, что цифрами описать нельзя. Традиционная трактовка истории, которую я так критикую, - это, в принципе, упрощенная статистическая обработка результатов соревнований.
Название: Re: Инструменты. База данных
Отправлено: Владимир от Ноября 25, 2007, 16:15:54
 
Цитата: Алексей Рогачев
Разбивать массив данных на простые таблицы стоит до поры до времени - пока это обоснованно.
Мне один человек, который их разрабатывает периодически сказал примерно так.
Должна быть одна большая - основная таблица, в которой нужно предусмотреть все возможные поля для решаемой задачи.  Причем "вся соль" в том, что в ней большинство полей хранится  в виде кодов - они быстрее обрабатываются и занимают меньше места в памяти.
И остальные маленькие, где  каждому коду  соотвестывует конкретное значение.

Плюс  нужно использовать язык запросов для организации быстрого поиска и различных его вариантов.

Название: Re: Инструменты. База данных
Отправлено: Алексей Рогачев от Ноября 25, 2007, 16:32:43
То, о чем ты говоришь, и называется нормализацией. Теоретически так оно и должно быть. Но на практике полностью нормализованных баз данных почти не бывает. Я изучал одну книгу, посвященную программированию СУБД в среде Delphi, там как раз об этом и говорилось: мол, не надо слепо следовать канонам, а надо делать так, как будет удобнее и эффективнее решать конкретную задачу. Если полная нормализация для этого не требуется, то и не стоит за ней гнаться. Пусть будут затрачены лишние ресурсы памяти и времени обработки, зато будет легче понимать структуру, а следовательно, и составлять запросы на SQL.
Экономия ресурсов важна для огромных распределенных баз данных, где обрабатываются и пересылаются по сетям очень большие объемы информации. Для наших же целей нужны относительно маленькие локальные БД, при работе с которыми сэкономленные килобайты будут совершенно неощутимыми. Например, вся моя база данных (считая и таблицы, и файлы настроек, и исполняемый модуль СУБД) имеет объем около 10 МБ. А оперативная память компьютера - 2 ГБ, жесткий диск - 320 ГБ. Ну и зачем тогда такая грошовая экономия?Алексей Рогачев39412,0738541667
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Ноября 26, 2007, 02:15:02
Цитата: gp2
Должна быть одна большая - основная таблица, в которой нужно предусмотреть все возможные поля для решаемой задачи.  Причем "вся соль" в том, что в ней большинство полей хранится в виде кодов - они быстрее обрабатываются и занимают меньше места в памяти.
И остальные маленькие, где  каждому коду  соотвестывует конкретное значение.

Мне понравилась эта формулировка. Я вроде бы как это чувствовал, но не совсем осознанно.
Получается, в нашем случае большая таблица - это результаты соревнований, в каждой строчке которой уникальная информация - это комбинация "гонщик + автомобиль + стартовый номер + результаты". Для каждой такой комбинации повторяющаяся информация - это дата, соревнования, гонка (со всеми её данными), трасса (со всеми её параметрами). Получается, что каждой уникальной комбинации достаточно привести только один код - и он приведёт к массе в принципе полезной, но чаще всего ненужной информации.
Получается, есть два подхода.
1. Лёша, это твой: оставить некоторую избыточность, и в большой таблице просто скрывать то, что сейчас не нужно. Скрывать лишнее.
2. Абсолютная оптимизация: добиться максимальной простоты большой таблицы, чтобы вызывать из маленьких только нужную информацию. Вызывать нужное.
Мне теперь надо понять, какой из вариантов более эффективен.
Кстати, при каких-либо изменениях и дополнениях в структуре БД что удобнее?
Допустим, Лёша, ты решил изменить название соревнования. Ты можешь сделать это одной командой, или тебе придётся вручную переписывать несколько десятков записей?
Название: Re: Инструменты. База данных
Отправлено: Алексей Рогачев от Ноября 26, 2007, 03:30:19
Разумеется, одной командой! Жму на кнопочку, открывается стандартный системный диалог замены, ввожу туда то, что надо найти и на что надо заменить, и нажимаю "Заменить все".
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Ноября 26, 2007, 04:25:08
Ладно, над этим надо ещё думать.
Ещё один важный момент. Необходимо прописывать отдельной строкой каждое шасси каждой модели автомобилей. Понятно, что нет полной информации по этому вопросу. Я думаю, что для тех случаев, когда конкретный экземпляр автомобиля неизвестен, нужно предусмотреть как бы общий вариант - модель автомобиля без указания номера шасси. При появлении уточняющей информации можно заменить общее название на конкретное.
В связи с этим возникает другой вопрос: как обозначать автомобиль, для которого известен номер шасси? Можно указать автомобиль и номер в разных ячейках, но тогда, вероятно, сложно будет выбирать конкретный автомобиль через подстановку при заполнении результатов гонок.
Можно номер шасси указывать в скобках после названия автомобиля.
Название: Re: Инструменты. База данных
Отправлено: Алексей Рогачев от Ноября 26, 2007, 04:39:19
Допустим, у тебя есть таблица результатов гонок, в ней всякие столбцы, как полагается: имя, фамилия, место, время гонки, скорость и так далее. А что касается автомобиля, то можно поступить следующим образом: делаешь два поля, одно называешь, допустим, IDCar - сюда будет вписываться код модели автомобиля, - а второе ChassisNo - здесь будет храниться номер конкретного шасси. Поле IDCar будет служить для связи с другой таблицей, где можно хранить подробные технические характеристики. А номер шасси, по-моему, незачем переносить куда-нибудь еще, пусть так и находится в таблице результатов гонок. Тогда запрос на участие в гонках какого-либо конкретного автомобиля с известным номером шасси можно будет выполнять даже без помощи SQL, просто через фильтр данных. Алексей Рогачев39412,5590509259
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Ноября 26, 2007, 04:52:02
Я хочу заложить возможность заносить в БД технические характеристики, а в стародавние времена автомобили одной модели могли различаться даже такими серьёзными деталями, как тип подвески (у одной - "балка", у другой - труба де Диона). Поэтому каждое шасси стоит определять конкретно.
Тут ещё такой вопрос. При абсолютной оптимизации надо разделить марку автомобиля ("Мазерати"), модель (250Ф) и номер шасси (не говоря уж о номере двигателя).  Можно ли какими-либо операциями собирать в одну ячейку данные из нескольких? Чтобы, например, из "Мазерати" и "250Ф" можно было бы получить "Мазерати 250Ф".
Название: Re: Инструменты. База данных
Отправлено: Алексей Рогачев от Ноября 26, 2007, 07:36:22
Цитата: Владимир Коваленко
Я хочу заложить возможность заносить в БД технические характеристики, а в стародавние времена автомобили одной модели могли различаться даже такими серьёзными деталями, как тип подвески (у одной - "балка", у другой - труба де Диона). Поэтому каждое шасси стоит определять конкретно.

Что ж, это тоже выход. Но тогда тебе надо будет для каждой гонки с абсолютной точностью знать все номера шасси.
Цитата: Владимир Коваленко
Тут ещё такой вопрос. При абсолютной оптимизации надо разделить марку автомобиля ("Мазерати"), модель (250Ф) и номер шасси (не говоря уж о номере двигателя).  Можно ли какими-либо операциями собирать в одну ячейку данные из нескольких? Чтобы, например, из "Мазерати" и "250Ф" можно было бы получить "Мазерати 250Ф".
Я не понял суть вопроса. Что в твоем понимании значит "собирать"? Получать в одной ячейке выводимого на экран результата совокупность данных из нескольких полей таблицы? При самостоятельной разработке СУБД - да, есть такое понятие "вычисляемое поле", то есть такое, значение которого получается из других полей таблицы по заданному тобой алгоритму. Наверняка в Access должно быть что-нибудь подобное.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Ноября 26, 2007, 07:37:57
Именно это я и имел в виду.
Название: Re: Инструменты. База данных
Отправлено: Алексей Рогачев от Ноября 26, 2007, 07:48:35
По-моему, прежде чем разрабатывать структуру представления автомобилей в таблице результатов, надо определиться со степенью подробности информации. Наверняка ведь конкретные номера шасси ты знаешь далеко не во всех случаях - иногда просто модель, иногда только марку автомобиля. Я могу предложить следующий вариант индексации - на примере той же "Мазерати-250Ф":
Mas - просто "Мазерати" (для тех случаев, когда модель неизвестна; в эту запись, разумеется, никакие технические данные не вводятся)
Mas250F - "Мазерати-250Ф" (когда неизвестен номер шасси; сюда можно ввести "общепринятые" технические данные, фигурирующие в популярных публикациях, или тоже не вводить ничего)
Mas250F-025 - "Мазерати-250Ф", шасси номер 25 (здесь уже полные технические данные по конкретному автомобилю, которые тебе удалось собрать)
Эти индексы будут служить для связи таблиц "Результаты гонок" и "Автомобили". А в таблице "Автомобили" можно будет сделать текстовое поле для полного названия.
Название: Re: Инструменты. База данных
Отправлено: Владимир от Ноября 27, 2007, 16:40:12
 Есть несколько первичных вопросов, о которых для начала нужно хотя бы подумать и попытся порассуждать, прежде чем что-либо делать дальше.

Важно это потому, что разработанную структуру базы данных данных впоследствии изменять практически невозможно. Это весьма трудоемкая, временами невыполнимая операция. Это нужно четко понимать.

Поэтому вопросы следующие. В вопросах важен сам момент предусмотреть, заложить  те или иные возможности.

1. Уровень базы данных. Все серии Мировой автоспорта?  Ведущие серии ?
Одна серия?
Как вариант по отдельной базе данных на каждую серию. Но тт потеряется некоторый весьма интересный момент, как мне кажется. И получится много отдельных программ.  Но с другой стороны такие базы по каждой серии будут проще.

2. Невозможность предусмотреть все измения в будущем (числа гонок, систем начисления очков, и подобных явлений, аномальных для разроаботанной структуры базы данных.

3. Учет аномалий, т.е. некоторый редких, "едичиных" событий.
Пример для Формулы-1:
0,5 очка за гонку и деление очков за быстрый круг;
выступления нескольких гонщиков на одном автомобиле и тем более ваыступления двух и более гонщиков на двух и более автомобилях в одной гонке (кажется одна гонка была какая-то в этом плане очень-очень запутанная) - с точки зрения организации отношений в базе данных - это коллизия весьма серьезная.
Прмеров этих хватит, думаю пока.

4. Перечень всех параметров, которые необходимо зафиксировать в базе. Добавление потом чего-то неучтенного  может казаться невозможным.

Например, хранить ди в базе только статистику или же и текстовые отчеты из разных источников? 

5. Кто-то эту базу данных должен будет вести.  Поверьте, что  вести базу пожалуй даже тяжелее, чем её создать и разработать. Как никак разраьатывается она один раз, а поддерживать её нужно  будет "каждый день".
Причем тут тоже сложность - если базу делать обычной локальной, то пока один будет вносить изменения и дополнения, осьтальные будут ждать пока первый  не закончит. Если же оба и более людей внесут в базу изменения одновременно, то придетя выбирать только один вариант.
Второй пусть - распределенная база данных - но как устроен механизм многопользовательского доступа и как решаются проблемы коллизий при одновременной попытке доступа к одному и тому же файлу - этого я не знаю.
И насколько тяжелее такая реализация базы данных - тоже не знаю.

 gp239414,0595717593
Название: Re: Инструменты. База данных
Отправлено: Александр Кульчицкий от Февраля 27, 2008, 06:03:20
Алексей, но твой сайт можно рассматривать тоже как некую базу данных, но там тоже не голая статистика. У тебя таблицы с результатами гонок связаны с автомобилями (фотографии, технические характеристики и тексты), трассами (то же самое), а сейчас к ним добавляются и гонщики.
Название: Re: Инструменты. База данных
Отправлено: Алексей Рогачев от Февраля 27, 2008, 10:53:54
Сайт - это простой набор веб-страниц, а не база данных.
Кстати!!! Своим замечанием ты меня натолкнул на совершенно закономерное рассуждение: раз уж у меня из раздела результатов гонок есть переходы к трассам и автомобилям, надо бы, логически рассуждая, обеспечить такие переходы и к новому разделу о гонщиках. Мне как-то это совершенно в голову не приходило (http://oldsmile/smiley9.gif) Спасибо за подсказку!Алексей Рогачев39505,8215162037
Название: Re: Инструменты. База данных
Отправлено: Владимир от Февраля 27, 2008, 18:32:01
 
Цитата: Владимир Коваленко
1. Ты делаешь выборку из результатов и делаешь вывод, что
2. ...
3. а вышеуказанные модели автомобилей потенциально были лучшими среди современников, но не показали результатов из-за проблем с доводкой. Такие вещи статистическая обработка отвергает, потому что основана исключительно на цифрах.
4. ...Тренировки...
1. Именно для выборки, причем максимально быстрой и с возможностью построения сложных запросов и вывода на экран в удобной форме  и делается БД. Иначе  все можно  было бы сохранять в текстовом виде.
2. Выбоки могут быть разными, если будет залодена информация и соответствующие запросы обработки к ней.
3. Можно ввести таблицу с подробным перечнем тезничесмких характеристик каждой машины... .
4. Никто не запрешает ввести табицы и по тренировкам (практикам), и по квалификации и по гонкам.

***

Просто, чем больше будет различных параметров, тем сложнее будет структура БД и тем больше информации нужно будет вносить.
Можно сделать и текстовые поля типа Memo (если не ошибаюсь)... .
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Февраля 28, 2008, 01:11:09
Есть определённая грань, после которой база данных уже не служит изучению истории, а существует ради себя самой и историю искажает.
И напомню, что я сужу с позиций автоспорта пятидесятых годов и более ранних периодов, когда всё было гораздо менее стандартизировано, чем сейчас, и для внесения в базу данных многие параметры пришлось бы тупо подгонять под современные термины и понятия, а это означает искажение общей картины.
Для себя я такое считаю неприемлемым, но никому не навязываю. Делайте каждый как считаете нужным. Делов-то!
Название: Re: Инструменты. База данных
Отправлено: Александр Кульчицкий от Февраля 28, 2008, 04:18:59
Цитата: Алексей Рогачев
Сайт - это простой набор веб-страниц, а не база данных.

Ты знаешь, а я не вижу большой разницы между набором связанных веб-страниц и связанных таблиц, тем более что часть твоих страниц содержат таблицы. Кроме того, в таблицах баз данных существуют текстовые поля. А любую текстовую веб-страницу можно представить себе, как таблицу, состоящую из единственной ячейки (выродившаяся таблица), на которую может быть ссылка из большой таблицы. Другое дело, что таблицы на твоих веб-страницах как бы не совсем настоящие, не предназначены для ведения статистики, хотя в этом вопросе я может и ошибаюсь, этим вопросом я у тебя просто не интересовался.
Название: Re: Инструменты. База данных
Отправлено: Алексей Рогачев от Февраля 28, 2008, 04:24:59
Цитата: gp2
1. Именно для выборки, причем максимально быстрой и с возможностью построения сложных запросов и вывода на экран в удобной форме  и делается БД. Иначе  все можно  было бы сохранять в текстовом виде.

Вот она, принципиальная разница, которую я имел в виду.
Название: Re: Инструменты. База данных
Отправлено: Александр Кульчицкий от Февраля 28, 2008, 05:10:48
Относительно выборки я с тобой согласен. Просто выборка из текстовых документов гораздо сложней, но она, в принципе, возможна. Вспомни возможности "Ворда" или нормативно-справочных прграмм типа "Консультант Плюс", "Гарант" и им подобных. С фото и видеоматериалами еще сложней, выборка для них может осуществляться только при помощи каталогав, т.е. эти материалы должны быть каталогизированы. Это как библиотека, которую нельзя себе представить без каталога. Более простой вариант, но и более примитивный с точки зрения возможности выборки - идентификация содержания и названия.
Не удивлюсь, если скоро научатся делать выборку из голосовых документов, как сейчас распознают рукописный текст (печатный уже давно научились).
В связи с этим такие базы данных, о которых я говорю, гораздо сложней. Недаром Володя не видит, как формализовать некоторые вещи. Я этого тоже не знаю.
Название: Re: Инструменты. База данных
Отправлено: Алексей Рогачев от Февраля 28, 2008, 07:13:50
В принципе такие базы данных, о которых ты говоришь, можно создавать и сейчас. В формате Paradox 7, в котором реализована моя БД, есть специальные типы полей для изображений и для длинных текстов - а ведь этот формат уже довольно старый, ему уже лет десять, кажется.
Название: Re: Инструменты. База данных
Отправлено: Александр Кульчицкий от Февраля 28, 2008, 07:56:43
Да? А мне показалось, что меня слишком уж занесло. Размечтался.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Апреля 13, 2008, 01:23:43
База данных некоего Дино Бесена: http://www.geocities.com/f1db2000/.
Собственно файл базы данных: http://rapidshare.com/files/106744659/f1history_20080411.rar.
Тема на "Ностальгии" с обсуждением: Formula 1 History Database (http://forums.autosport.com/showthread.php?s=&threadid=95033).
БД плохая, но для интереса стоит посмотреть.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Июня 13, 2008, 13:29:14
Снова вернулся к своей базе данных. Ввёл такое понятие, как СТАТУС гонки. В наше время это аналог статуса серии. Бывают серии международные, попавшие под покровительство ФИА. Они публикуются в официальном календаре федерации (2008 International Sporting Calendar  (http://argent.fia.com/Web/fia-public.nsf/vcal/00.20/$File/2008FULLCALENDAR.pdf)). Есть другие международные серии, которые не попали в календарь ФИА. Есть серии национальные, к участию в которых допускаются только обладатели национальных лицензий. Наконец, клубные соревнования предназначены только для членов своих клубов.
Я думаю, что в этом описании можно найти массу спорных ситуаций, но, в целом, схема примерно такая.
Раньше было то же самое, только серий не было, а вышеописанные признаки касались конкретных гонок.
Статусы гонок будут такими:
а) международная гонка ФИА/АИАКР;
б) международная гонка;
в) национальная гонка;
г) местная гонка;
д) клубная гонка;
е) неопределённый статус.
Схема БД на сегодняшний день выглядит следующим образом:
(http://img362.imageshack.us/img362/6041/database20080613ua2.th.gif) (http://img362.imageshack.us/my.php?image=database20080613ua2.gif)
Ещё раз всё просмотрел и пришёл к выводу, что принципиальные составляющие базы готовы, и можно приступать к заполнению. Отдельные детали будут отрабатываться потом. Лучше всё-таки начать заполнять, а то это дело ещё долго не сдвинется с мёртвой точки.
Заслуживающей внимания статистики много, но поскольку статистика основных соревнований в интернете почти полностью основана на Шелдоне, решил вносить в БД первоисточник. Потом можно будет добавлять остальное.
Название: Re: Инструменты. База данных
Отправлено: Мозговой Роман от Июня 16, 2008, 03:06:38
Владимир, может, в блоке "Автомобили" по примеру "Результатов" поставить поле Примечание? Будет удобно в тех случаях, когда в разных источниках встречается отличная информация по марке авто или (чаще) двигателя. В доп. поле можно будет указать источник основной информации и альтернативный вариант.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Июня 16, 2008, 03:40:49
Я думал над подобными проблемами. Возможны ещё ситуации, когда для одной гонки известны все детали, включая номера шасси и двигателя, а для другой таких деталей нет, хотя есть мнение, что они должны быть такими же.
Я планирую создавать отдельные записи для каждого возможного варианта. если подробности неизвестны, будет использоваться общий вариант, даже если доподлинно известно, что использовались разные шасси.
Например, вот какие (вымышленные) варианты могут быть.
а) "Феррари-100" (общий);
б) "Феррари-100", номер шасси - 001;
в) "Феррари-100", номер шасси - 002 (и т.д.);
г) "Феррари-100", номер шасси - 001, номер двигателя - 001 (и т.д.).
Несмотря на то, что вариант "г" - это однозначно "б" и, тем более, "а", он может использоваться только тогда, когда точно известно, что на автомобиле стоял первый двигатель. Затем, допустим, его поменяли, но для определённой гонки мы не знаем, в ней участвовал новый двигатель или нет, и тогда используем вариант "б". Наконец, на другую гонку привезли обе машины, но мы не знаем, какой гонщик на каком шасси выступал. Тогда для обоих в БД будет числиться общий вариант "а".
Я не вижу в этом проблемы, потому что в любой момент в записи участника можно поменять код автомобиля с одного на другой. Правильно я мыслю?
Вопрос, возможно, глупый, но так как я очень мало занимался с БД, у меня никогда нет полной уверенности в том, правильно ли я понимаю ситуацию.
Название: Re: Инструменты. База данных
Отправлено: Мозговой Роман от Июня 16, 2008, 05:14:16
Мой вопрос больше касался тех ситуаций, когда в разных источниках приводятся разные данные:
- в источнике 1) : "Феррари-100"
- в источнике 2) : "Феррари-101"
Какой выбрать? Один из двух, а второй указать в примечании (и источники).
 
И второй вопрос. Не увидел названий команд в твоей базе. Это намеренное умалчивание?
Название: Re: Инструменты. База данных
Отправлено: Александр Кульчицкий от Июня 16, 2008, 05:36:38
Цитата: Роман Мозговой
И второй вопрос. Не увидел названий команд в твоей базе. Это намеренное умалчивание?

Я тоже не вижу команды (заявителя).
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Июня 16, 2008, 05:38:57
Цитата: Роман Мозговой
Мой вопрос больше касался тех ситуаций, когда в разных источниках приводятся разные данные:
- в источнике 1) : "Феррари-100"
- в источнике 2) : "Феррари-101"
Какой выбрать? Один из двух, а второй указать в примечании (и источники).

Да, поле "Примечание" нужно для подобных ситуаций, но выход из положения я вижу в несколько иной форме. Я планирую создавать отдельную запись для каждого различающегося события, а вот в примечаниях можно указать объяснение.
Помимо противоречивой информации сюда можно отнести ситуации с попеременным вождением одного и того же автомобиля. Например, если Фанхио стартовал на автомобиле под номером 1, затем сошёл и пересел на автомобиль под номером 2, которым управлял Коллинз, то в БД будут три записи:
№1; "Феррари"; Фанхио;
№2; "Феррари"; Коллинз;
№2; "Феррари"; Фанхио.
И тут для каждой из записей в примечаниях надо указать, при каких обстоятельствах гонщик был за рулём автомобиля. Вероятно, можно сделать ещё одно поле, в котором указать диапазон кругов участия.
А что касается предложенной тобой ситуации, то будут две записи с разными вариантами автомобиля. Поскольку нет гарантии, что какой-то из двух источников - более корректный, то и обоим вариантам надо дать равные права, верно? А такое возможно, только если будут две записи. В противном случае какой-то из вариантов нужно признать главным и указать в основном поле, а другой - в примечании.
Но бывают ситуации, когда все источники дают один вариант, а какой-то ещё источник - другой. Тогда, я думаю, новой записи не требуется, а противоречащую запись можно указать в примечаниях, как ты и предлагаешь.
Цитата: Роман Мозговой
И второй вопрос. Не увидел названий команд в твоей базе. Это намеренное умалчивание?

Да, это я пока упустил, но сделаю. Спасибо за замечание.
Александр правильно заметил насчёт заявителя. Я ориентируюсь на автоспорт системы классов и чемпионатов, который существовал до нынешней системы серий, а тогда понятие команды практически не существовало. Вместо него было как раз такое важное явление, как "заявитель".
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Июня 18, 2008, 04:09:53
Ещё я намереваюсь ввести такой пункт, как тип гонки:
а) в общим стартом;
б) с раздельным стартом;
в) гандикап с общим стартом;
г) гандикап с раздельным стартом;
д) гандикап комбинированный;
е) гандикап по длине круга.
В некотором смысле, современные гонки с добавлением некоторым участникам балласта можно было бы назвать гандикапом по массе, но тут на самом деле работают несколько иные механизмы.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Июня 18, 2008, 11:03:51
Добавил заявителей, статус и тип гонки:
(http://img171.imageshack.us/img171/321/database20080618om5.th.gif) (http://img171.imageshack.us/my.php?image=database20080618om5.gif)
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Июня 21, 2008, 00:02:33
Важный вопрос: можно ли в "Асессе" дату вводить не точную, а приблизительную. Например, если известно, что какая-нибудь редкая гонка проходила в апреле, скажем, 1932 года, но точная дата неизвестна, то можно ли сохранить дату как хх.04.32 или 00.04.32?
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Июня 21, 2008, 02:23:10
В материнские таблицы внесу такую запись как "Нет данных" для тех случаев, когда точной информации действительно нет, а что-то вписать надо.
Название: Re: Инструменты. База данных
Отправлено: Владимир Мальчиков от Июня 21, 2008, 05:00:49
 
Цитата: Владимир Коваленко
В материнские таблицы внесу такую запись как "Нет данных" для тех случаев, когда точной информации действительно нет, а что-то вписать надо.

Может тогда просто поле оставлять пустым лучше?
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Июня 21, 2008, 06:28:34
Пока что программа требует требует, чтобы в связанной ячейке что-нибудь было. Может, я что не так настроил в свойствах связанных полей?
Название: Re: Инструменты. База данных
Отправлено: Владимир Мальчиков от Июня 21, 2008, 06:40:30
При проектировании баз данных есть возможность указать, что  какое-то из полей может быть необязательным, чтобы впоследствии его можно было оставлять пустым.
На чем база создается?
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Июня 21, 2008, 08:01:09
На "Аксессе".
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Июня 21, 2008, 09:57:16
Вот как выглядит схема данных на сегодняшний день:
(http://img242.imageshack.us/img242/3807/database2008062101li9.th.gif) (http://img242.imageshack.us/my.php?image=database2008062101li9.gif)
У меня есть большое подозрение, что я что-то не так делаю. Скорее всего, мне надо переходить от заполнения таблиц к заполнению форм, но с формами я ещё не разобрался.
Я разобрался с подстановками и необходимыми для заполнения полями, и теперь процесс заполнения таблиц выглядит следующим образом (пока что я ограничился таблицей соревнований).
1. Надо оценить, в какой стране проводилась планируемая с внесению в БД гонка, и вписать в таблицу языков язык этой страны, если его там ещё нет.
(http://img242.imageshack.us/img242/7267/database2008062102js3.th.gif) (http://img242.imageshack.us/my.php?image=database2008062102js3.gif)
Основные языки я внёс, так что этот этап поначалу можно пропускать.
2. Внести в таблицу стран страну проведения гонки.
(http://img95.imageshack.us/img95/3051/database2008062103ug7.th.gif) (http://img95.imageshack.us/my.php?image=database2008062103ug7.gif)
Так как стран также не так уж и много, то этот шаг тоже в большинстве случаев будет пропускаться.
3. В четвёртом шаге будет фигурировать населённый пункт, но сначала надо внести в таблицу типов населённых пунктов его описание. Пока что там только есть "город", и этого достаточно. Но в будущем могут оказаться и горы (для подъёмов), деревни, реки и тому подобные географические пункты.
(http://img410.imageshack.us/img410/3285/database2008062104ai0.th.gif) (http://img410.imageshack.us/my.php?image=database2008062104ai0.gif)
4. Внести в таблицу населённых пунктов город, близ которого располагалась трасса, а в случае с линейными трассами между городами - город, откуда гонка стартовала.
(http://img518.imageshack.us/img518/3981/database2008062105ht1.th.gif) (http://img518.imageshack.us/my.php?image=database2008062105ht1.gif)
5. Ввести запись в таблицу названий соревнований.
(http://img242.imageshack.us/img242/4025/database2008062106mh5.th.gif) (http://img242.imageshack.us/my.php?image=database2008062106mh5.gif)
6. В таблице типов трасс указать тип.
(http://img95.imageshack.us/img95/8435/database2008062107km4.th.gif) (http://img95.imageshack.us/my.php?image=database2008062107km4.gif)
Основные типы трасс я внёс, так что пока что этот шаг также можно пропускать.
7. Внести трассу в таблицу трасс.
(http://img522.imageshack.us/img522/348/database2008062108no3.th.gif) (http://img522.imageshack.us/my.php?image=database2008062108no3.gif)
8. Все материнские таблицы готовы, и теперь можно заполнить главную дочернюю: таблицу соревнований.
(http://img518.imageshack.us/img518/3327/database2008062109cf5.th.gif) (http://img518.imageshack.us/my.php?image=database2008062109cf5.gif)
Ну и как? Что я делаю неправильно (а что-то тут действительно не так).
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Июня 23, 2008, 04:12:41
Мне подсказали, что при использовании таблиц так и будет. Для более продвинутой работы с базой данных нужно мастерить формы.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Июня 28, 2008, 13:35:02
С помощью трёх книжек мне удалось довольно далеко продвинуться в работе над базой данных. Теперь я обратился к интерфейсу. Вот как предварительно выглядит главное окно:
(http://img365.imageshack.us/img365/425/database2008062801dr1.th.gif) (http://img365.imageshack.us/my.php?image=database2008062801dr1.gif)
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Июня 28, 2008, 14:06:57
А вот и сам файлик БД: motorsports.rar (http://disk.tom.ru/fksldl4/1/9d902/motorsports.rar) (http://disk.tom.ru/fksldl4).
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Июня 29, 2008, 08:52:52
Файлик был скачан четыре раза. Каковы мнения, замечания, предложения?
Название: Re: Инструменты. База данных
Отправлено: Александр Кречетов от Июня 29, 2008, 09:18:27
У меня при выборе 1894, 1895 и 1896 годов вылезают в "Аксессе" четыре такие окна:
 
=================================================
Неизвестные приложению 'Microsoft Access' единицы измерения
Задайте допустимые единицы, например дьюмы (") или сантиметры (см).
=================================================
 
После нажатия на "Ок" открывается запрос.
 
И ещё немного напрягает достаточно темный синий цветАлександр Кречетов39628,7543981482
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Июня 29, 2008, 09:25:33
Цвет я изменю. Фиолетовый и его оттенки - мой любимый цвет, особенно в сочетании с жёлтым, но для подобного рода оформления такая цветовая гамма не годится. Я выбрал её исключительно для тренировки.
Сообщение об единицах измерения у меня не выдаётся. Пока что запросы скрыты только под этими тремя кнопочками. Скоро я оформлю запросы в формы.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Июля 01, 2008, 02:39:08
Для 1894 и 1895 годов по кнопочкам теперь открываются формы. Мне помогает разобраться один добрый человек. Будем ковырять дальше.
motorsports-2008.07.01.rar (http://disk.tom.ru/jfqfnbu/1/90a10/motorsports-2008.07.01.rar) (http://disk.tom.ru/jfqfnbu)
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Июля 02, 2008, 13:12:33
В сегодняшнем варианте БД при нажатии всех годовых кнопок выдаётся форма списка соревнований, но записи есть только для 1894 и 1895 годов.
motorsports-2008.07.02.rar (http://disk.tom.ru/6px1qqh/1/55c75/motorsports-2008.07.02.rar) (http://disk.tom.ru/6px1qqh)
В форме списка я убрал выпадающий список, но при этом не исправил отображение кодов вместо названий. Это сделаю позже.
Просто добавление новых записей будет происходить по иной схеме: при нажатии кнопки "Добавить соревнование" будет открываться форма со всеми необходимыми полями для заполнения.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Июля 24, 2008, 02:13:32
Текущая версия базы данных: motorsports-2008.07.24.rar (http://disk.tom.ru/fgcprlu/1/631da/motorsports-2008.07.24.rar) (http://disk.tom.ru/fgcprlu).
Что в ней можно увидеть? Нажмите кнопку любого года (но пробные записи есть пока только для 1894 и 1895 годов). Появится список соревнований. Его нельзя редактировать прямо в этой таблице. Редактирование пока что вообще не реализовано. Зато мы (мне помогает программист по имени Павел) работаем над добавлением новых записей. Нажмите на кнопку "Добавить соревнование" - откроется специальная форма. Её вид и содержание я буду корректировать. Если в выпадающем списке "Страна" выбрать страну, то в поле "Название по-английски" автоматически появится английское соответствие.
Эта форма предназначена для добавления новых соревнований, но поскольку при этом необходимо выбирать записи из нескольких материнских таблиц, а в случае их отсутствия - добавлять, то я закладываю в форму все необходимые для заполнения поля в той последовательности, в которой они должны заполняться, если этим заниматься вручную через сами таблицы.
Также я продумываю вариант использования БД англоязычными пользователями, для чего некоторые поля надо продублировать английскими соответствиями.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Июля 24, 2008, 07:37:46
Я предусматриваю указание следующей информации о трассах в БД.
1. Полное официальное название трассы, например: "Автодром имени Жиля Вильнёва".
2. Полное официальное название в оригинале. Для вышеуказанной трассы с ходу назвать не могу, но пусть будет Gilles Villeneuve Circuit.
3. Условное название, то есть то, которое можно было бы использовать в обиходе без потери смысла. В данном примере - просто "Монреаль". Другой пример: "Валенсия ("Рикардо Тормо")" и "Валенсия (городская)".
4. Условное название по-английски (Montreal).
5. Длина круга. Поскольку трассы модифицируются, длина круга меняется, задумано, что каждый вариант будет иметь отдельную запись, в которой четыре названия будут оставаться теми же, а длина круга и годы функционирования - меняться.
6. Период функционирования.
Я изначально закладывал указание характерного населённого пункта, то есть такого, в котором либо близ которого расположена трасса, но сейчас сомневаюсь в том, нужно ли это.
Если смотреть на ситуацию с точки зрения таблиц соревнований, то не нужно. Если предусмотреть БД как обширный источник статистической информации, то можно себе представить путеводитель по трассам, в котором можно было бы указывать самые разнообразные параметры. Тут населённый пункт с географическими координатами могли бы пригодиться.
Какие ещё данные можно представить в "карточке" трассы? Схему, указание страны. Кнопку для выборки из БД по данной трассе. Что ещё?
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Июля 25, 2008, 01:37:28
Посмотрел известные мне статистические сайты о трассах. Вот, например, страницы, посвящённые "Заксенрингу":
http://www.etracksonline.co.uk/Europe/Germany/sachsenring.html
http://www.gdecarli.it/php/circuit.php?var1=395&var2=2
Не нашёл на них ничего существенного, что потребовало бы добавления в таблицу БД.
Всё ещё думаю насчёт добавления характерного географического пункта. Вчера ещё счёл, что в этом смысла нет, а сегодня вспомнил такие примеры, как американские трассы, которые очень часто в публикациях фигурируют как, например, "Чикаголэнд", "Инфинеон", "Кентакки (Спидуэй)", но могут использоваться и имена населённых пунктов: Джолиет, Сонома, Спарта.
Изначально задумывалось, что будут использоваться не только населённые пункты, но и горы (для подъёмов), острова (например, Филлип-Айленд) или сооружения ("Кристал Пэлас"). Также учитывалось, что в английском языке крупные и небольшие города называются по-разному (city и town), но то, что у них town, у нас чаще всего - деревня.
Название: Re: Инструменты. База данных
Отправлено: Александр Кречетов от Июля 25, 2008, 09:23:26
Вот ещё пара одинаковых сайтов, трассы там отсортированы по типам
 
http://www.the-fastlane.co.uk/racingcircuits/
http://theracingline.net/racingcircuits/racingcircuits/index.htmАлександр Кречетов39655,7515509259
Название: Re: Инструменты. База данных
Отправлено: Владимир от Июля 25, 2008, 16:08:12
 
Цитата: Владимир Коваленко
Я предусматриваю указание следующей информации о трассах в БД.
Какие ещё данные можно представить в "карточке" трассы? Схему, указание страны. Кнопку для выборки из БД по данной трассе. Что ещё?
Да.
Страна.
Город
Далее можно и указать ближайший населеный пункт, как ты и сказал.
Схема трассы - это тоже хорошо. При этом схема будет не одна, так как конфигурация трасс изменяется.
Направление движения (хотя для разных серий оно может быть разным... , поэтому немного спорный параметр.)
Число поворотов.
Названия участков трассы.
Ширина трассы (примерная хотя бы).
Перепад высот.
Тип трассы. Это конечно не очень объективный параметр, но понятно же, что Монца скоростная трасса, Монако медленная. А скажем Хоккенхайм нынешний - имеет и повороты и прямые.
Вид трассы. Например, дорожная (кольцевая), овальная (трек).
Активность трассы. Например, действующая, тестовая, не функционирующая.
Максимальное число мест для зрителей (возможно лишнее).
Покрытие трассы.  Ведь  говорят, что на определенных трассах шины стираются  быстрее, на других износ шин меньше...  Например: абразивное, нормальное.
Дата открытия трассы.

***
Больше ничего пока не вспомнил. Спрошу одного товарища, может что и подскажет еще... .
Да и еще. Предусмотреть поля, это не значит, что все их обязательно нужно  заполнять сразу. Некоторые данные возможно станут известны со временем.




 
 
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Июля 26, 2008, 12:56:52
Большинство из этих параметров относятся к тому, что я называю статистическим подходом. Если ты возьмёшь несколько списков подобных описаний и прочтёшь их, то поймёшь, что ровным счётом ничего не понимаешь. Это задача не для пользователя, а для автора: сделать ради того, чтобы сделать.
Моя цель - несколько иная: предусмотреть базовую информацию для дальнейшей работы. Трассу и её варианты надо как-то уникально идентифицировать по минимальному набору параметров.
Я намереваюсь в ближайшее время попробовать внести в БД разные варианты трассы в Сильверстоуне. Широко известно, что в 1948 году у неё была конфигурация с использованием ВПП, в 1949-м - периметр в петлёй в "Клабе", с 1950-го на лет двадцать - только периметр. Потом было много всяких добавлений и изменений. Но мало кто знает, что ВПП использовались для 100-мильной гонки Ф3 в 1950 году, в 1954 году комбинированный вариант трассы использовался для эстафетной 6-часовой гонки, а в пятидесятые-шестидесятые годы Клуб старинных автомобилей проводил свои соревнования ещё на одном, укороченном, варианте трассы. И это только то, что попадалось мне на глаза.
В наше время есть клубное, южное и другие кольца. Если мне удастся разделить все эти варианты с помощью выбранного набора параметров, хорошо.
Кстати, для обоснованности параметра можно представить себе выборку по нему и её возможное использование. Взять, например, ширину трассы. Представим, что мы задали базе данных выбрать все трассы с шириной полотна 10 метров и получили список. И что? Как будет выглядеть обзорная статья по этим трассам? Глупо или нет? В данной ситуации думаю, что не совсем достойно. Ну и что, что 10 метров? А если 11 - в чём принципиальная разница? Возникнет пёстрый набор из трасс разного типа в разных странах, объединённых только шириной дорожного полотна.
Возможно, об этом и надо было написать в смом начале. То есть параметр должен быть таким, чтобы выборка по нему имела смысл.
Название: Re: Инструменты. База данных
Отправлено: Мозговой Роман от Июля 28, 2008, 03:34:22
gp2
Кроме всего перечисленного у трассы есть официальное название, которое тоже со временем может изменяться.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Июля 28, 2008, 04:03:01
Цитата: Роман Мозговой
gp2
Кроме всего перечисленного у трассы есть официальное название, которое тоже со временем может изменяться.

Собственно, это я уже заложил.
Цитата: Владимир Коваленко

Я предусматриваю указание следующей информации о трассах в БД.
1. Полное официальное название трассы, например: "Автодром имени Жиля Вильнёва".
2. Полное официальное название в оригинале. Для вышеуказанной трассы с ходу назвать не могу, но пусть будет Gilles Villeneuve Circuit.
3. Условное название, то есть то, которое можно было бы использовать в обиходе без потери смысла. В данном примере - просто "Монреаль". Другой пример: "Валенсия ("Рикардо Тормо")" и "Валенсия (городская)".
4. Условное название по-английски (Montreal).
...

Получается, все параметры (поля) можно разделить на две группы: основные и дополнительные. Основные - это поля, напрямую влияющие на идентификацию трассы. Это официальное название, а также название, которое я назвал условным. То есть, если у трассы длинное название, которое неудобно использовать каждый раз, для него выбирается более короткое название, которое и в обиходе используется достаточно часто.
Также к соновным параметрам можно отнести длину трассы и её тип (линейная, линейно-кольцевая, кольцевая, подъём, спринт); возможно - годы функционирования и направление движения.
Дополнительные параметры не влияют на идентификацию трассы, и выборка по ним, как правило, особого смысла не имеет. Это и уже обсуждавшаяся ширина трассы, и перепады высот, и количество поворотов.
Название: Re: Инструменты. База данных
Отправлено: Мозговой Роман от Июля 28, 2008, 05:04:37
Владимир, у тебя получается три, а не две группы параметров:
1. Ссылочные (для перекрёстных ссылок/идентификации)
2. Поисковые (параметры, по которым возможен поиск)
3. Информационные (любая дополнительная информация, не затрагивающая первые две позиции).
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Июля 28, 2008, 07:09:18
Я не владею такой терминологией, поэтому ничего пока что не понял, но подозреваю, что ты просто предлагаешь другую систему классификации. Если не сложно, поясни, пожалуста с примерами.
Название: Re: Инструменты. База данных
Отправлено: Мозговой Роман от Июля 28, 2008, 07:21:55
Постараюсь пояснить.
1. Параметры, которые будут ключевыми для обозначения конкретной трассы, на которые будут ссылаться другие поля базы.
2. Параметры, по которым будет возможна выборка из базы (страна / тип трассы / по диапазонам километража / по видам проводимых соревнований)
3. Дополнительная информация, не стоящая выборки, но расширяющая данные по трассе (конфигурация и её изменения, повороты и т.п)
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Июля 28, 2008, 07:57:54
Если я правильно понял, 3 пункта соответствуют трём абзацам объяснения:
Цитата: Владимир Коваленко
Получается, все параметры (поля) можно разделить на две группы: основные и дополнительные. Основные - это поля, напрямую влияющие на идентификацию трассы. Это официальное название, а также название, которое я назвал условным. То есть, если у трассы длинное название, которое неудобно использовать каждый раз, для него выбирается более короткое название, которое и в обиходе используется достаточно часто.
Также к соновным параметрам можно отнести длину трассы и её тип (линейная, линейно-кольцевая, кольцевая, подъём, спринт); возможно - годы функционирования и направление движения.
Дополнительные параметры не влияют на идентификацию трассы, и выборка по ним, как правило, особого смысла не имеет. Это и уже обсуждавшаяся ширина трассы, и перепады высот, и количество поворотов.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Июля 28, 2008, 08:06:43
Вариант базы на сегодняшний день: motorsports-2008.07.28.rar (http://disk.tom.ru/aursyfw/1/c687c/motorsports-2008.07.28.rar) (http://disk.tom.ru/aursyfw).
Теперь в нём работает автозаполнение полей при выборе трассы. Теперь будем работать над добавлением всего этого добра в таблицу соревнований, добавлением новых записей во все материнские таблицы и редактированием записей.
Название: Re: Инструменты. База данных
Отправлено: Мозговой Роман от Июля 29, 2008, 02:46:45
Цитата: Владимир Коваленко
Если я правильно понял, 3 пункта соответствуют трём абзацам объяснения:
 

Понял правильно. Я всего лишь постарался "причесать" :)
Название: Re: Инструменты. База данных
Отправлено: Владимир от Июля 29, 2008, 13:29:36
 
Цитата: Владимир Коваленко
1Основные - это поля, напрямую влияющие на идентификацию трассы. Дополнительные параметры не влияют на идентификацию трассы.

2. и выборка по ним, как правило, особого смысла не имеет. Это и уже обсуждавшаяся ширина трассы, и перепады высот, и количество поворотов.

1. Ты делаешь БД ТОЛЬКО для задачи идентификации трасс или для накопления/систематизации/ и дальнейшего хранения, использования и модификации информации о трассах?

2. Смысл выборки определяет пользователь/заказчик БД.  Просто в данном случае ты выступаешь и в роли разработчика и в роли заказчика/пользователя.

Пустые поля можно не заполнять,  а вот что-то добавить потом может быть весьма и весьма проблематично.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Июля 29, 2008, 14:12:59
Цитата: gp2

1. Ты делаешь БД ТОЛЬКО для задачи идентификации трасс или для накопления/систематизации/ и дальнейшего хранения, использования и модификации информации о трассах?

Трассы сами по себе целью моей БД не являются. В ней три основные таблицы: список соревнований, список гонок и результаты гонок. То есть ты нажимаешь на кнопку, например, "1953" и получаешь список соревнований (напомню, что соревнование - это мероприятие, в рамках которого проводится несколько разных заездов). Каждое такое соревнование определяется уникальным сочетанием из названия соревнования и конкретной даты. То есть сама по себе дата может повторяться, если в один день в мире состоялись несколько соревнований; также соревнования с одинаковым названием проводятся ежегодно и в списке будут повторяться. А вот сочетание регулярного соревнования и конкретной даты - уникальная комбинация.
Кстати, можно отталкиваться не от соревнований, а от трасс, то есть уникальной будет комбинация из даты и трассы, на которой проводятся гонки.
В обоих случаях кажется, что без третьего параметра картина получается абсолютно не полной. Надо либо трассу добавить, либо соревнование.
Раз я выбрал в качестве одного из основных параметров соревнование, то трасса будет необходимым дополнением.
То есть информация о трассе нужна для того, чтобы в таблице соревнований было понятно, с чем мы имеем дело.
У трасс есть тоже свои уникальные комбинации: это её название или местоположение и длина круга (дистанции), а также иногда направление движения. Эти два (три) параметра способны полностью описать любой вариант трассы.
Пусть в таблице соревнований для "Большого приза Великобритании" стоит название трассы "Сильверстоун (1952)". Если тебе любопытно, ты можешь нажать кнопку и узнать, в чём заключается особенность трассы варианта 1952 года, то есть какой была длина круга. В идеале надо добавить изображение схемы трассы. Я постараюсь это сделать.
Так что, как видишь, хранение информации о трассах - это третьестепенная задача такой БД, но я всё равно оцениваю возможность добавления новых полей. В данном случае структура БД такова, что в таблицу трасс любой дополнительный параметр можно будет безболезненно добавть.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Июля 29, 2008, 23:24:47
motorsports-2008.07.29.rar (http://disk.tom.ru/mnbj1f7/1/6acdf/motorsports-2008.07.29.rar) (http://disk.tom.ru/mnbj1f7)
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Апреля 17, 2010, 01:18:28
После более чем полуторагодового перерыва я возобновил работу над базой данных с помощью одного хорошего человека.
Текущая версия: motorsports-2010.04.16.rar (http://disk.tom.ru/jkumhr4/1/ca92b/motorsports-2010.04.16.rar) (http://disk.tom.ru/jkumhr4).
За два месяца работа продвинулась далеко вперёд.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Июня 14, 2010, 10:44:26
motorsports-2010.06.11.rar (http://disk.tom.ru/dsb2zp8/1/6065c/motorsports-2010.06.11.rar) (http://disk.tom.ru/dsb2zp8)
Я начинаю потихоньку переходить от инструментов для заполнения БД к средствам пользования ею. Сейчас мне предстоить разработать самое главное: формы просмотра результатов. А пока что я сделал формы для просмотра справочных таблиц: по гонщикам, трассам, автомобилям и т.п. Точнее, это пока наброски. Понажимайте кнопочки, посмотрите, как это выглядит.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Июня 22, 2010, 06:51:53
Текущая версия базы данных: motorsports-2010.06.22.rar (http://disk.tom.ru/znrwpjw/1/e6e13/motorsports-2010.06.22.rar) (http://disk.tom.ru/znrwpjw)
Я вплотную подобрался к оформлению результатов. Взгляните на схему:
(http://img42.imageshack.us/img42/2833/database20100622.th.jpg) (http://img42.imageshack.us/i/database20100622.jpg/)
Основаня таблица - справа вверху. "Результат" - это результат конкретного участника в конкретном заезде. Участники и заезды берутся из других таблиц, потому что это повторяющиеся данные, то есть и участник фигурирует в нескольких заездах, и заезд указывается для нескольких участников.
"Заезд" - это любая законченная сессия (тренировки, квалификации, разминки, гонки). "Гонка" - это главный заезд, к которому относятся предварительные. Соревнование состоит из гонок, гонки состоят из заездов (предварительных и главных).
"Участник" - это конкретный гонщик на конкретном автомобиле с конкретным номером в конкретной гонке. Заявляются участники на конкретную гонку, поэтому в рамках всех заездов каждой гонки, по идее, составляющие "участника" меняться не должны. Пересаживания с одной машины на другую в гонках или случайные выезды на трассу посторонних гонщиков в тренировках оформляются введением нового участника, для чего в таблицу участников надо ввести ещё признак: основной или дополнительный участник. Основной - это участник в "комплектации" согласно заявочному списку. Дополнительный - любая комбинация, не соответствующая заявочному списку.
Таким образом, каждый "результат" - это результат конкретного участника в конкретном заезде.
Отсюда надо плясать при создании формы протокола каждого заезда, чем я и займусь в самое ближайшее время.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Августа 27, 2015, 21:05:44
В очередной раз посетили мысли на эту тему. Отказываться от идеи не собираюсь, а реализация рано или поздно случится. В этом проекте надо либо иметь много денег, чтобы платить программистам, либо встретить грамотного энтузиаста, готового заниматься этим в свободное время радио идеи.


Одна и та же трасса может быть в нескольких вариантах. Более того, на одном и том же месте могут быть принципиально разные варианты трасс, как, например, в случае с Кялами, когда трассу перестроили до неузнаваемости (если не ошибаюсь, даже 2 раза), но каждый раз использовали участки предыдущего варианта. Или, насколько я понимаю, на соверменном "Заксенринге" использована старая стартовая прямая. Или после закрытия городской трассы в Уоткинс-Глене несколько лет гонки проводились по дорогам в полях, а потом ровно на этом самом месте была построена современная трасса с совершенно новым профилем.


Поэтому в справочнике трасс на первом уровне будет уникальная совокупность местоположения и базового профиля. Каждой такой записи будут соответствовать все возможные варианты и модификации, идентифицируемые по длине круга. Соответственно, когда мы будем заполнять базу данных, для каждой гонки нужно знать длину круга, чтобы привязать её к варианту трассы из справочника.


Автомобили. Не всегда в первоисточниках содержится полная информация. Если совершенно точно известно, что гонщик выступал на "Мазерати-250Ф" с таким-то номером шасси и таким-то номером двигателя, то в справочнике можно смело выбирать именно этот вариант. То есть на самом глубоком уровне автомобили должны идентифицироваться по номеру шасси плюс номер двигателя. Уровнем выше - только номер шасси, ещё выше - модель. И если написано, что гонщик выступал на "Мазерати" без указания каких-либо подробностей, выбираем просто эту марку.


Если позже находятся какие-то подробности, и можно конкретизировать сначала модель, потом - шасси, то должна быть возможность не только перепривязать запись для участника соревнования к более конкретной записи в справочнике автомобилей, но и найти схожие варианты и перепривязать и их. Я имею в виду, что если, например, нам встретился гонщик Джонсон, выступавший на "Мазерати", а потом мы нашли номер шасси, но нужно привязать этот номер ко всем выступлениям Джонсона.


Я думаю, что выше я написал не совсем корректно. Получается, на первом уровне (самом общем) будет справочник марок, на втором - моделей, на третьем - шасси, на четвёртом - комбинаций шасси + двигатель. Я так понимаю, заполняя базу данных, нельзя в поле "Автомобиль" помещать значения из разных справочников. То есть, если мы знаем максимум информации, то пометстить данные из справочника с шасси и двигателем, а если знаем только марку - данные из справочника марок. Поэтому в справочнике 4 уровня помимо комбинаций "шасси + двигатель" будут три записи общего порядка: марка, модель и шасси.
Название: Re: Инструменты. База данных
Отправлено: Юрий Карасёв от Августа 28, 2015, 01:24:22
Я бы предложил немного другую структуру.
1-й вариант - Справочник Автомобиль (комбинация Марка + Модель + Шасси + Двигатель).
При этом в справочнике Автомобиль можно указать только Марку, например Maserati.
(http://s22.postimg.org/4qu0t46fh/image.jpg) (http://postimg.org/image/4qu0t46fh/)
Затем когда станет известна модель и Двигатель - можно дополнить.
При этом в справочниках может соблюдаться иерархия. Т.е. Модель подчинена конкретной Марке, а Двигатель и Шасси либо конкретной Модели, либо конкретной Марке (например, дял случаев, когда конкретный номер двигателя устанавливался на несколько разных Моделей).

Соответственно в данных о соревновании достаточно будет указать ссылку на справочник Автомобили.
(http://s3.postimg.org/75a0vw28v/1957.jpg) (http://postimg.org/image/75a0vw28v/)

2-й вариант - указывать Марку, Модель, Шасси и Двигатель непосредственно в данных о соревновании. Т.е. вместо колонки "Автомобиль" будет четыре колонки: Марка, Модель, Шасси, Двигатель. Иерархия при этом также может остаться.
Название: Re: Инструменты. База данных
Отправлено: Владимир от Августа 28, 2015, 01:37:44
С точки зрения реализации базы данных все проще в плане формирования таблиц,
Проблема повышения уровня решается так.
одной таблицей задаются марки машин - Ferrari, Benetton, Lotus, Williams.
Второй таблицей задаются модификации для каждой машины машины - 1,2,3, неизвестно.
Третьей для каждой модификации - номера шасси  001, 002, 003, неизвестно. 
И затем формируется общая таблица по машинам.
(например, как в базах данных разделяют столбцы фамилия, имя, отчество.
А потом добавляют, напроимер, должность с отношением "один ко многим" - на одной должности может быть от нуля до Х сотрудников с разными ФИО).
 
Аналогично для двигателей.
Но тут же нужно учесть информацию о заявителях, гран-при и их результатов и прочих тонкостей.
Тот же столбец "класс машины", который был предложен Владу  для решения одной проблемы.
Столбец - "зачетная гонка"/"гонка, не входящая в зачет ЧМ Ф-1".
И т.д. в зависимости от конечных целей потребителя это базы.

Т.е. пролучается набор из многих небольших таблиц, на основе которых формируется несколько основных. И все это должно быть заиндексировано через идентификаторы.

И самое сложное именно в том, чтобы учесть все ньюансы и все данные, и так называемые сложные случаи: вроде тех, когда гонщики менялись машинами.
Иными словами сделать такую структуру - схему базы данных, которая грамотно охватит всё. 
Вот эту схему проверить на корректность могут только специалисты по проектированию БД,

Причем, чем раньше и чем больше им будет предложено сложных случаев, тем лучше.
Сайты типа Forix, Woldsoft и им подобные берут выборки именно из подобных таблиц. 
Сам не специалист. Но в целом примерно так.
Название: Re: Инструменты. База данных
Отправлено: Владимир от Августа 28, 2015, 01:40:05
Пока сочинял Юрий привел конкретный пример с примерами интерфейса.
"Вывод на экран" можно реализовать по-разному.
Но основное - изначально корректно заложенная схема таблиц БД.

Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Августа 28, 2015, 01:47:35
Я бы предложил немного другую структуру.
1-й вариант - Справочник Автомобиль (комбинация Марка + Модель + Шасси + Двигатель).
При этом в справочнике Автомобиль можно указать только Марку, например Maserati.
(http://s22.postimg.org/4qu0t46fh/image.jpg) (http://postimg.org/image/4qu0t46fh/)
Затем когда станет известна модель и Двигатель - можно дополнить.
При этом в справочниках может соблюдаться иерархия. Т.е. Модель подчинена конкретной Марке, а Двигатель и Шасси либо конкретной Модели, либо конкретной Марке (например, дял случаев, когда конкретный номер двигателя устанавливался на несколько разных Моделей).

Соответственно в данных о соревновании достаточно будет указать ссылку на справочник Автомобили.
(http://s3.postimg.org/75a0vw28v/1957.jpg) (http://postimg.org/image/75a0vw28v/)

2-й вариант - указывать Марку, Модель, Шасси и Двигатель непосредственно в данных о соревновании. Т.е. вместо колонки "Автомобиль" будет четыре колонки: Марка, Модель, Шасси, Двигатель. Иерархия при этом также может остаться.


Я сам не специалист, но грамотные люди мне объяснили, что делать большую таблицу как в "Экселе" с многократно повторяющимися значениями - неправильно. Суть оптимизации и заключается в том, чтобы в базе данных были только индексы, а соответствующие им данные брались из справочников. Это называется реляционная база данных. Я этому верю и другие варианты не рассматриваю.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Августа 28, 2015, 01:54:06
И самое сложное именно в том, чтобы учесть все ньюансы и все данные, и так называемые сложные случаи: вроде тех, когда гонщики менялись машинами.


В этом проблемы нет, это я предусмотрел. Поскольку я буду создавать базу данных, не заточенную под зачётные гонки чемпионата мира, а рассчитанную на самый широкий круг соревнований, то и структура её должна быть соответствующей. Для каждого соревнования будет список участников. Не заявочный, а именно участников, то есть комбинаций гонщик + автомобиль. Надо учитывать и варианты, когда гонщик садился в чужой автомобиль и делал пару кругов по трассе, как, например, Мосс на "Скарабе" в Монако. Это было неофициально, но есть фотографии. Этот факт надо зафиксировать в БД, а уж выводить или нет и где выводить - это вопрос другой.
Название: Re: Инструменты. База данных
Отправлено: Юрий Карасёв от Августа 28, 2015, 02:27:55
Я бы предложил немного другую структуру.
1-й вариант - Справочник Автомобиль (комбинация Марка + Модель + Шасси + Двигатель).
При этом в справочнике Автомобиль можно указать только Марку, например Maserati.
(http://s22.postimg.org/4qu0t46fh/image.jpg) (http://postimg.org/image/4qu0t46fh/)
Затем когда станет известна модель и Двигатель - можно дополнить.
При этом в справочниках может соблюдаться иерархия. Т.е. Модель подчинена конкретной Марке, а Двигатель и Шасси либо конкретной Модели, либо конкретной Марке (например, дял случаев, когда конкретный номер двигателя устанавливался на несколько разных Моделей).

Соответственно в данных о соревновании достаточно будет указать ссылку на справочник Автомобили.
(http://s3.postimg.org/75a0vw28v/1957.jpg) (http://postimg.org/image/75a0vw28v/)

2-й вариант - указывать Марку, Модель, Шасси и Двигатель непосредственно в данных о соревновании. Т.е. вместо колонки "Автомобиль" будет четыре колонки: Марка, Модель, Шасси, Двигатель. Иерархия при этом также может остаться.

Я сам не специалист, но грамотные люди мне объяснили, что делать большую таблицу как в "Экселе" с многократно повторяющимися значениями - неправильно. Суть оптимизации и заключается в том, чтобы в базе данных были только индексы, а соответствующие им данные брались из справочников. Это называется реляционная база данных. Я этому верю и другие варианты не рассматриваю.


В этом случае получается первый вариант.
Хотя по сути оба варианта являются реляционными базами данных.
Название: Re: Инструменты. База данных
Отправлено: Владимир от Августа 28, 2015, 03:15:28
И самое сложное именно в том, чтобы учесть все ньюансы и все данные, и так называемые сложные случаи: вроде тех, когда гонщики менялись машинами.
1. В этом проблемы нет, это я предусмотрел.
2. Для каждого соревнования будет список участников. Не заявочный, а именно участников, то есть комбинаций гонщик + автомобиль. Надо учитывать и варианты, когда гонщик садился в чужой автомобиль и делал пару кругов по трассе, как, например, Мосс на "Скарабе" в Монако. Это было неофициально, но есть фотографии. Этот факт надо зафиксировать в БД, а уж выводить или нет и где выводить - это вопрос другой.
1. Хорошо, если так... . 
2. "Комбинации" - это уже итоговый вариант вывода на экран.
Но изначально должны быть маленькие таблички и некая общая их структура.

Про индексы сказали правильно - предназначены для более быстрой обработки запросов, для чего и предназначены в основном БД.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Августа 28, 2015, 03:33:40
2. "Комбинации" - это уже итоговый вариант вывода на экран.
Но изначально должны быть маленькие таблички и некая общая их структура.


Всё правильно, много маленьких табличек и связи между ними. Под комбинацией в данном случае подразумевается условная уникальная совокупность. Допустим, комбинация Мосса и "Лотоса" Роба Уокера будет иметь индекс 4457, а Мосса и "Скараба" - 4469. Они спрятаны внутри базы данных, мы их не видим, а видим текстовую информацию, которая привязана к этим индексам, но каждая такая комбинация должна иметь свой индекс.
Название: Re: Инструменты. База данных
Отправлено: Влад Шайхнуров от Августа 28, 2015, 06:21:12
Я очень много и долго занимался базами данных в своей жизни. Последнее, что сделал - БД для работы, поскольку существующая среда не удовлетворяла по своему функционалу, а неповоротливость IT и сложность в адаптации того "мастодонта", что сотворили из Microsoft Navision, привели к тому, что мне отказали в моих просьбах. Пришлось делать самому. В Access. БД в меру сложная , таблиц на 10. Запросов намного больше - штук сорок.
Ну это так, преамбула. Суть в том, что это - уже пятая или шестая версия БД. Все предыдущие были одна сложнее другой. В конце концов пошел по пути упрощения. Отказался от большинства макросов, сократил число запросов, убрал ненужную информацию. База стала надежнее работать и просто радует своей структурой. Но это - итог трехлетнего совершенствования.
Вот и с базой по гонкам следует двести раз подумать. Тщательно отсеять информацию, которую следует заносить в строки/столбцы таблиц. Сократить до минимума количество таблиц, а значит и индексов. Есть много информации, которую можно внести в поле MEMO, т.е. "дополнительная текстовая информация". Например номер двигателя или имя владельца. Поскольку в одной гонке мог стоять двигатель 046-1, через пару гонок - 046-2. До мая 19... г. автомобилем владел Джон Смит, с ноября - Джон Пит. Можно для всего этого завести отдельные таблицы, но проблемы  с индексацией будут. Следует исходить и из того, что номера двигателей - еще менее доступная информация, чем номера шасси.
Сложнее решить, как суммировать все виды тренировочных и соревновательных заездов. Ведь у нас были:
- два полуфинала + финал;
- два полуфинала + агрегатированный по их сумме результат;
- предквалификация;
- пятничная тренировка;
- субботняя тренировка;
- иногда две пятничные тренировки и одна субботняя;
- были тренировки и в день перед гонкой;
- собственно гонка;
- спринт;
- гонка с обратным расположением на решетке;
Как вот это все структурировать? Какими должны быть формы для "универсальной гонки"? Как узнать, какие таблицы (виды тренировок и гонки) заполнять для Большого приза Бельгии 1984 года и какие для Большого приза Макао 1985 года в Ф3? А какие для "Милле Милья" 1927 года, коль скоро БД планируется быть универсальной по всему автоспорту?
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Августа 28, 2015, 06:42:29
Сложнее решить, как суммировать все виды тренировочных и соревновательных заездов. Ведь у нас были:
- два полуфинала + финал;
- два полуфинала + агрегатированный по их сумме результат;
- предквалификация;
- пятничная тренировка;
- субботняя тренировка;
- иногда две пятничные тренировки и одна субботняя;
- были тренировки и в день перед гонкой;
- собственно гонка;
- спринт;
- гонка с обратным расположением на решетке;
Как вот это все структурировать? Какими должны быть формы для "универсальной гонки"? Как узнать, какие таблицы (виды тренировок и гонки) заполнять для Большого приза Бельгии 1984 года и какие для Большого приза Макао 1985 года в Ф3? А какие для "Милле Милья" 1927 года, коль скоро БД планируется быть универсальной по всему автоспорту?


Вот это всё не так должно быть. Лёша Грушко в своё время тоже предлагал универсальную форму в виде таблицы со множеством таких столбцов: 1, 2, 3, n тренировка и т.д. Это всё лишнее.


На первом уровне базы данных - год. На втором - соревнование, то есть комбинация трассы и даты. На третьем - заезд, то есть комбинация соревнования и мероприятия по номеру программы. Вот и всё. Этот заезд может быть чем угодно, хоть парадом "Мини" с мистером Бином. Заезды - это не колонки для списка участников, а строчки в хронологии. Принципиально другой подход к архитектуре.
Название: Re: Инструменты. База данных
Отправлено: Влад Шайхнуров от Августа 28, 2015, 07:10:47
Мне для понимания того, как ты представляешь структуру БД, надо задать еще кучу вопросов. Но сейчас надо бежать. Так что вечером.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Августа 28, 2015, 07:20:06
А ты лучше почитай эту тему с самого начала.
Название: Re: Инструменты. База данных
Отправлено: Алексей Грушко от Августа 28, 2015, 11:42:35
Я тоже пошёл по пути упрощения и отказался от многих параметров, а также принял решение делать базу данных сразу онлайн. Вот пример как в идеале должна выглядеть таблица с результатами гонки - http://racingstat.com/category/2013-6-hours-of-spa-francorchamps
Но если каких-то полей нет ни одного гонщика, колонка просто не отображается.
Но ещё я понял, что заполнение этой базы данных - очень геморное дело, и делаю я это от случаю к случаю.
Название: Re: Инструменты. База данных
Отправлено: Влад Шайхнуров от Августа 28, 2015, 23:50:33
А ты лучше почитай эту тему с самого начала.
Читал, разумеется. Написано много умных и не очень вещей. Но по большому счету последнее сообщение относится к 2008 году. С тех пор много воды утекло и у тебя могло многое поменяться как в требованиях к базе, так и в представлениях о ее структуре.
Я к чему это все. Правильно Алексей написал: сделать базу - это одна проблема, заполнять ее - другая. Можно сделать "индивидуальную" БД для одного компьютера, которую будет вести один пользователь. Все на том же Access. И фотографии подвязывать, и любые документы или ссылки к любому событию. Все будет классно, но заполнять ее будет только один человек. Участие других возможно, но для этого надо предусмотреть процедуру импорта из заполненных другими участниками процесса заранее заданных шаблонов.
Второй вариант - это онлайн БД. Это MySQL. Вещь классная, мощная. Но тут нужен действительно специалист.
Так вот, если тебя устроит БД на Acess, то я готов сделать таковую. Пусть не быстро, пусть месяцев за пять-шесть, но сделаем. Что касается БД на MySQL, то последний раз я занимался этим лет десять назад, сделал пару простеньких площадок для интернет-торговли. И был-то не слишком опытным специалистом, а сейчас еще и забыл все, что знал. 
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Августа 29, 2015, 01:23:16
Я отказался от "Аксесса" в пользу онлайн-базы именно по той причине, что заполнять надо коллективно. Интерес к написанию БД имеет Фёдор Бакулов, мы с ним давно это обсуждали, но прямо сейчас ему пока некогда.


Вопрос в другом: будет ли это коллективный проект или индивидуальный. Я имею в виду то, что я в любом случае буду это делать и именно так, как вижу. И подозреваю, что не всем такая структура по душе. Возможно, не все просто её понимают. Так вот, если будет понимание и желание работать вместе, то добро пожаловать. Можно обсуждать конкретные решения.


На самом деле я могу ошибаться и в фундаментальных вопросах. Если поймёте, чего я хочу, и предложите более эффективный вариант, то пожалуйста. А просто побухтеть смысла нет, мне кажется.


Я чуть попозже тогда опишу в целом свои требования к БД.
Название: Re: Инструменты. База данных
Отправлено: Влад Шайхнуров от Августа 29, 2015, 01:34:57
Здесь немного в другом проблема. "Бухтением" я бы это не назвал. Архитектура БД должна быть должна быть проработана еще до начала ее создания. И оформлена в виде очень четкого технического задания. Вариант "сперва начнем делать, а потом поймем, что нам надо" имеет право на существование, но БД разрастается , обрастает ненужными таблицами, связями,индексами. И в случае сбоя порой разобраться, что случилось - затруднительно.
У меня есть один компьютерный гений, Серега "Лом". Работает начальником департамента в российском MySAP. Когда я бы не просил его что-нибудь для меня сделать, он всегда говорил: "Я - тупой! Ты мне должен четко сказать, где должна быть кнопочка и что должно произойти при ее нажатии. Какие данные надо выбрать и в каком порядка расставить. Если ты доверяешь все решать мне самому - то и дело будешь иметь с тем, что я сам наделаю на свое усмотрение."
Название: Re: Инструменты. База данных
Отправлено: Влад Шайхнуров от Августа 29, 2015, 01:49:15
Если поймёте, чего я хочу, и предложите более эффективный вариант,
В плане создания БД самое главное - представить как все должно работать и точно описать. Все остальное - только вопрос исполнения. Современные инструменты создания БД дают широчайшие возможности. Другое дело, что БД должна быть еще и максимально рациональной, без лишних связей и индексов, таблиц и повторяющихся данных. Но это - вопрос предварительной проработки.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Августа 29, 2015, 01:59:02
Здесь немного в другом проблема. "Бухтением" я бы это не назвал. Архитектура БД должна быть должна быть проработана еще до начала ее создания. И оформлена в виде очень четкого технического задания. Вариант "сперва начнем делать, а потом поймем, что нам надо" имеет право на существование, но БД разрастается , обрастает ненужными таблицами, связями,индексами. И в случае сбоя порой разобраться, что случилось - затруднительно.


Дело в том, что я всё это давно знаю и понимаю. Все эти замечания для меня - вопрос многолетнего прошлого. На азы сейчас смысла тратить время нет. Сейчас я именно продумываю детали. Если тебе непонятна архитектура, но интересно её понять, я потрачу время, чтобы объяснить. Но чуть позже сегодня.
Название: Re: Инструменты. База данных
Отправлено: Влад Шайхнуров от Августа 29, 2015, 02:04:03
Интересно, и я думаю, что мог бы помочь тебе сделать эффективную БД.  Более того, пока Федор занят, можно попробовать обкатать схему на Access. Принципы одинаковы. А потом отработанную архитектуру перенести на MySQL.
Что касается заполнения, то на настоящий момент  я готов поучаствовать. Что будет через энное время, когда база заработает - не знаю.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Августа 29, 2015, 06:05:01
"Аксессовский" файл у меня остался, его можно дорабатывать в любое время.


Либо я не умею объяснять (а это очень возможно, учитывая то, сколько мне нервов пришлось потратить на упрощенной истории), либо подход действительно настолько революционный, что людям сложно перестроить мышление в нужном направлении, но я вот даже не знаю, с чего начать. Мне кажется, я уже миллион раз об этом говорил, поэтому нахожусь в некоторой растерянности.



Суть в том, чтобы получить универсальную БД для любого типа автомотоспортивных мероприятий. Я не проводил глубокий анализ всех возможных варинтов, но с теми, с которыми я часто имею дело в своих интересах, существующие базы данных в силу своей архитектуры оптимально справиться не смогут, насколько я могу судить.


Например, клубные соревнования в Гудвуде. Каждое состоит из нескольких гонок. Некоторые автомобили стартуют в нескольких гонках за день под одним и тем же номером. Если следовать традиционной схеме, которой, как мне кажется, придерживаются создатели всех БД, то обязательно должно быть деление на категории, классы и серии. Либо на первом уровне, либо на втором. То есть сначала ты должен выбрать категорию, потом тебе открывается список лет или сразу список гонок. Либо ты заходишь в год, потом выбираешь категорию (класс, серию), и потом вываливается список гонок.


При этом каждый заезд - это отдельное мероприятие. Представим, что некий спортивный "Лотос" под номером 12 стартовал в трёх гонках в Гудвуде: в гандикапе, в заезде для спортивных автомобилей до 1,5 литров и в гонке свободной формулы. Для него в базе данных будут три одинаковых записи. Автомобиль один, гонщик один, а записи три. Это неэффективно. Как оптимизировать? Сделать одну общую запись на всё соревнование, к которой привязывать конкретные заезды.


Другой пример. В соответствии с современным пониманием подразумевается, что вот есть гонка, и у ней её есть разные предварительные заезды. Поэтому надо вспомнить максимальное количество возможных видов заездов и расположить всю эту линейку в таблице результатов. Будет очень много столбцов. Даже если это домонстрационный заезд, надо тоже предусмотреть такую колонку. Поэтому на всю БД может быть с десяток таких заездов, но соответствующее поле будет болтаться во всех десятках или сотнях тысячах таблиц. Это неэффективно. Как оптимизировать? Сделать каждый заезд самостоятельной таблицей. Участники в ней будут браться из общего списка для соревнования, и нужны будут пара столбцов для результатов: время (или, допустим, количество пройденных кругов) или причина схода.


В необходимости принять соревнование в качестве второго уровня (после года) я убедился в процессе работы над своим архивом. Когда я, в соответствии с современным взглядом на автогонки, пытался делить гонки на отдельные мероприятия, возникали несоответствия. Например, упрощенная история говорит, что на Пасху в Гудвуде была очень крутая гонка класса формула №1 на приз Гловера. Ну, это же Ф1. Это очень круто. Хорошо, у меня есть папочка для этой гонки. Потоя появляются фотографии с этих же соревнований, но с гонок в других классах. Это же не супер-пупер-Ф1, поэтому ими загрязнять священную папочку мы не будем, а поместим в отдельную. Будут, например, 195х.04.хх_Glover_Trophy и 195х.04.хх_Goodwood_other (ну, условно). Хорошо. Будем считать, что "Приз Гловера" - это главная гонка, а остальные - гонки поддержки. Это искажение, но нам же надо к чему-то привязаться. Потом выясняется, что Майк Хоторн стартовал не только в "Призе Гловера", а ещё в паре гонок. И вот у меня есть портрет Хоторна, сделанный в этот день. Формально его надо поместить в обе папки, потому что неизвестно, к какой гонке отнести. Идиотизм ситуации очевиден. Гонщик был в тот день на трассе и участвовал в программе. Поэтому его присутствие должно быть привязанно ко всей програме, а не к конкретной гонке. Поэтому папочка нужна одна - для соревнования.


Ещё много менее значимых обстоятельств сводятся именно к формату соревнования как второго уровня БД. Это фундаментальный принцип. В нём есть есть нерешённые вопросы. Например, как быть с многодневным форматом? Два варианта: либо на втором уровне - соревнование с границаи дат, на третьем уровне - конкретные дни, на четвёртом - заезды в конкретный день; либо на втором уровне - каждый день, а на третьем - заезды. Второй вариант выглядит менее удачным, потому что в списке соревнований тогда будет не просто ралли "Монте-Карло", а 1 день РМК, 2 день РМК и т.д. Это не есть правильно.


Итак, фундаментальная особенность - это соревнование в качестве второго уровня БД.
Название: Re: Инструменты. База данных
Отправлено: Алексей Грушко от Августа 29, 2015, 07:10:18
Это всё понятно и хорошо. Но вопрос в другом - для чего тебе эта база данных? Вот я когда делал техзадание для сайта, сформулировал, что я хочу получать, помимо таблиц с результатами конкретного заезда, результаты гонщика во всех его гонках и чемпионатах, а также списки соревнований по годам, трассам, странам и категориям. При необходимости можно добавить и автомобили, и заявителей, но мне пока это не надо.
Название: Re: Инструменты. База данных
Отправлено: Владимир Коваленко от Августа 29, 2015, 07:24:37
1. Для выборок по результатам гонщиков и автомобилей. Полный расклад по всем соревнованиям, в которых стартовали. Это для публикаций.


2. Для идентификации фотографий. Если вижу на фото "Лотос" под номером 12 в Гудвуде, пусть БД выдаст весь список возможных вариантов.
Название: Re: Инструменты. База данных
Отправлено: Алексей Рогачев от Июля 29, 2020, 14:45:29
В последние полтора года я значительно доработал свою базу данных - помимо чисто программных усовершенствований СУБД, добавил в саму базу несколько новых таблиц, а кое-что, наоборот, удалил. В порядке обмена опытом делюсь схемой обновленной базы: http://www.ussr-autosport.ru/images/db_scheme.png.
Название: Re: Инструменты. База данных
Отправлено: Алексей Рогачев от Июля 30, 2020, 10:51:18
Некоторые комментарии к схеме.

1. Поля Gap, Speed и FLSpeed в таблице raceresults на первый взгляд могут показаться избыточными - ведь очень легко рассчитать отставание от победителя, среднюю скорость и скорость быстрейшего круга прямо в ходе формирования запроса, опираясь на данные о дистанции, длине круга и времени участников. Но я работаю чаще всего с неполными данными (главным образом из публикаций в газетах и журналах). Например, указана средняя скорость (к тому же очень приблизительно, округленная до 1 км/ч), но при этом протяженность дистанции неизвестна. Вот и приходится заводить избыточные поля в таблице.

2. Разделение дней, месяцев и годов в таблице drivers - также вынужденный шаг по причине неполноты информации. Чаще всего известен только год рождения или смерти спортсмена; в некоторых анкетах участников я встречал только год и месяц рождения без указания числа. А формат даты в Paradox не позволяет оставлять часть даты пустой или вводить значения вроде 00.00.1956. Вот и пришлось разделить каждую дату на три поля. Для таблицы events аналогичный вопрос не стоит, так как дата проведения соревнований известна в 90% случаев точно, а в остальных случаях ее можно вычислить по косвенным данным (например, по дате выхода газет, в которых есть заметки об этих соревнованиях).

3. Поле Sex по логике строения базы данных должно было бы находиться в таблице drivers, но дело в том, что сведений о гонщиках, выходящих за рамки имени и фамилии, у меня мало. Получается, что в таблице drivers содержится имен намного меньше, чем встречается в raceresults (на данный момент - 1943 и 3518 соответственно). Так что если вдруг потребуется выборка данных о женщинах в гонках, я полезу прежде всего в результаты гонок. А значит, полю Sex место именно в этой таблице.

4. В таблице teamresults хранятся командные результаты как отдельных соревнований, так и многоэтапных чемпионатов. В обоих случаях записи имеют одинаковую структуру: место, команда, сумма очков, члены команды. Поэтому проще оказалось свести все это в одну таблицу и связать ее как с events, так и с championships. При запросе командных результатов отдельных соревнований отбор идет по полю IDEvent, а при запросе командных результатов многоэтапного чемпионата - по полю IDChampionship.

5. Наличие поля Reliability в таблице chresults вызвано тем, что иногда я сам рассчитываю суммы очков по имеющимся результатам гонок, если в моем распоряжении нет официальных итогов чемпионата. В этих-то случаях и ставится пометка "недостоверно" в поле Reliability (точнее, поле имеет логический тип, то есть значение устанавливается равным false, а в СУБД для удобства используется выпадающий список с пунктами "достоверно" и "недостоверно").

6. Стартовая решетка кодируется следующим образом: через дефис два числа и буква. Первое число - количество мест в нечетных рядах, второе - количество мест в четных рядах, буква обозначает направление счета мест в рядах: "л" - слева направо, "п" - справа налево. Например, на Невском кольце традиционно стартовое поле соответствовало схеме "4-3-п".

7. Здесь в структурах таблицах lapcharts и laptimes для экономии места сведены вместе однотипные поля с данными о номерах участников и результатах на круге. На самом деле в lapcharts тридцать пять таких полей, а в laptimes - тридцать. Если попадется какая-нибудь гонка с числом кругов более тридцати, для которой известны результаты отдельных кругов, количество полей может еще увеличиться.