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

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

  Оператор nvarchar (25) not null default (''),

  Режисер nvarchar (25) not null default (''),

  Сценарист nvarchar (25) not null default (''),

  [Дата выхода фильма] datetime not null default (getdate ()),

  Изображение nvarchar (10) not null default (''),

  [Время фильма] int not null default (1.00),

  Жанр nvarchar (25) not null default (''),

  Субтитры nvarchar (25) not null default (''),

  Язык nvarchar (30) not null default (''),

  [Аудио поток] nvarchar (30) not null default (''))

go 

--4 Создание  таблицы Актеры, хранящую информацию  об актерах

create table Актеры (

  Фамилия nvarchar (25) not null default (''),

  Имя nvarchar (25) not null default (''),

-- Первичный ключ

  [Идентификатор актера] int not null primary key clustered identity (1,1))

go 

--5 Создание  таблицы Кинотеатр, хранящую информацию  о кинотеатрах

create table Кинотеатр (

  [Название кинотеатра] nvarchar(25) not null primary key clustered,

  [Номер здания] int not null default (1),

  [Номер корпуса] nvarchar (1) null default (''),

  Улица nvarchar (30) not null default (''))

go 

--6 Создание  таблицы Сеансы, хранящую информацию  о сеансах

create table Сеансы (

  [Идентификатор сеанса] int not null primary key clustered identity (1,1),

  [Дата сеанса] datetime not null default(getdate()) check ([Дата сеанса]>=getdate()),

  [Время сеанса] datetime not null default (0.00),

  [Идентификатор фильма] int null foreign key references Фильм ([Идентификатор фильма])

  on update cascade on delete cascade)

go 

--7 Создание  таблицы Билет, хранящую информацию  о билетах

create table Билет (

--Первичный ключ

  [Номер билета] int not null primary key clustered identity (1,1),

--Внешний  ключ связывающий с таблицей  Фильм

  [Идентификатор  фильма] int null foreign key references Фильм([Идентификатор  фильма])

  on update cascade on delete cascade,

--Внешний ключ связывающий с таблицей Сеансы

  [Идентификатор  сеанса] int null foreign key references Сеансы([Идентификатор  сеанса]),

  Ряд int not null default (1),

  Место int not null default (1),

  Цена money not null default (250.00),

  [Название кинотеатра] nvarchar (25) null foreign key references Кинотеатр([Название кинотеатра])

  on update cascade on delete cascade)

go 

--8 Создание  таблицы Расписание, хранящую расписание рабочих дней.

create table Расписание (

--Внешний  ключ связывающий таблицу Работник

  [Номер  личного дела] int not null foreign key references Работник([Номер  личного дела])

  on update cascade on delete cascade,

--Внешний  ключ связывающий таблицу Кинотеатр  

  [Название  кинотеатра] nvarchar(25) not null foreign key references Кинотеатр([Название кинотеатра])

  on update cascade on delete cascade,

--Первичный ключ 

  [Рабочие дни] datetime not null default (getdate()),

  [Время начала] datetime not null default (12.11),

  [Время окончания] datetime not null default (13.22),

  [Составитель] int not null foreign key references Работник([Номер личного дела]),

  constraint [Номер дела_Название кино] primary key clustered ([Название кинотеатра],[Номер личного дела],

  [Рабочие дни]))

go 

--9 Создание  ассоциативной таблицы Работник_Должность

create table Работник_Должность (

  [Идентификатор  должности] int not null foreign key references Должность([Идентификатор должности]),

  [Номер  личного дела] int not null foreign key references Работник([Номер  личного дела]),

--Составной  ключ, из внешних ключей таблиц Должность и Работник

   constraint ключ_Должность_Работник primary key clustered ([Идентификатор должности],[Номер личного дела]))

go 

--10 Создание  ассоциативной таблицы Сеанс_Кинотеатр

create table Сеанс_Кинотеатр (

  [Идентификатор  сеанса] int not null foreign key references Сеансы([Идентификатор  сеанса]),

  [Название  кинотеатра] nvarchar (25) not null foreign key references Кинотеатр ([Название кинотеатра]),

  constraint ключ_Сеанс_Кинотеатр primary key clustered ([Идентификатор сеанса],[Название кинотеатра]))

go 

--11 Создание  ассоциативной таблицы Актер_Фильм

create table Актер_Фильм (

  [Идентификатор  фильма] int not null foreign key references Фильм([Идентификатор  фильма]),

  [Идентификатор  актера] int not null foreign key references Актеры([Идентификатор актера]),

  constraint ключ_Актер_Фильм primary key clustered ([Идентификатор  фильма],[Идентификатор актера]))

     go 
5 Хранимые процедуры для вставки данных
 

      В целях упрощения программного доступа  к разрабатываемой базе данных и обеспечения целостности данных следует разработать SQL-команды для осуществления вставки данных в таблицы и сохранить их на сервере для последующего использования. Для этого разработаны хранимые процедуры на сервере MS SQL Server 2000, которые могут быть вызваны всякий раз в случае необходимости добавления новых записей. 

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

1. Хранимая процедура для таблицы «Работник» 

Имя процедуры: добавить_работника

Назначение процедуры: добавление работника с указанием всех характеристик, необходимых для принятия на работу.

Требования к целостности данных: При добавлении работника, и указания даты найма, выполняется проверка введенной даты найма, при указании даты «задним числом» запрос не выполняется.  

Таблица 25 – Аргументы процедуры «добавить_скидку» 

Аргумент Смысл Вид аргумента Значение по умолчанию Тип
@res Результат работы процедуры Выходной нет tinyint
@Name Имя работника Выходной Пустая строка Nvarchar(25)
@SName Фамилия работника Выходной Пустая строка Nvarchar(25)
@MName Отчество работника Выходной Пустая строка Nvarchar(25)
@NumWork Номер трудовой книжки Выходной Пустая строка Nvarchar(25)
@IDDolz Идентификатор должности (из таблицы должностей) Выходной  
         null
int
@NumPens Номер пенсионного  удостоверения Выходной Пустая строка Nvarchar(25)
@Birthday День рождения Выходной Пустая строка Nvarchar(10)
@Passport Номер и серия паспорта     Nvarchar(25)
@NaimDate Дата найма Выходной Пустая строка Nvarchar(10)
 

Возвращаемый  результат процедуры: 1, если запись добавлена 
 
 

Листинг 2. SQL код создания и использования процедуры «добавить_работника» 

use Moveis

if exists (select name from sysobjects where name = 'добавить_работника' and type = 'P')

   drop procedure добавить_работника

go

create procedure добавить_работника

  @res tinyint output,

  @SName nvarchar(25)='', @Name nvarchar(25)='',@MName nvarchar(25)='',

  @NumWork nvarchar(10)='', @IDDolz int=null, @NumPens nvarchar(14)='',

  @Birthday nvarchar(10)='', @NaimDate nvarchar(10)='', @Passport nvarchar(11)=''

as

begin

  set @res=0

  declare @Birth_temp datetime

   if isdate(@Birthday)=1

      begin

        set @Birth_temp=cast (@Birthday as datetime)

        end

       

--Получение  и обработка даты  найма работника.

  declare @datetmp datetime set @datetmp = getdate()

      if isdate(@NaimDate)=1 --Если  получен правильный  формат даты

      begin 

            --и  если дата не  позднее текущей

            --то  принять полученную дату

            declare @datetmp1 datetime --локальная  переменная для  даты

            --конвертировать  полученную дату  в формат datetime

            set @datetmp1 = cast(@NaimDate as datetime)

            if (@datetmp1<=getdate())

                  set @datetmp = @datetmp1

      end

if exists(select [Идентификатор должности] from Работник where

                         [Идентификатор должности] = @IDDolz)

              begin

              insert into Работник 

                  (Фамилия,  Имя, Отчество, [Номер  трудовой], [Идентификатор  должности],

                   [Номер  пенсионного удостоверения], [Дата рождения], [Дата найма],

                   [Номер  паспорта])

              values(@Sname,@Name,@MName,@NumWork,@IDDolz,@NumPens,@Birth_temp,@datetmp,

                         @Passport)  

              if @@rowcount>0 set @res = 1

            end

          else

            begin

              insert into Работник

                        (Фамилия,Имя,Отчество,[Номер трудовой],[Номер пенсионного удостоверения], [Дата рождения], [Дата найма],

                   [Номер  паспорта])

              values(@Sname,@Name,@MName,@NumWork,@NumPens,@Birth_temp,@datetmp,

                         @Passport)  

              if @@rowcount>0 set @res = 1

            end 

end

go 

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

use Moveis

declare @res tinyint

exec добавить_работника  @res output, 'Кадыров','Арсений','Генадьевич', '100111001', 4,  '123-132-159 83',

'19880102', '20100517', '6422 32166589' 

2. Хранимая процедура для таблицы «Должность» 

Имя процедуры: добавить_должность

Назначение: Добавляет должность с указанием оклада.

Требования  к целостности  данных: При попытке вставки должности, имеющейся в таблице, запрос не выполняется . 

Таблица 26 – Аргументы процедуры «Добавить_должность» 

Аргумент Смысл Вид аргумента Значение

по умолчанию

Тип
@res результат работы процедуры выходной  нет tinyint
@Oklad Оклад должности входной 1.0 money
@NameDolz Название должности входной пустая строка nvarchar(25)

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