- •Шехтман в. Е.
- •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. Модель клиент-сервер с бизнес-логикой на сервере субд (хранимые процедуры и триггеры) и частично на клиенте.
3. Реляционная алгебра
Вспомним некоторые определения из курса дискретной математики.
Пусть М – некоторое множество элементов.
Предикат (логическое высказывание) – это функция b = f(x1, …, xm), где xi M, b {True, False}, m:=1,…,m.
Модель – это множество элементов M с заданными над элементами предикатами.
Операция p: y = p(x1, …, xn); y, xi M, i:=1,…,n.
Алгебра (абстрактная) – это модель с конечным множеством операций.
Иными словами, алгебра - это множество объектов из основного множества M c заданной на нем конечной совокупностью операций, замкнутых относительно этого (основного) множества M. Основное множество в реляционной алгебре – это множество отношений (отношения следует понимать в смыле педыдущей главы). Кодд определил 7 базовых операций и одну дополнительную. Вообще говоря, эта совокупность операций избыточна, т.е. некоторые операции могут быть определены через другие операции.
Теоретико-множественные операции являются основными, их всего 4. Остальные называются специальными.
Для иллюстрации дальнейшего материала введем в рассмотрение два отношения, интерпретируемых как множество товаров, имеющихся в наличии в двух разных магазинах.
Отношение Маг1
Шифр товара |
Наименование товара |
Ф1 |
Бананы |
Ф2 |
Арбузы |
Ф3 |
Авокадо |
Ф4 |
Яблоки |
Ф5 |
Помидоры |
Ф6 |
Фейхоа |
Отношение Маг2
Шифр товара |
Наименование товара |
Ф1 |
Бананы |
Ф7 |
Груши |
Ф2 |
Арбузы |
Ф6 |
Фейхоа |
3.1. Теоретико-множественные операции.
3.1.1. Объединение отношений R1 и R2 (записывается как R1 R2) – это отношение R3, {r|r R1 r R2} содержащее множество кортежей, принадлежащих R1 или R2 или и R1 и R2. – логическое сложение (ИЛИ).
Для Маг1 Маг2 результатом является отношение:
Шифр товара |
Наименование товара |
Ф1 |
Бананы |
Ф2 |
Арбузы |
Ф3 |
Авокадо |
Ф7 |
Груши |
Ф4 |
Яблоки |
Ф5 |
Помидоры |
Ф6 |
Фейхоа |
3.1.2. Пересечение отношений R1 и R2 (записывается R1 R2) – это отношение R3, {r|r R1 r R2} содержащее множество кортежей, принадлежащих и R1 и R2
– логическое умножение (И)
Для Маг1 Маг2 результатом является отношение:
Шифр товара |
Наименование товара |
Ф1 |
Бананы |
Ф2 |
Арбузы |
Ф6 |
Фейхоа |
3.1.3. Разность отношений R1 и R2 (записывается R1 \ R2) – это отношение R3, {r| r R1 r not R2} содержащее множество кортежей, принадлежащих R1 но не принадлежащих R2.
Маг1 \ Маг2:
Шифр товара |
Наименование товара |
Ф3 |
Авокадо |
Ф4 |
Яблоки |
Ф5 |
Помидоры |
Маг2 \ Маг1:
Шифр товара |
Наименование товара |
Ф7 |
Груши |
Как можно видеть из вышеприведенных примеров Объединение и Пересечение – коммутативны, Разность – нет.
В отличие от навигационных методов обработки данных, реляционные операции гораздо более информативны, лаконичны и понятны пользователю (манипуляционные).
Рассмотрим примеры запросов, которые можно сформулировать и эффективно выполнить, пользуясь языком реляционной алгебры.
Пусть отношение МагО содержит список обязательного минимума товаров для каждого магазина. Схема отношения МагО совпадает со схемами Маг1 и Маг2.
Какие продукты есть и в первом и во втором магазинах, но нет в МагО?
Маг1 Маг2 \ МагО
Какие продукты есть в первом магазине, отсутсвуют во втором магазине, но входят в обязательный список?
(Маг1 \ Маг2 МагО)
Какие продукты из обязательных есть и в первом и во втором магазинах?
(Маг1 МагО) (Маг2 МагО)
Каких продуктов из числа обязательных нет ни в первом, ни во втором магазинах?
МагО \ (Маг1 Маг2)
Для дальнейшего введем определение:
сцеплением (конкатенацией) кортежей с = <c1, …, cn> и q = <q1, …, qm> является кортеж, полученный добавлением значений 2 кортежа в конец 1 кортежа:
(c, q) = <c1, …, cn, q1, …, qm>
Предыдущие операции не меняли степени отношения. Новая операция, которая сейчас будет определена, меняет степень результирующего отношения.
3.1.4. Расширенное декартово произведение отношения R1 со схемой SR1 = (A1, …, An) и отношения R2 со схемой SR2 = (B1, …, Bm) – это отношение R3 степени n+m со схемой SR3 = (A1, …, An, B1, …, Bm), содержащее кортежи, полученные сцеплением каждого картежа R1 с каждым кортежем R2.
R1 = {r}, R2 = {q}
R1 R2 = {(r, q) | r R1 q R2}
Ввиду возможности перестановки атрибутов в отношении, - коммутативна. Эта операция обычно используется для получения универсума – всех мыслимых возможностей.
Пусть МагО содержит следующие кортежи:
Ф1 Бананы
Ф9 Апельсины
Ф11 Ананасы
Введем отношение Магазины – это отношение просто перечисляет имеющиеся магазины.
Магазины:
Наименование магазина |
Привет |
Ласточка |
Рябинка |
МагО Магазины:
Ф1 Бананы Привет
Ф1 Бананы Ласточка
Ф1 Бананы Рябинка
Ф9 Апельсины Привет
Ф9 Апельсины Ласточка
Ф9 Апельсины Рябинка
Ф11 Ананасы Привет
Ф11 Ананасы Ласточка
Ф11 Ананасы Рябинка
Введем отношение МагР – оно хранит сведения о фактическом наличии товаров в каждом из магазинов:
МагР:
Шифр товара Наименование товара Наименование магазина
Ф1 Бананы Привет
Ф1 Бананы Ласточка
Ф9 Апельсины Ласточка
Ф9 Апельсины Рябинка
Ф11 Ананасы Привет
Какие продукты из списка обязательных (МагО) отсутствуют в каких магазинах:
МагО Магазины \ МагР:
Шифр товара Наименование товара Наименование магазина
Ф1 Бананы Рябинка
Ф9 Апельсины Привет
Ф11 Ананасы Ласточка
Ф11 Ананасы Рябинка
Набор из 4 теоретико-множественных операций избыточен т.к. например
R1 R2 = (R1 R2) \ (R1 \ R2) \ (R2 \ R1).
