Проектирование информационной системы для хранения данных о фильмах и кинотеатрах

  • Вид работы:
    Дипломная (ВКР)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    395,76 kb
  • Опубликовано:
    2011-11-20
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Проектирование информационной системы для хранения данных о фильмах и кинотеатрах

Содержание

1. Постановка задачи

2. Проектирование информационной системы

2.1 Построение диаграммы вариантов использования

2.2 Диаграмма последовательности действий

2.3 Построение диаграммы классов

3. Проектирование реляционной модели базы данных

4. Мапирование реляционной модели в метамодель

4.1 Построение диаграммы классов для метамодели

4.2 Проектирование метамодели базы данных

5. Логическая реализация Базы данных

6. Физическая реализация Базы данных

6.1 Скрипты

7. Создание выборок

Выводы

Список литературы

Приложение

1. Постановка задачи


Кинотеатры (информация для зрителей):

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

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

2. Проектирование информационной системы


2.1 Построение диаграммы вариантов использования


На первом этапе предпроектного исследования выяснено, что основная задача разрабатываемой системы - сопровождение процесса.

Диаграмма вариантов использования представлена на картинке ниже:

Рисунок 2.1 - Диаграмма вариантов использования

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

информационная система база программа

2.2 Диаграмма последовательности действий


Ниже представлена диаграмма последовательности действий:

Рисунок 2.2 - Диаграмма последовательности действий

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

 

2.3 Построение диаграммы классов


На рисунке ниже представлена диаграмма классов:

Рисунок 2.3 - Диаграмма классов

Исходя из диаграммы последовательности действий, мы получим 2 класса: Фильм и Кинотеатр. В класс Фильм входят 6 атрибутов, из которых атрибут ID_фильма является идентификационным номером фильма. Класс Кинотеатр имеет также 6 атрибутов, в котором ID_кинотеатра является его идентифицирующим номером. Классы соединены между собой отношением "Многие ко многим".

3. Проектирование реляционной модели базы данных


Возьмем за правило считать классы сущностями. Объектной модели можно сопоставить модели данных из-за постоянного характера классов. Стойкие классы могут выступать в качестве постоянного хранения данных во время работы приложения. Следовательно, для всех постоянных классов можно применить утверждение, что они могут использовать однозначное отображение в сущностях. Этот процесс называется "Маппирование" (от. англ. Mapping).

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

Таблица 3.1 Атрибуты отношения "Фильм"

Атрибут

Описание

ID_фильма

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

Название_фильма

Название фильма

Длительность Жанр Рейтинг Цена билета

Длительность фильма Жанр фильма Рейтинг фильма Цена билета


Отношению Фильм соответствует полная ФЗ: ID_фильма → Название фильма, длительность, жанр, рейтинг, цена билета. Все поля кроме "ID_фильма" не могут быть первичным ключом.

Таблица 3.2 Атрибуты отношения "Кинотеатр"

АтрибутОписание


ID_кинотеатра

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

Адрес

Адрес кинотеатра

Название_кинотеатра Число_мест Акустическая_система Формат_экрана

Название кинотеатра Число мест Акустическая система Формат экрана


Отношению Кинотеатр соответствует полная ФЗ: ID_кинотеатра → адрес, название кинотеатра, число мест, акустическая система, формат экрана. Все поля кроме "ID_кинотеатра" не могут быть первичным ключом.

Анализ функциональных зависимостей, которые имеют место для отношений Фильм и Кинотеатр показывает, что они полные. Следовательно, универсальное отношение Кинотеатр-Фильм нормализовано.

Сущности Фильм и Кинотеатр соединены связью "многие ко многим" (М: N). Мощность связи многие-ко-многим означает неоднозначность связи экземпляров сущностей. Для разрешения этой проблемы вводим составную сущность ids. Она состоит из первичных ключей соединяемых сущностей.

Окончательная реляционная модель базы данных выглядит следующим образом:

Рисунок 3.1 - Реляционная модель базы данных

4. Мапирование реляционной модели в метамодель


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

Одним из основоположников метамодели стал Анатолий Тенцер [4]. Он описал пять основных тезисов, на которых должна строиться проектируемая база данных:

.        Каждая сущность, информация о которой хранится в БД, - это объект.

2.       Каждый объект уникален в пределах БД и имеет уникальный идентификатор.

.        Объект имеет свойства (строковые, числовые, временные, перечислимые), которые описывают атрибуты сущности.

.        Объекты могут быть связаны между собой произвольным образом. Связь характеризуется связанными объектами и типом связи.

.        Объект может быть хранилищем. В этом случае допускается хранение в нем других объектов.

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

4.1 Построение диаграммы классов для метамодели


Исходя из описанных выше утверждений, была спроектирована диаграмма классов, которая удовлетворяет этим тезисам (рис.4.1).

Как видно из диаграммы классов она состоит из 4 классов: Типы, Объекты, Атрибуты и Параметры. В каждом классе, кроме класса Параметры, имеется 3 атрибута, из которых один - это идентификатор данного класса. В классы Объекты и Атрибуты мигрирует идентификатор из класса Типы. Класс Параметры не имеет своего идентификатора, но в него мигрируют идентификаторы из классов Атрибуты и Объекты.

Рисунок 4.1 - Диаграмма классов

4.2 Проектирование метамодели базы данных


Отношения Типы, Объекты, Атрибуты и Параметры, выявленные на этапе построения концептуальной модели характеризуются следующими атрибутами (табл.3.1).

Таблица 3.1 Атрибуты отношения "Типы"

АтрибутОписание


ID_типа_объекта

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

Название

Название типа

Описание

Описание типа


Таблица 3.2 Атрибуты отношения "Объекты"

АтрибутОписание


ID_объекта

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

ID_типа_объекта

Внешний ключ отношения "Типы"

Название_объекта

Название объекта


Таблица 3.3 Атрибуты отношения "Атрибуты"

АтрибутОписание


ID_атрибута

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

ID_типа_объекта

Внешний ключ отношения "Типы"

Название_атрибута

Название атрибута


Таблица 3.3 Атрибуты отношения "Параметры"

АтрибутОписание


ID_объекта

Внешний ключ отношения "Объекты"

 ID_отношения ID_атрибута

Показывает отношение между объектами Внешний ключ отношения "Атрибуты"

Текстовое значение Номерное значение

Поле для текстовых данных Поле для числовых данных


Отношение Параметры играет роль связи "Многие ко Многим", а атрибут ID_отношения показывает эту связь.

5. Логическая реализация Базы данных


Реализуем таблицу cf_types. Для идентификации записей введем первичный ключ object_type_id.

Таблица 5.1 Обоснование типов полей таблицы cf_types:

Атрибут

Столбец

Тип данных

Мотивация

Примечание

ID_типа_объекта

object_type_id

NUMBER


Primary Key

Название

name

VARCHAR2 (50)

Название


Описание

description

VARCHAR2 (100)

Описание



Реализуем таблицу cf_obj. Для идентификации записей введем первичный ключ object_id.

Таблица 5.2 Обоснование типов полей таблицы cf_obj:

Атрибут

Столбец

Тип данных

Мотивация

Примечание

ID_объекта

object_id

NUMBER


Primary Key

ID_типа_объекта

object_type_id

NUMBER


Foreign Key

Название_объекта

VARCHAR2 (150)

Название объекта



Реализуем таблицу cf_attr. Для идентификации записей введем первичный ключ attr_id.

Таблица 5.3 Обоснование типов полей таблицы cf_attr:

Атрибут

Столбец

Тип данных

Мотивация

Примечание

ID_атрибута

attr_id

NUMBER


Primary Key

ID_типа_объекта

object_type_id

NUMBER


Foreign Key

Название_атрибута

name

VARCHAR2 (50)

Название атрибута



Реализуем таблицу cf_par. Первичных ключей таблица не имеет.

Таблица 5.4 Обоснование типов полей таблицы cf_par:

Атрибут

Столбец

Тип данных

Мотивация

Примечание

ID_объекта

object_id

NUMBER

Номер объекта

Foreign Key

ID_отношения

relation_id

NUMBER

Номер отношения


ID_атрибута

attr_id

NUMBER

Номер атрибута

Foreign Key

Текстовое_значение

text_value

VARCHAR2 (150)

Поле для текстовых данных


Номерное_значение

number_value

NUMBER

Поле для цифровых данных



Схема базы данных cf_meta была реализована так:

Рисунок 5.1 - Схема базы данных cf_meta

6. Физическая реализация Базы данных


6.1 Скрипты


Создадим таблицы, согласно схеме указанной выше:

Create table cf_types (_type_id Number NOT NULL,Varchar2 (50),Varchar2 (100),pk_cf_types primary key (object_type_id));table cf_attr (_id Number NOT NULL,_type_id Number,Varchar2 (50),pk_cf_attr primary key (attr_id));table cf_obj (_id Number NOT NULL,_type_id Number,Varchar2 (150),pk_cf_obj primary key (object_id));table cf_par (_id Number NOT NULL,_id Number,_id Number,_value Varchar2 (150),_value Number);table cf_attr add Constraint r_12 foreign key (object_type_id) references cf_types (object_type_id);table cf_obj add Constraint r_11 foreign key (object_type_id) references cf_types (object_type_id);table cf_par add Constraint r_14 foreign key (attr_id) references cf_attr (attr_id);

Alter table cf_par add Constraint r_13 foreign key (object_id) references cf_obj (object_id);


7. Создание выборок


Задание 1


Вывести список не повторяющихся жанров фильма.

SELECT DISTINCT text_value FROM cf_par par WHERE attr_id IN (SELECT attr_id FROM cf_attr WHERE name='genre')

 

Задание 2


Вывести название фильмов в которых 5-я буква "о"

SELECT namecf_objSUBSTR (name,5,1) ='о' AND object_type_id IN (SELECT object_type_id FROM cf_types WHERE name LIKE 'Film')

 

Задание 3


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

SELECT obj. name, genre. text_value, dur. number_valuecf_obj objcf_par genre ON genre. object_id=obj. object_idobj. name LIKE '% %'obj. object_type_id= (SELECT object_type_id FROM cf_types WHERE name='Film')genre. attr_id= (SELECT attr_id FROM cf_attr WHERE name='genre')cf_par dur ON dur. object_id=obj. object_iddur. attr_id= (SELECT attr_id FROM cf_attr WHERE name='duration')

 

Задание 4


Вывести название фильма, продолжительность и рейтинг. Цена и жанр которых описывается следующим набором данных (30.75, 35) и (Ужасы, Приключения)

obj. name, genre. text_value, dur. number_value, price. number_valuecf_obj objcf_par genre ON genre. object_id=obj. object_idobj. object_type_id= (SELECT object_type_id FROM cf_types WHERE name='Film')genre. text_value IN ('Ужасы','Приключения')cf_par price ON price. object_id=obj. object_idprice. number_value IN (35,30.75)cf_par dur ON dur. object_id=obj. object_idattr_id= (SELECT attr_id FROM cf_attr WHERE name='duration')

 

Задание 5


Вывести список фильмов, которые проходят в кинотеатре Космос

SELECT obj. namecf_obj objcf_par rel ON rel. relation_id=obj. object_idrel. attr_id IN (SELECT attr_id FROM cf_attr WHERE name='ids')rel. object_id IN (SELECT object_id FROM cf_obj WHERE name='Космос')

 

Задание 6


Вывести список кинотеатров и весь список фильмов их цен, жанров, продолжительности которые проходят в этих кинотеатрах, отсортированных по названию кинотеатра

SELECT cin. name, film. name, price. number_value, genre. text_value, duration. number_valuecf_obj cincf_par par ON par. object_id=cin. object_idpar. attr_id IN (SELECT attr_id FROM cf_attr WHERE name='ids')cf_obj film ON film. object_id=par. relation_idcf_par price ON price. object_id=film. object_idprice. attr_id= (SELECT attr_id FROM cf_attr WHERE name='price')cf_par genre ON genre. object_id=film. object_idgenre. attr_id= (SELECT attr_id FROM cf_attr WHERE name='genre')cf_par duration ON duration. object_id=film. object_idduration. attr_id IN (SELECT attr_id FROM cf_attr WHERE name='duration')BY cin. name

Задание 7


Вывести список фильмов, жанр и цену, цена которых находится в промежутке от 25 до 30

SELECT film. name, genre. text_value, price. number_value(SELECT object_id FROM cf_par WHERE number_value BETWEEN 25 AND 30 AND attr_id IN (SELECT attr_id FROM cf_attr WHERE name='price')) ff

JOIN cf_par genre ON genre. object_id=ff. object_id

AND genre. attr_id= (SELECT attr_id FROM cf_attr WHERE name='genre')cf_obj film ON film. object_id=ff. object_idcf_par price ON price. object_id=ff. object_idprice. attr_id= (SELECT attr_id FROM cf_attr WHERE name='price')

 

Задание 8


Вывести список названий кинотеатров, их адрес, акустическую систему, формат экрана, число мест в которых показывают фильм "Метро"

 

Задание 9


Вывести весь список фильмов находящихся в прокате и всю информацию по ним.

SELECT film. object_id, film. name, genre. text_value, duration. number_value, rait. number_value, price. number_valuecf_obj filmcf_par genre ON genre. object_id=film. object_idcf_par duration ON duration. object_id=film. object_idcf_par rait ON rait. object_id=film. object_idcf_par price ON price. object_id=film. object_idfilm. object_type_id= (SELECT object_type_id FROM cf_types WHERE name='Film')genre. attr_id IN (SELECT attr_id FROM cf_attr WHERE name=LOWER ('GENRE'))duration. attr_id IN (SELECT attr_id FROM cf_attr WHERE name='duration')rait. attr_id IN (SELECT attr_id FROM cf_attr WHERE name='rait')price. attr_id IN (SELECT attr_id FROM cf_attr WHERE name='price')

Выводы


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

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

Список литературы


1.       Codd E.F. Relational completeness of data base sublanguages. - Ibid. 1972, p.65-98.

2.       А. Чекалов. Базы данных: от проектирования до разработки приложений - СПб.: БХВ-Петербург, 2003. - 384 с.

.        Ульман Дж. Основы систем баз данных /Пер. c англ. М.Р. Когаловского. - М.: Финансы и статистика, 1983. - 334 с.

.        Анатолий Тенцер. База данных - хранилище объектов - М.: "КомпьютерПресс", #"510684.files/image007.gif">

Рисунок 1 - Главное меню программы

Рисунок 2 - Меню списка кинотеатров и фильмов в прокате

Рисунок 3 - Запрос по кинотеатру "Космос"

Рисунок 4 - Вывод информации по выбранному фильму

Рисунок 5 - Вывод информации по выбранному кинотеатру

Похожие работы на - Проектирование информационной системы для хранения данных о фильмах и кинотеатрах

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!