- •Основные понятия
- •1.1.Состав субд
- •1.2. Классификация баз данных
- •1. 3. Архитектура баз данных
- •Глава 2 проектирование баз данных
- •2.1. Этапы проектирования базы данных
- •2.2. Моделирование локальных представлений
- •3.1 Иерархические модели
- •3.2. Сетевые модели
- •3.3. Реляционные базы данных
- •Реляционные основы концептуального проектирования
- •4.1. Нормализация отношений
- •4.2. Проектирование реляционных баз данных (рбд)
- •5. Агрегированные объекты могут быть сведены в одно реляционное отношение в том случае, если те объекты, с которыми связан каждый из них, полностью совпадают (рис.4.13).
- •Упражнения к главе 4
- •Операции над отношениями
- •5.1. Выполнение операций над отношениями
- •На рис.5.1 приведены примеры операций реляционной алгебры над отноше
- •Реляционные языки запросов
- •6.1. Язык sql (Structured Query Language)
- •6.2. Операторы манипулирования данными
- •Поставщики (s)Tаблица 6.1
- •6.3.Выборки
- •Результат: номер поставщикасостояние
- •Результат: номер_деталивес
- •Р6 Шайба Красный 19 Липецк
- •6.4.3Апросы, использующие соединения
- •6.5.Подзапросы
- •6.6. Подзапросы с несколькими уровнями вложения
- •6.7. Коррелированный подзапрос.
- •6.8. Квантор существования. Запрос, использующий exists
- •6.9. Стандартные функции
- •6.10. Использование группировок (group by)
- •6.11. Объединение с использованием union
- •6.12. Многоаспектный запрос
- •6.13. Операции обновления
- •6.14. Представления
- •Упражнения к главе 6
- •Субд foxpro 2.0
- •7.1. Системный интерфейс FoxPro, главное меню
- •7.2. Архитектура субд FoxPro 2.0
- •Типы и размеры полей (в байтах).
- •Поле дат 8.
- •7.3. Основные команды FoxPro 2.0
- •7.4. Создание и редактирование бд
- •Антонов 4
- •7.5. Команды просмотра и редактирования записей
- •7.6. Создание командных файлов
- •Сведения о сотрудниках
- •7.7. Команды управления
- •7.8. Циклы в FoxPro
- •7.9. Построение экранных форм
- •Карта ввода
- •Карта ввода
- •7.10. Работа с массивами
- •Фио Должность Оклад
- •7.11. Построение меню
- •Пример составления меню
- •7.12. Модульное программирование
- •7.13.Изобразительные средства субд
- •7.14. Функции в FoxPro
- •7.15. Работа с несколькими бд, связывание бд
- •7.16. Работа с окнами
- •Упражнения к главе 7
- •Создание базы данных в среде Microsoft Access
- •8.1. Создание и открытие базы данных
- •8.2. Конструирование форм в среде Microsoft Access
- •8.3. Связывание таблиц в Microsoft Access
- •8.4. Запросы к связанным таблицам
- •8.5. Отчеты
- •8.6. Рисунки и другие объекты в среде Microsoft Access
- •Приложение 1 База данных поставок
- •Приложение 2 Список вопросов для повторения учебного материала
- •Приложение 3 Задания для самостоятельного выполнения
- •Список литературы
- •Оглавление
- •Глава 7. Субд foxpro 2.0................................................…….........………… 54
- •Глава 8. Создание базы данных в среде Microsoft Access .........……................88
Реляционные основы концептуального проектирования
Один из эффективных методов разработки концептуальной модели предметной области - введение понятий и концепций реляционной модели данных.
4.1. Нормализация отношений
Основное понятие, заимствованное из реляционной модели данных, введенное при разработке концептуальной модели, это нормализация отношений. В процессе нормализации элементы данных группируются в таблицы, представляющие объекты и их взаимосвязи.
Первый шаг при нормализации - образовании двумерной таблицы. Для этого нужно исключить повторяющиеся группы. Таким образом, файл, являющийся плоским всюду, кроме повторяющейся группы, может быть нормализован путем выделения этой повторяющейся группы в отдельную таблицу, т.е.
22
в плоский файл. Новому файлу (таблице) присваивается свое имя. Пример нормализации приведен на рис. 4.1.
ЗАКАЗ_НА_ЗАКУПКУ
Номер
Номер_ Дата_ Дата_
Итого Заказа
поставщика заказа поставки
№
партии Цена
Количество товара
а
Номер
Номер_
Дата_ Дата_ Итого заказа
поставки заказа поставки
Заказапоставки заказа поставки
заказа
заказа Номер_
№партии
Цена Количество Заказа
товара
б
Рис.4.1. Отношение “ЗАКАЗ_НА_ЗАКУПКУ”:
а. ненормализованное отношение, б. нормализованные отношения
Новый файл должен иметь ключи, по которым однозначно определяется любой кортеж. Элемент данных “Номер_заказа” повторяется в файле “Статья_закупки” и совместно с элементом данных “Номер_партии_товара” образует однозначный идентификатор кортежа.
Каждый кортеж должен иметь ключ - идентификатор. Иногда кортеж может идентифицироваться одним атрибутом, а иногда несколькими. Ключ должен обладать двумя свойствами:
1. Кортеж должен однозначно определяться значением ключа.
2. Отсутствие избыточности: никакой атрибут нельзя удалить из ключа, не нарушая при этом свойства однозначной идентификации.
Чтобы не чертить таблицы можно использовать и такие записи:
ЗАКАЗ_НА_ЗАКУПКУ (НОМЕР_ЗАКАЗА, НОМЕР_ПОСТАВЩИКА,
ДАТА_ЗАКАЗА, ДАТА_ПОСТАВКИ, ИТОГО)
СТАТЬЯ_ЗАКУПКИ (НОМЕР_ЗАКАЗА, НОМЕР_ПАРТИИ_ТОВАРА, ЦЕНА,
КОЛИЧЕСТВО).
В описанном процессе нормализации данные свертываются в двумерные таблицы со столбцами простейшей структуры. При этом получается так называемая первая нормальная форма.
Первая нормальная форма (1НФ).
Отношение R находится в 1НФ тогда и только тогда, когда все входящие в него домены содержат только атомарные (неповторяющиеся) значения.
23
Функциональная зависимость (ФЗ). Задавая отношения над элементами данных необходимо выяснить, какие из атрибутов объекта являются зависимыми. Термин ФЗ означает следующее: атрибут В отношения R функционально зависит от атрибута А того же отношения, если в каждый момент времени каждому значению атрибута А соответствует не более чем одно значение атрибута В, т.е. если в какой-то момент времени известно значение А, то можно получить и значение В.
Пример 4.1.
СЛУЖАЩИЙ (НОМЕР СЛУЖАЩЕГО. ИМЯ_СЛУЖАЩЕГО, ЗАРПЛАТА,
HOMEP_ПРОEKTA, ДАТА_ОКОНЧАНИЯ)
Атрибут НОМЕР_СЛУЖАЩЕГО не является функционально зависимым от атрибута ЗАРПЛАТА, т.к. несколько служащих могут иметь одинаковую зарплату, то же самое с атрибутами HOMEP_ПPOEKTA и ДАТА_ОКОНЧАНИЯ. На рис.4.2 приведены функциональные зависимости между атрибутами отношенияСЛУЖАЩИЙ.
Рис. 4.2. Функциональные зависимости отношения "СЛУЖАЩИЙ"
Здесь А—>В, означает, что А определяет В, если А принимает значение аi, то В принимаетзначение bj. Звездочки напротив названий атрибутов соответствуют основным атрибутам, т.е. атрибутам, которые входят хотя бы в один из возможных ключей.
Атрибут может функционально зависеть не от какого-то одного атрибута, а от целой группы атрибутов (рис.4.3).
Пример 4.2.
ДЕЯТЕЛЬНОСТЬ_ПРОГРАММИСТА (НОМЕР ПРОГРАММИСТА,
НОМЕР_ПРОГРАММЫ, ИМЯ_ПРОГРАММИСТА, ИМЯ_ПРОГРАММЫ,
КОЛИЧЕСТВО_РАБОЧИХ_ЧАСОВ)
*Номер_программиста
*Номер_программы
*Имя_программиста
*Имя_программы
Количество_рабочих_часов
Рис.4.3.Функциональные зависимости отношения
“ДЕЯТЕЛЬНОСТЬ_ПРОГРАММИСТА”
24
Полная функциональная зависимость. Атрибут (или набор атрибутов) В из отношения R называется полностью зависимым от другого набора атрибутов А отношения R, если В функционально зависит от всего множества А, но не зависит ни от какого подмножества А.
Например, в отношении ДЕЯТЕЛЬНОСТЬ_ПРОГРАММИСТА атрибут КОЛИЧЕСТВО_РАБОЧИХ_ЧАСОВ является полностью зависимым от составного ключа (НОМЕР_ПРОГРАММИСТА, НОМЕР_ПРОГРАММЫ).
Вторая нормальная форма (2НФ). Отношение R задано во 2 НФ, если оно является отношением в 1 НФ, и каждый атрибут, не являющийся основным атрибутом в этом отношении, полностью зависим от любого возможного ключа этого отношения R. Отношение на фис7 4.3 задано во 2НФ, потому что атрибут КОЛИЧЕСТВО_РАБОЧИХ_ЧАСОВ -единственный атрибут, не являющийся основным, полностью зависит от каждого возможного ключа.
Следующее отношение (рис.4.4) не является отношением во 2НФ:
ИСТОЧНИК_СНАБЖЕНИЯ (НОМЕР_ПОСТАВЩИКА, НОМЕР_ПАРТИИ ТОВАРА,
ИМЯ_ПОСТАВЩИКА, СВЕДЕНИЯ_О_ПОСТАВЩИКЕ, ЦЕНА)
Рис. 4.4. Отношение "ИСТОЧНИК_СНАБЖЕНИЯ "
У этого отношения только один возможный ключ. ИМЯ_ПОСТАВЩИКА не входит в ключ, т.к. одной и той же форме в разных районах могут быть присвоены различные номера поставщика.
Атрибуты ИМЯ_ПОСТАВЩИКА и СВЕДЕНИЯ_О_ПОСТАВЩИКЕ не будучи основными, функционально зависят от атрибута НОМЕР_ПОСТАВЩИКА, который является подмножеством составного ключа. Это приводит к неудобствам заполнения базы. Для устранения неудобств необходимо расщепить исходное отношение (рис.4.4) на два отношения, заданныево 2НФ:
* Номер_поставщика * Номер_поставщика
Имя_поставщика * №партии_товара
Сведения_о_поставщике Цена
25
В общем случае каждый атрибут должен полностью зависеть от всего ключа; в противном случае его следует выделить в отдельное отношение.
Третья нормальная форма (3 НФ).На последнем шаге ликвидируется так называемая транзитивная зависимость. Пусть А, В и С - три атрибута. Если С зависит от В, а В - от А, то С зависит от А. Если при этом обратное соответствие неоднозначно, т.е. А не зависит от В или В не зависит от С, то говорят, что С транзитивно зависит от А.
Например, на рис.4.1 атрибут ДАТА_ОКОНЧАНИЯ зависит от атрибута НОМЕР_ПРОЕКТА, который, в свою очередь, зависит от атрибута НОМЕР_СЛУКЖАЩЕГО. Таким образом ДАТА_ОКОНЧАНИЯ транзитивно зависит от атрибута НОМЕР_СЛУЖАЩЕГО. Это отношение можно привести к ЗНФ (рис.4.5).
Рис.4.5. Отношения, представленные в ЗНФ
На рис.4.6 приведен пример ненормализованного отношения "Успеваемость студентов", включающего целую группу атрибутов, а на рис.4.7 - отношения после нормализации
*Код_группы
Число_студентов
*ФИО_студента
Год_рождения
Адрес
*Код_предмета
Наименование
Дата_сдачи
Оценка
Рис.4.6. Ненормализованное отношение “Успеваемость студентов”
26
26
Код_группы ФИО_студентов
Количествоо_студентов Год_рождения
Адрес
Группа
Код_предмета ФИО_студента
Наименование Код_предмета
Дата_сдачи
Оценка
Рис.4.7. Нормализация отношения “Успеваемость студентов”
Кроме приведенных трех нормальных форм существуют еще 4 и 5 - е нормальные формы, но на практике они встречаются довольно редко и поэтому при разработке концептуальной модели процесс нормализации можно завершить получением ЗНФ (рис.4.8).
Все отношения (нормализованные и ненормализованные)
Рис.4.8. Уровни нормализации
При этом, если отношение находится в ЗНФ, то оно соответственно находится и во 2НФ и в 1НФ, если отношение находится во 2НФ, то оно находится и в 1НФ.
Процедура нормализации - обратима, т.е. всегда можно использовать ее результат для обратного преобразования, т.к. в процессе нормализации информация не утрачивается. 27