Разработка БД “Больницы города”

Автор работы: Пользователь скрыл имя, 31 Октября 2013 в 19:10, курсовая работа

Описание работы

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

Файлы: 1 файл

Курсовой_Ч.doc

— 733.00 Кб (Скачать файл)

Oracle Database XE построена на основе кода Oracle Database 10g Release 2 и предоставляет полный набор интерфейсов программирования приложений (API) для разработчиков приложений. На платформе Red Hat Enterprise Linux она включает в себя Oracle Call Interface для C и C++, ODBC, PHP, JDBC и другие.

 

 

4.5 Обоснование выбора СУБД

 

Наша база данных разрабатывается  локального использования. Ключевую роль играет стоимость программного продукта. База данных не должна поддерживать технологию клиент-серверных приложений. Будущий программный продукт должен быть понятен пользователю с любым уровнем подготовки.

Исходя из этих условий, была выбрана  СУБД Access. Она позволяет без знания языка программирования создавать базу данных, что делает её разработку дешевой.

Единственным минусом  в СУБД Access является привязка к Microsoft Office. Но на данный момент это не является большой проблемой, так как Microsoft Office установлен практически на всех компьютерах.

 

 

5 ПРОГРАММНАЯ РЕАЛИЗАЦИЯ СУБД

 

5.1 Описание таблиц

 

В таблице «Больница» хранится информация обо всех больницах, расположенных в городе. Таблица «Больница» приведена на рисунке 5.1.

 

 

Рисунок 5.1 – Таблица «Больница»

 

Рассмотрим поля таблицы  «Больница».

Поле «КБ» - содержит код больницы, имеет тип «счетчик», является ключевым.

Поле «№» - содержит номер больницы, имеет тип «числовой», размер «байт», обязательное. Совпадения номеров больниц в пределах города не допускаются.

Поле «Адрес» - содержит адрес больницы, имеет тип «текстовый», размер 25 символов, обязательное.

Поле «ФИО глав врача» - содержит Ф.И.О. главного врача больницы. Имеет тип «текстовый», размер 20 символов, обязательное.

Поле «Дата открытия» - содержит дату открытия больницы, имеет тип «дата/время», формат поля «краткий формат даты», обязательное. Значение по умолчанию Date(), условие на значение <= Date(), если введено неверное значение, то выводится сообщение об ошибке «Дата указана неверно».

Поле «Профиль» - предназначено для выбора профиля больницы, тип «числовой», обязательное поле, подстановка из таблицы «Профиль больницы», связь с полем «КП» таблицы «Профиль больницы», отображается поле «Название профиля» таблицы «Профиль больницы».

Поле «Тип» - предназначено для выбора типа больницы, тип «числовой», обязательное поле, подстановка из таблицы «Тип больницы», связь с полем «КТ» таблицы «Тип больницы», отображается поле «Название типа» таблицы «Тип больницы».

В таблице «Должность» хранится список всех должностей, которые могут занимать медработники в больницах города. Таблица «Должность» приведена на рисунке 5.2.

Таблица «Должность» содержит только два поля.

Поле «КД» - код должности, тип «счетчик», ключевое поле, совпадения не допускаются.

Поле «Название должности» - название должности, тип «текстовый», размер 20 символов, обязательное, совпадения не допускаются.

 

 

Рисунок 5.2 – Таблица «Должность»

 

В таблице «Категория» хранится список всех возможных категорий медработников. Таблица «Категория» приведена на рисунке 5.3.

 

 

Рисунок 5.3 – Таблица «Категория»

 

Описание полей таблицы  приведено ниже.

Поле «КК» - код категории, тип «счетчик», ключевое поле, совпадения не допускаются.

Поле «Название категории» - название категории, тип «текстовый», размер 6 символов, обязательное, совпадения не допускаются.

В таблице «Медработник» хранится информация обо всех медработниках больниц города. Таблица «Медработник» приведена на рисунке 5.4.

Рассмотрим поля таблицы  «Медработник».

Поле «КР» - код работника, тип «счетчик», ключевое поле, совпадения не допускаются.

Поле «ФИО» - фамилия, имя, отчество медработника, тип «текстовый», размер 20 символов, обязательное.

Поле «Оклад» - месячный оклад каждого работника, тип  «денежный», формат поля #,00"  грн.", обязательное.

Поле «Начало работы» - дата вступления работника на занимаемую должность, тип «дата/время», формат поля «краткий формат даты», обязательное. Значение по умолчанию Date(), условие на значение <= Date(), если введено неверное значение, то выводится сообщение об ошибке «Дата указана неверно».

Поле «Должность» - предназначено  для выбора должности, занимаемой медработником, тип «числовой», обязательное поле, подстановка из таблицы «Должность», связь с полем «КД» таблицы «Должность», отображается поле «Название должности» таблицы «Должность».

Поле «Категория» - предназначено  для выбора категории работника, тип «числовой», обязательное поле, подстановка из таблицы «Категория», связь с полем «КК» таблицы «Категория», отображается поле «Название категории» таблицы «Категория».

Поле «Отделение» - предназначено  для выбора отделения больницы, в  котором работает медработник, тип  «числовой», обязательное поле, подстановка из таблицы «Отделения больницы», связь с полем «КОБ» таблицы «Отделения больницы», отображается конкатенация полей «Больница» и «Отделение» таблицы «Отделения больницы».

Поле «Специализация» - предназначено для выбора специализации работника, тип «числовой», обязательное поле, подстановка из таблицы «Специализация», связь с полем «КС» таблицы «Специализация», отображается поле «Название специализации» таблицы «Специализация».

 

 

Рисунок 5.4 – Таблица «Медработник»

 

Таблица «Отделение» содержит названия всех возможных отделений больниц города. Таблица «Отделение» приведена на рисунке 5.5.

Описание полей таблицы  приведено ниже.

Поле «КО» - код отделения, тип «счетчик», ключевое поле, совпадения не допускаются.

Поле «Название отделения» - название отделения, тип «текстовый», размер 20 символов, обязательное, совпадения не допускаются.

 

 

Рисунок 5.5 – Таблица «Отделение»

 

Таблица «Отделения больниц» содержит информацию об отделениях больниц города. Таблица «Отделения больниц» приведена на рисунке 5.6.

 

 

Рисунок 5.6 – Таблица «Отделения больниц»

 

Описание полей таблицы  приведено ниже.

Поле «КОБ» - код отделения больницы, тип «счетчик», ключевое поле, совпадения не допускаются.

Поле «Отделение» - предназначено для выбора названия отделения, тип «числовой», обязательное поле, подстановка из таблицы «Отделение», связь с полем «КО» таблицы «Отделение», отображается поле «Название отделения» таблицы «Отделение».

Поле «Больница» - предназначено для выбора больницы, тип «числовой», обязательное поле, подстановка из таблицы «Больница», связь с полем «КБ» таблицы «Больница», отображается поле «№» таблицы «Больница».

Поле «Число койко-мест» - количество койко-мест в отделении  больницы, тип «числовой», размер «байт», обязательное, условие на значение <150.

Таблица «Профиль больницы» содержит список возможных профилей больниц. Таблица «Профиль больницы» приведена на  рисунке 5.7.

 

 

Рисунок 5.7 – Таблица «Профиль больницы»

 

Описание полей таблицы  приведено ниже.

Поле «КП» - код профиля, тип «счетчик», ключевое поле, совпадения не допускаются.

Поле «Название профиля» - название профиля, тип «текстовый», размер 20 символов, обязательное, совпадения не допускаются.

Таблица «Специализация» содержит перечень специализаций, которые могут иметь медработники. Таблица «Специализация» приведена на  рисунке 5.8.

 

 

Рисунок 5.8 – Таблица «Специализация»

Описание полей таблицы  приведено ниже.

Поле «КС» - код специализации, тип «счетчик», ключевое поле, совпадения не допускаются.

Поле «Название специализации» - название специализации, тип «текстовый», размер 20 символов, обязательное, совпадения не допускаются.

Таблица «Тип больницы» служит для хранения списка всех возможных типов больниц. Таблица «Тип больницы» приведена на  рисунке 5.9.

 

 

Рисунок 5.9 – Таблица «Тип больницы»

 

Описание полей таблицы  приведено ниже.

Поле «КТ» - код типа, тип «счетчик», ключевое поле, совпадения не допускаются.

Поле «Название типа» - название типа, тип «текстовый», размер 20 символов, обязательное, совпадения не допускаются.

Таблица «Архив работников» предназначена для хранения данных о медработниках, которые больше не работают ни в одном из отделений больниц. Таблица «Архив работников» приведена на  рисунке 5.10.

 

 

Рисунок 5.10 – Таблица «Архив работников»

 

Поля таблицы «Архив работников» идентичны полям таблицы «Медработники», за исключением поля «Дата увольнения». Поле «Дата увольнения» содержит дату увольнения медработника (дату перенесения записи в архив), имеет тип «дата/время», формат поля «краткий формат даты». По умолчанию значением поля является текущая дата.

 

 

5.2 Описание реализованных  запросов к БД

 

Запрос — это объект базы данных, который служит для  извлечения данных из таблиц и предоставления их пользователю в удобном виде. Применение запросов позволяет избежать дублирования данных в таблицах и обеспечивает максимальную гибкость при поиске и отображении данных в базе данных.

Рассмотрим запросы, реализованные  для заданной предметной области.

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

На языке SQL такой запрос имеет вид:

SELECT Медработник.ФИО, Медработник.Должность, Медработник.Оклад, Отделение.[Название отделения]

FROM (Отделение INNER JOIN (Больница INNER JOIN [Отделения больниц] ON Больница.КБ = [Отделения больниц].Больница) ON Отделение.КО = [Отделения больниц].Отделение) INNER JOIN Медработник ON [Отделения больниц].КОБ = Медработник.Отделение

WHERE (((Больница.№)=[№ Больницы])).

Результат работы данного  запроса для больницы №1 представлен на рисунке 5.11.

 

 

 

Рисунок 5.11 – Результат работы запроса работников больницы

 

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

Вид запроса на SQL представлен ниже.

SELECT [Отделения больниц].Больница, Avg(Медработник.Оклад) AS [Средний оклад]

FROM [Отделения больниц] INNER JOIN Медработник ON [Отделения больниц].КОБ = Медработник.Отделение

GROUP BY [Отделения больниц].Больница.

Результат работы данного запроса представлен на рисунке 5.12.

 

 

Рисунок 5.12 – Результат работы среднего оклада в больницах

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

Вид запроса на SQL представлен ниже.

SELECT Должность.[Название  должности]

FROM Должность LEFT JOIN Медработник ON Должность.КД = Медработник.Должность

WHERE (((Медработник.Должность) Is Null));

Результат работы данного  запроса представлен на рисунке 5.13.

 

 

Рисунок 5.13 – Результат работы запроса невостребованных должностей

 

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

На языке SQL такой запрос имеет вид:

DELETE Должность.[Название должности]

FROM Должность

WHERE (((Должность.[Название должности])=[Удаляемая должность]));

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

Вид запроса на SQL представлен ниже.

DELETE Медработник.*

FROM (Больница INNER JOIN [Отделения  больниц] ON Больница.КБ = [Отделения  больниц].Больница) INNER JOIN Медработник ON [Отделения больниц].КОБ = Медработник.Отделение

WHERE (((Больница.№)=[№ больницы]));

При увольнении медработника может возникнуть необходимость в архивации информации о нем. Для хранения информации о таких медработниках существует таблица «Архив работников». Организуем запрос, добавляющий информацию о заданном медработнике в архив.

Информация о работе Разработка БД “Больницы города”