Общая операция соединения

Определение 8. Соединением отношений Aи B по условию с называется отношение

(ATIMESB) WHEREc

Тэта-соединение

Определение 9. Пусть отношение Aсодержит атрибут X, отношение Bсодержит атрибут Y, а q- один из операторов сравнения (=,≠,>,≥,<,≤ и т.д.). Тогда q-соединением отношения Aпо атрибуту Xс отношением Bпо атрибуту Yназывают отношение

(ATIMESB) WHEREXqY

Это частный случай операции общего соединения.

Иногда, для операции q-соединения применяют следующий, более короткий синтаксис:

A[XqY]B

25. Операции реляционной алгебры: соединение, разновидности соединения, экви-соединение, естественное соединение.

Соединение

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

Обычно рассматривается несколько разновидностей операции соединения:

- Общая операция соединения;

- q -соединение (тэта-соединение);

- Экви-соединение;

- Естественное соединение.

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

Экви-соединение

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

Синтаксис экви-соединения:

A[X=Y]B

Естественное соединение

Определение 10. Пусть даны отношенияA(A1, A2,…, An, X1, X2,…, Xp) и B(X1, X2,…, Xp, B1, B2,…, Bm), имеющие одинаковые атрибуты X1, X2,…, Xp(т.е. атрибуты с одинаковыми именами и определенные на одинаковых доменах).

Тогда естественным соединением отношений Aи Bназывается отношение с заголовком (A1, A2,…, An, X1, X2,…, Xp, B1, B2,…, Bm) и телом, содержащим множество кортежей (a1, a2,…, an, x1, x2,…, xp, b1, b2,…, bm), таких, что (a1, a2,…, an, x1, x2,…, xpAи (x1, x2,…, xp, b1, b2,…, bm) ÎB.

Естественное соединение настолько важно, что для него используют специальный синтаксис:

AJOINB

26. Операции реляционной алгебры: деление.

Деление

Определение 11. Пусть даны отношения A(X1, X2,…, Xn, Y1, Y2,…, Ym) и B(Y1, Y2,…, Ym), причем атрибуты Y1, Y2,…, Ym- общие для двух отношений. Делением отношений Aна Bназывается отношение с заголовком (X1, X2,…, Xn) и телом, содержащим множество кортежей (x1, x2,…, xn), таких, что для всех кортежей (y1, y2,…, ymBв отношении Aнайдется кортеж (x1, x2,…, xn, y1, y2,…, ym) .

Отношение Aвыступает в роли делимого, отношение Bвыступает в роли делителя. Деление отношений аналогично делению чисел с остатком.

Синтаксис операции деления:

ADEVIDBYB

27.Язык SQL . История развития. Структура языка. Типы данных SQL .

• SQL (StructuredQueryLanguage - структурированный язык запросов) основывается на некоторой смеси алгебраических и логических конструкций.

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

• Язык SQL оперирует терминами, несколько отличающимися от терминов реляционной теории, например, вместо "отношений" используются "таблицы", вместо "кортежей" - "строки", вместо "атрибутов" - "колонки" или "столбцы".

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

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

• В SQL определены два подмножества языка:

- SQL-DDL (DataDefinitionLanguage) - язык определения структур и ограничений целостности баз данных. Сюда относятся команды создания и удаления баз данных; создания, изменения и удаления таблиц; управления пользователями и т.д.

- SQL-DML (DataManipulationLanguage) - язык манипулирования данными: добавление, изменение, удаление и извлечение данных, управления транзакциями

CHAR или CHAR(n) -символьные строки фиксированной длины. Длина строки определяется параметром n. CHAR без параметра соответсвуетCHAR(1). Для хранения таких данных всегда отводится n байт вне зависимости от реальной длины строки.

VARCHAR(n) - символьная строка переменной длины. Для хранения данных этого типа отводится число байт, соответствующее реальной длине строки.

INTEGER или INT- целое, для хранения которого отводится, как правило, 4 байта. Интервал значений от - 2147483647 до + 2147483648

SMALLINT - короткое целое (2 байта), интервал значений от - 32767 до +32768

FLOAT и SMALLFLOAT - числа с плавающей точкой (для хранения отводится обычно 8 и 4 байта соответсвенно).

DECIMAL(p) - тип данных аналогичный FLOAT с числом значащих цифр p.

DECIMAL(p,n) - аналогично предыдущему, p - общее количество десятичных цифр, n - количество цифр после десятичной запятой.

MONEY(p,n) - все аналогично типу DECIMAL(p,n). Вводится только потому, что некоторые СУБД предусматривают для него специальные методы форматирования.

DATE - тип данных для хранения даты.

TIME - тип данных для хранения времени.

INTERVAL - тип данных для хранения временного интервала.

DATETIME - тип данных для хранения моментов времени (год + месяц + день + часы + минуты + секунды + доли секунд).

• Двоичные типы данных - позволяют хранить данные любого объема в двоичном коде (оцифрованные изображения, исполняемые файлы и т.д.). Определения этих типов наиболее сильно различаются от системы к системе, часто используются ключевые слова:

BINARY,BYTE,BLOB

• Последовательные типы данных - используются для представления возрастающих числовых последовательностей.

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

• В заключение следует сказать, что для всех типов данных имеется общее значение NULL - "не определено". Это значение имеет каждый элемент столбца до тех пор, пока в него не будут введены данные. При создании таблицы можно явно указать СУБД могут ли элементы того или иного столбца иметь значения NULL (это не допустимо, например, для столбца, являющего первичным ключом).

 

28. Язык SQL . Операторы создания и модификации схемы базы данных ( DATABASE , TABLE ). Примеры написания операторов.

При описании команд предполагается, что:

- текст, набранный строчными буквами (например,
CREATE TABLE) является обязательным;

- текст, набранный прописными буквами и заключенный в угловые скобки (например, <имя_базы_данных>) обозначает переменную, вводимую пользователем;

- в квадратные скобки (например, [NOT NULL]) заключается необязательная часть команды;

- взаимоисключающие элементы команды разделяются вертикальной чертой (например, [UNIQUE | PRIMARY KEY]).

Команда Описание
CREATE DATABASE <имя _базы _данных > Создание базы данных.
DROP DATABASE <имя_базы_данных> Удаление базы данных.

Создание таблицы:

CREATE TABLE <имя_таблицы>

(<имя_столбца><тип_столбца>

[NOT NULL]

[UNIQUE | PRIMARY KEY]