Операции обновления отношений
Операции обновления – это операции, выполняемые над одним кортежем отношения.
Добавление
Цель операции – добавить один кортеж с данными <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». Но эти два кортежа различаются значением атрибута Факультет, и, следовательно, считаются различными. Поэтому в объединении отношений есть два кортежа со значением атрибута ФИО, равным «Иванов И. И.», а в пересечение отношений эти кортежи не попали.
Баскетбол È Самбо | Баскетбол Ç Самбо | |||||
ФИО | Факультет | Курс | ФИО | Факультет | Курс | |
Бочкин К. А. | филфак | Петров А. П. | физтех | |||
Жуков Е. А. | матфак | |||||
Иванов И. И. | истфак | |||||
Иванов И. И. | матфак | |||||
Макаров В. С. | матфак | |||||
Петров А. П. | физтех | |||||
Яшин В. В. | матфак |