
- •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.3 Цели использования банков данных.
Мы рассмотрели основные составляющие банка данных. Теперь можно обсудить цели, которые преследуются при создании и использовании банков данных.
Собственно, цели использования видны уже из определения банка данных – это многоцелевое использование, коллективный доступ к данным, централизация хранения данных и так далее. Рассмотрим эти цели последовательно.
Многоцелевое использование данных означает возможность доступа к ним из различных приложений для решения различных задач. Приложения разрабатываются для решения конкретных задач, предвидеть, какие функции потребуются в будущем, и с помощью каких приложений они будут выполняться – невозможно. Тем не менее, можно с уверенностью утверждать, что новые функции потребуются, ведь жизнь не стоит на месте, предприятие развивается, решает новые задачи. И при решении этих новых задач нужно опираться на уже сделанное, то есть, иметь возможность использовать созданные ранее базы данных и, что даже важнее, сами собранные данные. Да и можно не заглядывать далеко в будущее – часто бывает так, что различные подразделения предприятия решают каждое свои задачи, но при этом используют какие-то общие данные. Скажем, бухгалтерия, отдел кадров, производственные подразделения – все они нуждаются в информации о сотрудниках, пусть и требуются им разные сведения. Гораздо лучше, если вся информация о сотрудниках будет находиться в одном месте – это облегчит работу с ней и исключит большое количество ошибок.
Но если каждое приложение реализует свои механизмы хранения данных, использует свой формат – ни о каком общем использовании речь уже не идет и идти не может. Известно немало примеров, когда ценнейшие массивы данных становились непригодны для использования потому, что нет программы, с помощью которой можно было бы с ними работать. Для того чтобы избежать таких проблем и заложить основы для дальнейшего развития, необходимо отделять данные от использующих их приложений и хранить и обрабатывать их в более универсальном формате. Именно таким более универсальным форматом и является база данных в одной из популярных СУБД.
То есть, уже при разработке приложение мы должны планировать использование какой-то из существующих систем управления базами данных. Конечно, можно сказать, что мы лишь переносим проблемы на более низкий уровень. Однако, на это можно возразить, что тем самым мы обеспечиваем доступ к данным для произвольного круга приложений – через программный интерфейс СУБД. Кроме того, для популярной СУБД гораздо меньше шансов полностью выйти из употребления, так чтобы нельзя было найти экземпляр для доступа к нужным нам данным. Так что, даже если мы перестанем использовать какую-либо программу, собранные с ее помощью данные будут все еще доступны для обработки.
Более подробно вопрос отделения программ от используемых в них данных разобран в следующем пункте.
Следствием отделения программ от данных будет также и облегчение их коллективного использования. В общем-то, многоцелевое использование тоже предполагает коллективный доступ. Но здесь стоит сделать акцент на том, что современные СУБД изначально имеют средства для обеспечения доступа к данным для нескольких (или многих) пользователей. Они позволяют организовать работу так, чтобы пользователи минимально мешали друг другу, но в то же время данные оставались в корректном состоянии. Более подробно эта тема обсуждается при рассмотрении управления транзакциями.
Наконец, централизация хранения данных облегчает управление ими, уменьшает расходы на администрирование базы данных и так далее. Очевидно, что хранить и обслуживать одну базу данных намного проще, чем несколько баз данных меньшего размера.