- •А.И. Костюк
- •Введение
- •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
6.3. Отображение на сетевую модель данных
Отображение концептуальной модели на сетевую модель данных представляет собой сложный процесс. Здесь также имеется ряд альтернатив, нет очевидного наилучшего решения и требуется выполнение следующих основных этапов:
Формирование обобщенной сетевой модели данных, в которой не учитываются ограничения, накладываемые используемой СУБД.
Трансформация обобщенной сетевой модели с учетом ограничений, накладываемых конкретной СУБД.
Модификация трансформированной модели с учетом «очевидных» соображений, влияющих на производительность.
Упрощение имен ключей.
Реализация взаимосвязей, не отраженных в логической модели, но на самом деле существующих.
1. Формирование обобщенной сетевой модели данных, в которой не учитываются ограничения, накладываемые используемой СУБД.
1.1. Определение взаимосвязей «владелец— член».
В концептуальной модели прямоугольники представляют типы записей, а стрелки – связи между ними. При обсуждении сетевой модели воспользуемся так называемыми стрелками Бахмана. На рис. 6.9 приведена концептуальная модель, изображенная с использованием стрелок Бахмана. Это видоизмененный вариант концептуальной модели, показанной на рис. 5.9.
Рис. 6.9
Концептуальная модель, представленная на рис. 5.9, изображена с помощью стрелок Бахмана. Эту модель мы примем за исходную при разработке логической модели. Здесь сделаны следующие предположения:
1. НАЗВ-КУРСА зависит от СЕМЕСТРА и НОМ-КУРСА. Возможно, что от семестра к семестру НАЗВ-КУРСА с данным НОМ-КУРСА будет изменяться.
2. ЗАЧЕТЫ зависят от СЕМЕСТРА, НОМ-КУРСА и НОМ-СТУДЕНТА. Студент сам определяет, сколько зачетов он сдает по данному курсу в данном семестре.
Присвоим наборам имена:
Набор I– ЗАЧЕТЫ-СТУДЕНТА: владелец – СТУДЕНТ, член – СЕМЕСТР + КУРС + СТУДЕНТ.
Набор II–ЗАЧЕТЫ-ПО-КУРСУ-В-СЕМЕСТРЕ: владелец – СЕМЕСТР+КУРС, член – СЕМЕСТР+КУРС+СТУДЕНТ.
Связь между наборами Iи II осуществляет запись-член СЕМЕСТР+КУРС+СТУДЕНТ.
Набор III – КУРСЫ-СЕМЕСТРА: владелец – СЕМЕСТР, член— СЕМЕСТР + КУРС.
Набор IV – СЕМЕСТРЫ-КУРСА: владелец – КУРС, член – СЕ-МЕСТР+КУРС.
Запись-член СЕМЕСТР+КУРС связывает наборы III и IV. Она одновременно состоит членом наборов III и IV и владельцем набора II.
Преобразование концептуальной модели, приведенной на рис. 5.9, в логическую модель, основанную на сетевой модели данных, осуществляется достаточно просто. Полученная в результате сетевая модель (рис. 6.9) не предполагает использования какой-либо конкретной СУБД.
1.2. Устранение множественного владения.
Из рассмотренного выше мы знаем, что член набора не может иметь более одного владельца в одном и том же наборе. В модели на рис. 6.9 это правило не нарушено, поэтому никаких преобразований здесь не требуется.
2. Трансформация обобщенной сетевой модели с учетом ограничений, накладываемых конкретной СУБД.
Целый ряд СУБД базируется на использовании спецификаций КОДАСИЛ, например системы IDS/11, IDMS, DBMS-10 и DBMS-20. Все четыре конструкции наборов на рис. 6.9 не противоречат спецификациям КОДАСИЛ. Однако, если используемая СУБД не поддерживает все спецификации КОДАСИЛ, могут потребоваться некоторые модификации этой сетевой модели данных.
3. Модификация трансформированной модели с учетом «очевидных» соображений, влияющих на производительность.
Логическая модель на рис. 6.9 удовлетворяет всем функциональным требованиям. Выясним теперь, можно ли улучшить эксплуатационные характеристики создаваемой базы данных, например объединить некоторые записи и за счет этого сократить число наборов, или, наоборот, из соображений обеспечения безопасности данных разнести их в большее число записей, одновременно увеличив число наборов, или внести другие структурные изменения.
В сетевой модели данных в отличие от большинства других моделей АБД должен указывать способы размещения записей. Выбор способа размещения существенно влияет на эксплуатационные характеристики базы данных. Например, экземпляры типа записи СЕМЕСТР + КУРС + СТУДЕНТ могут размещаться либо через набор ЗАЧЕТЫ-СТУДЕНТА, либо через набор ЗАЧЕТЫ-ПО-КУРСУ-В-СЕМЕСТРЕ. Выбор может определяться тем, по какому пути доступ осуществляется быстрее. (Вне зависимости от того, через какой набор размещаются записи, доступ к ним может производиться через любой из двух наборов.)
Указанные проблемы эффективнее решаются на основе анализа количественных характеристик, например частот использования удельных наборов, средних чисел экземпляров каждого типа записей, длин записей. Поэтому окончательный выбор производится на стадии физического проектирования базы данных. Но уже на этапе логического проектирования можно принять некоторые решения, основываясь на перечисленных ниже «очевидных» соображениях, влияющих на эксплуатационные характеристики базы данных.
3.1. Не следует усложнять структуру.
Шаг 1.Можно удалить владельцев или членов набора, которые не содержат собственных данных. Вероятнее всего будут удалены «сгенерированные» записи. На рис. 6.9 запись-владелец в типе набора IV не содержит никаких данных кроме НОМ-КУРСА. Те же данные можно обнаружить в записи-члене СЕМЕСТР + КУРС. Оставлены следующие типы наборов:
Тип набора I – ЗАЧЕТЫ-СТУДЕНТА: владелец – СТУДЕНТ,. член – СЕМЕСТР+КУРС+СТУДЕНТ.
Тип набора II –ЗАЧЕТЫ-ПО-КУРСУ-В-СЕМЕСТРЕ: владелец–СЕМЕСТР+КУРС, член–СЕМЕСТР+КУРС+СТУДЕНТ.
Тип записи-члена СЕМЕСТР+КУРС+СТУДЕНТ осуществляет связь между типами наборов Iи II.
Тип набора III –КУРСЫ-СЕМЕСТРА: владелец–СЕМЕСТР, член –СЕМЕСТР+КУРС.
Шаг 2.Записи-владельцы, участвующие в этом качестве в небольшом числе типов наборов и содержащие только тривиальные данные, могут быть объединены с записями-членами, если их содержимое не слишком часто обновляется. СЕМЕСТР, владелец типа набора III (рис. 6.10), содержит только ДНАЧСЕМ (дата начала семестра) и ДКОНСЕМ (дата окончания семестра) и участвует только в одном типе набора (рис. 6.10). Он вполне может быть объединен с членом данного набора СЕМЕСТР+ -1- КУРС. Полученная в результате модель показана на рис. 6.11. (В действительности даты начала и окончания семестра используются очень редко, и в базе данных их можно не хранить. Эти даты могут храниться в отдельных таблицах.) В типе набора 1 владельца СТУДЕНТ не следует объединять с членом СЕМЕСТР+КУРС+СТУДЕНТ. Тип записи СТУДЕНТ содержит важные сведения о студентах. Комбинированный тип записи из записей СЕМЕСТР и СЕМЕСТР+КУРС (рис. 6.11) также не следует объединять с членом типа набораIIСЕМЕСТР+КУРС+СТУДЕНТ.
Рис. 6.10
Модель, приведенная на рис. 6.11, содержит два типа набора:
Тип набора I – ЗАЧЕТЫ-СТУДЕНТА: владелец – СТУДЕНТ, член – СЕМЕСТР+КУРС+СТУДЕНТ.
Тип набора II– ЗАЧЕТЫ-ПО-КУРСУ-В-СЕМЕСТРЕ: владелец – СЕМЕСТР+КУРС, член – СЕМЕСТР+КУРС+СТУДЕНТ. Тип записи СЕМЕСТР+КУРС+СТУДЕНТ связывает типы наборовI и II.
Рис. 6.11
4. Упрощение имен ключей.
В конструкции набора могут иметь следующие имена ключей (см. левый рис. 6.12):
Рис. 6.12
Изъяв из имени ключа каждой записи-члена часть, входящую в состав ключа записи-владельца, .можно упростить ключи так, как показано на правом рис. 6.12.
После упрощения имен ключей логическая модель (рис. 6.11) приобретает вид, показанный на рис. 6.13. Здесь представлены два типа наборов:
Тип набора I–ЗАЧЕТЫ-СТУДЕНТА: владелец–СТУДЕНТ, член–СЕМЕСТР+ КУРС + СТУДЕНТ.
Тип набора II – ЗАЧЕТЫ-ПО-КУРСУ-В-СЕМЕСТРЕ: владелец – СЕМЕСТР+КУРС, член – СЕМЕСТР+КУРС+СТУДЕНТ. Тип записи СЕМЕСТР+КУРС+СТУДЕНТ связывает типы наборовIи II.
5. Реализация взаимосвязей, которые не отражены в логической модели, но на самом деле существуют.
Вводить какие-либо новые взаимосвязи в представленную на рис. 6.11модель нет никакой необходимости.
Рис. 6.13
Таким образом, на рис. 6.13 получена улучшенная логическая модель, в которой из записи СЕМЕСТР+КУРС+СТУДЕНТ исключены элементы СЕМЕСТР, НОМ-КУРСА и НОМ-СТУДЕНТА (см. рис. 6.11).