Metante Datumaron en Dua Normala Formo
Dum la pasinta monato, ni rigardis plurajn aspektojn pri normala tablo de datumbazo. Unue, ni diskutis la bazajn principojn de datumbazo. Lasta fojo, ni esploris la bazajn postulojn establitajn per la unua normala formo (1NF). Nun ni daŭrigu nian veturon kaj kovri la principojn de la dua normala formo (2NF).
Memoru la ĝeneralajn postulojn de 2NF:
- Forigi subaĵojn de datumoj, kiuj aplikiĝas al pluraj vicoj de tablo kaj metu ilin en apartaj tabloj.
- Krei interrilatojn inter ĉi tiuj novaj tabloj kaj iliaj antaŭuloj per la uzo de fremdaj klavoj.
Ĉi tiuj reguloj povas resumi en simpla deklaro: 2NF provas redukti la kvanton de redundaj datumoj en tablo per ĉerpi ĝin, metante ĝin en novaj tabloj kaj krei interrilatojn inter tiuj tabloj.
Ni rigardu ekzemplon. Imagu reta reta kiu konservas klientan informon en datumbazo. Ili eble havas unu tablon nomitan Klientoj kun la sekvaj elementoj:
- CustNum
- UnuaName
- Familia nomo
- Adreso
- Urbo
- Ŝtato
- Poŝtkodo
Mallonga rigardo al ĉi tiu tablo malkaŝas malgrandan kvanton da redundaj datumoj. Ni stokas la "Sea Cliff, NY 11579" kaj "Miami, FL 33157" enirojn dufoje ĉiun. Nun, tio eble ŝajnas tro multe aldonita stokado en nia simpla ekzemplo, sed imagu la malŝparitan spacon, se ni havus milojn da vicoj en nia tablo. Aldone, se la kodo por Sea Cliff ŝanĝus, ni devus fari tiun ŝanĝon en multaj lokoj laŭlonge de la datumbazo.
En 2NF-konforma datumbaza strukturo, ĉi tiu redunda informo estas ĉerpita kaj stokita en aparta tablo. Nia nova tablo (ni nomu ĝin ZIP) povus havi la jenajn kampojn:
- Poŝtkodo
- Urbo
- Ŝtato
Se ni volas esti super-efika, ni eĉ povas plenumi ĉi tiun tablon antaŭen - la poŝtoficejo provizas dosierujon de ĉiuj validaj ZIP-kodoj kaj iliaj urboj / ŝtataj rilatoj. Verŝajne, vi renkontis situacion kie ĉi tiu tipo de datumbazo estis uzata. Iu, kiu ordonis, povus unue peti vian ZIPkodon kaj poste konis la urbon kaj ŝtaton, kiun vi vokis. Ĉi tiu tipo de aranĝo reduktas la operacian eraron kaj pliigas efikecon.
Nun, ke ni forigis la duplikatajn datumojn de la Tablo de Klientoj, ni kontentigis la unuan regulon de dua normala formo. Ni ankoraŭ bezonas uzi eksterlandan ŝlosilon por ligi la du tabulojn kune. Ni uzos la ZIPkodon (la primara ŝlosilo de la ZIP-tablo) por krei tiun rilaton. Jen nia nova Klienta tablo:
- CustNum
- UnuaName
- Familia nomo
- Adreso
- Poŝtkodo
Ni nun minimigis la kvanton de redundaj informoj stokitaj en la datumbazo kaj nia strukturo estas en dua normala formo!
Se vi ŝatus certigi, ke via datumbazo estas normala, esploru niajn aliajn artikolojn en ĉi tiu serio:
- Bazaj Bazaj Normalaj Datumaroj
- Metante vian datumaron en Unua Normala Formo
- Metante vian datumaron en Dua Normala Formo
- Metante vian datumaron en Tria Normala Formo