- •А.И. Костюк
- •Введение
- •1. Данные
- •1.1. Источники данных
- •1.1.1. Предметная область
- •1.1.2. Объект
- •1.1.3. Атрибуты (элементы данных)
- •1.2. Значение данных
- •1.2.1. Ключевой элемент данных
- •1.2.2. Запись данных
- •1.2.3. Файл данных
- •1.3. Недостатки традиционной организации файлов данных
- •1.4. База данных
- •1.4.1. Определение базы данных
- •1.4.2. Система управления базами данных
- •1.4.3. Недостатки интеграции данных
- •1.5. Администратор базы данных
- •1.6. Независимость данных
- •1.6.1. Два уровня независимости данных
- •1.6.2. Способы достижения независимости данных
- •1.7. Словарь данных
- •1.8.Принципы проектирования базы данных и достижения требуемых эксплуатационных характеристик
- •2. Администрирование базы данных
- •2.1. Функция администрирования базы данных
- •2.1.1. Обязанности абд
- •2.1.2. Абд и администрация предприятия
- •2.1.3. Абд и пользователи
- •2.1.4. Абд и разработчики прикладных программ
- •2.1.5. Абд и системная группа
- •2.1.6. Абд и эксплуатационная группа
- •2.1.7. Абд и поставщики программного обеспечения
- •2.1.8. Абд и поставщики аппаратных средств
- •2.2. Жизненный цикл системы с базой данных
- •2.2.1. Проектирование базы данных (этап 1)
- •2.2.2. Материализация базы данных (этап 2)
- •2.2.3. Конвертирование существующих наборов данных и прикладных программ во вновь созданную базу данных (этап 3)
- •2.2.4. Интеграция конвертированных и новых прикладных программ для работы в среде вновь созданной базы данных (этап 4)
- •2.2.5. Эксплуатация (этап 5)
- •2.2.6. Развитие, совершенствование и сопровождение (этап 6)
- •2.3. Абд, группа абд и ее обязанности
- •3. Словарь данных
- •3.1. Что такое словарь данных
- •3.1.1. Назначение
- •3.1.2. Словарь данных и система управления базами данных
- •3.1.3. Интерфейсы
- •3.1.4. Идеальный словарь данных. Требования и организация
- •3.2. Стратегия реализации словаря данных
- •3.2.1. Экономическая целесообразность
- •3.2.2. Условия применения
- •3.2.3. Рекомендации по определению данных
- •4. Модели данных
- •4.1. Что такое модель данных
- •4.2. Взаимосвязи в модели данных
- •4.2.1. Взаимосвязь «один к одному» (между двумя типами объектов)
- •4.2.2. Взаимосвязь «один ко многим» (между двумя типами объектов)
- •4.2.3. Взаимосвязь «многие ко многим» (между двумя типами объектов)
- •4.2.4. Взаимосвязь «один к одному» (между двумя атрибутами)
- •4.2.5. Взаимосвязь «один ко многим» (между двумя атрибутами)
- •4.2.6. Взаимосвязь «многие ко многим» (между двумя атрибутами)
- •4.2.7. Обзор моделей данных
- •4.3. Реляционная модель данных
- •4.3.1. Достоинства модели
- •4.3.2. Недостатки модели
- •4.4. Иерархическая модель данных
- •4.4.1. Иерархическая древовидная структура
- •4.4.2. Включение и удаление данных
- •4.4.3. Достоинства модели
- •4.4.4. Недостатки модели
- •4.5. Сетевая модель данных
- •4.5.1. Представление взаимосвязи «один ко многим»
- •4.5.2. Дополнительные классы наборов
- •4.5.3. Операции включения и удаления в сетевой модели данных
- •4.5.4. Достоинства модели
- •4.5.5. Недостатки модели
- •5. Проектирование концептуальной модели данных
- •5.1. Анализ данных
- •5.1.1. Сбор информации о данных, используемых в существующих прикладных программах
- •5.1.2. Сбор информации о данных для перспективных приложений
- •5.2. Нормализация отношений
- •5.3. Графическое представление
- •6. Проектирование логической модели данных
- •6.1. Отображение на реляционную модель данных
- •6.2. Отображение на иерархическую модель данных
- •6.3. Отображение на сетевую модель данных
- •7. Физическая модель данных
- •7.1. Интерфейсы между пользователем и базой данных
- •7.2. Методы доступа внутренней модели (физической)
- •7.2.1. Физический последовательный метод доступа
- •7.2.2. Индексно-последовательный метод доступа
- •7.2.3. Индексно-произвольный метод доступа
- •7.2.4. Инвертированный метод доступа
- •7.2.5. Прямой метод доступа
- •7.2.6. Метод доступа посредством хеширования
- •7.3. Методы доступа внешней модели (представления пользователя)
- •8. Языкsql
- •8.1. Состав языка sql
- •8.2. Реляционные операции. Команды языка манипулирования данными
- •Команда select Простейшие конструкции команды select
- •Список полей
- •Все поля
- •Все поля в произвольном порядке
- •Вычисления
- •Литералы
- •Конкатенация
- •Использование квалификатора as
- •Работа с датами
- •Агрегатные функции
- •Предложение from команды select
- •Ограничения на число выводимых строк
- •Is null
- •Операции сравнения
- •Between
- •Containing
- •Is null
- •Логические операторы
- •Преобразование типов (cast)
- •Изменение порядка выводимых строк (order by)
- •Упорядочивание с использованием имен столбцов
- •Упорядочивание с использованием номеров столбцов
- •Устранение дублирования (модификатор distinct)
- •Соединение (join)
- •Внутренние соединения
- •Самосоединения
- •Внешние соединения
- •9. Общая характеристика баз знаний и экспертных систем
- •9.1. Терминология
- •9.2. Принципы, структура и функции систем баз знаний (сбз)
- •9.3. Классификация инструментальных средств построения сбз
- •Литература
- •Содержание
- •1. Данные 6
- •2. Администрирование базы данных 21
- •3. Словарь данных 43
- •4. Модели данных 57
- •5. Проектирование концептуальной модели данных 82
7.2.3. Индексно-произвольный метод доступа
При таком методе доступа записи хранятся в произвольном порядке и создается отдельный файл статей, включающих значения действительного ключа, и физические адреса хранимых записей. Статья, содержащая действительный ключ и адрес, называется статьей индекса, а весь файл – индексом. Каждой записи базы данных соответствует статья индекса. Существует два основных способа создания индекса и доступа к нему индексно-произвольного метода доступа. Первый способ заключается в применении для ведения индекса схемы упорядочения (например, система IMS обеспечивает так называемое вторичное индексирование, которое иллюстрируется рис. 7.4). Доступ к индексу последовательный. Последовательная организация индекса дает возможность последовательно обрабатывать записи. При втором способе индекс не упорядочивается, но к нему осуществляется произвольный доступ (например, система DMS-11 обеспечивает произвольный доступ к статьям индекса, рис. 7.5). В этом случае значение действительного ключа обрабатывается подпрограммой рандомизации (ПР), в результате чего вычисляется адрес записи в файле данных. Между вырабатываемым адресом и физической записью существует однозначное соответствие. Доступ к индексу реализуется через ПР.
Рис. 7.4
Рис. 7.5
Общим для этих двух способов является то, что записи хранятся неупорядоченно по ключу индекса. Поэтому метод и называется индексно-произвольным.
Индексно-произвольный метод доступа позволяет использовать для создания индексного файла любое поле записи, необязательно поле первичного ключа. Наличие дубликатов значений ключей может препятствовать успешному ведению файла. Этот метод доступа имеет два основных недостатка:
Если индекс не упорядочивается, то только с его помощью обработать записи последовательно в соответствии с порядком индекса невозможно.
Поскольку каждой записи соответствует статья индексного файла, последний может иметь довольно большой объем.
Эффективность доступа.
Произвольная обработка. Так как индекс содержит статью для каждой записи, эффективность доступа равна единице. Это справедливо только для действительного ключа.
Последовательная обработка. Поскольку записи базы данных хранятся в произвольном порядке и необязательно в логической последовательности, эффективность последовательной обработки предсказать невозможно. Для частичного решения этой проблемы индекс может быть организован логически последовательно.
Эффективность хранения.
Каждой записи базы данных соответствует статья индекса, поэтому индексный файл может иметь довольно большой объем, что потребует создания нескольких уровней индексации.
7.2.4. Инвертированный метод доступа
Для обеспечения возможности выборки различными прикладными программами по более чем одному типу атрибута или поля записи может возникнуть необходимость построения индексов для различных типов атрибутов. Метод доступа, в основу которого положена такая концепция, называется инвертированным.
Как правило, инвертированный метод доступа применяется только для поиска, хотя в некоторых системах им можно воспользоваться и для обновления. Хранение чаще всего осуществляется с помощью других методов доступа. Загрузка базы данных может, например, выполняться любым из описываемых в настоящей главе методов доступа внешней модели. Каждому «инвертированному» полю соответствует статья в таблице. Статья включает имя поля, его значение и адрес записи. После начальной загрузки базы данных происходит упорядочение статей по имени поля, а групп статей с общим именем поля – по значению поля. Для каждого имени поля можно построить отдельный индекс. Записи с одним и тем же значением поля группируются, а общее для всех записей группы значение используется в качестве указателя этой группы. По мере добавления новых записей создаются статьи в соответствующих индексах для соответствующих значений. При исключении записей статьи индекса в соответствующих индексах для соответствующих значений уничтожаются. На рис. 7.6 приведен пример поиска записей инвертированным методом доступа.
Рис. 7.6
Файл данных инвертируется относительно поля «Номер курса». Каждому инвертированному полю соответствует статья в таблице, называемая также индексом. Статья включает имя поля, его значение и адрес записи. Для любого поля можно построить отдельный индекс, т. е. инвертировать файл относительно этого поля
Эффективность доступа. Доступу к записям базы данных предшествует доступ к индексному файлу (файлам). Поэтому эффективность инвертированного метода доступа зависит от эффективности метода доступа, используемого для обращения к индексу. В любом случае необходимо по меньшей мере одно обращение к индексу и по меньшей мере одно обращение собственно к базе данных. Таким образом, эффективность доступа меньше 0,5. Для обращения к одной записи требуется осуществить минимум два физических обращения. Определение метода, с помощью которого выполняется доступ к индексному файлу, связано с проведением соответствующего анализа. Эффективность доступа значительно повышается, если во время работы базы данных инвертированный индекс постоянно находится в памяти.
Эффективность хранения. Эффективность хранения зависит от метода доступа, применяемого для хранения данных. Если инвертированный метод применяется только для поиска, то высокую эффективность хранения может обеспечить прямой метод доступа. Объем памяти, необходимый для размещения индексного файла, зависит от метода доступа, используемого для запоминания, и от числа полей, подлежащих инвертированию.