Теория:

Понятие функциональной зависимости — одно из величайших изобретений человеческой мысли. И хотя слово «функция» наверняка ассоциируется у вас с математикой, на самом деле с функциями человек имеет дело повсеместно. Но прежде чем привести примеры, подтверждающие это высказывание, напомним, что функцией называется сопоставление каждому элементу одного множества ровно одного элемента из другого множества. Отметим, что это «другое множество» совсем не обязано отличаться от исходного. В математике обычно рассматриваются числовые функции, т. е. оба множества — это множества чисел. На самом деле это совсем необязательно. Вот примеры функций:
  1. каждому человеку сопоставляется его фамилия (функции из множества людей в некоторое множество слов);
  2. каждому человеку сопоставляется его рост (функция из множества людей в некоторое множество положительных чисел);
  3. каждому городу России сопоставляется его почтовый индекс (функция из множества городов России в множество шестизначных натуральных чисел);
  4. каждой точке на поверхности Земли сопоставляются ее географические координаты (функция из множества точек поверхности в некоторое множество пар, каждая компонента которой — положительное число с указанием северного или южного, восточного или западного полушарий);
  5. каждому набору отпечатков пяти пальцев правой руки, имеющихся в картотеке МВД, сопоставляется человек с такими отпечатками.
Пусть нам дана некоторая функция \(f\), сопоставляющая каждому элементу \(x\) из одного множества элемент \(y\) другого множества. Поскольку \(y\) по \(x\) определяется однозначно, то обычно пишут \(y=f(x)\). Определим отношение \(R\), объявив пару \((x;y)\) находящейся в отношении \(R\) в том и только в том случае, если \(y=f(x)\).
Тем самым каждая функция может быть описана как некоторое отношение, и даже не одно. Обратное, однако, неверно — ведь не у каждого отношения можно так выбрать атрибуты, чтобы значения одного из них однозначно определяли значении другого. Рассмотрим отношение «\(x\) является родным братом для \(y\)». Конечно, если в семье только два брата, то для каждого \(x\) значение \(y\) определено однозначно, но есть семьи с большим числом братьев.
Говоря о представлении функции в виде отношения, мы имели в виду лишь бинарные отношения. Однако для функции значения аргумента, как и значения функции, вовсе не обязаны состоять из значений одного атрибута. Скажем, для функции, сопоставляющей набору отпечатков пяти пальцев имя, отчество и фамилию их владельца, аргумент содержит пять атрибутов, а значение функции — три. Записывая эту функцию как отношение, мы получим отношение с восемью атрибутами, разделенными на две группы: первая задает аргумент функции, вторая — ее значение.
Будем называть отношение функциональным, если его атрибуты можно разбить на две группы так, чтобы значения одной группы атрибутов однозначно определили значения другой группы. Иными словами, первая группа атрибутов может рассматриваться как аргумент некоторой функции, а вторая группа определяет значение этой функции. Вовсе не обязательно, чтобы атрибуты одной группы были соседними в записи отношения. Если отношение функционально, то набор атрибутов, относящихся к аргументу функции, задаваемой этим отношением, будем называть ключевым. Рассмотрим для примера отношение, заданное таблицей \(1\).
 
Таблица 1
 
3.png
 
 
Атрибут Адрес не может быть ключевым, поскольку в одном доме может быть несколько телефонов. Если среди владельцев имеются однофамильцы, то атрибут Владелец также не может быть ключевым. А вот Номер телефона — это ключевой атрибут. Скорее всего, ключевым будет и набор из двух атрибутов Владелец-Адрес: слишком мала вероятность проживания в доме однофамильцев или владельца двух телефонных номеров сразу. Для отношения, представленного таблицей, легко сформулировать критерий того, что данный набор атрибутов является ключевым.
Обрати внимание!
Набор атрибутов ключевой, если в таблице нет двух строк с одинаковым набором значений этих атрибутов.
Источники:
Гейн А. Г., Ливчак А. Б., Сенокосов А. И. Информатика и ИКТ.  10 класс. М. : Просвещение, 164 с.