Функціональні залежності ОСНОВНІ ВИЗНАЧЕННЯ

Для демонстрації основних ідей даного розділу використовується декілька змінена версія змінної відносини з даними про постачання, яка на додаток до звичайних атрибутам s #, Р # і QTY міститиме також атрибут CITY, що представляє

1Следует відзначити, що це досить формальне твердження є істинним саме тому, що на розглянуті дані поширюються деякі практичні обмеження (Див главу 9) У даному випадку таким є правило, що в будь-який окремо взятий момент часу будь-який окремо взятий постачальник не може виконати більше однієї поставки будь-який окремо взятої деталі Іншими словами, образно кажучи, функціональні залежності відносяться до сфери семантики (вони визначають, що означають дані) і підтримуються свідомо, а не виникають в результаті щасливому випадку, завдяки якій в певний час у базі даних раптом зявляються деякі значення, повязані між собою певною закономірністю

Рис 111 Приклад значення змінної відносини SCP

місто відповідного постачальника Щоб уникнути плутанини, далі цю змінену змінну відносини ми будемо називати SCP Вона представлена ​​на рис 111 у вигляді таблиці

У цій області, як і в багатьох інших, важливо дуже чітко розрізняти, по-перше, значення змінної відносини в певний момент (варіант а), по-друге, безліч всіх можливих значень, які змінна відносини може приймати в різні моменти (варіант б) Спочатку дамо визначення концепції функціональної залежності для варіанту а, а потім – для варіанту б

і Функціональна залежність, варіант а Нехай r є відношенням, а X і Y – довільними підмножинами безлічі атрибутів відносини r Тоді Y функціонально залежно від х, що в символічному вигляді записується як

X   →  Y

(Читається або як X функціонально визначає Y , або як X стрілка Y ) тоді і тільки тоді, коли кожне значення безлічі х відносини r повязано точно з одним значенням множини Y відносини r Інакше кажучи, якщо два кортежу відносини r збігаються за значенням х, вони збігаються і за значенням Y

Наприклад, ставлення SCP (див рис 111) задовольняє вимогам наведеної нижче функціональної залежності, оскільки всі кортежі відносини SCP з однаковими значеннями атрибута S # мають одне і те ж значення атрибуту CITY

{   S#   }  → { CITY  }

Насправді, це відношення задовольняє вимогам відразу декількох функціональних залежностей

{S #, Р #} → {QTY}

{S#,P#}→{CITY}

{S#,P#}→{CITY,QTY}

{S#,P#}→{S#}

{S#,P#}→{S#,P#,CITY,QTY}

{S#} →{QTY}

{QTY} → {S#}

Вправа Перевірте правильність цього твердження

Ліву і праву частини символічного запису функціональної залежності іноді називають, відповідно, детерминантом і залежною частиною Як йдеться у визначенні, детермінант і залежна частина є множинами атрибутів Коли безліч містить тільки один атрибут, воно називається одноелементна безліччю У такому випадку дужки виключаються й символічна запис приймає наступний вигляд

S#   → CITY

Як вже було зазначено, ці функціональні залежності відносяться до варіанту а, тобто до окремих значенням змінних відносини Однак при розгляді самих змінних відносини, зокрема базових змінних відносини, інтерес представляють не стільки функціональні залежності в їх існуючих на деякий момент конкретних значеннях, скільки функціональні залежності, що виконуються для всіх можливих значеньданої змінної відносини Наприклад, у випадку змінної відносини SCP функціональна залежність

S#   →  CITY

виконується для всіх можливих значень змінної відносини SCP, оскільки в будь-який момент одному постачальнику відповідає в точності одне місто З цієї причини будь-які два кортежу змінної відносини SCP в один і той же момент і з одним і тим же номером постачальника повинні відповідати одному і тому ж місту Практично твердження, що дана функціональна залежність виконується завжди (Тобто для всіх можливих значень SCP), є обмеженням цілісності для змінної відносини SCP, оскільки при цьому накладаються певні обмеження на всі її допустимі значення Нижче наведена формулювання цього обмеження, яка виконана з використанням заснованого на численні предикатів синтаксису мови Tutorial D, який був представлений в розділі 9

CONSTRAINT S#_CITY_FD

FORALL SCPX FORALL SCPY

( IF SCPXS# = SCPYS#

THEN SCPXCITY = SCPYCITY END IF )

Тут SCPX і SCPY – змінні області значень, які беруть свої значення в

області визначення змінної відносини SCP Вираз s # → CITY може розцінюватися як скорочений спосіб подання цієї довшою формулювання

Вправа Наведіть алгебраїчну версію цього визначення

Нижче наведено визначення концепції функціональної залежності для варіанту б (Доповнення до визначення, яке відповідає варіанту а, відзначені напівжирним шрифтом)

■ Функціональна залежність, варіант б Нехай R є змінноївідносини, а х і Y – довільними підмножинами безлічі атрибутів змінної відносини R Тоді Y функціонально залежно від х, що в символічному вигляді | записується як

X   →   Y

(І читається або як х функціонально визначає Y, або як X стрілка Y) тоді і тільки тоді, колидля будь-якого допустимого значення змінної відносини R кожне значення множини X відносини R повязано точно з одним значенням

множини Y відносини R Інакше кажучи, для будь-якого допустимого значення змінної відношення R, якщо два кортежу змінної відносини R збігаються за значенням X, вони також збігаються і за значенням Y

Надалі термін функціональна залежність буде використовуватися в останньому тлумаченні, більш обмеженому і безвідносному до часу (За винятком особливо відзначених випадків)

Нижче перераховано кілька функціональних залежностей, що виконуються

(Безвідносних до часу) для змінної відносини SCP

{S #, Р #} → QTY

{S #, Р #} → CITY

{S#, P# } → { CITY, QTY }

{S#, P# } → S#

{S#, P# } → { S#, P#, CITY, QTY }

{ S# }   → CITY

Зверніть увагу, зокрема, на функціональні залежності, які вико няются для відносини, представленого на рис 111, але НЕ Завжди виконуються для змінної відносини SCP

S#     → QTY

QTY → S#

Інакше кажучи, таке твердження, як (наприклад) кількість деталей в кожній поставці даного постачальника однаково, дійсно виявилося істинним для конкретних значень, присутніх у відношенні на рис 111, але хибним для всіх можливих допустимих значень змінної відносини SCP

Слід зазначити, що якщо х є потенційним ключем змінної відношення R, то всі атрибути Y змінної відносини R повинні обовязково бути функціонально залежними від X (цей факт згадується в розділі 910 чолі 9 і безпосередньо випливає з визначення потенційного ключа) Аналогічно, у змінній відносини деталей р необхідно, щоб завжди виконувалася наступна залежність

Р # → {Р #, PNAME, COLOR, WEIGHT, CITY}

Дійсно, якщо змінна відносини R задовольняє функціональної залежності А → в і А НЕ є потенційним ключом2, то R обовязково буде характеризуватися деякою надмірністю Наприклад, якщо звернутися до змінної відносини SCP, то наявність в ній функціональної залежності S # → CITY призведе до того, що відомості про місце розташування постачальника в певному місті повторяться багато разів (це добре видно на рис 111) Детальніше дане питання обговорюється в наступному розділі

Тепер, навіть якщо обмежитися розглядом функціональних залежностей, які мають місце в будь-який момент, повний набір функціональних залежностей, що виконуються для всіх допустимих значень заданої змінної відносини, може бути все ще дуже великим, що можна бачити на прикладі змінної відносини SCP

2 При тих умовах, що ця функціональна залежність не є тривіальної (Розділ 103),

причому А не є суперключом (Розділ 105), a R містить принаймні два кортежу ()

(Упражненіе Спробуйте записати повне безліч функціональних залежностей, що задовольняються змінної відносини SCP) Велика частина що залишився в цій главі матеріалу присвячена пошукам методів скорочення обширного безлічі функціональних залежностей до деяких допустимих розмірів

Чому ця мета настільки важлива Як вже зазначалося, одна з причин полягає в тому, що функціональні залежності є обмеженнями цілісності, тому бажано, щоб СУБД забезпечувала їх дотримання Отже, для кожного заданого безлічі функціональних залежностей s бажано знайти таку безліч т,

яке (в ідеальній ситуації) було б істотно менше безлічі S і при цьому кожна функціональна залежність в множині S могла б бути замінена функціональною залежністю з безлічі т Якби така безліч т було знайдено, то СУБД достатньо було б контролювати виконання функціональних залежностей з безлічі т, що автоматично забезпечувало б дотримання всіх функціональних залежностей з безлічі s Саме тому завдання пошуку підходящого безлічі т представляє великий практичний інтерес

Джерело: Дейт К Дж, Введення в системи баз даних, 8-е видання: Пер з англ – М: Видавничий дім «Вільямс», 2005 – 1328 с: Ил – Парал тит англ

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*