ВУЗ: Томский государственный университет систем управления и радиоэлектроники
Категория: Учебное пособие
Дисциплина: Базы данных
Добавлен: 28.11.2018
Просмотров: 5440
Скачиваний: 10
51
ний
.
Если
,
например
,
нужно
выбрать
все
записи
с
наименовани
-
ем
товара
«
Свекла
»,
нет
нужды
просматривать
всю
таблицу
.
Достаточно
найти
в
индексе
,
построенном
по
столбцу
«
Наиме
-
нование
товара
»,
первый
указатель
на
запись
,
содержащую
то
-
вар
«
Свекла
»,
и
считать
из
таблицы
эту
запись
,
а
затем
повто
-
рить
то
же
для
всех
иных
указателей
в
индексе
на
записи
с
то
-
варом
«
Свекла
».
Поскольку
значения
полей
отсортированы
,
по
-
иск
первого
указателя
осуществляется
специальными
методами
быстрого
поиска
и
реализуется
значительно
быстрее
,
чем
если
бы
поиск
шел
по
неотсортированным
полям
таблицы
.
Такой
ме
-
тод
доступа
к
записям
таблицы
называется
индексно
-
последовательным
,
потому
что
:
•
поиск
ведется
по
индексу
,
а
не
по
таблице
;
•
доступ
начинается
с
первой
строки
,
удовлетворяющей
ус
-
ловию
запроса
или
его
части
;
•
строки
в
индексе
,
начиная
с
первой
найденной
записи
,
про
-
сматриваются
последовательно
.
В
том
случае
,
если
в
условия
запроса
входят
поля
,
по
кото
-
рым
не
построено
индексов
,
ищется
иной
пригодный
индекс
,
а
если
такого
индекса
нет
,
производится
последовательный
пере
-
бор
записей
таблицы
БД
(
в
некоторых
СУБД
,
например
,
исполь
-
зующих
технологию
ADO,
в
этом
случае
может
быть
построен
вспомогательный
индекс
).
Упражнения
и
задачи
Для
заданных
предметных
областей
определить
:
•
объекты
;
•
атрибуты
.
1.
ПРЕДМЕТНАЯ
ОБЛАСТЬ
(
ПО
) «
ВЫСШЕЕ
ОБРАЗОВАНИЕ
ГОРОДА
».
2.
ПРЕДМЕТНАЯ
ОБЛАСТЬ
«
СРЕДНЕЕ
ОБРАЗОВАНИЕ
».
3.
ПРЕДМЕТНАЯ
ОБЛАСТЬ
«
УЧЕБНЫЙ
ПРОЦЕСС
В
ВУЗЕ
».
4.
ПРЕДМЕТНАЯ
ОБЛАСТЬ
«
ПРОМЫШЛЕННЫЕ
ПРЕДПРИ
-
ЯТИЯ
ГОРОДА
».
5.
ПРЕДМЕТНАЯ
ОБЛАСТЬ
«
СБЫТ
ГОТОВЫХ
ИЗДЕЛИЙ
».
6.
ПРЕДМЕТНАЯ
ОБЛАСТЬ
«
БОЛЬНИЦЫ
ГОРОДА
».
7.
ПРЕДМЕТНАЯ
ОБЛАСТЬ
«
ТЕАТРЫ
ГОРОДА
».
8.
ПРЕДМЕТНАЯ
ОБЛАСТЬ
«
ЦЕНТР
КРАСОТЫ
».
9.
ПРЕДМЕТНАЯ
ОБЛАСТЬ
«
КАДРЫ
».
10.
ПРЕДМЕТНАЯ
ОБЛАСТЬ
«
АБОНЕМЕНТ
ТЕХНИЧЕСКОЙ
ЛИТЕРАТУРЫ
».
52
3.
Нормализация
отношений
Нормализация
отношения
-
процесс
приведения
реляци
-
онных
таблиц
к
стандартному
виду
.
Рассмотрим
реляционную
таблицу
на
рис
. 3.1.
После
не
-
большого
анализа
видно
,
что
реляционная
таблица
на
рис
.
3.1
спроектирована
неудачно
.
Например
,
в
четырех
корте
-
жах
,
соответствующих
рабочему
1412,
повторяется
одно
и
то
же
имя
и
информация
о
типе
специальности
.
Эта
избы
-
точность
данных
или
повторение
приводит
не
только
к
потере
лишнего
места
;
она
может
вызвать
нарушение
це
-
лостности
данных
(
противоречивость
)
в
базе
данных
.
Избыточность
данных
-
повторение
данных
в
ба
-
зе
данных
.
Целостность
данных
-
согласованность
данных
в
базе
данных
.
Таблица
3.1. «
Работник
»
№
ра
-
ботни
-
ка
Фамилия
Специаль
-
ность
№
менед
-
жера
№
зда
-
ния
1235
Петров
Электрик
1311
312
1235
Петров
Электрик
1311
515
1412
Смирнов
Штукатур
312
1412
Смирнов
Штукатур
460
1412
Смирнов
Штукатур
435
1412
Смирнов
Штукатур
515
1311
Васильев
Электрик
435
Проблема
возникает
из
-
за
того
,
что
один
и
тот
же
ра
-
ботник
может
работать
более
,
чем
на
одном
здании
.
Пред
-
положим
,
что
специальность
Смирнова
была
указана
непра
-
вильно
,
а
исправление
было
внесено
только
в
первый
кор
-
теж
.
Тогда
между
кортежами
,
содержащими
информацию
о
Смирнове
,
возникает
несоответствие
,
которое
называется
аномалией
обновления
.
Аномалия
обновления
-
противоречивость
данных
,
вызванная
их
избыточностью
и
частичным
обновлением
.
53
Теперь
предположим
,
что
Смирнов
в
течение
трех
меся
-
цев
был
на
больничном
и
все
здания
,
на
которых
он
был
назначен
работать
,
уже
закончены
.
Если
принимается
реше
-
ние
удалить
все
строки
о
законченных
зданиях
из
таблицы
,
то
информация
о
Смирнове
,
его
специальности
будет
поте
-
ряна
.
Это
называется
аномалией
удаления
.
Обратный
слу
-
чай
:
мы
могли
нанять
нового
работника
по
фамилии
Сидо
-
ров
,
которого
еще
не
успели
назначить
ни
на
какое
здание
.
Если
мы
не
допускаем
пустых
значений
,
то
не
можем
вве
-
сти
информацию
о
Сидорове
в
базу
данных
.
Это
называет
-
ся
аномалией
ввода
.
Аномалия
удаления
-
непреднамеренная
потеря
данных
,
вызванная
удалением
других
данных
.
Аномалия
ввода
-
невозможность
ввести
данные
в
таблицу
,
вызванная
отсутствием
других
данных
.
Аномалии
обновления
,
удаления
и
ввода
,
очевидно
,
не
-
желательны
.
Чтобы
предотвратить
или
хотя
бы
свести
к
минимуму
подобные
проблемы
нужно
воспользоваться
нор
-
мальными
формами
или
правилами
структурирования
таб
-
лиц
.
3.1.
Первая
нормальная
форма
Реляционная
таблица
находится
в
первой
нормальной
форме
(1
НФ
),
если
значения
в
таблице
являются
атомар
-
ными
для
каждого
атрибута
таблицы
.
Атомарное
значение
-
значение
,
не
являющееся
множе
-
ством
значений
или
повторяющейся
группой
.
Любая
реляционная
таблица
находится
в
1
НФ
.
Для
того
чтобы
пояснить
понятие
,
рассмотрим
пример
таблицы
3.2,
не
удовлетворяющей
этому
условию
.
Таблица
3.2. «
Работник
»
№
работ
.
Фами
-
лия
Специ
-
альность
№
менед
-
жера
№
здания
1235
Петров
Электрик
1311
{312,515}
1412
Смирнов
Штукатур
{312,460,435,
515}
1311
Васильев
Электрик
435
54
Значение
атрибута
№
здания
–
это
множество
зданий
,
на
которых
работает
данный
человек
.
Предположим
,
что
мы
хотим
получить
список
рабочих
,
отделывающих
здание
435.
Из
-
влечь
эту
информацию
может
оказаться
непросто
,
так
как
идентификатор
нужного
нам
значения
запрятан
внутри
мно
-
жества
в
кортеже
.
Реляционная
таблица
3.2
не
соответствует
1
НФ
,
так
как
значения
атрибута
№
здания
не
являются
ато
-
марными
.
Однако
таблица
3.1
имеет
1
НФ
,
так
как
нужное
нам
значение
,
то
есть
номер
конкретного
здания
,
может
быть
выбрано
путем
простой
ссылки
на
имя
атрибута
№
здания
.
3.2.
Функциональные
зависимости
и
детерминанты
Функциональные
зависимости
(
ФЗ
)
позволяют
накладывать
дополнительные
ограничения
на
реляционную
схему
.
Основ
-
ная
идея
состоит
в
том
,
что
значение
одного
атрибута
в
кортеже
однозначно
определяет
значение
другого
атрибута
.
Например
,
в
каждом
кортеже
таблицы
3.1
№
работника
од
-
нозначно
определяет
фамилию
;
№
работника
однозначно
определяет
специальность
.
Записываются
эти
две
функцио
-
нальные
зависимости
следующим
образом
:
ФЗ
:
№
работника
⎯>
фамилия
,
ФЗ
:
№
работника
⎯>
специальность
.
Функциональная
зависимость
–
значение
атрибута
в
кортеже
однозначно
определяет
значение
другого
ат
-
рибута
в
кортеже
.
Более
формально
мы
можем
определить
функциональ
-
ную
зависимость
следующим
образом
:
если
А
и
В
–
атри
-
буты
в
таблице
R,
то
запись
ФЗ
: A
⎯>
В
обозначает
,
что
если
два
кортежа
в
таблице
R
имеют
одно
и
то
же
значение
атрибута
А
,
то
они
имеют
одно
и
то
же
значение
атрибута
В
.
Это
определение
также
применимо
,
если
А
и
В
–
множества
столбцов
,
а
не
просто
отдельные
столбцы
.
Обозначение
⎯>
читается
«
функционально
определяет
».
55
Атрибут
в
левой
части
ФЗ
называется
детерминантом
,
так
как
его
значение
однозначно
определяет
значение
атри
-
бута
в
правой
части
.
Ключ
таблицы
всегда
является
детер
-
минантом
,
так
как
его
значение
однозначно
определяет
зна
-
чение
каждого
атрибута
таблицы
.
3.3.
Вторая
нормальная
форма
Вторая
и
третья
нормальные
формы
касаются
отношений
между
ключевыми
и
неключевыми
атрибутами
.
Реляционная
таблица
находится
во
второй
нормальной
форме
(2
НФ
),
если
все
неключевые
атрибуты
являются
функционально
за
-
висимыми
от
всего
ключа
.
Таким
образом
, 2
НФ
может
оказать
-
ся
нарушена
только
в
том
случае
,
когда
ключ
составной
,
то
есть
ключом
является
набор
из
нескольких
атрибутов
.
Рассмотрим
реляционную
таблицу
3.3.
В
ней
ключ
состо
-
ит
из
атрибутов
№
работника
и
№
здания
.
Фамилия
опре
-
деляется
атрибутом
№
работника
и
,
следовательно
,
функ
-
ционально
зависит
от
части
ключа
.
Это
означает
,
что
для
определения
фамилии
работника
достаточно
знать
№
ра
-
ботника
.
Таким
образом
,
таблица
не
удовлетворяет
2
НФ
.
Если
оставить
эту
таблицу
в
таком
виде
,
не
приведя
ее
к
2
НФ
,
то
могут
возникнуть
следующие
проблемы
:
1.
Фамилия
работника
повторяется
в
каждой
строке
,
от
-
носящейся
к
назначению
этого
работника
.
2.
Если
фамилия
работника
изменяется
,
то
требуется
обновить
все
строки
,
содержащие
записи
о
назначениях
этого
работника
.
Это
аномалия
изменения
данных
.
3.
Из
-
за
такой
избыточности
может
возникнуть
несоответ
-
ствие
данных
,
когда
в
разных
строках
содержатся
разные
имена
для
одного
и
того
же
работника
.
4.
Если
в
какой
-
то
момент
времени
работник
не
имеет
назначений
,
то
может
не
оказаться
строки
,
в
которой
мож
-
но
хранить
имя
работника
.
Это
аномалия
ввода
данных
.