Трећа нормална форма (3НФ) је принцип базе података који подржава интегритет података изградњом на принципима нормализације базе података који су обезбеђени у првом нормалном облику (1НФ) и другом нормалном облику (2НФ).
Трећи стандардни захтеви
Постоје два основна захтева да база података буде у трећој нормалној форми:
- База података мора већ испунити захтеве и 1НФ и 2НФ .
- Све колоне базе података морају зависити од примарног кључа , што значи да вриједност сваке колоне може бити изведена само из примарног кључа.
О зависности од примарног кључа
Хајде да истражимо даље шта подразумевамо чињеницом да све колоне морају зависити од примарног кључа.
Ако вредност колоне може бити изведена и из примарног кључа и из другог ступца у табели, она крши 3НФ. Размотрите таблу запослених са овим колумнима:
- Број запосленог
- Име
- Презиме
Да ли и ЛастНаме и ФирстНаме зависе само од вредности ЕмплоиееИД-а? Па, да ли ЛастНаме зависи од ФирстНаме? Не, јер ништа инхерентно у ЛастНаме не би предложило вриједност ФирстНаме. Може ли ФирстНаме зависити од ЛастНаме? Не поново, јер је исто истина: без обзира на ЛастНаме, не би могла дати наговештај за вриједност ФирстНаме-а. Због тога је ова табела усклађена са 3НФ.
Али узмите у обзир ову таблу Возила:
- ВехицлеИД
- Произвођач
- Модел
Произвођач и модел могу произвести из ВехицлеИД-а, али модел може произвести и произвођача, јер модел возила прави само одређени произвођач. Дизајн овог стола је не-3НФ компатибилан и може стога резултирати аномалијама података. На пример, можете ажурирати произвођача без ажурирања модела, уводећи нетачности.
Да бисмо га усагласили, требали би премјестити додатну зависну колону на другу таблицу и позвати га помоћу иностраног кључа. То би довело до две табеле:
Возила Табле
У доњој табели МоделИД је инострани кључ табеле " Модели" :
- ВехицлеИД
- Произвођач
- МоделИД
Таблица модела
Ова нова табела мапира моделе за произвођаче. Ако желите да ажурирате све информације о возилу специфичне за модел, то бисте урадили у овој табели, а не у таблици Возила.
- МоделИД
- Произвођач
- Модел
Изведена поља у моделу 3НФ
Табела може садржати изведено поље - једно које се израчунава на основу других колона у табели. На пример, сматрајте ову табелу наредби за виџет:
- Редни број
- Број корисника
- Цена по јединици
- Количина
- Укупно
Укупно прекида сагласност са 3НФ-ом јер може да се изведе множењем цене јединице за количину, уместо да буде потпуно зависна од примарног кључа. Морамо га уклонити са стола како бисмо се придржавали треће нормалне форме.
Заправо, пошто је изведено, боље је да га уопште не чувате у бази података.
Једноставно га можемо израчунати "на путу" приликом извршавања упита базе података. На пример, можда смо раније користили овај упит да бисте добили бројеве налога и укупно:
СЕЛЕЦТ ОрдерНумбер, Тотал ФРОМ ВидгетОрдерсСада можемо да користимо следећи упит:
СЕЛЕЦТ ОрдерНумбер, УнитПрице * Количество АС Тотал ФРОМ ВидгетОрдерсда постигну исте резултате без кршења правила нормализације.