- •Базы данных
- •Лекция 1 Хранение данных Данные, информация
- •Системы хранения данных на основе файлов
- •База данных
- •Требования к субд
- •Администратор бд (абд)
- •Лекция 2 Модели данных Независимость данных
- •Модель, схема
- •Лекция 3 Ранние модели Иерархическая модель
- •Сетевая модель
- •Лекция 4 Пример базы данных, построенной на сетевой модели Постановка задачи
- •Диаграмма
- •Описание на яод
- •Лекция 5 Реляционная модель Принципы
- •Уточнения
- •Лекция 6 Методы хранения данных и доступа к ним
- •Последовательный метод
- •Прямой метод
- •Индексные методы
- •Индексно-последовательный метод
- •Индексно-произвольный метод
- •Инвертированные списки
- •Хеширование
- •Лекция 7 Реляционная алгебра: определения, изменение отношений
- •Изменение отношений во времени.
- •Лекция 8 Операции реляционной алгебры
- •Булевы операции
- •Выбор; свойства выбора
- •Проекция; свойства проекции
- •Лекция 9 Операции реляционной алгебры (продолжение) Соединение
- •Свойства соединения
- •Лекция 10 Операции реляционной алгебры (продолжение)
- •Деление
- •Постоянные отношения. Переименование атрибутов
- •Эквисоединение, естественное и -соединение
- •Реляционная алгебра. Полнота ограниченного множества операторов
- •Операторы расщепления и фактора
- •Лекция 11 Язык структурных запросов sql
- •Начальные понятия
- •Стандарт ansi
- •Типы данных
- •Интерактивный и встроенный sql
- •Синтаксис
- •Подразделы sql
- •Простейшие действия
- •Функции агрегирования
- •Группировка
- •Возможности форматирования
- •Лекция 12 Язык структурных запросов sql (продолжение) Соединение
- •Вложенные запросы
- •Связанные запросы
- •Предикаты, определенные на подзапросах
- •Объединение
- •Изменение базы данных
- •Лекция 13 Понятие о нормальных формах
- •1 Нормальная форма (1нф)
- •2 Нормальная форма (2нф)
- •3 Нормальная форма (3нф)
- •Нормальная форма Бойса-Кодда (нфбк)
- •4 Нормальная форма (4нф)
- •5 Нормальная форма (5нф) – проекция/соединение
- •Лекция 13 Проектирование данных Процессы проектирования
- •Концептуальное проектирование
- •Логическое проектирование
- •Средства создания модели
- •Лекция 14 Функциональные зависимости
- •Аксиомы вывода
- •Ориентированный ациклический граф вывода
- •Определение реляционной базы данных
- •Представление множества функциональных зависимостей
- •Лекция 15 Покрытия функциональных зависимостей
- •Лемма об эквивалентности фз
- •Неизбыточные покрытия
- •Посторонние атрибуты
- •Канонические покрытия
- •Структура неизбыточных покрытий
- •Оптимальные покрытия
- •3 Нормальная форма
- •Нормализация через декомпозицию и посредством синтеза
- •Нормальная форма Бойса-Кодда
- •Литература
Изменение отношений во времени.
Размещение дополнительной информации производится операцией добавления ADD(r; A1=d1, A2=d2 , ..., An=dn).
Пример
Для добавления рейса из Астрахани в Барнаул достаточно записать: ADD(Рейсы; номер = 117, пункт отправления = Астрахань, пункт назначения = Байконур, время вылета = 22:05, время прилета = 0:43).
Конец примера
Вариант для фиксированного порядка атрибутов: ADD(r; d1, d2, ..., dn).
Возможные ошибки при добавлении:
кортеж не соответствует схеме;
некоторые значения не принадлежат доменам;
есть совпадения по ключу.
В любом случае операция не выполняется.
Удаление информации производится операцией DEL(r; A1=d1, A2=d2 , ..., An=dn) или DEL(r; d1, d2 , ..., dn).
Если K={B1, B2 , ..., Bm } – ключ отношения, для удаления достаточно записать DEL(r; B1=b1, B2=b2 , ..., Bm=bm).
Пример
Если {пункт отправления, пункт назначения, время вылета} – ключ отношения Рейсы, для удаления рейса из Новгорода в Читу можно записать: DEL(Рейсы; пункт отправления = Новгород, пункт назначения = Чита, время вылета = 11:03).
Если ключ – это номер рейса, достаточно записать: DEL(Рейсы; номер = 83).
Конец примера
Возможная ошибка – отсутствие удаляемого кортежа. Заметим, что допускается удаление последнего кортежа, то есть, пустое отношение может существовать.
Модификация информации производится операцией изменения. Пусть {C1, C2, ... Cp} {A1, A2, ... An}. Тогда CH(r; A1=d1, A2=d2 , ..., An=dn ; C1=c1, C2=c2 , ..., Cn=cp) или, в случае ключа, CH(r; B1=b1, B2=b2 , ..., Bm=bm ; C1=c1, C2=c2 , ..., Cn=cp).
Пример
Для изменения времени вылета и времени прилета рейса 109 из отношения Рейсы можно записать: CH(Рейсы; номер = 109, пункт отправления = Новгород, пункт назначения = Липецк, время вылета = 21:50, время прилета = 23:50; время вылета = 20:00, время прилета = 22:00).
Если в ключ – это номер рейса, достаточно записать: CH(Рейсы; номер = 109; время вылета = 20:00, время прилета = 22:00).
Конец примера
Того же эффекта можно достигнуть последовательным удалением изменяемого кортежа и добавлением нового. Поэтому ошибки модификации представляют собой объединение ошибок удаления и добавления.
Лекция 8 Операции реляционной алгебры
Операции, рассмотренные в предыдущей лекции – это операции не над отношениями, а над отдельными кортежами. Далее мы рассмотрим операции над отношениями. Это, во-первых, обычные булевы операции, а во-вторых, группа специальных операторов.
Булевы операции
К булевым операциям относятся операции пересечения, объединения, разности. Пусть r, s – отношения со схемой R. Они могут рассматриваться как подмножества множества всех кортежей, определяемых этой схемой, поэтому к ним применимы булевские операции.
Пересечением называется отношение q(R) = r s, содержащее кортежи, которые одновременно принадлежат и r, и s. Объединением называется отношение q(R) = r s, содержащее кортежи, которые принадлежат либо r, либо s. Разностью называется отношение q(R) = r - s, содержащее кортежи, которые принадлежат r, но не принадлежат s. Или формально:
rs ={t|(tr)&(ts)};
rs ={t|(tr)(ts)};
r–s ={t|(tr)&(ts)}.
Заметим, что r s = r – (r – s), то есть достаточно лишь двух операций.
Обозначим dom(R) множество всех кортежей над атрибутами из схемы R и их доменами: dom(R) = {t(d1 d2 … dn)| di dom(Ai)}. Дополнение отношения определим как r(R): r = dom(R) - r(R). Но если какой-либо атрибут из R имеет бесконечный домен, r будет тоже иметь бесконечное число кортежей, то есть по определению не будет отношением.
Определение. Пусть r(A1, A2,..., An) – отношение, Di = dom(Ai). Тогда активный домен атрибута Ai относительно r – это множество adom(Ai,r) = {dDi | tr, t(Ai)=d}.
Пусть adom(R,r) – множество всех кортежей над атрибутами из R и их активными доменами относительно r: adom(R, r) = {t(d1 d2 … dn)| di adom(Ai, r)}. Тогда активным дополнением r будем называть . Так как число значений атрибутов, принадлежащих кортежам из r, конечно, то активное дополнение всегда будет отношением.
Пример
-
r
(A
B
C)
s
(A
B
C)
a1
b1
c1
a1
b2
c1
a1
b2
c1
a2
b2
c1
a2
b1
c2
a2
b2
c2
rs |
(A |
B |
C) |
|
rs |
(A |
B |
C) |
|
r - s |
(A |
B |
C) |
|
a1 |
b2 |
c1 |
|
a1 |
b2 |
c1 |
|
a1 |
b1 |
c1 |
||
|
|
|
|
|
a2 |
b2 |
c1 |
|
a2 |
b1 |
c2 |
||
|
|
|
|
|
a2 |
b2 |
c2 |
|
|
|
|
||
|
|
|
|
|
a1 |
b1 |
c1 |
|
|
|
|
||
|
|
|
|
|
a2 |
b1 |
c2 |
|
|
|
|
Пусть D1={a1, a2}, D2={b1, b2, b3}, D3={c1, c2}. Тогда dom(R) – все комбинации значений атрибутов из доменов, r = dom(R) - r – все комбинации, за исключением тех, что входят в r. Активный домен B не содержит b3, поэтому adom(R,r) – все комбинации значений, не содержащие b3. Тогда активное дополнение – все комбинации из adom(R,r) без кортежей из r.
Конец примера