Информационная система для предметной области “Поликлиника”
Содержание
Введение……………….……………………………………… 1 Информационная система для предметной области “Поликлиника” …..... 1.1 Анализ предметной области…………… 1.2 Анализ информационных задач……… 1.3 Выработка требований и ограничений ………………………………… 1.4 Проектирование базы данных …………………….……………………. 1.5 Программная реализация проекта базы данных ………………………. 1.6 Триггеры………………………………………………………… 1.7 Запросы ……..……………………………………………… 1.8 Представления…………………………………………… Заключение…………………………………………………… Список использованных источников………………………………..…..…… Приложение А Текст программы создания базы данных....……….………... Приложение Б Диаграмма базы данных……………………………………... Приложение В Ввод тестовых данных...…………………………………….. Приложение Г Программная реализация триггеров..……………………….. Приложение Д Программная реализация запросов……...…………………. Приложение Е Программная реализация представлений и запросов к ним Приложение Ж Интерфейс для работы с информационной системой……..
|
5 7 7 8 9 10 15 16 18 19 20 21 22 27 29 38 44 52 56 |
Введение
SQL символизирует собой структурированный язык запросов. Это язык, который дает возможность создавать и работать в реляционных базах данных, которые являются наборами связанной информации сохраняемой в таблицах.
Мир БД становится все более и более единым, что привело к необходимости создания стандартного языка, который мог бы использоваться для функционирования в большом количестве различных видов компьютерных сред. Стандартный язык позволит пользователям, знающим один набор команд, использовать их, чтобы создавать, отыскивать, изменять, и передавать информацию, независимо от того, работают ли они на персональном компьютере, сетевой рабочей станции, или на универсальной ЭВМ.
В нашем все более и
более взаимосвязанном
Элегантность и независимость от специфики компьютерных технологий, а также его поддержка лидерами промышленности в области технологии реляционных БД, сделало SQL, и вероятно в течение обозримого будущего оставит его, основным стандартным языком. По этой причине, любой, кто хочет работать с БД должен знать SQL.
Стандарт SQL определяется ANSI (Американским
Национальным Институтом Стандартов).
Однако большинство коммерческих программ
БД расширяют SQL без уведомления ANSI, добавляя
разные другие особенности в этот язык,
которые, как они считают, будут весьма
полезны.
Иногда они несколько нарушают стандарт
языка, хотя хорошие идеи имеют тенденцию
развиваться и вскоре становиться стандартами
"рынка" сами по себе в силу полезности
своих качеств.
ЧТО ТАКОЕ - РЕЛЯЦИОННАЯ БД?
Реляционная БД - это тело связанной информации, сохраняемой в двухмерных таблицах. Напоминает адресную или телефонную книгу.
В книге имеется большое
количество входов, каждый из которых
соответствует определенной особенности.
Для каждой такой особенности, может
быть несколько независимых
Однако реляционные БД редко состоят из одной таблицы. Такая таблица меньше, чем файловая система. Создав несколько таблиц взаимосвязанной информации, вы сможете выполнить более сложные и мощные операции с вашими данными. Мощность БД зависит от связи, которую вы можете создать между фрагментами информации, а не от самого фрагмента информации. [1]
1 Информационная система для предметной области «Поликлиника»
- Анализ предметной области
Поликлиника – медицинское учреждение, осуществляющее внебольничное лечебно-профилактическое обслуживание населения. В данном случае имеется несколько поликлиник, которые располагаются по определенным адресам и имеют свои номера. В поликлинике есть заведующий, врачи разных специализаций, медсестры. В данной поликлинике ведется прием пациентов по записи, по направлению от врача. Записаться можно на определенное время к интересующему врачу. БД должна содержать данные о медицинском персонале поликлиники, пациентах, времени и дате приема.
Выделим следующие базовые сущности этой предметной области:
Мед.персонал. Атрибуты – номер персонала, ФИО, домашний адрес, дата рождения, номер диплома, зарплата, номер должности, номер специалиста.
Запись. Атрибуты – номер записи, номер специалиста, время приема, номер поликлиники, номер персонала, номер вида приема, номер полиса.
Пациент. Атрибуты – номер полиса, ФИО, домашний адрес, дата рождения, паспортные данные.
Поликлиника. Атрибуты – номер поликлиники, адрес.
Кроме того, можно выделить следующие сущности:
Должность. Атрибуты – номер должности, название, средняя зарплата.
Специалист. Атрибуты – номер специалиста, название специалиста.
Вид приема. Атрибуты – номер, название.
1.2 Анализ информационных задач и круга пользователей системы
Разрабатываемая информационная система создаётся для обслуживания следующих групп пользователей:
- заведующий;
- врачи - специалисты;
- медицинский персонал, который осуществляет запись на прием.
Функциональные возможности:
- ведение базы данных (запись, чтение, модификация, удаление);
- обеспечение логической непротиворечивости БД;
- реализация наиболее часто встречающихся запросов в готовом виде;
- предоставление возможности пользователю осуществлять разработанные запрос на языке SQL;
- предоставление возможности защиты таблиц от внесения некорректного изменения с помощью реализации триггеров;
- предоставление возможности сформировать представление на языке SQL.
Выработка требований и ограничений
Ограничения - это часть определений таблицы, которое ограничивает значения, которые можно вводить в столбцы.
- Строки могут содержать любые символы, но ограничены по длине. Максимальный размер – 35 символов.
- Значения всех числовых атрибутов – больше 0 (или null, если атрибут необязателен).
- Некоторые числовые значения имеют более высокий предел ограничения: например, паспортные данные – до 9999999999, так как состоят из 10 знаков; номер полиса – до 999999; номер диплома – до 999999; зарплата – до 999999.
1.4 Проектирование базы данных
Разработанная структура базы данных может быть представлена в следующем виде:
Сущность «Корпус» (Korpus)
Имя столбца |
Содержательное описание |
Тип данных |
Размерность |
ОДЗ |
Возможность Null |
Роль |
Пример |
Number_ korpusa |
№ поликлиники |
int |
6 |
[0..9] |
нет |
PrimaryKey |
1 |
Adress |
Адрес |
varchar (30) |
30 |
[А..Я, а..я] [0..9] |
нет |
Attribute |
Кирова 45 |
Сущность «Пациент» (Pacient)
Имя столбца |
Содержательное описание |
Тип данных |
Размерность |
ОДЗ |
Возможность Null |
Роль |
Пример |
Number_ polisa |
№ полиса |
int |
6 |
[0..9] |
нет |
PrimaryKey |
123456 |
Dom_adress |
домашний адрес |
varchar (30) |
30 |
[А..Я, а..я] [0..9] |
нет |
Attribute |
Кирова 45 |
God_ rogdenia |
год рождения |
varchar (10) |
10 |
[0..9] |
нет |
Attribute |
11.11.1987 |
Pasport_dan |
паспортные данные |
int |
10 |
[0..9] |
нет |
Attribute |
5607123456 |
FIO |
ФИО |
varchar (35) |
35 |
[А..Я, а..я] |
нет |
Attribute |
Иванов Иван Иванович |
Сущность «Должность» (Dolgnost)
Имя столбца |
Содержательное описание |
Тип данных |
Размерность |
ОДЗ |
Возможность Null |
Роль |
Пример |
Number_ dolgnosti |
№ должности |
int |
6 |
[0..9] |
нет |
PrimaryKey |
1 |
Name |
название должности |
varchar (15) |
15 |
[А..Я, а..я] |
нет |
Attribute |
окулист |
Sred_ZP |
Средняя зарплата |
int |
5 |
[0..9] |
нет |
Attribute |
6000 |
Сущность «Запись» (Zapis)
Имя столбца |
Содержательное описание |
Тип данных |
Размерность |
ОДЗ |
Возможность Null |
Роль |
Пример |
Number_ zapisi |
№ записи |
int |
6 |
[0..9] |
нет |
PrimaryKey |
1 |
Number_ korpusa |
№ поликлиники |
int |
6 |
[0..9] |
нет |
ForeignKey |
1 |
Vremja_ priema |
время приема |
varchar (18) |
18 |
[0..9] |
нет |
Attribute |
14.09.08 14:20 |
Number_ specialista |
№ специалиста |
int |
6 |
[0..9] |
нет |
Attribute |
1 |
Number_ polisa |
№ полиса |
int |
6 |
[0..9] |
нет |
ForeignKey |
123456 |
Number_ personala |
№ персонала |
int |
6 |
[0..9] |
нет |
ForeignKey |
1 |
Number |
№ вида приема |
int |
6 |
[0..9] |
нет |
ForeignKey |
1 |
Сущность «Мед. персонал» (Med_personal)
Имя столбца |
Содержательное описание |
Тип данных |
Размерность |
ОДЗ |
Возможность Null |
Роль |
Пример |
Number_ personala |
№ персонала |
int |
6 |
[0..9] |
нет |
PrimaryKey |
1 |
Number_ diploma |
№ диплома |
int |
6 |
[0..9] |
нет |
Attribute |
123456 |
FIO_ personala |
ФИО персонала |
varchar (30) |
30 |
[А..Я, а..я] |
нет |
Attribute |
Иванов Иван Иванович |
DomАdress |
домашний адрес |
varchar (35) |
35 |
[А..Я, а..я] [0..9] |
нет |
Attribute |
Кирова 45 |
Data_ rogdenia |
дата рождения |
varchar (10) |
10 |
[0..9] |
нет |
Attribute |
11.11.1987 |
ZP |
Зарплата |
int |
5 |
[0..9] |
нет |
Attribute |
6000 |
Number_ dolgnosti |
№ должности |
int |
6 |
[0..9] |
нет |
ForeignKey |
1 |
Number_ specialista |
№ специалиста |
int |
6 |
[0..9] |
нет |
ForeignKey |
1 |
Сущность «Вид приема» (Vid_priema)
Имя столбца |
Содержательное описание |
Тип данных |
Размерность |
ОДЗ |
Возможность Null |
Роль |
Пример |
Number |
№ приема |
int |
6 |
[0..9] |
нет |
PrimaryKey |
1 |
Name_ priema |
название приема |
varchar (20) |
20 |
[0..9] |
нет |
Attribute |
по записи |
Сущность «Специалист» (Specialist)
Имя столбца |
Содержательное описание |
Тип данных |
Размерность |
ОДЗ |
Возможность Null |
Роль |
Пример |
Number_ specialista |
№ специалиста |
int |
6 |
[0..9] |
нет |
PrimaryKey |
1 |
Name_ specialista |
название специалиста |
varchar (20) |
20 |
[0..9] |
нет |
Attribute |
Окулист |
1.5 Программная реализация проекта базы данных
На данном этапе использовались следующие операторы:
- CREATE DATABASE – создание базы данных;
- CREATE TABLE – создание таблицы;
- INSERT INTO TABLE– заполнение таблицы;
- CREАTE TRIGGER – создание триггера;
- CREATE VIEW – создание представления
Текст программы создания базы данных приведен в приложении А.
Для спроектированной базы данных построена диаграмма, которая приведена в приложении Б.
Текст программы ввода текстовых данных приведен в приложении В.
1.6 Триггеры
Триггер – это предварительно определенные действия или последовательность действий, автоматически осуществляемые при выполнении операций удаления, обновления, добавления.
Компоненты триггера:
- ограничения, для реализации которых создается триггер;
- событие, которое характеризует возникновение ситуации, требующей проверки ограничений;
- предусмотренное действие, которое осуществляется за счет выполнения процедуры или последовательности процедур, с помощью которых реализуется логика, требуемая для реализации ограничений.
Типы триггеров:
- INSERT – определяет действия, которые будут производиться после добавления записей в таблицу;
- UPDATE – определяет действия, которые будут производиться после обновления записей в таблице;
- DELETE – определяет действия, которые будут производиться после удаления записей из таблицы.
Преимущества использования триггеров:
- триггер всегда выполняется при реализации действий:
- при необходимости триггер можно менять централизовано, непосредственно в базе данных;
- система обработки данных, использующая триггер, обладает лучшей переносимостью в архитектуру «клиент – сервер».
В курсовой работе разработаны следующие триггеры:
- триггер Proverka_ZP, осуществляющий проверку зарплаты;
2) триггер Priem, осуществляющий проверку наличия записи к какому-либо специалисту на определенное время;
3) триггер Proverka_vozrasta_
Программная реализация триггеров приведена в приложении Г.
1.7 Запросы
Запрос - команда, которая задается программе БД, и которая сообщает ей, чтобы она вывела определенную информацию из таблиц в память. Эта информация обычно посылается непосредственно на экран компьютера.
Запросы выполняются с помощью команды select. В общем случае, команда SELECT начинается с ключевого слова SELECT, сопровождаемого пробелом. После этого должен следовать список имен столбцов, которые вы хотите видеть, отделяемые запятыми. Если вы хотите видеть все столбцы таблицы, вы можете заменить этот список звездочкой (*). Ключевое слово FROM следующее далее, сопровождается пробелом и именем таблицы, к которой делается запрос. В заключение, точка с запятой ( ; ) должна использоваться, чтобы закончить запрос и указать что команда готова к выполнению. [1]
Список запросов:
- Вывести весь мед. персонал;
- Вывести всех пациентов, старше 30 лет;
- Вывести всех врачей – окулистов, старше 40 лет и работающих в поликлиники № 2;
- Вывести пациентов, которые записаны на 15.05.2008 на прием к хирургу;
- Вывести мед.персонал с соответствующими должностями;
- Вывести мед.персонал с зарплатой выше средней;
- Вывести пациентов, которые записаны на прием к врачу Петрову П.П.;
- Вывести количество мед. персонала, который получает зарплату выше средней и среднее значение зарплаты;
- Вывести все записи приема по направлению;
- По фамилии врача определить фамилии его пациентов
Программная реализация запросов приведена в приложении Д.
1.8 Представления
Представления – это таблицы, чье содержание выбирается или получается из других таблиц. Они работают в запросах точно также как и основные таблицы, но не содержат никаких собственных данных. Представления - подобны окнам, через которые просматривается информация (как она есть, или в другой форме), которая фактически хранится в базовой таблице. Представление - это фактически запрос, который выполняется всякий раз, когда представление становится темой команды. Вывод запроса при этом в каждый момент становится содержанием представления. [2]
В курсовой работе были разработаны следующие представления:
- представление, содержащее информацию о медицинском персонале, выбранную из одной таблицы;
- представление, которое считает количество записей к определенному врачу;
- представление, содержащее информацию о медицинском персонале, основанное на нескольких таблицах.
К представлениям разработаны следующие запросы:
- выбрать сотрудников, которые работают медсестрами;
- выбрать сотрудников, у которых зарплата ниже средней.
Программная реализация представлений и запросов к ним приведена в приложении Е.
Заключение
В ходе курсового проектирования создана информационная система для предметной области “Поликлиника”. В ходе выполнения курсовой работы были разработаны 7 таблиц, 10 запросов к ним, 3 триггера, 3 представления и 2 запроса к ним.
В курсовой работе были выполнены анализ предметной области, информационных задач и круга пользователей системы, проектирование и программная реализация базы данных.
Список использованных источников
- Мартин Грабер. Понимание SQL (электронный учебник)
- Т. Конноли, К. Берг, А Страчан. Базы данных: проектирование, реализация и сопровождение. Теория и практика. – СПб.: Вильямс, 2003г., 1440 с.
ПРОГРАММА СОЗДАНИЯ БАЗЫ ДАННЫХ
Приложение А
(обязательное)
Удаление уже существующей базы
IF EXISTS (SELECT *
FROM master..sysdatabases
WHERE name = N'Poliklinika')
DROP DATABASE Poliklinika
GO
Создание новой базы
CREATE DATABASE Poliklinika
GO
Создание таблицы «Вид приема»
Create Table Vid_Priema
(
Number int
check (Number>0 and Number<=10)
primary key,
Name_priema varchar(20) not null
)
Создание таблицы «Специалист»
Create Table Specialist
(
Number_specialista int
check (Number_specialista>0 and Number_specialista<=12)
primary key,
Name_specialista varchar(20) not null
)
Создание таблицы «Должность»
Create Table Dolgnost
(
Number_dolgnosti int
check (Number_dolgnosti>0 and Number_dolgnosti<=20)
primary key,
Name varchar(20) not null,
Sred_ZP int
check (Sred_ZP>0 and Sred_ZP <=99999) not null
)
Создание таблицы «Корпус»
Create Table Korpus
(
Number_korpusa int
check (Number_korpusa>0 and Number_korpusa<=10)
primary key,
Adress varchar(30) not null
)
Создание таблицы «Пациент»
Create Table Pacient
(
Number_polisa int
check (Number_polisa>0 and Number_polisa<=999999)
primary key,
FIO varchar(35) not null,
Pasport_dan Bigint
check (Pasport_dan>0 and Pasport_dan<=9999999999) not null,
Dom_adress varchar(30) not null,
God_rogdenia varchar(10) not null
)
Создание таблицы «Медицинский персонал»
Create Table Med_personal
(
Number_personala int
check (Number_personala>0 and Number_personala<=100)
primary key,
Number_diploma int
check (Number_diploma>0 and Number_diploma<=999999) not null,
FIO_personala varchar(30) not null,
Dom_Adress varchar(35) not null,
Data_rogdenia varchar(10) not null,
ZP int
check (ZP>0 and ZP<=99999) not null,
Number_dolgnosti int
foreign key (Number_dolgnosti) references Dolgnost (Number_dolgnosti) not null,
Number_specialista int
foreign key (Number_specialista) references Specialist (Number_specialista) not null
)
Создание таблицы «Запись»
Create Table Zapis
(
Number_zapisi int
check (Number_zapisi>0 and Number_zapisi<=100)
primary key,
Vremja_priema varchar(18) not null,
Number_specialista int
check (Number_specialista>0 and Number_specialista<=100) not null,
Number_polisa int
foreign key (Number_polisa) references Pacient (Number_polisa) not null,
Number_personala int
foreign key (Number_personala) references Med_personal (Number_personala) not null,
Number int
foreign key (Number) references Vid_priema (Number) not null,
Number_korpusa int
foreign key (Number_korpusa) references Korpus (Number_korpusa) not null
)
ДИАГРАММА БАЗЫ ДАННЫХ
Приложение Б
(обязательное)
ВВОД ТЕСТОВЫХ ДАННЫХ
Приложение В
(обязательное)

- Информационная система для туристического агентства
- Информационная система идентификации изображений
- Информационная система «Инструментальный цех»
- Информационная система интернет бара
- Информационная система «ИП Грамович Н.В.»
- Информационная система ИП Грамович Н.В.
- Информационная система кадрового агентства
- Информационная система государственного управления
- Информационная система государственного управления и необходимость её совершенствования ия
- Информационная система ДЕКАНАТ для автоматизации работы деканата факультета вуза
- Информационная система «Детское питание»
- Информационная система для авиапредприятия
- Информационная система для интернет – магазина компьютерных товаров
- Информационная система для лечебного учреждения