Разработка физической структуры базы данных



Этап физического проектирования заключается в определении схемы хранения, т.е. физической структуры БД. Схема хранения зависит от той физической структуры, которую поддерживает выбранная СУБД. Физическая структура БД, с одной стороны, должна адекватно отражать логическую структуру, а с другой стороны, должна обеспечивать эффективное размещение данных и быстрый доступ к ним. Результаты этого этапа документируются в форме схемы хранения на языке определения данных (T-SQL, Transaction Sistem Qwery Language) выбранной СУБД. Принятые на этом этапе решения оказывают огромное влияние на производительность системы. Одной из важнейших составляющих проекта базы данных является разработка средств защиты БД. Защита данных имеет два аспекта: защита от сбоев и защита от несанкционированного доступа. Для защиты от сбоев на этапе физического проектирования разрабатывается стратегия резервного копирования. Для защиты от несанкционированного доступа каждому пользователю доступ к данным предоставляется только в соответствии с его правами доступа, набор которых также является составной частью проекта БД. Каждое реляционное отношение соответствует одной сущности и в него вносятся все атрибуты этой сущности. Для каждого отношения определяются первичный ключ и внешние ключи (в соответствии со схемой БД). В том случае, если базовое отношение не имеет потенциальных ключей, вводится суррогатный первичный ключ, который не несёт смысловой нагрузки и служит только для идентификации записей. Отношения приведены в табл. 1-6. Для каждого отношения указаны атрибуты с их внутренним названием, типом и длиной.

Таблица 1 - «Фильмы»

 


Таблица 2 - «Сеансы»

 

Таблица 3 - «Залы»

 

Таблица 4 - «Места»

 

Таблица 5 - «Билеты»

 

Таблица 6 - «Бронь»

 

Таблица 7 - «Покупатель»

 

Импорт физической структуры

Для работы и управления данными в СУБД Microsoft SQL Server, используется структурированный язык запросов Transact SQL (T-SQL).

Листинг 1 - Создание таблицы Фильмы

Create table Фильмы (id_Фильмы Int primary key identity(1,1), Название_фильма varchar(50) not null, Длительность int not null, Дата_начала_проката date not null, Прокатчик varchar(50) not null, Жанр varchar(20) not null, Актеры varchar(300) not null, Режиссер varchar(150) not null) GO

 

Листинг 2 - Создание таблицы Сеансы

Create table Сеансы (id_Сеансы Int primary key identity(1,1), id_Зал int foreign key references Залы (id_Зал) on delete cascade on update cascade, Время time not null, Дата Date not null, id_Фильмы int foreign key references Фильмы (id_Фильмы) on delete cascade on update cascade) GO

 

Листинг 3 - Создание таблицы Залы

Create table Залы (id_Зал Int primary key identity(1,1), Число_рядов int not null, Число_мест int not null) GO

Листинг 4 - Создание таблицы Места

Create table Места (id_Места Int primary key identity(1,1), id_Зал int foreign key references Залы (id_Зал) on delete cascade on update cascade, Номер_ряда int not null, Номер_места int not null) GO

 

Листинг 5 - Создание таблицы Билеты

Create table Билеты (id_Билета Int primary key identity(1,1), id_Фильмы int foreign key references Фильмы (id_Фильмы) on delete cascade on update cascade, id_Сеансы int foreign key references Сеансы (id_Сеансы) on delete cascade on update cascade, id_Места int foreign key references Места (id_Места) on delete cascade on update cascade, Сумма int not null) GO

 

Листинг 6 - Создание таблицы Бронь

Create table Бронь (id_Брони Int primary key identity(1,1), id_Билета int foreign key references Билеты (id_Билета) on delete cascade on update cascade, id_Покупателя int foreign key references Покупатель (id_Покупателя) on delete cascade on update cascade, Количество_билетов int not null, Общая_сумма int not null) GO

 

Листинг 7 - Создание таблицы Покупатель

Create table Покупатель (id_Покупателя Int primary key identity(1,1), Фамилия varchar(50) not null, Имя varchar(50) not null, Телефон int not null) GO

 

Листинг 8 – Вставка данных в таблицу Фильмы

Insert into Фильмы (Название фильма, Длительность, Дата_начала_проката, Прокатчик, Жанр, Актеры, Режиссер) values ('Братсво', '115', '2019-05-10', 'RWS', 'История, Боевик, Драма', 'Петров П.Е., Булах М.А.', 'Павел Лунгин'), ('Проклятые', '95', '2019-05-16', 'AKM', 'Детектив, Ужасы', 'Дайан Мишель', 'Люк Джейден Савицки'), ('Отель Мумбаи', '130', '2019-05-09', 'UPI', 'История, Триллер, Драма', 'Джон Коли, Майк Габрави', 'Энтони Марас'), ('Играй или умри', '95', '2019-05-10', 'RWS', 'Ужасы', 'Амиель Бартана, Серж де Пук', 'Жак Клюгер'), ('Гори, гори ясно', '90', '2019-05-23', 'Интерфест', 'Драма, Фантастика, Ужасы', 'Брайан Ганн, Марк Ганн', 'Дэвид Яровески') go

 

 

Листинг 9 – Вставка данных в таблицу Сеансы

Insert into Сеансы (id_Зал, Время, Дата, id_Фильмы) values ('7', '17:30:00', '2019-05-20', '2'), ('5', '20:05:00', '2019-05-24', '5'), ('3', '15:25:00', '2019-05-11', '1'), ('1', '12:00:00', '2019-05-15', '4'), ('2', '19:40:00', '2019-05-30', '3') go

 

Листинг 10 – Вставка данных в таблицу Залы

Insert into Залы (Число_рядом, Число_мест) values ('15', '150'), ('15', '150'), ('12', '120'), ('15', '100'), ('7', '30'), ('15', '150'), ('15', '150') go

 

Листинг 11 – Вставка данных в таблицу Места

Insert into Места (id_Зал, Номер_ряда, Номер_места) values ('2', '11', '7'), ('6', '4', '2'), ('7', '3', '4'), ('1', '5', '10'), ('3', '5', '8') go

 

Листинг 12 – Вставка данных в таблицу Билеты

Insert into Билеты (id_Сеансы, id_Места, Сумма) values ('5', '3', '150'), ('3', '1', '250'), ('1', '5', '120'), ('4', '2', '100'), ('2', '4', '150') go

 

 

Листинг 13 – Вставка данных в таблицу Бронь

Insert into Бронь (id_Билета, id_покупателя, Колчество_билетов, общая сумма) values ('3', '3', '1', '120'), ('2', '1', '1', '250') go

 

Листинг 14 – Вставка данных в таблицу Покупатель

Insert into Покупатель (Фамилия, Имя, Телефон) values ('Петров', 'Петр', '89007778105'), ('Иванов', 'Иван', '89083136006'), ('Соболев', 'Никита', '89138888888'), ('Кудряшов', 'Василий', '89516789845'), ('Хохлов', 'Евгений', '89081055379') go

 

Листинг 15 – Создание индекса для таблицы Фильмы

CREATE NONCLUSTERED INDEX IX_Фильмы ON Фильмы(id_Фильмы, Название_фильма, Длительность, Дата_начала_проката, Прокатчик, Жанр, Актеры, Режиссер) GO

 

Листинг 16 – Создание индекса для таблицы Сеансы

CREATE NONCLUSTERED INDEX IX_Сеансы ON Сеансы(id_Сеансы, id_Зал, Время, Дата, id_Фильмы) GO

 

Листинг 17 – Создание индекса для таблицы Залы

CREATE NONCLUSTERED INDEX IX_Залы ON Залы(id_Зал, Число_рядом, Число_мест) GO

 

Листинг 18 – Создание индекса для таблицы Места

CREATE NONCLUSTERED INDEX IX_Места ON Места(id_Места, id_Зал, Номер_ряда, Номер_места) GO

 

Листинг 19 – Создание индекса для таблицы Билеты

CREATE NONCLUSTERED INDEX IX_Билеты ON Билеты(id_Билета, id_Фильмы, id_Сеансы, id_Места, Сумма) GO

Листинг 20 – Создание индекса для таблицы Бронь

CREATE NONCLUSTERED INDEX IX_Бронь ON Бронь(id_Брони, id_Билета, id_Покупателя, Количество_билетов, Общая_сумма) GO

 

Листинг 21 – Создание индекса для таблицы Покупатель

CREATE NONCLUSTERED INDEX IX_Покупателя ON Покупатель(id_Покупателя, Фамилия, Имя, Телефон) GO

 

Листинг 22 – Создание представления View1

CREATE VIEW VIEW_1 as select Общая_сумма from Билеты where Сумма>'120' go select* from VIEW_1 go

Листинг 23 – Создание представления View2

CREATE VIEW VIEW_2 as select Начало_проката, Длительность from Фильмы where Min([Дата_начала_проката]), Max([Длительность]) go select* from VIEW_2 go

Листинг 24 – Создание представления View3

CREATE VIEW VIEW_3 as select Сумма from Билеты where Билеты.Сумма='150' go select* from VIEW_3 go

 

Листинг 25 – Создание процедуры PROCEDURE_1

CREATE PROCEDURE PROCEDURE_1 AS BEGIN SELECT* FROM Билеты WHERE Сумма=(select MAX(Сумма)from Билеты) END; GO EXECUTE PROCEDURE_1 GO

Листинг 26 – Создание процедуры PROCEDURE_2

CREATE PROCEDURE PROCEDURE_2 @A1 INT, @A2 INT, @A3 INT, @A4 INT as BEGIN UPDATE Бронь set id_Билета=@A1, id_покупателя=@A2, Колчество_билетов=@A3, общая_сумма=@A4 END; GO EXECUTE PROCEDURE_2 '','','','','','' GO

 


ЗАКЛЮЧЕНИЕ

Сегодня кинематограф - прежде всего индустрия, отрасль экономики, приносящая огромную прибыль развитым государствам, с помощью правильной базы данных, и правильной команды можно достичь большего в этой организации.

Кино прежде всего искусство, но драматизм ситуации заключается в том, что оно еще, кроме того, и продукция фабричного заводского производства. Это, пожалуй, единственное из искусств, находящееся в таком сложнейшем, я бы сказал, в каком-то смысле - в безысходном положении. То есть кино живет как бы в двух иллюстрациях - мы вынуждены смотреть на него, с одной стороны, как на искусство, а с другой стороны, как на промышленное производство.

Практическая значимость курсовой работы заключается в создании базы данных учета в кинотеатре.

В ходе выполнения курсового проекта были выполнены следующие задачи:

1. изучить предметную область;

2. спроектировать логическую структуру базы данных;

3. проанализировать базы данных существующих информационных систем;

4. обосновать выбор программных и технических средств для разработки и функционирования разработанной базы данных;

5. разработать физическую модель базы данных для выбранной СУБД;

6. импортировать разработанную физическую модель в СУБД.

 

 


Дата добавления: 2021-06-02; просмотров: 67; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!