Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
3 курс Курсовая работа / Пояснительная записка к курсовой работе по БСБД.pdf
Скачиваний:
0
Добавлен:
13.07.2026
Размер:
4.24 Mб
Скачать

2.2Физическое проектирование

2.2.1Создание базы данных в СУБД PostgreSQL

Втаблице 2.7 – таблице 2.12 представлено сопоставление логических и физических имен для разработанных таблиц и ролей базы данных.

Таблица 2.7 – Сопоставление логических и физических имен для таблицы «Гостиничный номер»

Логическое имя

Физическое имя

 

 

Гостиничный

hotel_room

номер

 

№ комнаты

room

 

 

Тип

room_type

 

 

Цена за ночь

one_night_cost

 

 

Описание

room_description

 

 

Таблица 2.8 – Сопоставление логических и физических имен для таблицы «Администратор»

Логическое имя

Физическое имя

 

 

Администратор

manager

 

 

ID администратора

manager_id

 

 

Фамилия

manager_surname

 

 

Имя

manager_name

 

 

Отчество

manager_patronymic

 

 

Стаж

experience

 

 

Дата рождения

date_of_birth

 

 

Пол

gender

 

 

Номер телефона

phone_number

 

 

Электронная почта

email

 

 

18

Таблица 2.9 – Сопоставление логических и физических имен для таблицы «Гость»

Логическое имя

Физическое имя

 

 

Гость

guest

 

 

ID гостя

guest_id

 

 

Фамилия

guest_surname

 

 

Имя

guest_name

 

 

Отчество

guest_patronymic

 

 

Тип документа

document_type

 

 

Серия документа

document_series

 

 

Номер документа

document_number

 

 

Дата рождения

date_of_birth

 

 

Пол

gender

 

 

Номер телефона

phone_number

 

 

Электронная почта

email

 

 

Таблица 2.10 – Сопоставление логических и физических имен для таблицы «Заявка»

Логическое имя

Физическое имя

 

 

Заявка

request

 

 

ID заявки

request_id

 

 

ID администратора

manager_id

 

 

№ комнаты

room

 

 

ID гостя

guest_id

 

 

Количество гостей

guest_quantity

 

 

Дата и время

check_in_date

заселения

 

Дата и время

check_out_date

выселения

 

Итоговая цена

total_cost

 

 

19

Таблица 2.11 – Сопоставление логических и физических имен для таблицы «Заселение»

Логическое имя

Физическое имя

 

 

Заселение

check_in

 

 

ID гостя

guest_id

 

 

ID заявки

request_id

 

 

Таблица 2.12 – Сопоставление логических и физических имен для ролей

Логическое имя

Физическое имя

 

 

Менеджер по

manager

бронированию

 

Гость

guest

 

 

Администратор БД

dbadmin

 

 

Был написан запрос на создание базы данных «hoteldb». На рисунке 2.2 представлен фрагмент запроса.

Рисунок 2.2 – Создание базы данных

В базе данных с помощью запросов были созданы таблицы, соответствующие глоссарию. На рисунке 2.3 – рисунке 2.7 представлены фрагменты запроса для создания таблиц. Полный запрос представлен в приложении А.

Рисунок 2.3 – Запрос на создание таблицы «Гостиничный номер»

20

Рисунок 2.4 – Запрос на создание таблицы «Администратор»

Рисунок 2.5 – Запрос на создание таблицы «Гость»

Рисунок 2.6 – Запрос на создание таблицы «Заявка»

Рисунок 2.7 – Запрос на создание таблицы «Заселение»

21

Был создан триггер на INSERT или UPDATE для условия «Гость должен быть старше 18 лет» в таблице «Заявка». Триггер извлекает дату рождения гостя из таблицы «Гость» и рассчитывает возраст на данный момент времени. Если полученный результат меньше 18, то триггер возвращает исключение «Гость, подающий заявку, должен быть старше 18 лет.». Полный скрипт триггера представлен в приложении Б.

Также было реализовано ограничение, не дающее заселить в комнату гостей, если она уже занята, с помощью расширения «btree_gist». Полный скрипт ограничения представлен в приложении В.

Все созданные таблицы были заполнены записями для проверки соблюдения установленных ограничений. На рисунке 2.8 – рисунке 2.12 представлены заполненные таблицы, полный скрипт для добавления записей во все таблицы представлен в приложении Г.

Рисунок 2.8 – Заполненная таблица «Гостиничный номер»

Рисунок 2.9 – Заполненная таблица «Администратор»

22

Рисунок 2.10 – Заполненная таблица «Гость»

Рисунок 2.11 – Заполненная таблица «Заявка»

Рисунок 2.12 – Заполненная таблица «Заселение»

23

Была проведена проверка ограничения целостности базы данных. На рисунке 2.13 представлена проверка ограничения «Первичный ключ» на примере поля «ID администратора» таблицы «Администратор».

Рисунок 2.13 – Проверка ограничения «Первичный ключ» для поля «ID администратора» таблицы «Администратор»

На рисунке 2.14 представлена проверка ограничения для поля «Тип» таблицы «Гостиничный номер». Ограничение позволяет задавать только определенные значения для поля («одноместный» и «двухместный»).

Рисунок 2.14 – Проверка ограничения значений для поля «Тип» таблицы «Гостиничный номер»

На рисунке 2.15 представлена проверка ограничения «Обязательное поле» для поля «Фамилия» таблицы «Администратор».

Рисунок 2.15 – Проверка ограничения «Обязательное поле» для поля «Фамилия» таблицы «Администратор»

24

На рисунке 2.16 представлена проверка ограничения для поля «Стаж» таблицы «Администратор». Ограничение позволяет задавать только неотрицательные значения.

Рисунок 2.16 – Проверка ограничения значений для поля «Стаж» таблицы «Администратор»

На рисунке 2.17 представлена проверка ограничения для поля «Имя» таблицы «Гость». Ограничение позволяет задавать только такие значения поля, которые начинаются с заглавной буквы кириллицы, а после первой буквы могут идти дефис и/или буквы, начиная с заглавной буквы кириллицы.

Рисунок 2.17 – Проверка ограничения значений для поля «Имя» таблицы «Гость»

На рисунке 2.18 представлена проверка ограничения «Внешний ключ» для поля «ID администратора» таблицы «Заявка».

Рисунок 2.18 – Проверка ограничения «Внешний ключ» для поля «ID администратора» таблицы «Заявка»

25

На рисунке 2.19 представлена проверка ограничения значений для поля «№ комнаты» таблицы «Заявка». Ограничение не позволяет оформить заявку на комнату, если она уже занята на этот промежуток времени.

Рисунок 2.19 – Проверка ограничения значений для поля «№ комнаты» таблицы «Заявка»

На рисунке 2.20 представлена проверка ограничения значений для поля «ID гостя» таблицы «Заявка». Ограничение не позволяет оформить заявку, если гость младше 18 лет.

Рисунок 2.20 – Проверка ограничения значений для поля «ID гостя» таблицы «Заявка»

На рисунке 2.21 представлена проверка уникальности значений для поля «Номер телефона» таблицы «Гость».

Рисунок 2.21 – Проверка уникальности значений для поля «Номер телефона» таблицы «Гость»

26