Для множества функциональных зависимостей существует ряд закономерностей, которые выражаются теоремами. Знание теорем позволяет из исходного множества функциональных зависимостей получать производные зависимости.
Отметим ряд известных теорем о функциональных зависимостях. Атрибуты, фигурирующие в каждой теореме, должны находиться в одном и том же отношении.
Теорема 1
А,В -* А и А,В -> В.
Доказательство основано на том, что в строке <а,Ь> для атрибутов А и В значение а (как и значение Ь) присутствует один раз.
Теорема 2
А -> В и А ->С тогда и только тогда, когда А -> ВС.
Рассмотрим произвольное значение а атрибута А. Если А ->В и А -* С, то im В(а) и im C(a) содержат по одному элементу. Предположим, что зависимость А -> ВС неверна и ini ВС(а) состоит из 2 иди более элементов. Тогда либо im B(a), либо im C(a) должны содержать более одного элемента. Полученное противоречие доказывает зависимость А -> ВС.
Обратно, если А -> ВС, то imBC(a) содержит один элемент вида <Ь,с> для любого а. Зафиксируем некоторое значение al. Значение b (как и значение с) встречается в сочетании с д! только один раз, следовательно, справедливо А -> В и А ->С.
Теорема 3
Если А ->" В и В ->С, то А -> С.
Предположим, что зависимость А -> С неверна и множество im С(а) содержит более одного элемента. Каждому значению а соответствует единственное значение b (в силу А -> В), поэтому im C(b) содержит более одного элемента. Получилось противоречие с условием В -> С, что и доказывает теорему.
Примечательно, что доказательства остальных теорем опираются на первые 3 теоремы, а не доказываются от противного.
Теорема 4
Если А—» В, то АС -> В (С произвольно).
Доказательство
АС —> А (теорема 1), А -> В (условие), следовательно, АС -> В по теореме 3.
Теорема 5
Если А -> В, то АС -> ВС (С произвольно).
Доказательство
АС —» В (теорема 4), АС —» С (теорема 1), следовательно, АС->ВС по теореме 2.
Теорема 6
Если А ->В и ВС ->D, то АС -* D.
Доказательство
Из А -> В следует АС -> ВС (теорема 5). ВС -> D (условие), поэтому АС—> D по теореме 3.
Вторая и третья нормальные формы отношений
Отношение имеет вторую нормальную форму (2НФ), если оно соответствует 1НФ и не содержит неполных функциональных зависимостей.
Неполная функциональная зависимость - это две зависимости:
· вероятный ключ отношения функционально определяет некоторый неключевой атрибут,
· часть вероятного ключа функционально определяет этот же неключевой атрибут.
Отношение, не соответствующее 2НФ, характеризуется избыточностью хранимых данных.
Например:
Т4 | |||
Магазин | Изделие | Цена | План_1999_г. |
Салют | М22 | 50 | 200 |
Салют | К14 | 40 | 100 |
АТЭ | М22 | 50 | 300 |
АТЭ | Т62 | 60 | 100 |
Функциональные зависимости отношения Т4:
Избыточность иллюстрируется тем фактом, что цена изделия указывается столько раз, сколько магазинов продают это изделие (изделие М22 в Т4). Переход к 2НФ и соответственно устранение отмеченной избыточности данных связано с созданием двух отношений вместо исходного отношения Т4.
Т41 | ||
Магазин | Изделие | План_1999_г. |
СалютСалютАТЭАТЭ | М22К14М22Т62 | 200100300100 |
Т42 | |
Изделие | Цена |
М22 К14 Т62 | 50 40 60 |
Отношение соответствует ЗНФ, если оно соответствует 2НФ и среди его атрибутов отсутствуют транзитивные функциональные зависимости (ФЗ).
Алгоритм получения отношений в ЗНФ обладает следующими свойствами:
· сохраняет все первоначальные функциональные зависимости, т.е. зависимость, справедливая в R, справедлива и в одном из производных отношений. Это гарантирует получение осмысленных отношений с легко интерпретируемой структурой;
· обеспечивает соединение без потерь, т.е. значения исходного отношения R могут быть восстановлены из проекций отношения R с помощью операции соединения;
· результат декомпозиции в ЗНФ обычно содержит меньше значений атрибутов, чем исходное отношение R (происходит уменьшение избыточности).
3. Разработать информационную систему для учета затрат на производство продукции
Данная задача необходима для планово-экономического отдела предприятия. Ее цель показать затраты на производство с учетом материальных и трудовых ресурсов. Результаты задачи показывают насколько выгодно для предприятия выполнение данного заказа изготовления продукции. Данные о необходимой информации поступают из следующих отделов участвующих в процессе обработки информации:
· финансовый;
· отдела материалов;
· комплектующий отдел;
· расчетный отдел;
· др.
Необходимость или периодичность выполнения данной задачи зависит от количества выполняемых заказов. Другими словами, она необходима при выполнении любого заказа, выполняемого на предприятии.
Приведенные входные данные имеют укрупненный вид.
Входные таблицы:
1. Сводная таблица учетов заказов.(Costs)
Наименование поля | Идентификация | Тип данных |
Код записи (ключевое) | ID | Счетчик |
Код заказа | KodZak | Текстовое |
Дата | Data | Дата/Время |
Затраты на материалы | Materials | Денежный |
Затраты на всп. материалы | SumMaterials | Денежный |
Накладные расходы | Overheads | Денежный |
Полуфабрикаты/комплектующие | SemiProducts | Денежный |
2. Таблица учета работы над заказом специалистов (MainManufacture)
Наименование поля | Идентификация | Тип данных |
Код записи (ключевое) | ID | Счетчик |
Код заказа | ID_costs | Числовое-целое |
Код рабочего | WorkerID | Числовое-целое |
Заработная плата | Zarpl | Денежный |
3. Таблица учета работы над заказом групп работников (SubManufacture)
Наименование поля | Идентификация | Тип данных |
Код записи (ключевое) | ID | Счетчик |
Код заказа | ID_Costs | Числовое-целое |
Количество работников | Kolvo | Числовое-целое |
Средняя заработная плата | AvrZarpl | Денежный |
4. Таблица работников-специалистов (WorkersList)
Наименование поля | Идентификация | Тип данных |
Код записи (ключевое) | ID | Счетчик |
Табельный номер | TabNo | Числовое-целое |
Фамилия, И.О. | FIO | Текстовое |
Построим схему данных.