- •Оглавление
- •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.3. Третья нормальная форма
Для изучения третьей нормальной формы (3НФ) рассмотрим транзитивную зависимость следующего типа:
Если A В, В A (B не является первичным ключом) и В С, то
A С.
Пусть имеется отношение
ХРАНЕНИЕ (ФИРМА, СКЛАД, ОБЪЕМ),
которое содержит информацию о фирмах, получающих товары со складов, и объемах этих складов. В отношении имеются функциональные зависимости:
ФИРМА СКЛАД (фирма получает товары только с одного склада);
СКЛАД ОБЪЕМ.
Несмотря на то, что данное отношение находится в 2НФ, в нем присутствуют следующие аномалии.
Аномалия включения. Если на данный момент отсутствует фирма, получающая товар со склада, то в базу данных нельзя ввести информацию об объеме склада.
Аномалия удаления. Если последняя фирма перестает получать товар со склада, данные о складе и его объеме нельзя сохранить в базе данных.
Аномалия обновления. Если объем склада изменяется, необходим просмотр всего отношения и изменение кортежей для фирм, связанных со складом.
Транзитивная зависимость (аналогично неполной функциональной зависимости в предыдущем примере) вызвана наличием в отношении двух семантических различных фактов: первый факт – фирма получает товары со склада, второй факт – склад имеет фиксированный объем.
Преобразование отношения в 3НФ при помощи разложения устраняет рассмотренные аномалии:
ХРАНЕНИЕ (ФИРМА, СКЛАД)
С_ОБЪЕМ (СКЛАД, ОБЪЕМ)
Таким образом, отношение находится в 3НФ, если оно находится в 2НФ и в нем отсутствуют транзитивные зависимости непервичных атрибутов от первичного ключа (ключей).
9.4. Нормальная форма Бойса – Кодда
Для изучения нормальной формы Бойса – Кодда (НФБК) рассмотрим следующий пример. Пусть имеется отношение
ПРОЕКТ (Д#, ПР#, П#),
отражающее использование в проектах деталей, поставляемых поставщиками. В проекте используется несколько деталей, но каждая деталь проекта поставляется только одним поставщиком. Каждый поставщик обслуживает только один проект, но проекты могут обеспечиваться несколькими поставщиками (разных деталей). Детали, проекты, поставщики идентифицируются соответствующими номерами «Д#», «ПР#», «П#». В отношении присутствуют следующие функциональные зависимости:
Д#, ПР# П# (по определению первичного ключа)
П# ПР#
Рассматриваемое отношение находится в 3НФ, так как в нем отсутствуют неполные функциональные зависимости и транзитивные зависимости непервичных атрибутов от первичных ключей; при этом, однако, наблюдаются следующие аномалии:
Аномалия включения. Факт поставки поставщиком деталей для проекта не может быть занесен в базу данных до тех пор, пока в проекте действительно не начнут использоваться эти детали.
Аномалия удаления. Если последний из типов деталей, поставляемых поставщиком для проекта, использован, данные о поставщике будут также удалены из базы данных.
Аномалия обновления. Если меняется поставщик некоторого типа деталей для проекта, необходим просмотр отношения для изменения всех кортежей, содержащих эти детали.
Разложение исходного отношения на отношения в НФБК устраняет перечисленные аномалии:
ПРОЕКТ_ДЕТАЛЬ (Д#, ПР#)
ПОСТАВКИ (П#, ПР=#)
Таким образом, отношение находится в НФБК, если оно находится в 3НФ и в нем отсутствуют зависимости первичных атрибутов от непервичных. Эквивалентное определение требует, чтобы все детерминанты (т. е. домены функциональных зависимостей) были возможными ключами. Для этого необходимо устранить в данном отношении зависимость П# ПР#.