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

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

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

2)s[iu[j], где s и u - переменные-кортежи; Ө – арифметический оператор (<, >, =, ≤, ≥, ≠); i, j – номера или имена необходимых компонентов (столбцов) в соответствующих кортежах; s[i] – i -тый компонент в кортежепеременной s; u[j] - j-тый компонент в кортеже-переменной и. Например, атом (s[3] ≥ u[5]) означает, что третий компонент переменной s больше или равен пятому компоненту переменной u;

3)s[ia или aӨs[i], где a – константа. Например, атом (s[4]=70), означает, что четвертая компонента переменной-кортежа s равна 70.

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

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

вформуле

( x)(R(x, y) ( y)(U (x, y, z) Q(x, y))) ( x)( r )(U (x, y, r ) ( x)F (x))

все вхождения переменной x связаны, первое и последнее вхождения y свободны, остальные вхождения переменной y связаны, все вхождения переменной z свободны, единственное вхождение переменной r связано.

Кванторы в реляционном исчислении играют ту же роль, что декларации

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

втекущей процедуре.

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

Правильно построенные формулы определяются рекурсивно следующим образом.

1.Каждый атом – это формула. Все вхождения переменных-кортежей, упомянутые в атоме, являются свободными.

2.Если φ1 и φ2 - формулы, то выражения φ1 φ2 (утверждает, что φ1 и

φ2 истинны), φ1 φ2 (утверждает, что φ1 или φ2, или обе истинны), ¬ φ1

(утверждает, что φ1 не истинна), также являются формулами.

Экземпляры переменных-кортежей – свободные или связанные в формулах (φ1 φ 2), (φ1 φ 2) и (¬ φ1) так же, как и в φ1 и φ2. Таким образом,

131

свободными (связанными) являются те и только те вхождения переменных, которые происходят от свободных (связанных) вхождений переменных φ1 и φ2. Некоторое вхождение переменной может быть связанным в φ1 например, в то время как другое – свободным в φ2 и т.п.

3. Если φ – формула, то ( s)(φ) – также формула. Свободные вхождения переменной s в формуле φ становятся связанными квантором ( s) в формуле ( s)(φ). Формула ( s)(φ) утверждает, что при подстановке любого кортежа подходящей арности вместо свободных вхождений s формула становится истинной.

4.Если φ – формула, то ( s)(φ) - также формула. Свободные вхождения переменной з в формуле φ также становятся связанными квантором ( s) в формуле ( s)(φ). Формула ( s)(φ) утверждает, что существует значение s, при подстановке которого вместо всех свободных вхождений s в формулу φ эта формула становится истинной.

Например, формула ( s)(R(s)) означает, что отношение не пусто, т.е. существует некоторый кортеж s, принадлежащий R.

5.Формулы могут при необходимости заключаться в скобки. Используется следующий порядок старшинства:

арифметические операторы сравнения;кванторы и ;

, , ¬.

6. Ничто иное не является формулой.

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

{t ( k )

 

( u )(R (u ) t[1] = u[i

1

] ... t[k ] = u[i

k

])}.

 

 

 

 

 

 

Введем ограничения на конечность реальных отношений в БД, чтобы исключить возможность формирования выражений типа {t|-R(t)}, не имеющих смысла. Это выражение обозначает все возможные, не принадлежащие R кортежи, арность которых согласуется с t.

С этой целью в реляционном исчислении рассматривают только безопасные выражения {t|φ(t)}, для которых выполняется условие, что каждый компонент (элемент столбца) любого кортежа t, удовлетворяющего φ(t) является элементом некоторого множества элементов D(φ).

Множество D(φ) определяется как функция фактических отношений, которые указываются в φ(t), и констант, присутствующих в формуле φ(t) и элементов кортежей тех отношений, которые указаны в φ(t). Так как все отношения в БД предполагаются конечными, то и множество D(φ) – конечно:

D(φ)={a1.φ} {a2.φ} … {an} π1(R1) π2(R1) … πk(Rn),

где a1.φ, a2.φ, ..., anконстанты, встретившиеся в формуле φ(t); π1(R1), …, πk(Rn) – проекции кортежей фактических отношений R1, ..., Rn, встретившихся в формуле φ(t) (в данном случае – компоненты кортежей).

132

При таком определении множества D(φ) справедливо следующее:

D1(t) φ2(t))= D1) D2),

D1(t) φ2(t))= D1) D2),

D1(t) ¬ φ2(t))= D1) D2) и т.п.

Например, если задано выражение {t|c R(t)}, где R – бинарное отношение, то

D(φ)={c} π1(R) π2(R).

Реляционное исчисление является безопасным, если выполнятся следующие условия:

1)из истинности φ(t) следует, что каждый компонент кортежа t принадлежит – D(φ);

2)для любой подформулы вида ( u)(φ1(u)), входящей в состав ф, из истинности φ1(u) следует, что u принадлежит – D1);

3)для любой подформулы вида ( u)(φ1(u)), входящей в состав φ, из истинности φ1(u) следует, что u не принадлежит D1), или же, что то же самое, из истинности ¬ φ1(u) следует, что u принадлежит D1).

При выполнении этих условий выражение {t|φ(t)} является безопасным.

Выражению ( u)(φ1(u)) эквивалентно выражение ¬( u)(¬ φ1(u)).

На основании вышеизложенного можно утверждать, что если формула φ(t) такова, что любая ее подформула вида ( u)(φi(u)) или ( u)(φj(u)) безопасна,

то безопасно каждое выражение вида {t|R(t) φ(t)}.

Действительно, любой кортеж, удовлетворяющий формуле (R(t) φ(t)),

принадлежит в соответствии с этой формулой отношению R. Следовательно, каждый из его компонентов будет принадлежать также и множеству элементов

D(R(t) φ(t)).

Тогда в силу выполнения условия 1 (выполнение условий 2 и 3 задано как исходная предпосылка) выражение { t|R(t) φ(t)} – безопасное. Если в φ(t) найдется хотя бы одна из подформул вида ( u)(φi(u)) или ( u)(φj(u)), которая окажется не безопасной, то тогда и выражение {t|R(t) φ(t)} не будет

безопасным.

Если в формуле φ(t) вообще отсутствуют подформулы вида ( u)(φi(u)) или ( u)(φj(u)) – или соответствующие им эквивалентные -¬( u)(¬ φi(u)) или

¬( u)(¬ φj(u)), – то выражение {t|R(t) φ(t)} всегда является безопасным.

Например, если φ(t)=¬ R2(t), то

получим

безопасное выражение

{t|R1(t) ¬ R2(t)}, соответствующее

операции

разности отношений в

реляционной алгебре (R1R2).

 

 

133

Безопасным является также выражение {t|R(t)}, соответствующее выражению R (точнее – переменной R, обозначающей отношение).

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

Теорема 4.1. Если E - выражение реляционной алгебры, то существует эквивалентное ему безопасное выражение в реляционном исчислении с

переменными-кортежами.

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

1. Операции объединения (R1 R2) соответствует выражение

{t|R1(t) R2(t)}.

2. Операции разности (R1-R2) соответствует выражение

{t|R1(t) ¬ R2(t)}.

Рассматривается все множество кортежей t, таких, что t принадлежит R1 и не принадлежит R2.

3. Операции декартова произведения (R1 Ä R2) соответствует выражение

{t(k+m)|( u)( v)(R1(u) R2(v) t[1]=u[1] … t[k]=

=u[k] t[k+1]=v[1] … t[k+m]=v[m])}.

Рассматривается все множество кортежей t арности (k+m), таких, что существует кортеж u, принадлежащий R1, и существует кортеж v, принадлежащий R2, причем k первых компонентов кортежа t образуют компоненты кортежа и, а следующие m компонентов кортежа t образуют компоненты кортежа v.

4. Операции проекции соответствует выражение

{t(k)|( u)(R1 t[1]=u[i1] … t[k]= u[ik])}

5. Операции селекции соответствует выражение {t|R(t) F'}, где F' – это

выражение F, в котором каждый операнд, обозначающий компонент i, заменен на t[i].

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

Подобные исследования привели к появлению двух категорий реальных реляционных языков:

языков на основе преобразований;

графических языков.

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

134

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

4.1.3 Реляционное исчисление доменов

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

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

1. R(x1x2…x k), где R - k-арное отношение; xi - константа или переменная на некотором домене.

Атом R(x1x2…x k) указывает, что значения тех xi, которые являются переменными, должны быть выбраны так, чтобы (x1x2…x k) было кортежем отношения R.

2. xθ y, где x и y – константы или переменные на некотором домене, Ө – оператор сравнения.

Атом xθ y указывает, что x и y представляют собой значения, при которых истинно xθ y.

Формулы в реляционном исчислении с переменными на доменах также используют логические связки , , ¬ и кванторы ( x), ( x), где x – переменная

на домене. Аналогично используются понятия свободных и связанных переменных.

Реляционное исчисление с переменными на доменах имеет вид

{x1x2…x k | φ(x1 , x2 ,, xk)},

где φ – формула, обладающая тем свойством, что только ее свободные переменные на доменах являются различными переменными x1 , x2 ,, xk. Например, выражение

{x1x2 | R1(x1x2) ( y)(¬ R2(x1y) ¬ R2(x2y))}

имеет место для бинарных отношений R1 и R2 и означает множество кортежей в R1, таких, что ни один из их компонентов не является первым компонентом какого-либо кортежа отношения R2.

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

Реляционное исчисление с переменными на доменах называется безопасным, если выполняются следующие условия:

1)из истинности φ(x1 , x2 ,, xk) следует, что xi принадлежит – D(φ);

2)если ( u)(φ1(u)) является подформулой φ, то из истинности φ1(u), следует, что u принадлежит D(φ);

3)если ( u)(φ1(u)) является подформулой φ, то из истинности φ1(u), следует, что u не принадлежит D(φ).

Выражение исчисления с переменными на доменах, эквивалентное заданному выражению исчисления с переменными-кортежами {t| φ(t) строится следующим образом:

135

1) если t является кортежем арности k, то вводится k новых переменных на доменах t1, t2, …, tk;

2) атомы R(t) заменяются атомами R(t1, t2, …, tk);

3)каждое свободное вхождение t[i] заменяется на ti;

4)для каждого квантора ( u) или ( u) вводится m новых переменных на

доменах u1, u2, , um, где m – арность кортежа u. В области действия этой квантификации выполняются замены:

R(u) на R(u1u2um), u[i] заменяется на ui,

( u) на ( u1)( u1)…( um), ( u) на ( u1)( u1)…( um);

5) выполняется построение выражения

{t1t2tk | φ'(t1, t2, …, tk)},

где φ' – это φ, в которой выполнены соответствующие замены.

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

Теорема 4.2. Для каждого безопасного выражения реляционного исчисления с переменными-кортежами существует эквивалентное безопасное выражение реляционного исчисления с переменными на доменах.

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

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

4.1.4 Сравнение теоретических языков

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

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

В первом случае определение наиболее эффективного порядка вычисления для реализации запроса пользователя выполняется транслятором

136

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

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

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

– арифметические вычисления и сравнения могут включаться в формулы селекции реляционных алгебраических выражений или в атомы в выражениях реляционного исчисления;

команды печати;

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

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

Перспективной категорией языков запросов являются языки четвертого поколения (4-generation languages – 4GL), которые позволяют создавать полностью готовое и соответствующее требованиям заказчика прикладное приложение с помощью ограниченного набора команд и в то же время предоставляют дружественную по отношению к пользователю среду разработки, чаще всего построенную на использовании команд меню. В некоторых системах даже используются некоторые разновидности естественного языка, т.е. ограниченной версии обычного английского языка, который иногда называется языком пятого поколения (5GL).

4.2 Определение реляционной полноты

Пусть реляционная база данных содержит множество отношений

R{R1, R2, …, Rп}, а множество C(R) представляет собой множество отношений, полученных из R с помощью операций реляционной алгебры. Множество C(R) отражает все связи, имеющиеся в базе данных. Говорят, что язык обладает реляционной полнотой, если он может охватить все связи, представленные C(R). Это означает, что язык имеет такую же выразительную мощность, как реляционная алгебра и реляционное исчисление.

137

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

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

отношениями. R1←R2*R3 означает, что результат соединения отношений R2 и R3 помещается во вновь созданное отношение R1;

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

R1←((R2[A, B]*R3)[B]*R4)[C]

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

138

5 РАСПРЕДЕЛЕННЫЕ БАЗЫ ДАННЫХ И СУБД

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

5.1 Основные определения, классификация распределенных систем

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

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

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

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

Система управления распределенными базами данных (СУРБД) состоит из единой логической базы данных, разделенной на некоторое количество фрагментов. Каждый фрагмент базы данных сохраняется на одном или нескольких компьютерах, которые соединены между собой линиями связи и каждый из которых работает под управлением отдельной СУБД. Любой из сайтов способен независимо обрабатывать запросы пользователей, требующие доступа к локально сохраняемым данным (что создает определенную степень локальной автономии), а также способен обрабатывать данные, сохраняемые на других компьютерах сети.

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

139

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

В распределенной СУБД должно существовать хотя бы одно глобальное приложение, поэтому любая СУРБД должна иметь следующие особенности.

Набор логически связанных разделяемых данных.

Сохраняемые данные разбиты на некоторое количество фрагментов.

Между фрагментами может быть организована репликация данных.

Фрагменты и их реплики распределены по различным вебприложениям.

WebApp связаны между собой сетевыми соединениями.

Работа с данными на каждом WebApp управляется СУБД.

СУБД на каждом WebApp способна поддерживать автономную

работу локальных приложений.

СУБД каждого WebApp поддерживает хотя бы одно глобальное

приложение.

Нет необходимости в том, чтобы на каждом из сайтов системы существовала своя собственная локальная база данных, что и показано на примере топологии СУРБД, представленной на рисунке 5.1.

Рисунок 5.1 - Топология системы управления распределенной базой данных

Из определения СУРБД следует, что для конечного пользователя распределенность системы должна быть совершенно прозрачна (невидима). Другими словами, от пользователей должен быть полностью скрыт тот факт, что распределенная база данных состоит из нескольких фрагментов, которые могут размещаться на различных компьютерах и для которых, возможно, организована служба репликации данных (импорт, экспорт)

140