Функционална зависимост в СУБД: Видове с примери

⚡ Умно обобщение

Функционалната зависимост е ограничение, което определя как един атрибут се свързва с друг в СУБД. Тя е в основата на нормализацията, като идентифицира детерминанти и зависими елементи, и се класифицира като многозначни, тривиални, нетривиални и транзитивни зависимости.

  • ➡️ Основна идея: В X → Y, детерминантата X фиксира стойността на зависимия Y, записана със стрелка.
  • ???? ️ Основни условия: Детерминанта, зависимост, аксиома, декомпозиция и обединение описват как зависимостите се именуват и манипулират.
  • 📐 Аксиоми на Армстронг: Рефлексивността, аугментацията и транзитивността предполагат всяка зависимост, която едно множество логически предполага.
  • 🔀 Четири вида: Многозначните, тривиалните, нетривиалните и транзитивните зависимости описват отделна атрибутна връзка.
  • 🧹 Линк за нормализиране: Зависимостите водят до нормализиране, което премахва излишествата и аномалиите при актуализиране.
  • 🔑 Закриване: Затварянето на атрибута разкрива кандидат-ключовете и дали е налице зависимост.
  • ✅ Възползвайте се: Добрите зависимости сигнализират за добър дизайн и разделят качествените схеми от лошите.

Функционална зависимост в СУБД

Какво е функционална зависимост?

Функционална зависимост (FD) е ограничение, което определя връзката на един атрибут с друг атрибут в система за управление на бази данни (СУБД). Функционалната зависимост помага за поддържане на качеството на данните в базата данни. Тя играе жизненоважна роля при намирането на разлика между добър и лош дизайн на базата данни.

Функционалната зависимост се обозначава със стрелка „→“. Функционалната зависимост на Y от X се представя чрез X → Y. Нека разберем функционалната зависимост с пример.

Пример:

Номер на служител Име на служителя Заплата Град
1 Dana 50000 Сан Франциско
2 Франсис 38000 Лондон
3 Андрю 25000 Токио

В този пример, ако знаем стойността на номера на служителя, можем да получим име на служителя, град, заплата и т.н. По този начин можем да кажем, че градът, името на служителя и заплатата са функционално зависими от номера на служителя.

Ключови термини

Ето някои ключови термини за функционална зависимост в база данни:

Ключови термини Descriptйон
аксиома Аксиомите са набор от правила за извод, използвани за извеждане на всички функционални зависимости в релационна база данни.
разлагане Правило, което предполага, че ако имате таблица, която изглежда съдържа два обекта, определени от един и същ първичен ключ, трябва да помислите за разделянето ѝ на две различни таблици.
Зависим Показва се от дясната страна на диаграмата на функционалните зависимости.
определящ Показва се от лявата страна на диаграмата на функционалните зависимости.
съюз Това предполага, че ако две таблици са отделни и първичният ключ е един и същ, трябва да помислите за обединяването им.

Правила за функционални зависимости (аксиоми на Армстронг)

По-долу са изброени трите най-важни правила за функционална зависимост в база данни. Те са известни като аксиоми на Армстронг и всяко друго правило за извод може да бъде изведено от тях.

  • Рефлексивно правило: Ако X е набор от атрибути и Y е подмножество на X, тогава X → Y е валидно.
  • Правило за увеличаване: Когато X → Y е валидно и C е набор от атрибути, тогава XC → YC също е валидно. Добавянето на атрибути не променя основната зависимост.
  • Правило за транзитивност: Подобно на транзитивното правило в алгебрата: ако X → Y е валидно и Y → Z е валидно, тогава X → Z също е валидно.

От тях произлизат още три правила, които се използват постоянно на практика:

  • Правило на Съюза: ако X → Y и X → Z, тогава X → YZ.
  • Правило за разлагане: ако X → YZ, тогава X → Y и X → Z.
  • Правило за псевдотранзитивност: ако X → Y и WY → Z, тогава WX → Z.

Многократното прилагане на тези правила към набор от зависимости води до неговото закриване, пълният набор от зависимости, които логически следват. Затварянето на набор от атрибути е и начинът, по който се намират кандидат-ключове, което е пряко свързано с изучаването на Ключове за СУБД.

Видове функционални зависимости в СУБД

В СУБД има основно четири вида функционална зависимост:

  • Многозначна зависимост
  • Тривиална функционална зависимост
  • Нетривиална функционална зависимост
  • Транзитивна зависимост

Многозначна зависимост в СУБД

Многозначна зависимост възниква в ситуация, когато в една таблица има множество независими многозначни атрибути. Многозначната зависимост е пълно ограничение между два набора от атрибути в една релация, изискващо наличието на определени кортежи. Разгледайте следния пример.

Пример:

Модел_автомобил Маф_година Цвят
H001 2017 метален
H001 2017 Зелена
H005 2018 метален
H005 2018 Блу
H010 2015 метален
H033 2012 Сив

В този пример, Maf_year и Color са независими един от друг, но зависят от Car_model. Тези две колони се считат за многостойностни, зависими от Car_model. Това е представено като:

модел_автомобил → година_на_производител

модел_автомобил → цвят

Тривиална функционална зависимост в СУБД

Тривиалната зависимост е набор от атрибути, който се нарича тривиален, ако наборът от атрибути е включен в този атрибут. Така че, X → Y е тривиална функционална зависимост, ако Y е подмножество на X. Разгледайте примера по-долу.

Emp_id Emp_name
AS555 тормозя
AS811 Джордж
AS999 Кевин

Да разгледаме тази таблица с две колони, Emp_id и Emp_name. {Emp_id, Emp_name} → Emp_id е тривиална функционална зависимост, тъй като Emp_id е подмножество на {Emp_id, Emp_name}.

Нетривиална функционална зависимост в СУБД

Нетривиална зависимост възниква, когато A → B е вярно и B не е подмножество на A. Ако атрибут B не е подмножество на атрибут A, зависимостта се счита за нетривиална.

Компанията Изпълнителен Директор Възраст
Microsoft Сатя Nadella 51
Google Сундар Pichai 46
iPhone Тим Кук 57

Пример:

{Компания} → {Главен изпълнителен директор} (ако знаем компанията, знаем и името на главния изпълнителен директор). Но главният изпълнителен директор не е подмножество на компанията и следователно е нетривиална функционална зависимост.

Транзитивна зависимост в СУБД

Транзитивната зависимост е вид функционална зависимост, която възниква, когато даден атрибут е индиректно определен от две функционални зависимости. Разгледайте примера по-долу.

Компанията Изпълнителен Директор Възраст
Microsoft Сатя Nadella 51
Google Сундар Pichai 46
Alibaba Джак Ма 54

{Компания} → {Главен изпълнителен директор} (ако знаем компанията, знаем и името на нейния главен изпълнителен директор).

{CEO} → {Age} (ако знаем изпълнителния директор, знаем и възрастта му).

Следователно, съгласно правилото за транзитивна зависимост, {Company} → {Age} трябва да е валидно, което е логично, защото ако знаем името на компанията, можем да намерим възрастта.

Забележка: транзитивна зависимост може да възникне само в релация с три или повече атрибута.

Какво е нормализиране?

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

Нормализацията е присъща на теорията на релационните бази данни. Тя може да има ефект на разделяне на данните в допълнителни таблици, така че всеки факт да се съхранява веднъж. Пълният процес е разгледан в ръководството за нормализиране на базата данни, който се основава директно на горните типове зависимости.

Предимства на функционалната зависимост

  • Функционалната зависимост избягва излишъка на данни, така че едни и същи данни не се повтарят на множество места в база данни.
  • Това ви помага да поддържате качеството на данните в базата данни.
  • Това ви помага да дефинирате значенията и ограниченията на базите данни.
  • Това ви помага да идентифицирате лоши дизайни.
  • Това ви помага да намерите фактите, свързани с дизайна на базата данни.

Въпроси и Отговори

Детерминантата е атрибутът отляво на стрелката, който фиксира стойността. Зависимата е атрибутът отдясно, чиято стойност се определя. В X → Y, X определя Y.

Функционалната зависимост фиксира една стойност за зависимия елемент. Многозначната зависимост позволява набор от независими стойности, поради което се нуждае от собствен атрибут и води до четвърта нормална форма.

Изчислете затварянето на набор от атрибути, използвайки зависимостите. Ако затварянето включва всеки атрибут на релацията, този набор е суперключ; минималният такъв набор е кандидат-ключ.

Да. Алгоритмите за откриване на зависимости, някои с помощта на изкуствен интелект, сканират набор от данни и предлагат потенциални зависимости. Проектантът трябва да ги потвърди, защото даден модел, който е верен в примерни данни, може да не е валиден като правило.

Той съхранява факт за неключов атрибут, така че актуализирането му рискува аномалии. Премахването на транзитивните зависимости е точно това, което изисква третата нормална форма, която съхранява всеки факт на едно място.

Обобщете тази публикация с: