Автор работы: Пользователь скрыл имя, 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 – запроса создания представления