Нормалізація це процес мінімізації надмірність від відношення або набору відношень. Надмірність у відношенні може спричинити аномалії вставки, видалення та оновлення. Отже, це допомагає мінімізувати надмірність у стосунках. Нормальні форми використовуються для усунення або зменшення надмірності в таблицях бази даних.
Нормалізація СУБД Ranjan Hero
У системах керування базами даних (СУБД) звичайні форми — це низка вказівок, які допомагають переконатися, що дизайн бази даних є ефективним, упорядкованим і не містить аномалій даних. Існує кілька рівнів нормалізації, кожен із яких має власний набір вказівок, відомих як нормальні форми.
java цикл while
Важливі моменти щодо нормальних форм у СУБД
- Перша нормальна форма (1NF): Це найпростіший рівень нормалізації. У 1NF кожна комірка таблиці повинна містити лише одне значення, а кожен стовпець має мати унікальне ім’я. Перша нормальна форма допомагає усунути дублікати даних і спростити запити.
- Друга нормальна форма (2NF): 2NF усуває надлишкові дані, вимагаючи, щоб кожен неключовий атрибут залежав від первинного ключа. Це означає, що кожен стовпець має бути безпосередньо пов’язаний з первинним ключем, а не з іншими стовпцями.
- Третя нормальна форма (3NF): 3NF будується на 2NF, вимагаючи, щоб усі неключові атрибути були незалежними один від одного. Це означає, що кожен стовпець має бути безпосередньо пов’язаний з первинним ключем, а не з будь-якими іншими стовпцями в одній таблиці.
- Нормальна форма Бойса-Кодда (BCNF): BCNF — це більш сувора форма 3NF, яка гарантує, що кожен визначник у таблиці є ключем-кандидатом. Іншими словами, BCNF гарантує, що кожен неключовий атрибут залежить лише від ключа-кандидата.
- Четверта нормальна форма (4NF): 4NF є подальшим удосконаленням BCNF, яке гарантує, що таблиця не містить багатозначних залежностей.
- П'ята нормальна форма (5NF): 5NF — це найвищий рівень нормалізації, який передбачає декомпозицію таблиці на менші таблиці для усунення надлишкових даних і покращення цілісності даних.
Звичайні форми допомагають зменшити надмірність даних, підвищити узгодженість даних і покращити продуктивність бази даних. Однак більш високі рівні нормалізації можуть призвести до більш складних проектів баз даних і запитів. При проектуванні бази даних важливо знайти баланс між нормалізацією та практичністю.
Переваги нормальної форми
- Зменшена надмірність даних: Нормалізація допомагає усунути повторювані дані в таблицях, зменшуючи необхідний обсяг пам’яті та підвищуючи ефективність бази даних.
- Покращена узгодженість даних: Нормалізація гарантує, що дані зберігаються узгоджено та впорядковано, зменшуючи ризик невідповідності даних і помилок.
- Спрощений дизайн бази даних: Нормалізація надає вказівки для організації таблиць і зв’язків даних, що полегшує проектування та підтримку бази даних.
- Покращена продуктивність запитів: У нормалізованих таблицях зазвичай легше шукати та отримувати дані, що призводить до швидшої роботи запитів.
- Простіше обслуговування бази даних: Нормалізація зменшує складність бази даних, розбиваючи її на менші, більш керовані таблиці, полегшуючи додавання, зміну та видалення даних.
Загалом, використання звичайних форм у СУБД допомагає покращити якість даних, підвищити ефективність бази даних, а також спростити проектування та обслуговування бази даних.
Перша нормальна форма
Якщо відношення містить складений або багатозначний атрибут, воно порушує першу нормальну форму або відношення знаходиться в першій нормальній формі, якщо воно не містить жодного складеного або багатозначного атрибута. Відношення є першою нормальною формою, якщо кожен атрибут цього відношення є таким окремо значний атрибут .
- Приклад 1 – Відношення STUDENT у таблиці 1 не входить до 1NF через багатозначний атрибут STUD_PHONE. Його розкладання на 1NF показано в таблиці 2.

приклад
- Приклад 2 –
ID Name Courses ------------------ 1 A c1, c2 2 E c3 3 M C2, c3>
- У наведеній вище таблиці курс є багатозначним атрибутом, тому його немає в 1NF. Нижче наведено таблицю в 1NF, оскільки немає багатозначного атрибута
ID Name Course ------------------ 1 A c1 1 A c2 2 E c3 3 M c2 3 M c3>
Друга нормальна форма
Щоб перебувати у другій нормальній формі, відношення має бути у першій нормальній формі, і відношення не повинно містити жодної часткової залежності. Відношення знаходиться в 2NF, якщо воно є Немає часткової залежності, тобто , жоден непростий атрибут (атрибути, які не є частиною жодного ключа-кандидата) не залежить від будь-якої належної підмножини будь-якого ключа-кандидата таблиці. Часткова залежність – Якщо відповідна підмножина ключа-кандидата визначає непростий атрибут, це називається частковою залежністю.
- Приклад 1 – Розгляньте таблицю 3, як показано нижче.
STUD_NO COURSE_NO COURSE_FEE 1 C1 1000 2 C2 1500 1 C4 2000 4 C3 1000 4 C1 1000 2 C5 2000>
- {Зверніть увагу, що існує багато курсів, які мають однакову плату} Тут COURSE_FEE не може самостійно визначити значення COURSE_NO або STUD_NO; COURSE_FEE разом зі STUD_NO не може визначити значення COURSE_NO; COURSE_FEE разом із COURSE_NO не можуть визначити значення STUD_NO; Отже, COURSE_FEE буде непростим атрибутом, оскільки він не належить до єдиного ключа кандидата {STUD_NO, COURSE_NO} ; Але COURSE_NO -> COURSE_FEE, тобто COURSE_FEE залежить від COURSE_NO, який є правильною підмножиною ключа кандидата. Непростий атрибут COURSE_FEE залежить від належної підмножини ключа-кандидата, який є частковою залежністю, тому це відношення не входить до 2NF. Щоб перетворити наведене вище відношення до 2NF, нам потрібно розділити таблицю на дві таблиці, наприклад: Таблиця 1: STUD_NO, COURSE_NO Таблиця 2: COURSE_NO, COURSE_FEE
Table 1 Table 2 STUD_NO COURSE_NO COURSE_NO COURSE_FEE 1 C1 C1 1000 2 C2 C2 1500 1 C4 C3 1000 4 C3 C4 2000 4 C1 C5 2000>
- ПРИМІТКА: 2NF намагається зменшити надлишкові дані, які зберігаються в пам’яті. Наприклад, якщо 100 студентів проходять курс C1, нам не потрібно зберігати його плату як 1000 для всіх 100 записів, натомість ми можемо зберегти це в другій таблиці, оскільки плата за курс C1 становить 1000.
- Приклад 2 – Розглянемо такі функціональні залежності у відношенні R (A, B, C, D)
AB ->C [A і B разом визначають C] BC -> D [B і C разом визначають D]>
У наведеному вище відношенні AB є єдиним ключем-кандидатом, і немає часткової залежності, тобто будь-яка належна підмножина AB не визначає жодного непростого атрибута.
X is a super key. Y is a prime attribute (each element of Y is part of some candidate key).>
Приклад 1: У зв’язку STUDENT, наведеному в таблиці 4, FD набір: {STUD_NO -> STUD_NAME, STUD_NO -> STUD_STATE, STUD_STATE -> STUD_COUNTRY, STUD_NO -> STUD_AGE}
Ключ кандидата: {STUD_NO}
Для цього відношення в таблиці 4 STUD_NO -> STUD_STATE і STUD_STATE -> STUD_COUNTRY вірні.
Отже STUD_COUNTRY транзитивно залежить від STUD_NO. Це порушує третю нормальну форму.
Щоб перетворити його в третю нормальну форму, ми розкладемо відношення STUDENT (STUD_NO, STUD_NAME, STUD_PHONE, STUD_STATE, STUD_COUNTRY_STUD_AGE) як: STUDENT (STUD_NO, STUD_NAME, STUD_PHONE, STUD_STATE, STUD_AGE) STATE_COUNTRY (STATE, COUNTRY)
Розглянемо відношення R(A, B, C, D, E) A -> BC, CD -> E, B -> D, E -> A Усі можливі ключі-кандидати у вищезазначеному відношенні {A, E, CD, BC} Усі атрибути праворуч від усіх функціональних залежностей є простими.
приклад 2: Знайти найвищу нормальну форму відношення R(A,B,C,D,E) із FD, установленим як {BC->D, AC->BE, B->E}
Крок 1: Як ми бачимо, (AC)+ ={A,C,B,E,D}, але жодна з його підмножини не може визначити всі атрибути відношення, тому AC буде кандидатом на ключ. A або C не можуть бути отримані з будь-якого іншого атрибута відношення, тому буде лише 1 ключ-кандидат {AC}.
Крок 2: Простими атрибутами є ті атрибути, які є частиною ключа-кандидата {A, C} у цьому прикладі, а інші будуть непростими {B, D, E} у цьому прикладі.
крок 3: Відношення R знаходиться в 1-й нормальній формі, оскільки реляційна СУБД не допускає багатозначних або складених атрибутів. Відношення знаходиться у другій нормальній формі, оскільки BC->D знаходиться у другій нормальній формі (BC не є правильною підмножиною ключа-кандидата AC), а AC->BE знаходиться у 2-й нормальній формі (AC є ключем-кандидатом), а B->E знаходиться у другій нормальній формі (B не є правильною підмножиною ключа-кандидата AC).
Відношення не знаходиться в 3-й нормальній формі, тому що в BC->D (ані BC не є суперключем, ані D не є простим атрибутом) і в B->E (ані B не є суперключем, ані E не є простим атрибутом), але задовольняють 3-й нормальний параметр, або LHS FD має бути суперключем, або RHS має бути основним атрибутом. Таким чином, найвищою нормальною формою відношення буде друга нормальна форма.
Наприклад, розглянемо відношення R(A, B, C) A -> BC, B -> A і B, обидва є суперключами, тому вищезазначене відношення знаходиться в BCNF.
Третя нормальна форма
Кажуть, що відношення знаходиться в третій нормальній формі, якщо ми не маємо ніякої транзитивної залежності для непростих атрибутів. Основна умова третьої нормальної форми полягає в тому, що відношення має бути у другій нормальній формі.
рядок додавання java
Нижче наведено основну умову, яка повинна виконуватися в нетривіальній функціональній залежності X -> Y:
- X — це суперключ.
- Y є основним атрибутом (це означає, що елемент Y є частиною ключа-кандидата).
Для отримання додаткової інформації зверніться до Третя нормальна форма в СУБД.
BCNF
BCNF (нормальна форма Бойса-Кодда) — це лише розширена версія третьої нормальної форми. Тут ми маємо деякі додаткові правила, ніж третя звичайна форма. Основною умовою для того, щоб будь-яке відношення було в BCNF, є те, що воно має бути в третій нормальній формі.
Ми повинні зосередитися на деяких основних правилах, які є для BCNF:
1. Table must be in Third Normal Form. 2. In relation X->Y, X має бути суперключем у відношенні.>
Для отримання додаткової інформації зверніться до BCNF в СУБД.
Четверта нормальна форма
Четверта нормальна форма не містить нетривіальної багатозначної залежності, окрім ключа кандидата. Основна умова четвертої нормальної форми полягає в тому, що відношення має бути в BCNF.
Основні правила наведено нижче.
1. It must be in BCNF. 2. It does not have any multi-valued dependency.>
Для отримання додаткової інформації зверніться до Четверта нормальна форма в СУБД.
П'ята нормальна форма
П'яту нормальну форму також називають проектованою нормальною формою. Нижче наведені основні умови п’ятої нормальної форми.
Relation must be in Fourth Normal Form. The relation must not be further non loss decomposed.>
Для отримання додаткової інформації зверніться до П'ята нормальна форма в СУБД.
Застосування нормальних форм у СУБД
- Послідовність даних: Звичайні форми гарантують узгодженість даних і відсутність зайвої інформації. Це допомагає запобігти невідповідності та помилки в базі даних.
- Резервування даних: Звичайні форми мінімізують надмірність даних, організовуючи дані в таблиці, які містять лише унікальні дані. Це зменшує обсяг пам’яті, необхідного для бази даних, і полегшує керування нею.
- Час реакції: Звичайні форми можуть покращити продуктивність запитів, зменшивши кількість об’єднань, необхідних для отримання даних. Це допомагає пришвидшити обробку запитів і підвищити загальну продуктивність системи.
- Ведення бази даних: Звичайні форми полегшують підтримку бази даних, зменшуючи кількість зайвих даних, які потрібно оновлювати, видаляти або змінювати. Це допомагає покращити керування базами даних і зменшити ризик помилок або невідповідностей.
- Дизайн бази даних: Звичайні форми надають вказівки для проектування баз даних, які є ефективними, гнучкими та масштабованими. Це допомагає гарантувати, що базу даних можна легко змінювати, оновлювати або розширювати за потреби.
Деякі важливі моменти щодо нормальних форм
- BCNF не має надмірності, спричиненої функціональними залежностями.
- Якщо відношення є в BCNF, то 3NF також виконується.
- Якщо всі атрибути відношення є простими атрибутами, то відношення завжди знаходиться в 3NF.
- Відношення в реляційній базі даних завжди і принаймні у формі 1NF.
- Кожне бінарне відношення (відношення лише з 2 атрибутами) завжди знаходиться в BCNF.
- Якщо відношення має лише єдині ключі-кандидати (тобто кожен ключ-кандидат складається лише з 1 атрибута), тоді відношення завжди знаходиться в 2NF (оскільки неможлива часткова функціональна залежність).
- Іноді вибір форми BCNF може не зберегти функціональну залежність. У цьому випадку використовуйте BCNF, лише якщо втрачені FD(s) не потрібні, інакше нормалізуйте лише до 3NF.
- Існує багато інших нормальних форм, які існують після BCNF, як-от 4NF тощо. Але в реальних системах баз даних зазвичай не потрібно виходити за межі BCNF.
Висновок
Підсумовуючи, реляційні бази даних можуть бути організовані відповідно до набору правил, які називаються нормальними формами бази даних адміністрування (1NF, 2NF, 3NF, BCNF, 4NF і 5NF), які зменшують надмірність даних і зберігають цілісність даних. Усуваючи різного роду аномалії даних і залежності, кожна наступна нормальна форма розширює ту, що була перед нею. Конкретні вимоги та властивості даних, що зберігаються, визначають, яку нормальну форму слід використовувати; вищі нормальні форми пропонують більш сувору цілісність даних, але також можуть призвести до більш складних структур бази даних.
e r приклади моделей
Посилання на питання попереднього року
- GATE CS 2012, питання 2
- GATE CS 2013, питання 54
- GATE CS 2013, питання 55
- GATE CS 2005, питання 29
- GATE CS 2002, питання 23
- GATE CS 2002, питання 50
- GATE CS 2001, питання 48
- GATE CS 1999, питання 32
- GATE IT 2005, питання 22
- GATE IT 2008, питання 60
- GATE CS 2016 (Набір 1), питання 31
Поширені запитання у звичайній формі
Q.1: Чому нормалізація важлива в СУБД?
відповідь:
Нормалізація допомагає запобігти аномаліям у базі даних, що зрештою забезпечує узгодженість бази даних і полегшує обслуговування бази даних.
Q.2: Чи можливо надмірно нормалізувати базу даних?
відповідь:
Так, надмірна нормалізація призведе до складних запитів, а також знижує продуктивність. Він встановлює баланс між нормалізацією та практичністю.
Q.3: Чи необхідно нормалізувати базу даних до найвищої нормальної форми, наприклад (BCNF або 4NF)?
відповідь:
Для будь-якої нормалізації бази даних немає певної необхідної умови. Часто нижчої форми може бути достатньо для конкретної продуктивності та простоти.