
1.3 Нормализация
Приведение к 1НФ.
требование (требование простой структуры).
Таблицы имеют простые структуры и не требуют изменений.
В каждой таблице информация представлена в виде совокупности строк и столбцов.
требование (отсутствие одинаковых по смыслу полей).
Одинаковых по смыслу поля отсутствуют, т.к. в таблице нет полей которые содержали бы однородные данные.
требование (отсутствие составных полей).
Составное поле «актёры» заменяем на поле «актёр»
Поля «ФИО» и «дата рождения» при выполнении заданных функций не являются составными.
требование (в табл. не должно быть одинаковых записей).
В таблице одинаковых записей нет.
Т.к. режиссёр не может снять один и тот же фильм несколько раз, то в таблице «режиссёр» нет одинаковых записей.
Т.к. актёр не может сыграть несколько ролей в одном фильме, то в таблице «актёры» нет одинаковых записей.
Т.к. не может быть двух или более фильмов с одинаковыми названиями, то в таблице «фильм» нет одинаковых записей.
С учётом данных требований получаем таблицы вида, которые представлены на рисунке 2
Название Жанр Продолжительность Актёр Год выпуска Производитель страна |
Рисунок 2 – Приведение к 1НФ.
Приведение ко 2НФ.
А) Определение первичного ключа
Выписываем и определяем у каждой сущности первичный ключ.
Сущность «Фильмы» - первичный ключ: название, актёр.
Сущность «актёры» - первичный ключ: ФИО актёра, фильм.
Сущность «режиссёр» - первичный ключ: снятый фильм.
Совокупность полей: ФИО актёра, фильм являются уникальными т.к. актёр может сыграть только одну роль в одном фильме.
Поле снятый фильм является уникальным т.к. у снятого фильма может быть только один режиссёр.
Определение первичного ключа: рис.3
фильм актёры режиссёр
Снятый фильм |
ФИО режиссёра Дата рождения национальность |
Название актёр |
Жанр продолжительность Год выпуска Производитель страна |
Фильм ФИО актёра |
Национальность Дата рождения Роль |
Рисунок №3
Б) Анализ смысловых зависимостей: рис. 4
Таблица фильм: от первичного ключа «название, актёр» не зависит не одно поле. Все поля зависят от первичного ключа частично, поэтому необходимо выделить новую таблицу фильм с первичным ключом «название».
Таблица актёры: от первичного ключа «ФИО актёра, фильм» зависит только одно поле Роль, а в свою очередь от поля ФИО актёра зависят поля национальность и дата рождения, получаем новую таблицу актёр, первичным ключом которой является поле ФИО актёра.
Таблица режиссёр: от первичного ключа снятый фильм зависит только одно поле - ФИО режиссёра, а от поля ФИО режиссёра зависят поля дата рождения и национальность, в итоге получаем новую таблицу режиссёр, первичным ключом которой является поле ФИО режиссёра.
Фильм актёр фильма актёр
н |
Жанр Год выпуска Производитель Страна Продолжительность
|
А ктёр Н азвание фильма |
ФИО актёра |
Национальность Дата рождения |
режиссёр
роль снятый фильм
Снятый фильм |
Ф |
Ф |
Дата рождения национальность |
фильм Ф |
Роль |
Рисунок №4
Т.к. таблица снятый фильм и таблица фильм имеют связь один к одному, то объединяем их в одну таблицу.
Т.к. таблица роль и таблица актёр фильма имеют связь один к одному, то объединяем их в одну таблицу.
Т.к. в одном фильме может сняться много актёров фильма, а актёр фильма может принадлежать только одному фильму, то связь один ко многим.
Т.к. актёр может быть актёром многих фильмов, а актёром фильма может быть только один актёр, то связь один ко многим.
Т.к. Снять Фильм может только один режиссёр, а режиссёр может снять много фильмов, то связь один ко многим.
В) разделение таблицы в соответствии с выделенными смысловыми зависимостями. Рисунок №5
Фильм актёр фильма актёр
н |
Жанр Год выпуска Производитель Страна Продолжительность р |
а Название фильма |
Роль |
ФИО актёра |
Национальность Дата рождения |
режиссёр
ФИО |
Дата рождения национальность |
Рисунок №5
Приведение к 3НФ.
Так как транзитивных зависимостей нет, то 2 НФ является и 3 НФ.
Проектирование таблиц.
Фильм
Название |
Жанр Год выпуска Производитель Страна Продолжительность Режиссёр |
Поле |
Тип |
Правило |
nazvanie |
VARCHAR2(15) |
PK |
janr |
VARCHAR2(15) |
|
god_vypuska |
NUMBER(4) |
|
proizvoditel |
VARCHAR2(20) |
|
strana |
VARCHAR2(15) |
|
prodolzhitelnost |
Number(4) |
|
rezhisser |
VARCHAR2(20) |
FK |
В таблице Фильм содержится информация о хранящихся фильмах. Таблица содержит следующие поля:
Nazvanie – поле, которое, является первичным ключом, не может превышать 15 символов.
janr – поле, которое не может превышать 15 символов.
god_vypuska–поле, которое указывает на год выпуска фильма, является числом, которое не превышает четырёх цифр.
Proizvoditel- поле, которое не может превышать 20 символов.
Strana- поле, которое не может превышать 15 символов.
Prodolzhitelnost- поле, которое обозначает продолжительность фильма, определяется в минутах и поэтому содержит 4 знака.
Rezhisser-поле, которое содержит ФИО режиссёра, не превышает 20 символов.
Остальные таблицы поясняются аналогично.
Актёр фильма
Актёр Название фильма |
Роль |
Поле |
Тип |
Правило |
FIO |
VARCHAR2(15) |
FК |
nazvaniefilma |
VARCHAR2(15) |
FK |
rol_v_filme |
VARCHAR2(15) |
|
режиссёр
ФИО |
Национальность Дата рождения |
Поле |
тип |
Правило |
fio |
VARCHAR2(20) |
РК |
nacionalnost |
VARCHAR2(15 |
|
data_rozhdeniya |
NUMBER(4) |
|
Поле |
Тип |
Правило |
Fio |
VARCHAR2(20) |
PK |
nacionalnost |
VARCHAR2(20) |
|
data_rozhdeniya |
NUMBER(4) |
|
ФИО |
Национальность Дата рождения |