Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Информационное обеспечение(лекции)

.pdf
Скачиваний:
77
Добавлен:
27.03.2016
Размер:
2.19 Mб
Скачать

инвертированного файла по полю K 2 для основного файла F приведен на рисунке 3.12.

Рисунок 3.11 - Пример плотного индекса

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

121

Рисунок 3.12 - Пример инвертированного файла

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

выше методов поиска в упорядоченном файле (например, бинарный поиск или В-дерево). Чтобы выполнить многоаспектный поиск по n ключам, необходимо построить n инвертированных файлов.

122

4 МАТЕМАТИЧЕСКИЕ ОСНОВЫ МАНИПУЛИРОВАНИЯ РЕЛЯЦИОННЫМИ ДАННЫМИ

4.1 Теоретические языки запросов

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

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

Для исследования этого вопроса были разработаны три типа теоретических языков:

1)реляционная алгебра;

2)реляционное исчисление с переменными-кортежами;

3)реляционное исчисление с переменными-доменами.

Языки запросов первого типа – алгебраические языки – позволяют выражать запросы средствами специализированных операторов, применяемых к отношениям.

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

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

По своей выразительности все три языка оказались эквивалентными между собой.

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

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

проекция;

объединение;

разность;

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

селекция.

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

Ниже представлены отношения, используемые в примерах.

123

P(D 1

D2,

D3)

Q(D4

D5)

R(M,

P,

Q,

T)

S(A,

B)

 

 

 

 

 

 

 

 

 

 

 

1

11

x

x

1

x

101

5

a

5

a

2

11

у

x

2

y

105

3

a

10

b

3

11

z

y

1

z

500

9

a

15

c

4

12

x

 

 

w

50

1

b

2

d

 

 

 

 

 

w

10

2

b

6

a

 

 

 

 

 

w

300

4

b

1

b

 

 

 

 

 

 

 

 

 

 

 

Описание каждого отношения состоит из имени отношения, за которым в круглых скобках следует список атрибутов (это описание называется интенсионалом или схемой отношения).

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

Проекция

 

Алгебра

Исчисление

R[A]

{t[A] t R}

 

 

Операция проекции представляет собой выборку из каждого кортежа отношения значений атрибутов, входящих в A, и удаление из полученного отношения повторяющихся строк. В исчислении t обозначает «кортежную» переменную, значениями которой являются кортежи исходного отношения R, a t[A] – часть кортежа R с атрибутами из A. В соответствии с определением отношения неявно предполагается удаление дубликатов кортежей результирующего отношения.

Пример

x

y

R[M ,T ] = z

www

a

 

a

 

x

 

 

 

 

a

= y

 

b

z

b

 

w

b

a

a a

b

Объединение

 

Алгебра

Исчисление

R S

{t| t R t S}

 

124

Для того чтобы объединение было возможным, отношения-операнды (R и S) должны быть совместимы по объединению, т.е. их атрибуты должны быть определены над совместными данными.

Пример

5

3 [ ] = 9

R Q,T S

124

 

 

 

 

 

 

5

a

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

a

 

 

 

 

 

 

 

 

 

 

a

5

a

a

9

 

 

 

 

 

 

b

a

10

b

1

 

 

 

 

 

 

 

 

a

 

15

c

= 2

b

 

b

 

2

d

4

b

b

 

6

a

10

b

 

 

 

 

 

 

 

 

b

1

b

15

c

 

 

 

 

 

 

 

 

 

 

 

 

 

2

d

 

 

 

 

 

 

 

6

a

 

 

 

 

 

 

 

 

 

 

Разность

 

 

Алгебра

 

Исчисление

 

R S

 

{t| t R t S}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

S

Представление

 

 

 

 

 

 

R

 

 

*

 

диаграммой

 

 

 

 

 

 

 

 

 

 

 

 

 

Венна

R–S

 

 

 

 

 

 

 

 

 

 

 

 

Пример

 

 

 

 

 

 

 

 

 

 

 

 

 

5

a

 

 

5

a

 

 

 

 

 

3

a

 

 

 

10

b

 

 

3

a

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

R[Q,T ]S = 9

a

 

15

c

 

= 9

a

 

1

b

 

 

 

2

d

 

2

b

 

2

b

 

 

 

6

a

 

 

 

 

 

 

 

4

b

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

b

 

 

1

b

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

Алгебра

 

 

 

 

 

 

 

 

 

 

 

Исчисление

 

 

 

 

 

 

 

 

 

 

 

R Ä S

 

 

 

 

 

 

 

 

 

 

 

{(r||s) | r R r S}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

125

Из обозначений видно, что операция декартова произведения осуществляется между кортежами отношений-аргументов, а результатом является конкатенация (обозначаемая ||) соответствующих кортежей. При этом

Степень(R Ä S)= Степень(R)+Степень(S), Мощность(R Ä S)= Мощность(R)× Мощность(S).

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

Пусть

RA=R[M,T] и RB=R[Q,T] Ç S,

т.е.

 

x

a

 

 

 

 

RA

y

a

 

 

RB

5

a

=

a

 

и

=

 

 

z

 

 

 

1

b

 

 

 

 

 

 

 

 

 

w

b

 

 

 

 

Тогда

 

 

 

 

 

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

x

a

 

 

y

RA Ä RB

y

a

 

5

a

y

=

a

 

Ä

 

=

 

z

 

1

b

z

 

 

 

 

 

 

 

 

w

b

 

 

z

ww

a

5

a

a

1

b

 

 

a

5

a

 

 

a

1

b

 

a

5

a

 

 

1

 

 

a

b

b

5

a

 

b

1

 

 

 

 

b

Степень результирующего отношения равна 4(2+2), а мощность – 8 (2 × 4).

Селекция (Ограничение)

 

 

 

Алгебра

 

Исчисление

 

(a) R[AӨv]

 

{t| t R

(t[A]Өv)}

(б) R[AӨB]

 

{t| t R

(t[A]Өt[B])}

 

 

 

 

В приведенном определении v обозначает константу, а В – атрибут отношения R, отличный от А. Символ 7 используется для обозначения одной из операций сравнения (<, ≤, =, ≠, ≥, >).

126

Примеры

P[D1>D2]=Ø (пустое множество) поскольку в отношении отсутствуют кортежи, где D1>D2.

1

11

x

P[D2 = 11][D2 ] = 2

11

y [D2 ] = [11]

 

11

 

3

z

Пересечение

 

 

Алгебра

 

Исчисление

 

R Ç S

 

{t| t R t S}

 

 

 

Пересечение R Ç S=R-(R-S), что соответствует области, отмеченной звездочкой на диаграмме Венна для операции разности.

Пример

5

a

5

a

 

 

 

 

 

 

 

 

 

 

3

a

 

10

b

 

 

 

a

 

 

c

 

5

a

9

 

15

 

R[Q,T ]Ç S =

b

 

Ç

 

 

=

 

1

 

2

d

1

b

2

b

 

6

a

 

 

 

 

 

 

 

 

 

 

4

b

1

b

 

 

 

 

 

 

 

 

 

 

Соединение

 

 

Алгебра

 

Исчисление

 

R[AӨB]S

 

{(r||s) | r R s S (r[A]Өs[B])}

 

 

 

Как видно из определения, операция соединения имеет сходство с декартовым произведением. Однако здесь добавлено условие, согласно которому вместо полного произведения всех строк в результирующее отношение включаются только строки, удовлетворяющие определенному соотношению между атрибутами соединения (А, В) соответствующих отношений.

Имеется несколько вариантов операции соединения:

а) тета- и эквисоединение. При этой операции A и B являются совместимыми атрибутами соединения, а степень результирующего отношения равна сумме степеней отношений-операндов. Такое соединение называется Ө- соединением (тета-соединением). В случае сравнения на равенство соединение называется эквисоединение;

б) естественное соединение. В этом случае атрибуты соединения имеют общие (одинаковые) домены, и после соединения один из атрибутов

127

отбрасывается. Степень результирующего отношения на единицу меньше суммы степеней отношений-операндов;

в) композиция. Это соединение отличается от естественного тем, что из результирующего отношения удаляются оба атрибута соединения. Поэтому степень результирующего отношения на две единицы меньше суммы степеней отношений-операндов.

Примеры

Тета-соединение R[Q>A]S

При выполнении соединения необходимо для каждого кортежа из R взять значение атрибута Q и сравнить его со значением атрибута A из каждого кортежа S. В результате получим

x

101

5

a

2

d

 

101

5

 

1

 

 

x

a

b

 

 

105

3

a

2

d

 

y

 

y

105

3

a

1

b

 

z

500

9

a

5

a

 

 

 

 

 

 

 

 

R[Q > A]S = z

500

9

a

2

d

z

500

9

a

6

a

 

 

 

 

 

 

 

 

z

500

9

a

1

b

 

10

2

 

1

 

 

w

b

b

 

w

300

4

b

2

d

 

300

4

b

1

b

 

w

 

Следует отметить, что кортеж <w 50 1 b> отношения R не вошел в результирующее отношение.

Естественное соединение P[D3 =D4]Q

 

 

1 11 x

x 1

1 11

x 1

 

 

 

11

x

 

 

 

11

 

 

 

 

1

x 2

1

x 2

P[D3

= D4

]Q = 2 11

y

y 1

 

= 2 11

y 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4 12

x

x 1

 

4 12

x 1

 

 

 

 

 

x

 

 

 

 

 

 

 

 

4 12

x 2

4 12

x 2

Деление

 

 

 

 

 

Алгебра

Исчисление

R[A÷B]S

{r[

 

] | r R s S[B] gR(r[

 

])}

A

A

 

 

 

 

 

 

Атрибуты A и B являются совместимыми и/или общими атрибутами деления. Для упрощения объяснения можно считать R бинарным отношением,

состоящим из A и дополнения A, которое обозначается A и содержит

128

атрибуты, отличные от A. Для каждого раздела из R[ A ], т.е. для каждого уникального кортежа r[ A ], необходимо выполнить следующее:

• выбрать допустимые строки кортежей r[ A ] из R[ A ], обозначив

полученное множество кортежей через T=gR(r[ A ]). Множество T называется также множеством-образом;

• в результирующее отношение входят кортежи r, для которых выполняется S[B]HgR(r[ A ]).

Примеры

Р[D3>÷D 4]=Ø ( пустое множество), так как

 

1

11

 

 

 

P[D3 ] =

2

11

 

 

 

3

11

 

4

12

g P (p[D3 ])

x

 

 

 

y

 

 

x

z

 

и

Q =

 

 

y

x

 

 

 

 

 

 

 

 

P[D3 ]

 

 

 

 

 

x

 

{x}

 

 

 

 

 

y

 

{z}

x

 

 

 

 

 

 

 

y

 

 

 

 

x

 

{y}

 

 

 

 

 

y

 

{} x

xy

T Q

Следовательно, подходящие p[D3 ] отсутствуют.

4.1.2. Реляционное исчисление кортежей

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

Реляционное исчисление никак не связано с дифференциальным и интегральным исчислениями в математике, а его название произошло от части символьной логики, которая называется логикой предикатов.

Влогике первого порядка или теории исчисления предикатов под предикатом подразумевается истинностная функция с аргументами. При подстановке вместо аргументов значений, функция становится выражением, называемым суждением, которое может быть истинным или ложным. Например, предложения «студент Шепелявцев учится на третьем курсе вуза» и

129

«средний балл успеваемости студента Шепелявцева выше, чем у студента Мамаева» являются суждениями, поскольку можно определить их истинность или ложность. В первом случае функция «учится на третьем курсе вуза» имеет один аргумент («студент Шепелявцев»), а во втором случае функция «средний балл выше» имеет два аргумента («студент Шепелявцев» и «студент Мамаев»).

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

Если P – предикат, то множество всех значений переменной x, при которых суждение Р становится истинным, можно символически записать следующим образом:

{x| P(x)}.

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

образованием составных предикатов.

В реляционном исчислении кортежей задача состоит в нахождении таких кортежей, для которых предикат является истинным.

Выражение реляционного исчисления с переменными-кортежами записывается в виде

{t| φ(t)},

где t – свободная переменная-кортеж, обозначающая кортеж фиксированной длины (если необходимо указать арность кортежа, то используют запись t(i);

i-арность кортежа t); φ – некоторая формула, построенная по специальным правилам.

Например, выражение {t| R1(t) R2(t)}, где в качестве формулы выступает

конструкция R1(t) R2(t), означает, что необходимо получить множество всех кортежей t, причем таких кортежей, которые принадлежат отношениям R1 или R2. Формула (R1(t) R2(t))) имеет смысл только тогда, когда отношения R1 и R2 имеют одинаковую арность, поскольку переменная-кортеж t задана как переменная фиксированной длины. Выражение { t| R1(t) R2(t)} эквивалентно

операции объединения (R1 R2 реляционной алгебры.

Формулы в реляционном исчислении строятся из атомов и совокупности арифметических и логических операторов.

Атомы формул могут быть трех типов:

1) R(t), где R – имя отношения. Этот атом означает, что t – это кортеж в отношении R;

130