CodeGym/Java курс/All lectures for BG purposes/Нормални форми на база данни

Нормални форми на база данни

На разположение

3.1 Нормализация на базата данни

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

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

Крайната цел на нормализирането е да се намали потенциалното несъответствие на информацията, съхранявана в базата данни. Общата цел на процеса на нормализиране е следната:

  • изключване на някои видове съкращения;
  • коригиране на някои аномалии при актуализиране;
  • разработване на проект за база данни, който е достатъчно „качествено“ представяне на реалния свят, интуитивен е и може да служи като добра основа за последващо разширяване;
  • опростяване на proceduresата за прилагане на необходимите ограничения за интегритет.

Излишъкът обикновено се елиминира чрез декомпозиране на релации по такъв начин, че във всяка релация да се съхраняват само първични факти (т.е. факти, които не са извлечени от други съхранени факти).

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

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

Нормализацията понякога се критикува на основание, че „това е просто здрав разум“ и всеки компетентен професионалист „естествено“ ще проектира напълно нормализирана база данни, без да се налага да прилага теорията на зависимостта.

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

3.2 Първа нормална форма

Първата нормална форма (1NF) е основната нормална форма на релация в релационния модел на данни.

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

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

Що се отнася до различните таблици, те може да не са коректни представяния на връзки и съответно да не са в 1NF. Според дефиницията на Кристофър Дейт за такъв случай, tableта е нормализирана (еквивалентно, е в първа нормална форма), ако и само ако е пряко и вярно представяне на няHowва релация. По-конкретно, въпросната table трябва да отговаря на следните пет условия:

  • Няма подреждане на редовете отгоре надолу (с други думи, редът на редовете не предава ниHowва информация).
  • Няма подреждане на колоните отляво надясно (с други думи, редът на колоните не носи информация).
  • Няма дублирани редове.
  • Всяко пресичане на ред и колона съдържа точно една стойност от съответния домейн (и нищо друго).
  • Всички колони са "редовни".

„Редовността“ на всички колони на table означава, че няма „скрити“ компоненти в tableта, които могат да бъдат достъпни само при извикване на няHowъв специален оператор, instead of да се позовават на редовни имена на колони, or които водят до странични ефекти за редове or таблици при извикване на стандартни оператори.

Оригиналната ненормализирана (т.е. неправилно представяне на няHowва релация) table:

Служител Телефонен номер
Ivanов И.И.

283-56-82

390-57-34

Peterов П.П. 708-62-34
Сидоров С.С.

Таблица, намалена до 1NF, което е правилното представяне на няHowва релация:

Служител Телефонен номер
Ivanов И.И. 283-56-82
Ivanов И.И. 390-57-34
Peterов П.П. 708-62-34

3.3 Втора нормална форма

Една релационна променлива е във втора нормална форма тогава и само ако е в първа нормална форма и всеки неключов атрибут е нередуцируемо зависим от (всеки) свой кандидат ключ .

Нередуцируемостта означава, че потенциалният ключ не съдържа по-малко подмножество от атрибути, от които тази функционална зависимост също може да бъде извлечена. За нередуцируема функционална зависимост често се използва еквивалентното понятие „пълна функционална зависимост“.

Ако кандидат ключът е прост, т.е. състои се от един атрибут, тогава всяка функционална зависимост от него е нередуцируема (пълна). Ако кандидат-ключът е съставен ключ, тогава, съгласно дефиницията на втората нормална форма, не трябва да има неключови атрибути във връзката, които зависят от част от съставния кандидат-ключ.

Пример за преобразуване на релация във втора нормална форма

Нека двойката атрибути {Клон на фирмата, Позиция} образуват първичния ключ в следната връзка:

Р
Фирмен клон Длъжност Заплата Наличие на компютър
Клон в Томск Чистач 20 000 Не
Клон в Москва Програмист 40 000 Яжте
Клон в Томск Програмист 25 000 Яжте

Да кажем, че заплатата зависи от бранша и позицията, а наличието на компютър зависи само от позицията.

Съществува функционална зависимост Позиция -> Наличие на компютър, в която лявата страна (детерминанта) е само част от първичния ключ, което нарушава conditionто на втората нормална форма.

За да се намали до 2NF, първоначалната релация трябва да се разложи на две релации:

R1
Фирмен клон Длъжност Заплата
Клон в Томск Чистач 20 000
Клон в Москва Програмист 40 000
Клон в Томск Програмист 25 000
R2
Длъжност Наличие на компютър
Чистач Не
Програмист Яжте
Програмист Яжте

3.4 Трета нормална форма (3NF)

Релационна променлива R е в 3NF тогава и само ако са верни следните условия:

  • Ре във втора нормална форма.
  • няма неключов атрибутРне е в транзитивна функционална зависимост от кандидат-ключаР.

Обяснения към определението:

Неключов атрибут на релация R е атрибут, който не принадлежи към нито един от кандидат ключовете на R.

Функционалната зависимост на набора от атрибути Z от набора от атрибути X (написан X → Z, произнася се „x определя z“) е транзитивна, ако има такъв набор от атрибути Y, че X → Y и Y → Z. В това В този случай нито едно от множествата X, Y и Z не е подмножество на другото, т.е. функционалните зависимости X → Z, X → Y и Y → Z не са тривиални и също така няма функционална зависимост Y → X.

Определение за 3NF, еквивалентно на това на Код, но формулирано по различен начин, е дадено от Карло Заниоло през 1982 г. Според него една релационна променлива е в 3NF тогава и само ако всяка от нейните функционални зависимости X → A удовлетворява поне едно от следните условия:

  • X съдържа A (т.е. X → A е тривиална функционална зависимост)
  • X - супер ключ
  • A е ключов атрибут (т.е. A е част от кандидат ключ).

Дефиницията на Заниоло ясно дефинира разликата между 3NF и по-строгата нормална форма на Бойс-Код (BCNF): BCNF изключва третото condition („A е ключов атрибут“).

Запомнящо се и традиционно описателно резюме на 3NF дефиницията на Код беше дадено от Бил Кент: всеки неключов атрибут „трябва да предоставя информация за ключа, пълния ключ и нищо друго освен ключа “.

Условието за зависимост от "пълния ключ" на неключови атрибути гарантира, че релацията е във втора нормална форма; и conditionто да зависят от "нищо друго освен ключа" е да са в трета нормална форма.

Крис Дейт говори за резюмето на Кент като за „интуитивно привлекателна характеристика“ на 3NF и отбелязва, че с лека модификация може да служи и като дефиниция на по-строгата нормална форма на Бойс-Код: „всеки атрибут трябва да предоставя информация за ключ , пълен ключ и нищо друго освен ключа.

Версията на Kent на дефиницията 3NF е по-малко строга от versionта на Boyce-Codd за нормална форма на формулировката на Data, тъй като първата само заявява, че неключовите атрибути зависят от ключове.

Първичните атрибути (които са ключове or части от тях) изобщо не трябва да бъдат функционално зависими; всеки от тях предоставя информация за ключа, като предоставя самия ключ or част от него. Тук трябва да се отбележи, че това правило е валидно само за неключови атрибути, тъй като прилагането му към всички атрибути ще деактивира напълно всички сложни алтернативни ключове, тъй като всеки елемент от такъв ключ ще наруши conditionто за "пълен ключ".

Разгледайте релационната променлива R1 като пример:

R1
Служител Отдел Телефон
Гришин Счетоводство 11-22-33
Васorев Счетоводство 11-22-33
Peterов Снабдяване 44-55-66

Всеки служител принадлежи изключително към един отдел; всеки отдел има един телефон. Атрибутът Employee е първичният ключ. Служителите нямат лични телефони, а телефонният номер на служителя зависи единствено от отдела.

В примера съществуват следните функционални зависимости: Служител → Отдел, Отдел → Телефон, Служител → Телефон.

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

Връзката Служител → Телефон е преходна, така че връзката не е в трета нормална форма.

Разделянето на R1 води до две релационни променливи, които са в 3NF:

R2
Отдел Телефон
Счетоводство 11-22-33
Снабдяване 44-55-66

R3
Служител Отдел
Гришин Счетоводство
Васorев Счетоводство
Peterов Снабдяване

Първоначалното отношение R1, ако е необходимо, лесно се получава в резултат на операцията за свързване на отношенията R2 и R3.

Коментари
  • Популярен
  • Нов
  • Стар
Трябва да сте влезли, за да оставите коментар
Тази страница все още няма коментари