Продължение на статията Нормализация в MySQL
Процеса на нормализация включва изменение на схемата, така че да удовлетворява изискванията поставени от прогресивно растящи нормални форми. Нормализация на по-високо ниво не може да се постигне докато не са удовлетворени изискванията на текущото ниво. На първа нормална форма се изисква информацията във всяка едно поле да съдържа уникална(не повтаряща се) информация или група от атрибути.
В нашият пример информацията която се записва в полетата производител и вносител не е проста, тоест състой се от група от атрибути като име на фирмата, седалище и други. За да се справим с този проблем, разделяме таблицата на две таблици – една за сладолед и една за фирми.
Таблицата сладолед се състой от:
А таблицата фирма се състой от:
Забележете, че в таблицата за фирми добавяме изкуствена колона, която номерира редовете в таблицата и я обявяваме за ключ (surrogate key). Това се прави когато реалния главен ключ не е наличен или не е удобен за използване. В случая не може да използваме полетата „име“ или „МОЛ“ за главен ключ и затова добавяне изкуствен surrogate key – полето „id“.
Някои разработчици използват surrogate ключ като правило, други го ползват само при липса на явен кандидат за главен ключ. От гледна точка на производителност, цяло число обявено за surrogate ключ, може да предостави по-добро представяне. Важно е когато използваме surrogate ключ да сме сигурни че е уникален за всеки запис.
Чрез разделяне на данните в две различни таблици, според реалните обекти, които те представят, ние се справяме с някои от аномалиите споделени по-рано:
Може да си помислите че таблицата с фирми отново не удовлетворява условията за преминаване в Първа нормална форма, защото полето „седалище“. На пръв поглед може да е един низ, който представлява един адрес. От друга страна това е съвкупност от данни – град, улица, блок, вход и т.н.
Решението, до колко да разбиваме таблиците, зависи от това, как възнамерявате да използвате информацията. Ако искате да намерите всички фирми в един град, тогава трябва да имате разбиране. Ако искате да използвате адреса, само за да издавате фактури, тогава не ви е необходимо разбиране на таблицата. Винаги имайте предвид и бъдещите планове за развитие на системата.