
- •Базы данных, знаний и экспертные системы
- •1 . Элементы реляционной алгебры
- •1.1 . Обзор реляционной алгебры
- •1.2 . Замкнутость реляционной алгебры
- •1.3 . Отношения, совместимые по типу
- •1.3.1 Оператор переименования атрибутов
- •1.4.1 Объединение
- •1.4.2 Пересечение
- •1.4.3 Вычитание
- •1.4.4 Декартово произведение
- •1.5 . Специальные реляционные операторы
- •1.5.1 Выборка (ограничение, селекция)
- •1.5.2 Проекция
- •1.5.3 Соединение
- •1.5.3.1 Общая операция соединения
- •1.5.3.2 Тэта-соединение
- •1.5.3.3 Экви-соединение
- •1.5.3.4 Естественное соединение
- •1.5.3.5 Деление
- •1.6 . Примеры использования реляционных операторов
- •1.6.1 Зависимые реляционные операторы
- •1.6.2 Оператор соединения
- •1.6.3 Оператор пересечения
- •1.6.4 Оператор деления
- •1.6.5 Примитивные реляционные операторы
- •1.6.6 Оператор декартового произведения
- •1.6.7 Оператор проекции
- •1.6.8 Оператор выборки
- •1.6.9 Операторы объединения и вычитания
- •1.6.10 Запросы, невыразимые средствами реляционной алгебры
- •1.7 . Выводы
- •2 Нормальные формы отношений
- •2.1 Этапы разработки базы данных
- •2.2 . Критерии оценки качества логической модели данных
- •2.2.1 Адекватность базы данных предметной области
- •2.2.2 Легкость разработки и сопровождения базы данных
- •2.2.4 Скорость операций выборки данных
- •2.3 . Основной пример
- •2.3.1 . 1НФ (Первая Нормальная Форма)
- •2.3.1.1 Аномалии обновления
- •2.3.1.2 Аномалии вставки (INSERT)
- •2.3.1.3 Аномалии обновления (UPDATE)
- •2.3.1.4 Аномалии удаления (DELETE)
- •2.4 . Функциональные зависимости
- •2.4.1 Определение функциональной зависимости
- •2.4.2 Функциональные зависимости отношений и математическое понятие функциональной зависимости
- •2.4.3 2НФ (Вторая Нормальная Форма)
- •2.5 . Анализ декомпозированных отношений
- •2.5.1 Оставшиеся аномалии вставки (INSERT)
- •2.5.2 Оставшиеся аномалии обновления (UPDATE)
- •2.5.3 Оставшиеся аномалии удаления (DELETE)
- •2.5.4 3НФ (Третья Нормальная Форма)
- •2.6 . Алгоритм нормализации (приведение к 3НФ)
- •2.7 . Анализ критериев для нормализованных и ненормализованных моделей данных
- •2.7.1 Сравнение нормализованных и ненормализованных моделей
- •2.9 . Выводы
- •3 . Нормальные формы более высоких порядков
- •3.2 . 4НФ (Четвертая Нормальная Форма)
- •3.3 . 5НФ (Пятая Нормальная Форма)
- •3.4 . Продолжение алгоритма нормализации (приведение к 5НФ)
- •3.5 . Выводы
- •4 . ПОДЪЯЗЫК ДАННЫХ, ОСНОВАННЫЙ НА РЕЛЯЦИОННОЙ АЛГЕБРЕ
- •4.1 1. Введение
- •4.2 . Традиционный набор операций
- •4.2.1 Специальные операции над отношениями
- •4.2.2 4. Примеры выборки
- •4.2.3 Примеры операций запоминания
- •4.2.4 Заключение
- •5 . ПОДЪЯЗЫК ДАННЫХ, ОСНОВАННЫЙ НА РЕЛЯЦИОННОМ ИСЧИСЛЕНИИ
- •5.1 . Введение
- •5.2 . Допущения и определения
- •5.3 . Операции выборки
- •5.4 . Операции запоминания
- •5.5 . Библиотечные функции
- •5.6 . Заключение
- •6 . Query-by-Example: язык запросов по образцу
- •6.1 . Выборка
- •6.2 . Вставки, удаления, модификации
- •6.3 . Создание таблицы
- •6.4 . Заключение
- •6.5 . Приложение
- •7 . Элементы языка SQL
- •7.1 . Операторы SQL
- •Операторы защиты и управления данными
- •7.2 . Примеры использования операторов манипулирования данными
- •INSERT - вставка строк в таблицу
- •UPDATE - обновление строк в таблице
- •DELETE - удаление строк в таблице
- •7.3 . Примеры использования оператора SELECT
- •7.3.1 Отбор данных из одной таблицы
- •7.3.2 Отбор данных из нескольких таблиц
- •7.3.3 Использование имен корреляции (алиасов, псевдонимов)
- •7.3.4 Использование агрегатных функций в запросах
- •7.3.5 Использование агрегатных функций с группировками
- •7.3.6 Использование подзапросов
- •7.3.7 Использование объединения, пересечения и разности
- •7.3.9 Синтаксис оператора выборки
- •7.3.10 . Синтаксис соединенных таблиц
- •7.3.11 . Синтаксис условных выражений раздела WHERE
- •7.4 . Порядок выполнения оператора SELECT
- •7.4.1 Стадия 1. Выполнение одиночного оператора SELECT
- •7.4.2 Стадия 2. Выполнение операций UNION, EXCEPT, INTERSECT
- •7.4.3 Стадия 3. Упорядочение результата
- •7.5 . Как на самом деле выполняется оператор SELECT
- •7.6 . Реализация реляционной алгебры средствами оператора SELECT (Реляционная полнота SQL)
- •7.6.1 Оператор декартового произведения
- •7.6.2 Оператор проекции
- •7.6.3 Оператор выборки
- •7.6.4 Оператор объединения
- •7.6.5 Оператор вычитания
- •7.6.6 Оператор соединения
- •7.6.7 Оператор пересечения
- •7.6.8 Оператор деления
- •7.7 . Выводы
- •8 . Транзакции и целостность баз данных
- •8.1 . Пример нарушения целостности базы
- •8.2 . Понятие транзакции
- •8.2.1 Ограничения целостности
- •8.2.2 Классификация ограничений целостности
- •8.2.2.1 Классификация ограничений целостности по способам реализации
- •8.2.2.2 Классификация ограничений целостности по времени проверки
- •8.2.2.3 Классификация ограничений целостности по области действия
- •8.2.2.3.1 Ограничения домена
- •8.2.2.3.2 Ограничения атрибута
- •8.2.2.3.3 Ограничения кортежа
- •8.2.2.3.4 Ограничения отношения
- •8.2.2.3.5 Ограничения базы данных
- •8.3 . Реализация декларативных ограничений целостности средствами SQL
- •8.3.1 Общие принципы реализации ограничений средствами SQL
- •8.3.2 Синтаксис ограничений стандарта SQL
- •8.3.3 Синтаксис операторов SQL, использующих ограничения
- •8.4 . Выводы
- •9 . Транзакции и параллелизм
- •9.1 . Работа транзакций в смеси
- •9.2 . Проблемы параллельной работы транзакций
- •9.2.1 Проблема потери результатов обновления
- •9.2.3 Проблема несовместимого анализа
- •9.2.3.1 Неповторяемое считывание
- •9.2.3.2 Фиктивные элементы (фантомы)
- •9.2.3.3 Собственно несовместимый анализ
- •9.3 . Конфликты между транзакциями
- •9.4 . Блокировки
- •9.4.1 Решение проблем параллелизма при помощи блокировок
- •9.4.1.1 Проблема потери результатов обновления
- •9.4.1.2 Проблема незафиксированной зависимости (чтение "грязных" данных, неаккуратное считывание)
- •9.4.1.3 Проблема несовместимого анализа
- •9.4.1.3.1 Неповторяемое считывание
- •9.4.1.3.2 Фиктивные элементы (фантомы)
- •9.4.1.3.3 Собственно несовместимый анализ
- •9.5 . Разрешение тупиковых ситуаций
- •9.5.1 Преднамеренные блокировки
- •9.5.3 Метод временных меток
- •9.5.4 Механизм выделения версий данных
- •9.6 . Теорема Есварана о сериализуемости
- •9.7.1 Уровни изоляции
- •9.7.2 Синтаксис операторов SQL, определяющих уровни изоляции
- •9.8 . Выводы
- •10 . Транзакции и восстановление данных
- •10.1.1 Индивидуальный откат транзакции
- •10.1.2 Восстановление после мягкого сбоя
- •10.1.3 Восстановление после жесткого сбоя
- •11 . Представление знаний в интеллектуальных системах
- •11.1 . Введение
- •11.2 . Данные и знания. Основные определения
- •11.3.1 Особенности знаний:
- •11.6.1 Компоненты продукционных систем
- •11.6.2 Классификация ядер продукции.
- •11.6.3 Стратегии решений организации поиска
129
"Отобрать те номера поставщиков из таблицы A, для которых не существует непоставляемых деталей в таблице B" эквивалентно
"Отобрать те номера поставщиков из таблицы A, для которых не существует тех номеров деталей из таблицы B, которые не поставляются этим поставщиком" эквивалентно
"Отобрать те номера поставщиков из таблицы A, для которых не существует тех номеров деталей из таблицы B, для которых не существует записей о поставках в таблице A для этого поставщика и этой детали".
Последнее выражение дословно переводится на язык SQL. При переводе выражения на язык SQL нужно учесть, что во внутреннем подзапросе таблица A должна быть переименована, для того чтобы отличать ее от экземпляра этой же таблицы, используемой во внешнем запросе.
7.7 . Выводы
Фактически стандартным языком доступа к базам данных в настоящее время стал язык SQL (Structured Query Language).
Язык SQL оперирует терминами, несколько отличающимися от терминов реляционной теории, например, вместо "отношений" используются "таблицы", вместо "кортежей" - "строки", вместо "атрибутов" - "колонки" или "столбцы".
Стандарт языка SQL, хотя и основан на реляционной теории, но во многих местах отходит он нее.
Основу языка SQL составляют операторы, условно разбитые не несколько групп по выполняемым функциям:
•Операторы DDL (Data Definition Language) - операторы определения объектов базы данных.
•Операторы DML (Data Manipulation Language) - операторы манипулирования данными.
•Операторы защиты и управления данными, и др.
Одним из основных операторов DML является оператор SELECT, позволяющий извлекать данные из таблиц и получать ответы на различные запросы. Оператор SELECT содержит в себе все возможности реляционной алгебры. Это означает, что любой оператор реляционной алгебры может быть выражен при помощи подходящего оператора SELECT. Этим доказывается реляционная полнота языка SQL.
Различают концептуальную схему выполнения оператора SELECT и фактическую схему его выполнения. Концептуальная схема описывает, в какой логической последовательности должны выполняться операции, чтобы получить результат. При реальном выполнении оператора SELECT на первый план выступает достижение максимальной скорости выполнения запроса. Для этого используется оптимизатор, который, анализируя различные планы выполнения запроса, выбирает наилучший из них.