Вы находитесь на странице: 1из 24

Министерство науки и высшего образования Российской Федерации

Федеральное государственное бюджетное образовательное учреждение


высшего образования
«Сибирский государственный индустриальный университет»

Кафедра прикладных информационных технологий и программирования

КУРСОВОЙ РАБОТА

по дисциплине «Современные СУБД»

на тему: «Проектирование и разработка базы данных поликлиники на языке SQL».

Выполнил:
Обучающийся гр. ИП-18 ⠀
(аббревиатуры групп)
________ _________ Е.Д. Аксенов
(дата) (подпись) (инициалы, фамилия)

Руководитель курсового проекта:


ст. пр. И.А. Куксов
__________ ________ ______________
(оценка) (дата) (подпись)

Новокузнецк
2020
СОДЕРЖАНИЕ

ВВЕДЕНИЕ..........................................................................................................................3
1 Анализ предметной области и моделирование базы данных.......................................4
1.1 Описание предметной области.................................................................................4
1.2 Модель данных..........................................................................................................4
1.3 Модель «Сущность-связь».......................................................................................6
1.4 Описание структуры базы данных...........................................................................7
2 Реализация базы данных в SQL......................................................................................9
2.1 Реализация таблиц базы данных..............................................................................9
2.2 Реализация вставки данных в базу данных...........................................................11
2.3 Реализация выборки данных из базы данных.......................................................14
2.4 Реализация представлений и хранимых процедур базы данных........................16
2.4.1 Представления базы данных............................................................................16
2.4.2 Хранимые процедуры базы данных................................................................18
2.4.3 Триггеры базы данных.....................................................................................19
ЗАКЛЮЧЕНИЕ..................................................................................................................21
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ..........................................................22

2
ВВЕДЕНИЕ

Цель работы: разработать базу данных поликлиники.


Задачи:
 описать предметную область;
 произвести моделирование предметной области;
 построить диаграмму «Сущность-связь»;
 реализовать базу данных с помощью языка SQL, а также заполнить таблицы
необходимыми данными;
 создать и реализовать запросы;
 создать и реализовать представления;
 создать и реализовать хранимые процедуры;
 создать и реализовать триггеры.
Объектом исследования является предметная область учёта данных о
пациентах, врачах и обследованиях поликлиники. Предмет исследования –
разработанная для заданной предметной области база данных.

3
1 Анализ предметной области и моделирование базы данных

1.1 Описание предметной области

В данной работе предметной областью является учёт данных о пациентах,


врачах и обследованиях поликлиники.
Разработанная база данных предусматривает хранение следующей
информации:
 информацию об обследованиях в поликлинике;
 информацию о пациентах в поликлинике;
 информацию о врачах поликлиники;
 информацию о специализациях персонала;
 информацию о диагнозах для пациентов поликлиники;
 информацию о видах осмотра.

1.2 Модель данных

Проанализировав предметную область, можно выделить следующие


сущности:
 обследования;
 пациенты;
 персонал;
 специализации;
 диагнозы;
 осмотр.
Сущность «Обследования» предназначена для хранения информации об
обследованиях в поликлинике. Для данной сущности выделены следующие
атрибуты:
 ID_обследования (уникальный идентификатор);
 ID_пациента (информация о пациенте);

4
 ID_врача (информация о враче);
 ID_диагноза (информация о диагнозе);
 Жалобы (информация по жалобе);
 Дата_обращения (информация о дате обращения);
 ID_осмотра (информация об осмотре).
Сущность «Пациенты» предназначена для хранения информации о пациентах
в поликлинике. Для данной сущности выделены следующие атрибуты:
 ID_пациента (уникальный идентификатор);
 ФИО_пациента (информация о ФИО пациента);
 Пол (информация о половой принадлежности пациента);
 Дата_рождения (информация о дате рождения пациента).
Сущность «Персонал» предназначена для хранения информации о врачах
поликлиники. Для данной сущности выделены следующие атрибуты:
 ID_врача (уникальный идентификатор);
 ФИО_врача (информация о ФИО врача);
 ID_специализации (информация о специализации врача);
 Стаж_работы (информация о стаже работы врача).
Сущность «Специализации» предназначена для хранения информации о
специализациях персонала. Для данной сущности выделены следующие атрибуты:
 ID_специализации (уникальный идентификатор);
 Название_специализации (информация о виде специализации).
Сущность «Диагнозы» предназначена для хранения информации о диагнозах
для пациентов поликлиники. Для данной сущности выделены следующие атрибуты:
 ID_диагноза (уникальный идентификатор);
 Название_диагноза (информация о виде диагноза).
Сущность «Осмотр» предназначена для хранения информации о видах
осмотра. Для данной сущности выделены следующие атрибуты:
 ID_осмотра (уникальный идентификатор);

5
 Вид_осмотра (информация о виде осмотра);
 Цель_проведения (информация о цели проведения для осмотра).
Определив все сущности и их атрибуты, необходимо выявить связи между
данными сущностями. Связь «один-ко-многим» присутствует между следующими
сущностями:
 Диагнозы – Обследования;
 Осмотр – Обследования;
 Специализации – Персонал;
 Персонал – Обследования;
 Пациенты – Обследования.

1.3 Модель «Сущность-связь»

Модельные представления, основанные на анализе семантики данных, иногда


называют семантическими моделями. Один из распространённых средств
спецификации модельных представлений этого типа является модель «Сущность-
связь»[1].
Модель «Сущность-связь» представляет собой набор концепций,
используемых для описания логической структуры базы данных.
Одним из способов создания модели «Сущность-связь» является программа
Erwin.
Модель «Сущность-связь» базы данных представлена на рисунке 1.1.

6
Рисунок 1.1 – Диаграмма «Сущность-связь»

1.4 Описание структуры базы данных

Обследования. Сущность является сильной и содержит информацию об


обследованиях в поликлинике (таблица 1).

Таблица 1 – Структура сущности «Обследования»

Атрибут Тип данных Ограничения


ID_обследовани PRIMARY KEY, IDENTITY
Числовой (INTEGER)
я
ID_пациента Числовой (INTEGER) REFERENCES
ID_врача Числовой (INTEGER) REFERENCES
ID_диагноза Числовой (INTEGER) REFERENCES
Жалобы Строковый (VARCHAR) VARCHAR(50)
CHECK
Дата_обращения Дата (DATE)
(Дата_обращения <= GETDATE())
ID_осмотра Числовой (INTEGER)

Пациенты. Сущность является слабой и содержит информацию о пациентах в


поликлинике (таблица 2).

Таблица 2 – Структура сущности «Пациенты»

Атрибут Тип данных Ограничения


ID_пациента Числовой (INTEGER) PRIMARY KEY, IDENTITY

7
ФИО_пациента Строковый (VARCHAR) VARCHAR(20)
CHAR(1)
Пол Символьный (CHAR)
Пол IN (‘М’, ‘Ж’)
CHECK
Дата_рождения Дата (DATE) (Дата_рождения <
GETDATE())

8
Персонал. Сущность является слабой и содержит личные сведения о врачах
поликлиники (таблица 3).

Таблица 3 – Структура сущности «Персонал»

Атрибут Тип данных Ограничения


ID_врача Числовой (INTEGER) PRIMARY KEY, IDENTITY
ФИО_врача Строковый (VARCHAR) VARCHAR(20)
ID_специализаци REFERENCES
Числовой (INTEGER)
и
Стаж_работы Числовой (INTEGER) CHECK (Стаж_работы >= 0)

Специализации. Сущность является слабой и содержит информацию о


специализациях. (таблица 4).

Таблица 4 – Структура сущности «Специализации»

Атрибут Тип данных Ограничения


ID_специализации Числовой (INTEGER) PRIMARY KEY, IDENTITY
Название_специализации Строковый (VARCHAR) VARCHAR(30)

Диагнозы. Сущность является слабой и содержит информацию о диагнозах


для пациентов поликлиники (таблица 5).

Таблица 5 – Структура сущности «Диагнозы»

Атрибут Тип данных Ограничения


ID_диагноза Числовой (INTEGER) PRIMARY KEY, IDENTITY
Название_диагноза Строковый (VARCHAR) VARCHAR(30)

Осмотр. Сущность является слабой и содержит информацию о видах


осмотра. (таблица 6).

Таблица 6 – Структура сущности «Осмотр»

Атрибут Тип данных Ограничения


ID_осмотра Числовой (INTEGER) PRIMARY KEY, IDENTITY
Вид_осмотра Строковый (VARCHAR) VARCHAR(20)
9
Цель_проведения Строковый (VARCHAR) VARCHAR(100)

2 Реализация базы данных в SQL

2.1 Реализация таблиц базы данных

Разработанная база данных была реализована в среде разработки MS SQL с


использованием языка SQL. Ниже представлены скрипты создания самой базы
данных и каждой таблицы.
Скрипт создания базы данных приведён на рисунке 2.1.1.

Рисунок 2.1.1 – Скрипт создания базы данных

Скрипт создания таблицы «Обследования» приведён на рисунке 2.1.2. Одно из


основных свойств данной таблицы – поля не могут принять пустое значение (null).

Рисунок 2.1.2 – Скрипт создания таблицы «Обследования»

Скрипт создания таблицы «Пациенты» приведён на рисунке 2.1.3. Одно из


основных свойств данной таблицы – поля не могут принять пустое значение (null).

10
Рисунок 2.1.3 – Скрипт создания таблицы «Пациенты»

Скрипт создания таблицы «Персонал» приведён на рисунке 2.1.4. Одно из


основных свойств данной таблицы – поля не могут принять пустое значение (null).

Рисунок 2.1.4 – Скрипт создания таблицы «Персонал»

Скрипт создания таблицы «Специализации» приведён на рисунке 2.1.5. Одно


из основных свойств данной таблицы – поля не могут принять пустое значение
(null).

Рисунок 2.1.5 – Скрипт создания таблицы «Специализации»

Скрипт создания таблицы «Диагнозы» приведён на рисунке 2.1.6. Одно из


основных свойств данной таблицы – поля не могут принять пустое значение (null).

Рисунок 2.1.6 – Скрипт создания таблицы «Диагнозы»

Скрипт создания таблицы «Осмотр» приведён на рисунке 2.1.7. Одно из


основных свойств данной таблицы – поля не могут принять пустое значение (null).

11
Рисунок 2.1.7 – Скрипт создания таблицы «Осмотр»

2.2 Реализация вставки данных в базу данных

Скрипт для вставки данных в таблицу «Обследования» приведён на рисунке


2.2.1. Заполненная таблица приведена на рисунке 2.2.1а.

Рисунок 2.2.1 – Скрипт для вставки данных в таблицу «Обследования»

Рисунок 2.2.1а – Содержимое таблицы «Обследования»

Скрипт для вставки данных в таблицу «Пациенты» приведён на рисунке 2.2.2.


Заполненная таблица приведена на рисунке 2.2.2а.

12
Рисунок 2.2.2 – Скрипт для вставки данных в таблицу «Пациенты»

Рисунок 2.2.2а – Содержимое таблицы «Пациенты»

Скрипт для вставки данных в таблицу «Персонал» приведён на рисунке 2.2.3.


Заполненная таблица приведена на рисунке 2.2.3а.

Рисунок 2.2.3 – Скрипт для вставки данных в таблицу «Персонал»

13
Рисунок 2.2.3а – Содержимое таблицы «Персонал»

Скрипт для вставки данных в таблицу «Специализации» приведён на рисунке


2.2.4. Заполненная таблица приведена на рисунке 2.2.4а.

Рисунок 2.2.4 – Скрипт для вставки данных в таблицу «Специализации»

Рисунок 2.2.4а – Содержимое таблицы «Специализации»

Скрипт для вставки данных в таблицу «Диагнозы» приведён на рисунке 2.2.5.


Заполненная таблица приведена на рисунке 2.2.5а.

Рисунок 2.2.5 – Скрипт для вставки данных в таблицу «Диагнозы»

14
Рисунок 2.2.5а – Содержимое таблицы «Диагнозы»

Скрипт для вставки данных в таблицу «Осмотр» приведён на рисунке 2.2.6.


Заполненная таблица приведена на рисунке 2.2.6а.

Рисунок 2.2.6 – Скрипт для вставки данных в таблицу «Осмотр»

Рисунок 2.2.6а – Содержимое таблицы «Осмотр»

2.3 Реализация выборки данных из базы данных

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


данных:
 c условием;
 с сортировкой;
 с группировкой и агрегирующими функциями;
 с подзапросами;
 с соединением таблиц.
Запрос 1. Врачи со стажем работы более 8 лет (рисунок 2.3.1). В данном
запросе:
 WHERE – оператор условия;
15
 ORDER BY – оператор сортировки по возрастанию.
Результат запроса приведён на рисунке 2.3.1а.

Рисунок 2.3.1 – Запрос с условием и сортировкой

Рисунок 2.3.1а – Результат запроса

Запрос 2. Количество врачей по специализациям (рисунок 2.3.2). В данном


запросе:
 COUNT – агрегирующая функция;
 INNER JOIN…ON – оператор внутреннего соединения таблиц;
 GROUP BY – оператор объединения выборки;
 ORDER BY – оператор сортировки по возрастанию.
Результат запроса приведён на рисунке 2.3.2а.

Рисунок 2.3.2 – Запрос с группировкой, агрегирующей функцией


и соединением таблиц

16
Рисунок 2.3.2а – Результат запроса

2.4 Реализация представлений и хранимых процедур базы данных

2.4.1 Представления базы данных

Представление – это виртуальная таблица, содержимое которой определяется


запросом. Как и таблица, представление состоит из ряда именованных столбцов и
строк данных. Пока представление не будет проиндексировано, оно не существует в
базе данных как хранимая совокупность значений[2].
Строки и столбцы данных извлекаются из таблиц, указанных в определяющем
представление запросе и динамически создаваемых при обращениях к
представлению.
Представление выполняет функцию фильтра базовых таблиц, на которые оно
ссылается.
В разработанной базе данных реализованы 3 представления:
 список обследований врача Савельвева К.М.;
 список пациентов с видом осмотра «Цельный»;
 список обследований пациенток.
Представление 1. Список обследований врача Савельвева К.М. (рисунок
2.4.1). Результат выполнения представления приведён на рисунке 2.4.1а.

17
Рисунок 2.4.1 – Запрос создания представления 1

Рисунок 2.4.1а – Результат выполнения представления 1

Представление 2. Список пациентов с видом осмотра «Цельный» (рисунок


2.4.2). Результат выполнения представления приведён на рисунке 2.4.2а.

Рисунок 2.4.2 – Запрос создания представления 2

Рисунок 2.4.2а – Результат выполнения представления 2

Представление 3. Список обследований пациенток (рисунок 2.4.3). Результат


выполнения представления приведён на рисунке 2.4.3а.

18
Рисунок 2.4.3 – Запрос создания представления 3

Рисунок 2.4.3а – Результат выполнения представления 3

2.4.2 Хранимые процедуры базы данных

Хранимые процедуры представляют собой набор команд, состоящий из


одного или нескольких операторов SQL или функций и сохраняемый в базе данных
в откомпилированном виде[3].
В разработанной базе данных реализованы 2 хранимые процедуры:
 добавление новой записи в таблицу «Обследования»;
 удаление последней записи из таблицы «Обследования».
Процедура 1. Добавление новой записи в таблицу «Обследования» (рисунок
2.4.4). Для выполнения процедуры необходимо передать в неё параметры (рисунок
2.4.4а).

19
Рисунок 2.4.4 – Запрос создания процедуры 1

Рисунок 2.4.4а – Использование процедуры 1

В результате использования процедуры 1 в таблицу «Обследования»


добавляется новая запись (рисунок 2.4.4б).

Рисунок 2.4.4б – Результат использования процедуры 1

Процедура 2. Удаление последней записи из таблицы «Обследования»


(рисунок 2.4.5). Пример вызова процедуры 2 приведён на рисунке 2.4.5а.

Рисунок 2.4.5 – Запрос создания процедуры 2

Рисунок 2.4.5а – Использование процедуры 2

20
2.4.3 Триггеры базы данных

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


вызывается автоматически при выполнении определенного действия над таблицей
или представлением, в частности, при добавлении, изменении или удалении данных,
то есть при выполнении команд INSERT, UPDATE, DELETE[4].
В разработанной базе данных реализованы 2 триггера:
 перевод ФИО пациента в верхний регистр при добавлении записи в таблицу
«Пациенты»;
 предупреждение о пустом поле Дата обращения таблицы «Обследования».
Триггер 1. Перевод ФИО пациента в верхний регистр при добавлении
записи в таблицу «Пациенты» (рисунок 2.4.6). В данном триггере таблица inserted
является промежуточной (виртуальной), с её помощью можно получить данные о
добавленных записях.

Рисунок 2.4.6 – Запрос создания триггера 1

Триггер 2. Предупреждение о пустом поле Дата обращения таблицы


«Обследования» (рисунок 2.4.7). В данном триггере
 таблица inserted является промежуточной (виртуальной), с её помощью
можно получить данные о добавленных записях;
 rollback transaction используется для отмены всех изменённых данных,
произведённых с начала транзакции или до точки сохранения.

21
Рисунок 2.4.7 – Запрос создания триггера 2

В результате, при попытке добавления записи с пустым полем Дата


обращения в таблицу «Обследования» система выдаст сообщение с ошибкой.

Рисунок 2.4.7а – Результат триггера 2

22
ЗАКЛЮЧЕНИЕ

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


цели и задачи.
Предметная область была полностью проанализирована. На основе данного
анализа была разработана база данных, а именно, была описана её структура,
опираясь на характеристики сущностей, и построена диаграмма «Сущность-связь».
Результатом выполнения данной курсовой работы является разработанная база
данных учёта данных о пациентах, врачах и обследованиях поликлиники,
облегчающая ведение отчетности, хранение данных, ввод и корректировку данных.
В базе данных в полной мере реализованы все таблицы, запросы, представления,
процедуры и триггеры.

23
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

1. Кара-Ушанов В.Ю. Модель «Сущность-связь». Электронное текстовое


издание [Электронный ресурс] : учебное пособие для студентов, 2017 г. – 4 c. (Дата
обращения 14.12.2020)
2. Представления – Microsoft Docs [Электронный ресурс] – URL:
docs.microsoft.com/ru-ru/sql/relational-databases/views. (Дата обращения: 14.12.2020)
3. НОУ ИНТУИТ | Хранимые процедуры [Электронный ресурс] – URL:
intuit.ru/studies/courses/5/5/lecture/144. (Дата обращения: 14.12.2020)
4. Определение триггеров [Электронный ресурс] – URL:
metanit.com/sql/sqlserver/12.1.php. (Дата обращения: 14.12.2020)

24