- •Технологии бд
- •1. Теоретические основы организации бд. Реляционная модель данных. 5
- •2. Технологии проектирования реляционных бд 27
- •3. Технологии манипулирования данными в бд. Основы sql. 93
- •4. Технологии построения информационных систем – приложений бд 136
- •5. Хранилища данных (DataWarehousing) и системы оперативной аналитической обработки данных 161
- •6. Литература 171
- •1.Теоретические основы организации бд. Реляционная модель данных.
- •1.1.Подходы к организации баз данных
- •1.1.1.Иерархические базы данных
- •1.1.2.Сетевые базы данных
- •1.1.3.Реляционные базы данных
- •12 Правил Кодда:
- •1.2.Введение в реляционную модель данных
- •1.2.1.Основные понятия реляционной модели данных
- •1.2.1.1.Тип данных
- •1.2.1.2.Домен
- •1.2.1.3.Заголовок отношения, кортеж, тело отношения, значение отношения, переменная отношения
- •1.2.1.4.Первичный ключ и интуитивная интерпретация реляционных понятий
- •1.2.2.Фундаментальные свойства отношений
- •1.2.2.1.Отсутствие кортежей-дубликатов, первичный и возможные ключи отношений
- •1.2.2.2.Отсутствие упорядоченности кортежей
- •1.2.2.3.Отсутствие упорядоченности атрибутов
- •1.2.2.4.Атомарность значений атрибутов, первая нормальная форма отношения
- •1.2.3.Реляционная модель данных
- •1.2.3.1.Общая характеристика
- •1.2.3.2.Целостность реляционных данных
- •Null-значения
- •Трехзначная логика (3vl)
- •Потенциальные ключи
- •Целостность сущностей
- •Внешние ключи
- •Целостность внешних ключей
- •Замечания к правилам целостности сущностей и внешних ключей
- •Операции, могущие нарушить ссылочную целостность
- •Стратегии поддержания ссылочной целостности
- •2.Технологии проектирования реляционных бд
- •2.1.Этапы разработки базы данных
- •2.2.Критерии оценки качества логической модели данных
- •Адекватность базы данных предметной области
- •Легкость разработки и сопровождения базы данных
- •Скорость операций обновления данных (вставка, обновление, удаление)
- •Скорость операций выборки данных
- •2.3.Проектирование реляционных баз данных на основе принципов нормализации
- •2.3.1.Понятие метода нормализации отношений
- •2.3.2.Декомпозиция без потерь и функциональные зависимости
- •Корректные и некорректные декомпозиции отношений. Теорема Хеза
- •Теорема Хеза.
- •2.3.3.Диаграммы функциональных зависимостей
- •2.3.4.Первая нормальная форма
- •2.3.5.Минимальные функциональные зависимости и вторая нормальная форма
- •2.3.5.1.Аномалии обновления, возникающие из-за наличия неминимальных функциональных зависимостей
- •2.3.5.2.Возможная декомпозиция
- •2.3.5.3.Вторая нормальная форма
- •2.3.6.Нетранзитивные функциональные зависимости и третья нормальная форма
- •2.3.6.1.Аномалии обновлений, возникающие из-за наличия транзитивных функциональных зависимостей
- •2.3.6.2.Возможная декомпозиция
- •2.3.6.3.Третья нормальная форма
- •2.3.6.4.Независимые проекции отношений. Теорема Риссанена
- •2.3.7.Перекрывающиеся возможные ключи и нормальная форма Бойса-Кодда
- •2.3.7.1.Аномалии обновлений, связанные с наличием перекрывающихся возможных ключей
- •2.3.7.2.Нормальная форма Бойса-Кодда
- •2.3.7.3.Всегда ли следует стремиться к bcnf?
- •2.3.8.Необходимость дальнейшей нормализации
- •2.3.9.Многозначные зависимости и четвертая нормальная форма
- •2.3.9.1.Аномалии обновлений при наличии многозначных зависимостей и возможная декомпозиция
- •2.3.9.2.Многозначные зависимости. Теорема Фейджина. Четвертая нормальная форма
- •Лемма Фейджина
- •Теорема Фейджина
- •2.3.10.Зависимости проекции/соединения и пятая нормальная форма
- •2.3.10.2.Зависимость проекции/соединения
- •2.3.10.3.Аномалии, вызываемые наличием зависимости проекции/соединения
- •2.3.10.4.Устранение аномалий обновления в 3-декомпозиции
- •2.3.10.5.Пятая нормальная форма
- •2.3.11.Заключение
- •2.4.Проектирование реляционных баз данных с использованием семантических моделей: er-диаграммы
- •2.4.1.Ограниченность реляционной модели при проектировании баз данных
- •2.4.1.1.Семантические модели данных
- •2.4.2.Семантическая модель Entity-Relationship (Сущность-Связь)
- •2.4.2.1.Основные понятия er-модели
- •2.4.2.2.Уникальные идентификаторы типов сущности
- •2.4.3.Нормальные формы er-диаграмм
- •2.4.3.1.Первая нормальная форма er-диаграммы
- •2.4.3.2.Вторая нормальная форма er-диаграммы
- •2.4.3.3.Третья нормальная форма er-диаграммы
- •2.4.4.Более сложные элементы er-модели
- •2.4.4.1.Наследование типов сущности и типов связи
- •2.4.4.2.Взаимно исключающие связи
- •2.4.5.Получение реляционной схемы из er-диаграммы
- •2.4.5.1.Базовые приемы
- •2.4.5.2.Представление в реляционной схеме супертипов и подтипов сущности
- •2.4.5.3.Представление в реляционной схеме взаимно исключающих связей
- •2.4.6.Виды нотаций er-диаграмм
- •2.4.6.1.Метод Баркера
- •2.4.6.2.Методология idef1x
- •2.4.7.Заключение
- •2.5.Проектирование реляционных баз данных с использованием семантических моделей: диаграммы классов языка uml
- •2.5.1.Общие сведения об uml
- •2.5.2.Основные понятия диаграмм классов uml
- •2.5.2.1.Классы, атрибуты, операции
- •2.5.2.2.Категории связей. Связь-зависимость
- •2.5.2.3.Связи-обобщения и механизм наследования классов в uml
- •2.5.2.4.Связи-ассоциации: роли, кратность, агрегация
- •2.5.3.Ограничения целостности и язык ocl
- •2.5.4.Получение схемы реляционной базы данных из диаграммы классов uml
- •2.5.5.Заключение
- •2.6.Case-системы проектирования информационных систем
- •2.6.1.Назначение и разновидности case-систем
- •3.Технологии манипулирования данными в бд. Основы sql.
- •3.1.Общие сведения о sql
- •3.2.Группы операторов sql
- •3.3.Средства определения схемы бд
- •3.3.1.Описание примера и используемого для учебных целей сервера бд
- •3.3.2.Создание бд
- •3.3.3.Типы данных и домены
- •3.3.4.Общий формат оператора создания таблиц
- •3.3.5.Ограничения целостности
- •3.3.6.Первичные и уникальные (альтернативные) ключи
- •3.3.7.Внешний ключ и определение ссылочной целостности
- •3.3.8.Требования к значениям столбцов
- •3.3.9.Изменение объявлений таблицы
- •3.3.10.Удаление таблицы
- •3.3.11.Работа с индексами Логическое разделение на ключи индексы:
- •Необходимость создания индексов:
- •3.4.Средства манипулирования данными
- •3.4.1.Оператор select
- •3.4.1.1.Общий формат оператора select
- •3.4.1.2.Использование предложения where для задания условия отбора
- •3.4.1.3.Использование предложения where. Внутреннее соединение таблиц.
- •3.4.1.4.Использование псевдонимов таблиц
- •3.4.1.5.Предложение order by – определение сортировки
- •3.4.1.6.Устранение повторяющихся значений
- •3.4.1.7.Расчет значений вычисляемых столбцов
- •3.4.1.8.Агрегатные функции
- •3.4.1.9.Группировка записей
- •3.4.1.10.Наложение ограничений на группировку записей
- •3.4.1.11.Оператор select: задание сложных условий поиска. Использование логических выражений
- •Сравнение столбца с результатом вычисления выражения
- •Использование between
- •Использование in
- •Использование функции upper
- •Использование like
- •Использование функции cast
- •3.4.1.12.Вложение подзапросов
- •Предложение exists.
- •Предложение singular.
- •Использование all, some (any).
- •Использование having и агрегатных функций для вложенных подзапросов
- •3.4.1.13.Внешние соединения
- •3.4.1.14.Объединение запросов – union
- •3.4.1.15.Использование is null
- •3.4.1.16.Использование операции сцепления строк
- •3.4.2.Оператор insert
- •3.4.2.1.Явное указание списка значений
- •3.4.2.2.Формирование значений при помощи оператора select
- •3.4.5.2.Способы формирования просмотра
- •3.4.5.3.Обновляемые и необновляемые просмотры
- •3.4.5.4.Дополнительные параметры просмотра
- •3.5.Работа с хранимыми процедурами
- •3.5.1.Понятие хранимой процедуры
- •3.5.2.Преимущества использования хп:
- •3.5.3.Создание хранимой процедуры
- •Оператор suspend
- •Оператор while … do
- •Оператор exit
- •Оператор execute procedure
- •Оператор post_event
- •3.5.5.Изменение и удаление хп
- •3.6.Работа с триггерами
- •3.6.1.Общие сведения о триггерах
- •3.6.2.Создание триггеров
- •3.6.3.Значения old и new
- •3.6.4.Изменение существующего триггера:
- •3.6.5.Удаление триггера:
- •3.6.6.Обеспечение каскадных воздействий с помощью триггеров
- •3.6.7.Использование триггеров для реализации бизнес-правил
- •3.7.Использование генераторов
- •3.8.Транзакции
- •3.8.1.Откат изменений и целостность бд
- •3.8.2.Понятие транзакции
- •3.8.3.Уровни изоляции транзакций
- •3.9.Физическое проектирование баз данных
- •3.9.1.Учет особенностей используемого сервера бд
- •3.9.2.Противоречия теории и практики нормализации
- •3.9.3.Денормализация для оптимизации
- •3.9.4.Оптимизация запросов
- •Оптимальная структура индексов
- •«Полезность» индекса
- •Целесообразность создания индексов
- •Частичное использование составного индекса
- •Многопоточность поиска по or и in
- •Уменьшение общего количества индексов.
- •4.Технологии построения информационных систем – приложений бд
- •4.1.Классификация архитектур построения приложений баз данных По технологии обработки данных
- •По способу доступа к данным
- •Файл-сервер.
- •Клиент-сервер.
- •Трехуровневая архитектура
- •4.2.Базовая архитектура сервера баз данных
- •4.3.Технологии доступа к данным
- •4.3.1.Открытый интерфейс доступа к базам данных – odbc Основа odbc
- •Архитектура odbc
- •Функции odbc api
- •4.3.2.Объектная модель ole db
- •4.4.Реализация доступа к базам данных с использованием Borland Delphi
- •4.4.1.Механизмы доступа к бд
- •Компоненты для доступа к данным, реализующие:
- •Визуальные компоненты, реализующие интерфейс пользователя;
- •4.4.2.Наборы данных
- •4.4.3.Классы библиотеки vcl Класс tdataset
- •Класс tdatasource
- •Класс ttable
- •Класс tquery
- •Класс tsqltable
- •Класс tupdatesql
- •Класс tdatabase
- •Класс tadoconnection
- •Классы компонентов управления данными
- •События, инициируемые для наборов данных
- •4.4.4.Применение многозвенных архитектур
- •5.Хранилища данных (DataWarehousing) и системы оперативной аналитической обработки данных
- •5.1.Технология хранилищ данных
- •5.1.1.Эволюция хранилищ данных
- •5.1.2.Концепция хранилищ данных
- •5.1.3.Отличия хранилищ данных от систем oltp
- •5.2.Оперативная аналитическая обработка (olap)
- •5.2.1.Связь olap и хд
- •5.2.2.Структура информационно-аналитической системы и место olap в ней
- •5.2.3.Многомерная модель данных
- •5.2.3.1.Концептуальная многомерная модель
- •5.2.3.2.Логическая многомерная модель
- •5.2.3.3.Агрегация данных
- •5.2.4.Архитектуры olap
- •5.2.4.1.О преимуществах и недостатках различных архитектур Реляционное хранилище
- •Многомерная бд
- •Смешанный вариант
- •5.2.5.Использование технологии olap
- •6.Литература
2.4.5.3.Представление в реляционной схеме взаимно исключающих связей
Существуют два способа формирования схемы реляционной БД при наличии взаимно исключающих связей (имеются в виду связи «один ко многим», причем конец связи «многие» находится на стороне сущности, для которой связи являются взаимно исключающими):
общее хранение внешних ключей;
(b) раздельное хранение внешних ключей.
Понятно, что если имеются взаимно исключающие связи упомянутой категории, то в таблице, соответствующей сущности, для которой связи являются взаимно исключающими, необходимо хранить внешние ключи. Если внешние ключи всех потенциально связанных таблиц имеют общий формат, то можно применить способ (a), т. е. создать два столбца: идентификатор связи и идентификатор сущности (возможно, составной). Столбец идентификатора связи используется для различения связей, покрываемых дугой исключения. В столбце (столбцах) идентификатора сущности хранятся значения уникального идентификатора сущности на дальнем конце соответствующей связи.
Если результирующие внешние ключи не относятся к одному домену, то приходится прибегать к использованию способа (b), т. е. создавать для каждой связи, покрываемой дугой исключения, явные столбцы внешних ключей; все эти столбцы могут содержать неопределенные значения.
Преимущество подхода (a) состоит в том, что в таблице, соответствующей сущности, появляется всего два дополнительных столбца. Очевидным недостатком является усложнение выполнения операции соединения: чтобы воспользоваться для соединения одной из альтернативных связей, нужно сначала произвести ограничение таблицы в соответствии с нужным значением столбца, содержащего идентификаторы связей.
При использовании подхода (b) соединения являются явными (и естественными). Недостаток состоит в том, что требуется иметь столько столбцов, сколько имеется альтернативных связей. Кроме того, в каждом из таких столбцов будет содержаться много неопределенных значений, хранение которых потенциально может привести к серьезным накладным расходам внешней памяти.
Рис. 40. Возможные модификации ER-диаграмм, позволяющие избежать взаимно исключающих связей
Рис. 9.14. Возможные модификации ER-диаграмм, позволяющие избежать взаимно исключающих связей
Модификация, показанная на Рис. 40(b), основана на том наблюдении, что коль скоро связи являются альтернативными, то они разделяют множество экземпляров сущности A на два или более непересекающихся подмножества, которые могут лежать в основе определения подтипов A1 и A2. Это хороший вариант, если такие подтипы могут пригодиться еще для чего-нибудь. Допустим, в случае взаимно исключающей связи, представленной на Рис. 38, у исправных и неисправных самолетов имеются несовпадающие множества атрибутов (скажем, у типа сущности ИСПРАВНЫЕ САМОЛЕТЫ имеется атрибут дата завершения гарантийного срока, а у типа сущности НЕИСПРАВНЫЕ САМОЛЕТЫ – атрибут тип неисправности). С другой стороны, как отмечалось в предыдущем разделе, для использования этого подхода требуется возможность динамического изменения типа существующего экземпляра.
Модификация, показанная на Рис. 40 (с), основана на том наблюдении, что коль скоро типы сущности B и C участвуют в альтернативной связи, то, по всей видимости, у этих сущностей имеется что-то общее. Возможно, их было бы правильнее определять как подтипы некоторого общего типа сущности. Заметим, что пример с Рис. 38 явно демонстрирует, что далеко не всегда типы сущности, участвующие в альтернативной связи, обладают общими чертами. Создание общего супертипа для типов сущности ПИЛОТ и АВИАРЕМОНТНОЕ ПРЕДПРИЯТИЕ представляется весьма странной идеей.