Новые книги

Журналист Дэвид Оуэн рассказывает историю изобретения, без которого немыслима жизнь современного офиса – копировального аппарата. Уникальный случай: он был создан усилиями практически одного человека. Поразительное упорство изобретателя Честера Карлсона принесло ему славу второго Гутенберга и избавило тысячи людей на планете от изнурительного переписывания документов. Автор прослеживает путь Честера от первого ксерографического аппарата, изготовленного в 1938 году, до создания гигантской корпорации Xerox, чье название стало синонимом высочайшего качества и скорости копирования. Это захватывающее повествование о борьбе за реализацию грандиозного открытия, которое журнал Fortune позднее назвал «самым успешным товаром, который когда-либо продавался в Америке».
Многие из нас никогда не задумывались о том, сколько времени мы тратим на телефонные разговоры «ни о чем», на общение в социальных сетях, да и просто сидя за компьютером, блуждая по просторам всемирной паутины. А ведь все это время, ресурсы и энергию можно использовать в продуктивных целях, обеспечивая себе стабильный дополнительный (а может быть, и основной) заработок и повышая свой уровень жизни. Обо всем этом расскажет в своей книге гуру сетевого маркетинга Антон Агафонов.

Автор делится своими секретами и тонкостями работы в MLM-бизнесе, которые помогут справиться со всеми трудностями и изменить свою жизнь к лучшему благодаря тем ресурсам, что находятся у каждого из нас буквально под рукой.

О нормализации, функциональных и многозначных зависимостях

 

4.4. О нормализации, функциональных и многозначных зависимостях

Нормализация – это разбиение таблицы на две или более, обладающих лучшими свойствами при включении, изменении и удалении данных. Окончательная цель нормализации сводится к получению такого проекта базы данных, в котором каждый факт появляется лишь в одном месте, т.е. исключена избыточность информации. Это делается не столько с целью экономии памяти, сколько для исключения возможной противоречивости хранимых данных.

Как указывалось в п. 3.1, каждая таблица в реляционной БД удовлетворяет условию, в соответствии с которым в позиции на пересечении каждой строки и столбца таблицы всегда находится единственное атомарное значение, и никогда не может быть множества таких значений. Любая таблица, удовлетворяющая этому условию, называется нормализованной (см. таблицы рис. 4.24.4). Фактически, ненормализованные таблицы, т.е. таблицы, содержащие повторяющиеся группы (см. рис. 4.1), даже не допускаются в реляционной БД.

Всякая нормализованная таблица автоматически считается таблицей в первой нормальной форме, сокращенно 1НФ. Таким образом, строго говоря, "нормализованная" и "находящаяся в 1НФ" означают одно и то же. Однако на практике термин "нормализованная" часто используется в более узком смысле – "полностью нормализованная", который означает, что в проекте не нарушаются никакие принципы нормализации.

Теперь в дополнение к 1НФ можно определить дальнейшие уровни нормализации – вторую нормальную форму (2НФ), третью нормальную форму (3НФ) и т.д. По существу, таблица находится в 2НФ, если она находится в 1НФ и удовлетворяет, кроме того, некоторому дополнительному условию, суть которого будет рассмотрена ниже. Таблица находится в 3НФ, если она находится в 2НФ и, помимо этого, удовлетворяет еще другому дополнительному условию и т.д.

Таким образом, каждая нормальная форма является в некотором смысле более ограниченной, но и более желательной, чем предшествующая. Это связано с тем, что "(N+1)-я нормальная форма" не обладает некоторыми непривлекательными особенностями, свойственным "N-й нормальной форме". Общий смысл дополнительного условия, налагаемого на (N+1)-ю нормальную форму по отношению к N-й нормальной форме, состоит в исключении этих непривлекательных особенностей. В п. 4.3 мы выявляли непривлекательные особенности таблицы рис. 4.2 и для их исключения выполняли "интуитивную нормализацию".

Теория нормализации основывается на наличии той или иной зависимости между полями таблицы. Определены два вида таких зависимостей: функциональные и многозначные.

Функциональная зависимость. Поле В таблицы функционально зависит от поля А той же таблицы в том и только в том случае, когда в любой заданный момент времени для каждого из различных значений поля А обязательно существует только одно из различных значений поля В. Отметим, что здесь допускается, что поля А и В могут быть составными.

Например, в таблице Блюда (рис. 4.4) поля Блюдо и Вид функционально зависят от ключа БЛ, а в таблице Поставщики рис. 4.3 поле Страна функционально зависит от составного ключа (Поставщик, Город). Однако последняя зависимость не является функционально полной, так как Страна функционально зависит и от части ключа – поля Город.

Полная функциональная зависимость. Поле В находится в полной функциональной зависимости от составного поля А, если оно функционально зависит от А и не зависит функционально от любого подмножества поля А.

Многозначная зависимость. Поле А многозначно определяет поле В той же таблицы, если для каждого значения поля А существует хорошо определенное множество соответствующих значений В.

Обучение

Дисциплина Преподаватель Учебник
Информатика Шипилов П.А. Форсайт Р. Паскаль для всех
Информатика Шипилов П.А. Уэйт М. и др. Язык Си
Информатика Голованевский Г.Л. Форсайт Р. Паскаль для всех
Информатика Голованевский Г.Л. Уэйт М. и др. Язык Си
... ... ...

Рис. 4.5. К иллюстрации многозначных зависимостей

Для примера рассмотрим таблицу "Обучение" (рис. 4.5). В ней есть многозначная зависимость "Дисциплина-Преподаватель": дисциплина (в примере Информатика) может может читаться несколькими преподавателями (в примере Шипиловым и Голованевским). Есть и другая многозначная зависимость "Дисциплина-Учебник": при изучении Информатики используются учебники "Паскаль для всех" и "Язык Си". При этом Преподаватель и Учебник не связныфункциональной зависимостью, что приводит к появлению избыточности (для добавление еще одного учебника придется ввести в таблицу две новых строки). Дело улучшается при замене этой таблицы на две: (Дисциплина-Преподаватель и Дисциплина-Учебник).

[Назад] [Содержание] [Вперед]