
- •Установочный модуль
- •Введение
- •Модуль 1
- •Реляционная алгебра
- •Отсутствующие данные
- •Пустые значения
- •Неопределенные значения
- •Интерпретации
- •Правила вычисления выражений
- •Следствия
- •Проверка условий
- •Реляционные объекты данных
- •Формальные определения
- •Домены и атрибуты
- •Схема отношения
- •Именованное значение атрибута
- •Кортеж
- •Отношение
- •Схема базы данных
- •База данных
- •Операции реляционной алгебры
- •Унарные операции
- •Бинарные операции
- •Варианты операции соединения
- •Производные операции
- •Пример построения выражения реляционной алгебры
- •Понятие базовых и виртуальных отношений
- •Понятие полноты реляционной алгебры
- •Формирование запросов на языке SQL
- •Металингвистические символы
- •Реализация операций реляционной алгебры
- •Пример использования подзапросов
- •Группирующие запросы
- •Упорядочение результатов
- •Вопросы для самоконтроля
- •Упражнения
- •Построение выражений реляционной алгебры
- •Модуль 2
- •Базовые и виртуальные отношения
- •Типы данных
- •Базовые типы данных
- •Типы данных, определяемые пользователем
- •Первичные и кандидатные ключи
- •Создание базовых отношений
- •Индексы
- •Модификация базовых отношений
- •Вставка строк
- •Обновление строк
- •Удаление строк
- •Целостность
- •Декларативная поддержка
- •Пример декларативной поддержки целостности
- •Транзакции и блокировки
- •Триггеры
- •Виртуальные отношения
- •Вопросы для самоконтроля
- •Упражнения
- •Декларативная поддержка целостности
- •Модуль 3
- •Нормальные формы
- •Функциональные зависимости (ФЗ)
- •Правила вывода Армстронга
- •Производные правила вывода
- •Независимость правил Армстронга
- •Полнота системы правил Армстронга
- •Нормальные формы
- •Первая нормальная форма (1NF)
- •Вторая нормальная форма (2NF)
- •Третья нормальная форма (3NF)
- •Нормальная форма Бойса-Кодда (Boyce, Codd; NFBC)
- •Пример построения нормализованных схем отношений
- •Вопросы для самоконтроля
- •Модуль 4
- •Проектирование схем баз данных
- •Уровни логической модели
- •Миграция ключей и виды связей
- •Классификация кластеров
- •Иерархическая рекурсия
- •Абстрактная схема
- •Обобщения
- •Пример реализации иерархической рекурсии
- •Сетевая рекурсия
- •Абстрактная схема
- •Сетевая реализация иерархической рекурсии
- •Обобщения
- •Пример реализации сетевой рекурсии
- •Ассоциация
- •Детализация связей многие-ко-многим
- •Обобщения
- •Пример реализации ассоциации
- •Обобщение
- •Абстрактная схема
- •Пример реализации обобщения
- •Композиция
- •Абстрактная схема
- •Пример реализации композиции
- •Агрегация
- •Абстрактная схема
- •Пример реализации агрегации
- •Унификация атрибутов
- •Вопросы для самоконтроля
- •Упражнения
- •Иерархическая рекурсия
- •Сетевая рекурсия
- •Ассоциация
- •Обобщение
- •Композиция
- •Агрегация
- •Дополнительные главы
- •Технологии баз данных
- •Информационные системы
- •Жизненный цикл ИС
- •СУБД и БД
- •Жизненный цикл БД и средства проектирования
- •Модели данных
- •Иерархическая модель данных
- •Сетевая модель данных
- •Реляционная модель данных
- •Постреляционная модель данных
- •Объектно-ориентированные модели данных
- •XML как модель данных
- •Многомерная модель данных (OLAP)
- •Основные функции СУБД
- •Управление данными во внешней памяти
- •Управление буферами оперативной памяти
- •Управление транзакциями
- •Журнализация и восстановление БД после сбоев
- •Поддержка языков баз данных
- •Типовая организация СУБД
- •Модели взаимодействия с БД
- •Модель с централизованной архитектурой
- •Модель с автономными персональными компьютерами
- •Архитектура «файл-сервер»
- •Архитектура «клиент-сервер»
- •Архитектура «клиент-сервер» трехзвенная
- •Распределенные базы данных
- •Технология тиражирования данных
- •Понятие «фрактал»
- •Геометрические фракталы
- •Алгебраические фракталы
- •Стохастические фракталы
- •Системы итерируемых функций
- •Вопросы для самоконтроля
- •Литература
- •Список иллюстраций
- •Список таблиц
Таблица 2.5.: Примеры значений функции IfNull
Оценка |
IfNull(Оценка, 0не явился0) |
||
0 |
отлично0 |
0 |
отлично0 |
0 |
хорошо0 |
0 |
хорошо0 |
0 |
удовлетворительно0 |
0 |
удовлетворительно0 |
0 |
неудовлетворительно0 |
0неудовлетворительно0 |
|
null |
0 |
не явился0 |
IfNull(ограничение_целостности, true)
Как ввести null-значение с клавиатуры? Правила специфичны для каждой СУБД. В некоторых СУБД для этих целей используется комбинация клавиш Ctrl+0.
2.4. Реляционные объекты данных
В основе реляционной модели лежит иерархия основных объектов: атрибут – кортеж – отношение
–база данных. Центральное место занимает понятие отношения.
Ктабличной форме представления отношений предъявляются следующие требования, относящиеся к заголовку таблицы, ее строкам, столбцам и данным в столбцах.
1. Заголовок таблицы должен состоять из единственной строки заголовков столбцов с уникальными именами. На практике это означает сведение многоярусного заголовка к одноярусному, что

всегда достижимо выбором подходящих наименований столбцов, так что порядок перечисления столбцов становится несущественным (табл. 2.6).
Таблица 2.6.: Пример сведения многоярусного заголовка к одноярусному
A
B
1 2 A B1 B2
Примечание. Здесь и далее для отделения строки заголовков столбцов от строк тела таблицы верхняя горизонтальная линия сетки таблицы не изображается
2.Порядок строк в теле таблицы должен быть несущественным. Это требование также не является ограничительным, поскольку при необходимости можно ввести дополнительный столбец, определяющий порядок строк.
3.Среди строк тела таблицы не должно быть дубликатов (в теории). Это требование не является ограничительным, поскольку при необходимости можно ввести дополнительный столбец с данными о числе дубликатов строк.
Примечание. Данное требование приводит к построению реляционной алгебры, в которой отношения (таблицы) рассматриваются как множества кортежей (строк тела таблицы). Если рассматривать отношения как мультимножества кортежей (в мультимножествах дубликаты элементов допускаются
и поэтому можно говорить не только о вхождении элемента в мультимножество, но и о числе этих вхождений), то это привело бы к построению так называемой псевдореляционной алгебры. Даже если в исходном состоянии база данных не содержит отношений с дубликатами кортежей, то все равно дубликаты могут появиться в результирующих запросах. В этом смысле на практике реализуется как бы псевдореляционная алгебра. Однако операторы языка SQL, реализующие запросы с потенциальной возможностью появления дубликатов кортежей, имеют специальные опции, позволяющие управлять исключением дубликатов
4. Данные в столбце должны быть одного и того же и, что принципиально важно, простого типа. Это требование лежит в основе всех принципов проектирования и реализации (чисто) реляционных баз данных.
Примечание. Простой тип данных – это тип, значения данных которого не содержат составных частей. Таким образом, данные в столбце не должны быть ни списками, ни массивами, ни деревьями, ни тому подобными составными объектами. Составные объекты в реляционной модели сами представляются в виде множества взаимосвязанных таблиц. Еще раз подчеркнем, что это требование относится к чисто реляционной модели данных. СУБД с расширениями это требование могут не выдвигать, но тогда они должны иметь и соответствующие механизмы доступа к подобъектам таких составных объектов
2.4.1. Формальные определения
Далее при записи формальных определений знак тождественного равенства связывает сокращенную и расширенную формы обозначения определяемого понятия. Определения отражают наиболее абстрактный математический взгляд на базу данных как на множество отношений:
dom(a) fx j type(x) = type(a)g – домен атрибута
a = (name(a) : dom(a)) – атрибут
S = fa j a 2 Sg – схема отношения
x(a) = (name(a) : x); x 2 dom(a) – именованное значение атрибута t t(S) = fx(a) j a 2 def(t) Sg – кортеж
r r(S) = ft(S) j t 2 rg – отношение= fS j S 2 g – схема базы данных
D D( ) = fr(S) j S 2 g – база данных
2.4.2. Домены и атрибуты
Домен атрибута dom(a) fx j type(x) = type(a)g определяется как множество допустимых значений одного и того же типа, представляющего тип атрибута type(a) (представляющего тип данных в столбце). Тип атрибута должен быть простым.
Как и любое множество, домен может быть задан следующими способами:
1)перечислением значений,
2)характеристическим предикатом,
3)порождающей процедурой.
Приведем примеры задания доменов указанными способами соответственно:
dom(День) = fпн, вт, ср, чт, пт, сб, всg dom(Оценка) = fx j type(x) = integer&2 6 x 6 5g dom(Случайно) = fx j x = 0 _ x := random(x)g