РАЗРАБОТКА РАСПРЕДЕЛЕННОЙ БАЗЫ ДАННЫХ НА ОСНОВЕ MS SQL SERVER«КИНОТЕАТР» - Студенческий научный форум

VII Международная студенческая научная конференция Студенческий научный форум - 2015

РАЗРАБОТКА РАСПРЕДЕЛЕННОЙ БАЗЫ ДАННЫХ НА ОСНОВЕ MS SQL SERVER«КИНОТЕАТР»

Емельянов И.М. 1
1Балаковский институт техники, технологии и управления
 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF

ВВЕДЕНИЕ

Распределенные базы данных невозможно рассматривать вне контекста более общей и более значимой темы распределенных информационных систем. Процессы децентрализации и информационной интеграции, происходящие во всем мире, неизбежно должны рано или поздно затронуть нашу страну. Россия, в силу своего географического положения и размеров «обречена» на преимущественное использование распределенных систем. Если ставится задача - построить информационную систему «клиент-сервер» на базе локальной сети с централизованной базой данных, то выбирается одна из популярных многопользовательских СУБД и какие-либо средства для быстрой разработки приложений. Наконец, создается сама система, представляющая собой комбинацию базы данных и обращающихся к ней приложений, в которых и реализована вся прикладная логика. Пока все это работает в ограниченном масштабе, все идет великолепно. Предположим, что организация, для которой выполнялась разработка, настолько выросла, что вновь возникшие задачи потребовали децентрализации хранения и обработки данных и, соответственно, развития информационной системы. Здесь и совершается ошибка. Подходы, хорошо зарекомендовавшие себя во вполне определенных условиях, автоматически переносятся в совершенно иную среду, с иными правилами жизнедеятельности. В результате система становится неработоспособной и должна быть создана заново, но уже с применением адекватных средств.

1. РАЗРАБОТКА КОНЦЕПТУАЛЬНОЙ МОДЕЛИ БАЗЫ ДАННЫХ

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

Информационная и функциональная модели предметной области создаются на этапе анализа требований к базе данных и не содержат предположений о технологии реализации базы данных. Они строятся независимо от выбираемой модели данных (сетевой, иерархической, реляционной, объектно-ориентированной, многомерной и т.д.), поддерживаемой СУБД, модели вычислений, программно-аппаратной платформы для базы данных. Информационная и функциональная модели предметной области являются входными данными для процесса проектирования базы данных. Поэтому проектировщик должен уметь правильно интерпретировать их в ходе решения своих проектных задач.

Целью проектирования распределенной базы данных «Кинотеатр» является создание информационной системы для работы кинотеатра. Пользователями данной распределённой базы данных будут являться сотрудники кинотеатра, клиенты и потенциальные потребители услуг. В базе данных должна быть отражена информация о фильмах, режиссерах, сеансах. Поэтому входными данными для проектирования базы данных должны быть следующие характеристики:

  • информация о режиссерах: ФИО, дата рождения, страна;

  • информация о фильмах: название фильма, жанр, режиссер и год выхода;

  • информация о сеансах: фильм, время начала фильма, зал, цена;

База данных «Кинотеатр» должна выполнять следующие задачи:

  • предоставлять возможность для внесения, изменения и удаления информации о фильмах, сеансах и режиссерах;

В базе данных «Кинотеатр» будут формироваться следующие таблицы:

  • режиссер;

  • фильм;

  • жанр;

  • страна;

  • жанр;

  • сеанс.

Таблица «Режиссер» будет содержать следующие поля:

  • код;

  • фамилия;

  • имя;

  • отчество;

  • страна;

Таблица «Фильм» будет содержать следующие поля:

  • код;

  • название фильма;

  • жанр;

  • режиссер;

  • год выхода.

Таблица «Страна» будет содержать следующие поля:

  • код;

  • название страны.

Таблица «Жанр» будет содержать следующие поля:

  • код;

  • название.

Таблица «Сеанс» будет содержать следующие поля:

  • код;

  • фильм;

  • зал,

  • цена.

Таблица «Зал» будет содержать следующие поля:

  • код;

  • название зала,

  • кол-во рядов,

  • кол-во мест.

Рисунок 1 - ER диаграмма для сущности «Фильм»

Рисунок 2 - ER диаграмма для сущности «Жанр»

Рисунок 3 - ER диаграмма для сущности «Сеанс»

Рисунок 4 - ER диаграмма для сущности «Зал»

Рисунок 5 - ER диаграмма для сущности «Режиссер»

Рисунок 6 - ER диаграмма для сущности «Страна»

2 ЛОГИЧЕСКОЕ ПРОЕКТИРОВАНИЕ

База данных должна удовлетворять следующим эксплуатационным требованиям:

  • База данных должна удовлетворять актуальным информационным потребностям;

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

  • База данных должна удовлетворять выявленным и вновь возникающим требованиям конечных пользователей;

  • База данных должна легко расширяться при реорганизации и расширении предметной области;

  • База данных должна легко изменяться при изменении программной и аппаратной среды;

  • Загруженные в базу данных корректные данные должны оставаться корректными;

  • Данные до включения в базу данных должны проверяться на достоверность;

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

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

Таблица 1 - Таблица атрибутов для ассоциации«Фильм»

Поле

Ключи

Размер

Формат

Свойства

Код

первичный ключ

11

int

Not null

Название

отсутствует

255

varchar

Not null

Жанр

внешний ключ

255

varchar

Not null

Режиссер

внешний ключ

255

varchar

Not null

Год выхода

отсутствует

11

int

Not null

Таблица 2 - Таблица атрибутов для сущности «Режиссер»

Поле

Ключи

Размер

Формат

Свойства

Код

первичный ключ

11

int

Not null

Фамилия

отсутствует

255

varchar

Not null

Имя

отсутствует

255

varchar

Not null

Страна

внешний ключ

255

varchar

Not null

Таблица 3 - Таблица атрибутов для сущности «Страна»

Поле

Ключи

Размер

Формат

Свойства

Код

первичный ключ

11

int

Not null

Название

отсутствует

255

varchar

Not null

Таблица 4 - Таблица атрибутов для сущности «Жанр»

Поле

Ключи

Размер

Формат

Свойства

Код

первичный ключ

11

int

Not null

Название

отсутствует

255

varchar

Not null

Таблица 5 - Таблица атрибутов для сущности «Сеанс»

Поле

Ключи

Размер

Формат

Свойства

Код

первичный ключ

11

int

Not null

Фильм

внешний ключ

255

varchar

Not null

Время

отсутствует

11

int

Not null

Зал

внешний ключ

255

varchar

Not null

Цена

отсутствует

11

int

Not null

Таблица 6 - Таблица атрибутов для сущности «Зал»

Поле

Ключи

Размер

Формат

Свойства

Код

первичный ключ

11

int

Not null

Название

отсутствует

255

varchar

Not null

Кол-во рядов

отсутствует

11

int

Not null

Кол-во мест

отсутствует

11

int

Not null

3 ФИЗИЧЕСКОЕ ПРОЕКТИРОВНИЕ

3. 1 Создание базы данных и таблиц

Ниже представлен код создания базы данных на языке SQL:

create database kinoteatr on

( name = 'kinoteatr',

filename = 'E:Program FilesMicrosoft SQL ServerMSSQL10.MSSQLSERVERMSSQLDATAkinoteatr.mdf',

size = 10 mb)

log on (

name = 'kinoteatr_log',

filename = 'E:Program FilesMicrosoft SQL ServerMSSQL10.MSSQLSERVERMSSQLDATAkinoteatr_log.ldf',

size = 3 mb)

Код создания таблицы «Фильм»:

create table film (id_film int primary key, name varchar(20), ganre varchar(20),

director varchar(20), god int)

Код создания таблицы «Сеанс»:

ccreate table seans (id_seansint primary key, film varchar(20), vremya varchar(10), zal varchar (20), price int)

Код создания таблицы «Жанр»

create table ganre (id_ganreint primary key, name varchar(20))

Код создания таблицы «Режиссер»:

create table director (id_directorint primary key, familiya varchar (20), imya char (20), land varchar (20))

Код создания таблицы «Зал»:

create table zal (id_zalint primary key, name varchar (20), number_rowsint, number_placeint)

Код создания таблицы «Страна»:

create table land (id_landint primary key, name_land varchar (20))

3. 2 Добавление внешних ключей

Ниже представлен код SQL-запросов на добавление внешних ключей в таблицы.

Добавление внешних ключей в таблицу «Фильм»:

alter table film add constraint q foreign key (ganre) references ganre(id_ganre)

alter table film add constraint w foreign key (director) references director (id_director)

Добавление внешних ключей в таблицу «Сеанс»:

alter table seans add constraint e foreign key (film) references film(id_film)

alter table seans add constraint r foreign key (zal) references zal(id_zal)

Добавление внешних ключей в таблицу «Режиссер»:

alter table director add constraint y foreign key (land) references land(id_land)

3. 3 Заполнение таблиц

Заполнение таблицы «Страна»:

insert into land values (1, 'Россия')

insert into land values (2, 'Германия')

insert into land values (3, 'США')

insert into land values (4, 'Англия')

insert into land values (5, 'Франция')

insert into land values (6, 'Голландия')

insert into land values (7, 'Австралия')

insert into land values (8, 'Австрия')

insert into land values (9, 'Япония')

insert into land values (10, 'Китай')

Заполнение таблицы «Жанр»:

insert into ganre values (1, 'Боевик')

insert into ganre values (2, 'Комедия')

insert into ganre values (3, 'Ужасы')

insert into ganre values (4, 'Драма')

insert into ganre values (5, 'Мелодрама')

insert into ganre values (6, 'Фантастика')

insert into ganre values (7, 'Фэнтези')

insert into ganre values (8, 'Триллер')

insert into ganre values (9, 'Вестерн')

insert into ganre values (10, 'Исторический')

Рисунок 7 – Таблица «Страна»

Рисунок 8 – Таблица «Режиссер»

Рисунок 9- Таблица «Фильм»

Рисунок 10 – Таблица «Жанр»

Рисунок 11 – Таблица «Сеанс»

Рисунок 12 – Таблица «Зал»

Рисунок 13 – Диаграмма баз данных

3. 4 Создание запросов

Запрос на выборку всех фильмов вышедших в 2012 году:

select film.name, director.familiya, director.imya from film inner join director on film.director=id_director where god='2012'

Рисунок 14 – Результат запроса

Запрос на выборку всех фильмов и режиссеров с использованием соединения:

select film.name, director.familiya, director.imya from film inner join director on film.director=id_director order by (name)

Рисунок 15 – Результат запроса

Запрос на выборку всех столбцов из таблицы «Фильм»:

select * from film

Рисунок 16 – Результат запроса

Запрос на выборку всех фильмов и всех жанров с использованием соединения:

select film.name, ganre.name from film inner join ganre on film.ganre = ganre.id_ganre

Рисунок 17 – Результат запроса

Запрос, подсчитывающий сколько фильмов определенного жанра:

select ganre.name, COUNT(film.name) from film inner join ganre on film.ganre = ganre.id_ganre group by ganre.name

Рисунок 18 – Результат запроса

Запрос, отображающий фильмы одного жанра и подсчитывающий общее число фильмов данного жанра:

select ganre.name, film.name from film inner join ganre on film.ganre = ganre.id_ganre order by ganre.name compute COUNT(film.name) by ganre.name

Рисунок 19 – Результат запроса

Запрос на выборку и фильмов начинающиеся с буквы «к»:

select name from film where name like 'к%'

Рисунок 20 – Результат запроса

Запрос, отображающий самый ранний фильм:

selectname,god,familiya from film inner join director on film.director=director.id_director where god = (select MIN ( god) from film)

Рисунок 21 – Результат запроса

3. 5 Создание представлений

Код создания представления:

create view asd as select name from film where name like 'к%'

Рисунок 22– Представление «Фильм»

3. 6 Создание процедур и триггеров

Код создания процедуры на выбор фильмов вышедших раньше 2010 года:

create procedure proc1 @a int

as

begin

select * from film where god 10) rollback end

Рисунок – 24 Результат триггера

3. 7 Создание транзакции

Код создания транзакции на добавление данных о новом режиссер и фильме:

BEGIN TRAN

INSERT INTO director VALUES (11,'Самойлов', 'Алексей', 1)

INSERT INTO film VALUES (24, 'Матрица','1999',1,11)

IF (@@error = 0) BEGIN

COMMIT TRAN

END

ELSE BEGIN

PRINT 'возникла ошибка'

ROLLBACK TRAN

END

Рисунок – 25 Добавление фильма

Рисунок – 26 Добавление режиссера

ЗАКЛЮЧЕНИЕ

Проделав данный курсовой проект, была создана распределенная база данных «Кинотеатр» в которой хранится информация о названии фильма, дате его выхода, о жанре фильма, о том, в какой стране родился режиссер, ФИ режиссера, подробной информации о сеансах и залах. Также были отработаны навыки по созданию разнообразных запросов, транзакций, процедур и триггеров. В результате чего данная распределенная база данных превосходно выполняет поставленные задачи, имея при этом понятный доступ к информации.

СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ

  1. Гайдамакин Н.А. Автоматизированные информационные системы, базы и банки данных. - М.: Гелиос, 2002. - 654 c.

  2. Голицина О.Л. Базы данных / О.Л.Голицина, Н.В.Максимов, И.И.Попов. - М.: Форум, 2007. - 285 с.

  3. Кузин А.В. Базы данных.- М.: Академия, 2008. – 345 c.

  4. Малыхина М.П. Базы данных: основы, проектирование, использование. - СПб.: БХВ - Петербург, 2004. - 786 c.

Цыганков В.М. Базы данных. - М.: Корона-Принт, 2004. - 546 с.

Просмотров работы: 6432