Ce este normalizarea? Exemplu de baze de date 1NF, 2NF, 3NF, BCNF

Cuprins:

Anonim

Ce este normalizarea?

Normalizarea este o tehnică de proiectare a bazei de date care reduce redundanța datelor și elimină caracteristicile nedorite precum anomaliile de inserție, actualizare și ștergere. Regulile de normalizare împart tabelele mai mari în tabele mai mici și le leagă folosind relații. Scopul normalizării în SQL este de a elimina datele redundante (repetitive) și de a vă asigura că datele sunt stocate logic.

Inventatorul modelului relațional Edgar Codd a propus teoria normalizării datelor odată cu introducerea primei forme normale și a continuat să extindă teoria cu a doua și a treia formă normală. Mai târziu s-a alăturat lui Raymond F. Boyce pentru a dezvolta teoria Formei normale Boyce-Codd.

Formulare normale de baze de date

Iată o listă de forme normale

  • 1NF (Prima formă normală)
  • 2NF (a doua formă normală)
  • 3NF (a treia formă normală)
  • BCNF (Boyce-Codd Normal Form)
  • 4NF (a patra formă normală)
  • 5NF (a cincea formă normală)
  • 6NF (a șasea formă normală)

Teoria normalizării datelor în serverul SQL este încă în curs de dezvoltare. De exemplu, există discuții chiar și pe a 6- a formă normală. Cu toate acestea, în majoritatea aplicațiilor practice, normalizarea atinge cel mai bun nivel în a 3 -a formă normală . Evoluția teoriilor de normalizare SQL este ilustrată mai jos-

Formulare normale de baze de date

Normalizarea bazei de date cu exemple

Exemplul de normalizare a bazei de date poate fi ușor de înțeles cu ajutorul unui studiu de caz. Să presupunem că o bibliotecă video menține o bază de date cu filme închiriate. Fără nicio normalizare în baza de date, toate informațiile sunt stocate într-un singur tabel, așa cum se arată mai jos. Să înțelegem normalizarea în baza de date cu exemple de tabele:

Aici vedeți că coloana Filme închiriate are mai multe valori. Acum să trecem la prima formă normală:

Regulile 1NF (Prima formă normală)

  • Fiecare celulă de tabel trebuie să conțină o singură valoare.
  • Fiecare înregistrare trebuie să fie unică.

Tabelul de mai sus din 1NF-

Exemplu 1NF

Înainte de a continua, să înțelegem câteva lucruri -

Ce este o CHEIE?

O CHEIE este o valoare utilizată pentru a identifica în mod unic o înregistrare dintr-un tabel. O CHEIE ar putea fi o singură coloană sau o combinație de coloane multiple

Notă: Coloanele dintr-un tabel care NU sunt utilizate pentru a identifica o înregistrare în mod unic se numesc coloane non-cheie.

Ce este o cheie primară?

O primară este o valoare de coloană unică utilizată pentru a identifica o înregistrare de bază de date în mod unic.

Are următoarele atribute

  • O cheie primară nu poate fi NULL
  • O valoare cheie primară trebuie să fie unică
  • Valorile cheie primare ar trebui să fie rareori modificate
  • Cheia primară trebuie să aibă o valoare când se introduce o nouă înregistrare.

Ce este cheia compusă?

O cheie compusă este o cheie principală compusă din mai multe coloane utilizate pentru a identifica o înregistrare în mod unic

În baza noastră de date, avem doi oameni cu același nume Robert Phil, dar locuiesc în locuri diferite.

Prin urmare, avem nevoie atât de numele complet, cât și de adresa pentru a identifica o înregistrare în mod unic. Aceasta este o cheie compusă.

Să trecem la a doua formă normală 2NF

Reguli 2NF (a doua formă normală)

  • Regula 1 - Fii în 1NF
  • Regula 2 - Cheie primară cu o singură coloană

Este clar că nu putem merge mai departe pentru a crea baza noastră de date simplă în a doua formă de normalizare decât dacă partiționăm tabelul de mai sus.

Am împărțit tabelul nostru 1NF în două tabele și anume. Tabelul 1 și Tabelul 2. Tabelul 1 conține informații despre membri. Tabelul 2 conține informații despre filmele închiriate.

Am introdus o nouă coloană numită Membership_id, care este cheia principală pentru tabelul 1. Înregistrările pot fi identificate în mod unic în tabelul 1 folosind ID-ul de membru

Baza de date - Cheie străină

În tabelul 2, Membership_ID este cheia străină

Cheia străină face referire la cheia principală a unui alt tabel! Vă ajută să vă conectați mesele

  • O cheie străină poate avea un nume diferit de cheia sa principală
  • Se asigură că rândurile dintr-un tabel au rândurile corespunzătoare în altul
  • Spre deosebire de cheia primară, acestea nu trebuie să fie unice. Cel mai adesea nu sunt
  • Cheile străine pot fi nule, chiar dacă cheile primare nu pot

De ce ai nevoie de o cheie străină?

Să presupunem că un novice introduce o înregistrare în tabelul B, cum ar fi

Veți putea insera doar valori în cheia străină care există în cheia unică din tabelul părinte. Acest lucru ajută la integritatea referențială.

Problema de mai sus poate fi depășită declarând ID-ul de membru din Tabelul 2 ca cheie străină a ID-ului de membru din Tabelul 1

Acum, dacă cineva încearcă să insereze o valoare în câmpul ID de membru care nu există în tabelul părinte, va fi afișată o eroare!

Ce sunt dependențele funcționale tranzitive?

O dependență funcțională tranzitivă este atunci când schimbați o coloană non-cheie, poate provoca modificarea oricăreia dintre celelalte coloane non-cheie

Luați în considerare tabelul 1. Modificarea coloanei non-cheie Numele complet poate schimba Salutarea.

Să trecem la 3NF

Regulile 3NF (a treia formă normală)

  • Regula 1 - Fii în 2NF
  • Regula 2 - Nu are dependențe funcționale tranzitive

Pentru a muta tabelul 2NF în 3NF, trebuie din nou să ne împărțim din nou tabelul.

Exemplu 3NF

Mai jos este un exemplu 3NF în baza de date SQL:

Ne-am împărțit din nou mesele și am creat un nou tabel care stochează Salutări.

Nu există dependențe funcționale tranzitive și, prin urmare, tabelul nostru se află în 3NF

În Tabelul 3 ID-ul de salut este cheia primară, iar în Tabelul 1 ID-ul de salut este străin de cheia primară din Tabelul 3

Acum micul nostru exemplu se află la un nivel care nu poate fi descompus în continuare pentru a atinge forme normale mai ridicate de normalizare. De fapt, este deja în forme de normalizare superioare. Eforturi separate pentru trecerea la nivelurile următoare de date de normalizare sunt în mod normal necesare în bazele de date complexe. Cu toate acestea, vom discuta pe scurt următoarele niveluri de normalizări pe scurt, în cele ce urmează.

BCNF (Boyce-Codd Normal Form)

Chiar și atunci când o bază de date se află în a 3 -a formă normală, totuși ar exista anomalii dacă ar avea mai multe chei de candidat .

Uneori, BCNF este denumit și 3.5 Normal Form.

Regulile 4NF (a patra formă normală)

În cazul în care nici un caz tabelă de bază de date conține două sau mai multe, independente și multivoci de date care descriu entitatea în cauză, atunci este în 4 - lea formă normală.

Regulile 5NF (a cincea formă normală)

Un tabel este în a 5- a formă normală numai dacă este în 4NF și nu poate fi descompus în niciun număr de tabele mai mici fără pierderi de date.

6NF (a șasea formă normală) propus

Al șaselea Formular Normal nu este standardizat, totuși, este discutat de experți în baze de date de ceva timp. Sperăm că vom avea o definiție clară și standardizată pentru a 6- a formă normală în viitorul apropiat ...

Asta este totul pentru SQL Normalization !!!

rezumat

  • Proiectarea bazelor de date este esențială pentru implementarea cu succes a unui sistem de gestionare a bazelor de date care îndeplinește cerințele de date ale unui sistem de întreprindere.
  • Procesul de normalizare în SGBD ajută la producerea sistemelor de baze de date care sunt rentabile și care au modele de securitate mai bune.
  • Dependențele funcționale sunt o componentă foarte importantă a procesului de normalizare a datelor
  • Majoritatea sistemelor de baze de date sunt baze de date normalizate până la al treilea formular normal.
  • O cheie primară identificată în mod unic este înregistrată într-un tabel și nu poate fi nulă
  • O cheie străină ajută la conectarea tabelului și face referire la o cheie principală