Datu-basea Hirugarren Formulario Normalizatuan (3NF)

Hirugarren formatu arruntaren (3NF) datu osotasuna onartzen duen oinarrizko printzipioa da , Lehen Forma Normalaren (1NF) eta Second Normal Form (2NF) emandako datu-basearen normalizazio printzipioetan oinarrituta.

Hirugarren formulario normala

Datu-basearen oinarrizko bi baldintza daude hirugarren forma normalean:

Lehen mailako gakoen mendekotasunari buruz

Zutabe guztiek lehen mailako gakoaren araberakoa izan behar dute.

Zutabe baten balioa lehen mailako gako batetik eta beste zutabe batetik erator daiteke, 3NF urratzen du. Ikasleen taula bat zutabe hauei:

Bai LastName eta FirstName bai Langilearen IDaren balioaren araberakoa da? Beno, could LastName FirstName araberakoa izango da? Ez, LastName-en inolako ezer inolako FirstName-en balioa gomendatzen ez delako. Ezin izan lehenengoa LastName araberakoa da? Berriro ere ez, egia bera delako: edozein izanik LastName izan liteke, ezin izan du FirstName-ren balioari buruzko aholku bat eman. Hori dela eta, taula hau 3NF betetzen da.

Baina kontuan hartu ibilgailu hau:

Fabrikatzaileak eta Modelak ibilgailuen IDa izan liteke, baina eredua Fabrikatik ere sor daiteke, ibilgailu eredua fabrikatzaile jakin batek bakarrik egiten baitu. Taulen diseinua ez da 3NF betetzen, eta, beraz, datuak anomaliak izan ditzake. Adibidez, fabrikatzaileak eguneratu ahal izango dituzu eredua eguneratzean, okerrak sartuz.

Betetzeko, beste menpeko zutabea beste taula batera mugitu beharko genuke eta atzerriko gako bat erabiliz alda dezakegu. Honek bi taulan eragin litzake:

Ibilgailuen taula

Beheko taulan, ModelID kanpoko eredua da Moduluen taulara:

Moduluen taula

Mahai berri honek fabrikatzaileentzako ereduak mapatzen ditu. Ibilgailuen informazio espezifiko bati eguneratu nahi badiozu, taulan egin beharko zenuke, ibilgailuetan baino.

3NF modeloko eremu deribatuak

Taula batek eratorritako eremua eduki dezake, taulan beste zutabeetan oinarrituta kalkulatutakoa. Adibidez, ikusi widget aginduen taulan hau:

Guztira 3NF betetzeak haustea dakar, unitatearen prezioaren arabera kantitatearen arabera biderkatuz, lehen mailako gakoaren menpe egotea baino. Taulatik kendu behar dugu hirugarren forma normala betetzeko.

Izan ere, eratorik gero, hobe da datu-basea ez gordetzea.

Datu-baseen kontsultak egitean, besterik gabe, "euli" kalkulatu ahal izango dugu. Esate baterako, kontsulta hau lehenago erabili ahal izan dugu ordena zenbakiak eta guztirakoak eskuratzeko:

SELECT OrderNumber, Total FROM WidgetOrders

Hurrengo kontsulta erabil dezakegu:

SELECT OrderNumber, UnitPrice * Quantity AS Guztira FROM WidgetOrders

emaitza berdinak lortzeko normalizazio arauak urratzen.