- •А.И. Костюк
- •Введение
- •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. Проектирование логической модели данных
При разработке логической модели базы данных прежде всего необходимо решить, какая модель данных наиболее подходит для отображения конкретной концептуальной модели предметной области [4]. Системы управления базами данных поддерживают одну из известных моделей данных или некоторую их комбинацию. Известны три наиболее распространенных модели данных: реляционная, иерархическая и сетевая. Они были детально рассмотрены ранее.
Пусть используется рассматриваемая выше концептуальная модель, приведенная на рис. 5.9.
6.1. Отображение на реляционную модель данных
Реляционная модель данных состоит из ряда отношений (таблиц). При отображении концептуальной модели, приведенной на рис. 5.9, на логическую модель необходимо определить отношения и их атрибуты. Отдельные атрибуты этих отношений являются их первичными ключами.
Каждый прямоугольник на рис. 5.9 представляет отношение и содержит присущие ему атрибуты. Всего здесь показано пять отношений: СТУДЕНТ, КУРС, СЕМЕСТР, СЕМЕСТР+КУРС и СЕМЕСТР+КУРС+СТУДЕНТ.
На табл. 6.1, 6.2, 6.3, 6.4, 6.5 показаны соответствующие отношения и значения их атрибутов.
Таблица 6.1
СТУДЕНТ
НОМ-СТУДЕНТА |
ИМЯ-СТУДЕНТА |
СТАТУС |
ГЛАВНЫЙ |
ВТОРОСТЕПЕННЫЙ |
КУРАТОР |
123456789 |
Дж. Ф. СМИТ |
СТУДЕНТ |
ВЫЧ ТЕХНИКА |
ГИМНАСТИКА |
ДЖ. А. КОР РИГАН |
897654321 |
Ф. X. ФРЭН |
АСПИРАНТ |
ЭЛЕКТРОТЕХНИКА |
ФИЗИКА |
Д. Ф. СЛАТТЕР |
967831201 |
ДЖ. Ф. БАНДИ |
АСПИРАНТ |
БИОХИМИЯ |
РАДИОЛОГИЯ |
А. С. ГОЛДСТАЙН |
Таблица 6.2
КУРС
НОМ-КУРСА |
ВТ601 ВТ603 ВТ605 ВТ618 ВТ623 ЭТ101 ОФ500 |
Таблица 6.3
СЕМЕСТР
СЕМЕСТР |
ДНАЧСЕМ |
ДКСЕМ |
ВЕСЕННИЙ 1998 |
12 января 1998 |
29 апреля 1998 |
ЛЕТНИЙ 1998 |
11 мая 1998 |
16 августа 1998 |
ОСЕННИЙ 1998 |
9 сентября 1998 |
21 декабря 1998 |
ВЕСЕННИЙ 1999 |
10 января 1999 |
30 апреля 1999 |
ЛЕТНИЙ 1999 |
12 мая 1999 |
15 августа 1999 |
ОСЕННИЙ 1999 |
10 сентября 1999 |
20 декабря 1999 |
Таблица 6.4
СЕМЕСТР+КУРС
СЕМЕСТР |
НОМ-КУРСА |
НАЗВ-КУРСА |
ИМЯ-ПРЕП |
ГОРОДОК |
ДЕНЬ-ВРЕМЯ |
ЗДАНИЕ-НОМ-АУДИТОРИИ - |
ЛЕТНИЙ 1999 |
ВТ608 |
КОМПИЛЯТОРЫ |
А. Б. АДАМС |
БРУКЛИН |
ЧЕТВ 8—10 |
ГЛАВН. 601 |
ЛЕТНИЙ 1999 |
ВТ623 |
ПЕРЕКЛЮЧАТЕЛИ И ДЕСЯТИЧНЫЕ СИСТЕМЫ |
ДЖ. -Н. ДОЛМ |
УАЙТ ПЛЕЙНС |
ВТОРН 6—8 |
АССТ389 |
ЛЕТНИЙ 1999 |
ОФ500 |
ПОЛЯ И ВОЛНЫ |
А. Т. ФРИДМАН |
БРУКЛИН |
ПОН 8—10 |
АЛ302 |
ОСЕННИЙ 1999 |
ВТ601 |
ВВЕДЕНИЕ В ВЫЧ. ТЕХНИКУ |
А. Б. АДАМС |
УАЙТ ПЛЕЙНС |
СР 6—8 |
АЛ201 |
ОСЕННИЙ 1999 |
ВТ605 |
АЛГОРИТМЫ И СТРУКТУРЫ ДАННЫХ |
ДЖ. С. ФИНКС |
БРУКЛИН |
ЧЕТВ 8—10 |
ГЛАВН. 605 |
ОСЕННИЙ 1979 |
ВТ623 |
ПЕРЕКЛЮЧАТЕЛИ И ДЕСЯТИЧНЫЕ СИСТЕМЫ |
А. М. ДЖОНС |
ЛОНГ АЙЛЕНД |
ВТОРН 6—8 |
ГЛАВН. 238 |
ОСЕННИЙ 1979 |
ОФ500 |
ПОЛЯ И ВОЛНЫ |
А. Б. АДАМС |
БРУКЛИН |
ЧЕТВ 20—22 |
АССТ389 |
Таблица 6.5
СЕМЕСТР+КУРС+СТУДЕНТ
СЕМЕСТР |
НОМ-КУРСА |
НОМ-СГУДЕНТА |
ЗАЧЕТЫ |
ЛЕТО 1979 |
ВТ608 |
967831201 |
4 |
ЛЕТО 1979 |
ВТ608 |
897645123 |
2 |
ЛЕТО 1979 |
ВТ62Э |
967831201 |
3 |
ЛЕТО 1979 |
ОФ500 |
967831201 |
4 |
ОСЕНЬ 1979 |
ВТ601 |
123456789 |
3 |
ОСЕНЬ 1979 |
ВТ601 |
897645123 |
2 |
ОСЕНЬ 1979 |
ВТ605 |
123456789 |
2 |
ОСЕНЬ 1979 |
ВТ623 |
967831201 |
3 |
ОСЕНЬ 1979 • |
ОФ500 |
897645123 |
3 |
Представление пользователя о таблице СТУДЕНТ иллюстрируется табл. 6.1. Атрибутами этого отношения являются НОМ-СТУДЕНТА, ИМЯ-СТУДЕНТА, СТАТУС, ГЛАВНЫЙ, ВТОРОСТЕПЕННЫЙ и КУРАТОР. Первичным ключом отношения является НОМ-СТУДЕНТА. Значения первичного ключа уникальны, т. е. не существует двух кортежей (строк) с одинаковыми номерами студента.
Отношение КУРС на табл. 6.2 содержит только один атрибут НОМ-КУРСА (номер курса), являющийся ключевым. В эту таблицу включены номера всех курсов, которые преподаются в университете. Номера курсов уникальны.
Отношение СЕМЕСТР на табл. 6.3 состоит из следующих атрибутов: СЕМЕСТР (номер семестра), ДНАЧСЕМ (дата начала семестра) и ДКОНСЕМ (дата окончания семестра). Первичным ключом этого отношения служит номер семестра. Значение номера семестра однозначно определяет дату начала и окончания семестра, например, осенний семестр 1979 г. начинается 10 сентября 1999 г. и заканчивается 22 декабря 1999 г.
Отношение СЕМЕСТР+КУРС (табл. 6.4) связывает отношения СЕМЕСТР и КУРС. Ключевые атрибуты этого отношения — СЕМЕСТР и НОМ-КУРСА. Отношение содержит следующие неключевые атрибуты: НАЗВ-КУРСА, ИМЯ-ПРЕП, ГОРОДОК, ДЕНЬ-ВРЕМЯ и ЗДАНИЕ-НОМ-АУДИТОРИИ. Ключ отношения является составным, так как состоит более чем из одного атрибута. Для данного семестра и данного номера курса существует только по одному значению атрибутов НАЗВ-КУРСА, ИМЯ-ПРЕП, ГОРОДОК, ДЕНЬ-ВРЕМЯ и ЗДАНИЕ-НОМ-АУДИТОРИИ. Эта таблица отражает представление пользователя обо всех курсах, преподаваемых в течение данного семестра и обо всех семестрах, в течение которых преподается данный курс. Например, в осеннем семестре 1999 г. преподаются курсы ВТ601, ВТ605, ВТ623 и ОФ500, при этом курс ВТ623 преподается в течение летнего и осеннего семестров 1999 г. Сочетание значений НОМ-КУРС и СЕМЕСТР однозначно определяет значения неключевых атрибутов.
Наконец, с помощью отношения СЕМЕСТР + КУРС + СТУДЕНТ (табл. 6.5) устанавливается связь между отношениями СЕМЕСТР, КУРС и СТУДЕНТ. Первичный ключ отношения составлен из атрибутов СЕМЕСТР, НОМ-КУРСА и НОМ-СТУДЕНТА. Неключевой атрибут один – ЗАЧЕТЫ. В течение одного семестра преподается несколько курсов. Каждый курс изучает несколько студентов. С другой стороны, в течение данного семестра каждый студент может изучать несколько курсов. Эта таблица позволяет реализовать взаимосвязь «многие ко многим» между семестрами, курсами и студентами.
Пять отношений, приведенных на табл. 6.1, 6.2, 6.3, 6.4, 6.5, отражают пользовательские представления о логической модели базы данных. Эта логическая модель выведена из концептуальной модели, показанной на рис. 5.9. Ряд представлений пользователя характеризуется наличием избыточных ключевых атрибутов. Например, атрибут НОМ-КУРСА встречается в трех из пяти отношений. При их физической реализации избыточность может быть устранена.
Таким образом, отображение концептуальной модели данных на реляционную проводится относительно просто. Каждый прямоугольник концептуальной модели отображается в одно отношение, которое отражает представление пользователя в удобном для него табличном формате. Простота отображения связана с тем, что при разработке концептуальной модели использовался реляционный подход.