Форум истории автоспорта > Исследовательская лаборатория
Инструменты. База данных
Алексей Рогачев:
Да нет, я-то оставлю у себя все как есть, потому что в таблице "Результаты гонок" уже больше пяти тысяч записей, и вводить новое поле и заполнять его вручную будет очень уж трудоемко А вот для вновь создаваемой БД такой подход может здорово пригодиться.
Валерий Лутошкин:
Мне не кажется хорошей идеей использовать в качестве _идентификатора_ чего-либо значимые параметры. Потому что практически невозможно предсказать, в каком месте нехватит заложенных в идентификатор ограничений на то или иное значение.
С моей кочки зрения наилучшее решение - когда именно идентификатор внутри базы - это простое поле Counter, т.е. уникальный неповторяющийся цифровой счетчик, значения которого присваиваются автоматически.
Дата, соревнование и прочие записи, которые, как я понял, использовались в ID, должны просто храниться в отдельных полях и, соответственно, ссылаться на конкретные ID (опять же, счетчики) в других базах.
Тогда любая реструктуризация базы (необходимость которой существует _всегда_) не приведет к катастрофическим последствиям.
Хотя это, конечно, мое кочкообразное суждение :) Но выстраданное достаточно большим опытом проектирования.
Владимир Коваленко:
Пускай вас не смущает отсутствие моих комментариев - я читаю и перевариваю, но пока с трудом.
Алексей Рогачев:
Мой шестизначный ID устроен так, что ограничения, в него заложенные, ни в коей мере мешать не могут. Суди сам: годы, которые будут представлены в БД, целиком относятся к XX веку, значит, двух первых цифр вполне хватит. Больше двух с небольшим десятков соревнований за сезон в СССР не проводилось никогда, значит, тоже достаточно двух цифр. И, наконец, каждое из этих соревнований включало в себя максимум десять гонок - еще две цифры. С этим как раз все в порядке. Счетчики в качестве ключа я стараюсь, наоборот, не использовать именно потому, что значение не несет никакого смысла и лишь увеличивает объем базы данных впустую. А если бы я в таблице "Гонки" поставил счетчик в качестве ключа, запрос на результаты гонки вообще стал бы кошмаром, потому что пришлось бы набирать в запросе полное длинное название гонки, со всеми запятыми и кавычками. Идея составного значимого ключа, который бы служил основой для запросов, пришла мне в голову слишком поздно...
Сергей Блинов:
Тоже немножко прокомментирую:
1. ID - согласен с pLuto. Конечно можно позабивать и со смыслом номера, но можно запутаться и случайно присвоить одинаковые номера.
2. Суть структуры в чем, в том, что показываются связи между различными таблицами данных, которые в свою очередь являются самостоятельными источниками. Если с помощью правильно построенных запросов(отчетов, форм и т.п.) можно вывести таблицу "Результаты чемпионатов СССР", тогда эта таблица и не нужна.
3. Можно выполнять запросы "по содержанию", т.е. если есть в графе БК 2 фамилии запрос на 1 из них, уже будет удовлетворять условию отбора. В крайнем случае можно использовать поиск по маске *name*.
4. Для времени можно придумать вывод в форму (все равно так смотреть результаты удобнее) с приведением к виду чч.мм:сс делением без остатка на 3600 и 60 соответственно
5. Результат гонки есть прохождение определенной дистанции за определенное время, поэтому для отставших менее чем на круг определенно надо задавать временем, среднюю скорость, отставание в сек от лидера расчитывалось машиной. Здесь я имею ввиду что лучше забивать в таблицы минимум данных, которые могли бы быть получены автоматически.
6. Отрицательные номера лучше, кто знает вдруг появится необходимость протоколировать соревнования с большим кол-вом участников. Можно будет отсортировать по маске.
Навигация
Перейти к полной версии