
- •Семантическое моделирование данных: er-диаграммы
- •Реляционная модель данных: домены и отношения Общая характеристика реляционной модели данных
- •Типы данных – множество значений, множество операций
- •Простые типы данных
- •Структурированные типы данных
- •Ссылочные типы данных
- •Типы данных, используемые в реляционной модели
- •Отношения, атрибуты, кортежи отношения Определения и примеры
- •Свойства отношений
- •Первая нормальная форма
- •Реляционная модель данных: целостность
- •Целостность в реляционной модели данных
- •Реляционная модель данных: реляционная алгебра
- •Ограничения на операции
- •Соединение
- •Деление
- •Манипулирование реляционными данными
- •Реляционная модель данных: реляционное исчисление кортежей Реляционное исчисление
- •Исчисление кортежей
- •Реляционная алгебра и реляционное исчисление
- •Проектирование реляционных баз данных на основе принципов нормализации: функциональные зависимости
- •Проектирование реляционных баз данных на основе принципов нормализации: 1nf, 2nf, 3nf, bcnf Нормальная форма
- •Роль нормализации в проектировании реляционных баз данных
- •Нормальные формы
- •Первая нормальная форма (1nf)
- •Типы данных Transact-sql
- •Типы данных
- •Преобразования типа Transact-sql Преобразование типов данных (компонент Database Engine)
- •Скалярные выражения Transact-sql
- •Логические выражения Transact-sql Логические операторы (Transact-sql)
- •Табличные выражения Transact-sql Табличные выражения
- •7.2.1. Предложение from
- •7.2.1.1. Соединённые таблицы
- •7.2.1.2. Псевдонимы таблиц и колонок
- •7.2.1.3. Подзапросы
- •7.2.1.4. Табличные функции
- •7.2.2. Предолжение where
- •7.2.3. Предложения group by и having
- •7.2.4. Обработка оконных функций
- •Обобщенные табличные выражения Transact-sql Применение обобщенных табличных выражений
- •With обобщенное_табличное_выражение (Transact-sql)
- •Рекомендации по созданию и использованию обобщенных табличных выражений
- •Рекомендации по созданию и использованию обобщенных табличных выражений
- •Рекомендации по созданию и использованию рекурсивных отв
- •Инструкции языка управления потоком Transact-sql Язык управления потоком (Transact-sql)
- •Сценарии и пакеты Transact-sql Сценарии языка Transact-sql
- •Инструкции языка описания данных Transact-sql Инструкции языка описания данных ddl (Transact-sql)
- •Инструкции alter (Transact-sql)
- •Инструкции create (Transact-sql)
- •Инструкции drop (Transact-sql)
- •Ограничения целостности Transact-sql
- •Инструкции языка обработки данных Transact-sql
- •Предложение for (Transact-sql)
- •Инструкции языка контроля доступа к данным Transact-sql
- •Хранимые процедуры Transact-sql Хранимые процедуры (компонент Database Engine)
- •Функции Transact-sql Основные сведения о пользовательских функциях
- •Триггеры Transact-sql Триггеры dml
- •Курсоры Transact-sql Курсоры
- •Использование простого курсора и синтаксиса
- •Индексы Transact-sql Индексы
- •Вторичный индекс path типа данных xml
- •Вторичный индекс value типа данных xml
- •Вторичный индекс property
- •Управление транзакциями в sql Server Инструкции транзакций (Transact-sql)
- •Журналирование в sql Server Журнал транзакций (sql Server)
- •Просмотр журнала ошибок sql Server
- •Управление безопасностью в sql Server
- •Массовый импорт и экспорт данных в sql Server Массовый импорт и экспорт данных (sql Server)
- •Методы массового импорта и экспорта данных
- •Файлы форматирования
- •Метаданные в sql Server Метаданные (службы Master Data Services)
- •Распределенные запросы и распределенные транзакции в sql Server Распределенные запросы
- •Распределенные транзакции Transact-sql
- •Распределенные запросы и распределенные транзакции
Реляционная модель данных: реляционная алгебра
Реляционная алгебра — замкнутая система операций над отношениями в реляционной модели данных. Операции реляционной алгебры также называют реляционными операциями.
Первоначальный набор из 8 операций был предложен Э. Коддом в 1970-е годы и включал как операции, которые до сих пор используются (проекция, соединение и т.д.), так и операции, которые не вошли в употребление (например, деление отношений).
В процессе развития реляционной теории и практики было предложено несколько новых реляционных операций, например полусоединение (SEMI-JOIN) и полуразность, или анти-полусоединение (ANTI-SEMI-JOIN), CROSS APPLY и OUTER APPLY, транзитивное замыкание (TCLOSE) и др.
Поскольку многие операции выразимы друг через друга, в составе реляционной алгебры можно выделить несколько вариантов базиса (набора операций, через который выразимы все остальные). Наиболее известный и строго определённый базис (алгебра А) предложен Кристофером Дейтом и Хью Дарвеном[3].
Реляционная алгебра и реляционное исчисление эквивалентны по своей выразительной силе[4]. Существуют правила преобразования запросов между ними.
Замкнутость реляционной алгебры
Реляционная алгебра представляет собой набор таких операций над отношениями, что результат каждой из операций также является отношением. Это свойство алгебры называетсязамкнутостью.
Операции над одним отношением называются унарными, над двумя отношениями — бинарными, над тремя — тернарными (таковые практически неизвестны).
Пример унарной операции — проекция, пример бинарной операции — объединение.
N-арную реляционную операцию f можно представить функцией, возвращающей отношение и имеющей n отношений в качестве аргументов:
Поскольку реляционная алгебра является замкнутой, в качестве операндов в реляционные операции можно подставлять другие выражения реляционной алгебры (подходящие по типу):
В реляционных выражениях можно использовать вложенные выражения сколь угодно сложной структуры.
Ограничения на операции
Некоторые реляционные операции, в частности, операции объединения, пересечения и вычитания, требуют, чтобы отношения имели совпадающие (одинаковые) заголовки (схемы). Это означает, что совпадают количество атрибутов, названия атрибутов и тип (домен) одноимённых атрибутов.
Некоторые отношения формально не являются совместимыми из-за различия в названиях атрибутов, но становятся таковыми после применения операции переименования атрибутов.
Операции реляционной алгебры
Далее перечислены некоторые операции реляционной алгебры, которые представляют либо исторический, либо практический интерес. Все операции перечислить невозможно, поскольку любая операция, удовлетворяющая определению реляционной, является частью реляционной алгебры.
Переименование
В результате применения операции переименования получаем новое отношение, с измененными именами атрибутов. Синтаксис:
R RENAME Atr1, Atr2, … AS NewAtr1, NewAtr2, …
где
R — отношение
Atr1, Atr2, … — исходные имена атрибутов
NewAtr1, NewAtr2, … — новые имена атрибутов
Объединение
Отношение с тем же заголовком, что и у совместимых по типу отношений A и B, и телом, состоящим из кортежей, принадлежащих или A, или B, или обоим отношениям. Синтаксис:
A UNION B
Пересечение
Отношение с тем же заголовком, что и у отношений A и B, и телом, состоящим из кортежей, принадлежащих одновременно обоим отношениям A и B. Синтаксис:
A INTERSECT B
Вычитание
Отношение с тем же заголовком, что и у совместимых по типу отношений A и B, и телом, состоящим из кортежей, принадлежащих отношению A и не принадлежащих отношению B. Синтаксис:
A MINUS B
Декартово произведение
Отношение (A1, A2, …, Am, B1, B2, …, Bm), заголовок которого является сцеплением заголовков отношений A(A1, A2, …, Am) и B(B1, B2, …, Bm), а тело состоит из кортежей, являющихся сцеплением кортежей отношений A и B:
(a1, a2, …, am, b1, b2, …, bm)
таких, что
(a1, a2, …, am)∈ A,
(b1, b2, …, bm)∈ B.
Синтаксис:
A TIMES B
Выборка (ограничение)
Отношение с тем же заголовком, что и у отношения A, и телом, состоящим из кортежей, значения атрибутов которых при подстановке в условие c дают значение ИСТИНА. cпредставляет собой логическое выражение, в которое могут входить атрибуты отношения A и/или скалярные выражения. Синтаксис:
A WHERE c
Проекция
Отношение с заголовком (X, Y, …, Z) и телом, содержащим множество кортежей вида (x, y, …, z), таких, для которых в отношении A найдутся кортежи со значением атрибута Xравным x, значением атрибута Y равным y, …, значением атрибута Z равным z. При выполнении проекции выделяется «вертикальная» вырезка отношения-операнда с естественным уничтожением потенциально возникающих кортежей-дубликатов. Синтаксис:
A[X, Y, …, Z]
или
PROJECT A {x, y, …, z}