Null-значение. Целостность внешних ключей. Поддержание ссылочной целостности. Запросы на удаление. Функциональные зависимости. Нормализация

Страницы работы

Фрагмент текста работы

Целостность реляционных данных сводится к целостности сущностей и целостности внешних ключей. Для того, чтобы обойти проблему неизвестных или неполных данных, в БД используется значение null. В операциях выборки данных при сравнении со значением null результат остается неизвестным. Возникает необходимость трехзначной логики: true, false, null. Что затрудняет реализацию СУБД.

При использовании null-значений для данных в логических операциях OR, AND, Отрицание возникает результат unknown.

2.  Целостность внешних ключей

Операции, которые могут нарушить ссылочную целостность для родительского отношения

1.  Вставка кортежа в родительское отношение. Так как допустимо существование кортежей, на которые нет ссылок в дочернем отношении, вставка кортежей в родительские отношения НЕ нарушает ссылочную целостность.

2.  Обновление кортежа в родительском отношении. Например обновление ключа «31 Сидоров». При обновлении может измениться значение первичного ключа, и если в род. отношении есть значения ключа, которые ссылаются на кортеж, значения внешних ключей становится некорректным.

3.  Удаление кортежа в родительском отношении. Например, Сидорова уволили. Приводит к удалению значения первичного ключа.

Операции, которые могут нарушить ссылочную целостность для родительского отношения

1.  Вставка кортежа в доч.отношение, на которое нет ссылки в род., нарушает целостность.

2.  Обновление кортежа в доч.отношении изменяет значение первичного ключа, что нарушает целостность.

3.  Удаление кортежа в доч.отношении – допускается.

3.  Поддержание ссылочной целостности

1.  Restrict [Ограничение] не разрешать выполнение операций, приводящих к нарушению. Для этого проверять, есть ли связанные с удаляемым род.кортежем кортежи в доч.отношении.

2.  Cascade [Каскадирование] разрешить выполнение с внесение поправки в др.отношения для сохранения имеющихся связей. Если какая-ибо из каскадных операций не выполнима, отказаться от операции и откатить базу в исходное состояние.

3.  Set null – разрешить выполнение операций, некорректные значения заменять на null. Установить, с каким род.кортежем связан дочерний – невозможно.

4.  Set default – разрешить, некорректные заменить на исходные значения, в род.отношении должен существовать некий кортеж, первичный ключ которого принят за дефолтный. Такой кортеж не удаляем и не изменяем его ключ.

5.  Ignor – при нарушении целостности ничего не происходит.

Обновление кортежей в род.отношении

1.  Restrict – не разрешает обновление, если хотя бы 1 кортеж ссылается на обновленный.

2.  Cascade – применяется вместо первого.

3.  Set null можно, но не желательно.

Удаление кортежа в род.отношении                     3 2 1

Вставка кортежа в доч.отношение                        1 3 4

Обновление кортежа в доч.отношении     1 4 3

4.  Запросы на удаление

DELETE test.Марка, * FROM test WHERE (((test.Марка)='Nissan Skyline'));

DELETE FROM <Имя Таблицы> WHERE <Условие отбора записей>

В случае, если критерий отбора не определён, выполняется удаление всех записей.

5.  Функциональные зависимости

Атрибуты находятся в функц.зависимости, если во всех кортежах, имеющих одинаковое значение атрибута Х также совпадает значение атрибута У. Функциональная зависимость обозначается X →Y.

Чтобы устранить зависимость атрибутов от части составного первичного ключа, нужно декомпозировать отношения на несколько. При этом атрибуты выносятся в отдельное отношение.

6.  Нормализация

1 нормальная форма. Обычное отношение где:

- нет одинаковых кортежей,

- кортежи не упорядочены,

- атрибуты не упорядочены и отличаются по наименованию. Все значения атрибутов – простые типы.

Продажа

Код

Автомобиль

Цвет

Покупатель

ДатаПродажи

Цена

1

Mazda 3

Красный

Земцов Никита Сергеевич

01.05.2010

567 000,00р.

2

Синий

Арбузов Данил Вадимович

23.03.2011

210 000,00р.

Продажа

Код

Автомобиль

Цвет

Покупатель

ДатаПродажи

Цена

1

Mazda 3

Красный

Земцов Никита Сергеевич

01.05.2010

567 000,00р.

2

Mazda 3

Синий

Арбузов Данил Вадимович

23.03.2011

210 000,00р.

Методы приведения к 1NF:

§  Устраните повторяющиеся группы в отдельных таблицах (одинаковые строки).

§  Создайте отдельную таблицу для каждого набора связанных данных.

§  Идентифицируйте каждый набор связанных данных с помощью первичного ключа (добавить уникальный id для каждой строки)

2 нормальная форма Отношение в 1НФ, и при этом все неключевые атрибуты зависят только от первичного ключа.

если таблица приведена к 1НФ и у нее установлен уникальный id для каждой строки, то она находится и во 2НФ.

Например. Эта таблица находится в первой нормальной форме, но не во второй.

Категория

Дата

Скидка

Товар

Книги

10.10.2008

10%

PHP for dummies

Ноутбуки

11.10.2008

20%

Acer

Книги

10.10.2008

10%

Windows XP

В этой таблице первичный ключ составляют первые два столбца (Категория и Дата). Скидка функционально полно зависит от них обоих, так как определяется одновременно категорией и датой. А вот с товаром проблемы. Она зависит только от категории и не зависит от даты (в любой день будет лежать там, пока не купят). Поэтому, говорят, что он зависит функционально не полно от всего первичного ключа и функционально полно от его части (Категория). Это нарушает требования второй нормальной формы.

Исправляется это разделением этой таблицы на две другие:


Категория

Дата

Скидка

Книги

10.10.2008

10%

Ноутбуки

11.10.2008

20%

Книги

10.10.2008

10%

Категория

Товар

Книги

PHP for dummies

Ноутбуки

Acer

Книги

Windows XP

Вот и все. Теперь эти таблицы находятся во второй нормальной форме.

3 нормальная форма. Отношение во 2НФ и каждый неключевой атрибут зависит только

Похожие материалы

Информация о работе

Предмет:
Базы данных
Тип:
Отчеты по лабораторным работам
Размер файла:
32 Kb
Скачали:
0