- •А.И. Костюк
- •Введение
- •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.3. Методы доступа внешней модели (представления пользователя)
Методы доступа, описывающие логические взаимосвязи, называются методами доступа внешней модели. На основе модели данных, используемой СУБД (например, реляционной, иерархической, сетевой или какого-либо их сочетания), могут быть получены различные представления пользователя (внешние модели), описывающие взаимосвязь (взаимосвязи) между различными частями физической записи.
Методы доступа внутренней модели обеспечивают вхождение в базу данных, а методы внешней модели выполняют дальнейший поиск записей базы данных или их частей. С помощью взаимосвязей между записями методы доступа внешней модели осуществляют их хранение или поиск. Взаимосвязи между записями определяются моделью данных, используемой конкретной СУБД в качестве основной структуры данных. Для отыскания записи можно воспользоваться несколькими методами доступа внешней модели, но для хранения – только одним.
Чтобы выяснить взаимосвязи между двумя записями, рассмотрим такую ситуацию.
Предположим, имеются две записи Х и Y. Запись Х уже хранится в базе данных, а запись Y должна в ней храниться. Или другой случай: запись Х найдена, а запись Y необходимо найти. При наличии какой-либо взаимосвязи между двумя записями, Х и Y, для иерархической и сетевой моделей данных она может задаваться следующими способами:
1. Взаимосвязь полей упорядочения. Две записи связаны по полю упорядочения ключа, если поле упорядочения ключа записи Y следует за полем упорядочения ключа записи X.
2. Взаимосвязь по подчиненности. Между записями Х и Y существует взаимосвязь по подчиненности, если запись Y – подчиненная по отношению к записи X.
Иерархическая модель данных. Запись Y может быть порожденной, а запись Х – исходной.
Сетевая модель данных. Y может быть записью-членом, а Х – записью-владельцем.
3. Взаимосвязь по порождению. Это – взаимосвязь по подчиненности, здесь Х и Y меняются ролями.
Иерархическая модель данных. Найденная запись Х может быть порожденной, а запись Y, которую необходимо найти, – исходной.
Сетевая модель данных. Найденная запись Х может быть записью-членом, а запись Y, которую необходимо найти, – записью-владельцем.
4. Взаимосвязь «рядом». Эта взаимосвязь просто определяет необходимость хранения записи Y рядом с записью X.
Иерархическая модель данных. Наличие или отсутствие между записями Х и Y взаимосвязи полей упорядочения, взаимосвязи по подчиненности или взаимосвязи по порождению не играет никакой роли.
Сетевая модель данных. Наличие или отсутствие между записями Х и Y взаимосвязи полей упорядочения, взаимосвязи по подчиненности или взаимосвязи по владению не играет никакой роли.
Существуют четыре типа методов доступа внешней модели, основанных на четырех типах взаимосвязей между записями. Их следует оценивать с точки зрения организации как хранения, так и поиска. Мы рассмотрим методы доступа внешней модели для иерархической и сетевой моделей данных.
1. Метод доступа с использованием полей упорядочения. Подлежащая хранению запись Y – это запись, поле упорядочения которой следует за полем упорядочения записи X.
Иерархическая модель данных. Записи Х и Y принадлежат к одному и тому же типу узла. При отсутствии экземпляра узла, с которым можно установить взаимосвязь, понятие следующего по порядку экземпляра теряет смысл.
Сетевая модель данных. Х и Y принадлежат к одному и тому же типу записи. При отсутствии экземпляра записи, с которым можно установить взаимосвязь, понятие следующего по порядку экземпляра .теряет смысл. Перечислим методы доступа, используемые для установления взаимосвязей на основании поля упорядочения.
К предшествующему.
Иерархическая модель данных. Либо включить (хранить), либо найти экземпляр узла Y, PRIOR (ПРЕДШЕСТВУЮЩИЙ) экземпляру узла X.
Сетевая модель данных. Либо включить (хранить), либо найти экземпляр записи Y, PRIOR (ПРЕДШЕСТВУЮЩИЙ) экземпляру записи X.
К следующему.
Иерархическая модель данных. Либо включить (хранить), либо найти экземпляр узла Y, NEXT (СЛЕДУЮЩИЙ) за экземпляром узла X. Сетевая модель данных. Либо включить (хранить), либо найти экземпляр записи Y, NEXT (СЛЕДУЮЩИЙ) за экземпляром записи X.
2. Метод доступа по подчиненности. Метод доступа по подчиненности может использоваться для хранения и поиска подчиненных узлов для иерархической модели данных и записей для сетевой модели данных. Можно определить следующие условия (рис. 7.8).
Рис. 7.8
Условия: первый, последний, упорядоченный (следующий и предыдущий), «нет условий». Методы доступа по подчиненности могут использоваться как для хранения, так и для поиска порожденных узлов иерархической модели данных и записей сетевой модели данных.
Первый.
Иерархическая модель данных. В результате включения порожденный узел Y – первый порожденный исходного узла X.
Сетевая модель данных. В результате включения запись-член Y – первый член записи-владельца X.
Последний.
Иерархическая модель данных. В результате включения порожденный узел Y – последний порожденный исходного узла X.
Сетевая модуль данных. В результате включения запись-член Y – последний член записи-владельца X.
Упорядоченный.
Иерархическая модель данных. Порожденный узел должен включаться в соответствии с положением ключа в упорядоченной последовательности ключей. Поэтому порожденный узел с наименьшим значением поля упорядочения будет логически первым.
Сетевая модель данных. Запись-член должна вводиться в соответствии с положением ключа в упорядоченной последовательности ключей. Поэтому запись-член с наименьшим значением поля упорядочения будет логически первой.
Нет условий.
Система управления базами данных не будет поддерживать порядка подчинения.
Наиболее часто методы доступа внешней модели реализуются с помощью указателей. Существуют указатели трех типов:
1. Прямой указатель (рис. 7.9), который включает действительный адрес блока на диске, содержащего «указываемую» запись Y; он хранится в записи X, «указывающей» на запись Y.
Рис. 7.9
2. Относительный указатель (рис. 7.10) представляет собой логический указатель. Это идентификатор, который может быть отображен в действительный адрес блока на диске. Первой частью указателя такого типа является номер страницы базы данных. Его можно преобразовать в значение смещения страницы относительно начала области. Вторая часть указателя содержит значение смещения относительно нижней границы страницы, определяющее действительное положение на странице.
Рис. 7.10
3. Символический указатель (рис. 7.11). Ключ «указываемой» записи Y хранится в «указывающей» на нее записи X. Поиск записи осуществляется методом доступа внутренней модели.
Рис. 7.11
Все эти указатели – прямой, относительный и символический – имеют свои недостатки и преимущества.
Преимущества и недостатки прямого указателя.
Преимущества. Эффективность доступа – наилучшая. Если известен прямой адрес записи, для ее поиска достаточно одного обращения. В большинстве случаев прямой указатель короче соответствующего символического адреса.
Недостатки. Прямой указатель зависит от устройства. При пересылке записи необходимо обновление всех указывающих на нее прямых указателей.
Преимущества и недостатки относительного указателя.
Преимущества. Преимущество относительного указателя перед прямым состоит в том, что при пересылке файлов с устройства (или, в данном случае, просто при копировании) единственное, что должно быть известно СУБД, это размещение начального адреса. Необходимость в изменении какой-либо другой информации отсутствует. По сравнению с символическим указателем относительный имеет двойное преимущество: преобразование ключа в указатель требует очень мало процессорного времени, и, как правило, размеры такого указателя значительно меньше. Относительный ключ представляет собой конкатенацию номера страницы базы данных и номера строк. СУБД и монитор вычисляют номер страницы относительно начала файла. После доступа к странице СУБД использует номер строки в качестве отрицательного смещения относительно нижней границы страницы. Это смещение содержит еще одно, определяющее точное размещение на странице.
Недостатки. Хотя относительный указатель и не зависит от устройства, он по-прежнему основан на заранее известной позиции. С другой стороны, в случае использования символического ключа допускается пересылка записей в любое другое место. При этом изменять следует лишь алгоритм, генерирующий адрес. Таким образом, в системе с символическими указателями нет необходимости в обновлении указывающих на пересылаемую запись символических указателей.
Преимущества и недостатки символического указателя.
Преимущества. Символический указатель не зависит от устройства. При пересылке записи нет необходимости в обновлении указывающих на нее символических указателей.
Недостатки. Эффективность доступа может и не быть наивысшей. Адрес искомой записи должен определяться из значения символического указателя. Символический указатель, как правило, длиннее прямого указателя.