
- •Оглавление
- •1. Основные понятия информационных систем
- •1.1. История возникновения информационных систем
- •1.2. Современное понятие информационной системы
- •2. Автоматизированные информационные системы
- •2.1. Преимущества автоматизированных информационных систем
- •2.2. Классификация аис
- •2.2.1. Классификация по типу хранимых данных.
- •2.2.2. Классификация по характеру обработки данных.
- •2.2.3. Классификация по степени интеграции данных и автоматизации управления.
- •2.2.4. Классификация по степени распределенности.
- •2.2.5 Классификация аис по другим признакам
- •3. Банки данных
- •3.1. Понятие банка данных
- •3.2. Преимущества банков данных
- •3.3. Предпосылки широкого использования банков данных
- •3.4. Общие требования к банкам данных
- •3.5. Компоненты банка данных
- •3.5.1. Информационная компонента
- •3.5.2. Программные средства банков данных
- •3.5.3. Языковые средства БнД
- •3.5.4. Технические средства банков данных
- •3.5.5. Организационно-методические средства.
- •4. Виды банков данных
- •4.1. Банки документов
- •4.2. Банки знаний
- •4.3. Экспертные системы
- •4.4. Хранилища данных
- •5. Системы управления базами данных (субд)
- •5.1. Назначение и состав субд
- •5.2. Классификация субд
- •5.3. Архитектура субд
- •5.4. Функции субд
- •5.5. Основные распространенные субд
- •6. Основы проектирования баз данных
- •6.1. Основные понятия в теории баз данных
- •6.2. Связи между сущностями
- •6.3. Этапы проектирования базы данных
- •6.3.1. Инфологическое моделирование
- •6.3.2. Даталогическое моделирование
- •6.3.3. Физическое моделирование
- •7. Модели данных
- •7.1. Иерархическая модель данных
- •7.2. Сетевая модель данных
- •7.3. Понятие реляционной модели данных
- •7.3. Постреляционная модель данных
- •7.4. Объектно-ориентированная модель данных
- •7.5. Объектно-реляционная модель данных
- •8. Реляционная модель данных
- •8.1. Понятие «отношения» в реляционной модели данных
- •8.2. Свойства отношений
- •8.3. Требования к реляционным базам данных
- •8.4. Основные математические понятия
- •9. Нормализация баз данных
- •9.1. Первая нормальная форма
- •9.2. Вторая нормальная форма
- •9.3. Третья нормальная форма
- •9.4. Нормальная форма Бойса – Кодда
- •9.5. Многозначные зависимости
- •9.6. Четвертая нормальная форма
- •9.7. Пятая нормальная форма
- •9.8. Принципы выбора нормальной формы для проектируемой базы данных
- •10. Введение в язык запросов sql
- •10.1. Назначение языка sql
- •10.2. Достоинства языка sql
- •10.3. Состав языка sql
- •10.4. Трехзначная логика
- •10.5. Основные типы данных языка sql
- •11. Sql. Некоторые Операторы языка определения данных
- •11.1. Оператор create table
- •11.2. Оператор alter table
- •11.3. Оператор drop table
- •12. Sql. Операторы изменения данных
- •12.1. Оператор insert into
- •12.2. Оператор update
- •12.3. Оператор delete from
- •13. Sql. Выбор информации из базы данных
- •13.1. Общее описание оператора select
- •13.1.1. Назначение оператора select
- •13.1.2. Синтаксическая диаграмма оператора select
- •13.2. Обязательные предложения оператора select
- •13.2.1. Предложение select.
- •13.2.2. Предложение from.
- •13.2.3. Примеры простейших запросов на выборку.
- •13.3. Отбор строк (предложение where)
- •13.3.1. Сравнение
- •13.3.2. Проверка на принадлежность диапазону значений (between)
- •13.3.3. Проверка на членство во множестве (in)
- •13.3.4. Проверка на соответствие шаблону (like)
- •13.3.5. Отслеживание отсутствия значений (null)
- •13.3.6. Составные условия отбора строк
- •13.4. Сортировка результатов запроса (предложение order by)
- •13.5 Примерный порядок выполнения простых однотабличных запросов
- •13.6. Многотабличные запросы
- •13.6.1. Полные имена столбцов.
- •13.6.2. Псевдонимы таблиц.
- •13.6.3. Особенности многотабличных запросов.
- •13.6.4. Примеры многотабличных запросов.
- •13.6.5. Соединение таблиц в предложении from.
- •13.6.6. Примерный порядок выполнения многотабличных запросов
- •13.7. Итоговые запросы на чтение
- •13.7.1. Агрегатные функции.
- •13.7.2. Группировка строк (предложение group by)
- •13.7.3. Отбор групп строк (предложение having)
- •13.7.4. Примерный порядок выполнения итоговых запросов
- •13.8. Вложенные запросы на чтение (подзапросы)
- •13.8.1. Использование вложенных запросов
- •13.8.2. Сравнение с результатом вложенного запроса
- •13.8.3. Проверка на принадлежность результатам вложенного запроса
- •13.8.4. Проверка на существование (exists)
- •13.8.5. Многократное сравнение (any, all)
- •13.9. Объединение результатов нескольких запросов
9.5. Многозначные зависимости
До сих пор речь шла лишь о функциональных зависимостях. В отношениях существуют и другие зависимости. Одним из видов зависимостей являются многозначные зависимости данного атрибута В от другого атрибута А в отношении R, содержащем и другие атрибуты. Говорят, что А многозначно определяет В в R (или что В многозначно зависит от А), обозначая указанную зависимость АВ, если каждому значению А соответствует множество (возможно, пустое) значений B, никак не связанных с другими атрибутами R.
Это можно проиллюстрировать на примере отношения
ПРЕПОДАВАТЕЛЬ (ИД#, ДЕТИ, КУРСЫ, ДОЛЖНОСТЬ),
содержащего данные о детях преподавателя, читаемых им курсах и его должности.
Между преподавателем и детьми имеется связь типа 1:М, а между преподавателем и курсами связь М:N, если предположить, что некоторые курсы могут читать несколько преподавателей. Пусть экстенсионал отношения имеет вид, показанный на рисунке 8.3.
Рис. 8.3. Отношение «ПРЕПОДАВАТЕЛЬ»
Если объявляется многозначная зависимость атрибутов «ДЕТИ» или «КУРСЫ» от атрибута «ИД#», каждому значению атрибута «ИД#» должно соответствовать фиксированное множество значений атрибутов «ДЕТИ» или «КУРСЫ» соответственно. Другими словами, возможно изменение значения этих атрибутов в любой строке отношения. Замена значения атрибута «КУРСЫ» в кортеже (525-111 Кэт К412 Доцент) даст кортеж (525-11 Кэт К410 Доцент). Замена значения атрибута «ДЕТИ» на «Джон» даст кортеж (525-111 Джон К412 Доцент). (Порядок замены следует порядку предшествующего утверждения). Оба полученных кортежа уже имеются в отношении. Таким образом, другие значения кортежей никак не связаны со значениями многозначных атрибутов. Следовательно, имеют место многозначные зависимости
ИД#ДЕТИ и ИД#КУРСЫ.
Для наличия в отношении многозначной зависимости необходимо иметь минимум три атрибута: первичный ключ и независимые атрибуты, которых не может быть меньше двух (чтобы быть независимыми друг от друга).
Существуют аксиомы (правила вывода) для многозначных зависимостей. Введение многозначных зависимостей приводит к расширению рассмотренного выше множества правил вывода. Предположим, что X, Y и Z являются атрибутами отношения R, а U обозначает множество всех атрибутов R. Двумя наиболее важными правилами для многозначных зависимостей являются следующие:
а) дополнение. Если ХY, то ХU—Х—Y. Это правило не имеет аналога для функциональных зависимостей;
б) транзитивность. Если ХY и YZ, то ХZ—Y. Это более ограниченный вариант транзитивности по сравнению с правилом для функциональных зависимостей.
9.6. Четвертая нормальная форма
Определение четвертой нормальной формы (4НФ) звучит следующим образом: отношение находится в 4НФ, если оно находится в НФБК, но в нем отсутствуют многозначные зависимости, которые не являются функциональными. По другому определению 4НФ требуется, чтобы в отношении для любой нетривиальной многозначной зависимости, т.е. ХУ (X0 или ХU—Х—Y являются тривиальными), Х обязательно содержал первичный ключ отношения.
Следующее разложение приводит исходное отношение «ПРЕПОДАВАТЕЛЬ» в четвертую нормальную форму:
R1 (ИД#, ДЕТИ)
R2 (ИД#, КУРСЫ)
R3 (ИД#, ДОЛЖНОСТЬ)
Четвертая нормальная форма показывает, что отношение может находиться в НФБК и, тем не менее, могут существовать некоторые аномалии, особенно при обновлениях. Например, если у преподавателя появится еще один ребенок, в исходное отношение необходимо добавить не один кортеж, а столько, сколько профессор читает курсов. (Аналогичная ситуация возникает при появлении нового курса, читаемого профессором.) Эти многочисленные модификации необходимы для сохранения независимости между всеми возможными значениями атрибутов. В отношении, приведенном к 4НФ при появлении нового ребенка или курса достаточно добавить один кортеж в отношения, соответственно R1 или R2.