Pirmoji normalioji forma (1NF) nepanaikina pertekliaus, o greičiau pašalina pasikartojančias grupes. Užuot turėję kelis tos pačios rūšies duomenų stulpelius įraše (0NF arba Unnormalized forma), pašalinate pasikartojančią informaciją į atskirą ryšį ir pateikiate jas kaip eilutes. Štai kas sudaro 1NF.
Antroji normali forma
Antroji normalioji forma (2NF) yra pagrįsta visiškai funkcinės priklausomybės koncepcija. Antroji normalioji forma taikoma ryšiams su sudėtiniais raktais, ty ryšiams su pirminiu raktu, sudarytu iš dviejų ar daugiau atributų. Ryšys su vieno atributo pirminiu raktu automatiškai yra bent 2NF. Ryšys, kurio nėra 2NF, gali nukentėti dėl atnaujinimo anomalijų. Kad būtų antrosios normaliosios formos santykis, jis turi būti pirmosios normaliosios formos ir santykyje neturi būti jokios dalinės priklausomybės. Ryšys yra 2NF, jei jis neturi dalinės priklausomybės, t. y. joks ne pirminis atributas (atributai, kurie nėra jokio kandidato rakto dalis) nepriklauso nuo tinkamo bet kurio lentelės kandidato rakto poaibio. Kitaip tariant,
Ryšys, kuris yra pirmosios normalios formos ir kiekvienas ne pirminio rakto atributas, funkciškai visiškai priklauso nuo pirminio rakto, tada ryšys yra antrosios normalios formos (2NF).
Pastaba - Jei tinkamas kandidato rakto poaibis nustato ne pirminį požymį, jis iškviečiamas dalinė priklausomybė . The normalizavimas 1NF ryšys su 2NF apima dalinių priklausomybių pašalinimas . Jei egzistuoja dalinė priklausomybė, iš santykio pašaliname iš dalies priklausomą (-us) atributą (-us), įtraukdami juos į naują ryšį kartu su determinanto kopija. Apsvarstykite toliau pateiktus pavyzdžius.
1 pavyzdys: Apsvarstykite toliau pateiktą lentelę.
STUD_NO COURSE_NO COURSE_FEE 1 C1 1000 2 C2 1500 1 C4 2000 4 C3 1000 4 C1 1000 2 C5 2000>
{Atminkite, kad yra daug kursų, kurių mokesčiai yra vienodi. } Čia COURSE_FEE negali vienas nuspręsti COURSE_NO arba STUD_NO reikšmės; COURSE_FEE kartu su STUD_NO negali nuspręsti COURSE_NO vertės; COURSE_FEE kartu su COURSE_NO negali nuspręsti STUD_NO reikšmės; Taigi COURSE_FEE būtų ne pagrindinis atributas, nes jis nepriklauso vieninteliam kandidato raktui {STUD_NO, COURSE_NO} ; Tačiau COURSE_NO -> COURSE_FEE, ty COURSE_FEE priklauso nuo COURSE_NO, kuris yra tinkamas kandidato rakto poaibis. Ne pirminis atributas COURSE_FEE priklauso nuo tinkamo kandidato rakto poaibio, kuris yra dalinė priklausomybė, todėl šio ryšio nėra 2NF. Norėdami konvertuoti aukščiau pateiktą santykį į 2NF, turime padalyti lentelę į dvi lenteles, tokias kaip: 1 lentelė: STUD_NO, COURSE_NO 2 lentelė: COURSE_NO, COURSE_FEE
Table 1 Table 2 STUD_NO COURSE_NO COURSE_NO COURSE_FEE 1 C1 C1 1000 2 C2 C2 1500 1 C4 C3 1000 4 C3 C4 2000 4 C1 C5 2000 2 C5>
Pastaba - 2NF bando sumažinti perteklinių duomenų, saugomų atmintyje, skaičių. Pavyzdžiui, jei C1 kursą moko 100 studentų, mums nereikia saugoti jo Mokesčio kaip 1000 už visus 100 įrašų, o kai tik galime jį išsaugoti antroje lentelėje, nes C1 kurso mokestis yra 1000.
2 pavyzdys: Apsvarstykite šias funkcines priklausomybes santykiuose R (A, B, C, D )
eilutę į ilgą
AB ->C [A ir B kartu lemia C] BC -> D [B ir C kartu lemia D]>
Atsakymas:
Pirmiausia galime patikrinti, ar nėra dalinių priklausomybių. Dalinė priklausomybė atsiranda, kai ne pirminis atributas (nėra jokio kandidato rakto dalis) priklauso tik nuo kandidato rakto dalies.
Kandidatus į santykio R raktus galima nustatyti suradus kiekvieno atributo uždarymą:
AB nustato kiekvieną raktą.
arraylist ir linkedlist
Dabar patikrinkime, ar nėra dalinių priklausomybių:
Šiame ryšyje nėra dalinių priklausomybių, nes kiekvienas ne pirminis požymis (C ir D) priklauso nuo viso kandidato rakto (-ų), kurio (-ių) jis yra (atitinkamai AB ir BC).
Todėl santykis R jau yra 3-ioje normalioje formoje (3NF), nes jis atitinka 1-osios normaliosios formos (1NF) ir 2-osios normaliosios formos (2NF) sąlygas ir neturi jokių pereinamųjų priklausomybių.
Išvada
Apibendrinant galima pasakyti, kad 2NF yra pagrindinė duomenų bazės normalizavimo koncepcija, padedanti pašalinti dalines priklausomybes iš jūsų reliacinės duomenų bazės. 2NF taisyklių laikymasis padeda tvarkyti duomenų bazę, kad būtų išvengta anomalijų ir užtikrinamas duomenų vientisumas, todėl būtų lengviau saugoti ir gauti duomenis.