Сьогодні ми з Вами поговоримо про нормалізацію бази даних, довідаємося, що це таке, які нормальні форми бази даних існують і навіщо взагалі проводити нормалізацію бази даних.
Реляційна база даних
У цілому під базою даних можна розуміти будь-який набір інформації, яку можна знайти в цій базі даних і скористатися їй, однак якщо говорити в контексті SQL, те мова буде йти, звичайно, про реляційні бази даних, а що ж це таке?
Реляційна база даних – це впорядкована інформація, зв’язана між собою певними відносинами.Реляционная база данных – это упорядоченная информация, связанная между собой определёнными отношениями.
Логічно така база даних представлена у вигляді таблиць, у яких і лежить уся ця інформація.
Нормалізація баз даних
У реляційних базах даних є таке поняття, як “Нормалізація”.
Нормалізація – це процес видалення надлишкових даних.
Також нормалізацію можна розглядати й з позиції проектування бази даних, у такому випадку ми можемо сформулювати визначення нормалізації в такий спосіб.
Нормалізація – це метод проектування бази даних, який дозволяє привести базу даних до мінімальної надмірності.
Надмірність усувається, як правило, за рахунок декомпозиції відносин (таблиць), тобто розбивки однієї таблиці на трохи.
Навіщо нормалізувати базу даних?
У Вас може виникнути питання – а навіщо взагалі нормалізувати базу даних і боротися із цією надмірністю?
Справа в тому, що надмірність даних створює передумови для появи різних аномалій, знижує продуктивність, і робить керування даними не гнучким і не дуже зручним. Звідси можна зробити висновок, що нормалізація потрібна для:
Тепер давайте поговоримо про саму надмірність даних, що ж це таке.
- Усунення аномалій
- Підвищення продуктивності
- Підвищення зручності керування даними
Надмірність даних – це коли ті самі дані зберігаються в базі в декількох місцях, саме це й приводить до аномалій.
Тому що в цьому випадку необхідно додавати, змінювати або видаляти ті самі дані в декількох місцях. Наприклад, якщо не виконати операцію в якому-небудь одному місці, то виникає ситуація, коли одні дані не відповідають неначебто точно таким же даним в іншому місці.
Давайте розглянемо приклад. Допустимо, у нас є наступна таблиця, вона зберігає інформацію про предмети меблів, зокрема найменування предмета й матеріал, з якого виготовлений цей предмет.
Ідентифікатор предмету | Найменування предмету | Матеріал |
1 | Стілець | Метал |
2 | Стіл | Масив дерева |
3 | Ліжко | ЛДСП |
4 | Шкаф | Масив дерева |
5 | Комод | ЛДСП |
А тепер допустимо, що в нас виникла необхідність підкоректувати назву матеріалу, замість “Масив дерева” потрібно написати “Натуральне дерево”, і щоб це зробити нам необхідно внести зміни відразу в кілька рядків, тому що предметів, виготовлених з масиву дерева, трохи, а саме 2: стіл і шафа.
А тепер представте, що з якихось причин ми внесли зміни тільки в один рядок, у підсумку в нашій таблиці буде й “Масив дерева”, і “Натуральне дерево”.
Ідентифікатор предмету | Найменування предмету | Матеріал |
1 | Стілець | Метал |
2 | Стіл | Натуральне дерево |
3 | Ліжко | ЛДСП |
4 | Шкаф | Масив дерева |
5 | Комод | ЛДСП |
Яке із цих назв буде правильним? А якщо представити, що ми можемо внести ще якесь нове значення при додаванні нових записів, наприклад, просто “Дерево”.
У цьому випадку в нашій таблиці незабаром буде й “Масив дерева”, і “Натуральне дерево”, і просто “Дерево”, і взагалі, що завгодно, адже це просто текст.
Ідентифікатор предмету | Найменування предмету | Матеріал |
1 | Стілець | Метал |
2 | Стіл | Натуральне дерево |
3 | Ліжко | ЛДСП |
4 | Шкаф | Масив дерева |
5 | Комод | ЛДСП |
6 | Тумба | Дерево |
Однак по своїй суті це той самий матеріал, ми просто розв’язали або підкоректувати його назва, або помилилися при додаванні нового запису. Це і є аномалія, коли одні дані в одному місці не відповідають неначебто точно таким же даним в іншому місці. Це всього лише один вид аномалії, однак у процесі додавання, зміни й видалення даних може виникати багато інших суперечливих ситуацій, тобто аномалій.
При цьому, обов’язково варто відзначити, що в нашій таблиці всього 5 записів, а тепер представте, що їх мільйон!
Замітка! Як створити таблицю в Postgresql за допомогою pgadmіn 4.
Саме тому ми повинні усувати надмірність даних у базі, тобто проводити так звану нормалізацію бази даних.
У даному конкретному випадку ми повинні назва матеріалу, з якого виготовлені предмети меблів, винести в окрему таблицю, а в таблиці із предметами зробити всього лише посилання на потрібний матеріал, тим самим, соотнеся це посилання з вихідним записом, ми будемо розуміти, з якого матеріалу зроблений той або інший предмет.
Ідентифікатор предмету | Найменування предмету | Ідентифікатор матеріала |
1 | Стілець | 2 |
2 | Стіл | 1 |
3 | Ліжко | 3 |
4 | Шкаф | 1 |
5 | Комод | 3 |
Ідентифікатор матеріала | Матеріал |
1 | Масив дерева |
2 | Метал |
3 | ЛДСП |
У цьому випадку коли нам буде потрібно змінити назва матеріалу, ми будемо вносити зміна тільки в одному місці, тобто правити тільки один рядок.
Таким чином, представляючи матеріали у вигляді окремої сутності й створюючи для неї окрему таблицю, ми усуваємо описану вище аномалію.
Інакше кажучи, кожна сутність повинна зберігатися окремо, а якщо буде потреба використання цієї сутності в іншій таблиці на неї робиться всього лише посилання, тобто вибудовується зв’язок.
Нормальні форми бази даних
У цілому процес нормалізації бази даних виглядає в такий спосіб: ми, дотримуючись певних правил і дотримуючи певні вимог, проектуємо таблиці в базі даних.
При цьому всі ці правила й вимоги можна згрупувати в кілька наборів, і якщо спроектувати базу даних з дотриманням усіх правил і вимог, які включаються в той або інший набір, то база даних буде перебувати в певному стані, тобто формі, і така форма називається нормальна форма бази даних.
Іншими словами, дотримуючись певних правил і дотримуючи певні вимог ми приводимо базу даних до певної нормальної форми.
Нормальна форма бази даних – це набір правил і критеріїв, яким повинна відповідати база даних.
Кожна наступна нормальна форма містить більш строгі правила й критерії, тим самим приводячи базу даних до певної нормальної форми ми усуваємо певний набір аномалій.
Звідси можна зробити висновок, що чим вище нормальна форма, тем менше аномалій у базі буде.
Процес нормалізації – це послідовний процес приведення бази даних до еталонного виду, тобто перехід від однієї нормальної форми до наступної.
Іншими словами, процес переходу від однієї нормальної форми до наступної – це вдосконалення бази даних. Тому що якщо база даних перебуває в якийсь певній нормальній формі – це означає, що в базі даних відсутній певний вид аномалій.
Існує 5 основних нормальних форм бази даних:
- Перша нормальна форма (1NF)
- Друга нормальна форма (2NF)
- Третя нормальна форма (3NF)
- Четверта нормальна форма (4NF)
- П’ята нормальна форма (5NF)
Однак виділяють ще додаткові нормальні форми:
- Ненормалізована форма або нульова нормальна форма (UNF)
- Нормальна форма Бойса- Кодда (BCNF)
- Доменно- Ключова нормальна форма (DKNF)
- Шоста нормальна форма (6NF)
Якщо об’єднати обоє цих списку й упорядкувати нормальні форми від менш нормалізованої до самої нормалізованої, тобто починаючи з форми, при якій база даних по своїй суті не є нормалізованої, і закінчуючи самою строгою нормальною формою, то ми одержимо наступний перелік:
- Ненормалізована форма або нульова нормальна форма (UNF)
- Перша нормальна форма (1NF)
- Друга нормальна форма (2NF)
- Третя нормальна форма (3NF)
- Нормальна форма Бойса- Кодда (BCNF)
- Четверта нормальна форма (4NF)
- П’ята нормальна форма (5NF)Доменно- Ключова нормальна форма (DKNF)
- Шоста нормальна форма (6NF)
База даних уважається нормалізованої, якщо вона перебуває як мінімум у третій нормальній формі (3NF).
У реальному світі нормалізація до третьої нормальної форми (3NF) є звичайною, стандартною практикою, тому що 3NF усуває достатню кількість аномалій, при цьому продуктивність бази даних, а також зручність її використання не знижується, що не можна сказати про всі наступні форми.
Ситуації, при яких потрібно нормалізувати базу даних до четвертої нормальної форми (4NF), у реальному світі зустрічаються досить рідко.
Якщо говорити про всі наступні нормальні форми (5NF, DKNF, 6NF), то в реальному житті важко навіть представити ситуації, при яких буде потрібно нормалізувати базу даних до цих форм.
Іншими словами, 5NF, DKNF, 6NF – це більшою мірою теоретичні нормальні форми, небагато відсторонені від реального світу.
Варто відзначити, що приведення бази даних до якоїсь конкретної нормальної форми, обов’язково вимагає, щоб ця база даних уже перебувала в попередній нормальній формі. Інакше кажучи, якщо Ви прагнете нормалізувати базу даних до третьої нормальної форми, то база вже повинна перебувати в другій нормальній формі, тобто не можна нормалізувати базу даних до третьої форми, якщо вона ще не нормалізована до другої.
Опис нормальних форм бази даних
- Ненормалізована форма або нульова нормальна форма (UNF)
- Перша нормальна форма (1NF)
- Друга нормальна форма (2NF)
- Третя нормальна форма (3NF)
- Нормальна форма Бойса- Кодда (BCNF)
- Четверта нормальна форма (4NF)
- П’ята нормальна форма (5NF)
- Доменно- Ключова нормальна форма (DKNF)
- Шоста нормальна форма (6NF)
П.С. Поцуплено з https://info-comp.ru
Магнітний підсилювач – це як забута технологія колись дуже розвинутої цивілізації. Може виникнути питання – “Якого рожена я це дістав і стряхую столітний пил”. Як . . .
Усім привіт! Сьогодні ми з Вами докладно розглянемо другу нормальну форму (2NF) бази даних, зокрема Ви довідаєтеся, які вимоги пред’являються до таблиць, щоб база даних . . .