# Модуль № 1: Проектирование и разработка информационных систем ## Задание На основании _описания брифинга_ и _документов, представленных заказчиком_, необходимо _спроектировать ER-диаграмму_ для информационной системы. Обязательна **3 нормальная форма** с обеспечением ссылочной целостности. При разработке диаграммы обратите внимание на согласованную осмысленную схему именования, создайте необходимые первичные и внешние ключи. ER - диаграмма должна быть представлена в формате .pdf и содержать таблицы, связи между ними, атрибуты и ключи. Необходимые приложения: [Текст брифинга.pdf](./Текст%20брифинга.pdf), [Документы заказчика](./Документы%20заказчика/) >Приложения в каталоге `data` этого репозитория ## Реализация >В файле [Задание модуль_1 Диаграмма.pdf](../solution/Задание%20модуль_1%20Диаграмма.pdf) есть разбор этого задания от другого преподавателя. В целом там нормально, но есть несколько огрехов. **Во-первых**, пользователи и клиенты разделены в разные сущности. В принципе можно сделать и так, тут надо смотреть исходные данные для импорта. **Во-вторых**, не реализована сущность **задачи** (заявки). **В-третьих**, часть информации о бронировании (дата заезда и выезда) почему-то записана клиенту, хотя её место в заказе. Внимательно читаем "текст бриффинга" и выделяем сущности: >Заказчик: Предполагается, что приложением будет пользоваться **руководитель** и **сотрудник** гостиницы, а так же некоторые функции будут доступны **клиенту** и **гостям**. Все роли можно объединить в одну сущность (Пользователь) - **User** - **Role** >Заказчик: Администратор гостиницы должен иметь полный доступ к **информации о бронированиях** и заселении гостей. Возможность управлять **номерным фондом** и назначать свободные номера, оперативно взаимодействовать с другими отделами гостиницы для решения **вопросов гостей**, проведения финансовых операций, таких как прием платежей и выставление счетов. Работать с клиентами с учетом их пожеланий и предпочтений. - **Booking** - бронь - **Room** - номерной фонд >Заказчик: При регистрации гостей администратор гостиницы производит поиск бронирования или создание нового бронирования номера для гостя. При регистрации администратор вводит данные гостя и другую информацию, выбирает нужный **типа номера**, проверяет доступность и назначает номера гостю. Далее администратор регистрирует оплату и оформление документов (например, квитанции или счета) на проживание. - **RoomType** - категория номера >После регистрации администратор предоставляет информацию о доступных услугах и удобствах гостиницы. Активирует карту доступа к номеру и передает ее гостю. При оформлении заезда гостей в номер, **номер приобретает статус** «Занят». - **RoomStatus** - статус номера - **RoomFloor** - этаж (есть в данных о номерном фонде), в соответствии с требованием ссылочной целостности (если сделать просто целым числом, то можно ввести 9999 этаж по ошибке) >Администратор создает график уборки номеров на определенный период времени (неделя, месяц), распределяет уборочный персонал на различные номера и **задачи** в соответствии с заявками от гостей или по расписанию, отслеживает выполнение уборочных работ, формирует отчетность о выполненных работах и статистику по уборке номеров. - **Task** - задачи - **TaskType** - тип задачи (уборка, вызов сантехника, электрика и т.п.) В итоге должна получиться примерно такая диаграмма: ![](../solution/erd.png)