Автор работы: Пользователь скрыл имя, 16 Февраля 2013 в 15:39, курсовая работа
SQL символизирует собой структурированный язык запросов. Это язык, который дает возможность создавать и работать в реляционных базах данных, которые являются наборами связанной информации сохраняемой в таблицах.
Мир БД становится все более и более единым, что привело к необходимости создания стандартного языка, который мог бы использоваться для функционирования в большом количестве различных видов компьютерных сред. Стандартный язык позволит пользователям, знающим один набор команд, использовать их, чтобы создавать, отыскивать, изменять, и передавать информацию, независимо от того, работают ли они на персональном компьютере, сетевой рабочей станции, или на универсальной ЭВМ.
В нашем все более и более взаимосвязанном компьютерном мире, пользователь, снабженный таким языком, имеет огромное преимущество в использов
Введение……………….………………………………………………………...
1 Информационная система для предметной области “Поликлиника” ….....
1.1 Анализ предметной области………………………………………….….
1.2 Анализ информационных задач…………...……….….…………….......
1.3 Выработка требований и ограничений …………………………………
1.4 Проектирование базы данных …………………….…………………….
1.5 Программная реализация проекта базы данных ……………………….
1.6 Триггеры…………………………………………………………………
1.7 Запросы ……..……………………………………………………………
1.8 Представления……………………………………………………………
Заключение…………………………………………………………..………….
Список использованных источников………………………………..…..……
Приложение А Текст программы создания базы данных....……….………...
Приложение Б Диаграмма базы данных……………………………………...
Приложение В Ввод тестовых данных...……………………………………..
Приложение Г Программная реализация триггеров..………………………..
Приложение Д Программная реализация запросов……...………………….
Приложение Е Программная реализация представлений и запросов к ним
Приложение Ж Интерфейс для работы с информационной системой……..
Заполнение таблицы «Вид приема»
INSERT Vid_priema(Number, Name_priema) VALUES (1, 'По записи')
INSERT Vid_priema(Number, Name_priema) VALUES (2, 'По направлению')
Заполнение таблицы «
INSERT Specialist VALUES (1, 'Хирург')
INSERT Specialist VALUES (2, 'Окулист')
INSERT Specialist VALUES (3, 'Невропатолог')
INSERT Specialist VALUES (4, 'Отоларинголог')
INSERT Specialist VALUES (5, 'Терапевт')
INSERT Specialist VALUES (6, 'Дерматолог')
INSERT Specialist VALUES (7, 'Кардиолог')
INSERT Specialist VALUES (8, 'Нефролог')
INSERT Specialist VALUES (9, 'Эндокринолог')
INSERT Specialist VALUES (10, 'Стоматолог')
INSERT Specialist VALUES (11, 'Медсестра')
Заполнение таблицы «Должность»
INSERT Dolgnost VALUES (1, 'Заведующий',16500)
INSERT Dolgnost VALUES (2, 'Врач - специалист',13000)
INSERT Dolgnost VALUES (3, 'Медсестра',6000)
Заполнение таблицы «Корпус»
INSERT Korpus
(Number_korpusa,Adress)VALUES(
INSERT Korpus
(Number_korpusa,Adress)VALUES(
INSERT Korpus
(Number_korpusa,Adress)VALUES(
Заполнение таблицы «Пациент»
INSERT Pacient VALUES(123456, 'Копылова Мария Сергеевна', 5604123456, 'Маркина 12 - 27', '06.07.1988')
INSERT Pacient VALUES(456789, 'Долотов Роман Александрович', 5605174004, 'Краснова 45 - 44', '02.02.1988')
INSERT Pacient VALUES(778900, 'Трушин Иван Александрович', 5600349065, 'Богданова 39 - 100', '20.05.1975')
INSERT Pacient VALUES(897321, 'Иванова Ольга Валерьевна', 5602674809 ,'Коммунистическая 43 - 35', '18.09.1970')
INSERT Pacient VALUES(269056, 'Малютин Игорь Сергеевич', 5605905678, 'Лядова 112 - 67', '27.11.1963')
INSERT Pacient VALUES(652945, 'Жарикова Влада Олеговна', 5607348601, 'Славы 3 - 5','19.04.1982')
INSERT Pacient VALUES(660087, 'Кожевников Кирилл Алексеевич', 5608002576, 'Калинина 110 - 9', '02.03.1949')
INSERT Pacient VALUES(190276, 'Ульянова Вера Анатольевна', 5601778543, 'Кирова 48 - 7', '23.09.1974')
INSERT Pacient VALUES(996411, 'Дарвина Елизавета Ивановна', 5603889904, 'Лобачевского 6 - 54', '01.08.1980')
INSERT Pacient VALUES(450967, 'Закревский Максим Андреевич', 5604530912, 'Одесская 18 - 90', '30.06.1952')
INSERT Pacient VALUES(269056, 'Малютин Игорь Сергеевич', 5605905678, 'Лядова 112 - 67', '27.11.1963')
Заполнение таблицы «
INSERT Med_personal VALUES(1, 563858, 'Панов Александр Алексеевич', 'Краснова 39 - 45', '23.10.1955', 16500, 1, 1)
INSERT Med_personal VALUES(2, 223456, 'Арефьев Николай Иванович', 'Проспект Строителей 15 25', '15.05.1965', 13500, 2, 1)
INSERT Med_personal VALUES(3, 986542, 'Степанова Оксана Сергеевна', 'Глазунова 5 - 190', '05.12.1965', 12000, 2, 2)
INSERT Med_personal VALUES(4, 120987, 'Рязанова Вера Петровна', 'Мира 68 - 36', '04.09.1960', 13800, 2, 2)
INSERT Med_personal VALUES(5, 554432, 'Петров Петр Павлович', 'Ленинградская 19 - 105', '23.10.1960', 12400, 2, 3)
INSERT Med_personal VALUES(6, 986523, 'Пичугин Алексей Николаевич', 'Ватутина 10 - 100', '30.01.1974', 13500, 2, 4)
INSERT Med_personal VALUES(7, 239801, 'Панов Александр Алексеевич', 'Краснова 39 - 45', '23.10.1955', 13000, 2, 4)
INSERT Med_personal VALUES(8, 457890, 'Рыбина Наталья Валерьевна', 'Циалковского 39 - 31', '23.12.1964', 12000, 2, 5)
INSERT Med_personal VALUES(9, 109865, 'Букреев Олег Иванович', 'Тамбовская 18 - 35', '26.02.1969', 13300, 2, 5)
INSERT Med_personal
VALUES(10, 181122, 'Сидорова Екатерина Сергеевна'
INSERT Med_personal VALUES(11, 785522, 'Орлова Евгения Павловна' , 'Володарского 26 - 11', '20.07.19549', 14000, 2, 7)
INSERT Med_personal VALUES(12, 097865, 'Алексеев Роман Дмитриевич', 'Пушкина 18 - 99', '18.08.1972', 14100, 2, 8)
INSERT Med_personal VALUES(13, 348700, 'Мишутин Илья Геннадьевич', 'Суворова 29 - 199', '24.04.1963', 12900, 2, 9)
INSERT Med_personal
VALUES(14, 572366, 'Анашкина Анастасия
INSERT Med_personal VALUES(15, 234567, 'Краснова Ольга Владимировна', 'Лермонтова 23 - 56', '15.12.1984', 6200, 3, 11)
INSERT Med_personal VALUES(16, 674509, 'Захарова Татьяна Юрьевна', 'Чехова 20 - 13', '07.07.1980', 6500, 3, 11)
INSERT Med_personal VALUES(17, 129576, 'Куликова Надежда Ивановна', 'Проспект Строителей 126 - 95', '31.08.1982', 5900, 3, 11)
INSERT Med_personal VALUES(18, 785634, 'Юсупова Светлана Витальевна', 'Суворова 139 - 75', '08.03.1985', 6000, 3, 11)
INSERT Med_personal VALUES(19, 981234, 'Аркадева Александра Владимировна', 'Калинина 139 - 40', '11.10.1985', 5900, 3, 11)
Заполнение таблицы «Запись»
INSERT Zapis
(Number_zapisi,Vremja_priema,
INSERT Zapis
(Number_zapisi,Vremja_priema,
INSERT Zapis
(Number_zapisi,Vremja_priema,
INSERT Zapis
(Number_zapisi,Vremja_priema,
INSERT Zapis
(Number_zapisi,Vremja_priema,
INSERT Zapis
(Number_zapisi,Vremja_priema,
INSERT Zapis
(Number_zapisi,Vremja_priema,
INSERT Zapis
(Number_zapisi,Vremja_priema,
INSERT Zapis
(Number_zapisi,Vremja_priema,
INSERT Zapis
(Number_zapisi,Vremja_priema,
INSERT Zapis
(Number_zapisi,Vremja_priema,
Демонстрация заполненных таблиц:
Таблица «Должность»
Таблица «Корпус»
Таблица «Медицинский персонал»
Таблица «Пациент»
Таблица «Специалист»
Таблица «Вид приема»
Таблица «Запись»
Приложение Г
(обязательное)
create trigger Proverka_ZP
on Med_personal for insert
as
if @@rowcount=1
begin
declare @ZP int, @Dolg int, @d int
select @ZP=ZP, @Dolg=Number_dolgnosti from inserted
select @d=YEAR(Right(Data_rogdenia,4)
if @ZP<(select Sred_ZP from Dolgnost where Number_dolgnosti=@Dolg)
begin
print('Зарплата
сотрудника не может быть ниже
зарплаты, предусмотренной тарифной
сеткой'+char(13)+'Сотрудник
rollback
end
else if ((YEAR(GETDATE())-@d)>18) OR ((YEAR(GETDATE())-@d)<60)
begin
print('Новый
сотрудник принят на работу.'+
end
end
Выполнение:
а) добавление сотрудника, зарплата которого ниже средней:
INSERT Med_personal VALUES(19, 981234, 'Аркадева Александра Владимировна', 'Калинина 139 - 40', '11.10.1985', 2900, 3, 11)
б) добавление сотрудника, зарплата которого выше средней. При этом выводится количество лет, оставшихся до пенсии:
INSERT Med_personal VALUES(19, 981234, 'Аркадева Александра Владимировна', 'Калинина 139 - 40', '11.10.1985', 6900, 3, 11)
2) Триггер,
осуществляющий проверку
create trigger Priem
on Zapis for insert
as
if @@rowcount=1
begin
declare @V varchar(18), @Sp int
select @V=Vremja_priema, @Sp=Number_personala from inserted
if @Sp in (select Number_specialista from Zapis where Vremja_priema=@V)
begin
print('У данного специалиста уже есть прием в это время!')
rollback
end
end
Выполнение: введем время, на которое уже есть запись:
INSERT Zapis VALUES (12, '01.07.08 18:00', 8, 269056, 8, 1,3)
3) Триггер, срабатывающий при добавлении сотрудника в базу:
create trigger Proverka_vozrasta_sotrudnika
on Med_personal for insert
as
if @@rowcount=1
begin
declare @d int
select @d=YEAR(Right(Data_rogdenia,4)
if ((YEAR(GETDATE())-@d)<18) OR ((YEAR(GETDATE())-@d)>60)
begin
print('К
сожалению, возраст данного
rollback
end
end
Выполнение:
добавление сотрудника, который младше 18 лет:
INSERT Med_personal VALUES(19, 981234, 'Аркадева Александра Владимировна', 'Калинина 139 - 40', '11.10.1995', 6900, 3, 11)
4) Удаление сотрудника из базы:
Выполнение:
а) после добавления сотрудника:
б) после удаления сотрудника:
delete from MEd_personal where Number_personala=19
Приложение Д
(обязательное)
1) Вывести весь мед. персонал
Select FIO_personala as ФИО_персонала, Dom_Adress as дом_адрес, Data_rogdenia as дата_рождения From Med_personal
2) Вывести всех пациентов, старше 30 лет
Select FIO as ФИО, Dom_adress as дом_адрес, God_rogdenia as дата_рождения from Pacient
where (God_rogdenia like '__.__.__[1-7]_')
3) Вывести
всех врачей – окулистов,
Select FIO_personala as ФИО_персонала, Dom_Adress as дом_адрес, Data_rogdenia as дата_рождения, Number_korpusa as номер_поликлиники,
Specialist.Name_specialista as название_специалиста
from Med_personal, Specialist, Korpus
where (Data_rogdenia
like '__.__.__[1-6][0-8]') and (Med_personal.Number_
and (Number_korpusa = 2)
4) Вывести пациентов, которые записаны на 15.05.2008 на прием к хирургу
Select FIO as
ФИО, Vremja_priema as время_приема, Name_specialista as
название_специалиста ,Zapis.
from Pacient, Specialist, Zapis
where (Zapis.Vremja_priema
like '15.05.08%')and(Zapis.Number_
and (Zapis.number_polisa=Pacient.
5) Вывести
мед.персонал с
Select FIO_personala as ФИО_персонала, Name_specialista as название_специалиста from Med_personal, Specialist
where Med_personal.Number_
6) Вывести мед.персонал с зарплатой выше средней
Select FIO_personala as ФИО_персонала, Name_specialista as название_специалиста,zp as зарплата
from Med_personal, Specialist,dolgnost
where Med_personal.Number_
and Med_personal.number_dolgnosti=
7) Вывести
пациентов, которые записаны
Select FIO as
ФИО_пациента,Vremja_priema as время_приема,Zapis.number_
Name_specialista as название_специалиста, FIO_personala as ФИО_персонала
from Pacient,Zapis,Med_personal, specialist
where (Med_personal.FIO_personala like 'Петров%')
and (Zapis.number_polisa=Pacient.
and (specialist.number_
8) Вывести
количество мед. персонала,
Select count (*) as количество
from Med_personal, Specialist,dolgnost
where Med_personal.Number_
and Med_personal.number_dolgnosti=
Select FIO_personala as ФИО_персонала, Name_specialista as название_специалиста,
zp as зарплата,sred_zp as средняя_зарплата
from Med_personal, Specialist,dolgnost
where Med_personal.Number_
and Med_personal.number_dolgnosti=
9) Вывести
все записи приема по
Select FIO as
ФИО_пациента,Vremja_priema as время_приема,Zapis.number_
Name_specialista
as название_специалиста,FIO_
from Pacient,Zapis,Med_personal, specialist,vid_priema
where (Zapis.number=2)and
(Zapis.number_polisa=Pacient.
and (Zapis.Number_specialista=
(Zapis.number_personala=Med_
10) По
фамилии врача определить
Select FIO_personala as ФИО_персонала,Name_specialista as название_специалиста,
FIO as ФИО_пациента,Zapis.number_
from Pacient,Zapis,Med_personal,
where (Zapis.number_polisa=Pacient.
(Zapis.number_specialista=
and (Zapis.number_personala=Med_
group by FIO_personala,Name_
Приложение Е
(обязательное)
Информация о работе Информационная система для предметной области “Поликлиника”