Автор работы: Пользователь скрыл имя, 11 Января 2013 в 15:48, курсовая работа
Целью выполнения курсового проекта является приобретение студентами практических навыков проектирования баз данных и разработки программного обеспечения по управлению базами данных с использованием СУБД. В ходе выполнения данного курсового проекта необходимо разработать информационную базу данных для больницы, которая поможет любому пользователю легко найти нужную информацию о любом сотруднике или пациенте.
В задачи курсового проекта входят:
1. Разработка структуры баз данных.
2. Работа с несколькими таблицами и установление взаимосвязей между таблицами.
3. Разработка системы меню.
4. Разработка и формирование отчетов.
5. Использование расширенных средств СУБД ввода и вывода данных.
6. Организация справочной системы.
Введение
1. Постановка задачи
2. Обоснование выбора СУБД и программного обеспечения
3. Структура базы данных
3.1 Концептуальная модель данных
3.2 Логическая модель данных
4. Нормализация отношений
5. SQL – запросы
6. Интерфейс системы для работы с базой данных
6.1 Главное окно программы
6.2 Разработка меню
7. Отчеты
Заключение
Список использованной литературы
Содержание
Введение
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.
Рисунок 3.2 – Логическая модель базы данных
В базе данных имеется 9 таблиц. Первая самая главная таблица "Отделения", которая является главной для таблиц "Персонал", "Пациенты" и "Диагнозы", с которыми она связана по полю "Код отделения" и имеет место связь "1-ко многим". В свою очередь таблица "Персонал" является главной для таблицы "Процедуры", которая связана по полю "Код медсестры", связь также "1-ко многим".
Две таблицы "Диагноз-Лекарства"
и "Диагноз-Процедуры" имеют составные
ключи и связаны с двумя
таблицами, по коду диагноза с таблицей
"Диагнозы" и по коду лекарства
и процедуры с таблицами "Лекарства"
и "Процедуры" соответственно. Получилась
связь "многие – ко многим". Такая
связь нужна, для того чтобы можно
было для одного диагноза выбрать
много процедур и лекарств. Соответственно,
для процедур и лекарств могут
соответствовать много
4. Нормализация отношений
Нормализация – это процесс проектирования базы данных с целью исключения аномалий модификаций, избыточности данных и приведения отношений к нормальным формам.
Аномалии модификации – последствия, которые могут возникнуть вследствие изменения отношения (таблицы).
Аномалии устраняются путем разбиения отношения на 2 и более новых отношений. Аномалии делятся на 2 основных вида: аномалия удаления, аномалия вставки.
Можно сказать, что в данном курсовом проекте все таблицы находятся в 1НФ, так как все они удовлетворяют требованиям, необходимым для того, чтобы таблица считалась отношением. Главным образом, это требование атомарности.
Отношение находится во 2НФ, если оно находится в 1НФ и все неключевые атрибуты в отношении зависят только от всего ключа в целом.
Принадлежность к 2НФ всех таблиц, кроме двух таблиц ("Диагноз-Процедуры", "Диагноз-Лекарства"), можно определить по наличию 1 первичного простого ключа, состоящего из одного атрибута. А эти две таблицы состоят только из двух ключевых атрибутов, т.е. первичный ключ является составным. Таким образом, в этих таблицах нет неключевых атрибутов, независящих от всего ключа в целом.
Отношение находится в 3НФ, если отношение находится во 2НФ и не имеет транзитивных зависимостей.
В данном курсовом проекте
все таблицы находятся в 3НФ. Хотя
в начале курсового проекта
Отношение находится в НФБК, если оно находится в 3НФ и каждый детерминант является ключом-кандидатом.
Можно сказать, что во всех таблицах данной базы данных, кроме первичных ключей ключей-кандидатов не наблюдается, поэтому нельзя сказать, что они находятся в НФБК.
В 4НФ таблицы не могут находиться, так как они не находятся в НФБК.
Таким образом, все отношения находятся в 3НФ.
5. 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.
Lekarstva. Kod_lekarstva=diagnoz_lekar.
WHERE Lekarstva. Naim_lekarstva='Лекарство’
6. Интерфейс системы для работы с базой данных
6.1 Главное окно программы
Работа начинается с главного окна программы (рисунок 6.1), где приведены все таблицы в данной базе данных. Это является наиболее удобным, так как предполагается, что данные будут постоянно пополняться.
Рисунок 6.1 – Главное окно программы
Рабочая область состоит из трех вкладок: "Отделения", "Диагнозы", "Информация". На рисунке 6.1 можно увидеть вкладку "Отделения". Здесь содержится информация по отделениям, в частности данные о сотрудниках и пациентах (таблицы расположены в нижней части формы). Таблицы можно редактировать, добавлять новых сотрудников и пациентов, вносить какие-то свои изменения. Таблицу "Отделения" редактировать нельзя, так как количество отделений в больнице постоянное и не меняется.
Следующая вкладка "Диагнозы" приведена на рисунке 6.2.
Рисунок 6.2 – Вкладка "Диагнозы"
Здесь приведена информация непосредственно для врачей, т.е. какие процедуры и лекарства использовать для определенного диагноза. В свою очередь, врач также может дополнить таблицу новыми данными. Он может добавить новый диагноз, процедуры и лекарства, которые применяются для его лечения. Также есть возможность редактирования уже имеющихся данных.