Какво е нормализация? Пример за база данни 1NF, 2NF, 3NF, BCNF

Съдържание:

Anonim

Какво е нормализация?

Нормализирането е техника за проектиране на база данни, която намалява излишността на данните и елиминира нежеланите характеристики като аномалии при вмъкване, актуализиране и изтриване. Правилата за нормализация разделят по-големите таблици на по-малки таблици и ги свързват с помощта на връзки. Целта на Нормализирането в SQL е да премахне излишните (повтарящи се) данни и да гарантира, че данните се съхраняват логично.

Изобретателят на релационния модел Едгар Код предложи теорията за нормализиране на данните с въвеждането на първата нормална форма и той продължи да разширява теорията с втора и трета нормална форма. По-късно той се присъединява към Реймънд Ф. Бойс, за да разработи теорията за нормалната форма на Бойс-Код.

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

Ето списък на нормалните форми

  • 1NF (Първа нормална форма)
  • 2NF (втора нормална форма)
  • 3NF (трета нормална форма)
  • BCNF (нормална форма на Бойс-Код)
  • 4NF (четвърта нормална форма)
  • 5NF (пета нормална форма)
  • 6NF (шеста нормална форма)

Теорията за нормализиране на данните в SQL сървър все още се доразвива. Например, има дискусии дори на 6 -та нормална форма. В повечето практически приложения обаче нормализацията постига най-доброто си в 3 -та нормална форма . Еволюцията на теориите за нормализация на SQL е илюстрирана по-долу -

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

Нормализиране на базата данни с примери

Примерът за нормализиране на базата данни може лесно да бъде разбран с помощта на казус. Да предположим, че видеотеката поддържа база данни за филми, отдадени под наем. Без никакво нормализиране в базата данни, цялата информация се съхранява в една таблица, както е показано по-долу. Нека разберем Нормализацията в базата данни с пример за таблици:

Тук виждате „ Филми под наем“ има множество стойности. Сега нека да преминем към 1-ва нормална форма:

Правила за 1NF (Първа нормална форма)

  • Всяка клетка на таблицата трябва да съдържа една стойност.
  • Всеки запис трябва да бъде уникален.

Горната таблица в 1NF-

Пример за 1NF

Преди да продължим, нека разберем няколко неща -

Какво е КЛЮЧ?

КЛЮЧ е стойност, използвана за уникално идентифициране на запис в таблица. КЛЮЧ може да бъде единична колона или комбинация от множество колони

Забележка: Колоните в таблица, които НЕ се използват за идентифициране на запис по уникален начин, се наричат ​​неключови колони.

Какво е първичен ключ?

Първичната е стойност от една колона, използвана за уникално идентифициране на запис в база данни.

Той има следните атрибути

  • Първичният ключ не може да бъде NULL
  • Стойността на първичния ключ трябва да бъде уникална
  • Стойностите на първичния ключ рядко трябва да се променят
  • Първичният ключ трябва да получи стойност при вмъкване на нов запис.

Какво е композитен ключ?

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

В нашата база данни имаме двама души с едно и също име Робърт Фил, но те живеят на различни места.

Следователно, ние изискваме както пълното име, така и адреса, за да идентифицираме записа по уникален начин. Това е композитен ключ.

Нека да преминем във втора нормална форма 2NF

Правила на 2NF (втора нормална форма)

  • Правило 1- Бъдете в 1NF
  • Правило 2- Първичен ключ на една колона

Ясно е, че не можем да продължим напред, за да направим нашата проста база данни във 2- ра форма за нормализация, освен ако не разделим таблицата по-горе.

Разделихме нашата таблица 1NF на две таблици, а именно. Таблица 1 и Таблица 2. Таблица 1 съдържа информация за членовете. Таблица 2 съдържа информация за наети филми.

Въведохме нова колона, наречена Membership_id, която е основният ключ за таблица 1. Записите могат да бъдат уникално идентифицирани в Таблица 1, като се използва идентификационен номер на членството

База данни - външен ключ

В таблица 2 членството_ID е външният ключ

Външен ключ се позовава на първичния ключ на друга таблица! Той помага да свържете вашите таблици

  • Чуждестранният ключ може да има различно име от неговия първичен ключ
  • Той гарантира, че редовете в една таблица имат съответни редове в друга
  • За разлика от първичния ключ, те не трябва да бъдат уникални. Най-често не са
  • Външните ключове могат да бъдат нула, въпреки че първичните ключове не могат

Защо се нуждаете от външен ключ?

Да предположим, начинаещ вмъква запис в таблица В като

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

Горният проблем може да бъде преодолян чрез деклариране на идентификатор на членство от Таблица2 като външен ключ на идентификационен номер на членство от Таблица1

Сега, ако някой се опита да вмъкне стойност в полето за идентификация на членството, която не съществува в родителската таблица, ще се покаже грешка!

Какво представляват преходните функционални зависимости?

Преходна функционална зависимост е, когато променяте неключова колона, може да доведе до промяна на някоя от останалите неключови колони

Помислете за таблицата 1. Промяната на неключовата колона Пълно име може да промени Поздрав.

Нека да преминем към 3NF

Правила на 3NF (трета нормална форма)

  • Правило 1- Бъдете в 2NF
  • Правило 2- Няма преходни функционални зависимости

За да преместим нашата 2NF таблица в 3NF, отново трябва да разделим нашата таблица.

Пример за 3NF

По-долу е 3NF пример в SQL база данни:

Отново разделихме нашите таблици и създадохме нова таблица, която съхранява Поздрави.

Няма преходни функционални зависимости и следователно нашата таблица е в 3NF

В таблица 3 Поздравителният идентификатор е първичен ключ, а в таблица 1 Поздравителният идентификатор е чужд на първичния ключ в таблица 3

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

BCNF (нормална форма на Бойс-Код)

Дори когато базата данни е в 3 -та нормална форма, все пак ще се получат аномалии, ако тя има повече от един кандидат- ключ.

Понякога BCNF също се нарича 3,5 нормална форма.

Правила на 4NF (Четвърта нормална форма)

Ако нито един екземпляр на таблица на база данни не съдържа две или повече независими и многозначни данни, описващи съответния обект, тогава той е в 4 -та нормална форма.

Правила на 5NF (пета нормална форма)

Таблица е в 5 -та нормална форма само ако е в 4NF и не може да бъде разложена на произволен брой по-малки таблици без загуба на данни.

Предложен 6NF (шеста нормална форма)

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

Това е всичко за SQL Нормализация !!!

Обобщение

  • Проектирането на база данни е от решаващо значение за успешното внедряване на система за управление на база данни, която отговаря на изискванията за данни на корпоративна система.
  • Процесът на нормализация в СУБД помага за създаването на системи с бази данни, които са рентабилни и имат по-добри модели за сигурност.
  • Функционалните зависимости са много важен компонент на процеса на нормализиране на данните
  • Повечето системи от бази данни са нормализирани бази данни до третата нормална форма.
  • Първичният ключ уникално идентифицира са записи в таблица и не могат да бъдат нулеви
  • Чужд ключ помага за свързване на таблица и препратки към първичен ключ