Теперь мы можем перейти к следующему этапу нормализации. Чтобы показать, зачем он нужен, поставим небольшой эксперимент. Внесем в нашу таблицу несколько записей (основанных на реально существующих книгах).
ID |
Название |
Фамилия автора |
Имя Автора |
Отчество Автора |
Предмет |
Класс |
Издательство |
Год издания |
Количество |
1 |
|
Перышкин |
А. |
В. |
Физика |
7 |
Дрофа |
2001 |
100 |
2 |
Электромагнитые являния |
Гуревич |
А. |
Е. |
Физика |
8 |
Дрофа |
2001 |
100 |
3 |
|
Перышкин |
А. |
В. |
Физика |
8 |
Дрофа |
2001 |
100 |
4 |
|
Перышкин |
А. |
В. |
Физика |
9 |
Дрофа |
2001 |
100 |
5 |
Механика |
Мякишев |
Г. |
Я. |
Физика |
10 |
Дрофа |
2002 |
100 |
Из нашего примера видно, что значения многих атрибутов повторяются. Так, один автор может написать несколько книг, разные книги могут издаваться в одном и том же издательстве и т.п.
При этом оператору базы данных часто придется вводить одинаковые значения, что повышает вероятность опечаток, на исправление которых может потребоваться довольно много времени. Этого можно избежать – и заодно сделать поиск по любому из этих значений много быстрее.
Для этого нужно выделить еще три отдельные сущности: “Автор”, “Предмет” и “Издательство”.
Заметим, что все свойства автора – фамилия, имя, отчество – мы вынесли в сущность “Автор”.
Для всех сущностей мы сохранили поле “ID”. Однако их значения независимы друг от друга. Пока мы не указали, как эти сущности между собой связаны; это – задача следующего этапа.
Говорят, что модель данных находится во второй нормальной форме (2NF), если:
- ·она находится в 1NF
- ·каждая сущность, которую можно логически отделить от остальных, выделена как отдельная сущность (таблица)
- ·все атрибуты, логически относящиеся к каждой сущности, отнесены именно к ней (и помещены именно в её таблицу)
- ·для каждой сущности введён уникальный идентификатор
Важно, что при этом по значению идентификатора любой сущности можно найти все её атрибуты. Например, по значению поля ID в таблице “Автор” можно определить и фамилию, и имя, и отчество.
Отделив сущности “Автор”, “Предмет” и “Издательство”, мы получили возможность получить из базы данных список всех авторов и издательств. Наша база данных удовлетворяет определению 2NF, и мы с полным правом можем сказать, что она находится во второй нормальной форме.