Простейшие функциональные зависимости. Нормализация данных

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

Рассмотрим для примера конкретную схему отношений и проанализируем её недостатки. Предположим, что данные о студентах, факультетах, специальностях, включены в таблицу со следующей схемой отношения: СТУДЕНТ (Код студента, Фамилия, Название факультета, Название специальности).

Эта схема отношений обусловливает следующие недостатки соответствующей базы данных :

  • Дублирование информации (избыточность). У студентов, обучающихся на одном факультете, будет повторяться название факультета. Для разных факультетов будут повторяться специальности.
  • Потенциальная противоречивость (аномалии обновления ). Если, например, изменится название специальности, то изменяя её в одном кортеже (у одного студента), необходимо изменять и во всех других кортежах, где она присутствует.
  • Потенциальная возможность потери сведений (аномалии удаления ). При удалении информации о всех студентах, поступающих на определенную специальность, мы теряем все сведения об этой специальности.
  • Потенциальная возможность невключения информации в базу данных (аномалии включения ). В базе данных будут отсутствовать сведения о специальности, если на ней нет обучающихся студентов.

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

Нормализация. Первая нормальная форма .

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

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

Рассмотрим следующий пример.

Таблица представляет сущность ЭКЗАМЕНАЦИОННАЯ ВЕДОМОСТЬ

Код студента Фамилия Код экзамена Предмет и дата Оценка
1 Сергеев 1 Математика 5.06.08 4
2 Иванов 1 Математика 5.06.08 5
1 Сергеев 2 Физика 9.06.08 5
2 Иванов 2 Физика 9.06.08 5

Теперь на пересечении любой строки и любого столбца находится одно значение и, следовательно, данная таблица находится в первой нормальной форме .

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

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

Прежде чем перейти к построению второй нормальной формы , необходимо определить ряд формальных понятий.

8.2. Функциональные зависимости (зависимости между атрибутами отношения)

Пусть R(A 1 , A 2 , ..., A n) – схема отношения , а X и Y – подмножества {A 1 , A 2 , ..., A n } .

Функциональная зависимость на отношении R – это утверждение вида "Если два кортежа R совпадают по атрибутам множества (т.е. эти кортежи имеют в соответствующих друг другу компонентах одни и те же значения для каждого атрибута множества X ), то они должны совпадать и по атрибутам множества . Формально эта зависимость записывается выражением X -> Y , причем говорится, что X функционально определяет Y . Часто используется другое утверждение: X функционально определяет Y или Y функционально зависит от X (обозначается X -> Y ) тогда и только тогда, когда каждое значение множества X отношения R связано с одним значением множества Y отношения R . Иначе говоря, если два кортежа R совпадают по значению X , они совпадают и по значению Y .

Замечание. Вообще говоря, под термином " отношение " могут подразумеваться два понятия:

  • отношение как переменная, которая может принимать разные значения (таблица, в строки и столбцы которой могут быть вписаны разные значения);
  • отношение, как набор конкретных значений (таблица с заполненными элементами).

Функциональные зависимости характеризуют все отношения, которые могут быть значениями схемы отношения R в принципе. Поэтому единственный способ определить функциональные зависимости – внимательно проанализировать семантику (смысл) атрибутов.

Функциональные зависимости являются, в частности, ограничениями целостности, поэтому целесообразно проверять их при каждом обновлении базы данных .

Пример функциональных зависимостей для отношения ЭКЗАМЕНАЦИОННАЯ ВЕДОМОСТЬ

Код студента -> Фамилия Код студента, Код экзамена -> Оценка

Пример функциональных зависимостей для отношения СТУДЕНТ, приведенного в начале настоящей лекции

Код студента -> Фамилия, Код студента -> Факультет

Заметим, что последняя зависимость существует при условии, что один студент не может обучаться на нескольких факультетах.

Полное множество функциональных зависимостей

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

Заданное множество функциональных зависимостей для отношения R обозначим F , полное множество функциональных зависимостей, которые логически можно получить из F , называется замыканием F и обозначается F + .

Если множество функциональных зависимостей совпадает с замыканием данного множества, то такое множество функциональных зависимостей называется полным .

Введенные понятия позволяют формально определить понятие ключа.

Пусть существует некоторая схема R с атрибутами A 1 A 2 ...A n , F – некоторое множество функциональных зависимостей и X – некоторое подмножество R . Тогда X называется ключом, если, во-первых, в F + существует зависимость X -> A 1 A 2 ...A n и, во-вторых, ни для какого подмножества Y , входящего в X , зависимость Y -> A 1 A 2 ...A n не принадлежит F + .

Полной функциональной зависимостью называется зависимость неключевого атрибута от всего составного ключа .

Частичной функциональной зависимостью будем называть зависимость неключевого атрибута от части составного ключа .

Для вычисления замыкания множества функциональных зависимостей используются следующие правила вывода (

При проектировании базы данных в реляционной СУБД основной целью разра­ботки логической модели данных является создание точного представления дан­ных, связей между ними и требуемых ограничений. Для этого не­обходимо определить, прежде всего, подходящий набор отношений. Метод, используемый при этом, называется нормализацией (normalization). Нормализация представляет собой вариант восходящего подхода к проектированию базы данных, который начинается с установления связей между атрибутами.

Цель нормализации

Нормализация - метод создания набора отношений с заданными свойствами на основе требований к данным, установленным в некоторой орга­низации.

Нормализация часто выполняется в виде последовательности тестов для некоторого отношения с целью проверки его соответствия (или несоответствия) требованиям заданной нормальной формы.

Процесс нормализации является формальным методом, который позволяет идентифицировать отношения на основе их первичных ключей (или потенциальных ключей, как в случае НФБК) и функциональных зависимостей, существующих между их атрибутов. Проектировщики баз данных могут использовать нормализацию в виде наборов тестов, применяемых к отдельным отношениям с целью нормализации реляционной схемы до заданной конкретной формы, что позволит предотвратить возможное возникновение аномалий обновления.

Основная цель проектирования реляционной базы данных заключается в группи­ровании атрибутов и отношения так, чтобы минимизировать избыточность данных и таким образом сократить объем памяти, необходимый для физического хранения от­ношений, представленных в виде таблиц.

Функциональные зависимости

Функциональная зависимость описывает связь между ат­рибутами и является одним из основных понятий нормализации. В этом разделе приводится определение данного понятия, а в следующих - описание его взаимосвя­зи с процессами нормализации отношений базы данных.

Функциональная зависимость - описывает связь между атрибутами отношения. Например, если в отношении. R, содержащем атрибуты А и В, атрибут В функционально зависит от атрибута А (что обозначается как АВ), то каждое значение атрибута А связано только с одним значением атрибута В. (Причем каждый из атрибутов А и В может состоять из одного или нескольких атрибутов.)

Функциональная зависимость является смысловым (или семантическим) свойст­вом атрибутов отношения. Семантика отношения указывает, как его атрибуты могут быть связаны друг с другом, а также определяет функциональные зависимости меж­ду атрибутами в виде ограничений, наложенных на некоторые атрибуты.

Зависимость между атрибу­тами А и В можно схематически представить в виде диаграммы, показанной на рисунке 5.

Детерминант - детерминантом функциональной зависимости называется атрибут или группа атрибутов, расположенная на диаграмме функциональ­ной зависимости слева от символа стрелки.

Рисунок 5 - Диаграмма функциональной за­висимости

При наличии функциональной зависимости атрибут или группа атрибутов, распо­ложенная на ее диаграмме слева от символа стрелки, называется детерминантом (determinant). Например, на рис. 6.1 атрибут А является детерминантом атрибута В.

Концепция функциональной зависимости является центральным понятием про­цесса нормализации.

Что такое функция? Функциональная зависимость, или функция, - это такая зависимость между двумя переменными, при которой каждому значению независимой переменной соответствует единственное значение зависимой переменной. Независимую переменную иначе называют аргументом, а о зависимой говорят, что она является функцией от этого аргумента. Все значения, которые принимает независимая переменная, образуют область определения функции.


Существует несколько способов задания функции: 1.С помощью таблицы. 2.Графический. 3.С помощью формулы. Графиком функции называется множество всех точек координатной плоскости, абсциссы которых равны значениям аргумента, а ординаты - соответствующим значениям функции.



Линейной функцией называется функция, которую можно задать формулой вида y=kx+b, где x – независимая переменная, k и b – заданные числа. Для построения графика линейной функции достаточно найти координаты двух точек графика, отметить эти точки в координатной плоскости и провести через них прямую. Прямая пропорциональность – функция вида у=кх, где х – независимая переменная, к – не равное нулю число. Графиком прямой пропорциональности является прямая, проходящая через начало координат.


Построение графика линейной функции Для построения графика линейной функции необходимо: - выбрать любые два значения переменной х (аргумента), например 0 и 1; - вычислить соответствующие значения переменной y (функции). Полученные результаты удобно записывать в таблицу x01 y - полученные точки А и В изображаем в системе координат; - соединяем по линейке точки А и В. Пример. Построим график линейной функции y = -3·x+6. x01 y63


Обратной пропорциональностью называется функция, которую можно задать формулой вида у=k/х, где х - независимая переменная и k - не равное нулю число. Областью определения такой функции является множество всех чисел, отличных от нуля. Если величины x и y обратно пропорциональны, то функциональная зависимость между ними выражается уравнением y = k / x, где k есть некоторая постоянная величина. График обратной пропорциональности есть кривая линия, состоящая из двух ветвей. Этот график называют гиперболой. В зависимости от знака k ветви гиперболы расположены либо в 1 и 3 координатных четвертях (k положительно), либо во 2 и 4 координатных четвертях (k отрицательно). На рисунке изображен график функции y = k/х, где k – отрицательное число.



ЧАСТНЫЕ СЛУЧАИ ЛИНЕЙНОЙ ФУНКЦИИ. y=kx, k0, b=0 - прямая пропорциональность,. График - прямая, проходящая через начало координат; y=b, k=0, b0. (b>0, выше оси OX; b 0, выше оси OX; b"> 0, выше оси OX; b"> 0, выше оси OX; b" title="ЧАСТНЫЕ СЛУЧАИ ЛИНЕЙНОЙ ФУНКЦИИ. y=kx, k0, b=0 - прямая пропорциональность,. График - прямая, проходящая через начало координат; y=b, k=0, b0. (b>0, выше оси OX; b"> title="ЧАСТНЫЕ СЛУЧАИ ЛИНЕЙНОЙ ФУНКЦИИ. y=kx, k0, b=0 - прямая пропорциональность,. График - прямая, проходящая через начало координат; y=b, k=0, b0. (b>0, выше оси OX; b">

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

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

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

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

Похожие публикации