205 lines
5.6 KiB
Markdown
205 lines
5.6 KiB
Markdown
# Лабораторная работа 2. Литвинов Б23-503
|
||
|
||
## **Концептуальное проектирование базы данных**
|
||
|
||
### **Цель**
|
||
|
||
Построить логически корректную модель данных.
|
||
|
||
### **Содержание работы**
|
||
|
||
Студент разрабатывает:
|
||
|
||
* ER-диаграмму;
|
||
* KB-диаграмму (ключи, ограничения, связи);
|
||
* описание атрибутов и доменов;
|
||
|
||
Студент должен понимать:
|
||
|
||
* семантику удаления и обновления данных.
|
||
|
||
### **Отчетные материалы**
|
||
|
||
* ER-диаграмма;
|
||
* KB-диаграмма;
|
||
* таблица атрибутов и доменов;
|
||
|
||
# семантику удаления и обновления данных.
|
||
|
||
Операции с дочерним отношением:
|
||
- Вставка - корректное значение FK
|
||
- Удаление - без ограничений
|
||
- Модификация FK - корректное новое значение FK
|
||
|
||
Операции с родительским отношением:
|
||
- Вставка - без ограничений
|
||
- Удаление - реакция на связанные записи:
|
||
- - не удалять
|
||
- - удалить все
|
||
- - установить пустое значение (отсутствие связи)
|
||
- Модификация PK - реакция аналогична
|
||
|
||
# ER-диаграмма;
|
||
|
||
Master и Client наследуются через отношение полной категоризации от Person / E0. Сущности, ранее связанные с обоими Master и Client теперь связаны с Person
|
||
|
||

|
||
|
||
# KB-диаграмма;
|
||
|
||
## Устранение неопределенных связей Many to Many
|
||
|
||
Добавлены таблицы Class_Master и Class_Equipment. Для каждого Class должно быть 2 и более записей Class_Master
|
||
|
||
## Анализ альтернативных ключей.
|
||
|
||
Client / E1
|
||
- номер телефона
|
||
- email
|
||
|
||
Master / E2
|
||
- паспорт
|
||
|
||
Studio / E3
|
||
- адрес
|
||
|
||

|
||
|
||
# таблица атрибутов и доменов;
|
||
|
||
## Person / E0
|
||
|
||
| Атрибут | Домен | Ограничения |
|
||
|-|-|-|
|
||
| id | int | PRIMARY KEY |
|
||
| ФИО | text | |
|
||
|
||
## Client / E1
|
||
|
||
| Атрибут | Домен | Ограничения |
|
||
|-|-|-|
|
||
| phone | text | UNIQUE |
|
||
| email | text | UNIQUE |
|
||
| billing_account | text | |
|
||
|
||
## Master / E2
|
||
|
||
| Атрибут | Домен | Ограничения |
|
||
|-|-|-|
|
||
| passport | text | UNIQUE |
|
||
| readme | text | |
|
||
|
||
## Studio / E3
|
||
|
||
| Атрибут | Домен | Ограничения |
|
||
|-|-|-|
|
||
| address | text | UNIQUE |
|
||
| capacity | int | CHECK (capacity > 0) |
|
||
| begin_date | timestamptz | |
|
||
| duration | interval | |
|
||
|
||
## Class / E4
|
||
|
||
| Атрибут | Домен | Ограничения |
|
||
|-|-|-|
|
||
| begin_date | timestamptz | PRIMARY KEY |
|
||
| Course_id | int | PRIMARY FOREIGN KEY (Course_id) REFERENCES Course (id) |
|
||
| Studio_id | int | FOREIGN KEY (Studio_id) REFERENCES Studio (id) |
|
||
| name | text | |
|
||
| type | int | |
|
||
| duration | interval | |
|
||
|
||
## Course / E5
|
||
|
||
| Атрибут | Домен | Ограничения |
|
||
|-|-|-|
|
||
| id | int | PRIMARY KEY |
|
||
| Master_id | int | FOREIGN KEY (Master_id) REFERENCES Master (id) |
|
||
| name | text | |
|
||
| duration | interval | |
|
||
|
||
## Registration / E6
|
||
|
||
| Атрибут | Домен | Ограничения |
|
||
|-|-|-|
|
||
| Client_id | int | PRIMARY FOREIGN KEY (Client_id) REFERENCES Client (id) |
|
||
| Course_id | int | PRIMARY FOREIGN KEY (Course_id) REFERENCES Course (id) |
|
||
| date | timestamptz | |
|
||
| status | int | |
|
||
|
||
## FoodProduct / E7
|
||
|
||
| Атрибут | Домен | Ограничения |
|
||
|-|-|-|
|
||
| id | int | PRIMARY KEY |
|
||
| FoodProductEnum_id | int | PRIMARY FOREIGN KEY (FoodProductEnum_id) REFERENCES FoodProductEnum (id) |
|
||
| ClassId | int | FOREIGN KEY (Class_id) REFERENCES Class (id) |
|
||
| buy_price | real | |
|
||
| buy_date | timestamptz | |
|
||
| delivery_price | real | |
|
||
| delivery_date | timestamptz | |
|
||
| expires_date | timestamptz | |
|
||
|
||
## Equipment / E8
|
||
|
||
| Атрибут | Домен | Ограничения |
|
||
|-|-|-|
|
||
| id | int | PRIMARY KEY |
|
||
| Studio_id | int | FOREIGN KEY (Studio_id) REFERENCES Studio (id) |
|
||
| name | text | |
|
||
| usage_price | real | |
|
||
| usage_type | int | |
|
||
| delivery_price | real | |
|
||
| delivery_date | timestamptz | |
|
||
|
||
## FirstAidKit / E9
|
||
|
||
| Атрибут | Домен | Ограничения |
|
||
|-|-|-|
|
||
| Course_id | int | FOREIGN KEY (Course_id) REFERENCES Course (id) |
|
||
|
||
## Drug / E10
|
||
|
||
| Атрибут | Домен | Ограничения |
|
||
|-|-|-|
|
||
| id | int | PRIMARY KEY |
|
||
| DrugEnum_id | int | PRIMARY FOREIGN KEY |
|
||
| FirstAidKit_id | int | FOREIGN KEY |
|
||
| buy_price | real | |
|
||
| buy_date | timestamptz | |
|
||
| delivery_price | real | |
|
||
| delivery_date | timestamptz | |
|
||
| expires_date | timestamptz | |
|
||
|
||
## DrugIntolerance / E11
|
||
|
||
| Атрибут | Домен | Ограничения |
|
||
|-|-|-|
|
||
| Person_id | int | PRIMARY FOREIGN KEY |
|
||
| DrugEnum_id | int | PRIMARY FOREIGN KEY |
|
||
|
||
## DrugEnum / E12
|
||
|
||
| Атрибут | Домен | Ограничения |
|
||
|-|-|-|
|
||
| id | int | PRIMARY KEY |
|
||
| name | text | |
|
||
| avg_price | text | |
|
||
|
||
## FoodProductEnum / E13
|
||
|
||
| Атрибут | Домен | Ограничения |
|
||
|-|-|-|
|
||
| id | int | PRIMARY KEY |
|
||
| name | text | |
|
||
| avg_price | text | |
|
||
|
||
## ActivityLog / E14
|
||
|
||
| Атрибут | Домен | Ограничения |
|
||
|-|-|-|
|
||
| id | int | PRIMARY KEY |
|
||
| Person_id | int | PRIMARY FOREIGN KEY |
|
||
| action | text | |
|
||
|