Разработка алгоритмов и программы вероятностной и детерминированной проверки чисел на простоту, страница 5

            insert into klient values (@Name, @telefon, @e_mail,@login,@pass)

      end

declare @login varchar(20), @pass varchar(20)

      exec registr 'Дорогин В.С.', '9095417451', 'dorogin@mail.ru', @login, @pass

Процедура бронирования билета на мероприятие.

Входные параметры: логин и пароль клиента, название театра, название мероприятия, дата и время мероприятия, тип билета.

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

0 – процедура завершена успешно;

1 – логин или пароль введены неправильно;

2 – название театра указано неправильно;

3 – указанное мероприятие не проходит в данном театре в указанное время;

create proc bronirovanie

      @login varchar(20),

      @pass varchar(20),

      @mer_name varchar(20),

      @theatre_name varchar(20),

      @datetime datetime,

      @tip varchar(20),

      @status varchar(20),

      @mesto int,

      @result int output

as

      begin

            declare @id_klient int, @id_theatre int, @id_theatre_meropriyatie int

            set @id_klient = (select id_klients from klient where _login = @login and _password = @pass)

            if @id_klient is null

            begin

                  set @result = 1

                  return

            end

            set @id_theatre = (select id_theatres from theatre where theatre_name = @theatre_name )

            if @id_theatre is null

            begin

                  set @result = 2

                  return

            end

            set @id_theatre_meropriyatie = (select id_meropriyaties from theatre_meropriyatie where _datetime = @datetime )

            if @id_theatre_meropriyatie is null

            begin

                  set @result = 3

                  return

            end

            update ticket set _status_bileta = 'Резерв' where _tip=@tip and _status=@status and _mesto=@mesto

            set @result = 0

      end  

declare @res int

exec bronirovanie 'Petrovv','q78awsed','Дон-Жуан','Мариинский','2010-10-11 19:00:00','Сидящий','Ложи','75',@res

if @res = 0

      print 'процедура завершена успешно'

else if @res = 1

      print 'логин или пароль введены неправильно'

else if @res = 2

      print 'название театра указано неправильно'

else if @res = 3

      print 'указанное мероприятие не проходит в данном театре в указанное время'

select theatre_name, _nazvanie, _datetime, _status, _mesto, _tip, _status_bileta

from theatre, meropriyatie, theatre_meropriyatie, ticket_meropriyatie, ticket

where theatre.id_theatres=theatre_meropriyatie.id_theatres and meropriyatie.id_meropriyaties=theatre_meropriyatie.id_meropriyaties and

ticket_meropriyatie.id_meropriyaties=theatre_meropriyatie.id_meropriyaties and ticket_meropriyatie.id_tickets=ticket.id_tickets

Процедура удаления данных о билетах давностью 1 год и более.

Процедура не имеет входных параметров.

Выходной параметр процедуры – количество удаленных билетов.

create proc delet_bilet

as

      begin

            delete from theatre_meropriyatie where year(theatre_meropriyatie._datetime)  < year(GETDATE ()) -1      end

3 Обеспечение защищенности разработанной базы данных

3.1 Словесное и формально-математическое описание разработанных ограничений предметной области, описание ограничений целостности и триггеров

Логин и пароль клиента – уникальны и не могут быть неопределенными.

σ count(*)>1(named,fio)(fio,named)(books >< book_avtors >< avtors) = 0

        _login varchar(30)unique not null,

        _password varchar(30)unique not null,

Разные мероприятия не проходят в одно время и в одном месте.

σ(named)>1(named)(publishes)) = 0

named varchar(20)unique

σ(inn)>1(inn)(publishes)) = 0

inn varchar(15)unique

σ(adress)>1(adress)(publishes)) = 0

address varchar(60)unique

σ(telefone)>1(telefone)(publishes)) = 0

telefon varchar(15)unique

σ(fax)>1(fax)(publishes)) = 0