Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kursovaya_BD_14.docx
Скачиваний:
4
Добавлен:
15.11.2019
Размер:
581.01 Кб
Скачать

Модель данных в третьей нормальной форме

Описание бд

Описание структуры таблиц

При разработке курсового проекта были выделены следующие сущности:

Таблица 1. Врачи (DOCTOR)

Наименование атрибута

Тип

Примечание

DoctorID

int

PRIMARY KEY

Name

varchar(40)

NOT NULL

Dolzhnost

varchar(15)

NOT NULL

Таблица 2. Пациенты (CLIENT)

Наименование атрибута

Тип

Примечание

ClientID

int

PRIMARY KEY

Name

varchar(40)

NOT NULL

Adress

varchar(20)

NULL

Phone

varchar(15)

NULL

DoctorID

int

NULL, FOREIGN KEY

Таблица 3. Талоны (TALON)

Наименование атрибута

Тип

Примечание

TalonID

int

PRIMARY KEY

ClientID

int

NOT NULL, FOREIGN KEY

DoctorID

int

NOT NULL, FOREIGN KEY

IllnessID

int

NOT NULL, FOREIGN KEY

DateP

date

NOT NULL

Recovery

int

NULL

Таблица 4. Заболевания (ILLNESS)

Наименование атрибута

Тип

Примечание

IllnessID

int

PRIMARY KEY

Name

varchar(30)

NOT NULL

Описание тестового набора данных

На рисунке 1 представлен результат выполнения запроса к базе данных, выводящий на экран список таблиц, присутствующих в созданной базе данных.

Рис.1 Список таблиц пользователя

Далее просмотрим данные, занесенные в таблицы. Результаты представлены на рисунках 2-5.

Рис.2 Данные таблицы «Врачи» (DOCTOR)

Рис.3 Данные таблицы «Заболевания» (ILLNESS)

Рис.4 Данные таблицы «Пациенты» (CLIENT)

Рис.5 Данные таблицы «Талоны» (TALON)

Таким образом, есть четыре таблицы пользователя, заполненные с учетом внешних ключей и с использованием последовательностей.

Описание хранимых процедур и триггеров

В ходе выполнения курсовой работы была реализована процедура, возвращающая фамилию врача и количество принятых им пациентов в заданном периоде по ID врача. Результат работы этой процедуры представлен на рисунке 6.

Рис.6 Результат работы процедуры

Также были реализована функция, возвращающая количество принятых пациентов и процент выздоровлений у врача в заданном периоде. Эти данные требуются для расчета зарплаты. Результат работы представлен на рисунке 6.

Рис.7 Результат работы функций

В базе данных присутствуют два триггера.

Первый триггер срабатывает после добавления записи в таблицу «Врачи» (DOCTOR). Результат работы триггера – внесение записи в таблицу «log» о пользователе, внесшем изменения, дате события и текст события: «Добавление записи в таблицу DOCTOR».

Таблица log

Наименование атрибута

Тип

loguser

varchar(10)

logdate

date

logtext

varchar(40)

Второй триггер срабатывает перед добавлением записи в таблицу «Талоны» (TALON). Результат работы триггера - внесение записи в таблицу «log» о пользователе, внесшем изменения, дате события и текст события: «Добавление записи в таблицу TALON», а также вывод на экран сообщения о выздоровлении больного, если поле Recovery = 1 (т.е. пациент выздоровел).

Результат работы триггеров представлен на рисунке 8.

Рис.8 Результат работы триггеров

Примеры запросов и результаты выборки данных.

Выбор записей из таблицы «Пациенты» (CLIENT), которые стоят на учете у врача с ID = 5. Результат представлен на рисунке 9.

Рис. 9 Результат запроса.

Выбор из таблицы «Талоны» (TALON) ID врача и даты приема при условии, что пациент выздоровел (Recovery = 1). Результат запроса представлен на рисунке 10.

Рис.10 Результат запроса.

Сортировка записей таблицы «Пациенты» (CLIENT) по возрастанию (по ФИО). Результат запроса представлен на рисунке 11.

Рис.11 Результат сортировки

Сортировка записей таблицы «Врачи» (DOCTOR) по убыванию (по ФИО). Результат запроса представлен на рисунке 12.

Рис.12 Результат сортировки

Выбор общего числа талонов у доктора по ID доктора. Результат запроса представлен на рисунке 13.

Рис.13 Результат запроса

Выбор из таблиц «Талоны» (TALON) и «Пациенты» (CLIENT) ФИО пациента и даты посещения больницы. Результат запроса представлен на рисунке 14.

Рис.14 Результат запроса.

Левое внешнее соединение. Запрос возвращает сначала список врачей и даты приема пациентов в заданном периоде, а затем группирует их по врачам. Таким образом, выводится фамилия врача и количество принятых пациентов в заданном периоде. Результат запросов представлен на рисунке 15.

Рис.15 Результат запроса

Описание курсоров

В ходе выполнения курсовой работы было создано три курсора.

Первый курсор – курсор-цикл – выбирающий данные из таблицы «Пациенты» (CLIENT) – ФИО клиента и адрес. Результат работы курсора представлен на рисунке 16.

Рис.16 Результат работы курсора

Второй курсор – курсор с параметрами – из таблицы «Пациенты» (CLIENT) выбирает пациентов, стоящих на учете у врача. ID врача передается в параметрах. Результат работы курсора представлен на рисунке 17.

Рис.17 Результат работы курсора

Третий курсор – курсор с обновлением – изменяет ID лечащего врача в таблицы «Пациенты» у всех пациентов, которых лечит врач с заданным ID, на NULL (ID лечащего передается в параметрах). Применимо, например, при увольнении или уходе в отпуск лечащего врача.. Результат работы курсора (после выполнения запроса к БД «select ClientID, DoctorID from Client;») представлен на рисунке 18.

Рис.18 Результат работы курсора