double arrow

Проектирование реляционных баз данных

Проектирование связано с построением логической структуры БД. Иными словами, нужно решить вопрос, какие базовые таблицы, с какими полями следует задать. Суть этой проблемы сводится, в конечном счете, к нормализации отношений. Нормализация отношений основана на понятии функциональной зависимости.

Процесс нормализации отношений основан на концепции нормальных форм.

Говорят, что отношение находится в некоторой нормальной форме (НФ), если оно удовлетворяет заданному набору условий.

Известно несколько НФ: первая нормальная форма (1НФ), вторая нормальная форма (2НФ), третья нормальная форма (3НФ), нормальная форма Бойса-Кодда (НФБК), четвертая нормальная форма (4НФ), пятая нормальная форма (5НФ). Причем все условия, необходимые для некоторой НФ, должны выполняться и для всех последующих НФ.

Возникает вопрос, можно ли продолжить нормализацию дальше, получить 6-ю, 7-ю и т. д. НФ? Действительно, существуют дополнительные НФ, но 5НФ считается во многих смыслах окончательной. А для практического проектирования достаточной считают 3НФ. Поэтому рассмотрим только три первые нормальные формы.

Отношение находится в 1НФ тогда и только тогда, когда значения всех полей неделимы .

Например, в отношении Студенты не должно быть поля Дисциплины, так как его значением будет перечисление всех изучаемых студентом дисциплин, т.е. значение делимо.

Отношение находится во 2НФ тогда и только тогда, когда оно находится в 1НФ и каждое неключевое поле зависит от всего первичного ключа.

Например, рассмотрим отношение Успеваемость (НомерЗачетнойКнижки, Фамилия, Имя, Отчество, Дисциплина, Оценка).

Если первичным ключом здесь назначить НомерЗачетнойКнижки, то от него не будет зависеть поле Дисциплина. В этом случае отношение не находится во 2НФ.

Можно тогда в качестве первичного ключа взять множество полей {НомерЗачетнойКнижки, Дисциплина}. От такого ключа зависят все поля, но поля Фамилия, Имя, Отчество зависят только от поля НомерЗачетнойКнижки.

И при таком первичном ключе отношение не находится во 2НФ.

Чтобы получить отношения во 2НФ, произведем разбиение на два отношения:

Студенты (НомерЗачетнойКнижки, Фамилия, Имя, Отчество)

Успеваемость1 (НомерЗачетнойКнижки, Дисциплина, Оценка).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



Сейчас читают про: