- •Базы данных Основная терминология
- •Дополнения к определениям
- •Пользователи
- •Основы проектирования бд Терминология
- •Модели бд Простая двумерная структура
- •Иерархическая структура
- •Реляционная модель данных
- •708 Тульский механический завод.
- •Главный ключ таблицы
- •Проблемы реляционного подхода Общие правила проектирования бд
- •Задача нормализации
- •Повторяющиеся группы
- •Нормальные формы
- •Первая нормальная форма
- •Вторая нормальная форма
- •Третья нормальная форма
- •Даталогическая модель базы данных
- •Одноимённые (общие) поля в связанных таблицах
- •Поиск информации. Индексные файлы
- •Проблемы достоверности информации
- •Оперативные таблицы и справочники
- •Функции универсальной информационной системы
- •Основные функции ис
- •Вспомогательные функции ис
- •Документальные системы
- •Обзор субд
Повторяющиеся группы
При формировании даже простейших и реляционных по своей природе структур иногда возникает проблема с количеством полей.
Например, «Кадры». Каждая запись описывает работника. При необходимости вести более исчерпывающую информацию, получим ситуацию, когда объем информации сильно меняется от человека к человеку (прежние места работы, командировки, научные премии, взыскания, напечатанные труды, заболеваемость и т.д.).
Если все это попросту включить в файл KADR, то число полей для каждой записи придется брать по максимуму. Например, ученый может иметь до 10 премий, тогда придется включать в общую таблицу 20 полей: ДАТА1, КОД1; ДАТА2, КОД2;… Большая часть значений этих полей будет пустой.
Подобную информацию, разную по объему для каждой записи основной таблицы называют повторяющимися группами. Решение задачи заключается в заведении отдельной таблицы со своим ключом для каждой повторяющейся группы. Например, для премий:
PREM
Таб_ном
Дата_присужд
Код_прем
Главным ключом в этой таблице является Таб_ном + Дата_присуж. Если допустить, что в один день сотрудник может получить две премии (в юбилей), то в
главный ключ придется включить все поля. Одновременно придется ввести и словарь:
SL_PREM
Код_прем
Назв_прем
Рассмотрим еще один пример.
Необходимо вести список сплавов с указанием значений всех возможных параметров для каждого из них. Допустим число параметров равно 100 (плотность, теплоемкость, температура плавления, и т.д.). тогда таблица становится громоздкой:
Сплав
Код_спл
Пар1
Пар2
…
Пар100
и, поскольку для конкретного сплава имеются далеко не все параметры, то таблица сильно разрежена.
Поэтому добавляется таблица, хранящая только имеющиеся параметры:
Сплав-Параметр
Код_спл
Код_парам
Знач_парам
к которой, как и в предыдущем примере нужен словарь (справочник) параметров, содержащий код, наименование и описание параметра.
Единственный недостаток этой таблицы - многократное повторение кода одного и того же сплава.
Нормальные формы
Правила нормализации выстроены в последовательность шагов, называемых нормальными формами. Существует пять нормальных форм. Здесь описываются первые три формы, поскольку их применения достаточно для большинства баз данных.
Первая нормальная форма
Первая нормальная форма содержит правило о том, что каждая ячейка на пересечении строки и столбца в таблице должна содержать отдельное значение, а не список значений. Например, поле «Цена» должно содержать лишь одно значение цены. Повторяющиеся группы должны быть исключены.
Вторая нормальная форма
Вторая нормальная форма содержит требование о том, что каждый столбец, не входящий в ключ, должен находиться в зависимости от всего ключевого столбца, а не от его части. Это правило применимо в том случае, если первичный ключ состоит из нескольких столбцов. Предположим, что таблица, в которой первичный ключ состоит из столбцов с кодом заказа и кодом продукта, содержит следующие столбцы:
Код заказа (первичный ключ)
Код продукта (первичный ключ)
Имя продукта
Такая структура не соответствует второй обычной форме, т. к. имя продукта зависит от кода продукта, но не зависит от кода заказа; следовательно, этот столбец зависит лишь от части первичного ключа. Столбец с именем продукта следует удалить из таблицы. Он должен быть включен в другую таблицу (таблицу продуктов).
Замечание. На время анализа таблицы на соответствие второй нормальной форме следует хотя бы мысленно исключить числовые заменители составных первичных ключей (если они имеются).