Логическая модель базы данных




Содержание

 

Введение

1. Постановка задачи

2. Обоснование выбора СУБД и программного обеспечения

3. Структура базы данных

3.1 Концептуальная модель данных

3.2 Логическая модель данных

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

5. SQL – запросы

6. Интерфейс системы для работы с базой данных

6.1 Главное окно программы

6.2 Разработка меню

7. Отчеты

Заключение

Список использованной литературы

 

 


Введение

 

Любая организация нуждается в своевременном доступе к информации. Ценность информации в современном мире очень высока. Роль распорядителей информации в современном мире чаще всего выполняют базы данных. Базы данных обеспечивают надежное хранение информации, структурированном виде и своевременный доступ к ней. Практически любая современная организация нуждается в базе данных, удовлетворяющей те или иные потребности по хранению, управлению и администрированию данных.

Целью выполнения курсового проекта является приобретение студентами практических навыков проектирования баз данных и разработки программного обеспечения по управлению базами данных с использованием СУБД. В ходе выполнения данного курсового проекта необходимо разработать информационную базу данных для больницы, которая поможет любому пользователю легко найти нужную информацию о любом сотруднике или пациенте.

Больница – это такая организация, которая работает с очень большим объемом информации, как о сотрудниках, так и о пациентах. Врачам всегда следить за данными о своих пациентах, о курсе лечения больных. А руководству и бухгалтерии необходимо быть в курсе событий о своих сотрудниках. Для этого нужна общая база данных, включающая всю необходимую информацию. Программа является очень актуальной на сегодняшний день, она автоматизирует работу с базой данных и предоставляет пользователю (оператору) понятный и дружественный интерфейс.

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

В задачи курсового проекта входят:

1. Разработка структуры баз данных.

2. Работа с несколькими таблицами и установление взаимосвязей между таблицами.

3. Разработка системы меню.

4. Разработка и формирование отчетов.

5. Использование расширенных средств СУБД ввода и вывода данных.

6. Организация справочной системы.

 

 


1. Постановка задачи

 

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

Требования были следующими:

1. База данных должна отражать всю информацию о больнице, в частности о сотрудниках и о пациентах;

2. В базе данных должна быть справочная информация для врачей о диагнозах и способах их лечения; о процедурах, которые имеются в больнице и их оплате; о лекарствах, имеющих место в медицине.

3. Должна быть возможность вносить изменения в данные и пополнения новыми данными.

4. В программе должна присутствовать функции поиска, выполнения определенных запросов, печати отчетов.

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

 

 


2. Обоснование выбора СУБД и программного обеспечения

 

В качестве средства проектирования базы данных, была выбрана СУБД MS SQL Server 2000.

В отличие от всех остальных наиболее известных СУБД, MS SQL Server имеет ряд преимуществ. Главным из них является то, что он обеспечивает создание информационных систем с архитектурой "клиент-сервер", в которой он играет роль сервера баз данных. Одним из важных свойств Microsoft SQL Server является возможность управления целостностью данных.

Также можно сказать, что он удовлетворяет требованиям, предъявляемым к системам распределенной обработки информации. Эта СУБД поддерживает: тиражирование данных, параллельную обработку, создание и обработку больших баз данных на недорогих аппаратных платформах, отличается простотой управления и использования.

Средством, связывающим клиента с сервером, является язык SQL (Structured Query Language) – язык структурированных запросов. В данном курсовом проекте были использованы основные операторы этого языка, в частности для создания запросов. Этот язык является очень распространенным на данный момент и имеет ряд особенностей.

Он позволяет:

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

• выполнять основные операции манипулирования данными, такие как

вставка, модификация и удаление данных из таблиц;

• выполнять простые и сложные запросы.

Этот язык был выбран, так как он доступен для изучения, синтаксис команд понятен и прост.

В качестве среды разработки самой программы для работы с базой данных была выбрана среда программирования Borland Delphi 7, использующая язык программирования Object Pasсal.

Основные причины выбора языка Object Pascal:

– Главной из причин является возможность работы с базами данными;

– Легкость в организации доступа к базе данных;

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

– Возможность создания достаточно понятного и дружественного интерфейса для пользователя.

– Простота языка позволяет быстро его освоить и создавать сложные программы;

Также, на выбор Object Pascal в качестве базового программного обеспечения, повлияли такие обстоятельства как, достаточное количество необходимой литературы по программированию в этой среде, распространенность этой среды и имеющийся достаточный опыт работы в ней.

 

 


3. Структура базы данных

 

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

 

Основным объектом в рассматриваемой модели является больница. У больницы есть свои характеристики: заведующий больницей, адрес, название. Она представлена в виде составляющих ее отделений, которые тоже имеют ряд характеристик: заведующий отделением, название отделение, старшая медсестра.

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

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

 

 


 

 


Рисунок 3.1 – Концептуальная модель базы данных

 

Логическая модель базы данных

 

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

 

 


Рисунок 3.2 – Логическая модель базы данных

 

В базе данных имеется 9 таблиц. Первая самая главная таблица "Отделения", которая является главной для таблиц "Персонал", "Пациенты" и "Диагнозы", с которыми она связана по полю "Код отделения" и имеет место связь "1-ко многим". В свою очередь таблица "Персонал" является главной для таблицы "Процедуры", которая связана по полю "Код медсестры", связь также "1-ко многим".

Две таблицы "Диагноз-Лекарства" и "Диагноз-Процедуры" имеют составные ключи и связаны с двумя таблицами, по коду диагноза с таблицей "Диагнозы" и по коду лекарства и процедуры с таблицами "Лекарства" и "Процедуры" соответственно. Получилась связь "многие – ко многим". Такая связь нужна, для того чтобы можно было для одного диагноза выбрать много процедур и лекарств. Соответственно, для процедур и лекарств могут соответствовать много диагнозов.

 


Нормализация отношений

 

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

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

Аномалии устраняются путем разбиения отношения на 2 и более новых отношений. Аномалии делятся на 2 основных вида: аномалия удаления, аномалия вставки.

Можно сказать, что в данном курсовом проекте все таблицы находятся в 1НФ, так как все они удовлетворяют требованиям, необходимым для того, чтобы таблица считалась отношением. Главным образом, это требование атомарности.

Отношение находится во 2НФ, если оно находится в 1НФ и все неключевые атрибуты в отношении зависят только от всего ключа в целом.

Принадлежность к 2НФ всех таблиц, кроме двух таблиц ("Диагноз-Процедуры", "Диагноз-Лекарства"), можно определить по наличию 1 первичного простого ключа, состоящего из одного атрибута. А эти две таблицы состоят только из двух ключевых атрибутов, т.е. первичный ключ является составным. Таким образом, в этих таблицах нет неключевых атрибутов, независящих от всего ключа в целом.

Отношение находится в 3НФ, если отношение находится во 2НФ и не имеет транзитивных зависимостей.

В данном курсовом проекте все таблицы находятся в 3НФ. Хотя в начале курсового проекта предполагалось, что таблица "Персонал" будет включать в себя атрибуты "Должность" и "Оклад", что говорило бы о наличие транзитивной зависимости. В результате нормализации таблица "Персонал" была разбита на два отношения "Персонал" и "Должности", которые теперь находятся в 3НФ.

Отношение находится в НФБК, если оно находится в 3НФ и каждый детерминант является ключом-кандидатом.

Можно сказать, что во всех таблицах данной базы данных, кроме первичных ключей ключей-кандидатов не наблюдается, поэтому нельзя сказать, что они находятся в НФБК.

В 4НФ таблицы не могут находиться, так как они не находятся в НФБК.

Таким образом, все отношения находятся в 3НФ.

 

 


SQL–запросы

 

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

По сотрудникам:

1. Вывести список сотрудников по определенной должности.

SELECT Personal. Fio as 'ФИО', Otdeleniya. Nazvanie_otdel as 'Название отделения'

FROM Otdeleniya INNER JOIN Personal ON Otdeleniya. Kod_otdel = Personal.kod_otdel

WHERE Personal. Doljnost like "Должность"

order by Otdeleniya. Nazvanie_otdel

2. Вывести список сотрудников по должности, учитывая отделение.

SELECT Personal. Fio as 'ФИО', Otdeleniya. Nazvanie_otdel as 'Название отделения'

FROM Otdeleniya INNER JOIN Personal ON Otdeleniya. Kod_otdel = Personal.kod_otdel

WHERE Otdeleniya. Nazvanie_otdel = "Отделение’ AND Personal. Doljnost like ‘Должность’

3. Вывести список сотрудников, оклад которых превышает n-й суммы

SELECT Personal. Fio as 'ФИО', Personal. Doljnost as 'Должность', Personal. Oklad as 'Оклад'

FROM Personal

where Personal. Oklad> (Сумма)

4. Вывести общий список сотрудников.

SELECT Personal. Fio as 'ФИО', Personal.doljnost as 'Должность', otdeleniya.nazvanie_otdel as 'Название отделения'

FROM Otdeleniya INNER JOIN Personal ON Otdeleniya. Kod_otdel = Personal. Kod_otdel

group by otdeleniya.nazvanie_otdel, Personal. Fio, Personal.doljnost

order by Personal. Fio

По пациентам:

1. Вывести список пациентов по определенному диагнозу.

SELECT Pacienty. Fio as "Ф.И.О.", Otdeleniya. Nazvanie_otdel as "Название отделения", Diagnozy. Nazvanie_diagnoza as "Название диагноза"

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

WHERE Diagnozy. Nazvanie_diagnoza like ‘%Диагноз % '

order by Pacienty. Fio

2. Вывести список пациентов по определенной дате поступления.

SELECT Pacienty. Fio as "Ф.И.О.", Pacienty. Data_postup as "Дата поступления", Otdeleniya. Nazvanie_otdel as "Название отделения", Diagnozy. Nazvanie_diagnoza as "Название диагноза"

FROM Otdeleniya INNER JOIN (Diagnozy INNER JOIN Pacienty ON Diagnozy.kod_diagnoza = Pacienty. Kod_diagnoza) ON Otdeleniya. Kod_otdel = Pacienty.kod_otdel WHERE Pacienty. Data_postup= ‘Дата поступления’ and Diagnozy. Nazvanie_diagnoza like ' % Диагноз % '

order by Pacienty. Fio

3. Вывести список пациентов по дате выписки.

SELECT Pacienty. Fio as "Ф.И.О.", Otdeleniya. Nazvanie_otdel as "Название отделения", Diagnozy. Nazvanie_diagnoza as "Название диагноза"

FROM Otdeleniya INNER JOIN (Diagnozy INNER JOIN Pacienty ON Diagnozy.kod_diagnoza = Pacienty. Kod_diagnoza) ON Otdeleniya. Kod_otdel = Pacienty.kod_otdel WHERE Pacienty. Data_vypiski='Дата выписки'

order by Pacienty. Fio

4. Вывести список пациентов, поступавших за определенный период.

SELECT Pacienty. Fio as "Ф.И.О.", Pacienty. Data_postup "Дата пост-я", Otdeleniya. Nazvanie_otdel as "Отделение", Diagnozy. Nazvanie_diagnoza as "Диагноз"

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

WHERE ((Pacienty. Data_postup='Дата поступления1') or (Pacienty. Data_postup>'Дата поступления1')) and

((Pacienty. Data_postup<' Дата поступления2') or

(Pacienty. Data_postup=' Дата поступления2'))

order by Pacienty.data_postup'

5. Вывести общий список пациентов.

SELECT Pacienty. Fio as "Ф.И.О.", Pacienty.data_postup as "Дата поступления", Diagnozy. Nazvanie_diagnoza as "Диагноз",

Otdeleniya. Nazvanie_otdel as "Отделение"

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

Group by Otdeleniya. Nazvanie_otdel, Pacienty. Fio, Pacienty.data_postup, Diagnozy. Nazvanie_diagnoza

По лекарствам:

Вывести список диагнозов по определенному лекарству.

SELECT Diagnozy. Nazvanie_diagnoza as "Диагноз"

FROM Lekarstva INNER JOIN (Diagnozy INNER JOIN diagnoz_lekar ON Diagnozy. Kod_diagnoza=diagnoz_lekar.kod_diag) ON

Lekarstva. Kod_lekarstva=diagnoz_lekar.kod_lek

WHERE Lekarstva. Naim_lekarstva='Лекарство’

 

 




Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-07-29 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: