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

5.6 KiB
Raw Blame History

Лабораторная работа 2. Литвинов Б23-503

Концептуальное проектирование базы данных

Цель

Построить логически корректную модель данных.

Содержание работы

Студент разрабатывает:

  • ER-диаграмму;
  • KB-диаграмму (ключи, ограничения, связи);
  • описание атрибутов и доменов;

Студент должен понимать:

  • семантику удаления и обновления данных.

Отчетные материалы

  • ER-диаграмма;
  • KB-диаграмма;
  • таблица атрибутов и доменов;

семантику удаления и обновления данных.

Операции с дочерним отношением:

  • Вставка - корректное значение FK
  • Удаление - без ограничений
  • Модификация FK - корректное новое значение FK

Операции с родительским отношением:

  • Вставка - без ограничений
  • Удаление - реакция на связанные записи:
    • не удалять
    • удалить все
    • установить пустое значение (отсутствие связи)
  • Модификация PK - реакция аналогична

ER-диаграмма;

Master и Client наследуются через отношение полной категоризации от Person / E0. Сущности, ранее связанные с обоими Master и Client теперь связаны с Person

ER

KB-диаграмма;

Устранение неопределенных связей Many to Many

Добавлены таблицы Class_Master и Class_Equipment. Для каждого Class должно быть 2 и более записей Class_Master

Анализ альтернативных ключей.

Client / E1

  • номер телефона
  • email

Master / E2

  • паспорт

Studio / E3

  • адрес

KB

таблица атрибутов и доменов;

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