Операции обновления отношений

Операции обновления – это операции, выполняемые над одним кортежем отношения.

Добавление

Цель операции – добавить один кортеж с данными <d1,…,dn> в отношение r со схемой (A1,A2,…,An).

ADD(r; A1= d1, …, An= dn).

Когда фиксирован порядок имен атрибутов, допустима более короткая запись:

ADD(r; d1, …, dn).

Операция может быть не выполнена по следующим причинам:

1. Добавляемый кортеж не соответствует схеме отношения r.

2. Некоторые значения кортежа не принадлежат соответствующим доменам.

3. Добавляемый кортеж совпадает по ключу с кортежем, уже находящимся в отношении.

Примеры для отношения Студент, определенного в разделе 3.1:

a). ADD(Студент; Дубов, 1980, 1996, 134742, 2, 100.00).

b). ADD(Студент; Фамилия = Марков, Имя = Сергей, Отчество = Петрович, Курс_обучения = 2) – не будет выполнена по причине 1, в схеме отношения Студент нет атрибутов Фамилия, Имя, Отчество.

c). ADD(Студент; Колобков, 1976, 1996, 122454, 8, 90.00) – не будет выполнена по причинам 2 и 3. Ключом отношения Студент является атрибут {Номер_билета}. Отношение уже содержит кортеж с номером билета 122454 у студента Соколова (причина 3), и значением атрибута Курс_обучения не может быть число 8 (причина 2).

Удаление

Цель операции – удаление одного кортежа с данными <d1,…dn> из отношения r.

DEL(r; A1=d1, …, An=dn).

В действительности нет необходимости перечислять значения всех атрибутов удаляемого кортежа. Чтобы однозначно определить кортеж, который надо удалить, достаточно указать значение первичного ключа:

DEL(r; <ключ> = <d>),

<ключ> – содержит только те атрибуты, которые входят в ключ,

<d> – содержит только те значения удаляемого кортежа, которые соответствуют ключевым атрибутам.

Операция может быть не выполнена по следующим причинам:

1. Удаляемый кортеж не соответствует схеме отношения r.

2. Удаляемого кортежа нет в отношении r.

Примеры для отношения Студент, определенного в разделе 3.1:

a). DEL(Студент; 122454).

b). DEL(Студент; 555556) – не будет выполнена, так как такого кортежа в отношении Студент нет.

Изменение

Цель операции – заменить значения атрибутов C1,…,Cp кортежа <d1,…,dn> отношения r значениями e1,…,ep.

CH(r; A1=d1, …, An=dn; C1=e1, …, Cp=ep).

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

CH(r; <ключ> = <d>; C1=e1, …, Cp=ep).

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

Примеры для отношения Студент, определенного в разделе 3.1:

a). CH(Студент; 122453; Стипендия = 70.00).

b). CH(Студент; 122453; Средний_балл = 4.5) – не будет выполнена, так как атрибут Средний_балл не входит в схему Студент.

Операции над множествами

Два отношения с одной и той же схемой могут быть рассмотрены как два подмножества одного и того же универсума – множества всех возможных кортежей с этой схемой. К таким двум отношениям могут быть применены операции над множествами.

Пересечение

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

Объединение

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

Разность

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

Для примера возьмем два отношения с одинаковыми схемами: Баскетбол(ФИО, Факультет, Курс) и Самбо(ФИО, Факультет, Курс). Эти отношения содержат информацию о студентах, занимающихся в секции баскетбола и самбо.

  Баскетбол       Самбо  
ФИО Факультет Курс ФИО Факультет Курс
Иванов И. И. матфак   Бочкин К. А. филфак
Петров А. П. физтех   Жуков Е. А. матфак
Яшин В. В. матфак   Иванов И. И. истфак
        Макаров В. С. матфак
        Петров А. П. физтех

В результате операции объединения отношений Баскетбол и Самбо (Баскетбол È Самбо) получим информацию обо всех студентах, занимающихся спортом. В результате пересечения отношений (Баскетбол Ç Самбо) получим информацию о студентах, занимающихся в обеих секциях. В результате операции вычитания из отношения Баскетбол отношения Самбо (Баскетбол – Самбо) получим информацию о студентах, играющих в баскетбол, но при этом не занимающихся самбо, а при вычитании из отношения Самбо отношения Баскетбол (Самбо – Баскетбол) получим информацию о студентах, занимающихся самбо, но при этом не играющих в баскетбол.

Отметим, что и в отношении Баскетбол, и в отношении Самбо есть кортеж со значением атрибута ФИО, равным «Иванов И. И.», и значением атрибута Курс, равным «2». Но эти два кортежа различаются значением атрибута Факультет, и, следовательно, считаются различными. Поэтому в объединении отношений есть два кортежа со значением атрибута ФИО, равным «Иванов И. И.», а в пересечение отношений эти кортежи не попали.

Баскетбол È Самбо   Баскетбол Ç Самбо
ФИО Факультет Курс ФИО Факультет Курс
Бочкин К. А. филфак   Петров А. П. физтех
Жуков Е. А. матфак        
Иванов И. И. истфак        
Иванов И. И. матфак        
Макаров В. С. матфак        
Петров А. П. физтех        
Яшин В. В. матфак        

Наши рекомендации