Files
db2026/2/report.md
2026-02-25 11:24:20 +03:00

205 lines
5.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Лабораторная работа 2. Литвинов Б23-503
## **Концептуальное проектирование базы данных**
### **Цель**
Построить логически корректную модель данных.
### **Содержание работы**
Студент разрабатывает:
* ER-диаграмму;
* KB-диаграмму (ключи, ограничения, связи);
* описание атрибутов и доменов;
Студент должен понимать:
* семантику удаления и обновления данных.
### **Отчетные материалы**
* ER-диаграмма;
* KB-диаграмма;
* таблица атрибутов и доменов;
# семантику удаления и обновления данных.
Операции с дочерним отношением:
- Вставка - корректное значение FK
- Удаление - без ограничений
- Модификация FK - корректное новое значение FK
Операции с родительским отношением:
- Вставка - без ограничений
- Удаление - реакция на связанные записи:
- - не удалять
- - удалить все
- - установить пустое значение (отсутствие связи)
- Модификация PK - реакция аналогична
# ER-диаграмма;
Master и Client наследуются через отношение полной категоризации от Person / E0. Сущности, ранее связанные с обоими Master и Client теперь связаны с Person
![ER](er.drawio.svg)
# KB-диаграмма;
## Устранение неопределенных связей Many to Many
Добавлены таблицы Class_Master и Class_Equipment. Для каждого Class должно быть 2 и более записей Class_Master
## Анализ альтернативных ключей.
Client / E1
- номер телефона
- email
Master / E2
- паспорт
Studio / E3
- адрес
![KB](kb.drawio.svg)
# таблица атрибутов и доменов;
## 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 | |