Разлика между 3NF и BCNF

Автор: Laura McKinney
Дата На Създаване: 1 Април 2021
Дата На Актуализиране: 13 Може 2024
Anonim
Нормальная форма Бойса-Кодда (BCNF). Правила нормализации БД
Видео: Нормальная форма Бойса-Кодда (BCNF). Правила нормализации БД

Съдържание


нормализиране е метод, който премахва съкращаване от връзка, като по този начин се минимизира аномалиите за вмъкване, изтриване и актуализиране, които влошават работата на базите данни. В тази статия ще разграничим две по-високи нормални форми, т.е. 3NF и BCNF. Основната разлика между 3NF и BCNF е тази 3NF елиминира преходната зависимост от отношение и таблица, която трябва да бъде в BCNF, тривиалната функционална зависимост X-> Y в отношение трябва да има, само ако X е супер ключ.

Нека обсъдим разликите между 3NF и BCNF с помощта на сравнителната диаграма, показана по-долу.

  1. Сравнителна диаграма
  2. дефиниция
  3. Ключови разлики
  4. заключение

Сравнителна диаграма

Основа за сравнение3NFBCNF
понятиеНикой атрибут, който не е основен, не трябва да е транзитивно зависим от ключа Candidate.За всяка тривиална зависимост във връзка R кажете X-> Y, X трябва да бъде супер ключ на отношение R.
Зависимост3NF може да се получи без да се жертват всички зависимости.Зависимостите може да не бъдат запазени в BCNF.
разлаганеРазграждането без загуба може да бъде постигнато в 3NF.Разграждането без загуба е трудно постижимо в BCNF.


Определение на 3NF

Таблица или връзка се счита за в Трета нормална форма само ако таблицата вече е в 2NF и няма не-председател атрибут transitively зависим от кандидат ключ на връзка.

Така че, преди да се спра на процеса на нормализиране на таблица в 3NF, позволете ми да обсъдя ключа за кандидатстване. А Ключ на кандидата е минимален супер ключ т.е. супер ключ с минимални атрибути, който може да дефинира всички атрибути на дадена връзка. Така че, в процеса на нормализиране на вашата таблица, първо, разпознавате ключа за кандидат на дадена връзка. Атрибутите, които са част от кандидат-ключа са основни атрибути, а атрибутите, които не са част от ключа на кандидата, са не-прости атрибути.

Сега ако имаме отношение R (A, B, C, D, E, F) и имаме следните функционални зависимости за отношението R.


Наблюдавайки функционалните зависимости, можем да заключим това AB е кандидат-ключ за отношение R, тъй като с помощта на ключ AB можем да търсим стойността за целия атрибут в отношение R. Така че A, B става основни атрибути тъй като заедно правят ключов кандидат. Атрибутите C, D, E, F става не-председател атрибути, защото никой от тях не е част от кандидат ключ.

Таблицата е в 2NF, тъй като никой непроличен атрибут частично не зависи от кандидатския ключ

Но транзитивната зависимост се наблюдава сред предоставените функционални зависимости като атрибут F не е в пряка зависимост от ключа на кандидата AB, Вместо това, атрибут F е transitively зависи от ключа на кандидата AB чрез атрибут д, До атрибут D има някаква стойност, която можем да достигнем, за да присвоим стойността на F, от ключа за кандидат-AB. В случай, че стойността на атрибут D е NULL, ние никога не можем да намерим / търсим стойността на F с помощта на кандидат ключ AB. Това е причината 3NF да иска да премахне преходната зависимост от отношенията.

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

Сега таблиците R1 и R2 са в 3NF, тъй като няма останали частични и преходни зависимости. връзка R1 (A, B, C, D, E) има кандидат-ключ AB като има предвид, че отношение R2 (D, E) има д като кандидат-ключ.

Определение на BCNF

BCNF се счита за по-силния от 3NF. Отношението R да бъде в BCNF трябва да бъде в 3NF, И където и да нетривиална функционална зависимост A -> B има отношение по отношение на R, тогава А трябва да е а superkey на отношение R. Както знаем, Супер ключ е ключ, който има един атрибут или набор от атрибути, които определят, всички атрибути на дадена връзка.

Сега, да преминем към един пример, за да разберем BCNF по-добре. Нека да предположим, че имаме връзка R (A, B, C, D, F), които имат следните функционални зависимости.

Наблюдавайки отношението R, можем да кажем това А и BF сте кандидат ключове на отношение R, тъй като те сами могат да търсят стойността за всички атрибути във връзката R. Така че A, B, F са основен атрибути като има предвид, ° С и д сте не-председател атрибути. При наличните функционални зависимости не се наблюдава преходна зависимост. Следователно таблицата R е в 3NF.

Но една функционална зависимост, т.е. D -> F нарушава определението на BCNF, според което, ако D -> F съществува тогава д трябва да бъде супер ключ което тук не е така. Така ще разделим отношението Р.

Сега таблиците R1 и R2 са в BCNF. връзка R1 има две кандидат ключове А и B, тривиалната функционална зависимост на R1, т.е. A-> BCD и B -> ACD, задръжте за BCNF като A и B са супер ключовете за връзка. връзка R2 има д като негова кандидат ключ и функционалната зависимост D -> F също важи за BCNF, тъй като D е супер ключ.

  1. 3NF заявява, че никой неприсъствен атрибут не трябва да бъде транзитивно зависим от кандидат-ключа на връзката. От друга страна, BCNF заявява, че ако за отношение има тривиална функционална зависимост X -> Y; тогава X трябва да е супер ключ.
  2. 3NF може да се получи без да се жертва зависимостта на отношението. Въпреки това, зависимостта може да не бъде запазена при получаване на BCNF.
  3. 3NF може да се постигне без загуба на информация от старата таблица, докато, докато получаваме BCNF, можем да загубим малко информация от старата таблица.

Заключение:

BCNF е много по-рестриктивен от 3NF, които помагат за нормализиране на таблицата повече. Връзката в 3NF има минимално оставяне на излишък, което допълнително се отстранява от BCNF.