Страницы

воскресенье, 29 сентября 2013 г.

Простая бд Access - Соревнования

Задание База данных «Соревнования» MS Access (6 вариант).
База данных должна содержать следующие элементы:
Таблица «Команда»: спортивная организация; шифр команды, название команды.
Таблица «Участники»: шифр команды; номер участника; Ф.И.О.
Таблица «Старт»: стартовый номер; номер участника; время старта; отметка о невыходе на старт.
Таблица «Финиш»: порядковый номер финиширования; стартовый номер; время финиша; отметка о сходе с дистанции.

Поле со списком – таблица «Команда», поле «Спортивная организация».
Поле подстановки – «Шифр команды» в таблице «Участники», источник таблица «Команда».

Запросы на выборку:
  1. Данные о старте и финише участника соревнований Р. А. Краснова.
  2. Участники команды «Юниор» спортивной организации «Чемпион».
  3. Участники команды «Юниор», не вышедшие на старт.
Запрос с вычисляемым полем
Размер бонуса, определяемый как разница порядковых номеров на старте и финише (таблица «Финиш»).

Групповой запрос:
Количество участников в каждой команде (таблица «Команда»).

Запрос с параметром:
Команда, в состав которой входит участник N

Отчет по участникам, сгруппированный по спортивным организациям, сортировка по ФИО участника.

Подробное описание, как можно выполнить такое задание, приведено в нулевом и первом вариантах.
Составляем таблицы и логическую схему, описываем типы данных и другие параметры полей данных (все, как сказано в методичке).
Запускаем СУБД MS Access и начинаем составлять таблицы. Потом устанавливаем связи.
Схема базы данных в MS Access.


Получилось два справочника – «Команды» и «Участники». Таблица «Команды» является главной по отношению к участникам по полю «Шифр команды». Две другие таблицы содержат информацию о самих соревнованиях – старте и финише. Таблица «Старт» подчинена таблице «Участники» по полю «Номер участника». А «Финиш» подчинен «Старту» по полю «Стартовый номер». На схеме мы видим связь один-ко-многим. Но вообще-то это связь один-к-одному. Ведь стартовый номер в ходе забега не меняется, и несколько их быть не может. И каждая строка таблицы «Старт» однозначно соотносится с соответствующей строкой таблицы «Финиш». А вот финишных номеров может быть несколько (если был одновременный финиш). Правильно было бы объединить эти две таблицы в одну, а ключом был бы «Номер участника»+»Время старта», потому что стартовые номера в разных забегах повторяются, и это поле не может быть уникальным ключом. А если это один забег, то можно объединить и все три таблицы.
Но оставим эти рассуждения и будем делать по заданию.
Переходим к запросам.
Первый запрос на выборку:


 Второй запрос на выборку


Третий запрос на выборку


Запрос с вычисляемым полем

 
Групповой запрос


Запрос с параметром


Делаем отчет. Многотабличный запрос


Отчет в режиме конструктора:


Итоги в отчете не рассчитываются.

Вот и все. Ничего особо сложного в этой базе нет.