Skip to main content

Punerea unei baze de date în a doua formă normală (2NF)

Web Programming - Computer Science for Business Leaders 2016 (Mai 2024)

Web Programming - Computer Science for Business Leaders 2016 (Mai 2024)
Anonim

Am analizat mai multe aspecte legate de normalizarea unei tabele de baze de date. În primul rând, am discutat despre principiile de bază ale normalizării bazei de date. Ultima dată, am analizat cerințele de bază stabilite în primul formular normal (1NF). Acum, să continuăm călătoria noastră și să acoperi principiile celei de-a doua forme normale (2NF).

Cerințele generale ale 2NF

  • Eliminați subseturile de date care se aplică mai multor rânduri dintr-o tabelă și plasați-le în tabele separate.
  • Creați relații între aceste tabele noi și predecesorii lor prin utilizarea cheilor externe.

Aceste reguli pot fi rezumate într-o simplă declarație: 2NF încearcă să reducă cantitatea de date redundante dintr-o tabelă, extragând-o, plasând-o în tabele noi și creând relații între aceste tabele.

Să ne uităm la un exemplu. Imaginați-vă un magazin online care menține informațiile despre clienți într-o bază de date. Acestea ar putea avea o singură masă numită Clienți cu următoarele elemente:

  • CustNum
  • Nume
  • Numele de familie
  • Adresa
  • Oraș
  • Stat
  • ZIP

O scurtă privire la acest tabel arată o cantitate mică de date redundante. Stocăm două înregistrări "Sea Cliff, NY 11579" și "Miami, FL 33157". Acum, ar putea părea că nu este prea mult stocat în exemplul nostru simplu, dar imaginați spațiul pierdut dacă am avea mii de rânduri în masa noastră. În plus, dacă codul poștal pentru Sea Cliff trebuia să se schimbe, ar fi trebuit să facem această schimbare în multe locuri din întreaga bază de date.

Într-o structură bază de date compatibilă cu 2NF, această informație redundantă este extrasă și stocată într-un tabel separat. Noua noastră tabelă (să o numim ZIPs) ar putea avea următoarele câmpuri:

  • ZIP
  • Oraș
  • Stat

Dacă vrem să fim super-eficienți, putem chiar să umplem masa în avans - biroul poștal oferă un director cu toate codurile poștale valabile și relațiile lor de oraș / stat. Desigur, ați întâlnit o situație în care acest tip de bază de date a fost utilizat. Cineva care a primit o comandă s-ar putea să vă fi cerut mai întâi codul dvs. poștal și apoi să știe orașul și statul de la care ați sunat. Acest tip de aranjament reduce eroarea operatorului și mărește eficiența.

Acum, când am eliminat datele duplicative din tabelul Clienți, am îndeplinit prima regulă a celui de-al doilea formular normal. Încă mai trebuie să folosim o cheie străină pentru a lega împreună cele două mese. Vom folosi codul ZIP (cheia primară din tabelul ZIPS) pentru a crea acea relație. Iată noul tabel al clienților noștri:

  • CustNum
  • Nume
  • Numele de familie
  • Adresa
  • ZIP

Am redus acum cantitatea de informații redundante stocate în baza de date și structura noastră se află în a doua formă normală.