Нормализация срещу денормализация
Релационните бази данни се състоят от релации (свързани таблици). Таблиците са съставени от колони. Ако таблиците са две големи (т.е. твърде много колони в една таблица), тогава могат да възникнат аномалии в базата данни. Ако таблиците са две малки (т.е. базата данни се състои от много по-малки таблици), това би било неефективно за заявки. Нормализация и денормализация са два процеса, които се използват за оптимизиране на производителността на базата данни. Нормализацията свежда до минимум съкращенията, които присъстват в таблиците с данни. Денормализацията (обратното на нормализирането) добавя излишни данни или групови данни.
Какво е нормализация?
Нормализирането е процес, който се извършва за минимизиране на съкращенията, които присъстват в данните в релационни бази данни. Този процес главно ще разделя големи таблици на по-малки таблици с по-малко съкращения (наречени „Нормални форми“). Тези по-малки таблици ще бъдат свързани помежду си чрез добре дефинирани връзки. В добре нормализирана база данни, всяка промяна или модификация на данните ще изисква промяна само на една таблица. Първата нормална форма (1NF), Втората нормална форма (2NF) и Третата нормална форма (3NF) бяха въведени от Edgar F. Codd. Нормалната форма на Бойс-Код (BCNF) е въведена през 1974 г. от Код и Реймънд Ф. Бойс. По-високи нормални форми (4NF, 5NF и 6NF) са дефинирани, но те се използват рядко.
Таблица, която е в съответствие с 1NF, гарантира, че тя всъщност представлява връзка (т.е. тя не съдържа никакви повтарящи се записи) и не съдържа никакви атрибути, които са релационно оценени (т.е. всички атрибути трябва да имат атомни стойности). За да може таблица да отговаря на 2NF, тя трябва да се съобразява с 1NF и всеки атрибут, който не е част от нито един кандидат-ключ (т.е. непрости атрибути), трябва изцяло да зависи от някой от ключовете-кандидати в таблицата. Според дефиницията на Codd се казва, че таблицата е в 3NF, ако и само ако, тази таблица е във втората нормална форма (2NF) и всеки атрибут в таблицата, който не принадлежи на кандидат-ключ, трябва пряко да зависи от всеки кандидат ключ на тази таблица. BCNF (известен също като 3.5NF) улавя някои аномалии, които не са адресирани от 3NF.
Какво е денормализация?
Денормализацията е обратният процес на процеса на нормализиране. Денормализацията работи чрез добавяне на излишни данни или групиране на данни за оптимизиране на производителността. Въпреки че добавянето на излишни данни звучи контрапродуктивно, понякога денормализацията е много важен процес за преодоляване на някои недостатъци в релационния софтуер за бази данни, които могат да наложат тежки санкции за производителност с нормализирани бази данни (дори настроени за по-висока производителност). Това е така, защото присъединяването на няколко релации (които са резултат от нормализиране), за да се получи резултат към заявка, понякога може да бъде бавно в зависимост от действителното физическо изпълнение на системите от бази данни.
Каква е разликата между нормализация и денормализация? - Нормализирането и денормализацията са два процеса, които са напълно противоположни. - Нормализирането е процес на разделяне на по-големи таблици на по-малки, намалявайки излишните данни, докато денормализацията е процес на добавяне на излишни данни за оптимизиране на производителността. - Нормализирането се извършва за предотвратяване на аномалии в бази данни. - Денормализацията обикновено се извършва, за да се подобри производителността на четене на базата данни, но поради допълнителните ограничения, използвани за денормализация, записите (т.е. операции за вмъкване, актуализиране и изтриване) могат да станат по-бавни. Следователно денормализираната база данни може да предложи по-лоша производителност при запис от нормализираната база данни. - Често се препоръчва да „нормализирате, докато боли, денормализирайте, докато не подейства“. |