Разлика между нормализация и денормализация

Нормализация срещу денормализация

Релационните бази данни са съставени от отношения (свързани таблици). Таблиците са съставени от колони. Ако таблиците са две големи (т.е. твърде много колони в една таблица), тогава могат да възникнат аномалии в базата данни. Ако таблиците са две малки (т.е. базата данни е съставена от много по-малки таблици), би било неефективно за заявки. Нормализацията и денормализацията са два процеса, които се използват за оптимизиране на работата на базата данни. Нормализирането свежда до минимум съкращенията, които присъстват в таблиците с данни. Денормализацията (обратна на нормализацията) добавя излишни данни или групови данни.

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

Нормализирането е процес, който се осъществява с цел минимизиране на съкращенията, присъстващи в данните в релационни бази данни. Този процес главно ще раздели големи таблици на по-малки таблици с по-малко съкращения (наречени „Нормални форми“). Тези по-малки таблици ще бъдат свързани помежду си чрез добре дефинирани взаимоотношения. В добре нормализирана база данни, всяка промяна или промяна в данните ще изисква промяна само на една таблица. Първата нормална форма (1NF), втората нормална форма (2NF) и третата нормална форма (3NF) бяха въведени от Едгар Ф. Код. Нормална форма на Boyce-Codd (BCNF) е въведена през 1974 г. от Код и Реймънд Ф. Бойс. Определени са по-високи нормални форми (4NF, 5NF и 6NF), но те се използват рядко.

Таблица, която е в съответствие с 1NF, гарантира, че тя всъщност представлява връзка (т.е. тя не съдържа записи, които се повтарят) и не съдържа атрибути, които са релационно оценени (т.е. всички атрибути трябва да имат атомни стойности). За да може таблицата да съответства на 2NF, тя трябва да бъде спазена с 1NF и всеки атрибут, който не е част от който и да е кандидат-ключ (т.е. не-първични атрибути), трябва напълно да зависи от всеки от ключовете на кандидата в таблицата. Според дефиницията на Codd се казва, че таблица е в 3NF, ако и само ако тази таблица е във втората нормална форма (2NF) и всеки атрибут в таблицата, който не принадлежи на кандидат-ключ, трябва да зависи пряко от всеки кандидат ключ от тази таблица. BCNF (известен също като 3.5NF) улавя някои аномалии, които не са адресирани от 3NF.

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

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

Каква е разликата между нормализация и денормализация?

- Нормализирането и денормализирането са два процеса, които са напълно противоположни.

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

- Нормализирането се извършва, за да се предотвратят аномалии в базите данни.

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

- Често се препоръчва да се "нормализира, докато не боли, денормализира, докато не работи".