Нормализиране на Вашата база данни: Първа нормална форма

Тези две прости правила ще помогнат за нормализиране на вашата база данни

Първата нормална форма (1NF) определя основните правила за организирана база данни:

Какво означават тези правила при размисъл за практическото създаване на база данни? Всъщност е съвсем просто.

1. Премахване на дублирането

Първото правило диктува, че не трябва да дублираме данни в същия ред на таблица. В рамките на общността на базата данни тази концепция се нарича атомност на таблица. Таблиците, които отговарят на това правило, се смятат за атомни. Нека разгледаме този принцип с класически пример: таблица в база данни с човешки ресурси, която съхранява връзката мениджър-подчинен. За целите на нашия пример ще наложим бизнес правилото, че всеки мениджър може да има един или повече подчинени, а всеки подчинен може да има само един мениджър.

Интуитивно, когато създаваме списък или електронна таблица за проследяване на тази информация, можем да създадем таблица със следните полета:

Припомнете обаче първото правило, наложено от 1NF: Премахване на дублиращи се колони от същата таблица. Ясно е, че колоните "Подчинен1" "Подчинен" са дублиращи. Отделете малко време и размишлявайте върху проблемите, повдигнати от този сценарий. Ако един мениджър има само един подчинен, подменюто2-подчинен4 колони е просто губи пространство за съхранение (ценна стока база данни). Освен това представете си случая, в който мениджърът вече има 4 подчинени - какво ще стане, ако поеме друг служител? Цялата структура на таблицата ще изисква промяна.

В този момент втората ясна идея обикновено се появява при начинаещите в базата данни: Не искаме да имаме повече от една колона и искаме да позволим гъвкаво съхранение на данни. Нека да опитаме нещо подобно:

Полето "Подчинени" ще съдържа няколко записа във формата "Мери, Бил, Джо".

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

Ето таблица, която отговаря на първото правило за 1NF:

В този случай всеки подчинен има само един запис, но мениджърите могат да имат няколко записа.

2. Определете първичния ключ

Сега, какво ще кажете за второто правило: да идентифицирате всеки ред с уникална колона или набор от колони ( първичният ключ )? Можете да разгледате таблицата по-горе и да предложите използването на подчинената колона като първичен ключ. Всъщност, подчинената колона е добър кандидат за първичен ключ поради факта, че правилата ни за бизнес посочват, че всеки подчинен може да има само един мениджър. Данните, които сме избрали да съхраняваме в нашата таблица обаче, правят това по-малко от идеално решение. Какво ще стане, ако наемем друг служител на име Джим? Как да съхраняваме връзката мениджър-подчинена в базата данни?

Най-добре е да използвате истински уникален идентификатор (като идентификационен номер на служител) като основен ключ . Нашата финална маса ще изглежда така:

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