- •Введение
- •1. Концепция информационных систем
- •1.1. Информация и данные предметных областей
- •1.2. Структура банка данных
- •1.2.1. База данных
- •1.2.2. Система управления базами данных
- •1.2.3. Словарь данных
- •1.2.4. Администратор базы данных и его функции
- •1.3. Контрольные вопросы
- •2. Инфомационное моделирование предметных областей для баз данных
- •2.1. Отображение явлений реального мира данными
- •2.2. Инфологическое моделирование по
- •2.3. Трехуровневое представление информационных объектов
- •2.4. Структурные элементы для моделирования данных
- •2.5. Ключи бд
- •2.6. Интеграция полей бд в отношения
- •2.7. Требования интеграции полей в отношения
- •2.8. Обобщенная структура модели данных в бнд
- •2.9. Er-модель бд
- •2.10. Формирование связей сущностей
- •Способ 1. Определение связи сущностей введением дополнительной сущности
- •Способ 2. Определение связей сущностей добавлением в тип сущности общих атрибутов
- •2.11. Бинарные отношения сущностей
- •2.12. Формы представления структур данных
- •2.13. Организация систем бд
- •2.14. Средства поддержки бд
- •2.15. Виды моделей данных для бд
- •Иерархическая модель данных
- •Сетевая модель данных
- •Реляционная модель данных
- •Контрольные вопросы
- •3. Системы управления базами данных
- •3.1. Функции и состав универсальной субд
- •3.2. Лингвистическое обеспечение субд
- •3.3. Независимость прикладных программ от данных
- •3.4. Операции над данными
- •Селекция данных
- •Обработка данных
- •Запросы к бд
- •3.5. Схема реализации запроса в БнД
- •Распределенная обработка данных
- •Комбинированная обработка данных
- •3.7. Целостность и ограничения целостности данных
- •3.8. Защита данных в бд
- •Контрольные вопросы
- •4.2.2. Вторичный ключ
- •4.3. Функциональные и многозначные зависимости
- •4.3.1. Функциональные зависимости
- •X y (X влечет y).
- •4.3.2. Аксиомы функциональных зависимостей
- •Контрольные вопросы
- •5. Реляционная алгебра
- •5.1. Операции над отношениями
- •5.2. Оператор "объединение" (union)
- •5.3. Оператор "вычитание" (difference)
- •5.4. Оператор "пересечение" (intersection)
- •5.5. Оператор "проектирование" (proj)
- •5.6. Оператор "выбор" (sel)
- •Комбинированный запрос с операторами proj и sel
- •5.7 Оператор "соединение" (join)
- •Запрос с соединением по одному полю
- •Алгоритм реализации
- •Запрос с соединением по нескольким полям
- •Алгоритм реализации
- •Оператор "соединение по условию"
- •5.8. Оператор "умножение" (product)
- •Запрос с оператором умножения
- •Алгоритм реализации
- •5.9. Оператор "деление" (division)
- •5.10. Оптимизация алгоритмов реализации запросов
- •Контрольные вопросы
- •6. Нормализация реляционных бд
- •6.1. Задачи нормализации Бд
- •6.2. Первая нормальная форма
- •6.3. Декомпозиция реляционных таблиц
- •Проблема дублирования, операторы реляционной алгебры для декомпозиции и объединения таблиц
- •Присоединенные записи
- •Теорема Хита
- •Критерий полной декомпозиции с исключением дублирования
- •6.4. Вторая нормальная форма
- •6.5. Третья нормальная форма
- •6.6. Экстранормализационные формы
- •Нормальная форма Бокса-Кодда
- •Четвертая нормальная форма
- •Пятая нормальная форма
- •6.7. Методические аспекты реализации нормализации
- •Контрольные вопросы
2.5. Ключи бд
В БД для обеспечения поиска конкретных записей искомого объекта среди множества типов полей выделяется уникальное поле, являющееся идентифицирующим, которое называется первичным ключом таблицы. Посредством ключей идентифицируются другие поля, называемые атрибутами ключа. В таблицах первичный ключ обычно подчеркивается.
Первичный ключ не должен иметь избыточности. Это означает, что при удалении какого-либо атрибута из ключа должна быть неизбежной потеря однозначности идентификации.
При формировании ключа возможно использование нескольких полей. Ключ, сформированный из совокупностей полей, называется сцепленным ключом. Он обозначается в виде суммы и подчеркивается. Соответствующие записи называются записями сложной структуры в отличие от записей с ключами из одного поля, называемых записями простой структуры.
Пример простого ключа приведён на Рис. 0 .2. От ключа исходят связи к остальным полям.
Рис. 0.2
Пример сцепленного ключа показан на . Здесь первичный ключ состоит из двух полей: №Рейса + Дата. Такой ключ обрабатывается как одно поле.
вылета
Рис. 0.3
Поле, выбранное в качестве ключа и неоднозначно характеризующее запись, называется вторичным ключом. Вторичные ключи используются для выборки и БД совокупностей записей, удовлетворяющих какому-либо заданному свойству.
2.6. Интеграция полей бд в отношения
БД могут содержать сотни и тысячи различных типов полей. Для N типов полей в одной БД может быть N(N-1) связей. В результате в больших БД возможно более миллиона связей, что серьезно усложняет и резко замедляет быстродействие информационных систем и оперативность взаимодействия пользователей с такими БД.
С целью повышения эффективности функционирования БнД и для уменьшения количества связей поля в БД интегрируются, т.е. объединяются в записи с выделением ключевых полей.
В больших БД записи дополнительно группируются в отдельные небольшие структуры, между которыми может быть некоторое число связей.
При объединении полей в записи целесообразно выполнять следующие правила:
записи и поля должны быть поименованы; повтор их имен не допускается. Запись может иметь имя одного из включенных полей
в записях выделяются ключи. Первичный ключ каждой записи подчеркивается. Связи вторичных ключей отображаются двойными стрелками;
допускается упрощенное отображение схемы с представлением только типов записей и их ассоциаций без выделения типов полей и ключей.
2.7. Требования интеграции полей в отношения
При отсутствии заранее фиксированного набора типов записей группировка атрибутов в отношения допускает большое количество различных вариантов. Естественно, актуальна проблема выбора наилучшего. Рациональные варианты группировки атрибутов в отношения должны удовлетворять следующим требованиям:
каждая запись должна иметь простую структуру, т.е. иметь простой ключ, и лишь некоторые записи- сложную структуру;
лаконичность ключей, выбранных для отношений;
обеспечение свободы выполнения операций включения, удаления и модификации данных в БД;
минимальность реструктурирования отношений при введении новых типов данных.
Неправильная интеграция полей в отношения приводит к аномалиям манипулирования данными, т.е. к затруднениям выполнения операций включения, удаления и модификации данных.
Пример.
Рассмотрим в реляционной БД отношение типа:
(2.6) Поставка(Индекс, ИмяПоставщика, Адрес, Товар, Цена)
Из структуры видно, что в каждом экземпляре отношения типа (2.6) будет повторяться адрес поставщика. Это приводит к следующим аномалиям:
аномалия модификации. При изменении адреса поставщика необходима его коррекция во всех соответствующих кортежах. Вследствие возможных неточностей корректировок адреса возникнет противоречивость БД, т.е. будет нарушение ее целостности;
аномалия удаления. При прекращении поставок, например, по окончании отчетного периода, от одного из поставщиков и адекватном удалении всех соответствующих кортежей с прекращенными поставками произойдет потеря реквизитов поставщика. Это означает, что будет потеряны адрес, имя поставщика и т.п., хотя, например, заключенный с ним договор еще в силе, и просто очередная поставка будет позже. В такой ситуации система не ответит на запрос типа: "С какими поставщиками заключены договоры?"
3) аномалия включения. При заключении договора с новым поставщиком, от которого еще нет поставок, нельзя включить в БД его реквизиты: Имя Поставщика и Адрес, так как нельзя сформировать полный кортеж из-за отсутствия данных по поставке, и в первую очередь ключа кортежа. Введение же, например, пробелов может вызвать дальнейшие недоразумения и не всегда возможно. Так, если указанные атрибуты входят в состав ключа, то организовать поиск кортежа с неопределённым значением ключа невозможно.
В целях исключения перечисленных проблем в теории баз данных разработаны соответствующие методы преобразования (или нормализации) исходных схем отношений проекта БД. Они позволяют обеспечить целостность БД и уменьшить вероятность получения ошибок и неверных программных структур.