Normalizavimas yra sumažinimo procesas perteklius iš santykio ar santykių rinkinio. Santykio perteklius gali sukelti įterpimo, ištrynimo ir atnaujinimo anomalijas. Taigi, tai padeda sumažinti santykių perteklių. Normalios formos yra naudojami duomenų bazių lentelių pertekliui pašalinti arba sumažinti.
„Ranjan Hero“ normalizavo DBVS
Duomenų bazių valdymo sistemose (DBVS) įprastos formos yra gairių serija, padedanti užtikrinti, kad duomenų bazės dizainas būtų efektyvus, organizuotas ir be duomenų anomalijų. Yra keli normalizavimo lygiai, kurių kiekvienas turi savo gairių rinkinį, vadinamą normaliomis formomis.
Svarbūs dalykai, susiję su įprastomis DBVS formomis
- Pirmoji normalioji forma (1NF): Tai pats elementariausias normalizavimo lygis. 1NF kiekviename lentelės langelyje turi būti tik viena reikšmė, o kiekvienas stulpelis turi turėti unikalų pavadinimą. Pirmoji normali forma padeda pašalinti pasikartojančius duomenis ir supaprastinti užklausas.
- Antroji normalioji forma (2NF): 2NF pašalina perteklinius duomenis, reikalaudama, kad kiekvienas ne rakto atributas priklausytų nuo pirminio rakto. Tai reiškia, kad kiekvienas stulpelis turi būti tiesiogiai susijęs su pirminiu raktu, o ne su kitais stulpeliais.
- Trečioji normalioji forma (3NF): 3NF remiasi 2NF reikalavimu, kad visi neraktiniai atributai būtų nepriklausomi vienas nuo kito. Tai reiškia, kad kiekvienas stulpelis turi būti tiesiogiai susijęs su pirminiu raktu, o ne su jokiais kitais tos pačios lentelės stulpeliais.
- Boyce-Codd normalioji forma (BCNF): BCNF yra griežtesnė 3NF forma, užtikrinanti, kad kiekvienas lentelės determinantas yra kandidato raktas. Kitaip tariant, BCNF užtikrina, kad kiekvienas ne rakto atributas priklausytų tik nuo kandidato rakto.
- Ketvirtoji normalioji forma (4NF): 4NF yra papildomas BCNF patobulinimas, užtikrinantis, kad lentelėje nebūtų jokių daugiareikšmių priklausomybių.
- Penktoji normalioji forma (5NF): 5NF yra aukščiausias normalizavimo lygis ir apima lentelės išskaidymą į mažesnes lenteles, kad būtų pašalintas duomenų perteklius ir pagerintas duomenų vientisumas.
Įprastos formos padeda sumažinti duomenų dubliavimą, padidinti duomenų nuoseklumą ir pagerinti duomenų bazės našumą. Tačiau aukštesnis normalizavimo lygis gali lemti sudėtingesnį duomenų bazių dizainą ir užklausas. Kuriant duomenų bazę svarbu rasti pusiausvyrą tarp normalizavimo ir praktiškumo.
Įprastos formos privalumai
- Sumažintas duomenų perteklius: Normalizavimas padeda pašalinti pasikartojančius duomenis lentelėse, sumažinant reikalingą saugyklos vietą ir pagerinant duomenų bazės efektyvumą.
- Patobulintas duomenų nuoseklumas: Normalizavimas užtikrina, kad duomenys būtų saugomi nuosekliai ir organizuotai, sumažinant duomenų neatitikimų ir klaidų riziką.
- Supaprastintas duomenų bazės dizainas: Normalizavimas pateikia gaires, kaip organizuoti lenteles ir duomenų ryšius, todėl lengviau kurti ir prižiūrėti duomenų bazę.
- Patobulintas užklausos našumas: Normalizuotose lentelėse paprastai lengviau ieškoti ir gauti duomenis, todėl užklausa atliekama greičiau.
- Paprastesnė duomenų bazės priežiūra: Normalizavimas sumažina duomenų bazės sudėtingumą, nes ją suskaido į mažesnes, lengviau valdomas lenteles, todėl lengviau pridėti, keisti ir ištrinti duomenis.
Apskritai įprastų formų naudojimas DBVS padeda pagerinti duomenų kokybę, padidinti duomenų bazės efektyvumą ir supaprastinti duomenų bazės kūrimą bei priežiūrą.
Pirmoji normali forma
Jei ryšyje yra sudėtinis arba daugiareikšmis atributas, jis pažeidžia pirmąją normaliąją formą arba santykis yra pirmosios normaliosios formos, jei jame nėra sudėtinio ar daugiareikšmio atributo. Ryšys yra pirmosios normaliosios formos, jei yra kiekvienas to santykio atributas vienetinis vertinamas atributas .
- 1 pavyzdys – Ryšys STUDENT 1 lentelėje nėra 1NF dėl daugiareikšmės atributo STUD_PHONE. Jo skilimas į 1NF parodytas 2 lentelėje.

Pavyzdys
- 2 pavyzdys –
ID Name Courses ------------------ 1 A c1, c2 2 E c3 3 M C2, c3>
- Aukščiau pateiktoje lentelėje Kursas yra daugiareikšmis atributas, todėl jo nėra 1NF. Žemiau lentelė yra 1NF, nes nėra kelių reikšmių atributo
ID Name Course ------------------ 1 A c1 1 A c2 2 E c3 3 M c2 3 M c3>
Antroji normali forma
Kad būtų antroji normalioji forma, santykis turi būti pirmosios normaliosios formos ir santykyje neturi būti jokios dalinės priklausomybės. Ryšys yra 2NF, jei jis turi Nėra 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. Dalinė priklausomybė – Jei tinkamas kandidato rakto poaibis nustato ne pirminį požymį, tai vadinama daline priklausomybe.
java rinkinys
- 1 pavyzdys – Apsvarstykite 3 lentelę, kaip nurodyta toliau.
STUD_NO COURSE_NO COURSE_FEE 1 C1 1000 2 C2 1500 1 C4 2000 4 C3 1000 4 C1 1000 2 C5 2000>
- {Atkreipkite dėmesį, kad yra daug kursų, turinčių tą patį kurso mokestį} Čia COURSE_FEE negali vienas nuspręsti COURSE_NO arba STUD_NO vertė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>
- PASTABA: 2NF bando sumažinti perteklinių duomenų, saugomų atmintyje, skaičių. Pavyzdžiui, jei C1 kursą lanko 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 )
AB ->C [A ir B kartu lemia C] BC -> D [B ir C kartu lemia D]>
Aukščiau pateiktame santykyje AB yra vienintelis raktas kandidatas ir nėra dalinės priklausomybės, ty joks tinkamas AB poaibis nenustato jokio ne pirminio atributo.
rihannos amžius
X is a super key. Y is a prime attribute (each element of Y is part of some candidate key).>
1 pavyzdys: Kalbant apie STUDENT, pateiktą 4 lentelėje, FD rinkinys: {STUD_NO -> STUD_NAME, STUD_NO -> STUD_STATE, STUD_STATE -> STUD_COUNTRY, STUD_NO -> STUD_AGE}
Kandidato raktas: {STUD_NO}
Šiam ryšiui 4 lentelėje STUD_NO -> STUD_STATE ir STUD_STATE -> STUD_COUNTRY yra teisingi.
Taigi STUD_COUNTRY laikinai priklauso nuo STUD_NO. Tai pažeidžia trečiąją normalią formą.
Norėdami konvertuoti jį į trečią normalią formą, išskaidysime ryšį STUDENT (STUD_NO, STUD_NAME, STUD_PHONE, STUD_STATE, STUD_COUNTRY_STUD_AGE) kaip: STUDENT (STUD_NO, STUD_NAME, STUD_PHONE, STUD_STATE, STUD_AGE) STATE_COUNTRY (STATE, COUNTRY)
Apsvarstykite santykį R(A, B, C, D, E) A -> BC, CD -> E, B -> D, E -> A Visi galimi pirmiau pateikto santykio raktai yra {A, E, CD, BC} Visi atributai yra dešinėje pusėje, visos funkcinės priklausomybės yra pagrindinės.
2 pavyzdys: Raskite aukščiausią normaliąją santykio formą R(A,B,C,D,E), kai FD nustatyta kaip {BC->D, AC->BE, B->E}
java eilutė į sveikąjį skaičių
1 žingsnis: Kaip matome, (AC)+ ={A,C,B,E,D}, bet nė vienas jo poaibis negali nustatyti viso ryšio atributo, todėl AC bus kandidatas į raktą. A arba C negali būti gaunami iš jokio kito ryšio atributo, todėl bus tik 1 kandidatas raktas {AC}.
2 žingsnis: Pirminiai atributai yra tie atributai, kurie šiame pavyzdyje yra kandidato rakto {A, C} dalis, o kiti šiame pavyzdyje bus ne pirminiai {B, D, E}.
3 veiksmas: Ryšys R yra 1-osios normalios formos, nes reliacinė DBVS neleidžia daugiareikšmio ar sudėtinio atributo. Ryšys yra 2-os normalios formos, nes BC->D yra 2-osios normaliosios formos (BC nėra tinkamas kandidato rakto AC poaibis), o AC->BE yra 2-osios normaliosios formos (AC yra kandidatas raktas) ir B->E yra 2-osios normalios formos (B nėra tinkamas kandidato rakto AC poaibis).
Ryšys nėra 3-iosios normalios formos, nes BC->D (nei BC yra superraktas, nei D nėra pagrindinis atributas) ir B->E (nei B yra superraktas, nei E nėra pirminis atributas), bet atitinka 3 normalųjį, FD LHS turi būti super raktas arba RHS turi būti pagrindinis atributas. Taigi aukščiausia normalioji santykio forma bus 2-oji normalioji forma.
Pavyzdžiui, apsvarstykite ryšį R(A, B, C) A -> BC, B -> A ir B abu yra super raktai, todėl aukščiau esantis ryšys yra BCNF.
Trečioji normali forma
Sakoma, kad ryšys yra trečiosios normaliosios formos, jei neturėtume jokios tranzityvinės priklausomybės ne pirminiams atributams. Pagrindinė trečiosios normaliosios formos sąlyga yra ta, kad santykis turi būti antrosios normalios formos.
Žemiau paminėta pagrindinė sąlyga, kuri turi būti taikoma ne trivialioje funkcinėje priklausomybėje X -> Y:
- X yra super raktas.
- Y yra pagrindinis požymis (tai reiškia, kad Y elementas yra tam tikra kandidato rakto dalis).
Norėdami sužinoti daugiau, žr Trečioji normalioji DBVS forma.
BCNF
BCNF (Boyce-Codd Normal Form) yra tik patobulinta trečiosios normalios formos versija. Čia yra keletas papildomų taisyklių nei trečioji normalioji forma. Pagrindinė sąlyga, kad bet koks ryšys būtų BCNF, yra ta, kad jis turi būti trečiosios normalios formos.
Turime sutelkti dėmesį į kai kurias pagrindines BCNF taisykles:
1. Table must be in Third Normal Form. 2. In relation X->Y, X turi būti santykio superraktas.>
Norėdami sužinoti daugiau, žr BCNF DBVS.
Ketvirta normali forma
Ketvirtoje normalioje formoje nėra nereikšmingos daugiareikšmės priklausomybės, išskyrus kandidato raktą. Pagrindinė ketvirtosios normaliosios formos sąlyga yra ta, kad ryšys turi būti BCNF.
Pagrindinės taisyklės pateikiamos žemiau.
java sūpynės
1. It must be in BCNF. 2. It does not have any multi-valued dependency.>
Norėdami sužinoti daugiau, žr Ketvirtoji normalioji DBVS forma.
Penktoji normalioji forma
Penktoji normalioji forma taip pat vadinama numatoma normalia forma. Pagrindinės penktosios normaliosios formos sąlygos yra paminėtos toliau.
Atnaujinti iš prisijungimo prie sql
Relation must be in Fourth Normal Form. The relation must not be further non loss decomposed.>
Norėdami sužinoti daugiau, žr Penktoji normalioji DBVS forma.
Įprastų formų taikymas DBVS
- Duomenų nuoseklumas: Įprastos formos užtikrina, kad duomenys būtų nuoseklūs ir juose nebūtų jokios perteklinės informacijos. Tai padeda išvengti neatitikimų ir klaidų duomenų bazėje.
- Duomenų perteklius: Įprastos formos sumažina duomenų dubliavimą, tvarkydamos duomenis į lenteles, kuriose yra tik unikalūs duomenys. Tai sumažina duomenų bazei reikalingos saugyklos vietos kiekį ir palengvina jos valdymą.
- Atsakymo laikas: Įprastos formos gali pagerinti užklausos našumą sumažindamos sujungimų, reikalingų duomenims gauti, skaičių. Tai padeda pagreitinti užklausų apdorojimą ir pagerinti bendrą sistemos našumą.
- Duomenų bazės priežiūra: Įprastos formos palengvina duomenų bazės priežiūrą, nes sumažina perteklinių duomenų, kuriuos reikia atnaujinti, ištrinti ar keisti, kiekį. Tai padeda pagerinti duomenų bazių valdymą ir sumažinti klaidų ar neatitikimų riziką.
- Duomenų bazės dizainas: Įprastos formos pateikia efektyvių, lanksčių ir keičiamo dydžio duomenų bazių projektavimo gaires. Tai padeda užtikrinti, kad duomenų bazę būtų galima lengvai keisti, atnaujinti ar išplėsti, jei reikia.
Keletas svarbių pastabų apie įprastas formas
- BCNF nėra perteklinių dėl funkcinių priklausomybių.
- Jei santykis yra BCNF, tada 3NF taip pat yra patenkintas.
- Jei visi santykio atributai yra pagrindinis atributas, tada santykis visada yra 3NF.
- Ryšys Reliacinėje duomenų bazėje visada ir bent jau 1NF formos.
- Kiekvienas dvejetainis ryšys (ryšys su tik 2 atributais) visada yra BCNF.
- Jei ryšys turi tik pavienius kandidatinius raktus (t. y. kiekvienas kandidato raktas susideda tik iš 1 atributo), tada ryšys visada yra 2NF (nes dalinė funkcinė priklausomybė neįmanoma).
- Kartais BCNF forma gali neišsaugoti funkcinės priklausomybės. Tokiu atveju naudokite BCNF tik tuo atveju, jei prarastas FD nereikalingas, kitu atveju normalizuokite tik iki 3NF.
- Yra daug daugiau normalių formų, egzistuojančių po BCNF, pvz., 4NF ir kt. Tačiau realaus pasaulio duomenų bazių sistemose paprastai nereikia viršyti BCNF.
Išvada
Išvadoje reliacinės duomenų bazės gali būti išdėstytos pagal taisyklių rinkinį, vadinamą normaliomis formomis duomenų bazėje administravimas (1NF, 2NF, 3NF, BCNF, 4NF ir 5NF), kurie sumažina duomenų perteklumą ir išsaugo duomenų vientisumą. Išspręsdama įvairias duomenų anomalijas ir priklausomybes, kiekviena paskesnė normali forma išplečia buvusią prieš ją. Konkretūs saugomų duomenų reikalavimai ir savybės lemia, kokia įprasta forma turėtų būti naudojama; aukštesnės normalios formos siūlo griežtesnį duomenų vientisumą, tačiau taip pat gali būti sudėtingesnės duomenų bazės struktūros.
Ankstesnių metų klausimų nuorodos
- GATE CS 2012, 2 klausimas
- GATE CS 2013, 54 klausimas
- GATE CS 2013, 55 klausimas
- GATE CS 2005, 29 klausimas
- GATE CS 2002, 23 klausimas
- GATE CS 2002, 50 klausimas
- GATE CS 2001, 48 klausimas
- GATE CS 1999, 32 klausimas
- GATE IT 2005, 22 klausimas
- GATE IT 2008, 60 klausimas
- GATE CS 2016 (1 rinkinys), 31 klausimas
Įprastos formos DUK
1 klausimas: kodėl DBVS svarbu normalizuoti?
Atsakymas:
Normalizavimas padeda išvengti duomenų bazės anomalijų, o tai galiausiai užtikrina duomenų bazės nuoseklumą ir padeda lengvai prižiūrėti duomenų bazę.
2 klausimas: Ar įmanoma per daug normalizuoti duomenų bazę?
Atsakymas:
Taip, per didelis normalizavimas pateks į sudėtingas užklausas ir sumažins našumą. Tai sukuria pusiausvyrą tarp normavimo ir praktiškumo.
3 klausimas: Ar reikia normalizuoti duomenų bazę iki aukščiausios normalios formos (BCNF arba 4NF)?
Atsakymas:
Nėra tam tikrų būtinų sąlygų bet kokiam duomenų bazės normalizavimui. Dažnai žemesnės formos gali pakakti konkrečiam veikimui ir paprastumui.