- •1. Введение в базы и банки данных
- •1.1. Понятие базы и банка данных
- •1.2. Компоненты банка данных
- •1.2.1. Информационная база
- •1.2.2. Лингвистические средства
- •1.2.3. Программные средства
- •1.2.4. Технические средства
- •1.4. Типология баз данных
- •1.2.5. Организационно-административные подсистемы
- •1.3. Пользователи баз данных
- •1.4.1. Типология баз данных с точки зрения информационных процессов
- •1.5. Семантика баз данных
- •1.6. Типология моделей
- •2. Базовые технологии и основные этапы развития машинной обработки данных
- •2.1. Введение в технологии машинной обработки данных и основные определения
- •2.2. Примерная схема организации файлового ввода-вывода
- •2.3. Эволюция концепций обработки данных
- •2.3.1. Простые (линейные) файлы данных (начало 60-х гг.)
- •2.3.2. Методы доступа к записям (конец 60-х гг.)
- •2.3.3. Первые системы управления базами данных (начало 70-х гг.)
- •2.3.4. Системы управления базами данных
- •2.4. Схема управления данными в субд
- •2.5. Данные и управление их обработкой
- •2.5.1. Типы, форматы, структуры данных
- •2.5.2. Описание и обработка файлов
- •2.6. Особенности и компромиссы реализаций баз данных
- •3. Модели и структуры данных
- •3.1. Многоуровневые модели предметной области
- •3.2. Идентификация объектов и записей
- •3.3. Поиск записей
- •3.4. Представление предметной области и модели данных
- •3.5. Структуры данных
- •3.5.1. Линейные структуры
- •3.5.2. Нелинейные структуры
- •3.5.3. Сетевые структуры
- •3.6. Реляционная модель данных
- •3.6.1. Основные понятия реляционной модели данных
- •3.6.2. Основы реляционной алгебры
- •4. Физические модели баз данных
- •4.1. Организация данных на машинных носителях
- •4.1.1. Типы записей
- •4.1.2. Организация файлов — способ размещения записей
- •4.1.3. Способы адресации и методы доступа к записям
- •4.1.4. Схемы организации данных на внешних носителях
- •4.2. Физическое представление иерархических структур
- •4.2.1. Физически последовательное размещение
- •4.2.2. Левосписковые структуры с переполнениями
- •4.2.3. Использование указателей на «подобные» и «порожденные»
- •4.3. Физическое представление сетевых структур
- •4.3.1. Физически последовательное размещение
- •4.3.2. Использование указателей
- •4.3.3. Физическое представление с разделением данных и связей
- •4.4. Архитектура файловой организации баз данных
- •4.4.1. Файл-ориентированная организация данных
- •4.4.2. Страничная организация данных
- •4.5. Модели распределения данных по физическим носителям
- •5. Модели и этапы проектирования баз данных
- •5.1. Модели многоуровневой архитектуры систем баз данных
- •5.2. Стадии проектирования и объекты моделирования
- •5.3. Системный анализ предметной области
- •5.4. Модели и технологии инфологического проектирования реляционных бд
- •5.4.1. Инфологическое проектирование и семантическая модель
- •5.4.2. Модель «Сущность — связь»
- •5.4.3. Er диаграмма
- •5.4.4. Нормальные формы er-диаграмм
- •5.5. Даталогические модели
- •5.5.1. Получение реляционной схемы из er диаграммы
- •5.6. Физические модели
- •6. Проектирование реляционной базы данных
- •6.1. Универсальное отношение
- •6.2. Функциональная и многозначная зависимости
- •6.3. Нормальные формы
- •6.4. Процедура нормализации
- •6.5. Пример проектирования реляционной бд
- •6.5.1. Построение еr-диаграммы
- •6.5.2. Построение реляционной схемы
- •6.5.3. Нормализация таблиц
- •7. Транзакции и целостность бд
- •7.1. Модели транзакций
- •7.2. Журнал транзакций
- •7.3. Параллельное выполнение транзакций
- •7.3.1. Пропавшие обновления
- •7.3.2. Чтение «грязных» данных
- •7.3.3. Чтение несогласованных данных
- •7.3.4. Строки-призраки
- •7.4. Сериализация транзакций
- •7.5. Захват и освобождение объекта
4.3. Физическое представление сетевых структур
Так же, как и в случае древовидных структур, рассмотренных в предыдущей главе, связи в сетевых структурах можно представить, используя физически последовательное размещение, указатели, кольца. Рассмотрим простую сетевую структуру, представленную на рис. 4.13.
4.3.1. Физически последовательное размещение
Если древовидные структуры можно представить без избыточности с помощью физически последовательного размещения, то для сетевых структур это обычно невозможно. Однако в некоторых случаях может оказаться удобным представить один набор связей типа «исходный — порожденный» путем физически последовательного размещения, а для остальных связей использовать другой метод. Например, можно использовать физически последовательное размещение для представления связей А и С (рис. 4.14).
Рис. 4.13. Пример простой сетевой структуры
Рис. 4.14. Пример реализации сетевой структуры с последовательным размещением
В этом примере связи между В и С реализуются с помощью множественных указателей на порожденные записи, указателей на исходные записи и указателей на порожденные и подобные записи.
Для множественных указателей на порожденные записи требуются списки указателей переменной длины; для указателей на порожденные и подобные записи необходимы длинные цепочки.
Обычно для представления сетевых структур физически последовательное размещение не применяется.
4.3.2. Использование указателей
Если для реализации сетевых структур используются указатели, то они должны представлять все связи, причем какие-то записи должны называться исходными (например, верхние), а какие-то — порожденными (нижние записи).
На практике могут использоваться много различных вариантов конфигураций указателей. На рис. 4.15 показаны кольцевые структуры, в которых имеются указатели на исходные, порожденные и подобные записи.
Однако, если какая-нибудь связь между записями относится к типу «многие ко многим», то названные три метода физического представления сетевых структур оказываются непригодными. Более того, если в простых сетевых структурах на предыдущих рисунках для хранения указателей на исходные записи требовался один или два указателя в каждой записи, то здесь необходимы списки указателей переменной длины.
Рис. 4.15. Пример реализации сетевой структуры с использованием указателей
Основной проблемой, возникающей при организации встроенных списков указателей переменной длины, является сложность их ведения. При обновлении файла должна существовать возможность сокращения и удлинения списков, что обычно приводит к необходимости периодической реорганизации. Реорганизация является сложной задачей, поскольку при перемещении записей должны быть изменены многие указатели.
Эта проблема частично решается, если использовать символические указатели, которые не изменяются при перемещении записей. Однако их применение отражается на механизме адресации и при поиске записей в файле: система затрачивает на поиск записей больше времени, чем при использовании прямых указателей.
