Форум истории автоспорта > Исследовательская лаборатория
Инструменты. База данных
Сергей Блинов:
В Access запросы можно писать и на SQL. Нужно только привести запрос к данному виду (выбрать в меню).Sergey38735,8349189815
Алексей Рогачев:
Это я знаю, но уж больно неохота связываться с SQL, раз есть конструктор...
Владимир Коваленко:
Почитал я Валерину книжку, посмотрел на дискуссию, посоображал маленько и решил, что чего-то понял и пора приступать к работе.
Для начала мне надо немного - только списки гонок, но надо заранее заложить в БД возможность безболезненного расширения путём добавления новых таблиц.
Как я понял, в любой таблице всегда существует столбец с уникальными данными, которые нигде больше не повторяются. Остальные данные в строке могут появляться несколько раз в БД. Скажем, если это название трассы, то повторяющимися данными будет название страны и местонахождение.
"Нюрбургринг" Нюрбург Германия
"Хоккенхаймринг" Хоккенхайм Германия
"Монжуик" Барселона Испания
"Каталунья Монтмело" Барселона Испания
Поэтому сначала надо всё продумать, решить какие данные в таблице будут повторяющимися и следать для них отдельные таблицы, из на которые просто делать типа ссылок. В приведённом примере надо сделать две таблицы: для городов и стран. В таблице городов могут быть такие поля, как страна, координаты и, возможно, что-то ещё. Поскольку названия городов могут и совпадать, их не получится принять в качестве ключевых слов, поэтому в таблице будет отдельный, ключевой столбец с идентификатором, уникальный для данной совокупности "город-страна-координаты".
В таблице стран может быть только один столбец - с названием страны. Больше от неё ничего не надо.
Таким образом, составляя каталог трасс, мы будем одновременно заполнять три таблицы, но это будет не утроение работы, а упрощение с точки зрения перспективы. Вносим в таблицу стран Германию и обращаемся к таблице городов, в которую вносим Нюрбург и делаем связь с названием страны в соответствующей таблице. Правильно я мыслю?
Теперь заполняем главную таблицу, трасс, и вносим в неё название трассы и тут же связываем его с таблицей городов, из которой добывается, при необходимости, город и дальше по связи - название страны.
Название трассы может повторяться, особенно, если у ней нет названия, а есть описание (типа четвертьмильный трек где-нибудь на городской ярмарке в Айдахо); либо параметры трассы могут меняться, и столбец с названием трассы может оказаться не уникальным. Уникальным оказывается сочетания нескольких параметров. Для каждого их них просто присваивается идентификатор. Это и есть ключевое поле.
Скажем, идентификатор 001 - это сочетания названия "Нюрбургринг" и длины одного из вариантов, возьмём 22 км. 002 - это "Нюрбургринг" и 4,5 км, 003 - это "Нюрбургринг" и 20 км. В зависимости о того, на каком варианте трассы проводится гонка, мы ставим в поле "Трасса" идентификатор 001, 002 или 003. То есть реально в ячейках будут идентификаторы, а для поля будет задана связь с таблицей трасс, и если мне надо будет посмотреть список гонок в каком-то году (это мы не обсуждались, но такая БД будет строиться по такому же принципу), база будет по связям обращаться к нужным идентификаторам и вытаскивать из различных мест нужные названия.
Правильно я мыслю?
Александр Готвянский:
В общем да. А в частностях я и сам не разбираюсь
Владимир Коваленко:
Начал разбираться конкретно в работе "Аксесса".
"Создание таблицы с помощью мастера", как мне кажется, не подходит. Теоретически там можно найти поля, которые полходят под ситуацию, но на самом деле лучше всё делать самому. Поэтому лучше использовать конструктор?
Делаю первую таблицу - "Страна". В ней пока одно поле, с названием страны. Нужен ли дополнительный идентификатор, или само название может служить идентификатором? Может ли идентификатор быть криллическим? Если нет, то название страны не подходит. Можно в качестве идентификатора воспользоваться международными кодами (RUS, AUT, D, F и т.д.)? Что надо делать, чтобы оставить в будущем возможность добавлять поля (скажем, может понадобиться добавлять названия этой страны на разных языках)?
Навигация
Перейти к полной версии