Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции БД.doc
Скачиваний:
35
Добавлен:
23.09.2019
Размер:
1.93 Mб
Скачать

Изменение отношений во времени.

Размещение дополнительной информации производится операцией добавления ADD(r; A1=d1, A2=d2 , ..., An=dn).

Пример

Для добавления рейса из Астрахани в Барнаул достаточно записать: ADD(Рейсы; номер = 117, пункт отправления = Астрахань, пункт назначения = Байконур, время вылета = 22:05, время прилета = 0:43).

Конец примера

Вариант для фиксированного порядка атрибутов: ADD(r; d1, d2, ..., dn).

Возможные ошибки при добавлении:

  1. кортеж не соответствует схеме;

  2. некоторые значения не принадлежат доменам;

  3. есть совпадения по ключу.

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

Удаление информации производится операцией DEL(r; A1=d1, A2=d2 , ..., An=dn) или DEL(r; d1, d2 , ..., dn).

Если K={B1, B2 , ..., Bm } – ключ отношения, для удаления достаточно записать DEL(r; B1=b1, B2=b2 , ..., Bm=bm).

Пример

Если {пункт отправления, пункт назначения, время вылета} – ключ отношения Рейсы, для удаления рейса из Новгорода в Читу можно записать: DEL(Рейсы; пункт отправления = Новгород, пункт назначения = Чита, время вылета = 11:03).

Если ключ – это номер рейса, достаточно записать: DEL(Рейсы; номер = 83).

Конец примера

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

Модификация информации производится операцией изменения. Пусть {C1, C2, ... Cp} {A1, A2, ... An}. Тогда CH(r; A1=d1, A2=d2 , ..., An=dn ; C1=c1, C2=c2 , ..., Cn=cp) или, в случае ключа, CH(r; B1=b1, B2=b2 , ..., Bm=bm ; C1=c1, C2=c2 , ..., Cn=cp).

Пример

Для изменения времени вылета и времени прилета рейса 109 из отношения Рейсы можно записать: CH(Рейсы; номер = 109, пункт отправления = Новгород, пункт назначения = Липецк, время вылета = 21:50, время прилета = 23:50; время вылета = 20:00, время прилета = 22:00).

Если в ключ – это номер рейса, достаточно записать: CH(Рейсы; номер = 109; время вылета = 20:00, время прилета = 22:00).

Конец примера

Того же эффекта можно достигнуть последовательным удалением изменяемого кортежа и добавлением нового. Поэтому ошибки модификации представляют собой объединение ошибок удаления и добавления.

Лекция 8 Операции реляционной алгебры

Операции, рассмотренные в предыдущей лекции – это операции не над отношениями, а над отдельными кортежами. Далее мы рассмотрим операции над отношениями. Это, во-первых, обычные булевы операции, а во-вторых, группа специальных операторов.

Булевы операции

К булевым операциям относятся операции пересечения, объединения, разности. Пусть r, s – отношения со схемой R. Они могут рассматриваться как подмножества множества всех кортежей, определяемых этой схемой, поэтому к ним применимы булевские операции.

Пересечением называется отношение q(R) = r s, содержащее кортежи, которые одновременно принадлежат и r, и s. Объединением называется отношение q(R) = r s, содержащее кортежи, которые принадлежат либо r, либо s. Разностью называется отношение q(R) = r - s, содержащее кортежи, которые принадлежат r, но не принадлежат s. Или формально:

rs ={t|(tr)&(ts)};

rs ={t|(tr)(ts)};

rs ={t|(tr)&(ts)}.

Заметим, что r s = r (r s), то есть достаточно лишь двух операций.

Обозначим dom(R) множество всех кортежей над атрибутами из схемы R и их доменами: dom(R) = {t(d1 d2 dn)| didom(Ai)}. Дополнение отношения определим как r(R): r = dom(R) - r(R). Но если какой-либо атрибут из R имеет бесконечный домен, r будет тоже иметь бесконечное число кортежей, то есть по определению не будет отношением.

Определение. Пусть r(A1, A2,..., An) – отношение, Di = dom(Ai). Тогда активный домен атрибута Ai относительно r – это множество adom(Ai,r) = {dDi | tr, t(Ai)=d}.

Пусть adom(R,r) – множество всех кортежей над атрибутами из R и их активными доменами относительно r: adom(R, r) = {t(d1 d2 dn)| diadom(Ai, r)}. Тогда активным дополнением r будем называть . Так как число значений атрибутов, принадлежащих кортежам из r, конечно, то активное дополнение всегда будет отношением.

Пример

r

(A

B

C)

s

(A

B

C)

a1

b1

c1

a1

b2

c1

a1

b2

c1

a2

b2

c1

a2

b1

c2

a2

b2

c2

rs

(A

B

C)

rs

(A

B

C)

r - s

(A

B

C)

a1

b2

c1

a1

b2

c1

a1

b1

c1

a2

b2

c1

a2

b1

c2

a2

b2

c2

a1

b1

c1

a2

b1

c2

Тогда

Пусть D1={a1, a2}, D2={b1, b2, b3}, D3={c1, c2}. Тогда dom(R) – все комбинации значений атрибутов из доменов, r = dom(R) - r – все комбинации, за исключением тех, что входят в r. Активный домен B не содержит b3, поэтому adom(R,r) – все комбинации значений, не содержащие b3. Тогда активное дополнение – все комбинации из adom(R,r) без кортежей из r.

Конец примера