Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция_04_05_с.doc
Скачиваний:
14
Добавлен:
01.03.2025
Размер:
182 Кб
Скачать
☆

4.4. Реляционная целостность

Определитель Null

Указывает, что значение атрибута не определено.

Целостность сущностей

В базовом отношении ни один атрибут первичного ключа не может содержать Null

Ссылочная целостность

Если в отношении существует внешний ключ, то значение внешнего ключа должно соответствовать значению потенциального ключа в базовом отношении, либо быть не определенным (Null)

4.5. Реляционная алгебра

Реляционная алгебра (РА)

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

Результат операции, может использоваться в качестве операнда для другой операции, что позволяет создавать вложенные выражения (замкнутость РА).

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

Пять основных операций:

  • выборка,

  • проекция,

  • декартово произведение,

  • объединение,

  • разность.

На основе этих операций могут быть получены другие:

  • соединения,

  • пересечения,

  • деления.

Выборка

предикат(R)

Определяет отношение, которое содержит только те кортежи отношения R, которые удовлетворяют заданному условию (предикату).

В предикате могут использоваться знаки логических операций  (And),  (Or), ~ (Not).

Пример. Получить список всех сотрудников с окладом более 300

ZP>300(S)

KodS

Lname

Fname

Pol

DR

Dol

ZP

KodB

S21

Иванов

Иван

М

01.02.70

Руководитель

500

B5

S14

Сидоров

Стеман

М

06.05.68

Менеджер

400

B3

S41

Петров

Игорь

М

02.02.68

Менеджер

450

B5

Проекция

Патр1,…,атрn(R)

Определяет отношение, атрибутами которого являются атр1,  … атрn и содержащее только уникальные кортежи.

Пример. Получить список всех городов, в которых имеются отделения.

ПCity(B)

ПИ 26/09/2012

Декартово произведение

RS

Определяет новое отношение, которое получается в результате конкатенации (т.е. сцепления) каждого кортежа из отношения R с каждым кортежем из отношения S

Отношение

Атрибутов

Кортежей

R

I

K

S

J

L

RS

I+J

K*L

Пример. Получить список всех арендаторов (код, Фамилия), осмотревших объекты недвижимости с информацией о сделанном заключении.

R.KodR = V.KodR((ПKodR,Name(R))  (ПKodR,KodP,Comment(V)))

Результат этих операций:

R.KodR

Name

V.KodR

KodP

Comment

R76

Саблев Иван

R76

P04

Далеко

R56

Рубин Степан

R56

P14

Мала

R56

Рубин Степан

R56

P04

R56

Рубин Степан

R56

P36

R62

Зимина Елена

R62

P14

Дорого

Объединение

RS

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

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

ПCity(B)  ПCity(P)

Разность

R-S

Определяет новое отношение, в которое включены кортежи из R, которые отсутствуют в отношении S. При этом отношения R и S должны быть совместимы по объединению

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

ПCity(P) - ПCity(B)

Результат:

City

Сургут

Операции соединения

Тета-соединение.

R |><| F S

Операция тета-соединение определяет отношение, которое содержит кортежи из их декартового произведения, удовлетворяющие предикату F.

Предикат F имеет вид

R.AiS.Bi,

где Ai и Bi – имена атрибутов,

 - один из знаков < | <= | >= | > | = | ~=.

Если предикат F содержит только операцию =, то соединение называется соединением по эквивалентности.

На основе базовых операций:

R |><| FS = F(RS)

Пример. Получить список всех арендаторов, осмотревших объекты недвижимости

(ПKodR,Name(R))  |><|  R.KodR= V.KodR (ПKodR,KodP,Comment(V))

Естественное соединение.

R|><|S

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

Пример. Получить список всех арендаторов, осмотревших объекты недвижимости

(ПKodR, Name(R)) |><| (ПKodR, KodP, Comment(V))

Результат:

KodR

Name

KodP

Comment

R76

Саблев Иван

P04

Далеко

R56

Рубин Степан

P14

Мала

R56

Рубин Степан

P04

R56

Рубин Степан

P36

R62

Зимина Елена

P14

Дорого

Внешнее соединение

R <| S

Левое внешнее соединение – естественное соединение, при котором кортежи отношения R, не имеющие совпадающих значений общих атрибутов в отношении S, также включаются в результирующее отношение. Для отсутствующих значений используется Null.

Т.о. при левом внешнем соединении сохраняется вся исходная информация из отношения R.

Аналогично можно определить также правое внешнее соединение и полное внешнее соединение.

Пример. Создать отчет о проведении осмотров объектов недвижимости.

ПKodP, City (P) <| (V)

Результат:

KodP

City

KodR

Date

Comment

P14

Тюмень

R56

24.05.01

Мала

P14

Тюмень

R62

14.05.01

Дорого

P94

Нижневартовск

Null

Null

Null

P04

Тюмень

R76

20.04.01

Далеко

P04

Тюмень

R56

26.05.01

P36

Ишим

R56

28.04.01

P21

Надым

Null

Null

Null

P16

Сургут

Null

Null

Null

Если применить операцию естественного соединения

ПKodP, City (P) |><| (V)

Результат:

KodP

City

KodR

Date

Comment

P14

Тюмень

R56

24.05.01

Мала

P14

Тюмень

R62

14.05.01

Дорого

P04

Тюмень

R76

20.04.01

Далеко

P04

Тюмень

R56

26.05.01

P36

Ишим

R56

28.04.01

B P

KodB

Bcity

KodB

Bcity

B3

Надым

P14

Сургут

B4

Ишим

P94

Тюмень

B2

Тюмень

P04

Надым

KodB

B.Bcity

KodP

P.Bcity

B3

Надым

P04

Надым

B4

Ишим

Null

Null

B2

Тюмень

P94

Тюмень

Null

Null

P14

Сургут

B

Полусоединение

R |> F S

Определяет отношение, которое содержит те кортежи отношения R, которые входят в тета-соединение отношений R и S

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

R |> F S = ПA (R |><|F S),

где A – набор всех атрибутов в отношении R.

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

S |> S.KodB = B.KodB and B.City=’Тюмень’ B

Результат:

KodS

(код)

Lname

(фамилия)

Fname

(имя)

Pol

(пол)

DR

(дата р.)

Dol

(должность)

ZP

(Оклад)

KodO

(код отд.)

S21

Иванов

Иван

М

01.02.70

Руководитель

500

B5

S37

Петрова

Татьяна

Ж

12.11.72

Агент

250

B3

S14

Сидоров

Стеман

М

06.05.68

Менеджер

400

B3

S05

Степанова

Елена

Ж

16.07.71

Секретарь

200

B3

S41

Петров

Игорь

М

02.02.68

Менеджер

450

B5

Пересечение

R  S

Операция пересечения определяет отношение, которое содержит кортежи, присутствующие как в отношении R, так и в отношении S. Отношения R и S должны быть совместимы по объединению.

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

R  S=R-(R-S)

ПCity(B) ∩ ПCity(P)

Деление

Пусть R(A1,A2,…,An, B1,B2,…,Bm), S(B1,B2,…,Bm), причем атрибуты B1,B2,…,Bm – общие.

R  S

Операция определяет отношение с атрибутами A1,A2,…,An, которое содержит множество кортежей (x1,x2,…xn), таких, что для всех кортежей (y1,y2,…ym) из S в отношении R найдется кортеж (x1,x2,…xn,y1,y2,…ym).

T1=ПC( R ), T2=ПC ((ST1)-R), R  S=T1-T2

Пример. Создать список арендаторов, осмотревших объекты недвижимости с 4 комнатами.

(ПkodR,KodP (V))  (ПkodP ( Rooms=4 (P)))

Результат

KodR

KodP

R76

P04

R56

P04