Datu bāzes ievietošana otrajā parastā veidlapā
Pēdējā mēneša laikā mēs esam izskatījuši vairākus datubāzes tabulas normalizēšanas aspektus. Pirmkārt, mēs apsprieda datubāzes normalizācijas pamatprincipus. Pēdējo reizi mēs pētījām pamatprasības, kas noteiktas pirmajā normālajā formā (1NF). Tagad turpināsim ceļojumu un aptverim otrās normālās formas (2NF) principus.
Atsaucieties uz 2NF vispārējām prasībām:
- Noņemiet datu apakškopas, kas attiecas uz vairākām tabulas rindām, un ievietojiet tās atsevišķās tabulās.
- Izveidot attiecības starp šīm jaunajām tabulām un to priekšgājējiem, izmantojot ārējās atslēgas.
Šos noteikumus var apkopot vienkāršā izteiksmē: 2NF mēģina samazināt dublēto datu apjomu tabulā, to izvilkot, ievietojot to jaunā tabulā (-ās) un izveidojot attiecības starp šīm tabulām.
Apskatīsim piemēru. Iedomājieties tiešsaistes veikalu, kas saglabā klientu informāciju datu bāzē. Viņiem var būt viena tabula ar nosaukumu "Klienti" ar šādiem elementiem:
- CustNum
- Vārds
- Uzvārds
- Adrese
- Pilsēta
- Valsts
- ZIP
Īss pārskats par šo tabulu parāda nelielu skaitu lieku datu. Mēs glabājam ierakstus "Sea Cliff, NY 11579" un "Miami, FL 33157" divas reizes. Tagad tas, iespējams, nešķiet pārāk daudz pievienotās atmiņas mūsu vienkāršajā piemērā, bet iztēlojies par iztērēto vietu, ja mūsu galdiņā būtu tūkstošiem rindu. Turklāt, ja Sea Cliff pasta indeksam vajadzētu mainīties, mums vajadzētu veikt šīs izmaiņas daudzās vietās visā datubāzē.
2NF atbilstošā datu bāzes struktūrā šī liekā informācija tiek iegūta un saglabāta atsevišķā tabulā. Mūsu jaunajā tabulā (to varēsim nosaukt par "ZIP"), var būt šādi lauki:
- ZIP
- Pilsēta
- Valsts
Ja mēs vēlamies būt ļoti efektīvi, mēs varam pat aizpildīt šo tabulu iepriekš - pasta nodaļa nodrošina visu spēkā esošo pasta indeksu sarakstu un to attiecības starp pilsētu un valsti. Protams, jūs esat saskāries ar situāciju, kad šāda veida datu bāze tika izmantota. Kāds, kas veic pasūtījumu, iespējams, vispirms ir lūguši tev norādīt savu pasta indeksu un pēc tam zināja pilsētu un valsti, kurā zvanījāt. Šāda veida vienošanās samazina operatora kļūdu un palielina efektivitāti.
Tagad, kad esam noņēmuši dublējošos datus no tabulas "Klienti", esam izpildījuši otro parasto veidlapu pirmo kārtulu. Lai kopā abas tabulas savienotu, mums joprojām ir jāizmanto ārējā atslēga . Lai izveidotu šīs attiecības, mēs izmantosim ZIP kodu (primāro atslēgu no tabulas ZIP ). Lūk, mūsu jaunā klientu tabula:
- CustNum
- Vārds
- Uzvārds
- Adrese
- ZIP
Mēs esam samazinājuši datu bāzē saglabātās lietiskās informācijas apjomu, un mūsu struktūra ir otrajā parastā formā!
Ja vēlaties nodrošināt, lai jūsu datu bāze tiktu normalizēta, izpētiet citus šīs sērijas rakstus:
- Datubāzes standartizācijas pamati
- Datu bāzes ievietošana pirmajā normālajā formā
- Datu bāzes ievietošana otrajā parastā veidlapā
- Datu bāzes ievietošana trešajā normālajā formā