Постављање базе података у трећу нормалну форму (3НФ)

Трећа нормална форма (3НФ) је принцип базе података који подржава интегритет података изградњом на принципима нормализације базе података који су обезбеђени у првом нормалном облику (1НФ) и другом нормалном облику (2НФ).

Трећи стандардни захтеви

Постоје два основна захтева да база података буде у трећој нормалној форми:

О зависности од примарног кључа

Хајде да истражимо даље шта подразумевамо чињеницом да све колоне морају зависити од примарног кључа.

Ако вредност колоне може бити изведена и из примарног кључа и из другог ступца у табели, она крши 3НФ. Размотрите таблу запослених са овим колумнима:

Да ли и ЛастНаме и ФирстНаме зависе само од вредности ЕмплоиееИД-а? Па, да ли ЛастНаме зависи од ФирстНаме? Не, јер ништа инхерентно у ЛастНаме не би предложило вриједност ФирстНаме. Може ли ФирстНаме зависити од ЛастНаме? Не поново, јер је исто истина: без обзира на ЛастНаме, не би могла дати наговештај за вриједност ФирстНаме-а. Због тога је ова табела усклађена са 3НФ.

Али узмите у обзир ову таблу Возила:

Произвођач и модел могу произвести из ВехицлеИД-а, али модел може произвести и произвођача, јер модел возила прави само одређени произвођач. Дизајн овог стола је не-3НФ компатибилан и може стога резултирати аномалијама података. На пример, можете ажурирати произвођача без ажурирања модела, уводећи нетачности.

Да бисмо га усагласили, требали би премјестити додатну зависну колону на другу таблицу и позвати га помоћу иностраног кључа. То би довело до две табеле:

Возила Табле

У доњој табели МоделИД је инострани кључ табеле " Модели" :

Таблица модела

Ова нова табела мапира моделе за произвођаче. Ако желите да ажурирате све информације о возилу специфичне за модел, то бисте урадили у овој табели, а не у таблици Возила.

Изведена поља у моделу 3НФ

Табела може садржати изведено поље - једно које се израчунава на основу других колона у табели. На пример, сматрајте ову табелу наредби за виџет:

Укупно прекида сагласност са 3НФ-ом јер може да се изведе множењем цене јединице за количину, уместо да буде потпуно зависна од примарног кључа. Морамо га уклонити са стола како бисмо се придржавали треће нормалне форме.

Заправо, пошто је изведено, боље је да га уопште не чувате у бази података.

Једноставно га можемо израчунати "на путу" приликом извршавања упита базе података. На пример, можда смо раније користили овај упит да бисте добили бројеве налога и укупно:

СЕЛЕЦТ ОрдерНумбер, Тотал ФРОМ ВидгетОрдерс

Сада можемо да користимо следећи упит:

СЕЛЕЦТ ОрдерНумбер, УнитПрице * Количество АС Тотал ФРОМ ВидгетОрдерс

да постигну исте резултате без кршења правила нормализације.