Болница за проектиране на бази данни

Курсова работа по болница за проектиране на бази данни

3.1 Концептуален модел

Във всеки отдел има служители и пациенти, които имат свои лични данни.

Концептуалният модел на база данни е показан на Фигура 3.1.

Фигура 3.1 - Концептуален модел на база данни

3.2 Логически модел на база данни

Логическият модел е показан на фигура 3.2.

Фигура 3.2 - Логически модел на база данни

В базата данни има 9 таблици. Първата е най-важната таблица „Отделения“, която е основната за таблиците „Персонал“, „Пациенти“ и „Диагнози“, с която е свързана от полето „Код на отделението“ и има „1- към много "връзка. На свой ред таблицата „Персонал“ е основната за таблицата „Процедури“, която е свързана с полето „Идентификационна сестра“, връзката също е „1 към много“.

Две таблици "Диагностика-лекарства" и "Диагностика-процедури" имат сложни ключове и са свързани с две таблици, чрез диагнозния код с таблицата "Диагнози" и от лекарствения и процедурен код с таблиците "Лекарства" и "Процедури", съответно. Резултатът е връзка много към много. Необходима е такава връзка, за да могат да бъдат избрани много процедури и лекарства за една диагноза. Съответно много диагнози могат да съответстват на процедури и лекарства.

4. Нормализиране на отношенията

Нормализирането е процес на проектиране на база данни с цел премахване на аномалии на модификацията, излишък на данни и привеждане на връзките в нормални форми.

Аномалии на модификацията - последиците, които могат да възникнат от промяна в отношенията (таблица).

Аномалиите се елиминират чрез разделяне на връзката на 2 или повече нови връзки. Аномалиите са разделени на 2 основни типа: аномалия на отстраняване, аномалия на вмъкване.

Можем да кажем, че в този курсов проект всички таблици са в 1NF, тъй като всички отговарят на изискванията, необходими на таблицата да се счита за връзка. Главно това е изискването за атомност.

Връзката е в 2NF, ако е в 1NF и всички неключови атрибути във връзката зависят само от целия ключ като цяло.

Членството във 2NF на всички таблици, с изключение на две таблици („Диагностика-Процедури“, „Диагностика-Лекарства“), може да се определи чрез наличието на 1 първичен прост ключ, състоящ се от един атрибут. И тези две таблици се състоят само от два ключови атрибута, т.е. първичният ключ е композитен. По този начин в тези таблици няма неключови атрибути, които да са независими от целия ключ като цяло.

Релацията е в 3NF, ако връзката е в 2NF и няма преходни зависимости.

В този курсов проект всички таблици са в 3NF. Въпреки че в началото на курсовия проект се предполагаше, че таблицата „Персонал“ ще включва атрибутите „Длъжност“ и „Заплата“, което ще показва наличието на преходна връзка. В резултат на нормализирането таблицата "Персонал" беше разделена на две отношения "Персонал" и "Длъжности", които сега са в 3NF.

Връзката е в NFBK, ако е в 3NF и всеки определящ фактор е ключов кандидат.

Можем да кажем, че във всички таблици на тази база данни, с изключение на първичните ключове, не се наблюдават кандидат-ключове, поради което не може да се каже, че те са в NFBK.

Таблиците не могат да бъдат в 4NF, тъй като те не са в NFBK.

Така че всички взаимоотношения са в 3NF.

В този курсов проект бяха изпълнени следните заявки:

1. Показване на списък със служители за конкретна длъжност.

ИЗБЕРЕТЕ Лично. Фио като „Пълно име“, Отделения. Nazvanie_otdel като „Име на клон“

ОТ Otdeleniya ВЪТРЕШНА РЕГИСТРАЦИЯ Лична ON Otdeleniya Kod_otdel = Personal.kod_otdel

КЪДЕ Лично. Doljnost като "Позиция"

поръчка от Отделения. Название _ отдел

2. Покажете списък на служителите по длъжност, като вземете предвид отдела.

ИЗБЕРЕТЕ Лично. Фио като „Пълно име“, Отделения. Nazvanie_otdel като „Име на клон“

ОТ Otdeleniya ВЪТРЕШНА РЕГИСТРАЦИЯ Personal ON Otdeleniya. Kod_otdel = Personal.kod_otdel

КЪДЕ Otdeleniya. Nazvanie_otdel = "Клон" И личен. Doljnost като "позиция"

3. Покажете списък на служителите, чиято заплата надвишава n-тата сума

ИЗБЕРЕТЕ Лично. Фио като „Пълно име“, лично. Doljnost като „позиция“, лична. Oklad като "Заплата"

където Личен. Oklad> (Количество)

4. Показване на общ списък на служителите.

ИЗБЕРЕТЕ Лично. Fio като „Пълно име“, Personal.doljnost като „Длъжност“, otdeleniya.nazvanie_otdel като „Име на клон“

ОТ Otdeleniya ВЪТРЕШНА РЕГИСТРАЦИЯ Лична ON Otdeleniya Kod_otdel = Лично. Kod_otdel

група от otdeleniya.nazvanie_otdel, Лични. Fio, Personal.doljnost

поръчка от Личен. Фио

1. Покажете списък с пациенти за конкретна диагноза.

ИЗБЕРЕТЕ Pacienty. Фио като "Ф. И. О.", Отделения. Nazvanie_otdel като "Име на отдел", Diagnozy. Nazvanie_diagnoza като "Име на диагнозата"

ОТ Otdeleniya INNER JOIN (Diagnozy INNER JOIN Pacienty ON Diagnozy.kod_diagnoza = Pacienty. Kod_diagnoza) ON Otdeleniya. Kod_otdel = Pacienty.kod_otdel

КЪДЕ Диагноза. Nazvanie_diagnoza като "% Diagnosis%"

поръчка от Pacienty. Фио

2. Покажете списък с пациенти до конкретна дата на прием.

ИЗБЕРЕТЕ Pacienty. Фио като "Ф. И. О.", Pacienty. Data_postup като "Дата на получаване", Отделение. Nazvanie_otdel като "Име на отдел", Diagnozy. Nazvanie_diagnoza като "Име на диагнозата"