Классика баз данных - статьи



         

Реляционные инварианты - часть 4


В приведена сводка методов поддержки реляционных инвариантов при выполнении операций обновления. Каждый тип операции обновления (insert, delete, modify) рассматривается в отдельной части таблицы. При этом в каждой части таблицы указывается воздействие на все пять инвариантов, оказываемое выполнением соответствующей операции обновления над кортежом t с ключом k в отношении R.

Таблица III. Поддержка реляционных инвариантов при выполнении операций обновления

INSERT

Инвариант

Возможные нарушения после вставки

Метод коррекции нарушения

i)

t ссылается на несуществующий кортеж в некотором caR-отношении R'

вставить в R' кортеж с соответствующими значениями ключа и значениями "пусто", где это уместно

ii)

t появляется в R дважды

удалить один из экземпляров t

iii)

t не имеет образа-предка в некотором pgR-отношении R'

если кортеж с ключом k уже существует в R', то модифицировать этот кортеж так, чтобы он стал образом предка t, иначе вставить образ предка в R' (используя "пусто" там, где значения неизвестны)

iv)

t не имеет требуемого образа потомка в некотором cgR-отношении R'

вставить образ потомка в R' (используя "пусто" там, где значения неизвестны)

v)

нет

DELETE

Инвариант

Возможные нарушения после вставки

Метод коррекции нарушения

(i)

кортеж в некотором paR-отношении ссылается на несуществующий R-кортеж

a) модифицировать этот кортеж так, чтобы ссылка была замещена значением "пусто" (это возможно, если только ссылка не является частью ключа кортежей)

b) удалить этот кортеж

(ii)

нет

 

(iii)

у кортежа в некотором cgR-отношении отсутствует образ предка в R

удалить этот кортеж

(iv)

кортеж в некотором pgR-отношении не имеет требуемого образа потомка в R

a) модифицировать этот кортеж, замещая его значение в домене образов значением "пусто" (это возможно только тогда, когда домен образов не является частью ключа данного кортежа

b) удалить этот кортеж

(v)

нет

 
<


Содержание  Назад  Вперед