
- •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 Основные функции субд.
Современные СУБД обладают очень широким набором функций, и с каждым выпуском новой версии этот набор еще расширяется. Тем не менее, можно выделить несколько основных функций, которые должна реализовывать каждая СУБД.
1.5.1 Управление данными во внешней памяти.
Размер базы данных может достигать очень больших размеров, вплоть до терабайт. И управление хранением таких объемов данных на жестких дисках и других носителях – нетривиальная задача. При этом система хранения может организовываться разнообразно – начиная с единственного файла для настольных СУБД типа Microsoft Access, и заканчивая большими наборами файлов табличных пространств, сегментов отката и так далее в промышленных СУБД, таких как Oracle.
В выполнении этой функции СУБД может опираться на функции управления файлами, предоставляемые операционной системой, организовывать свои файлы средствами файловой системы, а может реализовывать и свои процедуры работы с носителями данных.
Так или иначе, от прикладных программистов уровень работы с файлами обычно скрыт, и учитывать использование тех или иных способов организации данных на носителях не требуется, оно не должно отражаться на схеме базы данных и процедурах для работы с ней.
1.5.2 Управление оперативной памятью.
Поскольку реальные базы данных довольно быстро достигают значительного размера, превышающего объем доступной оперативной памяти, то помимо управления хранением данных на диске остро встает вопрос повышения производительности. Понятно, что если при обращении к любому элементу данных будет производиться обмен с внешней памятью, то вся система будет работать со скоростью устройства внешней памяти. Практически единственным способом повышения производительности является кэширование данных в оперативной памяти. Управление такими данными – задача тоже достаточно непростая. Конечно, в состав любой ОС входят средства управления памятью, но их использование возможно далеко не всегда. Мало того, скажем, в ОС семейства Windows использование системного управления памятью, предполагающее работу со swap-файлом может повлиять на производительность отрицательно. Так что СУБД реализует свои алгоритмы управления памятью, размещения в ней временных данных, отслеживания их актуальности и т. п.
Существует отдельная группа СУБД, так называемые in-memory СУБД, IMDS, которые ориентированы на работу только в оперативной памяти и организуют хранение данных непосредственно в ней. Очевидно, что даже при сегодняшних относительно низких ценах на микросхемы памяти, разместить таким образом значительный объем данных не получится. Тем не менее, с учетом значительно более высокой производительности, такие СУБД могут применяться в случаях, когда размер БД относительно невелик, зато обрабатываться она должна с максимальной скоростью.
1.5.3 Управление транзакциями
Транзакция - это последовательность операций над БД, рассматриваемых СУБД как единое целое. Либо транзакция успешно выполняется, и СУБД фиксирует изменения БД, произведенные этой транзакцией, во внешней памяти, либо ни одно из этих изменений никак не отражается на состоянии БД. Понятие транзакции необходимо для поддержания логической целостности БД. Поддержание механизма транзакций является обязательным условием даже однопользовательских СУБД (если, конечно, такая система заслуживает названия СУБД). Но понятие транзакции гораздо более важно в многопользовательских СУБД.
То свойство, что каждая транзакция начинается при целостном состоянии БД и оставляет это состояние целостным после своего завершения, делает очень удобным использование понятия транзакции как единицы активности пользователя по отношению к БД. При соответствующем управлении параллельно выполняющимися транзакциями со стороны СУБД каждый из пользователей может в принципе ощущать себя единственным пользователем СУБД (на самом деле, это несколько идеализированное представление, поскольку в некоторых случаях пользователи многопользовательских СУБД могут ощутить присутствие своих коллег). Транзакции и управление ими будут рассмотрены в отдельной главе далее.