Бази данни - анализ


Категория на документа: Информатика



Фигура 11-б показва обновената таблица OrderDetails и новата таблица Продукти. Въпрос: Дали новата таблица Продукти е в поне 2НФ?

Фигура 11-б. Таблиците OrderDetails и Продукти във 2НФ.

След като таблицата OrderDetails е вече във 2НФ, може да преминем към Трета Нормална Форма (3НФ).

Трета Нормална Форма (3НФ)

Една релационна променлива е в 3НФ тогава и само тогава когато тя е във 2НФ и всеки не-ключов атрибут е нетранзитивно зависим от първичния ключ.

Както се казва в дефиницията, една таблица трябва да е във 2НФ преди да се премине към 3НФ. Ако случаят е такъв, може да се приложи 3НФ, за да се осигури, че таблицата отговаря на следните изисквания:

> Стойността на всяко поле се обновява независимо; промяната на стойността на едно поле за всеки запис не влияе неблагоприятно върху стойността на друго поле на този запис.

> Всяко поле идентифицира определена характеристика от същността опивана в таблицата.

> Всяко не-ключово поле в таблицата е функционално зависимо от целия първичен ключ.

> Таблицата описва само и единствено една същност.

Тъй като таблиците Поръчки и OrderDetails са вече във 2НФ, можете да ги подложите на 3НФ.

След като го направите за таблица Поръчки ще получите показаното на Фигура 12-а. Забелязвате ли нещо различно в тази структура и състоянието й във 2НФ показано на Фигура 11-а?

Фигура 12-а. Таблицата Поръчки в 3НФ.

Ако отговорът ви е не, сте абсолютно прави. Просто се е получило така, че таблицата Поръчки вече е приведена в 3НФ и не е необходимо да правите промени в структурата й. Ако погледнете таблицата OrderDetails показана на Фигура 11-б, ще видите, че тя има един малък проблем: едно от полетата й не описва характеристика на същността. Можете ли да определите кое поле е виновника? Ето един съвет: Въпросното поле е замесено в транзитивна зависимост.

Става въпрос за полето Цена. Цената не е специфична характеристика на поръчката, колкото е характеристика на определен продукт. Допълнително, стойността й се определя от ProductID. Ако приемете, че таблицата OrderDetails има съставен първичен ключ, състоящ се от OrderID и ProductID, ще видите, че стойността на Цена не е зависима от целия първичен ключ, каквото е изискването на 3НФ. Този проблем решаваме като премахнем полето Цена от таблицата. (Няма да загубите нищо от процеса, защото това поле вече е в таблицата Продукти.) Фигура 12-б показва резултата от тази модификация.

Фигура 12-б. Таблицата OrderDetails в 3НФ.

Сега нека разгледаме малко по-различен начин за достигане на същата структура, с помощта на Бойс/Код Нормална Форма (БКНФ).

Бойс/Код Нормална Форма (БКНФ)

Една релация е в БКНФ тогава и само тогава когато единствените детерминанти са кандидат ключове.

БКНФ е разновидност на 3НФ и беше замислена да я замени. Целите на БКНФ са две:
1. Подсигурява, че поле, което определя стойността в някое или във всички не-ключови полета в таблицата е кандидат ключ за тази таблица.
2. Подсигурява се изискването всяка таблица да описва само една същност. (Това предполага налагането на кандидат ключове.)

БКНФ е малко по-силна от 3НФ в това, че тя се занимава с възможността една таблица да има повече от едно поле, което да играе ролята на първичен ключ. Като знаете това бихте могли да идентифицирате всички възможни кандидат ключове в една таблица, да осигурите в таблицата да няма транзитивни зависимости и допълнително да не се получават модификационни аномалии.

Забележка: Време за преговор! Кандидат ключ е поле или група от полета, които имат необходимите характеристики за първичен ключ, най-важната от които е, че определя стойностите за всички не-ключови полета в таблицата. След като идентифицирате кандидат ключовете за дадена таблица, избирате един, който ще служи за официалния първичен ключ на таблицата.

Фигура 13-а показва таблицата OrderDetails с три детерминанти: OrderID и LineItemNumber (взети заедно), OrderID и ProductID (пак взети заедно) и ProductID. За да се приложи БКНФ, първо трябва да идентифицирате дали тези три детерминанти са кандидат ключове за тази таблица. Бихте ли казали, че и трите са подходящи?

Фигура 13-а. Таблицата OrderDetails съдържаща три детерминанти.




Сподели линка с приятел:





Яндекс.Метрика
Бази данни - анализ 9 out of 10 based on 2 ratings. 2 user reviews.