Автор работы: Пользователь скрыл имя, 27 Декабря 2010 в 17:04, курсовая работа
Предметная область, подлежащая изучению – «кинотеатр». В сферу этой предметной области попадают предприятия, занимающиеся оказанием услуг проведения досуга. Цель функционирования предприятий этой предметной области – оказание услуг, таких как: показ кинофильмов, реклама и анонс будущих фильмов и получение прибыли, извлекаемой из оплаты этих услуг клиентами. Для оказания услуг необходимо наличие квалифицированных специалистов и помещений, удовлетворяющих нормам санитарных и других требований в соответствии с действующим законодательством.
1 Постановка задачи 4
2 Анализ предметной области 5
3 Проектирование базы данных 9
4 Реализация базы данных в формате MS SQL Server 2000 10
5 Хранимые процедуры для вставки данных 21
6 Представления на выборку данных из базы данных 39
7 Проектирование программного обеспечения 42
8 Руководство пользователя 45
Список литературы 47
Приложение 48
drop procedure добавить_работник_должность
go
create procedure добавить_работник_должность
@res tinyint output,
@DolzID int=null,
@NumDela int=null
as
begin
if exists (select [Идентификатор должности] from Должность
where [Идентификатор должности]=@DolzID)
and
exists (select [Номер личного дела] from Работник
where [Номер личного дела]=@NumDela)
begin
insert into Работник_должность ([Идентификатор должности], [Номер личного дела])
values (@DolzID, @NumDela)
if @@rowcount>0 set @res=1
end
end
go
Пример использования:
declare @res int
exec добавить_работник_должность
@res output, 5,10
10. Хранимая
процедура для таблицы «Сеанс_Кинотеатр»
Имя процедуры: добавить_сеанс_кинотеатр
Назначение процедуры: процедура добавляет в таблицу идентификатор сеанса и название кинотеатра.
Требования
к целостности
данных: При вставке данных должна выполняться
проверка существования данных в соответствующих
таблицах.
Таблица
32 – Аргументы процедуры
«добавить_сеанс_кинотеатр»
Аргумент | Смысл | Вид аргумента | Значение
по умолчанию |
Тип |
@res | результат | выходной | нет | tinyint |
@DolzID | Идентификатор должности | входной | Null | int |
@NumDela | Номер личного дела работника | входной | Null | int |
Возвращаемый
результат процедуры: 1, если новая
запись добавлена.
Листинг
11. SQL код создания и
использования процедуры
use Moveis
if exists (select name from sysobjects where name = 'добавить_сеанс_кино' and type = 'P')
drop procedure добавить_сеанс_кино
go
create procedure добавить_сеанс_кино
@res tinyint output,
@KinoName nvarchar(25),
@SeansID int=null
as
begin
if exists (select [Название кинотеатра] from Кинотеатр
where [Название кинотеатра]=@KinoName)
and
exists (select [Идентификатор сеанса] from Сеансы
where [Идентификатор сеанса]=@SeansID)
begin
insert into Сеанс_Кинотеатр ([Название кинотеатра], [Идентификатор сеанса])
values (@KinoName, @SeansID)
if @@rowcount>0 set @res=1
end
end
go
Пример использования:
declare @res tinyint
exec
добавить_сеанс_кино @res output, 'Премьер',20
11. Хранимая
процедура для таблицы «Актеры_Фильм»
Имя процедуры: добавить_актеры_фильм
Назначение процедуры: процедура добавляет в таблицу идентификатор фильма и идентификатор актера
Требования
к целостности
данных: При вставке данных должна выполняться
проверка существования данных в соответствующих
таблицах.
Таблица
32 – Аргументы процедуры
«добавить_сеанс_кинотеатр»
Аргумент | Смысл | Вид аргумента | Значение
по умолчанию |
Тип |
@res | результат | выходной | нет | tinyint |
@FilmID | Идентификатор фильма | входной | Null | int |
@ActerID | Идентификатор актера | входной | Null | int |
Возвращаемый
результат процедуры: 1, если новая
запись добавлена.
Листинг 12. SQL код создания и использования процедуры
use Moveis
if exists (select name from sysobjects where name = 'добавить_актер_фильм' and type = 'P')
drop procedure добавить_актер_фильм
go
create procedure добавить_актер_фильм
@res tinyint output,
@FilmID int=null,
@ActerID int=null
as
begin
if exists (select [Идентификатор фильма] from Фильм
where [Идентификатор фильма]=@FilmID)
and
exists (select [Идентификатор актера] from Актеры
where [Идентификатор актера]=@ActerID)
begin
insert into Актер_Фильм ([Идентификатор фильма], [Идентификатор актера])
values (@FilmID, @ActerID)
if @@rowcount>0 set @res=1
end
end
go
Пример использования:
declare @res int
exec добавить_актер_фильм @res output, 3,14
6 Представления
на выборку данных из
базы данных
В
целях ускорения процесса последующей
разработки программного обеспечения
и облегчения выборки данных для созданной
базы данных разработаны представления,
осуществляющие выборку информации
из связанных таблиц.
1.
Представление «Афиша»
Назначение:
Получение информации о кинотеатре, названии
фильма, времени и дате сеанса
Листинг
13 – Код SQL – запроса
создания представления
«Афиша»
CREATE VIEW Афиша
AS
SELECT Фильм.[Название
фильма], Кинотеатр.[Название
FROM Кинотеатр
JOIN Сеанс_Кинотеатр
ON Кинотеатр.[Название
JOIN Сеансы ON Сеанс_Кинотеатр.[
JOIN Фильм ON Сеансы.[Идентификатор
фильма] = Фильм.[Идентификатор фильма]
Пример
использования представления: Вывести
название кинотеатра, название и время
фильма, которые будут показаны 18 мая 2010
года.
Листинг
14 – Код SQL – Запроса
выборки из представления
«Афиша»
select [Название кинотеатра], [Название фильма], [Время сеанса]
From Афиша
where [Дата сеанса]='20100518'
2.
Представление «Все
работники».
Назначение:
Получение информации о работниках и занимаемых
ими должностях.
Листинг 15 – Код SQL – запроса создания представления
«Все
работники»
CREATE VIEW [Все работники]
AS
SELECT
Должность.[Название
должности], Работник.Фамилия,
Работник.Имя, Работник.
FROM Должность
JOIN
Работник_Должность
ON Должность.[Идентификатор
должности] = Работник_Должность.[
JOIN
Работник ON Работник_Должность.[Номер
личного дела] = Работник.[Номер
личного дела]
Пример использования представления «Все работники»: Вывести имя, фамилию, отчество всех работников, кто занимает должность киномеханика.
Листинг 16 – Код SQL – запроса выборки из представления
«Все
работники»
Select Фамилия, Имя, Отчество
From [Все работники]
Where [Название должности]='Киномеханик'
3.
Представление «проданные
билеты».
Назначение:
Получение информации о проданных билетах,
цене билета и названии кинотеатра которому
принадлежит билет.
Листинг
17 – Код SQL – запроса
создания представления
«проданные билеты»
CREATE VIEW [Проданые билеты]
AS
SELECT Билет.[Номер билета], Билет.Цена, Сеансы.[Дата сеанса], Сеансы.[Время сеанса], Кинотеатр.[Название кинотеатра]
FROM Билет
JOIN Кинотеатр ON Билет.[Название кинотеатра] = Кинотеатр.[Название кинотеатра]
JOIN Сеансы ON Билет.[Идентификатор
сеанса] = Сеансы.[Идентификатор сеанса]
Пример
использования представления
«проданные билеты»:Вывести название
кинотеатра, количество проданных билетов,
сумму полученных денег.
Листинг 18 – Код SQL – запроса выборки из представления
«проданные
билеты»
select sum(Цена) as [Доход с продаж], [Название кинотеатра], count ([Номер билета]) as [Проданные билеты]
From [Проданые билеты]
where [Название кинотеатра]='Кинопанорама'
group by [Название
кинотеатра]
4.
Представление «Рабочие
дни»
Назначение:
получение информации о работнике, днях
его работы, кинотеатре, в котором он будет
работать.
Листинг 19 – Код SQL – запроса создания представления
«Рабочие
дни»
CREATE VIEW [Рабочие дни]
AS
SELECT Расписание.[Название кинотеатра], Расписание.[Рабочий день], Расписание.[Время начала], Расписание.[Время окончания],
Работник.Фамилия, Работник.
FROM Расписание
JOIN Работник ON Расписание.[Номер личного дела] = Работник.[Номер личного дела]
Пример
использования представления
«Рабочие дни»: получить информацию
о фамилии, имени, отчестве, рабочих часах
тех работников, которые будут работать
6 мая 2010 года в кинотеатре Комсомолец.
Листинг 20 – Код SQL – запроса выборки из представления
«Рабочие
дни»
select Фамилия, Имя, Отчество, [Время начала],[Время окончания]
from [Рабочие дни]
where [Название
кинотеатра]='Комсомолец' and [Рабочий
день]='20100601'
5.
Представление «Фильм_Актеры»
Назначение:
Получение информации об актерах снявшихся
в фильмах и показ даты выхода фильма.
Листинг 21 – Код SQL – запроса создания представления