Разработка базы данных для кинотеатров

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

Вложенные файлы: 1 файл

Шаблон пояснительной записки.doc

— 831.00 Кб (Скачать файл)

   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 – запроса создания представления

Информация о работе Разработка базы данных для кинотеатров