
- •Содержание
- •Введение
- •1 Построение инфологической концептуальной модели
- •1.1 Анализ предметной области и выявление необходимого набора сущностей
- •1.2 Обоснование требуемого набора атрибутов для каждой сущности и выделение идентифицирующих атрибутов
- •1.3 Определение связей между объектами
- •1.4 Описание полученной модели на языке инфологического проектирования
- •2 Построение схемы реляционной бд
- •2.1 Построение набора необходимых отношений базы данных
- •2.2 Задание первичных и внешних ключей определенных отношений
- •2.3 Приведение отношений бд к третьей нормальной форме
- •2.4 Определение ограничений целостности для внешних ключей отношений и для отношений в целом
- •2.5 Графическое представление связей между внешними и первичными ключами
- •3 Создание спроектированной базы данных
- •4 Запись выражений, указанных в варианте задания типов запросов на языке sql
- •5 Выбор и обоснование средств разработки приложения
- •6 Реализация законченного приложения, работающего с созданной базой данных
- •6.1 Разработка и построение интерфейса главной и рабочих форм
- •6.2 Построение главного меню и кнопок панели инструментов
- •6.3 Выполнение программного кода в среде Microsoft Visual Studio
- •6.4 Тестирование и отладка
- •Заключение
- •Список использованных источников
- •Приложения
2.5 Графическое представление связей между внешними и первичными ключами
По результатам нормализации, определения первичных и внешних ключей, связей между сущностями, была получена схема реляционной базы данных, представленная в приложении B. Полученная ER-диаграмма построена по методу Crow's Foot (рус. «воронья лапка»). Средства моделирования Crow's Foot специально разработаны для построения реляционных информационных систем.
Согласно данной нотации, сущность изображается в виде прямоугольника, содержащего её имя, выражаемое существительным. Имя сущности должно быть уникальным в рамках одной модели. При этом, имя сущности — это имя типа, а не конкретного экземпляра данного типа. Экземпляром сущности называется конкретный представитель данной сущности.
Связь изображается линией, которая связывает две сущности, участвующие в отношении. Степень конца связи указывается графически, множественность связи изображается в виде «вилки» на конце связи. Модальность связи так же изображается графически — необязательность связи помечается кружком на конце связи. Именование обычно выражается одним глаголом в изъявительном наклонении настоящего времени: «имеет», «принадлежит» и т. д.; или глаголом с поясняющими словами: «включает в себя», и т. п. Наименование может быть одно для всей связи или два для каждого из концов связи. Во втором случае, название левого конца связи указывается над линией связи, а правого — под линией. Каждое из названий располагаются рядом с сущностью, к которой оно относится.
Атрибуты сущности записываются внутри прямоугольника, изображающего сущность, и выражаются существительным в единственном числе (возможно, с уточняющими словами). Среди атрибутов выделяется ключ сущности — неизбыточный набор атрибутов, значения которых в совокупности являются уникальными для каждого экземпляра сущности.
3 Создание спроектированной базы данных
Для реализации спроектированной базы данных была выбрана система управления базами данных MS SQL Server 2019. Это обусловлено тем, что, данная СУБД имеет большую функциональность, множество средств для поддержки и работы с ней, развитую инфраструктуру для интеграции баз данных в пользовательские приложения.
В создаваемой базе данных будут использоваться следующие типы данных:
int – целочисленный тип, размер – 4 байта;
nvarchar – строковый тип переменной длины;
bit – битовый тип, используется как логический тип;
date – тип, определяющий дату;
smallint – целочисленный тип, размер – 2 байта.
Опишем все таблицы, которые будут созданы в базе данных.
Таблица «doctor» содержит список всех врачей, работающих в поликлинике. Ее структура приведена в таблице 3.1.
Таблица 3.1 – Характеристика атрибутов таблицы «doctor»
Имя атрибута |
Тип |
Описание |
id |
int |
Идентификатор врача. Ключевой атрибут |
surname |
nvarchar(32) |
Фамилия врача |
name |
nvarchar(32) |
Имя врача |
middlename |
nvarchar(32) |
Отчество врача |
competence |
nvarchar(32) |
Категория врача |
experience |
date |
Стаж работы |
birthday |
date |
Дата рождения |
Таблица «region» содержит информацию о участках, которые относятся к поликлинике и идентификаторы врачей, работающих на этих участках. Ее структуру приведена в таблице 3.2.
Таблица 3.2 – Характеристика атрибутов таблицы «region»
Имя атрибута |
Тип |
Описание |
id |
int |
Идентификатор участка. Ключевой атрибут |
doctor_id |
int |
Идентификатор работающего на участке врача |
description |
nvarchar(128) |
Список улиц и домов, закрепленных за участком |
Таблица «patient» служит для хранения основной информации о пациентах. Ее структура приведена в таблице 3.3.
Таблица 3.3 – Характеристика атрибутов таблицы «patient»
Имя атрибута |
Тип |
Описание |
id |
int |
Идентификатор пациента. Ключевой атрибут |
surname |
nvarchar(32) |
Фамилия пациента |
name |
nvarchar(32) |
Имя пациента |
middlename |
nvarchar(32) |
Отчество пациента |
sex |
nvarchar(1) |
Пол |
birthday |
date |
Дата рождения |
address |
nvarchar(64) |
Адрес |
insurance |
nvarchar(16) |
Номер полиса страхования |
registration |
date |
Дата регистрации |
Таблица «timetable» служит для хранения информации о времени работы врачей. Ее структура приведена в таблице 3.4.
Таблица 3.4 – Характеристика атрибутов таблицы «timetable»
Имя атрибута |
Тип |
Описание |
id |
int |
Идентификатор расписания. Ключевой атрибут |
doctor_id |
int |
Идентификатор врача |
time |
nvarchar(128) |
Время работы врача |
office |
smallint |
Номер кабинета |
Таблица «visit» служит для хранения информации о посещениях пациентами врачей, жалобах, диагнозах и назначениях. Ее структура приведена в таблице 3.5.
Таблица 3.5 – Характеристика атрибутов таблицы «visit»
Имя атрибута |
Тип |
Описание |
id |
int |
Идентификатор посещения. Ключевой атрибут |
date |
date |
Дата посещения |
patient_id |
int |
Идентификатор пациента |
doctor_id |
int |
Идентификатор врача |
complaint |
nvarchar(256) |
Жалобы пациента |
diagnosis |
nvarchar(256) |
Диагноз |
therapy |
nvarchar(256) |
Назначения врача |
sickleave |
date |
Дата окончания больничного |
В спроектированной базе данных реализован контроль целостности и корректности модификаций, путем выполнения триггеров. Так для большинства таблиц в базе данных определены триггеры, которые после удаления главной сущности производят «зачистку» зависимых сущностей, по требуемым правилам.