- •Основы систем баз данных
- •Содержание
- •Введение
- •В первом разделе рассматриваются базовые понятия реляционной модели данных. Дается общая характеристика реляционной модели данных
- •Раздел 1. Базовые понятия реляционной модели данных. Общая характеристика реляционной модели данных
- •1.1. Типы данных
- •Простые типы данных
- •Структурированные типы данных
- •Ссылочные типы данных
- •Типы данных, используемые в реляционной модели
- •1.2. Домены
- •1.3. Отношения, атрибуты, кортежи отношения Определения и примеры
- •Свойства отношений
- •Первая нормальная форма
- •1.4. Контрольные вопросы
- •Раздел 2. Реляционная алгебра. Обзор реляционной алгебры
- •2.1. Замкнутость реляционной алгебры
- •2.2. Отношения, совместимые по типу
- •2.3. Оператор переименования атрибутов
- •2.4. Теоретико-множественные операторы Объединение
- •Пересечение
- •Вычитание
- •Декартово произведение
- •Специальные реляционные операторы Выборка (ограничение, селекция)
- •Проекция
- •Соединение
- •Общая операция соединения
- •Тэта-соединение
- •Экви-соединение
- •Естественное соединение
- •Деление
- •2.5. Примеры использования реляционных операторов
- •Невыразимость транзитивного замыкания реляционными операторами
- •Кросс-таблицы
- •2.6. Контрольные вопросы
- •Рздел 3. Нормальные формы отношений. Этапы разработки базы данных
- •3.1. Критерии оценки качества логической модели данных
- •Адекватность базы данных предметной области
- •Легкость разработки и сопровождения базы данных
- •Скорость операций обновления данных (вставка, обновление, удаление)
- •Скорость операций выборки данных
- •Основной пример
- •1Нф (Первая Нормальная Форма)
- •Аномалии обновления
- •Аномалии вставки (insert)
- •Аномалии обновления (update)
- •Аномалии удаления (delete)
- •3.2. Функциональные зависимости
- •Определение функциональной зависимости
- •Функциональные зависимости отношений и математическое понятие функциональной зависимости
- •3.3. 2Нф (Вторая Нормальная Форма)
- •Анализ декомпозированных отношений
- •Оставшиеся аномалии вставки (insert)
- •Оставшиеся аномалии обновления (update)
- •Оставшиеся аномалии удаления (delete)
- •3.4. 3Нф (Третья Нормальная Форма)
- •Алгоритм нормализации (приведение к 3нф)
- •3.5. Анализ критериев для нормализованных и ненормализованных моделей данных Сравнение нормализованных и ненормализованных моделей
- •3.6. Oltp и olap-системы
- •3.7. Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза
- •3.8. Контрольные вопросы
- •Раздел 4. Нормальные формы более высоких порядков
- •4.1. Нфбк (Нормальная Форма Бойса-Кодда)
- •4.2. 4Нф (Четвертая Нормальная Форма)
- •4.3. 5Нф (Пятая Нормальная Форма)
- •4.4. Продолжение алгоритма нормализации (приведение к 5нф)
- •4.5. Контрольные вопросы
- •Раздел 5. Элементы модели "сущность-связь"
- •5.1. Основные понятия er-диаграмм
- •5.2. Пример разработки простой er-модели
- •5.3. Концептуальные и физические er-модели
- •5.4. Контрольные вопросы
- •Раздел 6. Элементы языка sql
- •6.1. Операторы sql
- •Операторы ddl (Data Definition Language) - операторы определения объектов базы данных
- •Операторы dml (Data Manipulation Language) - операторы манипулирования данными
- •Операторы защиты и управления данными
- •6.2. Примеры использования операторов манипулирования данными
- •Insert - вставка строк в таблицу
- •Примеры использования оператора select
- •Отбор данных из одной таблицы
- •Отбор данных из нескольких таблиц
- •Использование имен корреляции (алиасов, псевдонимов)
- •Использование агрегатных функций в запросах
- •Использование агрегатных функций с группировками
- •Использование подзапросов
- •Использование объединения, пересечения и разности
- •Синтаксис оператора выборки данных (select)
- •Синтаксис оператора выборки
- •Синтаксис соединенных таблиц
- •Синтаксис условных выражений раздела where
- •Порядок выполнения оператора select
- •Стадия 1. Выполнение одиночного оператора select
- •Стадия 2. Выполнение операций union, except, intersect
- •Стадия 3. Упорядочение результата
- •Как на самом деле выполняется оператор select
- •Реализация реляционной алгебры средствами оператора select (Реляционная полнота sql)
- •6.3. Контрольные вопросы
- •Заключение
- •Библиографический список
Экви-соединение
Наиболее важным частным случаем Θ-соединения является случай, когда Θ есть просто равенство.
Синтаксис экви-соединения:
A[X=Y]B
Пример 9. Пусть имеются отношения P, D и PD, хранящие информацию о поставщиках, деталях и поставках соответственно (для удобства введем краткие наименования атрибутов):
Таблица 18
Отношение P (Поставщики)
Номер поставщика PNUM |
Наименование поставщика PNAME |
1 |
Иванов |
2 |
Петров |
3 |
Сидоров |
Таблица 19
Отношение D (Детали)
Номер детали DNUM |
Наименование детали DNAME |
1 |
Болт |
2 |
Гайка |
3 |
Винт |
Таблица 20
Отношение PD (Поставки)
Номер поставщика PNUM |
Номер детали DNUM |
Поставляемое количество VOLUME |
1 |
1 |
100 |
1 |
2 |
200 |
1 |
3 |
300 |
2 |
1 |
150 |
2 |
2 |
250 |
3 |
1 |
1000 |
Ответ на вопрос, какие детали поставляются поставщиками, дает экви-соединение P[PNUM=PNUM] PD.
На самом деле, т.к. в отношениях имеются одинаковые атрибуты, то требуется сначала переименовать атрибуты, а потом выполнить экви-соединение. Запись становится более громоздкой:
(P RENAME PNUM AS PNUM1)[PNUM1=PNUM2](PD RENAME PNUM AS PNUM2)
Обычно, такой сложной формой записи не пользуются. Но как бы то ни было, в результате имеем отношение.
Таблица 21
Отношение "Какие детали поставляются какими поставщиками"
Номер поставщика PNUM1 |
Наименование поставщика PNAME |
Номер поставщика PNUM2 |
Номер детали DNUM |
Поставляемое количество VOLUME |
1 |
Иванов |
1 |
1 |
100 |
1 |
Иванов |
1 |
2 |
200 |
1 |
Иванов |
1 |
3 |
300 |
2 |
Петров |
2 |
1 |
150 |
2 |
Петров |
2 |
2 |
250 |
3 |
Сидоров |
3 |
1 |
1000 |
Недостатком экви-соединения является то, что если соединение происходит по атрибутам с одинаковыми наименованиями (а так чаще всего и происходит!), то в результирующем отношении появляется два атрибута с одинаковыми значениями. В нашем примере атрибуты PNUM1 и PNUM2 содержат дублирующие данные. Избавиться от этого недостатка можно, взяв проекцию по всем атрибутам, кроме одного из дублирующих. Именно так действует естественное соединение.