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

Федеральное агентство по образованию

Санкт-Петербургский  Государственный  электротехнический университет 

«ЛЭТИ»

Кафедра МО ЭВМ

Пояснительная записка к курсовому проекту 

по  дисциплине базы данных

Выполнил: студент  гр. 4351

Кузьменко А.В.

Преподаватель: Чебоксарова Т.Н.

Фомичева  Т.Г.

Санкт-Петербург

2006

Задание (вариант 10)

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

Справочной  службе могут потребоваться следующие  сведения о текущем состоянии  проката фильмов в городе:

-   Репертуар кинотеатра?

-   Адрес и район кинотеатра?

-   Число свободных мест на данный сеанс в указанном кинотеатре?

-   Цена билетов на данный сеанс в указанном кинотеатре?

-   Жанр, производство и режиссер данного фильма?

-   Какие фильмы имеют награды, когда и в каких кинотеатрах они демонстрируются?

-   В каких кинотеатрах в указанный день на указанных сеансах демонстрируется комедия?

-   В каких кинотеатрах и когда демонстрируются фильмы с участием указанного актера?

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

Содержание

1. Проектирование базы данных.................................................................... 4
2. Структуры таблиц и постоянные  связи между таблицами..................... 5
3. Содержимое таблиц, на котором  производилась отладка системы....... 7
4. Схема иерархии интерфейса...................................................................... 9
5. Описание экранных форм.......................................................................... 10
6. Описание запросов...................................................................................... 24
7. Описание отчетов........................................................................................ 28
8. Заключение.................................................................................................. 32

1. Проектирование базы данных

Для проектирования базы данных выбран универсальный метод проектирования — ER-метод (метод "сущность-связь"). При использовании этого метода необходимо прежде всего создать ER- модель, отражающую связи сущностей заданной предметной области. описание сущностей включает в себя перечисление атрибутов сущностей — их свойств, необходимых для решения задачи, один или несколько атрибутов могут быть ключевыми, то есть однозначно определяющими экземпляр сущности (они подчеркнуты).

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

1) в городе нет кинотеатров с одинаковым названием;

2) в прокате  нет фильмов с одинаковым названием;

3) в прокате  нет фильмов с одинаковыми  наградами;

Учитывая  это, построим ER-диаграмму по нотации  Баркера:

 

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

Связь "Кинотеатр" — "Зал" требует два отношения  — "Кинотеатр", "Зал" и ключевой атрибут сущности "Кинотеатр" становится частью составного ключа  отношения "Зал".

Связь "Зал" — "Сеанс" также требует два отношения - "Зал", "Сеанс", при этом составной ключ отношения "Зал" (включает ключ сущностей "Зал" и "Кинотеатр") становится частью составного ключа отношения "Сеанс".

Тогда связь "Кинотеатр" — "Сеанс", требующая  двух отношений и перехода ключа, уже будет учтена, так как ключ сущности "Кинотеатр" входит в состав ключа отношения "Зал".

Связь "Фильм" — "Сеанс" требует два отношения - "Фильм" и "Сеанс"; ключ сущности "Фильм" становится атрибутом  отношения "Сеанс".

Связи "Кинотеатр" — "Фильм" и "Зал" — "Фильм" требуют каждое трех отношений — по два для сущностей и по одному для связи. Но в качестве отношения для связи в обоих случаях может выступать отношение "Сеанс", так как оно имеет атрибуты, являющиеся ключевыми в отношениях "Кинотеатр", "Фильм" и "Зал".

Связь "Фильм" — "Актер" требует три отношения - "Фильм", "Актер" и одно для  связи — "Роли", его атрибутами будут ключи отношений "Фильм" и "Актер".

Связь "Фильм" — "Призы" требует два отношения  — "Фильм" и "Призы"; ключевой атрибут сущности "Фильм" становится частью составного ключа отношения "Призы".

Таким образом, получим отношения со следующими атрибутами и функциональными зависимостями:

1) Кинотеатр  (название, район, адрес, категория)

название ® район, адрес, категория

адрес ® название, категория, район

2) Зал (Кинотеатр№ зала, вместимость)

кинотеатр№ зала ® вместимость

3) Фильм (название, режиссер, оператор, жанр, производство, продолжительность, кадр из фильма, прокатная стоимость)

название ® режиссер, оператор, жанр, производство, продолжительность, кадр из фильма, прокатная стоимость;

4) Актеры (ФИО)

5) Роли (Актер,  Фильм)

6) Призы (НазваниеФильм)

7) Сеанс (кинотеатрзал, фильм, датавремя, цена билета, количество свободных мест)

кинотеатрзалдатавремя ® фильм, количество свободных мест, цена билета; 

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

2. Структуры таблиц и постоянные связи между таблицами

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

   
   

Постоянные  связи между таблицами

3. Содержимое таблиц, на котором производилась  отладка системы.

   
   

4. Схема иерархии интерфейса.

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

 

5. Описание экранных  форм

5.1 Форма "Главная"

Внешний вид:

Назначение: выбор дальнейших операций

Источник  данных: -

Компоненты:

1) кнопка "Кинотеатры" — открыть форму "Кинотеатры", закрыть форму "Главная";

2) кнопка "Справочная  служба" — открыть форму "Справочная  служба" , закрыть форму "Главная";

3) кнопка "Выход"  — выход из Microsoft Access;

5.2 Форма "Кинотеатры"

5.2.1. Вкладка "Добавление  фильма"

Внешний вид:

Назначение: добавление фильма в репертуар кинотеатра

Источник  данных: -

Компоненты:

1) поле со  списком "Кинотеатры" — источник  данных — запрос

SELECT Кинотеатры.Название FROM Кинотеатры;

2) кнопка "Новый  фильм" — открыть форму "Перечень  фильмов"

3) Подчиненная  форма "Сеансы" — форма, основанная на вспомогательной таблице "всп_сеансы";

4) кнопка "Отмена" — очистить поля "фильм", "начало  проката" и "конец проката", удалить все записи из таблицы  "всп_сеансы" (запрос "з_всп_сеансы");

5) кнопка "OK" — открытие запросов, заполняющих вспомогательную таблицу "всп_дни" в соответствии с днями проката (будни или выходные) — d_1, d_2; открытие запросов на добавление записей в таблицу "Сеансы" — ЗС1, ЗС2, ЗС3; открытие запросов на удаление всех записей из вспомогательных таблиц "всп_сеансы" и "всп_дни" — "з_всп_сеансы", "з_дни";

6) кнопка "Выход" - закрыть форму "Кинотеатры", открыть форму "Главная";

5.2.2. Вкладка "Удаление  фильма"

Внешний вид:

Назначение: удаление фильма из репертуара кинотеатра

Источник  данных: -

Компоненты:

1) поле со списком "Кинотеатры" — источник данных — запрос

SELECT Кинотеатры.Название FROM Кинотеатры;

2) поле со  списком "Кинотеатры" — источник  данных — запрос

SELECT Сеансы.Фильм  FROM Сеансы WHERE (((Сеансы.Кинотеатр) = Forms! Кинотеатры![к/т])) GROUP BY Сеансы.Фильм;

3) кнопка "Отмена" — очистить поле "фильм";

4) кнопка "Удалить"  — открытие запроса, удаляющего  из таблицы "Сеансы" все записи  с указанным фильмом — "Удалитьфильм";

5) кнопка "Выход" - закрыть форму "Кинотеатры", открыть форму "Главная";  

5.2.3. Вкладка "Создание афиши"

Внешний вид:

Назначение: удаление фильма из репертуара кинотеатра

Источник  данных: -

Компоненты:

1) поле со  списком "Кинотеатры" — источник  данных — запрос

SELECT Кинотеатры.Название FROM Кинотеатры;

2) поле со  списком "Кинотеатры" — источник данных — запрос

SELECT Сеансы.Фильм  FROM Сеансы WHERE (((Сеансы.Кинотеатр) = Forms! Кинотеатры![к/т])) GROUP BY Сеансы.Фильм;

3) кнопка "Отмена" — очистить поле "фильм";

4) кнопка "Создать"  — открытие запросов, добавляющих  в соответствии с днями, когда идут сеансы с заданным фильмом записи во вспомогательную таблицу "всп_афиша" - "з_афиша_будни", "з_афиша_вых"; открытие отчета "афиша"; открытие запроса, удаляющего все записи из вспомогательной таблицы "всп_афиша" — "аф";

5) кнопка "Выход" - закрыть форму "Кинотеатры", открыть форму "Главная";

5.3 Форма "Справочная  служба"

Внешний вид:

Назначение: выбор дальнейших операций

Источник  данных: -

Компоненты:

1) кнопки "Справки", "Продажа билетов", "Перечень  кинотеатров", "Перечень фильмов"  — открыть одноименные формы;

2) кнопка "Отчет"  — открыть отчет "Отчет"

3) кнопка "Выход"  — закрыть форму "Справочная  служба", открыть форму "Главная";

5.4. Форма "Билеты"

Внешний вид:

Назначение: продажа билетов на сеанс

Источник  данных: -

Компоненты:

1) поле со  списком "Кинотеатры" — источник данных — запрос

SELECT Кинотеатры.Название FROM Кинотеатры;

2) поле со  списком "Фильм" — источник  данных — запрос

SELECT Сеансы.Фильм  FROM Сеансы WHERE (((Сеансы.Кинотеатр)=Forms!Билеты![к/т])) GROUP BY Сеансы.Фильм;

3) поле со  списком "Зал" — источник данных — запрос

SELECT Сеансы.Зал  FROM Сеансы WHERE (((Сеансы.Кинотеатр)=Forms!Билеты![к/т]) And ((Сеансы.Фильм)=Forms!Билеты!фильмы)) GROUP BY Сеансы.Зал;

4) поле со  списком "Дата" — источник  данных — запрос

SELECT Сеансы.Дата FROM Сеансы WHERE (((Сеансы.Зал)=Forms!Билеты!зал) And ((Сеансы.Кинотеатр)=Forms!Билеты![к/т]) And ((Сеансы.Фильм)=Forms!Билеты!фильмы)) GROUP BY Сеансы.Дата;

5) поле со  списком "Время" — источник  данных — запрос

SELECT Сеансы.Время  FROM Сеансы WHERE (((Сеансы.Зал)=Forms!Билеты!зал) And ((Сеансы.Кинотеатр)=Forms!Билеты![к/т]) And ((Сеансы.Фильм)=Forms!Билеты!фильмы) And ((Сеансы.Дата)=Forms!Билеты!дата)) GROUP BY Сеансы.Время;

6) подчиненная  форма "Цена и кол-во" —  форма "З_билеты", основанная  на запросе "З_билеты";

7) кнопка "Продать" - открывает запросы "З_продать", "обн_доход" или "доб_доход"  в зависимости от того, надо  ли добавить запись во вспомогательную  таблицу "доход", где хранятся  сведения о доходе кинотеатров  по дням, или обновить запись;

8) кнопка "Выход" - закрыть форму "Продажа билетов" , открыть форму "Справочная служба";

5.5 Форма "Билеты"

5.5.1 Вкладка "Добавление  кинотеатра"

Внешний вид:

Назначение: добавление кинотеатра в перечень кинотеатров.

Источник  данных: -

Компоненты:

1) поле со  списком "Районы" — источник данных — таблица "Районы" с пеерчислением всех районов города;

2) поле со  списком "Категория" — источник  данных список значений (1;2;3)

3) подчиненная  форма "Залы" — источник  данных — вспомогательная таблица  для ввода "всп_3з"

4) кнопка "ОК" — открытие запросов "Добавление кинотеатра", "доб_залы"

5) кнопка "Отмена" — очищение полей "Название", "Район", "Адрес", "Категория", удаление всех записей из вспомогательной  таблицы "всп_3з" (запрос "всп_3");

6) кнопка "Выход" - закрыть форму "Перечень кинотеатров", открыть форму "Справочная служба";

5.5.2 Вкладка "Удаление  кинотеатра"

Внешний вид:

Назначение: продажа билетов на сеанс

Источник  данных: -

Компоненты:

1) поле со  списком "Название" — источник  данных — запрос

SELECT Кинотеатры.Название FROM Кинотеатры;

2) кнопка "Удалить"  — открытие запросов "Вр_удаление", и, если флаг "Временое удаление" не установлен, то "Удаление кинотеатра";

5) кнопка "Отмена" — очищение полей "Название", сброс флага "Временое удаление";

6) кнопка "Выход" - закрыть форму "Перечень кинотеатров", открыть форму "Справочная  служба";

5.6 Форма "Перечень  фильмов"

5.6.1 Страница "Добавить  фильм"

Внешний вид:

Назначение: добавление фильма в перечень фильмов

Источник  данных: -

Компоненты:

1) Подчиненная  форма "Актеры" — форма "всп", основанная на вспомогательной  таблице "всп"

2) Подчиненная форма "Призы" — форма "всп2", основанная на вспомогательной таблице "всп2"

3) кнопка "ОК" — открытие запросов "З1_фильмы", "З1_актеры", "З1_призы";

4) кнопка "Отмена" — очищение всех полей формы,  открытие запросов, очищающих таблицы  "всп" и "всп2" — "З1_всп", "З1_всп2";

5) кнопка "Выход" - закрыть форму "Перечень фильмов", открыть форму "Справочная  служба";

5.6.2 Страница "Удалить  фильм"

Внешний вид:

Назначение: удаление фильма из перечня фильмов

Источник  данных: -

Компоненты:

1) Поле со  списком "Название фильма" —  источник данных — таблица  "Фильмы"

2) кнопка "Удалить"  — открытие запроса на удаление "З2_фильм";

4) кнопка "Отмена" — очищение поля "Название  фильма";

5) кнопка "Выход" - закрыть форму "Перечень фильмов", открыть форму "Справочная служба";

5.7 Форма "Справки"

Внешний вид:

Назначение: выбор необходимой справки

Источник  данных: -

Компоненты:

1) кнопки  открывают следующие формы (по  порядку): С_Репертуар, С_адрес, С_сеансы, С_фильмы, С_награды, С_жанры, С_Актеры

2) кнопка "Выход" - закрыть форму "Справки", открыть  форму "Справочная служба";

5.7 Форма "С_Репертуар"

Внешний вид:

Назначение: определение фильмов, входящих в репертуар заданного кинотеатра

Источник  данных: -

Компоненты:

1) поле со  списком "Кинотеатр" — источник данных — запрос

SELECT Кинотеатры.Название FROM Кинотеатры;

2) подчиненная  форма "З_Реперт" основана на  запросе "З_Реперт";

5.8 Форма "С_адрес"

Внешний вид:

Назначение: определение района и адреса кинотеатра

Источник  данных: -

Компоненты:

1) поле со  списком "Кинотеатр" — источник  данных — запрос

SELECT Кинотеатры.Название FROM Кинотеатры;

2) подчиненная  форма "З_адрес" основана  на запросе "З_адрес";

5.9 Форма "С_сеансы"

Внешний вид:

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

Источник  данных: -

Компоненты:

1) поле со  списком "Кинотеатр" — источник  данных — запрос

SELECT Кинотеатры.Название FROM Кинотеатры;

2) поле со  списком "Зал" — источник  данных — запрос

SELECT Сеансы.Зал  FROM Сеансы WHERE (((Сеансы.Кинотеатр)= Forms!С_сеансы![к/т])) GROUP BY Сеансы.Зал ORDER BY Сеансы.Зал;

3) поле со  списком "Дата" — источник  данных — запрос

SELECT Сеансы.Дата FROM Сеансы WHERE (((Сеансы.Кинотеатр)=Forms!С_сеансы![к/т]) And ((Сеансы.Зал)= Forms!С_сеансы!зал)) GROUP BY Сеансы.Дата ORDER BY Сеансы.Дата;

4) поле со  списком "Время" — источник  данных — запрос

SELECT Сеансы.Время  FROM Сеансы WHERE (((Сеансы.Кинотеатр)=Forms!С_сеансы![к/т]) And ((Сеансы.Зал)= Forms!С_сеансы!зал) And ((Сеансы.Дата)=Forms!С_сеансы!Дата)) GROUP BY Сеансы.Время ORDER BY Сеансы.Время;

5) подчиненная  форма "З_сеансы" основана на  запросе "З_сеансы";

5.10 Форма "С_фильмы"

Внешний вид:

Назначение: определение сведений о фильме

Источник  данных: -

Компоненты:

1) поле со  списком "Фильм" — источник данных — запрос

SELECT Фильмы.Название FROM Фильмы;

2) подчиненная  форма "З_Фильмы" основана на  запросе "З_Фильмы";

5.11 Форма "С_жанр"

Внешний вид:

Назначение: определение кинотеатров, где на определенном сеансе идет фильм определенного жанра

Источник данных: -

Компоненты:

1) поле со  списком "Жанр" — источник  данных — запрос

SELECT Фильмы.Жанр FROM Фильмы INNER JOIN Сеансы ON Фильмы.Название=Сеансы.Фильм  GROUP BY Фильмы.Жанр;

2) поле со  списком "Дата" — источник  данных — запрос

SELECT Сеансы.Дата FROM Фильмы INNER JOIN Сеансы ON Фильмы.Название=Сеансы.Фильм WHERE (((Фильмы.Жанр)= Forms!С_жанр!жанр)) GROUP BY Сеансы.Дата ORDER BY Сеансы.Дата;

3) поле со  списком "Время" — источник  данных — запрос

SELECT Сеансы.Время  FROM Фильмы INNER JOIN Сеансы ON Фильмы.Название=Сеансы.Фильм WHERE (((Сеансы.Дата)=Forms!С_жанр!дата) And ((Фильмы.Жанр)=Forms!С_жанр!жанр)) GROUP BY Сеансы.Время ORDER BY Сеансы.Время;

4) подчиненная  форма "З_Жанр" основана на  запросе "З_Жанр";

5.12 Форма "С_актеры"

Внешний вид:

Назначение: определение фильмов, где играет заданный актер и сеансов с этими фильмами

Источник  данных: -

Компоненты:

1) поле со  списком "Фильм" — источник  данных — запрос

SELECT Роли.Актер  FROM (Фильмы INNER JOIN Роли ON Фильмы.Название=Роли.Фильм) INNER JOIN Сеансы ON Фильмы.Название=Сеансы.Фильм GROUP BY Роли.Актер ORDER BY Роли.Актер;

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