Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БД по ИТ2.doc
Скачиваний:
0
Добавлен:
26.12.2019
Размер:
130.56 Кб
Скачать

10

Техническое задание:

База данных "Фильмы". База данных должна содержать информацию о фильмах (название, жанр, продолжительность, режиссер, год выпуска, производитель, страна и др.) об актерах (фамилия, имя, годы жизни или дата рождения, место рождения, национальность, сыгранные роли, и др.), о производителях (название киностудии, где находится, год образования и др.), о режиссерах (Фамилия, Имя, годы жизни или дата рождения, место рождения, национальность, снятые фильмы, и др.).

Проектирование структуры базы данных:

  1. Уточнение задачи, формулировка требований к системе

1.1 База данных «Фильмы» может быть использована для ведения учета кинолент, которые могут быть просмотрены в зале кинотеатра. Просмотр, поиск сведений по базе данных осуществляется любым пользователем (посетителем, администрацией кинотеатра) для получения подробной информации (название, жанр, продолжительность, актеры, год выпуска, производитель и т.д.) о том или ином кинопроизведении. Сотрудники администрации должны иметь возможность добавлять новые записи о фильмах и удалять старые записи. Клиент должен иметь возможность просматривать каталог фильмов по жанру, по режиссерам, актерам и т.д.

1.2 База данных должна реализовывать следующие функции:

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

поиск фильма (например, по названию, жанру, актеру и т.д.);

поиск актера (например, по названию фильма, сыгранной роли и т.д.);

поиск киностудии, режиссера (например, по названию фильма);

удаление информации о фильмах;

выбор нужных полей;

вывод списка всех фильмов;

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

корректировка информации.

1.3. База данных должна содержать информацию о фильмах (название, жанр, продолжительность, режиссер, год выпуска, производитель, страна и др.) об актерах (фамилия, имя, годы жизни или дата рождения, место рождения, национальность, сыгранные роли, и др.), о производителях (название киностудии, где находится, год образования и др.), о режиссерах (Фамилия, Имя, годы жизни или дата рождения, место рождения, национальность, снятые фильмы, и др.).

1.4. Дополнительные требования к системе: должно быть явное разграничение прав на пользование данной системой в отношении пользователя-посетителя: он не имеет прав на изменение (удаление, добавление) информации в базе данных .

2. Анализ предметной области, определение сущностей, атрибутов, взаимосвязей

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

Для разрабатываемой базы можно выделить четыре сущности:

  • фильмы (название, жанр, время, режиссер, год выпуска, киностудия, страна) ;

  • актеры (фамилия, имя, годы жизни или дата рождения, место рождения, национальность, сыгранные роли);

  • киностудия (название киностудии, адрес, год образования);

  • режиссер (Фамилия, Имя, годы жизни или дата рождения, место рождения, национальность, снятые фильмы).

Схема сущностей:

Ф

Название

Жанр

Время

Режиссер

Год выпуска

Киностудия

Страна

Фамилия

Имя

Годы жизни или дата рождения

Место рождения

Национальность

Сыгранные роли

Название киностудии

Адрес

Год образования

ильмы
Актеры Киностудия

Режиссер

Фамилия

Имя

Годы жизни или дата рождения

Место рождения

Национальность

Снятые фильмы

Связь между сущностями Актеры - Фильмы – 1 ко многим, так как конкретный актер может играть роль в нескольких фильмах. Связь между сущностями Киностудия – Фильмы – 1 ко многим, так как одна киностудия может снимать несколько фильмов. Связь между сущностями Режиссер - Фильмы – 1 ко многим, так как одной записи из таблицы «Режиссер» может соответствовать несколько записей из таблицы «Фильмы».

3. Нормализация

3.1. Первая нормальная форма

После того, как в базе данных выделены основные сущности, ее необходимо нормализовать. Нормализация – это процесс преобразования структуры базы данных, цель которого исключение избыточности данных. Это ключевой этап разработки структуры, и заключается он в приведении структуры базы к третьей нормальной форме (3НФ). Перед тем как база будет приведена к 3НФ, ее приводят к 1НФ и ко 2НФ.

Таблица приведена к 1НФ , если выполнены следующие требования:

А) Таблица имеет простую структуру;

Б) В таблице нет одинаковых по смыслу полей;

В) В таблице нет составных полей;

Г) В таблице нет одинаковых записей.

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

Сущности были выделены так удачно, что приведение к 1НФ не внесло почти никаких изменений, единственное целесообразно объединить поля «Фамилия» и «Имя» в сущностях «Актеры» и «Режиссер», так как единое поле обеспечит более точную информацию, например, при поиске фильма по конкретному актеру. Структура базы не зависит от конкретных данных. Составных полей нет. Поля ФИО, адрес не являются составными, поскольку в процессе работы БД обращение к частям их значений не потребуется. Повторяющихся групп тоже нет, так как никакие поля не одинаковы по смыслу. В результате приведения сущностей БД к 1НФ, они будут включать в себя следующие поля:

Фамилия Имя

Годы жизни или дата рождения

Место рождения

Национальность

Сыгранные роли

Ф

Название

Жанр

Время

Режиссер

Год выпуска

Киностудия

Страна

Название киностудии

Адрес

Год образования

ильмы
Актеры Киностудия

Режиссер

Фамилия Имя

Годы жизни или дата рождения

Место рождения

Национальность

Снятые фильмы

3.2. Вторая нормальная форма

Цель нормализации – исключение избыточности, однако приведение структуры к 1НФ избыточности не уменьшает. Требуется привести структуру ко 2НФ. Для этого необходимо выполнить следующие шаги:

  1. Определить в таблице первичный ключ. Первичный ключ – это поле или группа полей, однозначно идентифицирующая запись, его значение должно быть уникально, т. е. не должно быть записей с одинаковым значением первичного ключа.

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

  3. Разделить таблицу на части в соответствии с выделенными смысловыми зависимостями.

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

Для удобства работы со структурой БД и определения взаимосвязей между сущностями БД введем семантически незначащие первичные ключи. Так для сущности «Фильмы» введем дополнительное поле «Инв_номер», для каждой из сущностей «Актеры» и «Режиссер» введем поле «Таб_номер» и , наконец, для сущности «Киностудия» - поле «Номер киностудии».

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

После определения первичных ключей можно установить взаимосвязи между сущностями. Т.к. во всех таблицах вторичные поля зависят только от первичного ключа, нет необходимости выносить какую-либо информацию в отдельные таблицы, единственное нужно создать связующую таблицу между сущностями «Фильмы» и «Актеры», т.к. в одно поле «Актеры» сущности «Фильмы» нельзя разместить несколько значений из таблицы «Актеры» (ведь в одном фильме снимается некоторый состав актеров, а не один человек). В качестве первичного ключа можно ввести дополнительное поле «№ записи». После приведения структуры базы данных ко 2НФ, она будет иметь следующий вид: