![]()
Главная Обратная связь Дисциплины:
Архитектура (936) ![]()
|
Элементы реляционного исчисления
В отличие от реляционной алгебры (процедурный подход), реляционное исчисление реализует декларативный (описательный) подход к выполнению операций над данными, поскольку оно лишь описывает свойства желаемого результата в виде логической формулы. Основная идея состоит в том, чтобы любую операцию над отношениями описать в виде правильной формулы. СУБД, основанные на реляционном исчислении, автоматически распознают эти формулы и выполняют требуемые преобразования над данными. Достоинством такого подхода является то, что он позволяет построить непроцедурные языки манипулирования данными. Базисными понятиями реляционного исчисления являются: - понятие переменной с определенной для нее областью допустимых значений. - понятие правильно построенной формулы, опирающейся на переменные, предикаты и кванторы. Аналитические выражения записывают в одной из следующих форм: а) { t | Y (t) } - читается так: “множество переменных t таких, что истинна формула Y “ б) { t1, t2, ... tk | Y ‘ ( t1, t2, ... tk ) } гдеt- переменная - кортеж, t1,...tk - переменные на доменах, k - ранг отношения, Y- формула, построенная из атомов. В зависимости от того, что является областью определения переменной, различают исчисление кортежей и исчисление доменов. В первом случае (а)) в качестве значений переменных используются кортежи, во втором (б)) - домены. 8.2. Реляционное исчисление кортежей Атомы формулY могут быть трех типов: 1. R(S) - означает, что S - это кортеж в отношенииR 2. s[i] @ u[j] - означает, чтоi-ая компонента S и j-ая компонентаU связаны оператором сравнения (< > =).Например: s[1] < u[3] справедливо для кортежей s = (1, 6, 6, 6) и u = (2, 2, 5, 2) 3. s[i] @ const или const @ s[i], - аналогичная п.2 связь с константой. Например, s[3] = “СИДОРОВ” Формулы составляются из атомов по следующим правилам: 1. Каждый атом - это формула 2. Если Y 1 и Y 2 - формулы, то Y 1 Щ Y 2, Y 1 Ъ Y 2, Ш Y 1 - тоже формулы. 3. Если Y - формула, то ($ s) (Y )- тоже формула, которая утверждает, что существует такое значение переменнойS, при котором Y истинна. 4. Если Y- формула, то(" s) (Y ) - тоже формула, которая утверждает, что при подстановке любого значения переменной S в формулу Y она остается истинной. 5. Порядок старшинства операций в формулах: операторы сравнения (< > = и т.п.), $ , " , Ш ,Щ ,Ъ Правильно построенные формулы служат для описания условий, которые накладываются пользователем на кортежные переменные. В условиях применяются только простые сравнения атрибутов отношений с константой или с другим атрибутом. При использовании кортежных переменных можно ссылаться на отдельный атрибут этой переменной, например: если S = (5, Иванов, 500, 3) - это кортеж отношения СОТРУДНИКИ (номер, имя, оклад, отдел), то S[3] = 500 - это значение третьего атрибута данного кортежа (оклад). На практике в языках, основанных на реляционном исчислении, часто вместо номера атрибута используют его имя, например, вместоS[3] пишут S.Оклад, что более наглядно. Переменные, входящие в формулы, могут быть свободными или связанными. Ксвободным относят все переменные, входящие в формулу, при построении которой не использовались кванторы. Множество кортежей - значений этих переменных, при которых формула истинна, образуют результирующее отношение. Если же имя переменной Х использовано сразу после квантора $ Х или " Х, то она считается связаннойпеременной, которая не видна за пределами формулы, описанной в кванторе. При вычислении значения такой формулы используется не одно значение связанной переменной, а вся ее область определения.Например, пусть Х и Y - две кортежные переменные, определенные на отношении СОТРУДНИКИ. Тогда, формула $ Y (Х.Оклад > Y.Оклад) для текущего значения Х истинна в том и только в том случае, если во всем отношении СОТРУДНИКИ найдется кортеж Y такой, что значение его атрибута Оклад удовлетворяет заданному условию сравнения. Чтобы описать, какие атрибуты кортежа должны входить в результирующее отношение, используют целевой список, который может состоять из следующих элементов: 1. Х.А где Х- имя свободной переменной, а А - имя атрибута отношения 2. Х, то есть имена всех атрибутов отношения 3. N = X.A, где N - новое имя атрибута результирующего отношения (когда используются несколько переменных с одинаковой областью определения) В реальных языках БД вместо математических обозначений кванторов и логических связок используют, как правило, словесные обозначения:
Таким образом, аналитическое выражениереляционного исчисления кортежей можно записать в виде: ЦелевойСписок WHERE Формула. Значением выражения является отношение, тело которого определяется формулой, а набор атрибутов и их имена - целевым списком. На основе рассмотренного исчисления построен язык SQL. 8.3. Реляционное исчисление доменов В этом исчислении переменные являются доменами. Например, в базе данных СОТРУДНИКИ-ОТДЕЛЫ можно говорить о доменных переменных ИМЯ (значения - допустимые имена) или НОМЕР (значения - допустимые номера сотрудников). Основным отличием исчисления доменов от исчисления кортежей является наличие дополнительного набора предикатов, позволяющих выражать так называемые условия членства. Если R - это отношение с атрибутами a1, a2, ..., an, то условие членства имеет вид R (ai1: vi1, ai2: vi2,..., aim: vim) (m <= n), где vij- это либо константа, либо имя доменной переменной. Условие членства истинно в том и только в том случае, если в отношении Rсуществует кортеж, содержащий указанные значения указанных атрибутов. Во всем остальном формулы и выражения этих двух видов реляционного исчисления похожи. Реляционное исчисление доменов является основой для большинства языков запросов, основанных на использовании форм, в частности, для популярного табличного языка запросов к БД Query-by-Example ("запрос по образцу"). Лекция 9. Язык SQL. Часть 1. Общие сведения. Структура SQL. Типы данных в SQL. Агрегатные Функции. 9.1. SQL (структурированный язык запроса) Появился после того, как Кодд опубликовал материал о реляционной алгебре. Разработан в фирме IBM и впервые появился в первом варианте РБД СУБД SYSTEM-R. Потом использовался в других СУБД и постепенно стал неписанным стандартом в разработке РБД. Но в качестве стандарта он был утвержден лишь в 1989г. В конце92-го года появляется новый стандарт SQL-2, который поддерживает все средства SQL-89 и, наконец, в 99г. появился SQL-3. В нём появился новый раздел, который вводит стандарты на новые конструкции: события, и триггеры. Не содержит тригонометрические функции: операторы sin, cos и.т.д. Содержит набор стандартных операторов доступа к данным, хранящимся в базе данных. Операторы языка SQL могут встраиваться в обычные языки программирования. Язык SQL является интерпретатором. 9.2. Стуктура SQL Язык SQL разбит на 6 подъязыков: 9.2.1. Язык определения данных (DDL) Операторы этого языка предназначены для определения структуры данных: CREATE TABLE - создать новое отношение (таблицу). DROP TABLE - удалить таблицу из БД. ALTER TABLE - изменяет структуру существующей таблицы или изменяет ограничения целостности таблицы. CREATE VIEW - создание виртуальной таблицы, в которую при выполнении запроса будут вводится данные. DROP VIEW – удаляет виртуальную таблицу. ALTER VIEW – изменяет структуру виртуальной таблицы. CREATE INDEX – создает индекс. DROP INDEX – удаляет индекс. 9.2.2. Язык манипулирования данными (DML) Содержит 3 оператора: DELETE – удаляет один или несколько кортежей. INSERT – вставляет кортеж в отношение. UPDATE – обновляет значение одного или несколько атрибутов в отношении. 9.2.3. Язык запросов (DQL) Он состоит всего из одного типа предложений SELECT. 9.2.4. Средства управления транзакциями Транзакция - последовательность операций, которые переводят БД из одного непротиворечивого состояния в другое. В нём используются три предложения: COMMIT – завершает комплексную взаимосвязанную обработку информации, объединенную в транзакцию и фиксирует новое непротиворечивое состояние БД. ROLLBACK – противоположен по значению. Это оператор отката транзакции. SAVEPOINT – позволяет сохранить промежуточное состояние БД в процессе выполнения транзакции, позволяет запомнить это состояние для того, чтобы к нему можно было вернуться. 9.2.5. Средства администрирования данных ALTERDATABASE – осуществляет изменение набора основных объектов в БД и ограничений, касающихся базы в целом. ALTERDBAREA – изменяет ранее созданную область хранения. ALTERPASSWORD – изменяет пароль для всей БД. CREATEDATABASE – создает новую БД с новыми параметрами. CREATEDBAREA – позволяет создать новую область хранения данных и сделать её доступной для размещения информации. DROPDBAREA – позволяет удалить существующую область хранения БД, если в ней в настоящий момент не располагаются активные данные. GRANT – администратор предоставляет права доступа на выполнение операций над некоторыми объектами БД. REVOKE – администратор лишает прав доступа. 9.2.6. Программный SQL DECLARE – определяет курсор. Курсор - некоторое имя и связанный с ним запрос к БД, а также соответствующий виртуальный набор данных. Курсор: Имя (набор символов) Запрос Представление OPEN – открывает курсор. Занесение в виртуальный набор данных, которые соответствуют описанию курсора и соответствуют текущему состоянию БД. CLOSE – закрывает курсор. 9.3. Типы данных в SQL сhar (n) - строка из n символов. NUMERIC (m, n) - числа, с фиксированным положением десятичной точки. m - общее количество знаков. n - количество знаков после точки. INTEGER - целое число длиной 4 байта. SМALLINT - целые числа длиной 2 байта. FLOAT (n) - числа с плавающей точкой, n-размер числа в байтах. BIT (n) - двоичное число длиной n разрядов. DATE - календарная дата. TIMESTAMP - дата и время. INTERVAL - временной интервал. MEMO - позволяет заносить большие объемы текстовой информации. MONEY -может иметь только сотые доли. 9.4. Агрегатные функции Позволяют выполнить вычисления обобщенных групповых значений. Таких функций в SQL пять: 1) COUNT - выдаёт количество непустых значений или строку, которую выдал запрос. 2) SUM - применяется только к числовым атрибутам и выдаёт сумму всех выбранных значений данного поля. 3) AVG - вычисляет среднеарифметические значения данного поля. 4) MIN - вычисляет минимальное значение указанного поля. 5) MAX - вычисляет максимальное значение указанного поля. Лекция 10. Язык SQL. Часть 2. Оператор SELECT.
![]() |