Вычисления кортежей, доменов, отношений

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

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

Исчисление кортежей

Для определения кортежной переменной используется оператор RANGE. Например, для того чтобы определить переменную СЛУЖАЩИЙ, областью определения которой является отношение СЛУЖАЩИЕ, нужно употребить конструкцию

RANGE СЛУЖАЩИЙ IS СЛУЖАЩИЕ

Из этого определения следует, что в любой момент времени переменная СЛУЖАЩИЙ представляет некоторый кортеж отношения СЛУЖАЩИЕ. При использовании кортежных переменных в формулах можно ссылаться на значение атрибута переменной. Например, для того, чтобы сослаться на значение атрибута СЛУ_ИМЯ переменной СЛУЖАЩИЙ, нужно употребить конструкцию СЛУЖАЩИЙ.СЛУ_ИМЯ.

Правильно построенная формула (Well-Formed Formula, WFF) служит для выражения условий, накладываемых на кортежные переменные. WFF обеспечивают средства формулировки условия выборки из отношений БД.

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

СЛУЖАЩИЙ.СЛУ_НОМ = 2934

СЛУЖАЩИЙ.СЛУ_НОМ = ПРОЕКТ.ПРОЕКТ_РУК

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

Более сложные варианты WFF строятся с помощью логических связок NOT, AND, OR и IF ... THEN) с учетом обычных приоритетов операций ( NOT > AND > OR ) и возможности расстановки скобок.

При построении WFF допускается использование кванторов существования (EXISTS) и всеобщности (FORALL).

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

Исчисление доменов

В исчислении доменов областью определения переменных являются не отношения, а домены.

Основным формальным отличием исчисления доменов от исчисления кортежей является наличие дополнительного множества предикатов, позволяющих выражать так называемые условия членства. Если R – это n -арное отношение с атрибутами a1, a2, ..., an, то условие членства имеет вид R (ai1 : vi1, ai2 : vi2, ..., aim : vim) (m <= n), где vij – это либо литерально задаваемая константа, либо имя доменной переменной. Условие членства принимает значение true в том и только в том случае, если в отношении R существует кортеж, содержащий указанные значения указанных атрибутов.

Операции над отношениями

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

Проекция – извлечь заданные атрибуты (колонки) из отношения, по сути это частный случай пересечения.

Объединение – тело нового отношения является объединением тел старых, т.е. объединение множеств кортежей отношений A и B, в одно результирующее отношение.

Декартово произведение – создание нового отношения из кортежей отношений A и B, которое будет состоять из всех возможный комбинаций кортежей A и B.

Пересечение – создание нового отношения из кортежей отношений A и B, которое будет состоять только из кортежей, одновременно входящих как в A, так и в B.

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

Вычитание – отношение полученное в как (A – B) состоит из кортежей, принадлежащих отношению A и не принадлежащих отношению B.

Деление – операция деления есть практически (но не в строгом смысле) обратная к операции произведения.


Типы команд SQL-92

SQL-92 – третья версия языка запросов к базам данных SQL. В ANSI SQL имеется шесть основных типов команд.

Команды языка определения данных (data definition language — DDL) позволяют создавать новые таблицы в базе данных, добавлять индексы и т.д.; основными командами языка определения данных являются:

- CREATE TABLE – Создать таблицу.

- ALTER TABLE – Модифицировать таблицу.

- DROP TABLE – Удалить таблицу.

- CREATE INDEX – Создать индекс.

- ALTER INDEX – Модифицировать индекс.

- DROP INDEX – Удалить индекс.

Команды языка обработки данных (data manipulation language — DML) используются для добавления, корректировки и удаления строк в таблицах и включают команды:

- INSERT – Вставить данные в таблицу.

- UPDATE – Обновить данные.

- DELETE – Удалить данные.

Команда языка запросов данных (data query language — DQL) (единственная команда) используется для получения данных из таблиц и определения формы представления этих данных:

SELECT – Выполнить запрос из таблиц базы

Команды языка управления данными (data control language — DCL) определяют доступ отдельных пользователей и групп пользователей к объектам базы данных посредством полномочий, предоставляемых и отменяемых командами:

GRANT – Предоставить привилегии.

REVOKE – Отменить привилегии.

Команды языка обработки транзакций (transaction processing language – TPL) обеспечивают обновление всех строк, используемых в операторе DML, и включают следующие команды:

- BEGIN TRANSACTION – Начать транзакцию.

- COMIT TRANSACTION – Завершить транзакцию.

- SAVE TRANSACTION – Создать точку сохранения внутри транзакции.

Команды языка управления курсором (cursor control language – CCL) выполняют операции с отдельными строками одной или нескольких таблиц и включают команды: DECLARE CURSOR, FETCH INTO и UPDATE WHERE CURRENT.

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