Нормализация отношений реляционной БД
Отношения реляционной БД можно привести к такому виду, который обеспечил бы наилучшие свойства БД. Процесс приведения отношений к такому виду называется нормализацией. При работе с ненормализованными отношениями в процессе ведения БД (при выполнении операций добавления и удаления строк в таблицы) могут возникнуть так называемые аномалии включения и удаления. Аномалия включения проявляется в том, что некоторые нужные данные невозможно ввести в БД до тех пор, пока не будут известны некоторые связанные с ними дополнительные сведения. Аномалия удаления связана с возникновением таких ситуаций, когда при удалении устаревших данных вместе с ними из БД исчезают и нужные сведения.
Известно 5 нормальных форм (НФ) отношений. Нормализация выполняется поэтапно. Сначала отношение приводится к первой НФ (1НФ), затем - ко 2НФ и т.д. вплоть до 5НФ. Однако для устойчивой работы БД часто оказывается достаточным, если ее отношения находятся в 3НФ.
Между формами существует следующая связь. Если отношение находится в 3НФ, то это значит, что оно уже находится во 2НФ и 1НФ.
|
|
Считается, что отношение находится в 1НФ, если значение каждого его атрибута не структурировано. Это означает, что на пересечении каждого столбца и каждой строки таблицы должно находиться одно единственное значение.
В рассмотренной нами выше предметной области о поставках на предприятие изделий поставщик П1 поставляет в определенных количествах изделия И1, И2 и И3, поставщик П2 - изделия И1 и И2, а поставщик П3 - изделие П4. Отобразим эти данные в таблице ПОСТАВКИ 1. Такой вид таблицы типичен для многих документов. Так, например, в одну колонку таблицы часто помещают фамилию, имя и отчество человека или адрес, содержащий почтовый индекс, город, улицу, номер дома, номер квартиры.
Номера поставщиков П# уникальны, и этот атрибут можно принять в качестве первичного ключа отношения.
ПОСТАВКИ 1 ПОСТАВКИ
П# | ПК | |
И# | Кол | |
П1 | И1 И2 И3 | |
П2 | И1 И2 | |
П3 | И4 |
П# | И# | Кол |
П1 П1 П1 П2 П2 П3 | И1 И2 И3 И1 И2 И4 |
Можно заметить, что в отношении ПОСТАВКИ 1 значения ключа П# идентифицирует сразу несколько значений не ключевых атрибутов И# и Кол, что недопустимо. (В таблице на пересечении, например, строки П1и столбца И# содержится несколько значений номеров изделий). Это отношение находится не в 1НФ.
Преобразуем отношение так, чтобы устранить этот недостаток. В преобразованном отношении ПОСТАВКИ первичный ключ - составной П# И# и каждое значение первичного ключа идентифицирует единственное значение не ключевого атрибута Кол. Это отношение находится в 1НФ.