- •В.И. Швецов, А.Н. Визгунов, И.Б. Мееров
- •БАЗЫ ДАННЫХ
- •ОГЛАВЛЕНИЕ
- •ПРЕДИСЛОВИЕ
- •1.1. Развитие основных понятий представления данных
- •1.2. Системы управления базами данных
- •3. Обеспечение логической и физической независимости данных.
- •4. Защита логической целостности базы данных.
- •5. Защита физической целостности.
- •7. Синхронизация работы нескольких пользователей.
- •8. Управление ресурсами среды хранения.
- •9. Поддержка деятельности системного персонала.
- •1.4. Краткий обзор литературы и других доступных источников
- •1.5. Различные представления о данных в базах данных
- •1.6.1. Модель с централизованной архитектурой
- •1.6.2. Модель с автономным персональными ЭВМ
- •1.7. Краткий обзор СУБД
- •1.7.1. Настольные СУБД
- •1.7.2. Серверные СУБД
- •1.8. Основные этапы проектирования базы данных
- •ГЛАВА 2. КОНЦЕПТУАЛЬНОЕ МОДЕЛИРОВАНИЕ БАЗЫ ДАННЫХ
- •2.1. Сложный пример предметной области
- •2.2. Способы описания предметной области
- •2.4. Описание информационных потребностей пользователя
- •2.5. Построение ER-диаграмм
- •2.7. Построение концептуальной модели
- •2.7.1. Моделирование локальных представлений
- •2.7.2. Объединение локальных моделей
- •Слияние идентичных элементов
- •Установление связей между наборами сущностей разных моделей
- •Введение агрегированных элементов
- •Обобщение подобных типов сущностей
- •2.9. Ограничения целостности
- •3.1. Общие представления о модели данных
- •3.2. Сетевая модель данных
- •3.3. Иерархическая модель данных
- •3.4. Реляционная модель данных
- •3.5. Многомерная модель данных
- •ГЛАВА 4. ФОРМАЛИЗАЦИЯ РЕЛЯЦИОННОЙ МОДЕЛИ
- •4.2. Манипулирование данными в реляционной модели
- •4.3. Операции реляционной алгебры
- •4.4.1. Проблема выбора рациональных схем отношений
- •Полное множество функциональных зависимостей
- •4.4.3. Декомпозиция схемы отношения
- •Вторая нормальная форма (2НФ)
- •Третья нормальная форма (3НФ)
- •Мотивировка третьей нормальной формы
- •Нормальная форма Бойса-Кодда (НФБК)
- •Мотивировка нормальной формы Бойса-Кодда
- •4.4.5. Пример нормализации до 3НФ
- •ГЛАВА 5. ФИЗИЧЕСКИЕ МОДЕЛИ ДАННЫХ (СТРУКТУРЫ ХРАНЕНИЯ)
- •5.1. Структура памяти ЭВМ
- •5.2. Представление экземпляра логической записи
- •5.4. Структуры хранения данных во внешней памяти ЭВМ
- •5.4.1. Последовательное размещение физических записей
- •Поиск записи с заданным значением ключа
- •Чтение записи с заданным значением ключа
- •Корректировка записи
- •Удаление записи
- •Добавление записи
- •Поиск записи с заданным значением ключа
- •Чтение записи
- •Корректировка и удаление записи
- •Добавление записи
- •Поиск записи с заданным значением ключа
- •Чтение записи
- •Корректировка записи
- •Удаление записи
- •Добавление записи
- •5.4.4. Использование индексов (индексирование)
- •Поиск записи с заданным значением ключа
- •Чтение записи
- •Корректировка записи
- •Удаление записи
- •Добавление записи
- •5.4.5. Бинарное дерево (В-дерево)
- •Поиск и чтение записи с заданным значением ключа
- •Модификация (корректировка) записи
- •Удаление записи
- •Добавление записи
- •5.4.6. Размещение записей с использованием хэширования
- •Поиск записи с заданным значением ключа и чтение
- •Модификации записи
- •Удаление записи
- •Добавление записи
- •5.4.7. Комбинированные структуры хранения
- •6.1.1. Архитектура базы данных
- •Логический уровень
- •Физический уровень
- •Файлы и группы файлов
- •Страницы и группы страниц
- •6.2.1. Проблемы доступа и обработки данных
- •6.2.2. Навигационный подход
- •6.3. Понятие языка SQL и его основные части
- •6.3.1. История возникновения и стандарты языка SQL
- •6.3.2. Достоинства языка SQL
- •6.3.3. Разновидности SQL
- •6.4.1. Использование SQL для выбора информации из таблицы
- •Простейший запрос
- •Использование агрегатных функций. Простые запросы
- •Форматирование вывода. Выражения в запросе. Упорядочение
- •6.4.4. Язык SQL и операции реляционной алгебры
- •6.5. Программный (встроенный) SQL
- •6.5.1. Статический SQL
- •6.6.1. Библиотека DB-Library
- •6.6.2. Протокол ODBC
- •6.6.3. Протокол OCI
- •6.6.4. Протокол JDBC
- •ГЛАВА 7. ТЕНДЕНЦИИ РАЗВИТИЯ БАЗ ДАННЫХ
- •Объектно-ориентированное программирование
- •Объектно-ориентированные базы данных
- •Объектно-реляционные базы данных
- •7.2. Распределенные базы данных
- •СПИСОК ЛИТЕРАТУРЫ
- •УЧЕБНАЯ ПРОГРАММА КУРСА
- •Цели и задачи курса
- •Дисциплины, изучение которых необходимо для данного курса
- •Программа курса (36 ч. лекций, 18 ч. лабораторных работ)
- •2. Концептуальное моделирование базы данных (6 часов)
- •4. Формализация реляционной модели (6 часов)
- •5. Физические модели данных (структуры хранения) (4 часа)
- •7. Тенденции развития баз данных
- •Список литературы
- •УЧЕБНЫЕ ПОСОБИЯ
- •ОСНОВНЫЕ РЕКОМЕНДУЕМЫЕ МОНОГРАФИИ
- •ЛИТЕРАТУРА ПО ПРОГРАММНЫМ СРЕДСТВАМ
- •ДОПОЛНИТЕЛЬНАЯ ЛИТЕРАТУРА
- •ЛАБОРАТОРНЫЙ ПРАКТИКУМ
- •ОПИСАНИЕ ЛАБОРАТОРНЫХ РАБОТ
- •Лабораторная работа №1
- •Лабораторная работа №2
- •Лабораторная работа №3
- •Лабораторная работа №4
- •Лабораторная работа №5
- •Лабораторная работа №6
- •ВИДЫ ПРЕДМЕТНЫХ ОБЛАСТЕЙ
- •1. Страховая компания
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •2. Гостиница
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •3. Ломбард
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи.
- •4. Реализация готовой продукции
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •5. Ведение заказов
- •Описание предметной области
- •Таблицы
- •6. Бюро по трудоустройству
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи.
- •7. Нотариальная контора
- •Описание предметной области
- •Таблицы
- •8. Фирма по продаже запчастей
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •9. Курсы по повышению квалификации
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •10. Определение факультативов для студентов
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •11. Распределение учебной нагрузки
- •Описание предметной области
- •Таблицы
- •12. Распределение дополнительных обязанностей
- •Описание предметной области
- •Таблицы
- •13. Техническое обслуживание станков
- •Описание предметной области
- •Таблицы
- •14. Туристическая фирма
- •Описание предметной области
- •Таблицы
- •15. Грузовые перевозки
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •16. Учет телефонных переговоров
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •17. Учет внутриофисных расходов
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •18. Библиотека
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •19. Прокат автомобилей
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •20. Выдача банком кредитов
- •Описание предметной области
- •Таблицы
- •21. Инвестирование свободных средств
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •22. Занятость актеров театра
- •Описание предметной области
- •Таблицы
- •23. Платная поликлиника
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •25. Учет телекомпанией стоимости прошедшей в эфире рекламы
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •26. Интернет-магазин
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •27. Ювелирная мастерская
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •28. Парикмахерская
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •29. Химчистка
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •30. Сдача в аренду торговых площадей
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •ПРИМЕР ВЫПОЛНЕНИЯ ЛАБОРАТОРНЫХ РАБОТ
- •Лабораторная работа №1
- •Краткое задание
- •Пример выполнения
- •Вариант 2.
- •Вариант 3.
- •Сетевая модель
- •Иерархическая модель
- •Реляционная модель
- •Лабораторная работа №2
- •Краткое задание
- •Пример выполнения
- •Таблица Абитуриенты
- •Таблица Экзамены
- •Таблица Оценки
- •Схема данных
- •Абитуриенты-Оценки
- •Экзамены-Оценки
- •Импорт данных
- •Таблица «Абитуриенты»
- •Таблица «Экзамены»
- •Таблица «Оценки»
- •Лабораторная работа №3
- •Краткое задание
- •Пример выполнения
- •Лабораторная работа №4
- •Краткое задание
- •Пример выполнения
- •Лабораторная работа №5
- •Краткое задание
- •Пример выполнения
- •Описание расширенной предметной области
- •Состав хранимой информации
- •Диаграммы «Сущность-Связь»
- •Таблицы в 3НФ
- •Скрипты для создания объектов базы данных в СУБД Oracle
- •Лабораторная работа №6
- •Краткое задание
- •Пример выполнения
Читается первая физическая запись списка свободных элементов. Адрес связи этой записи заменяет адрес начала пустого списка. В ОП формируется новая физическая запись, содержащая добавляемую логическую запись. В качестве ее адреса связи заносится адрес связи из физической записи, предшествующей добавляемой. Каждая из этих записей заносится в ВП. Число обращений к ВП при добавлении записи будет примерно равно ТР+3.
Рассмотренный метод организации структуры хранения достаточно эффективно решает проблемы добавления и удаления записей, но не уходит от перебора при поиске нужной записи.
5.4.4. Использование индексов (индексирование)
Как уже отмечалось, упорядочение записей позволяет использовать дихотомический метод поиска нужной записи и, тем самым, существенно сократить одну из основных составляющих времени поиска – число обращений к ВП. Однако при этом возникают проблемы с добавлением записей, связанные с необходимостью перезаписи части физических записей (сдвига).
Для того, чтобы использовать дихотомический поиск и не перемещать физические записи при добавлении новых записей используется так называемое логическое упорядочение физических записей (индексирование). Основная структура хранения содержит записи исходной таблицы и представлена в виде неупорядоченной последовательности физических записей (см. п. 5.4.1). Для возможной реализации дихотомического поиска по определенному ключу создается дополнительная структура хранения (так называемый индекс). Число записей в индексе равно числу записей исходной таблицы (числу физических записей в основной структуре хранения). Каждая запись индекса имеет два поля: ключевое поле записи основной структуры и указатель – адрес записи основной структуры с соответствующим значением ключа.
Записи индекса (индексного файла) упорядочены по значению ключа. Адреса связи этих записей определяют логическое упорядочение записей основной структуры хранения. пример соответствующей структуры хранения приводится на рис. 37.
Рассматриваемую структуру хранения называют еще инвертированным списком. Смысл этого термина состоит в следующем. Можно было бы упорядочить записи основной структуры хранения, объединив их в соответствующий упорядоченный список.
132
Файл-индекс |
Основная структура хранения |
|||
Фамилия |
Адрес |
Фамилия |
Группа |
Предмет Оценка |
Евсеев |
|
Петров |
|
|
Иванов |
|
Сидоров |
|
|
Марков |
|
Марков |
|
|
Петров |
|
Иванов |
|
|
Сидоров |
|
Евсеев |
|
|
|
|
Рис. 37. Индексирование |
|
В нашем случае адреса связи как бы удаляются из списка и включаются в состав файла-индекса (инвертируются). Поэтому полученная структура интерпретируется как инвертированный список.
Поиск нужной записи по заданному значению ключа осуществляется в индексном файле методом половинного деления. Заметим, что так как записи индекса содержат всего два поля, суммарный объем записей индекса невелик, поэтому индекс, как правило, целиком считывается для обработки в ОП за одно обращение к ВП. После того, как в индексном файле обнаружена искомая запись, по адресу связи читается полная соответствующая запись основной структуры хранения. Если необходим поиск по другому ключу, строится еще один индекс по соответствующему ключу. Таким образом, по любому ключу поиск можно осуществлять дихотомическим методом.
Оценим число обращений к ВП при реализации элементарных операций. Соответствующие оценки сделаны для случая, когда физическая запись состоит из одной логической записи (коэффициент блокировки k равен 1). Расчет оценок для произвольного k производитс по аналогии с расчетами пп. 5.4.1.–5.4.3.
Поиск записи с заданным значением ключа
Из ВП читается индексный файл (число обращений к ВП для этого зависит от объема индексного файла, как правило, невелико и много меньше числа записей N). После нахождения нужной записи в индексном файле, читается соответствующая запись основного файла (одно обращение к ВП).
Чтение записи
В ходе операции поиска искомая запись считана в ОП
133