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