# Анализ предметной области
Магазин организует продажу строительных материалов. Предполагаются четыре роли пользователя: клиент, менеджер, бухгалтер и грузопереводчик. Клиент формирует заказ, если материала нет в наличии можно его заказать . При приобретении материалов покупатель указывает свою фамилию, имя, отчество, свой адрес и телефон. Менеджер принимает заказ. Бухгалтер организовывает доставку товаров, которых нет в наличии. Материалы можно приобрести с возможностью доставки. Грузоперевозчик организовывает доставку материалов до адресата. Если покупатель оформил доставку, нанимается транспорт для доставки материалов. Оплату можно произвести как налично так и без налично.
# UML - диаграммы
### Диаграмма прецедентов
![Alt text](images/Диаграмма.png)
### Диаграмма состояний
![Alt text](images/2.jpg)
![Alt text](images/3.jpg)
### Диаграмма деятельности
![Alt text](images/4.jpg)
![Alt text](images/5.jpg)
![Alt text](images/6.jpg)
# Сертификация вариантов использования (Прецедентов).
| | |
| --- | ---|
| Прецедент | Формирование заказа |
| Идентификатор | ID 1 |
| Краткое описание | Клиент формирует заказ |
| Главные акторы | Клиент |
| Второстепенные акторы | Менеджер, Грузоперевозчик |
| Предусловия | нет
| Основной поток | 1. Прецедент начинается, когда Клиент формирует заказ
2. Клиент оформил доставку
3. Менеджер принимает заказ
| Альтернативные потоки | 2.1 Клиент указывает свое ФИО, адрес и номер телефона
2.2 При оплате Грузоперевозчик организовывает доставку
| Постусловия | 1. Клиент оформил заказ
2. Покупатель отказался от покупки
| | |
---|---
Прецедент | Проверка на наличие материала
Идентификатор | ID 2
Краткое описание | Клиент оформил заказ которого нет в наличии
Главные акторы | Менеджер
Второстепенные акторы | Бухгалтер
Предусловия | Клиент оформил заказ
Основной поток | Прецедент начинается, когда Менеджер принимает заказ
Альтернативные потоки | Бухгалтер заказывает недостающие материалы у поставщика
Постусловия | Все материалы заказа в наличии
| | |
| --- | --- |
| Прецедент | Оплата|
Идентификатор | ID 3
Краткое описание | Клиент оплачивает заказ
Главные акторы | Клиент
Второстепенные акторы | нет
Предусловия | Все материалы заказа в наличии
Основной поток | 1. Прецедент начинается, когда Клиент оплачивает заказ
2. Клиент оплачивает заказ безналично
Альтернативные потоки | 2.1 Вводит данные карты
Постусловия | Заказ оплачен
# Словари данных и ER-диаграмма
## Словарь данных
### Пользователь
| Key| Field Name|Data Type/Field Size |Required? | Notes|
|---|---|---|---|---|
|PK |userId |INT | Y| id пользователя |
| |lastName |varchar(30) | Y| Фамилия пользователя |
| |middleName |varchar(30) | Y| Имя пользователя |
| |patronymic |varchar(30) | Y| Отчество пользователя |
| FK| role| varchar(20) |Y | Ссылка на словарь тнаименований ролей пользователя|
| | login| varchar(20) |Y | Логин пользователя|
| | password| varchar(10) |Y | Пароль пользователя|
### Роли
| Key| Field Name|Data Type/Field Size |Required? | Notes|
|---|---|---|---|---|
|PK |roleId |INT | Y| id роли |
| |name |varchar(20) | Y| Наименование роли |
### Заказ
Key| Field Name|Data Type/Field Size |Required? | Notes|
|---|---|---|---|---|
|PK |orderId |INT | Y| id заказа |
| |orderDate |DATE | Y| Дата заказа, в которую клиент должен получить свой заказ |
| FK|orderStatus |varchar(20) |Y |Ссылка на словарь наименований статусов |
|FK |userId |INT | Y| Ссылка на словарь тегов клиентов для выдачи заказа нужному клиенту|
|FK |materialId|INT | Y| Ссылка на словарь тегов материалов для выдачи нужного материала клиенту|
||address |varchar(50) | | Адрес клиента, который он заполняет при оформлении доставки |
| |phoneNumber |varchar(12) | | Номер телефона, который тоже заполнеяется при формлении достваки|
|FK |paymentId |varchar(12) | | Ссылка на словарь тегов оплаты для подтверждения заказа|
### Статус
| Key| Field Name|Data Type/Field Size |Required? | Notes|
|---|---|---|---|---|
|PK |statusId |INT | Y| id статуса |
| | name|varchar(20) | Y| Наименование статуса|
### Доставка
Key| Field Name|Data Type/Field Size |Required? | Notes|
|---|---|---|---|---|
|PK |deliveryId |INT | Y| id доставки |
| |deliveryDate |DATE |Y | Дата доставки до адреса клиента|
|FK |orderId |INT | Y| Ссылка на словарь тегов заказов для понимания, тот ли заказ доставляестся|
### Материалы
Key| Field Name|Data Type/Field Size |Required? | Notes|
|---|---|---|---|---|
|PK |materialId |INT |Y | id материала|
| |title |varchar(50) |Y | Наименование материала |
| |price |INT | Y| Цена материала |
| |quantity |INT |Y | Количество материала|
### Оплата
Key| Field Name|Data Type/Field Size |Required? | Notes|
|---|---|---|---|---|
|PK |paymentId |INT | Y| id оплаты|
| |paymentType |varchar(20) |Y | Тип оплаты |
| |paymentAmount |INT | Y| Стоимость оплаты |
| FK|materialId |INT | Y| Ссылка на словарь тегов материалов |
### ER-диаграмма
![Alt text](images/7.jpg)