
- •230400 «Информационные системы и технологии»
- •6 Декабря 2011 г., протокол № 4
- •Оглавление
- •Глава 1. Теория информационных процессов и систем 10
- •Глава 2. Информационные технологии 95
- •Глава 3. Архитектура информационных систем 126
- •Глава 4. Технологии программирования 150
- •Глава 5. Управление данными 239
- •Глава 6. Технологии обработки информации 315
- •Предисловие
- •Глава 1. Теория информационных процессов и систем
- •1.1. Информационные системы. Основные понятия и определения.
- •1.2. Системообразующие свойства информационных систем
- •1.3. Свойства и закономерности систем
- •1.4.Системный подход и системный анализ
- •1.5. Моделирование информационных систем
- •1.5.1. Основные понятия
- •1.5.2. Классификация методов моделирования
- •1.5.3. Математическое моделирование
- •1.6. Теория принятия решений
- •3. Неопределённость наших знаний об окружающей обстановке и действующих в данном явлении факторах (неопределённость природы).
- •4. Неопределённость действий активного или пассивного партнёра или противника.
- •1.7. Информационные процессы
- •Контрольные вопросы
- •Глава 2. Информационные технологии
- •2.1. Состав, структура, принципы реализации и функционирования информационных технологий
- •2.2. Базовые и прикладные информационные технологии
- •Прикладные программные средства включают:
- •2.3. Инструментальные средства информационных технологий
- •Контрольные вопросы
- •Глава 3. Архитектура информационных систем
- •3.1. Классификация информационных систем
- •3.2. Структура, конфигурация информационной системы
- •3.2.1. Информационное обеспечение
- •Классификаторы создаются для решения следующих основных задач:
- •3.2.2. Математическое и программное обеспечение
- •К средствам математического обеспечения относятся:
- •К средствам программного обеспечения (по) относятся:
- •3.2.3. Организационное обеспечение
- •3.2.4. Правовое обеспечение
- •3.2.5. Техническое обеспечение
- •3.3. Процесс разработки информационных систем
- •3.3.1. Выработка или выбор парадигмы программирования
- •3.3.2. Моделирование бизнес-процессов
- •3.3.3. Анализ требований, предъявляемых к ис
- •3.3.4. Разработка архитектуры
- •3.3.5. Кодирование
- •3.3.6. Тестирование информационной системы
- •3.3.7. Документирование
- •3.3.8. Внедрение информационной системы
- •3.3.9. Сопровождение информационной системы
- •Контрольные вопросы.
- •Глава 4. Технологии программирования
- •4.1. Основные понятия программного обеспечения
- •Категории специалистов, занятых разработкой и эксплуатацией программ
- •4.2. Характеристики программного продукта
- •4.3. Жизненный цикл программного продукта
- •4.4.Защита программных продуктов
- •4.5. Классы программных продуктов
- •4.6. Инструментарий технологии программирования
- •4.7. Классификация методов проектирования программных продуктов
- •4.8. Этапы создания программных продуктов
- •1. Составление технического задания на программирование
- •2. Разработка технического проекта
- •3. Создание рабочей документации (рабочий проект)
- •4. Ввод в действие
- •4.9. Структура программных продуктов
- •4.10. Структурное проектирование и программирование
- •4.11. Модульная структура программных продуктов
- •4.12. Алгоритмы
- •4.13. Классификации языков программирования и примеры языков
- •4.13.2. Основы функционального программирования с использованием языка lisp Основные свойства функциональных языков программирования
- •Распространенные языки функционального программирования
- •Основные структуры данных и базовые функции по работе с ними в среде Лисп
- •Контрольные вопросы
- •Глава 5. Управление данными
- •5.1. Основы управления данными
- •5.1.1. Информация, данные и знания.
- •5.1.2.Функции управления
- •5.2.Банки данных в информационных системах.
- •5.2.1.Концепция баз данных
- •5.2.2.Файловые системы и базы данных
- •5.2.4.Классификация банков данных
- •5.3.Моделирование и модели данных
- •5.3.1.Уровни моделирования
- •5.3.2.Виды моделей
- •5.3.3.Модели данных
- •5.3.4.Иерархическая модель данных
- •5.3.5.Сетевая модель данных
- •5.3.6.Реляционная модель данных
- •5.3.7.Постреляционная модель представления данных
- •5.3.8.Многомерные модели представления данных
- •5.3.9.Объектно-ориентированные модели представления данных
- •5.4.Проектирование базы данных
- •5.4.1.Основы реляционной алгебры
- •5.4.2.Инфологический подход к проектированию баз данных
- •5.4.3.Модель «сущность—связь»
- •5.4.4.Переход к реляционной модели данных
- •5.4.5.Пример проектирования реляционной бд средствами субд Access
- •5.5.Субд в архитектуре «клиент-сервер»
- •5.5.1.Открытые системы
- •5.5.2.Клиенты и серверы локальных сетей
- •5.5.3.Системная архитектура «клиент-сервер»
- •5.5.4.Серверы баз данных
- •5.6.Реляционный язык sql
- •Структура sql
- •Контрольные вопросы
- •Глава 6. Технологии обработки информации
- •6.1. Основные виды и процедуры обработки информации
- •6.1.1. Виды обработки информации
- •6.1.2. Основные процедуры обработки данных
- •6.2. Системы поддержки принятия решений (сппр)
- •6.2.1. Условия принятия решений
- •6.2.2. Решение задач с помощью искусственного интеллекта
- •6.2.3. Процесс выработки решения на основе первичных данных
- •6.2.4. Типы информационных систем поддержки принятия решений
- •6.2.5. Реализация процесса принятия решений
- •6.2.6. Средства разработки информационных приложений
- •6.3. Концепция хранилищ и витрин данных, достоинства и недостатки
- •6.3.1. История создания концепции хранилищ данных
- •6.3.2. Причины создания концепции хранилищ данных
- •6.3.3. Факторы и технологии складирования данных
- •6.3.4. Концепция хранилищ данных
- •6.3.5. Взаимное соотношение концепции хранилищ данных и концепций анализа данных
- •6.3.6. Реализации хранилищ данных
- •6.3.7. Субд для аналитических систем
- •6.3.8. Витрины данных
- •6.4. Искусственный интеллект и интеллектуальные системы
- •6.4.1. Цели и задачи искусственного интеллекта
- •6.4.2. Направление исследований в области искусственного интеллекта
- •6.4.3. Структура интеллектуальной системы
- •6.4.4. Разновидности интеллектуальных систем
- •Контрольные вопросы
- •Глава 7. Интеллектуальные системы и технологии
- •7.1. Теория и технологии искусственного интеллекта
- •7.2. Математическое описание экспертной системы, логический вывод
- •7.3. Искусственные нейронные сети
- •7.4. Расчётно-логические системы, системы с генетическими алгоритмами
- •(Начало цикла)
- •Создание начальной популяции
- •Размножение (Скрещивание)
- •Мутации
- •Применение генетических алгоритмов
- •7.5. Мультиагентные системы
- •Контрольные вопросы
- •Глава 8. Инструментальные средства информационных систем
- •8.1. Состав и структура инструментальных средств информационных систем
- •8.2. Тенденции развития инструментальных средств информационных систем
- •8.3. Операционные системы инструментальных средств информационных систем
- •8.4. Технические средства инструментальных средств информационных систем
- •Классификация технических средств инструментальных средств информационных систем.
- •Контрольные вопросы
- •Глава 9. Инфокоммуникационные системы и сети
- •9.1. Модели и структура информационных сетей Классическая модель построения инфокоммуникационных систем
- •9.2. Информационные ресурсы сетей
- •По способу представления:
- •По национально-территориальному признаку:
- •9.3. Теоретические основы современных информационных сетей
- •Контрольные вопросы
- •Глава 10. Методы и средства проектирования информационных систем и технологий
- •10.1. Технология проектирования информационных систем. Этапы проектирования
- •10.2. Методы проектирования информационных систем
- •10.3. Средства проектирования ис
- •Контрольные вопросы
- •Список литературы
- •143 Хорошилов а.В. Селетков с.Н. Днепровская н.В. Управление информационными ресурсами.
5.4.4.Переход к реляционной модели данных
Правила преобразования ER-модели в реляционную модель.
Каждой сущности ставится в соответствие отношение реляционной модели данных. Например, сущность может быть названа «Книжный каталог», а соответствующее ей отношение желательно назвать, например, BOOKS (без пробелов и латинскими буквами) (Рис.5.4).
Каждый атрибут сущности становится атрибутом соответствующего отношения. Для каждого атрибута задаётся конкретный допустимый в СУБД тип данных и обязательность или необязательность данного атрибута (то есть допустимость или недопустимость NULL значений для него).
КНИЖНЫЙ КАТАЛОГ |
|
|
BOOKS |
|
Номер |
|
|
Num int |
|
Наименование |
|
|
Name varchar(60) |
|
Автор |
|
Avtor varchar(30) |
||
год |
|
God int |
||
|
|
|
Рис.5.4. Соответствие сущности «КНИЖНЫЙ КАТАЛОГ» отношению «BOOKS».
Первичный ключ сущности становится PRIMARY KEY соответствующего отношения. Атрибуты, входящие в первичный ключ отношения, автоматически получают свойство обязательности (NOT NULL).
В каждое отношение, соответствующее подчиненной сущности, добавляется набор атрибутов основной сущности, являющейся первичным ключом основной сущности. В отношении, соответствующем подчиненной сущности, этот набор атрибутов становится внешним ключом (FOREING KEY).
Для моделирования необязательного типа связи на физическом уровне у атрибутов, соответствующих внешнему ключу, устанавливается свойство допустимости неопределённых значений (признак NULL). При обязательном типе связи атрибуты получают свойство отсутствия неопределённых значений (признак NOT NULL).
Для каждого подтипа создаются свои отдельные отношения. [165]
Выделяют следующие основные понятия реляционных баз данных: тип данных, домен, атрибут, кортеж, отношение, первичный ключ.
На рис. 5.5 показан смысл этих понятий на примере отношения СЛУЖАЩИЕ, содержащего информацию о служащих некоторого предприятия.
Рис.5.5. Соотношение основных понятий реляционного подхода
Тип данных.
Значения данных, хранимые в реляционной базе данных, являются типизированными, т. е. известен тип каждого хранимого значения. Понятие типа данных в реляционной модели данных полностью соответствует понятию типа данных в языках программирования. Определение типа данных состоит из трех основных компонентов: определение множества значений данного типа; определение набора операций, применимых к значениям типа; определение способа внешнего представления значений типа (литералов).
Обычно в современных реляционных базах данных допускается хранение символьных, числовых данных (точных и приблизительных), специализированных числовых данных (таких, как «деньги»), а также специальных данных (дата, время, временной интервал). Кроме того, в реляционных системах поддерживается возможность определения пользователями собственных типов данных.
Домен.
Понятие домена более специфично для баз данных, хотя и имеются аналогии с подтипами в некоторых языках программирования (более того, в своем «Третьем манифесте» Кристофер Дейт и Хью Дарвен вообще ликвидируют различие между доменом и типом данных).39 В общем виде домен определяется путем задания некоторого базового типа данных, к которому относятся элементы домена, и произвольного логического выражения, применяемого к элементу этого типа данных (ограничения домена). Элемент данных является элементом домена в том и только в том случае, если вычисление этого логического выражения даёт результат истина (истина и ложь или true и false). С каждым доменом связывается имя, уникальное среди имен всех доменов соответствующей базы данных.
Наиболее правильной интуитивной трактовкой понятия домена является его восприятие как допустимого потенциального, ограниченного подмножества значений данного типа [166].
Например, домен ИМЕНА в примере определён на базовом типе символьных строк, но в число его значений могут входить только те строки, которые могут представлять имена (в частности, для возможности представления русских имен такие строки не могут начинаться с мягкого или твердого знака и не могут быть длиннее, например, 30 символов). Если некоторый атрибут отношения определяется на некотором домене (как, например, на рисунке атрибут СЛУ_ИМЯ определяется на домене ИМЕНА), то в дальнейшем ограничение домена играет роль ограничения целостности, накладываемого на значения этого атрибута.
Следует отметить также семантическую нагрузку понятия домена: данные считаются сравнимыми только в том случае, когда они относятся к одному домену. В нашем примере значения доменов НОМЕРА ПРОПУСКОВ и НОМЕРА ОТДЕЛОВ относятся к типу целых чисел, но не являются сравнимыми (допускать их сравнение было бы бессмысленно).
Заголовок отношения, кортеж, тело отношения, значение отношения, переменная отношения.
Понятие отношения является наиболее фундаментальным в реляционном подходе к организации баз данных, поскольку n–арное отношение является единственной родовой структурой данных, хранящихся в реляционной базе данных. Это отражено и в общем названии подхода – термин реляционный (relational) происходит от relation (отношение). Однако сам термин отношение является исключительно неточным, поскольку, говоря про любые сохраняемые данные, мы должны иметь в виду тип этих данных, значения этого типа и переменные, в которых сохраняются значения. Соответственно, для уточнения термина отношение выделяются понятия заголовка отношения, значения отношения и переменной отношения. Кроме того, требуется вспомогательное понятие кортежа.
Итак, заголовком (или схемой) отношения r (Hr) называется конечное множество упорядоченных пар вида <A, T>, где A называется именем атрибута, а T обозначает имя некоторого базового типа или ранее определённого домена. По определению требуется, чтобы все имена атрибутов в заголовке отношения были различны. В примере на рисунке 5.5 заголовком отношения СЛУЖАЩИЕ является множество пар {<слу_номер, номера_пропусков>, <слу_имя, имена>, <слу_зарп, размеры_выплат>, <слу_отд_номер, номера_отделов>}.
Если все атрибуты заголовка отношения определены на разных доменах, то, чтобы не плодить лишних имен, разумно использовать для именования атрибутов имена соответствующих доменов (не забывая, конечно, о том, что это лишь удобный способ именования, который не устраняет различия между понятиями домена и атрибута) [166].
Правила получения реляционных отношений.
Правило 1: Если степень бинарной связи равна 1:1 и класс принадлежности обеих сущностей является обязательным, то требуется только одно отношение, объединяющее атрибуты двух сущностей. Первичным ключом этого отношения может быть ключ любой из двух сущностей.
Правило 2: Если степень бинарной связи равна 1:1 и класс принадлежности одной сущности является обязательным, а другой необязательным, то необходимо построение двух отношений. Под каждую сущность необходимо выделить по одному отношению, при этом ключ сущности должен служить первичным ключом для соответствующего отношения. При этом ключ сущности, для которой класс принадлежности является необязательным, добавляется в качестве атрибута в отношение, выделенное для сущности с обязательным классом принадлежности.
Правило 3: Если степень бинарной связи равна 1:1 и класс принадлежности обеих сущностей является необязательным, то необходимо построение трех отношений: по одному для каждой сущности, ключи которых служат в качестве первичных ключей соответствующих отношений, и одно для связи. Среди своих атрибутов отношение, выделенное для связи, будет иметь ключи сущностей.
Правило 4: Если степень бинарной связи 1: М и класс принадлежности М-связанной сущности является обязательным, то достаточным является использование двух отношений, по одному на каждую сущность. При условии, что ключ каждой сущности служит в качестве первичного ключа для соответствующего отношения. Дополнительно ключ 1-связанной сущности должен быть добавлен как атрибут в отношение, отведенной для М-связанной сущности.
Правило 5: Если степень бинарной связи 1: М и класс принадлежности М-связанной сущности является необязательным, то достаточным является использование трех отношений, по одному на каждую сущность, причем ключ каждой сущности служит первичным ключом соответствующего отношения, и одного отношения для связи. Отношение для связи должно иметь среди своих атрибутов ключ каждой сущности.
Правило 6: Если степень бинарной связи равна М : М, то необходимо три отношения: по одному на каждую сущность с первичными ключами от соответствующих сущностей, и одно отношение для связи. Отношение для связи должно иметь среди своих атрибутов ключ каждой сущности.
Процесс проектирования БД.
Цели создания БД:
Возможность хранения всех необходимых данных.
Исключение избыточности.
Сведение числа хранимых в БД отношений к минимуму. Решение проблем избыточности, корректировки и обновления данных решается, как правило, разбиением отношения на несколько независимых. Это приводит к общему увеличению числа отношений и соответственно файлов. Это приводит к сложностям пользования и ведения БД.
Нормализация отношений для упрощения процедур обновления и удаления данных.
Исключение избыточности данных.
При решении этой задачи необходимо определить, что является избыточностью, а что необходимым дублированием.
Пример. На рис.5.6 в поле Исполнитель на первый взляд наблюдается избыточность – повторение Исп-1.
Тема
Шифр_темы |
Исполнитель |
111 |
Исп-1 |
112 |
Исп-2 |
113 |
Исп-1 |
114 |
Исп-1 |
Рис.5.6. Отношение Тема в исходном виде.
Если сгруппировать данные по исполнителям (рис.5.7) и убрать «лишних» Исп-1, то
Шифр_темы |
Исполнитель |
112 |
Исп-2 |
111 |
Исп-1 |
113 |
--- |
114 |
--- |
Рис.5.7. Приведенное отношение Тема.
Если удалить запись 111, то не будет известен исполнитель тем 113 и 114. Таким образом, это пример не избыточности данных, а необходимого неизбыточного дублирования.
Если отношение Тема расширить атрибутом Телефон,
Шифр_темы |
Исполнитель |
Телефон |
то получим пример избыточного отношения по атрибуту Телефон. Достаточно хранить один экземпляр телефона для каждого исполнителя. В этом случае для устранения избыточности необходимо получить два отношения:
Тема (Шифр_Темы, Исполнитель)
Тел._Исполнителя (Исполнитель, Телефон)
Аномалии вставки, удаления и обновления.
Вставка. При добавлении новых экземпляров отношения может возникнуть ситуация, когда некоторые из атрибутов не имеют значения (они могут принимать значение 0 для арифметических данных или пробелы для символьных данных, если событие еще не наступило). При обработке запросов по таким данным будут выдаваться искаженные результаты.
Обновление. Если имеет место большая избыточность данных, то к одному и тому же объекту может относиться несколько кортежей. В этом случае изменения должны вноситься во все записи, относящиеся к этому объекту.
Удаление. Аномалия сводится к тому, что при необходимости удаления некоторых значение атрибутов в случае определённой избыточности данных, удаляется вся запись.
Функциональная зависимость.
Процесс разбиения отношения с целью уменьшения вероятности возникновения аномалий при манипулировании данными называется декомпозицией. Логической и методической основой декомпозиции является концепция функциональной зависимости между атрибутами в рассматриваемом отношении.
Определение функциональной зависимости. Если даны два атрибута А и В, то говорят, что В функционально зависит от А, если для каждого значения А существует ровно одно связанное с ним значение В в любой момент времени. При этом А и В могут быть не только единичными атрибутами (атомарными), но и состоять из нескольких атрибутов.
АВ
На практике это сводится к тому, что функциональная зависимость В от А означает, что если в любой момент времени известно значение А, то можно одновременно найти значение атрибута В.
Отсутствие функциональной зависимости
АВ.
Например, в отношении
СТУДЕНТ (НЗК, ФИО, Ном_Гр), где НЗК – номер зачётной книжки, Ном_Гр – номер группы,
НЗК ФИО
НЗК Ном_Гр
Примечание. Заголовки отношения (имена атрибутов) могут задаваться как прописными, так строчными буквами.
Определение функциональной зависимости через термины реляционной алгебры.
Пусть R (A1, A2,…, AN) – схема отношения, X и Y – подмножества (A1, A2,…, AN). Говорят, что Х функционально определяет Y (X Y), если в любом отношении R, являющемся текущим значением R, не могут содержаться два кортежа, компоненты которых совпадают по всем атрибутам, принадлежащим множеству Х, но не совпадают по одному или более атрибутам, принадлежащим множеству Y.
Определение. Если АВ есть функциональная зависимость и В не зависит функционально от любого подмножества А, то говорят, что А представляет собой детерминант В или В функционально полно зависит от А.
Например, в отношении:
УСПЕВАЕМОСТЬ (НЗК, ФИО, ДИСЦ., ОЦЕНКА, ДАТА),
НЗК+ДИСЦ+ДАТА полностью определяет атрибут ОЦЕНКА.
Единственный способ определения функциональной зависимости для схемы отношения заключается в тщательном анализе семантики атрибутов этого отношения. В этом смысле зависимости являются фактически отображением связей, существующих в реальном мире.
Исходя из функциональной зависимости, можно определить как первичные, так и возможные ключи.
Наличие тех или иных зависимостей в схеме отношения определяет степень её нормализации.
Степень нормализации определяется её номером: первая нормальная форма – 1НФ, вторая – 2НФ, третья – 3НФ, четвертая – 4НФ. Существует еще одна дополнительная нормальная форма Бойса-Кодда (НФБК).
Определение 1НФ: Отношение находится в 1НФ, если каждый его атрибут имеет и всегда будет иметь атомарное (неделимое) строение.
Например. Значение атомарного атрибута год рождения – «1970» не может быть разделено по смыслу на «19» и «70». В этом случае реляционное отношение представлено в виде множества неповторяющихся кортежей.
Эта форма является достаточной для работы языков запросов СУБД.
Определение 2НФ: Отношение задано во 2НФ, если оно является отношением в 1НФ и каждый атрибут, не являющийся первичным атрибутом в этом отношении, полностью зависит от любого возможного ключа этого отношения.
Первичными называются атрибуты, которые входят хотя бы в один из возможных ключей.
Если все возможные ключи отношения содержат по одному атрибуту, то это отношение задано во 2НФ, т.к. в этом случае все атрибуты, не являющиеся первичными, полностью зависят от возможных ключей.
Если ключи составные, отношение, заданное в 1НФ, может не быть отношением во 2НФ.
Например, в отношении:
ПОСТАВКА (НОМЕР_ИЗДЕЛИЯ, НОМЕР_ПОСТАВЩИКА, ИМЯ_ПОСТАВЩИКА, СВЕДЕНИЯ_О_ПОСТАВЩИКЕ, ЦЕНА)
атрибут ЦЕНА полностью зависит от составного ключа
НОМЕР_ИЗДЕЛИЯ, НОМЕР_ПОСТАВЩИКАЦЕНА
Атрибуты ИМЯ_ПОСТАВЩИКА и СВЕДЕНИЯ_О_ПОСТАВЩИКЕ полностью зависят от одного возможного ключа
НОМЕР_ПОСТАВЩИКАИМЯ_ПОСТАВЩИКА,
НОМЕР_ПОСТАВЩИКАСВЕДЕНИЯ_О_ПОСТАВЩИКЕ.
Для того, чтобы отношение ПОСТАВКА было задано во 2НФ, его необходимо разбить на два отношения:
ПОСТАВКА (НОМЕР_ИЗДЕЛИЯ, НОМЕР_ПОСТАВЩИКА, ЦЕНА);
ПОСТАВЩИК (НОМЕР_ПОСТАВЩИКА, ИМЯ_ПОСТАВЩИКА, СВЕДЕНИЯ_О_ПОСТАВЩИКЕ).
Определение 3НФ: Отношение задано в 3НФ, если оно задано во 2НФ и каждый атрибут из отношения, не являющийся первичным, нетранзитивно зависит от каждого возможного ключа.
Пусть А, В, С – атрибуты реляционного отношения. Если С зависит от В, а В – от А, то С зависит от А. Если при этом обратное соответствие неоднозначно (т. е., А не зависит от В или В не зависит от С), то говорят, что С транзитивно зависит от А, т. е.:
AB, BC, то AC
А
В
С
Преобразование в 3НФ состоит в разбиении исходного отношения на два:
(A, B) и (B, C).
А
В
В
С
В большинстве случаев приведения отношений к 3НФ вполне достаточно для того, чтобы разрабатывать базы данных. Проблем не возникает, если все отношения содержат по одному потенциальному ключу.
Ниже определяются нормальные формы более высоких порядков, а именно, нормальная форма Бойса-Кодда (НФБК), четвертая нормальная форма (4НФ), пятая нормальная форма (5НФ).
При приведении к отношениям в 3НФ неявно предполагается, что все отношения содержат один потенциальный ключ. Это не всегда верно. Отношения могут содержащего несколько потенциальных ключей.
Определение НФБК: Отношение находится в нормальной форме Бойса-Кодда (НФБК) тогда и только тогда, когда детерминанты всех функциональных зависимостей являются потенциальными ключами [135].
Пример отношения, содержащего два ключа. Необходимо хранить данные о поставках деталей некоторыми поставщиками. Каждый поставщик имеет свой уникальный номер и уникальное наименование. Данные о поставках можно хранить в следующем отношении (Таблица 5.20):
Таблица 5.20. Отношение «Поставки»
Номер поставщика PNUM |
Наименование поставщика PNAME |
Номер детали DNUM |
Поставляемое количество VOLUME |
1 |
Фирма 1 |
1 |
100 |
1 |
Фирма 1 |
2 |
200 |
1 |
Фирма 1 |
3 |
300 |
2 |
Фирма 2 |
1 |
150 |
2 |
Фирма 2 |
2 |
250 |
3 |
Фирма 3 |
1 |
1000 |
Данное отношение содержит два потенциальных ключа (PNUM, DNUM) и (PNAME, DNUM). Видно, что данные хранятся в отношении с избыточностью – при изменении наименования поставщика, это наименование нужно изменить во всех кортежах, где оно встречается. Выделим имеющиеся функциональные:
PNUMPNAME – наименование поставщика зависит от номера поставщика.
PNAMEPNUM – номер поставщика зависит от наименования поставщика.
(PNUM, DNUM)VOLUME – поставляемое количество зависит от первого ключа отношения.
(PNUM, DNUM)PNAME – наименование поставщика зависит от первого ключа отношения.
(PNAME, DNUM)VOLUME – поставляемое количество зависит от второго ключа отношения.
(PNAME, DNUM)PNUM – номер поставщика зависит от второго ключа отношения.
Данное отношение не содержит неключевых атрибутов, зависящих от части сложного ключа. Действительно, от части сложного ключа зависят атрибуты PNAME и PNUM, но они сами являются ключевыми. Таким образом, отношение находится в 2НФ.
Кроме того, отношение находится в 3НФ и не содержит зависимых друг от друга неключевых атрибутов, т.к. неключевой атрибут всего один – VOLUME. Аномалия данного отношения устраняется путем декомпозиции его на два следующих отношения (Таблицы 5.21 и 5.22):
Таблица 5.21. Отношение "Поставщики"
ПОСТАВЩИКИ |
|
Номер поставщика PNUM |
Наименование поставщика PNAME |
1 |
Фирма 1 |
2 |
Фирма 2 |
3 |
Фирма 3 |
Таблица 5.22. Отношение "Поставки-2"
ПОСТАВКИ-2 |
||
Номер поставщика PNUM |
Номер детали DNUM |
Поставляемое количество VOLUME |
1 |
1 |
100 |
1 |
2 |
200 |
1 |
3 |
300 |
2 |
1 |
150 |
2 |
2 |
250 |
3 |
1 |
1000 |
Нормализация отношений вплоть до нормальной формы Бойса-Кодда основывается на понятии функциональной зависимости и предположении, что декомпозиция отношений происходит без потерь информации [135].
Дальнейшая нормализация в 4НФ основывается на понятии многозначной зависимости атрибутов в отношении. Понятие многозначной зависимости является обобщением понятия функциональной зависимости (подробнее в [135]).
Определение. Пусть R – отношение, и X, Y, Z – некоторые из его атрибутов (или непересекающиеся множества атрибутов).
Тогда атрибуты [множества атрибутов Y и Z многозначно зависят от X (обозначается ХY|Z)] тогда и только тогда, когда из того, что в отношении R содержатся кортежи r1=(x,y,z1) и r2=(x,y1,z), следует, что в отношении R содержится также и кортеж r3=(x,y,z).
Определение. Многозначная зависимость (ХY|Z) называется нетривиальной многозначной зависимостью, если не существует функциональных зависимостей ХY и ХZ .
Определение 4НФ: Отношение R находится в четвертой нормальной форме тогда и только тогда, когда отношение находится в НФБК и е содержит нетривиальных многозначных зависимостей.
Отношения с нетривиальными многозначными зависимостями возникают, как правило, в результате естественного соединения двух отношений по общему полю, которое не является ключевым ни в одном из отношений. Фактически это приводит к попытке хранить в одном отношении информацию о двух независимых сущностях. В качестве примера можно привести ситуацию, когда сотрудник может иметь много работ и много детей. Хранение информации о работах и детях в одном отношении приводит к возникновению нетривиальной многозначной зависимости РаботникРабота|Дети.
Таблица 5.23. Отношение СЛУЖАЩИЙ
СЛУЖАЩИЙ |
ИН_ЯЗЫК |
ДОЛЖНОСТЬ |
ГОД |
Иванов |
Английский |
инженер |
1996 |
Иванов |
Немецкий |
инженер |
1996 |
Иванов |
Немецкий |
Ст.инженер |
1998 |
Иванов |
Английский |
Ст.инженер |
1998 |
Сидоров |
Французский |
Вед.инженер |
1998 |
Сидоров |
Французский |
Руководитель |
1999 |
Сидоров |
Испанский |
Вед.инженер |
1999 |
Сидоров |
Испанский |
Руководитель |
1999 |
Аналогично, в отношении СЛУЖАЩИЙ (Таблица 5.23) также возникает нетривиальная многозначная зависимость СЛУЖАЩИЙИН_ЯЗЫК и СЛУЖАЩИЙДОЛЖНОСТЬ.
Для устранения этой зависимости необходимо выполнить разбиение отношения на два отношения: ЯЗЫК и ДОЛЖНОСТЬ (Таблицы 5.24 и 5.25):
Таблица 5.24. Отношение ЯЗЫК
СЛУЖАЩИЙ |
ИН_ЯЗЫК |
Сидоров |
Французский |
Сидоров |
Испанский |
Иванов |
Английский |
Иванов |
Немецкий |
Таблица 5.25. Отношение ДОЛЖНОСТЬ.
СЛУЖАЩИЙ |
ДОЛЖНОСТЬ |
ГОД |
Сидоров |
Вед.инженер |
1998 |
Сидоров |
Руководитель |
1999 |
Иванов |
Инженер |
1996 |
Иванов |
Ст.инженер |
1998 |