Функциональные зависимости, ключи и уникальность
Раздел: Проектирование баз данныхУ многих студентов возникает путаница с понятиями функиональной зависимости, ключа и уникальности. Чтобы избежать этой путаницы, уясните себе следующее: детерминант функциональной зависимости может в отношении быть уникальным или неуникальным. Если нам известно, что А определяет В и что А и В находятся в одном и том же отношении, мы все равно не знаем, является ли А уникальным в этом отношении. Мы знаем только то, что А определяет В.
Например, в отношении СЕКЦИИ атрибут Секция функционально определяет атрибут Плата, но название конкретной секции может, тем не менее, фигурировать в нескольких строках отношения. Функциональная зависимость говорит только о том, что везде, где атрибуту Секция сопутствует атрибут Плата, конкретному значению атрибута Секция всегда соответствует одно и то же значение атрибута Плата. То есть абонемент в секцию лыж всегда стоит $200, независимо от того, сколько раз секция лыж фигурирует в таблице.
В отличие от детерминантов, ключи всегда являются уникальными. Ключ функционально определяет целую строку. Если бы значения ключей дублировались, дублировался бы и весь кортеж. Но это недопустимо, поскольку по определению строки в отношении должны быть уникальными. Таким образом, когда мы говорим, что атрибут (или комбинация атрибутов) является ключом, мы знаем, что этот атрибут или комбинация будут уникальными. Например, если сочетание (НомерСтудента, Секция) является ключом, то сочетание (100, Лыжи) может появиться в таблице только один раз.
Чтобы проверить, как вы усвоили эти понятия, попытайтесь объяснить, почему в отношении СЕКЦИЯ НомерСтудента является и детерминантом, и ключом, а Секция является только детерминантом, но не ключом.