Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Базы данных(лекции).doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
82.94 Кб
Скачать

2 Нормальная форма (2nf)

Таблица находится во второй нормальной форме, если она находится в первой нормальной форме и все её поля, не входящие в первичный ключ связаны с полной функциональной зависимостью с первичным ключом.

Если таблица имеет простой первичный ключ, состоящий только из одного поля, то она автоматически находится во второй нормальной форме.

Если же первичный ключ составной, то таблица необязательно находится во второй нормальной форме. Тогда ее необходимо разделить на две или более таблиц таким образом, чтобы первичный ключ однозначно идентифицировал значение в любом поле. Если в таблице имеется хотя бы одно поле, не зависящее от первичного ключа, то в первичный ключ необходимо включать дополнительные колонки. Если таких колонок нет, то необходимо добавить новую колонку.

Пр. Предмет (Код предмета, Название, Объём часов, Код цикла)

Цикл (Код цикла, Название цикла)

Преподаватели (Код преподавателя, Ф.И.О., Должность, Оклад, Адрес)

Предмет (Код предмета, Код преподавателя)

Третья нормальная форма

Таблица находится в третьей нормальной форме, если она удовлетворяет определению второй нормальной форме и не одно из её не ключевых полей не зависит функционально от любого другого не ключевого поля.

В примере не ключевые поля, должность и оклад. Несколько человек могут работать в одной и той же должности, поэтому следует создать таблицу «Должность».

Требование третьей нормальной формы сводится к тому, чтобы все не ключевые поля зависели только от первичного ключа и не зависели друг от друга.

Пример: Предмет (Код предмета, Название, Объём, Код цикла)

Цикл (Код цикла, Название цикла)

Преподаватель (Код преподавателя, Ф.И.О., Код должности, Адрес)

Должность (Код должности, Название должности, Оклад)

Обеспечение целостности информации в процессе эксплуатации бд

Любое изменение в одной из таблиц БД должно находить адекватное изменение во всех других таблицах – сущность обеспечения целостности таблиц БД. Практически эта задача осуществляется установлением связи между таблицами БД.

Основные правила связи между таблицами.

  1. Выбрать из 2-х связываемых таблиц главную и подчиненную.

  2. Выбрать в каждой таблице ключевое поле. Ключевое поле подчиненной таблицы называется внешним ключом.

  3. Связываемые поля таблицы должны иметь один тип данных.

  4. Между таблицами устанавливаются следующие типы связей: 1:1; 1:М; М:М.

Связь 1:1(один к одному) устанавливается в случае, когда конкретная строка главной таблицы в любой момент времени связана только с одной строкой подчиненной таблицы.

Связь 1:М (один ко многим) когда конкретная строка главной таблицы в любой момент времени связана с несколькими строками подчиненной таблицы. При этом любая строка подчиненной таблицы связана только с одной строкой главной таблицы.

Связь М:М (многие ко многим) устанавливается в случаях когда конкретная строка главной таблицы в любой момент времени связана с несколькими строками подчиненной таблицы и наоборот строка подчиненной таблицы связана с несколькими строками главной таблицы.

При изменении значений первичного ключа в главной таблице возможны следующие варианты поведения зависимой таблицы.

Каскадирование. При изменении данных первичного ключа в главной таблице происходит изменение соответствующих данных внешнего ключа в зависимой таблице. Все имеющиеся связи сохраняются.

Ограничения. При попытке изменить значение первичного ключа с которым связаны строки в зависимой таблице изменения отвергаются. Допускаются изменения только значений первичного ключа, для которых не установлена связь с зависимой таблицей.

Установление. При изменении данных первичного ключа внешний ключ устанавливается в неопределенное значение (NULL). Информация о принадлежности строк зависимой таблицы теряется. Если изменить несколько значений первичного ключа, то в зависимой таблице образуются несколько групп строк, которые ранее были связаны с измененными ключами. После этого невозможно определить, какая строка с каким первичным ключом была связана.