☂️ Вторая нормальная форма (2NF) ☂️
Вторая нормальная форма (2NF): Устранение частичной зависимости атрибутов от первичного ключа.
2NF требует, чтобы все неключевые атрибуты полностью зависели от полного первичного ключа (первичные ключи могут быть составными). Нарушение возникает, когда есть зависимость неключевого атрибута лишь от части первичного ключа.
В этой части у нашей модели данных отсутствуют нарушения, поэтому для иллюстрации возьмем искуственный пример. Представим, что мы решили хранить книги со следующими атрибутами:
- BookTitle – название книги (ключ)
- DepartmentName – название отдела, где хранитс книга (история, художественная, компьютерная) (ключ)
- LocationShelf – номер стеллажа.
Атрибут LocationShelf зависит только от подразделения (DepartmentName), а от названия книги не зависит. Значит, нарушена 2NF, тк имеется частичная зависимость, а должна быть зависимость от обоих ключей.
Вопрос решается разделением одной таблицы на две:
📓Books
- BookId
- Title
- DepartmentId
🏢 Departments
- DepartmentId
- Name
- LocationShelf
☂️ Третья нормальная форма (3NF) ☂️
Исключение транзитивной зависимости атрибутов.
3NF требует отсутствия транзитивных зависимостей среди неключевых атрибутов. То есть, любой неключевой атрибут не должен зависеть от другого неключевого атрибута, кроме первичного ключа.
Всвязи с тем, что наши данные построены корректно с точки зрения 3 формы, возьмем пример:
Предположим, что информация о книге реализована так:
- ISBN – идентификатор книги
- Title – название книги
- Author – автор книги
- Reader - читатель
❓Проблемы данной структуры:
🔸 Ошибочная зависимость. Поле Reader зависит не только от уникального идентификатора книги (ISBN), но также косвенно от имени автора и названия книги. Это нарушение правил Третьей Нормальной Формы (3NF), так как возникают потенциальные аномалии модификации данных.
🔸 Избыточность данных. Повторяется одно и то же название книги и автор всякий раз, когда новый читатель берет книгу.
Для решения мы отделяем книг и читателей и создаем соединяющую таблицу «Выдача книг», как мы и сделали изначально.
На этом мы завершаем приведение к нормальным формам и переходим к физическому проектированию
Post #62
61