- •Функции субд.
- •Проектирование.
- •Реляционная и объектно-реляционная модели данных субд.
- •Реляционная алгебра.
- •Операции реляционной алгебры.
- •Взаимосвязь операций реляционной алгебры.
- •Нормальные формы отношений. 1нф, 2нф, 3нф, бкнф.
- •Приведение к третьей нормальной форме:
- •Представление операций реляционной алгебры средствами языка sql.
- •Структура языка sql. Оператор select. Типы соединений таблиц.
- •Соединение в sql.
- •Подзапросы в языке sql. Подзапросы с операторами select, update, insert, delete.
Приведение к третьей нормальной форме:
Если в некоторых отношениях обнаружена зависимость некоторых неключевых атрибутов от другихнеключевых атрибутов, то проводим декомпозицию этих отношений следующим образом: те неключевые атрибуты, которые зависят других неключевых атрибутов выносятся в отдельное отношение. В новом отношении ключом становится детерминант функциональной зависимости.
Отношение находится в нормальной форме Бойса-Кодда(БКНФ), если оно находится в третьей н.ф. и внем отсутствуют зависимости ключей или их частей от неключевых атрибутов.
Представление операций реляционной алгебры средствами языка sql.
Объединение
SELECT * FROM R1 UNION SELECT * FROM R2;
Пересечение
SELECT * FROM R1 INTERSECT SELECT * FROM R2;
или
SELECT DISTINCT *
FROM R1
WHERE EXISTS
(SELECT DISTINCT R2.#A
FROM R2
WHERE R1.A1 = R2.A2
AND … AND
R1.An = R2.An);
Разность
SELECT * FROM R1 EXCEPT SELECT * FROM R2;
или
SELECT DISTINCT *
FROM R1
WHERE NOT EXISTS
(SELECT DISTINCT R2.#A
FROM R2
WHERE R1.A1 = R2.A2
AND … AND
R1.An = R2.An);
Декартово произведение
SELECT R1.Attr1,… , R1.AttrN, R2.Attr1, … , R2.AttrM
FROM R1, R2;
или
SELECT R1.Attr1,… , R1.AttrN, R2.Attr1, … , R2.AttrM
FROM R1 CROSS JOIN R2;
Проекция
SELECT DISTINCT Attr2, Attr5, …,AttrN FROM R1;
Ограничение
SELECT * FROM R1 WHERE Булевское выражение;
Соединение
SELECT R1.Attr1,… , R1.AttrN, R2.Attr1, … , R2.AttrM
FROM R1, R2 WHERE Булевское выражение;
или
SELECT R1.Attr1,… , R1.AttrN, R2.Attr1, … , R2.AttrM
FROM R1 CROSS JOIN R2 WHERE Булевскоевыражение;
Структура языка sql. Оператор select. Типы соединений таблиц.
В упрощенном виде оператор SELECT языка SQL имеет следующую структуру:
SELECT [TOP число] [DISTINCT | DISTINCTROW | ALL] выражение_select,...
[FROM ссылка_на_таблицу | выражение_JOIN | (подзапрос)]
[WHERE условное выражение]
[GROUP BY {unsigned_integer | имя столбца| формула}]
[HAVING условное выражение]
[ORDER BY {unsigned_integer | имя столбца| формула} [ASC | DESC], ...]
Здесь:
WHERE – используется для определения, какие строки должны быть выбраны или включены в GROUP BY.
GROUP BY – используется для группирования строк по совпадающим значеним в меньший набор строк.
HAVING – используется для определения, какие строки после GROUP BY должны быть выбраны.
ORDER BY – используется для определения, какие столбцы используются для сортировки результирующего набора данных.
Условное выражение оператора WHERE можно определить в форме грамматики:
Условное_выражение ::= условное_выражение [(AND | OR) условное_выражение | Предикат_сравнения | Предикат_between | Предикат_in | Предикат_like | Предикат_null | Предикат_количественного_сравнения | Предикат_exist | Предикат_unique | Предикат_match | Предика_overlaps
В простейшем смысле оператор SELECT выполняется в следующем порядке:
Выполнение одиночных операторов SELECT в следующем внутреннем порядке: FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> (пара ORDER BY и TOP). Причем, если одновременно присутствует несколько подзапросов то они выполняются независимо: параллельно – для UNION, EXCEPT и INTERSECT, в порядке от самого вложенного к внешнему – для простых подзапросов, и наоборот – для коррелированных подзапросов.
Выполнение теоретико-множественных операций UNION, EXCEPT и INTERSECT.
Упорядочивание результата операцией ORDER BY.
В действительности схема выполнения может несколько отличаться от описанной выше в силу предварительной обработки запроса оптимизатором, действующем в следующей порядке:
Синтаксический анализ запроса.
Преобразование в каноническую форму.
Генерация планов выполнения запроса и выбор оптимального плана.
Выполнение алана запроса.
