- •А.И. Костюк
- •Введение
- •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
4.3.1. Достоинства модели
Простота.Пользователь работает с простой моделью данных. Он формулирует запросы в терминах информационного содержания и не должен принимать во внимание сложные аспекты системной реализации. Реляционная модель отражает представление пользователя, но она не обязательно лежит в основе физической реализации.
Непроцедурные запросы.Поскольку в реляционной схеме понятие навигации отсутствует, запросы не строятся на основе заранее определенной структуры. Благодаря этому они могут быть сформулированы на непроцедурном языке.
Независимость данных.Это свойство является одним из важнейших для любой СУБД. При использовании реляционной модели данных интерфейс пользователя не связан с деталями физической структуры памяти и стратегией доступа. Модель обеспечивает относительно высокую степень независимости данных по сравнению с двумя другими рассматриваемыми моделями. Для эффективного использования этого свойства, однако, необходимо проектировать схему отношений весьма тщательно.
Теоретическое обоснование.Реляционная модель данных основана на хорошо проработанной теории отношений. При проектировании базы данных применяются строгие методы, построенные на нормализации отношений. Для других моделей таких методов проектирования в настоящее время не существует.
4.3.2. Недостатки модели
Хотя в настоящее время существует ряд коммерческих СУБД, базирующихся на реляционной модели данных, их производительность подчас значительно ниже, чем у систем, основанных на иерархической или сетевой модели данных или использующих инвертирование файлов по нескольким ключам. Поэтому центральной проблемой, связанной с применением реляционных СУБД, остается производительность.
4.4. Иерархическая модель данных
В повседневной жизни мы часто имеем дело с иерархическими структурами. Поэтому нетрудно уяснить, что же представляет собой иерархия.
Рассмотрим генеалогическое древо. Родители могут иметь одного или нескольких детей, либо вовсе их не иметь. Дети, в свою очередь, в будущем также могут иметь детей. Генеалогическое древо можно рассматривать как иерархическую структуру, если считать, что из каждого узла удален один родитель. Терминология иерархической модели во многом использует рассмотренную аналогию. Компоненты базы данных, основанной на иерархической модели, показаны на рис. 4.4.
Рис. 4.4
4.4.1. Иерархическая древовидная структура
Иерархическая древовидная структура строится из узлов и ветвей. Узел представляет собой совокупность атрибутов данных, описывающих некоторый объект. Наивысший узел в иерархической древовидной структуре называется корнем. Зависимые узлы располагаются на более низких уровнях дерева. Уровень, на котором находится данный узел, определяется расстоянием от корневого узла (рис. 4.5). (Иерархическое дерево представляет собой перевернутое обычное дерево: корень находится наверху, а ветви растут вниз.)
Рис. 4.5
Узлы и ветви образуют иерархическую древовидную структуру. Узел является совокупностью атрибутов, описывающих объект. Наивысший в иерархии узел называется корневым (это главный тип объекта). Корневой узел находится на первом уровне. Зависимые узлы (подчиненные типы объектов) находятся на втором, третьем и т д. уровнях.
Иерархическая модель данных организует данные в виде иерархической древовидной структуры. Каждый экземпляр корневого узла образует начало записи логической базы данных, т. е. иерархическая база данных состоит из нескольких деревьев. В иерархической модели данных узлы, находящиеся на уровне 2, называются порожденными узла на уровне 1. Узел на уровне 1 называется исходным для узлов на уровне 2. Узлы, находящиеся на уровне 3, считаются порожденными узла уровня 2, который для них является исходным, и т. д.
Иерархическая древовидная структура всегда удовлетворяет следующим условиям:
Иерархия неизменно начинается с корневого узла.
Каждый узел состоит из одного или нескольких атрибутов, которые описывают объект в данном узле.
На низших уровнях могут находиться зависимые узлы. Узел, находящийся на предшествующем уровне, является исходнымдля новыхзависимых узлов.Зависимые узлы могут добавляться как в вертикальном, так и в горизонтальном направлении без всяких ограничений (см. рис. 4.4).(Исключение.На первом уровне может находиться только один узел, называемый корневым.)
Каждый узел, находящийся на уровне 2, соединен с одним и только одним узлом на уровне 1. Каждый узел, находящийся на уровне 3, соединен с одним и только одним узлом, находящимся на уровне 2, и т. д. Поскольку между двумя узлами может существовать лишь одна дуга (соединение), дуги не нуждаются в метках.
Исходный узел может иметь в качестве зависимых один или несколько порожденных узлов. Если узел не имеет ни одного зависимого узла, он не является исходным.
Доступ к каждому узлу, за исключением корневого, происходит через исходный узел. Выборка каждого узла, представленного в иерархии, осуществляется через его исходный узел, поскольку это в действительности отражает семантику данных. В связи с этим в иерархической модели данных пути доступа к каждому узлу являются уникальными (рис. 4.6). (Например, доступ к узлу I может осуществляться только по пути A-G-H-I,а доступ к узлу D— только по пути A-B-D.)Поэтому иерархическая модель данных обеспечивает только линейные пути доступа.
Возможно существование любого числа экземпляров узлов каждого уровня. Каждый экземпляр узла (за исключением корневого) соединен с экземпляром исходного узла, т. е.может существовать много экземпляров узла А. Каждый экземпляр узла А начинает логическую запись. Для каждого экземпляра узла А может существовать нуль, один или несколько экземпляров узла В и т. д.
Рис. 4.6
Рассмотрим в качестве примера информацию, содержащуюся в отношениях ПАЦИЕНТ, ХИРУРГ, ПАЦИЕНТ - И - ХИРУРГ и ПРЕПАРАТ. Информация в иерархической модели данных может быть представлена различными способами. Один из вариантов показан на рис. 4.7. Корневой узел представляет объект ПАЦИЕНТ. Объекты ХИРУРГ, ОПЕРАЦИЯ и ПРЕПАРАТ объединены в порожденный узел.
Рис. 4.7
Для каждого пациента имеется экземпляр корневого сегмента. В рассматриваемый момент в базе данных содержатся записи для пациентов Джона Уайта (1111), Мэри Джонс (1234), Чарльза Брауна (2345), Хола Кейна (4876), Пола Кошера (5123) и Энн Худ (6845). Экземпляр записи базы данных для Джона Уайта (1111) показан на рис. 4.8. Тип узла второго уровня, приведенный на рис. 4.7, на рис. 4.8 имеет два экземпляра. Иерархическая модель позволяет для каждого пациента представить сведения о нескольких операциях и нескольких хирургах.
Иерархическая модель, представленная на рис. 4.7, содержит еще пять записей базы данных для пациентов Мэри Джонс, Чарльза Брауна, Хола Кейна, Пола Кошера и Энн Худ.
Рис. 4.8
Запись базы данных содержит сведения о Джоне Уайте. Здесь имеются два экземпляра зависимого (порожденного) узла, в которых содержатся сведения об операциях удаления камней из желчного пузыря и из почек.
Экземпляр записи базы данных для пациента Хола Кейна показан на рис. 4.9.
Рис. 4.9
Запись базы данных содержит сведения о пациенте Холе Кейне. Имеется один экземпляр зависимого узла, в котором содержатся сведения об операции удаления желчного пузыря.
Информация о ПАЦИЕНТЕ, ХИРУРГЕ, ПАЦИЕНТЕ - И - ХИРУРГЕ и ПРЕПАРАТЕ может быть представлена с помощью другой версии иерархической модели данных (рис. 4.10).
Рис. 4.10
Представление с помощью иерархической модели данных базы данных ХИРУРГ, в которой содержатся сведения обо всех операциях, проведенных хирургами. Здесь узел ХИРУРГ находится на более высоком уровне, чем узел ПАЦИЕНТ. Такая структура отражает намерение АБД реализовать между ХИРУРГОМ и ПАЦИЕНТОМ взаимосвязь «один ко многим».
Корневой узел соответствует объекту ХИРУРГ. Для каждого хирурга имеется экземпляр корневого узла. В некоторый момент времени база данных содержит записи для хирургов Бет Литл (145), Дэвида Роузена (189), Чарльза Филда (243), Майкла Даймонда (311) и Патриции Голд (467). Запись базы данных для Бет Литл (145) показана на рис. 4.11.
Иерархическая модель данных позволяет представлять сведения о нескольких пациентах для каждого хирурга.
Рис. 4.11
Экземпляр записи иерархической базы данных, которая описывается моделью данных, представленной на рис. 4.10. Запись базы данных содержит сведения о хирурге Бет Литл. Зависимый (порожденный) узел имеет три экземпляра, в которые включены сведения о пациентах Джоне Уайте, Холс Кейне и Поле Кошере.
Иерархические модели данных, представленные на рис. 4.7 и 4.10, отличаются друг от друга, хотя и являются моделями одной и той же предметной области. Различия между ними определяются способами представления взаимосвязей между объектами. На рис. 4.7 ПАЦИЕНТ находится на более высоком уровне иерархии, чем ХИРУРГ. Это означает, что АБД трактует взаимосвязь между ПАЦИЕНТОМ и ХИРУРГОМ как взаимосвязь «один ко многим». На рис 4.10 ХИРУРГ находится на более высоком уровне иерархии по сравнению с ПАЦИЕНТОМ. Здесь АБД рассматривает взаимосвязь между ХИРУРГОМ и ПАЦИЕНТОМ как взаимосвязь «один ко многим». Выбор иерархической модели данных должен определяться операционными характеристиками.
С помощью модели, представленной на рис. 4.12, могут быть изображены другие взаимосвязи между теми же данными.
Рис. 4.12
Представление с помощью иерархической модели данных базы данных ХИРУРГ, в которой содержатся сведения обо всех днях проведения операций и обо всех операциях, проведенных в конкретный день.
Экземпляр записи базы данных, описываемой моделью рис. 4.12, изображен на рис. 4.13. В этом примере для каждого экземпляра узла второго уровня имеется только один экземпляр узла третьего уровня. Однако вполне вероятно, что однажды хирург сделает операцию более чем одному пациенту. В рассматриваемой упрощенной модели имеется только по одному узлу второго и третьего уровня, хотя иерархическая модель позволяет для каждого хирурга представить несколько дат проведения операций и несколько пациентов, перенесших операцию в указанный день.
Рис. 4.13
Экземпляр записи иерархической базы данных, модель которой представлена на рис 4.12. Запись базы данных содержит сведения о хирурге Бет Литл. В 1977 г. Бет Литл провела по одной операции в день: 1 января, 10 мая и 5 ноября. 1 января пациентом был Джон Уайт, 10 мая – Пол Кошер, 5 ноября – Хол Кейн.