Різниця між нормалізацією та денормалізацією

Нормалізація проти денормалізації

Реляційні бази даних складаються з відносин (пов'язаних таблиць). Таблиці складаються з стовпців. Якщо таблиці є двома великими (тобто занадто багато стовпців в одній таблиці), то можуть виникати аномалії бази даних. Якщо таблиці дві невеликі (тобто база даних складається з багатьох менших таблиць), це буде неефективно для запитів. Нормалізація та денормалізація - це два процеси, які використовуються для оптимізації продуктивності бази даних. Нормалізація мінімізує надмірності, які є в таблицях даних. Денормалізація (зворотна нормалізація) додає зайві дані або групові дані.

Що таке нормалізація?

Нормалізація - це процес, який здійснюється з метою мінімізації надмірностей, які присутні в даних у реляційних базах даних. Цей процес в основному розділить великі таблиці на менші таблиці з меншою кількістю надмірностей (званих "Нормальні форми"). Ці менші таблиці будуть пов'язані між собою через чітко визначені відносини. У добре нормалізованій базі даних будь-яка зміна або зміна даних потребує зміни лише однієї таблиці. Перша нормальна форма (1NF), друга нормальна форма (2NF) і третя нормальна форма (3NF) були введені Едгаром Ф. Коддом. Нормальна форма Бойса-Кодда (BCNF) була введена в 1974 році Коддом і Реймоном Ф. Бойсом. Вище визначені нормальні форми (4NF, 5NF і 6NF), але вони використовуються рідко.

Таблиця, яка відповідає 1NF, запевняє, що вона фактично представляє відношення (тобто вона не містить записів, які повторюються), і не містить атрибутів, які мають відносне значення (тобто всі атрибути повинні мати атомні значення). Щоб таблиця відповідала 2NF, вона повинна дотримуватися 1NF, і будь-який атрибут, який не входить до складу будь-якого ключа-кандидата (тобто не-простих атрибутів), повинен повністю залежати від будь-якого з ключових ключів у таблиці. Відповідно до визначення Кодда, таблиця, як кажуть, є у 3NF, якщо і лише тоді, коли ця таблиця знаходиться у другій нормальній формі (2NF), і кожен атрибут у таблиці, який не належить до ключового ключа, повинен безпосередньо залежати від кожного кандидатський ключ цієї таблиці. BCNF (також відомий як 3.5NF) фіксує деякі аномалії, на які не звертається 3NF.

Що таке денормалізація?

Денормалізація - це зворотний процес нормалізації. Денормалізація працює шляхом додавання зайвих даних або групування даних для оптимізації продуктивності. Навіть незважаючи на те, що додавання зайвих даних здається контрпродуктивним, іноді денормалізація є дуже важливим процесом для подолання деяких недоліків у реляційному програмному забезпеченні бази даних, що може спричинити за собою великі штрафи за ефективність роботи з нормалізованими базами даних (навіть налаштовані на підвищення продуктивності). Це тому, що приєднання кількох відносин (які є результатами нормалізації) для отримання результату запиту іноді може бути повільним, залежно від фактичної фізичної реалізації систем баз даних.

У чому різниця між нормалізацією та денормалізацією?

- Нормалізація і денормалізація - два процеси, які є абсолютно протилежними.

- Нормалізація - це процес поділу великих таблиць на менші, що зменшують надмірні дані, тоді як денормалізація - це процес додавання зайвих даних для оптимізації продуктивності.

- Нормалізація проводиться для запобігання аномалій баз даних.

- Денормалізація зазвичай проводиться для підвищення продуктивності читання бази даних, але через додаткові обмеження, які використовуються для денормалізації, записи (тобто операції вставлення, оновлення та видалення) можуть ставати повільнішими. Отже, денормалізована база даних може запропонувати гірші показники запису, ніж нормалізована база даних.

- Часто рекомендується «нормалізувати, поки це не боляче, денормалізувати, поки воно не працює».