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

3.3. Третья нормальная форма

Теперь следует привести структуру базы данных к 3НФ. Она требует, чтобы в таблицах не имелось транзитивных зависимостей. Другими словами, значение никакого поля не должно выражаться через значения других полей. Если такие поля присутствуют в таблицах, то одно из полей, входящих в транзитивную зависимость, необходимо исключить.

Так в сущности «Режиссер» поле «Снятые фильмы» является избыточной информацией, т.к. она может быть получена в дальнейшем (например, в виде списка записей) при осуществлении пользователем запроса на поиск фильмов по Фамилии Имени режиссера. Т.о. результатом приведения к 3НФ является структура:

4. Проектирование таблиц

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

Проектировка таблицы Фильмы:

Имя поля

Тип поля

Правила

Инв_номер

(инвентарный номер)

NUMBER

(численный тип)

PRIMARY KEY

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

Название

VARCHAR2(50)

NOT NULL

(обязательно для заполнения)

Жанр

VARCHAR2(15)

NOT NULL

(обязательно для заполнения)

Время

NUMBER

NOT NULL

(обязательно для заполнения)

Режиссер

NUMBER

NOT NULL

(обязательно для заполнения)

Является внешним ключом для связи с таблицей «Режиссер»

Год выпуска

NUMBER

NOT NULL

(обязательно для заполнения)

Киностудия

NUMBER

NOT NULL

(обязательно для заполнения)

Является внешним ключом для связи с таблицей «Киностудия»

Страна

VARCHAR2(15)

NOT NULL

(обязательно для заполнения)

Проектировка таблицы Киностудия:

Имя поля

Тип поля

Правила

Номер киностудии

NUMBER

(численный тип)

PRIMARY KEY

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

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

VARCHAR2(50)

NOT NULL

(обязательно для заполнения)

Адрес

VARCHAR2(15)

NOT NULL

(обязательно для заполнения)

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

NUMBER

NOT NULL

(обязательно для заполнения)

Проектировка таблицы Режиссер:

Имя поля

Тип поля

Правила

Таб_номер

NUMBER

(численный тип)

PRIMARY KEY

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

Фамилия Имя

VARCHAR2(30)

NOT NULL

(обязательно для заполнения)

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

VARCHAR2(10)

NOT NULL

(обязательно для заполнения)

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

VARCHAR2(40)

NOT NULL

(обязательно для заполнения)

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

VARCHAR2(20)

NOT NULL

(обязательно для заполнения)

Проектировка таблицы Актеры:

Имя поля

Тип поля

Правила

Таб_номер

NUMBER

(численный тип)

PRIMARY KEY

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

Фамилия Имя

VARCHAR2(50)

NOT NULL

(обязательно для заполнения)

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

VARCHAR2(15)

NOT NULL

(обязательно для заполнения)

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

VARCHAR2(40)

NOT NULL

(обязательно для заполнения)

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

VARCHAR2(15)

NOT NULL

(обязательно для заполнения)

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

VARCHAR2(65)

NOT NULL

(обязательно для заполнения)

Проектировка таблицы Главные роли:

Имя поля

Тип поля

Правила

№записи

NUMBER

(численный тип)

PRIMARY KEY

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

Инв_номер

NUMBER

(численный тип)

NOT NULL

(обязательно для заполнения)

Является внешним ключом для связи с таблицей «Фильмы»

Таб_номер

NUMBER

(численный тип)

NOT NULL

(обязательно для заполнения)

Является внешним ключом для связи с таблицей «Актеры»

Тип поля «Инв_номер» сущности «Фильмы» – численный, т.к. в это поле будут вводится цифры кода фильма (например, из картотеки), типы полей «Название», «Жанр», «Страна» сущности фильмы; «Название киностудии», «Адрес» сущности «Киностудия»; «Фамилия Имя», «Годы жизни или дата рождения», «Место рождения», «Национальность» сущностей «Режиссер» и «Актеры»; «Сыгранные роли» сущности «Актеры»- строковые, т.к. сюда будет вводится информация, текст, эти поля имеют ограничения на количество вводимых символов (чтобы не перегружать БД лишней информацией) и обязательны для заполнения (т.к. записи с незаполненными (пустыми) полями могут быть утеряны, например при осуществлении запроса по значениям какого-либо поля). Типы полей «Время», «Год выпуска» сущности «Фильмы»; «Год образования» сущности «Киностудия» - численные, т.к. сюда вводятся время и года, поля так же обязательны для заполнения для обеспечения целостности данных. Остальные поля будут численными, т.к. они являются первичными ключами (т.е. это табельные номера, номер киностудии, № записи) и внешними ключами («Режиссер» и «Киностудия» сущности «Фильмы»; «Инв_номер» и «Таб_номер» сущности «Главные роли»), они все обязательны для заполнения, т.к. значения первичного и внешнего ключа не может быть пустыми, иначе нарушается ссылочная целостность БД. Внешние ключи имеют численный тип поля, т.к они должны иметь тот же тип полей, что и первичный ключ, т.е. если бы в качестве первичного ключа использовались строковые поля, то и поля внешнего ключа имели бы такой же тип соответственно.