Отношение находится во 2НФ тогда и только тогда, когда оно находится в 1НФ и каждое неключевое поле зависит от всего первичного ключа.
Например, рассмотрим отношение Успеваемость (НомерЗачетнойКнижки, Фамилия, Имя, Отчество, Дисциплина, Оценка).
Если первичным ключом здесь назначить НомерЗачетнойКнижки, то от него не будет зависеть поле Дисциплина. В этом случае отношение не находится во 2НФ.
Можно тогда в качестве первичного ключа взять множество полей {НомерЗачетнойКнижки, Дисциплина}. От такого ключа зависят все поля, но поля Фамилия, Имя, Отчество зависят только от поля НомерЗачетнойКнижки.
И при таком первичном ключе отношение не находится во 2НФ.
Чтобы получить отношения во 2НФ, произведем разбиение на два отношения:
Студенты (НомерЗачетнойКнижки, Фамилия, Имя, Отчество)
Успеваемость1 (НомерЗачетнойКнижки, Дисциплина, Оценка).
Отношение находится в 3НФ тогда и только тогда, когда оно находится во 2НФ и каждое неключевое поле напрямую зависит от первичного ключа.
Например, рассмотрим отношение Студенты (НомерЗачетнойКнижки, Фамилия, Имя, Отчество, Группа, Специальность). Тогда получается, что поле Специальность зависит от первичного ключа не напрямую, а через поле Группа.
Проведем разбиение на два отношения:
Группы (КодГруппы, Специальность) и
Студенты1 (НомерЗачетнойКнижки, Фамилия, Имя, Отчество, КодГруппы)
Полученные отношения в 3НФ.
Если отношение не находится ни во 2НФ, ни в 3НФ, существует избыточность, которая приводит к нарушению целостности данных.
Дата добавления: 2015-10-19; просмотров: 1131;