1НФ. Для приведения таблиц к 1НФ необходимо, чтобы все атрибуты
были атомарны. Для этого необходимо разбить сложные атрибуты на простые,а многозначные атрибуты вынести в отдельные отношения.
Примечание: В реальных БД сложные атрибуты разбиваются на простые, если:
а) этого требует внешнее представление данных;
б) в запросах поиск может осуществляться по отдельной части атрибута.
Разделим атрибуты Фамилия Имя Отчество на три атрибута Фамилия,
Имя, Отчество.
2НФ. В нашем случае составные первичные ключи имеют отношения
Процедуры, Палаты, Лечение. Неключевые атрибуты этих отношений функционально полно зависят от первичных ключей.
3НФ. В отношении Диагноз атрибут код лечения зависит от кода диагноза,поэтому код лечение следует вынести в отдельное отношениет Лечение.
4НФ. Отношения данного примера не нарушают 4НФ, т.к. не содержат
нетривиальных многозначных зависимостей.
После проведённых преобразований схема БД выглядит так (рис. 1.3):
ID-пациента
Фамилия
Имя
Отчество
Номер телефона
Возраст
| |
ID-приема
ID-пациента
ID-врача
ID-диагноза
Дата
Время
Кабинет
Исход
| |
Пациенты Прием R2 Врачи
ID-врача
Код отделениия
ФИО
Номер телефона
| |
R 3 R 4 R 1
R9 R11
R7
R5 Стационар
Код отделения
Кол-во палат
Этаж
|
R10
ID-диагноза
ID-лечения
Название
| |
ID-пац_стационара
ID-пациента
Код отделения
Дата начала лечения
Номер палаты
Дата окончания лечения
Результат
| |
Пац_стационар R8 Диагноз Лечение
ID-лечения
Название
Стоимость
Статус
| |
R15
R13 R20
R14
R6
R17
палаты
Номер палаты
Статус
Количество мест
Код отделения
| |
R18
R12
R16
ID -лечения
ID -пац_стационара
|
Процедуры
R19
Рис. 1.3. Окончательная ER-модель БД больницы
Название объекта
| Обозначе-
ние
объекта
| Количе-
ство
экземп-
ляров
| Про-
цент
изме-
нений
| Ограни-
чение
доступа
| Связанные
объекты
| Примечания
|
Пациенты
| Пациенты
| 100
| 20%
| больница
| Пац_стационар,Прием
|
|
Прием
| Прием
| 200
| 20%
| больница
| Пациенты,диагноз,врачи
|
|
Стационар
| Стационар
| 400
| 30%
| больница
| Пац_стационар,врачи,палаты
|
|
Диагноз
| Диагноз
| 100
| 10%
| больница
| Прием,лечение
|
|
Врачи
| Врачи
| 300
| 20%
| больница
| Прием,стационар
|
|
Пац_стационар
| Пац_стационар
| 100
| 30%
| больница
| Процедуры,палаты,пациенты,стационар
|
|
Лечение
| Лечение
| 100
| 20%
| больница
| Диагноз,процедуры
|
|
Палаты
| Палаты
| 400
| 20%
| больница
| Стационар,пац_стационар
|
|
Процедуры
| Процедуры
| 100
| 10%
| больница
| Пац_стационар,лечение
|
|
В таблице 1.11 приведено уточненное описание связей.
Таблица 1.11
Таблица описания связей
Название связи
| Обозначение связи
| Главный объект
| Связанный объект
| Вид связи
| Условие связи
| Способ реализации
| Примечание
|
имеет
| R1
| Прием
| Врачи
| М:1
|
| По коду врача
|
|
имеет
| R2
| Врачи
| Прием
| 1:М
|
| По коду врача
|
|
записывает
| R3
| Пациенты
| Прием
| 1:М
|
| По коду пациента
|
|
записываются
| R4
| Прием
| Пациенты
| М:1
|
| По коду пациента
|
|
имеются
| R5
| Пациенты
| Пац_стационар
| 1:М
|
| По коду пациента
|
|
имеют
| R6
| Пац_стационар
| Пациенты
| М:1
|
| По коду пациента
|
|
записывает
| R7
| Прием
| Диагноз
| М:1
|
| По коду диагноза
|
|
записывается
| R8
| Диагноз
| Прием
| 1:М
|
| По коду диагноза
|
|
имеет
| R9
| Врачи
| Стационар
| М:1
|
| По коду отделения
|
|
имеются
| R10
| Стационар
| Врачи
| 1:М
|
| По коду отделения
|
|
имеют
| R11
| Врачи
| Палаты
| 1:М
|
| По коду отделения
|
|
имеются
| R12
| Палаты
| врачи
| М:1
|
| По коду отделения
|
|
содержит
| R13
| Диагноз
| Лечение
| М:1
|
| По коду лечения
|
|
содержится
| R14
| Лечение
| Диагноз
| 1:М
|
| По коду лечения
|
|
имеются
| R15
| Пац_стационар
| Процедуры
| M:1
|
| По коду пац_стационара
|
|
имеются
| R16
| Процедуры
| Пац_стационар
| 1:M
|
| По коду пац_стационара
|
|
содержит
| R17
| Пац_стационар
| Палаты
| М:1
|
| По коду номера палаты
|
|
содержатся
| R18
| палаты
| Пац_стационар
| 1:М
|
| По коду номера палаты
|
|
содержит
| R19
| Процедуры
| Лечение
| М:1
|
| По коду лечения
|
|
содержится
| R20
| лечение
| процедуры
| 1:М
|
| По коду лечения
|
|
Окончательные схемы отношений базы данных с указанием ключей и
других ограничений целостности приведены в табл. 1.12 – 1.20.
Описание атрибутов объекта Пациенты
Таблица 1.12
Название
атрибута
| Обозначение
атрибута
| Динамичность
| Количество
повторений
| Область
возможных
значений
| Вывод
значений
| Ограничение
доступа
| Примечание
|
ID-пациента
| ID_pacien
| S
| -
| N(4)
|
| см. п. 2.4.3
| первичный ключ
|
Фамилия
| familiya
| D
| 1
| C(50)
|
| см. п. 2.4.3
| Обязательное поле
|
Имя
| imya
| D
| 1
| C(20)
|
| см. п. 2.4.3
| Обязательное поле
|
Отчество
| otchestvo
| D
| 1
| C(20)
|
| см. п. 2.4.3
| Обязательное поле
|
Номер телефона
| Nomer_telefona
| D
| 1
| C(15)
|
| см. п. 2.4.3
| Многозначное поле
|
Возраст
| Vozrast
| D
| 1
| N(10)
|
| см. п. 2.4.3
| Обязательное поле
|
Таблица 1.13
Описание атрибутов объекта Врачи
Название
атрибута
| Обозначение
атрибута
| Динамичность
| Количество
повторений
| Область
возможных
значений
| Вывод
значений
| Ограничение
доступа
| Примечание
|
ID-врача
| id_vracha
| S
| -
| N(4)
|
| см. п. 2.4.3
| первичный ключ
|
Фамилия
| familiya
| D
| 1
| C(50)
|
| см. п. 2.4.3
| Обязательное поле
|
Имя
| imya
| D
| 1
| C(50)
|
| см. п. 2.4.3
| Обязательное поле
|
Отчество
| otchestvo
| D
| 1
| C(50)
|
| см. п. 2.4.3
| Обязательное поле
|
Номер телефона
| Nomer_telefona
| D
| 1
| C(15)
|
| см. п. 2.4.3
| Многозначное поле
|
Описание атрибутов объекта Пац_стационар
Таблица 1.14
Название
атрибута
| Обозначение
атрибута
| Динамичность
| Количество
повторений
| Область
возможных
значений
| Вывод
значений
| Ограничение
доступа
| Примечание
|
ID-пац_стационара
| id_pac_sta
| S
| -
| N(4)
|
| см. п. 2.4.3
| Сурагатный первичный ключ
|
ID-пациента
| ID_pacien
| S
| -
| N(5)
|
| см. п. 2.4.3
| Внешний ключ(к Пациенты)
|
Код отделения
| kod_otdel
| S
| -
| N(4)
|
| см. п. 2.4.3
| Внешний ключ(к Стационар)
|
Дата начала лечения
| data_nachala_lecheniya
| D
| 1
| D(10)
|
| см. п. 2.4.3
| Обязательное поле
|
Номер палаты
| nomer_pal
| D
| 1
| N(10)
|
| см. п. 2.4.3
| Обязательное поле
|
Дата окончания лечения
| data_okonchaniya_lecheniya
| D
| 1
| D(10)
|
| см. п. 2.4.3
| Обязательное поле
|
Результат
| rezultat
| D
| 1
| C(10)
|
| см. п. 2.4.3
| Обязательное поле
|
Описание атрибутов объекта Прием
Таблица 1.15
Название
атрибута
| Обозначение
атрибута
| Динамичность
| Количество
повторений
| Область
возможных
значений
| Вывод
значений
| Ограничение
доступа
| Примечание
|
ID-приема
| id_priema
| S
| -
| N(10)
|
| см. п. 2.4.3
| первичный ключ
|
ID-пациента
| id_pacien
| S
| -
| N(4)
|
| см. п. 2.4.3
| внешний ключ(к Пациенты)
|
ID-врача
| id_vracha
| S
| -
| N(10)
|
| см. п. 2.4.3
| Внешний ключ(к Врачи)
|
ID-диагноза
| id_diagnoz
| S
| -
| N(10)
|
| см. п. 2.4.3
| Внешний ключ(к Диагноз)
|
Дата
| data
| D
| 1
| D(10)
|
| см. п. 2.4.3
| Обязательное поле
|
Время
| vremya
| D
| 1
| C(15)
|
| см. п. 2.4.3
| Обязательное поле
|
Кабинет
| kabinet
| D
| 1
| C(20)
|
| см. п. 2.4.3
| Обязательное поле
|
Исход
| isxod
| D
| 1
| C(20)
|
| см. п. 2.4.3
| Многозначительное поле
|
Описание атрибутов объекта Стационар
Таблица 1.16
Название
атрибута
| Обозначение
атрибута
| Динамичность
| Количество
повторений
| Область
возможных
значений
| Вывод
значений
| Ограничение
доступа
| Примечание
|
Код отделения
| kod_otdel
| S
| -
| N(4)
|
| см. п. 2.4.3
| первичный ключ
|
Количество палат
| kollichestvo_palat
| D
| 1
| N(10)
|
| см. п. 2.4.3
| Обязательное поле
|
этаж
| etag
| D
| 1
| C(10)
|
| см. п. 2.4.3
| Обязательное поле
|
Описание атрибутов объекта Диагноз
Таблица 1.17
Название
атрибута
| Обозначение
атрибута
| Динамичность
| Количество
повторений
| Область
возможных
значений
| Вывод
значений
| Ограничение
доступа
| Примечание
|
ID-диагноза
| id_diagnoz
| S
| -
| N(4)
|
| см. п. 2.4.3
| первичный ключ
|
Название
| nazvanie
| D
| 1
| C(27)
|
| см. п. 2.4.3
| Обязательное поле
|
ID-лечения
| id_lechen
| S
| -
| N(10)
|
| см. п. 2.4.3
| Внешний ключ(к Лечение)
|
Описание атрибутов объекта Лечение
Таблица 1.18
Название
атрибута
| Обозначение
атрибута
| Динамичность
| Количество
повторений
| Область
возможных
значений
| Вывод
значений
| Ограничение
доступа
| Примечание
|
ID-лечения
| id_lechen
| S
| -
| N(4)
|
| см. п. 2.4.3
| первичный ключ
|
Название
| nazvanie
| D
| 1
| C(22)
|
| см. п. 2.4.3
| Обязательное поле
|
стоимость
| stoimost
| D
| 1
| Cur(10)
|
| см. п. 2.4.3
| Обязательное поле
|
Статус
| statys
| D
| 1
| C(10)
|
| см. п. 2.4.3
| Многозначное поле
|
Описание атрибутов объекта Палаты
Таблица 1.19
Название
атрибута
| Обозначение
атрибута
| Динамичность
| Количество
повторений
| Область
возможных
значений
| Вывод
значений
| Ограничение
доступа
| Примечание
|
Номер палаты
| nomer_pal
| S
| -
| N(4)
|
| см. п. 2.4.3
| первичный ключ
|
статус
| status
| D
| 1
| C(10)
|
| см. п. 2.4.3
| Многозначное поле
|
Количество мест
| kollichestvo_mest
| D
| 1
| C (10)
|
| см. п. 2.4.3
| Обязательное поле
|
Код отделения
| kod_otdel
| S
| -
| N(10)
|
| см. п. 2.4.3
| Внешний ключ(к Стационар)
|
Описание атрибутов объекта Процедуры
Таблица 1.20
Название
атрибута
| Обозначение
атрибута
| Динамичность
| Количество
повторений
| Область
возможных
значений
| Вывод
значений
| Ограничение
доступа
| Примечание
|
ID-лечения
| id_lechen
| S
| -
| N(4)
|
| см. п. 2.4.3
| первичный ключ
|
ID-пац_стационара
| id_pac_sta
| S
| -
| C(22)
|
| см. п. 2.4.3
| Обязательное поле
|