Информационная система для предметной области “Поликлиника”

Содержание

 

Введение……………….………………………………………………………...

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. Анализ предметной области

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

 

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

 

Мед.персонал. Атрибуты – номер персонала, ФИО, домашний адрес, дата рождения, номер диплома, зарплата, номер должности, номер специалиста.

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

Пациент. Атрибуты – номер полиса, ФИО, домашний адрес, дата рождения, паспортные данные.

Поликлиника. Атрибуты – номер поликлиники, адрес.

 

Кроме того, можно выделить следующие  сущности:

 

Должность. Атрибуты – номер должности, название, средняя зарплата.

Специалист. Атрибуты – номер специалиста, название специалиста.

Вид приема. Атрибуты – номер, название.

 

 

 

 

 

1.2   Анализ информационных задач и круга пользователей системы

 

Разрабатываемая информационная система создаётся для обслуживания следующих групп пользователей:

  1. заведующий;
  2. врачи - специалисты;
  3. медицинский персонал, который осуществляет запись на прием.

Функциональные  возможности:

  1. ведение базы данных (запись, чтение, модификация, удаление);
  2. обеспечение логической непротиворечивости БД;
  3. реализация наиболее часто встречающихся запросов в готовом виде;
  4. предоставление возможности пользователю  осуществлять разработанные запрос на языке SQL;
  5. предоставление возможности защиты таблиц от внесения  некорректного изменения с помощью реализации триггеров;
  6. предоставление возможности сформировать представление на языке SQL.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

    1.    Выработка требований и ограничений

 

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

  1. Строки могут содержать любые символы, но ограничены по длине. Максимальный размер – 35 символов.
  2. Значения всех числовых атрибутов – больше 0 (или null, если атрибут    необязателен).
  3. Некоторые числовые значения имеют более высокий предел ограничения: например, паспортные данные – до 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   Программная реализация проекта базы данных

На данном этапе использовались следующие операторы:

  1. CREATE DATABASE – создание базы данных;
  2. CREATE TABLE – создание таблицы;
  3. INSERT  INTO TABLE– заполнение таблицы;
  4. CREАTE TRIGGER – создание триггера;
  5. CREATE VIEW – создание представления

Текст программы создания базы данных приведен в приложении А.

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

Текст программы ввода текстовых  данных  приведен в приложении В.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1.6   Триггеры

Триггер – это предварительно определенные действия или последовательность действий, автоматически осуществляемые при  выполнении операций удаления, обновления, добавления.

Компоненты триггера:

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

Типы триггеров:

  1. INSERT – определяет действия, которые будут производиться после добавления записей в таблицу;
  2. UPDATE – определяет действия, которые будут производиться после обновления записей в таблице;
  3. DELETE – определяет действия, которые будут производиться после удаления записей из таблицы.

Преимущества  использования триггеров:

  1. триггер всегда выполняется при реализации действий:
  2. при необходимости триггер можно менять централизовано, непосредственно в базе данных;
  3. система обработки данных, использующая триггер, обладает лучшей переносимостью в архитектуру «клиент – сервер».

 

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

  1. триггер Proverka_ZP, осуществляющий проверку зарплаты;

2) триггер Priem, осуществляющий проверку наличия записи к какому-либо специалисту на определенное время;

3) триггер Proverka_vozrasta_sotrudnika, срабатывающий при добавлении сотрудника в базу.

Программная реализация триггеров приведена в приложении Г.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1.7   Запросы

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

Запросы выполняются с помощью  команды select. В общем случае, команда SELECT начинается с ключевого слова SELECT, сопровождаемого пробелом. После этого должен следовать список имен столбцов, которые вы хотите видеть, отделяемые запятыми. Если вы хотите видеть все столбцы таблицы, вы можете заменить этот список звездочкой (*). Ключевое слово FROM следующее далее, сопровождается пробелом и именем таблицы, к которой делается запрос. В заключение, точка с запятой ( ; ) должна использоваться, чтобы закончить запрос и указать что команда готова к выполнению. [1]

Список запросов:

  1. Вывести весь мед. персонал;
  2. Вывести всех пациентов, старше 30 лет;
  3. Вывести всех врачей – окулистов, старше 40 лет и работающих в поликлиники № 2;
  4. Вывести пациентов, которые записаны на 15.05.2008 на прием к хирургу;
  5. Вывести мед.персонал с соответствующими должностями;
  6. Вывести мед.персонал  с зарплатой выше средней;
  7. Вывести пациентов, которые записаны на прием к врачу Петрову П.П.;
  8. Вывести количество мед. персонала, который получает зарплату выше средней и среднее значение зарплаты;
  9. Вывести все записи приема по направлению;
  10. По фамилии врача определить фамилии его пациентов 

Программная реализация запросов приведена  в приложении Д.

 

 

 

1.8   Представления

Представления –  это таблицы, чье содержание выбирается или получается из других таблиц. Они работают в запросах точно также как и основные таблицы, но не содержат никаких собственных данных. Представления - подобны окнам, через которые просматривается информация (как она есть, или в другой форме), которая фактически хранится в базовой таблице. Представление - это фактически запрос, который выполняется всякий раз, когда представление становится темой команды. Вывод запроса при этом в каждый момент становится содержанием представления. [2]

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

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

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

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

Программная реализация представлений  и запросов к ним приведена  в приложении Е.

 

 

 

 

 

 

 

 

 

Заключение

В ходе курсового проектирования создана информационная система для предметной области “Поликлиника”. В ходе выполнения курсовой работы были разработаны 7 таблиц, 10 запросов к ним, 3 триггера, 3 представления и 2 запроса к ним.

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Список  использованных источников

 

  1. Мартин Грабер. Понимание  SQL (электронный учебник)
  2. Т. Конноли, К. Берг, А Страчан. Базы данных: проектирование, реализация и сопровождение. Теория и практика. – СПб.: Вильямс, 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

)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ДИАГРАММА БАЗЫ ДАННЫХ

Приложение Б

(обязательное)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ВВОД ТЕСТОВЫХ ДАННЫХ

Приложение В

(обязательное)

 

Информационная система для предметной области “Поликлиника”