Дисциплина: ОП.08 «Основы проектирования баз данных» (СПО 09.02.07 «Информационные системы и программирование»). Раздел 2: «Взаимосвязи в моделях и реляционный подход к построению моделей».
Данное индивидуальное домашнее задание предназначено для самостоятельной отработки и контроля компетенций в случае пропуска практического занятия или по специальному назначению ведущего преподавателя.
Рассмотрите фрагмент ER-модели корпоративного учебного центра:
INT, VARCHAR(n), NUMERIC(p,s), TIMESTAMP/DATE, SMALLINT);NOT NULL, UNIQUE, CHECK).ON DELETE и ON UPDATE (выбор между RESTRICT и CASCADE) для обоих внешних ключей связующей таблицы и аргументируйте бизнес-риски потери данных.CREATE TABLE).Ниже приведен эталонный образец аналогичного преобразования связи M:N «Врачи — Пациенты» через связующую сущность «Медицинский прием»:
-- 1. Таблица базовой сильной сущности «Врачи»
CREATE TABLE vrachi (
id_vracha INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
tab_nomer VARCHAR(20) NOT NULL UNIQUE,
familiya VARCHAR(60) NOT NULL,
imya VARCHAR(60) NOT NULL,
specializaciya VARCHAR(100) NOT NULL
);
-- 2. Таблица базовой сильной сущности «Пациенты»
CREATE TABLE pacienty (
id_pacienta INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
snils VARCHAR(14) NOT NULL UNIQUE,
familiya VARCHAR(60) NOT NULL,
imya VARCHAR(60) NOT NULL,
data_rozhdeniya DATE NOT NULL
);
-- 3. Связующая таблица «Приемы» (декомпозиция M:N)
CREATE TABLE priemy_vracha (
id_priema BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
id_vracha INT NOT NULL REFERENCES vrachi(id_vracha)
ON UPDATE CASCADE ON DELETE RESTRICT,
id_pacienta INT NOT NULL REFERENCES pacienty(id_pacienta)
ON UPDATE CASCADE ON DELETE RESTRICT,
data_vremya TIMESTAMP NOT NULL,
kabinet SMALLINT NOT NULL CHECK (kabinet > 0),
diagnoz_mkb VARCHAR(10),
stoimost NUMERIC(8,2) NOT NULL CHECK (stoimost >= 0),
CONSTRAINT uq_vrach_vremya UNIQUE (id_vracha, data_vremya)
);
ON DELETE RESTRICT. Это защищает историю медицинских карт от случайного физического удаления врача или пациента при наличии проведенных приемов.
Критериальная шкала проверки домашнего задания:
| Баллы | Критерии выполнения |
|---|---|
| 4 балла («5») | Связь M:N безошибочно декомпозирована; связующая таблица содержит корректный первичный ключ и собственные атрибуты связи; типы полей подобраны оптимально; внешние ключи и каскадные политики RESTRICT/CASCADE строго обоснованы; DDL-скрипт синтаксически выверен. |
| 3 балла («4») | Таблицы спроектированы верно, связь M:N разрешена, но допущены мелкие погрешности в типах данных (например, FLOAT для цен), либо не обоснована политика ON DELETE. |
| 2 балла («3») | Создана связующая таблица, но пропущены атрибуты связи (остались в курсе или слушателе), отсутствуют внешние ключи или ограничения CHECK. |
| 0–1 балл («2») | Связь M:N не декомпозирована (попытка хранить перечень курсов строкой), отсутствуют первичные или внешние ключи, грубые ошибки целостности. |