Задание База данных «Гостиница» MS Access (12 вариант).
База данных должна содержать следующие элементы:
Составляем таблицы и логическую схему, описываем типы данных и другие параметры полей данных (все, как сказано в методичке).
Справочниками являются таблицы «Места» и «Номерной фонд». Другие две таблицы служат для хранения информации по бронированию и проживанию. Связи и подчиненность таблиц друг другу видно на схеме. Решил я немного нормализовать базу, разделил "Номерной фонд" на таблицу "Места" и таблицу "Номерной фонд". А то каждый раз при заполнении места приходится набирать номер помещения, категорию, стоимость проживания. Если не лень, то можно оставить по заданию.
Нужно выбрать постояльцев, проживающих в номерах 5 и 40. Поскольку время проживания – текущее, то придется выбирать тех, у кого дата заезда меньше или равна текущей (функция Date() – текущая системная дата), а дата выезда – больше или равна текущей.
Второй запрос на выборку
База данных должна содержать следующие элементы:
- Таблица «Номерной фонд»: категория номера (люкс, одноместный первой категории, двухместный первой категории и др.); номер помещения; место (А, Б, … – в зависимости от количества мест в номере); стоимость проживания за сутки.
- Таблица «Проживание»: дата заезда; дата выезда; номер помещения; место; Ф.И.О.; паспортные данные.
- Таблица «Бронирование»: дата заявки; код брони; категория номера; количество человек; дата заезда; срок пребывания
Поле со списком – таблица «Номерной фонд», поле «Категория номера».
Поле подстановки – «Номер помещения» в таблице «Проживание», источник таблица «Номерной фонд».
Запросы на выборку:
Поле подстановки – «Номер помещения» в таблице «Проживание», источник таблица «Номерной фонд».
Запросы на выборку:
- Постояльцы, проживающие в гостиничных номерах 5 и 40.
- Постояльцы, которые забронировали гостиничный номер категории «люкс» и проживали в нем в июле 2008 г.
- Постояльцы, проживающие в номерах со стоимостью места менее 1500 р.
Запрос с вычисляемым полем
Сумма оплаты за проживание постояльца гостиницы (таблица «Проживание»).
Групповой запрос:
Количество проживающих в гостиничных номерах каждой категории (таблица «Номерной фонд»).
Запрос с параметром:
Постояльцы, проживающие в гостиничном номере категории N
Отчет по проживанию, сгруппированный по категории номера, сортировка по месту (убывание).
Подробное описание, как можно выполнить такое задание, приведено в нулевом и первом вариантах.
Сумма оплаты за проживание постояльца гостиницы (таблица «Проживание»).
Групповой запрос:
Количество проживающих в гостиничных номерах каждой категории (таблица «Номерной фонд»).
Запрос с параметром:
Постояльцы, проживающие в гостиничном номере категории N
Отчет по проживанию, сгруппированный по категории номера, сортировка по месту (убывание).
Подробное описание, как можно выполнить такое задание, приведено в нулевом и первом вариантах.
Составляем таблицы и логическую схему, описываем типы данных и другие параметры полей данных (все, как сказано в методичке).
Запускаем СУБД MS Access, создаем таблицы, устанавливаем связи.
Схема базы данных в MS Access.
Схема базы данных в MS Access.
Справочниками являются таблицы «Места» и «Номерной фонд». Другие две таблицы служат для хранения информации по бронированию и проживанию. Связи и подчиненность таблиц друг другу видно на схеме. Решил я немного нормализовать базу, разделил "Номерной фонд" на таблицу "Места" и таблицу "Номерной фонд". А то каждый раз при заполнении места приходится набирать номер помещения, категорию, стоимость проживания. Если не лень, то можно оставить по заданию.
Переходим к запросам.
Первый запрос на выборку:
Первый запрос на выборку:
Нужно выбрать постояльцев, проживающих в номерах 5 и 40. Поскольку время проживания – текущее, то придется выбирать тех, у кого дата заезда меньше или равна текущей (функция Date() – текущая системная дата), а дата выезда – больше или равна текущей.
Второй запрос на выборку
Третий запрос на выборку
С текущей датой та же история, что и в первом запросе.
Запрос с вычисляемым полем
Запрос с вычисляемым полем
Используем функцию DateDiff для вычисления разницы между датами выезда и заезда. Потом полученное значение умножаем на стоимость проживания в сутки.
Групповой запрос
Групповой запрос
Нужно сгруппировать по категориям проживающих. Выбираем поля «Категория номера», «ФИО», «Дата заезда» и «Дата выезда». Нажимаем кнопку «Итоги», после этого в строке «Групповая операция» у поля «ФИО» меняем на Count (число), а в полях, относящихся к датам заезда и выезда, ставим «Условие» и прописываем его в условии отбора (<=Date(), например). И убираем у этих полей отметки вывода на экран. В результате будет подсчитано количество проживающих в данный момент.
Запрос с параметром
Запрос с параметром
Делаем отчет. Многотабличный запрос
Отчет в режиме конструктора:
Итоги в отчете не рассчитываются.
