- •1. Понятие базы данных и банка данных.
- •1.1 Основные определения.
- •1.2 Составляющие банка данных.
- •1.3 Цели использования банков данных.
- •1.4 Трехуровневая архитектура базы данных.
- •1.5 Основные функции субд.
- •1.5.1 Управление данными во внешней памяти.
- •1.5.2 Управление оперативной памятью.
- •1.5.3 Управление транзакциями
- •1.5.4 Журнализация
- •1.5.5. Поддержка языков бд
- •2. Модели данных.
- •2.1 Ранние модели данных.
- •2.1.1 Иерархическая модель данных.
- •2.1.2 Сетевая модель данных.
- •2.2 Реляционная модель данных.
- •2.4 Объектная модель данных.
- •2.5 Нереляционные субд.
- •3. Реляционная модель данных.
- •3.1 Структура и основные понятия реляционной модели данных.
- •3.2 Правила Кодда для реляционных субд.
- •3.3 Реляционная алгебра и реляционное исчисление.
- •3.3.1 Реляционная алгебра.
- •3.3.2 Реляционное исчисление.
- •4. Проектирование баз данных.
- •4.1 Проектирование при помощи нормализации.
- •4.1.1 Первая нормальная форма.
- •4.1.2 Вторая нормальная форма.
- •4.1.3 Третья нормальная форма и нормальная форма Бойса-Кодда.
- •4.1.4 Четвертая нормальная форма.
- •4.1.5 Пятая нормальная форма.
- •4.2 Модель «сущность-связь».
- •4.2.1 Появление и развитие метода. Современное состояние.
- •4.2.2 Метод Баркера.
- •4.2.3 Метод idef1x.
- •4.2.4 Получение схемы базы данных из модели «сущность-связь».
- •4.3 Денормализация базы данных.
- •5. Язык sql.
- •5.1 Появление и развитие языка.
- •5.2 Современная структура языка.
- •5.3 Язык определения данных.
- •5.4 Язык манипулирования данными.
- •5.4.1 Запросы insert, update, delete.
- •5.4.2 Запрос select.
- •6. Управление транзакциями.
- •6.1 Понятие транзакции. Основные свойства транзакций.
- •7.2 Восстановление.
- •6.3 Параллельность.
- •6.3.1 Проблемы параллельных транзакций и уровни изолированности.
- •6.3.2 Блокировки данных.
- •6.4 Поддержка транзакции в языке sql и библиотеках ado.Net.
- •Рекомендуемая литература
1.5.4 Журнализация
Одним из основных требований к СУБД является надежность хранения данных во внешней памяти. Под надежностью хранения понимается то, что СУБД должна быть в состоянии восстановить последнее согласованное состояние БД после любого аппаратного или программного сбоя. Обычно рассматриваются два возможных вида аппаратных сбоев: так называемые мягкие сбои, которые можно трактовать как внезапную остановку работы компьютера (например, аварийное выключение питания), и жесткие сбои, характеризуемые потерей информации на носителях внешней памяти.
Понятно, что в любом случае для восстановления БД нужно располагать некоторой дополнительной информацией. Именно такой дополнительной информацией является журнал транзакций БД. В этот журнал заносятся сведения обо всех выполняемых операциях, и в случае сбоя и разрушения основных файлов данных по этому журналу можно восстановить состояние БД максимально близко к моменту сбоя. Как именно ведется журнал – зависит от конкретной СУБД, но так или иначе, находящейся в нем информации должно хватить для восстановления данных.
Во всех случаях придерживаются стратегии "упреждающей" записи в журнал (так называемого протокола Write Ahead Log - WAL). Грубо говоря, эта стратегия заключается в том, что запись об изменении любого объекта БД должна попасть во внешнюю память журнала раньше, чем измененный объект попадет во внешнюю память основной части БД. Известно, что если в СУБД корректно соблюдается протокол WAL, то с помощью журнала можно решить все проблемы восстановления БД после любого сбоя.
Вопросы ведения журнала транзакций и восстановления данных с его помощью рассматриваются в соответствующей главе.
1.5.5. Поддержка языков бд
Вопросы поддержки языков для работы с данными уже упоминались ранее, кроме того, основному на сегодня языку для работы с данными посвящена отдельная глава, так что вдаваться здесь в подробности нет необходимости. Тем не менее, поддержка языков БД – одна из важнейших функций СУБД, без инструментов для работы с данными, которые предоставляют соответствующий язык, СУБД бесполезна.
Контрольные вопросы.
Дайте определение понятию «база данных».
Опишите основную цель появления баз данных.
Дайте определение понятию «банк данных». В чем разница между банком данных и базой данных.
Перечислите основные составляющие банка данных.
Опишите цели создания и использования трехуровневой модели данных.
Перечислите и поясните основные функции СУБД.
2. Модели данных.
Под моделью данных в теории баз данных понимают некоторую формальную теорию представления и обработки данных, включающую методы описания типов и логических структур данных (аспект структуры), методы манипулирования данными (аспект манипуляции) и методы описания и поддержки целостности данных (аспект целостности).
Модель данных представляет собой абстрактное логическое определение объектов, операторов и других элементов, в совокупности составляющих абстрактную машину доступа к данным. Объекты позволяют создавать структуру данных, операторы – манипулировать данными.
Иногда понятие «модель данных» смешивают с понятием «модель базы данных». Этого делать не следует. Модель данных – это способ моделировать, инструмент. Модель базы данных – это результат использования этого способа для проектирования базы данных. Можно провести здесь аналогию с языком программирования и написанной на нем программой.
Необходимо также помнить, что модель данных описывает именно логическое представление данных. Как мы выяснили ранее, физическая организация данных может иметь мало общего с тем, как данные представлены логически. Собственно говоря, можно продолжить аналогию с языками программирования – откомпилированная программа тоже может заметно отличаться от программного кода. К ней добавляются различные служебные данные, а компилятор вполне может внести изменения в код для целей оптимизации.
Так, например, исторически одними из первых появились СУБД, организующие данные в виде инвертированных списков. Такой подход не все авторы выделяют в качестве самостоятельной модели данных, и мы также не будем рассматривать его в этом качестве. Примечательно здесь то, что технические решения, использованные для реализации этого подхода, в первую очередь, сами инвертированные списки, до сих пор используются в СУБД для построения индексов и поиска записей по ключевым полям. При этом СУБД может основываться на реляционной модели данных и предоставлять пользователю интерфейс для доступа к данным в рамках этой модели.
Вообще, на сегодняшний день выделяют четыре (а с инвертированными списками – пять) моделей данных: иерархическую, сетевую, реляционную и объектно-ориентированную. Также следует отметить и набравшие популярность в последние годы так называемые «нереляционные» СУБД, но это направление пока довольно бурно развивается и говорить об устоявшихся моделях данных, на наш взгляд, преждевременно. Обзор нереляционных СУБД будет сделан в соответствующей главе второй части курса.
