- •Белорусский государственный университет модели данных и субд Учебное пособие
- •Введение
- •Раздел 5 посвящен семантическим или инфологическим моделям, используемым в современных программных системах поддержки проектирования, называемых case-системами (Computer Aided Software Engineering).
- •Раздел 10 посвящен вопросам распределенной обработки данных, здесь рассматриваются проектирование распределенных систем обработки данных, уделяется большое внимание фрагментации данных.
- •1. Основные понятия и определения теории баз данных.
- •1.1. Причины возникновения систем баз данных.
- •1.3. Системы управления базами данных.
- •2. Классификация моделей данных.
- •2.1. Моделирование данных.
- •2.2. Иерархическая модель.
- •2.3. Сетевая модель.
- •2.4. Реляционная модель.
- •2.5. Объектно-ориентированная модель.
- •2.6. Объектно-реляционная модель.
- •2.7. Многомерная модель.
- •3. Реляционная алгебра и реляционное исчисление.
- •3.1. Реляционная алгебра.
- •3.2. Реляционное исчисление.
- •4. Проектирование реляционных баз данных на основе нормализации.
- •4.1. Нормализация отношений, цели нормализации.
- •4.2. Структура функциональных зависимостей.
- •4.2.1. Функциональные зависимости и их свойства.
- •4.2.2. Ключи схем отношений.
- •4.2.3. Полные и неполные функциональные зависимости.
- •4.2.4. Покрытие множеств зависимостей.
- •4.2.5. Декомпозиция схем отношений.
- •4.2.6. Декомпозиции, сохраняющие зависимости.
- •4.3 Нормальные формы отношений.
- •4.3.1. Первая и вторая нормальные формы схем отношений.
- •4.3.2. Третья нормальная форма схем отношений.
- •4.3.4. Четвертая нормальная форма схем отношений.
- •4.3.5. Пятая нормальная форма схем отношений.
- •5. Семантическое моделирование
- •5.1. Цели и средства семантического моделирования.
- •5.2. Метод “сущность-связь”.
- •5.3. Этапы моделирования.
- •5.4. Правила формирования отношений.
- •Формирование отношений для связи 1:1.
- •Формирование отношений для связи 1:м.
- •6. Структура субд и основные функции.
- •6.1. Типовая организация современной субд.
- •6.2. Поддержка языков бд.
- •6.3. Управление данными во внешней памяти.
- •6.4. Управление буферами оперативной памяти.
- •6.5. Управление транзакциями.
- •6.6. Журнализация и восстановление после сбоев.
- •7. Управление транзакциями.
- •7.1. Свойства транзакций. Проблемы параллельного выполнения.
- •7.2. Консервативные методы управления транзакциями.
- •7.2.1. Метод блокировки.
- •7.2.2. Метод временных отметок.
- •7.3. Оптимистические методы управления транзакциями.
- •7.4. Уровень детализации блокируемых элементов данных.
- •8. Восстановление базы данных после сбоев.
- •8.1. Основные принципы и функции восстановления.
- •8.3. Создание контрольных точек.
- •8.4. Методы восстановления.
- •9. Защита баз данных.
- •9.1. Основные понятия.
- •9.2. Компьютерные средства защиты.
- •9.3. Некомпьютерные средства защиты.
- •10. Распределенные базы данных
- •10.1. Основные концепции.
- •10.2. Функции распределенных субд.
- •10.3. Разработка распределенных реляционных баз данных.
- •10.4. Распределение данных.
- •10.5. Фрагментация.
- •10. 6. Обеспечение прозрачности в рсубд.
- •11. Введение в субд oracle.
- •11.1. Характеристика субд Oracle.
- •11.2. Объекты базы данных Oracle.
- •11.4. Архитектура базы данных Oracle.
- •11.5. Архитектура экземпляра базы данных Oracle.
- •11.6. Формирование базы данных и экземпляра Oracle.
- •12. Основы языка sql.
- •12.1. Алфавит и лексемы языка sql.
- •12.2. Типы данных языка sql.
- •12.3. Операторы языка sql.
- •12.4. Операции языка sql.
- •12.5. Функции языка sql.
- •12.6. Создание, модификация и удаление таблиц.
- •12.7. Выбор информации из базы данных.
- •13. Основы языка pl/sql.
- •13.1. Алфавит и лексемы языка.
- •13.3. Типы данных и объявление переменных.
- •13.4. Операторы.
- •13.5. Курсоры.
- •13.6. Обработка исключительных ситуаций.
- •13.7. Триггеры базы данных.
- •13.8. Хранимые процедуры и функции.
- •13.9. Пакеты.
- •13.10. Объекты.
- •Литература
6. Структура субд и основные функции.
6.1. Типовая организация современной субд.
Организация типичной СУБД и состав ее компонентов соответствуют выполняемому ею набору функций. Выделяют следующие основные функции СУБД:
поддержка языков БД;
управление данными во внешней памяти;
управление буферами оперативной памяти;
управление транзакциями;
журнализация и восстановление БД после сбоев;
Логически в современной реляционной СУБД можно выделить внутреннюю часть – ядро СУБД (часто его называют Data Base Engine), компилятор языка БД (обычно SQL), подсистему поддержки времени выполнения, набор утилит. В некоторых системах эти части выделяются явно, в других – нет, но логически такое разделение можно провести во всех СУБД.
Ядро СУБД отвечает за управление данными во внешней памяти, управление буферами оперативной памяти, управление транзакциями и журнализацию. Соответственно, можно выделить такие компоненты ядра (по крайней мере, логически, хотя в некоторых системах эти компоненты выделяются явно), как менеджер данных, менеджер буферов, менеджер транзакций и менеджер журнала. Функции этих компонентов взаимосвязаны, и для обеспечения корректной работы СУБД все эти компоненты должны взаимодействовать по тщательно продуманным и проверенным протоколам. Ядро СУБД обладает собственным интерфейсом, не доступным пользователям напрямую и используемым в программах, производимых компилятором SQL (или в подсистеме поддержки выполнения таких программ) и утилитах БД. Ядро СУБД является основной резидентной частью СУБД. При использовании архитектуры “клиент-сервер” ядро является основной составляющей серверной части системы.
Основной функцией компилятора языка БД является компиляция операторов языка БД в некоторую выполняемую программу. Основной проблемой реляционных СУБД является то, что языки этих систем (а это, как правило, SQL) являются непроцедурными, т.е. в операторе такого языка специфицируется некоторое действие над БД, но эта спецификация не является процедурой, а лишь описывает в некоторой форме условия совершения желаемого действия. Поэтому компилятор должен решить, каким образом выполнять оператор языка прежде, чем произвести программу. Применяются достаточно сложные методы оптимизации операторов. Результатом компиляции является выполняемая программа, представляемая в некоторых системах в машинных кодах, но более часто в выполняемом внутреннем машинно-независимом коде. В последнем случае реальное выполнение оператора производится с привлечением подсистемы поддержки времени выполнения, представляющей собой, по сути дела, интерпретатор этого внутреннего языка.
Наконец, в отдельные утилиты БД обычно выделяют такие процедуры, которые слишком накладно выполнять с использованием языка БД, например, загрузка и выгрузка БД, сбор статистики, глобальная проверка целостности БД и т.д. Утилиты программируются с использованием интерфейса ядра СУБД, а иногда даже с проникновением внутрь ядра.
Рассмотрим подробнее функции СУБД.
