- •Шехтман в. Е.
- •1. Базы данных и модели данных
- •1.1. Введение.
- •1.2. Файлы операционной системы
- •1.3. Пример базы данных.
- •1.4. Иерархическая модель данных
- •1.5. Сетевая модель данных
- •1.6. Инвертированные списки.
- •2. Введение в реляционную модель данных.
- •1.7. Реляционная модель данных
- •3. Реляционная алгебра
- •3.1. Теоретико-множественные операции.
- •3.2. Специальные операции ra
- •4. Нормализация данных
- •4.1. Полная декомпозиция.
- •Магазин товар ндс
- •Товар ндс
- •Магазин ндс
- •Товар ндс
- •Магазин товар ндс
- •4.2. Проблема дублирования данных.
- •1 Глобус 33-33-33
- •2 Глобус 33-33-33
- •4 Океан 77-77-77
- •4.3. Висячие записи.
- •Поставщик Тел
- •4.4. Проблемы, возникающие из-за неудачной структуры данных.
- •4.5. Пятая нормальная форма (5нф).
- •4.6. Функциональная зависимость.
- •4.7. Связь между фз и полной декомпозицией отношения.
- •4.8. Первая нормальная форма (1нф).
- •4.9. Вторая нормальная форма (2нф).
- •4.10. Третья нормальная форма (3нф).
- •4.11. Нормальная форма Бойса-Кодда (нфбк).
- •4.12. Многозначная зависимость.
- •4.13. Четвертая нормальная форма (4нф).
- •4.14. Пример нормализации.
- •4.15. Резюме. Нормальные формы.
- •5. Инфологическое моделирование.
- •5.1. Сущность и набор сущностей
- •5.2. Связи между сущностями.
- •5.3. Рекурсивная связь. Роли.
- •5.4. Множественные связи.
- •5.5. Суперсущности и производные сущности
- •5.6. Слабые наборы сущностей
- •5.7. Борьба с избыточнотью
- •5.8. Преобразование инфологической модели в физическую модель.
- •5.9. Пример инфологического моделирования.
- •6. Язык sql
- •6.1. История sql.
- •6.2. Структура sql.
- •6.3. Язык запросов
- •6.4. Простые запросы на выборку данных.
- •6.5. Агрегатные (групповые) функции.
- •6.6. Вложенные запросы
- •6.7. Внешние объединения
- •6.8. Изменение данных
- •Insert into r1 (o, fio, d) values (5, ‘Иванов’, ’бд’)
- •7. Представления.
- •8. Определение схемы базы данных и ограничений целостности
- •9. Транзакции
- •9.1. Свойства транзакций
- •9.2. Надежное хранение данных
- •9.3. Параллельное выполнение транзакций
- •9.3.1. Коллизия “пропавшие изменения” - lost update problem
- •9.3.2. Коллизия “промежуточные данные” - dirty read
- •9.3.3. Коллизия “Несогласованные данные” - unrepeatable read, inconsistent analysis
- •9.3.4. Коллизия “фантом” - phantom
- •9.4. Уровни изолированности
- •9.5. Тупики
- •10. Ограничение прав доступа в целях обеспечения безопасности
- •11. Физическая организация баз данных
- •11.1. Организация размещения данных.
- •11.2. Организация индексов
- •11.2.1. Поиск в бд.
- •11.2.2. Плотный индекс (индексно-прямые файлы).
- •11.2.3. Неплотный индекс (индексно-последовательные файлы).
- •11.2.4. Сбалансированные деревья.
- •11.2.5. Инвертированные списки.
- •12. Архитектура субд. Методы оптимизации запросов.
- •Логические преобразования запросов.
- •Преобразования запросов с изменением порядка реляционных операций.
- •13. Аналитические системы.
- •Анализ данных.
- •Хранилища данных
- •Типы ошибок
- •Способы реализации olap.
- •Требования к средствам реализации систем оперативной и аналитической обработки данных
- •Многомерная модель данных.
- •Разработка данных
- •14. Загружаемые процедуры.
- •In pr double precision)
- •If eof then leave Cl end if;
- •Insert into providers(code, name)
- •Values (nr.Codec, ‘*** новый поставщик ***’);
- •15.4. Модель сервера приложений (трёхзвенная архитектура, “тонкий клиент”)
- •Список литературы
- •15. Модели совместного доступа к бд
- •15.1. Файл-серверная модель.
- •15.2. Модель клиент-сервер с бизнес-логикой на клиенте.
- •15.3. Модель клиент-сервер с бизнес-логикой на сервере субд (хранимые процедуры и триггеры) и частично на клиенте.
Способы реализации olap.
Два подхода к организации хранилищ:
Relational OLAP (ROLAP) – схема “звезды”, реализуемая в рамках РСУБД
Multidimensional OLAP (MOLAP) – многомерный OLAP, специализированная СУБД, в основе которой лежит модель “многомерного куба”.
Пример: для разработанной ранее “торговой” базы данных таблица фактов, содержащая сведения о поставках имеет следующие атрибуты:
SUPPLIES (Дата поставки, код товара, код поставщика,
количество товара, цена за единицу)
Таблицы измерений:
GOODS (Код товара, Название, Класс товара, НДС)
PROVIDERS (Код поставщика, Название, Город, Страна)
Типичный OLAP-запрос можно выразить так:
SELECT SUPPLIES.Дата поставки, SUPPLIES. количество товара,
SUPPLIES.цена за единицу,
GOODS.Название, GOODS.НДС, PROVIDERS.Название,
PROVIDERS.Город, PROVIDERS.Страна
FROM SUPPLIES
LEFT JOIN GOODS ON SUPPLIES.код товара = GOODS.Код товара
LEFT JOIN PROVIDERS ON SUPPLIES.код поставщика = PROVIDERS.Код поставщика
Прямой запрос такого вида с извлечением всех данных может занять много времени. Поэтому можно заранее позаботится о создании таблицы, структура которой отвечает потребностям запроса, и о загрузке в нее требуемой информации. Такие таблицы можно воспринимать как своего рода представления (VIEW, см. Главу 7), однако от обычного представления они отличаются тем, что фактически содержат загруженную информацию – так называемые материализованные представления.
CREATE VIEW VSUPPLIES(Дата поставки, количество товара,
цена за единицу, Товар, НДС, Поставщик, Город, Страна) AS
SELECT SUPPLIES.Дата поставки, SUPPLIES. количество товара,
SUPPLIES.цена за единицу,
GOODS.Название, GOODS.НДС, PROVIDERS.Название,
PROVIDERS.Город, PROVIDERS.Страна
FROM SUPPLIES
LEFT JOIN GOODS ON SUPPLIES.код товара = GOODS.Код товара
LEFT JOIN PROVIDERS ON SUPPLIES.код поставщика = PROVIDERS.Код поставщика
Тогда запрос можно формулировать так:
SELECT Дата поставки, Количество товара,
Цена за единицу, Товар, Класс товара, НДС, Поставщик, Город, Страна
FROM VSUPPLIES
Отсутствие необходимости соединения таблицы фактов и таблиц измерений резко сокращает время ответа.
Требования к средствам реализации систем оперативной и аналитической обработки данных
Главное достоинство аналитических СУБД состоит именно в том, что они узко специализированны и область их применения - интерактивная аналитическая обработка агрегированных исторических и прогнозируемых данных.
Агрегированные данные.
Пользователя, занимающегося анализом, редко интересуют детализированные данные. Более того, чем выше уровень пользователя (руководителя, управляющего, аналитика), тем выше уровень агрегации данных, используемых им для принятия решения. Рассмотрим в качестве примера фирму по продаже овощей и фруктов. Коммерческого директора такой фирмы мало интересует вопрос: "Бананы какой партии уже проданы в магазине N?" Для него важно, какие фрукты предпочитают покупатели в определенное время года. Его также мало интересует детализация на уровне контракта, дня или часа. Для правильного формирования склада ему важна и необходима информация на уровне декады, месяца или даже квартала.
Исторические данные.
Важнейшим свойством данных в аналитических задачах является их исторический характер. После того как зафиксировано, что с главного склада в июне 2002 г. продано 200 ящиков бананов и 150 ящиков яблок, данные об этом событии становятся историческим (свершившимся) фактом. И после того, как информация об этом факте получена, верифицирована и заведена в БД, она может быть сколько угодно раз считана оттуда, но уже не может и не должна быть изменена. Историчность данных предполагает не только высокий уровень статичности (неизменности) как собственно данных (например: с главного склада в июне продано 200 ящиков бананов 1 категории), так и их взаимосвязей (например: в июне бананы продавались по цене 300 р. за ящик). А это, в свою очередь, дает возможность использовать специализированные, основанные на предположении о статичности данных и их взаимосвязей, методы загрузки, хранения, индексации и выборки.
Другим неотъемлемым свойством исторических данных является обязательная спецификация времени, которому эти данные соответствуют. Причем время является не только наиболее часто используемым критерием выборки, но и одним из основных критериев, по которому данные упорядочиваются в процессе обработки и представления пользователю. А это накладывает соответствующие требования как на используемые механизмы хранения и доступа:
для уменьшения времени обработки запросов желательно, чтобы уже в БД данные хранились (были предварительно отсортированы) в том порядке, в котором они наиболее часто запрашиваются;
так и на языки описания и манипулирования данными, например:
во многих организациях используются как общепринятые, так и собственные календарные циклы (финансовый год может начинаться не в январе как календарный, а, например, в июне);
время является стандартным параметром практически любой аналитической, статистической или финансовой функции (прогноз, нарастающий итог, переходящий запас, скользящее среднее и т.д.).
