И так, мы переходим к третьей нормальной форме. Третья нормальная форма(3NF) позволяет нам избавиться от такой мерзкой штуки, как транзитивная зависимость. Прежде чем давать определение третьей нормальной форме давайте разберемся, что такое транзитивная зависимость.
Мы плавно подошли к транзитивной зависимости. Чтобы лучше понять транзитивные зависимости обратите внимание на второй рисунок в разделе, который посвящен второй нормальной форме. А именно на таблицу-справочник преподавателей. В этой таблице мы можем наблюдать зависимость среди не ключевых полей, то есть, какие-то поля связаны между собой очень тесно не только логически, но и функционально.
Вообще, третья нормальная форма(3NF) оперирует только в пределах одной таблицы. А в таблице преподавателей мы замечаем внутренние правила, от которых зависит правильность функционирования данной таблицы, таких правил в третьей нормальной форме быть не должно, такие правила называются транзитивными зависимостями, очень мерзкая штука.
В таблице преподавателей есть транзитивная зависимость, это атрибуты индекс и город, если индекс 127 – это Москва и никак по-другому быть не может! Эти два поля не являются первичным ключом, и они зависят друг от друга – это нарушение третьей нормальной формы и называется транзитивная зависимость.
Проблема заключается в том, что людям свойственно ошибаться. Допустим, человек, наполняющий базу данных, ошибся и ввел сотруднику живущем в Саратове иркутский индекс. Вопрос, чему верить? Индексу или введенному городу?
Таким образом, задача третьей нормальной(3NF) формы заключается в том, чтобы обеспечить максимальнуюцелостность данных в базе данных. Целостность данных в базе данных обеспечивается уничтожением транзитивных зависимостей. Перед тем, как привести пример третьей нормальной формы я бы хотел дать определение третьей нормальной формы.
Таблица находится в третьей нормальной форме(3NF), когда она находится во второй нормальной форме, а соответственно и в первой нормальной форме, то есть таблица атомарна и все данные вынесены на справочники и при этом любой не ключевой атрибут зависит только от первичного ключа, по-другому – в таблице не должно быть никаких зависимостей кроме как от первичного ключа.
Собственно данное определение является кратким итогом того, о чем я говорил выше. Давайте избавимся от транзитивных зависимостей, которые у нас появились, когда нормализовали отношения до второй нормальной формы.
Я не буду создавать заново всю структуру базы данных, а лишь покажу, как избавиться от транзитивной зависимости в таблице преподавателей.
Нормализация отношений. Третья нормальная форма.
Я сделал следующее взял и создал два справочника, справочник индексов, а для справочника индексов создал справочник городов, таким образом, я избавился от транзитивных зависимостей, привел базу данных к третьей нормальной форме, при этом разбил эту базу данных на пять таблиц.
Хоть в базе данных и пять таблиц, но, мы обеспечили целостность данных и обезопасили себя от неправильного ввода данных.