Автор работы: Пользователь скрыл имя, 05 Февраля 2013 в 15:00, реферат
В структурной части модели фиксируется, что единственной структурой данных, используемой в реляционных БД, является нормализованное n-арное отношение. В манипуляционной части модели утверждаются два фундаментальных механизма манипулирования реляционными БД - реляционная алгебра и реляционное исчисление. Первый механизм базируется в основном на классической теории множеств (с некоторыми уточнениями), а второй - на классическом логическом аппарате исчисления предикатов первого порядка. В данной работе мы подробно рассмотрим механизм реляционного исчисления.
Введение 3
1.Реляционное исчисление 4
2.Исчисление кортежей 7
2.1.Синтаксис. 7
2.2. Переменные кортежей. 9
2.3. Свободные и связанные переменные кортежей. 10
2.4. Кванторы 12
2.5. Ещё раз о свободных и связанных переменных 14
2.6. Реляционные операции 15
2.7. Примеры 17
3. Сравнительный анализ реляционного исчисления и реляционной алгебры 17
4. Вычислительные возможности 23
4.1. Примеры 23
5. Исчисление доменов 24
5.1. Примеры 25
6. Средства языка SQL 26
6.1. Примеры 26
Заключение 28
Список литературы 29
Федеральное агентство железнодорожного транспорта
Уральский государственный университет путей сообщения
Кафедра «Автоматика, телемеханика и связь»
Реферат
по дисциплине: «Управление данными»
на тему «Реляционное исчисление»
Екатеринбург 2012
Оглавление
Введение
Наиболее распространенная трактовка реляционной модели данных, по-видимому, принадлежит Дейту, который воспроизводит ее (с различными уточнениями) практически во всех своих книгах. Согласно Дейту реляционная модель состоит из трех частей, описывающих разные аспекты реляционного подхода: структурной части, манипуляционной части и целостной части.
В структурной части модели фиксируется, что единственной структурой данных, используемой в реляционных БД, является нормализованное n-арное отношение. В манипуляционной части модели утверждаются два фундаментальных механизма манипулирования реляционными БД - реляционная алгебра и реляционное исчисление. Первый механизм базируется в основном на классической теории множеств (с некоторыми уточнениями), а второй - на классическом логическом аппарате исчисления предикатов первого порядка. В данной работе мы подробно рассмотрим механизм реляционного исчисления.
1.Реляционное исчисление
Часть реляционной модели, которая связана с операторами манипулирования данными, основывается на использовании реляционной алгебры. Однако с тем же основанием можно сказать, что она построена на базе реляционного исчисления. Другими словами, реляционная алгебра и реляционное исчисление представляют собой два альтернативных подхода. Принципиальное различие между ними следующее. Реляционная алгебра в явном виде представляет набор операций (соединение, объединение, проекция и т.д.), которые можно использовать, чтобы сообщить системе, как в базе данных из определённых отношений построить некоторое требуемое отношение, а реляционное исчисление просто представляет систему обозначений для определения требуемого отношения в терминах данных отношений. Например, рассмотрим три отношения:
S# |
P# |
QTY |
S1 |
P1 |
300 |
S1 |
P2 |
200 |
S1 |
P3 |
400 |
S1 |
P4 |
200 |
S1 |
P5 |
100 |
S1 |
P6 |
100 |
S2 |
P1 |
300 |
S2 |
P2 |
400 |
S3 |
P2 |
200 |
S4 |
P2 |
200 |
S4 |
P4 |
300 |
S4 |
P5 |
400 |
S# |
SNAME |
STATUS |
CITY |
S1 |
Smith |
20 |
London |
S2 |
Jones |
10 |
Paris |
S3 |
Black |
30 |
Paris |
S4 |
Clark |
20 |
London |
S5 |
Adams |
30 |
Athens |
P# |
PNAME |
COLOR |
WEIGHT |
CITY |
P1 |
Nut |
Red |
12.0 |
London |
P2 |
Bolt |
Green |
17.0 |
Paris |
P3 |
Screw |
Blue |
17.0 |
Rome |
P4 |
Screw |
Red |
14.0 |
London |
P5 |
Cam |
Blue |
12.0 |
Paris |
P6 |
Cog |
Red |
19.0 |
London |
Рассмотрим запрос «Выбрать номера поставщиков и названия городов, в которых находятся поставщики детали с номером ‘P2’». Алгебраическая версия этого запроса выглядит приблизительно так:
Этот же запрос в терминах реляционного исчисления формулируется приблизительно так:
В этой формулировке пользователь лишь указывает определённые характеристики требуемого результата, оставляя системе решать, что именно и в какой последовательности соединять, проецировать и т.д., чтобы получить необходимый результат.
Итак, можно сказать, что, по крайней мере, внешне формулировка запроса в терминах реляционного исчисления носит описательный характер, а в терминах реляционной алгебры - предписывающий. В реляционном исчислении просто описывается, в чём заключается проблема, тогда как реляционной алгебре задаётся процедура решения этой проблемы. Или, говоря очень неформально, алгебра имеет процедурный характер (пусть на высоком уровне, но всё же процедурный, поскольку задаёт необходимые для выполнения процедуры), а исчисление – непроцедурный.
Подчеркнём, однако,
что упомянутые отличия существуют только
внешне. На самом деле реляционная алгебра и реляционное
исчисление логически эквивалентны.
Каждому выражению в алгебре соответствует
эквивалентное выражение в исчислении,
и точно так каждому выражению в исчислении
соответствует эквивалентное выражение
в алгебре. Это означает, что между ними
существует взаимнооднозначное соответствие,
а различия связаны лишь с разными стилями
выражения; исчисление ближе к естественному
языку, а алгебра - к языку программирования;
Но повторим еще раз, эти различия только
кажущиеся, а не реальные. В частности,
ни один из подходов нельзя назвать
Реляционное исчисление основано на разделе математической логики, который называется исчислением предикатов. Идея использования исчисления предикатов в качестве основы языка баз данных впервые была высказана в статье Кунса . Понятие реляционного исчисления, т.е. специального применения исчисления предикатов, в реляционных базах данных, впервые было предложено Коддом в 1972, а позже Кодд представил язык, основанный непосредственно на реляционном исчислении и названный « подъязык данных ALPHA». Сам язык ALPHA никогда не был реализован, однако язык QUEL, который действительно был реализован и некоторое время серьезно конкурировал с языком SQL , очень походил на язык ALPHA , оказавший заметное влияние на построение языка QUEL .
Основным средством
реляционного исчисления
RANGE OF SX IS S;
RETRIEVE (SX.S#) WHERE SX.CITY = “London”;
Переменной
кортежа здесь является
В связи с тем, что реляционное исчисление основано на переменных кортежа, его первоначальную версию (для отличия от исчисления доменов, речь о котором пойдет ниже) называют также исчислением кортежей.
В статье Лакруа (Lacroix) и Пиротте (Pirotte) предлагается альтернативная версия исчисления, называемая исчислением доменов, в которой переменные кортежа изменяются на доменах, т.е. являются переменными, изменяемыми на доменах, а не на отношениях. В литературе предлагается множество языков исчисления доменов. Наиболее известный из них – пожалуй, Query-By-Example, или QBE (в действительности он является смешанным, так как в языке QBE присутствуют и элементы исчисления кортежей). Существует несколько коммерческих реализаций этого языка.
2.Исчисление кортежей
Сначала введем для реляционного исчисления конкретный синтаксис, взяв за образец (хотя умышленно не совсем точно) версию исчисления языка Titorial D, а затем перейдём к обсуждению семантики. В следующих ниже подразделах обсуждаются синтаксис и семантика.
2.1.Синтаксис.
Начнем с повторения синтаксиса параметра <реляционное выражение>. < реляционное выражение>
:: = RELATION {<список выражений кортежей>}
| < имя переменной-отношения>
| < реляционное выражение>
Иными словами, синтаксис параметра <реляционное выражение > остается прежним, однако из наиболее важных его подпараметров, < реляционная операция >, теперь будет иметь совершенно иное определение.
<определение переменной
:: = RANGEVAR <имя переменной кортежа >
Параметр <имя переменной кортежа> может использоваться как <выражение кортежа>, однако, лишь в определенном контексте, а именно:
< ссылка на атрибут кортежа >
:: = <имя переменной кортежа>.<ссылка на атрибут>[ AS <имя атрибута>]
Параметр <ссылка на атрибут кортежа > может использоваться как параметр < выражение>, но только в определенном контексте, а именно:
< логическое выражение >
:: = … все обычные возможности вместе с:
| < логическое выражение с квантором>
Ссылки на переменные кортежей в значении параметра < логическое выражение > могут быть свободными в пределах этого параметра тогда и только тогда, когда выполнено два следующих условия.
В контексте реляционного исчисления (в версии исчисления доменов или исчисления кортежей) логические выражения часто называют правильно построенными формулами (well-formed formulas – WFF, что произносится как « вэфф»). Далее мы также будем часто пользоваться этой терминологией.
< логическое выражение с квантором>
:: = EXISTS < имя переменной кортежа >(< логическое выражение >)
< реляционная операция >
:: = < прототип кортежа > [ WHERE < логическое выражение >]
В реляционной алгебре параметр < реляционная операция > представлял собой одну из форм параметра <реляционное выражение>, однако здесь он определяется иначе. Другие формы параметра < реляционное выражение > (в основном, имена переменных – отношений и обращение к операторам выбора) допустимы, как и ранее.
< прототип кортежа >
:: = < выражение кортежа>
Все ссылки на переменные кортежа, помещенные непосредственно в значение параметра <прототип кортежа>, должны быть свободными в пределах данного параметра < прототип кортежа>.