Normalizācija ir samazināšanas process atlaišana no attiecības vai attiecību kopas. Redundance attiecībās var izraisīt ievietošanas, dzēšanas un atjaunināšanas anomālijas. Tātad tas palīdz samazināt attiecību dublēšanos. Normālas formas tiek izmantoti, lai novērstu vai samazinātu dublēšanos datu bāzes tabulās.
DBVS normalizēšana, ko veica Ranjan Hero
Datu bāzes pārvaldības sistēmās (DBVS) parastās formas ir virkne vadlīniju, kas palīdz nodrošināt, ka datu bāzes dizains ir efektīvs, sakārtots un bez datu anomālijām. Ir vairāki normalizācijas līmeņi, un katram ir savs vadlīniju kopums, kas pazīstams kā parastās formas.
Svarīgi punkti par parastajām formām DBVS
- Pirmā parastā forma (1NF): Tas ir visvienkāršākais normalizācijas līmenis. 1NF katrā tabulas šūnā ir jābūt tikai vienai vērtībai, un katrai kolonnai ir jābūt unikālam nosaukumam. Pirmā parastā forma palīdz novērst dublētos datus un vienkāršot vaicājumus.
- Otrā parastā forma (2NF): 2NF novērš liekos datus, pieprasot, lai katrs bezatslēgas atribūts būtu atkarīgs no primārās atslēgas. Tas nozīmē, ka katrai kolonnai jābūt tieši saistītai ar primāro atslēgu, nevis ar citām kolonnām.
- Trešā parastā forma (3NF): 3NF balstās uz 2NF, pieprasot, lai visi neatslēgas atribūti ir neatkarīgi viens no otra. Tas nozīmē, ka katrai kolonnai jābūt tieši saistītai ar primāro atslēgu, nevis ar citām kolonnām tajā pašā tabulā.
- Boisa-Koda parastā forma (BCNF): BCNF ir stingrāka 3NF forma, kas nodrošina, ka katrs noteicošais faktors tabulā ir kandidāta atslēga. Citiem vārdiem sakot, BCNF nodrošina, ka katrs bezatslēgas atribūts ir atkarīgs tikai no kandidāta atslēgas.
- Ceturtā parastā forma (4NF): 4NF ir papildu BCNF uzlabojums, kas nodrošina, ka tabulā nav daudzvērtīgu atkarību.
- Piektā parastā forma (5NF): 5NF ir augstākais normalizācijas līmenis, un tas ietver tabulas sadalīšanu mazākās tabulās, lai novērstu datu dublēšanos un uzlabotu datu integritāti.
Parastās formas palīdz samazināt datu dublēšanu, palielināt datu konsekvenci un uzlabot datu bāzes veiktspēju. Tomēr augstāks normalizēšanas līmenis var radīt sarežģītākus datu bāzes dizainus un vaicājumus. Veidojot datubāzi, ir svarīgi panākt līdzsvaru starp normalizēšanu un praktiskumu.
Parastās formas priekšrocības
- Samazināta datu dublēšana: Normalizēšana palīdz novērst dublētos datus tabulās, samazinot vajadzīgās krātuves vietu un uzlabojot datu bāzes efektivitāti.
- Uzlabota datu konsekvence: Normalizācija nodrošina, ka dati tiek uzglabāti konsekventi un organizēti, samazinot datu neatbilstību un kļūdu risku.
- Vienkāršots datu bāzes dizains: Normalizācija nodrošina vadlīnijas tabulu un datu attiecību organizēšanai, atvieglojot datu bāzes izstrādi un uzturēšanu.
- Uzlabota vaicājumu veiktspēja: Normalizētās tabulās parasti ir vieglāk meklēt un izgūt datus, kā rezultātā vaicājumu veiktspēja ir ātrāka.
- Vieglāka datu bāzes uzturēšana: Normalizēšana samazina datu bāzes sarežģītību, sadalot to mazākās, vieglāk pārvaldāmās tabulās, tādējādi atvieglojot datu pievienošanu, modificēšanu un dzēšanu.
Kopumā parasto formu izmantošana DBVS palīdz uzlabot datu kvalitāti, palielināt datu bāzes efektivitāti un vienkāršot datu bāzes izstrādi un uzturēšanu.
Pirmā normālā forma
Ja relācija satur saliktu vai vairāku vērtību atribūtu, tā pārkāpj pirmo normālo formu vai relācija ir pirmajā normālā formā, ja tā nesatur saliktu vai daudzvērtību atribūtu. Relācija ir pirmajā normālā formā, ja ir katrs šīs attiecības atribūts atsevišķi novērtēts atribūts .
- 1. piemērs – Attiecība STUDENT 1. tabulā nav 1NF, jo ir daudzvērtību atribūts STUD_PHONE. Tā sadalīšanās 1NF ir parādīta 2. tabulā.

Piemērs
- 2. piemērs –
ID Name Courses ------------------ 1 A c1, c2 2 E c3 3 M C2, c3>
- Iepriekš minētajā tabulā Course ir vairāku vērtību atribūts, tāpēc tas nav iekļauts 1NF. Zemāk tabula ir 1NF, jo nav vairāku vērtību atribūta
ID Name Course ------------------ 1 A c1 1 A c2 2 E c3 3 M c2 3 M c3>
Otrā parastā forma
Lai relācija būtu otrajā normālā formā, tai ir jābūt pirmajā normālā formā, un relācija nedrīkst saturēt daļēju atkarību. Relācija ir 2NF, ja tā ir Nav daļējas atkarības, t.i. , neviens atribūts, kas nav galvenais atribūts (atribūti, kas nav nevienas kandidātatslēgas daļa) nav atkarīgs no jebkuras tabulas kandidātatslēgas pareizas apakškopas. Daļēja atkarība - Ja atbilstošā kandidātatslēgas apakškopa nosaka atribūtu, kas nav primārais, to sauc par daļēju atkarību.
- 1. piemērs – Apsveriet 3. tabulu, kā norādīts tālāk.
STUD_NO COURSE_NO COURSE_FEE 1 C1 1000 2 C2 1500 1 C4 2000 4 C3 1000 4 C1 1000 2 C5 2000>
- {Ņemiet vērā, ka daudzām kursiem ir vienāda maksa par kursu} Šeit, COURSE_FEE nevar noteikt COURSE_NO vai STUD_NO vērtību. COURSE_FEE kopā ar STUD_NO nevar noteikt COURSE_NO vērtību; COURSE_FEE kopā ar COURSE_NO nevar noteikt STUD_NO vērtību; Tādējādi COURSE_FEE nebūtu primārais atribūts, jo tas nepieder pie vienīgās kandidāta atslēgas {STUD_NO, COURSE_NO} ; Bet, COURSE_NO -> COURSE_FEE, t.i., COURSE_FEE ir atkarīgs no COURSE_NO, kas ir pareiza kandidāta atslēgas apakškopa. Atribūts COURSE_FEE, kas nav galvenais atribūts, ir atkarīgs no atbilstošas kandidāta atslēgas apakškopas, kas ir daļēja atkarība, tāpēc šī sakarība nav 2NF. Lai pārvērstu iepriekš minēto attiecību par 2NF, mums ir jāsadala tabula divās tabulās, piemēram: 1. tabula: STUD_NO, COURSE_NO 2. tabula: 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>
- PIEZĪME: 2NF mēģina samazināt atmiņā saglabāto lieko datu apjomu. Piemēram, ja C1 kursu apgūst 100 studenti, mums nav jāsaglabā tā maksa par visiem 100 ierakstiem kā 1000, tā vietā, ja mēs varam to saglabāt otrajā tabulā, jo kursa maksa par C1 ir 1000.
- 2. piemērs – Apsveriet šādas funkcionālās atkarības attiecībā uz R (A, B , C, D )
AB ->C [A un B kopā nosaka C] BC -> D [B un C kopā nosaka D]>
Iepriekš minētajā saistībā AB ir vienīgā kandidātatslēga, un nav daļējas atkarības, t.i., neviena pareiza AB apakškopa nenosaka nevienu atribūtu, kas nav primārais.
X is a super key. Y is a prime attribute (each element of Y is part of some candidate key).>
1. piemērs: Saistībā STUDENT, kas norādīts 4. tabulā, FD kopa: {STUD_NO -> STUD_NAME, STUD_NO -> STUD_STATE, STUD_STATE -> STUD_COUNTRY, STUD_NO -> STUD_AGE}
Kandidāta atslēga: {STUD_NO}
Šai attiecībai 4. tabulā STUD_NO -> STUD_STATE un STUD_STATE -> STUD_COUNTRY ir patiesas.
Tātad STUD_COUNTRY ir pārejoši atkarīga no STUD_NO. Tas pārkāpj trešo normālo formu.
Lai to pārvērstu trešajā parastajā formā, mēs sadalīsim relāciju STUDENT (STUD_NO, STUD_NAME, STUD_PHONE, STUD_STATE, STUD_COUNTRY_STUD_AGE) kā: STUDENT (STUD_NO, STUD_NAME, STUD_PHONE, STUD_STATE, STUD_AGE) STATE_COUNTRY (STATE, COUNTRY)
Apsveriet relāciju R(A, B, C, D, E) A -> BC, CD -> E, B -> D, E -> A Visas iespējamās kandidātatslēgas iepriekš minētajā relācijā ir {A, E, CD, BC} Visi atribūti ir labajā pusē, un visas funkcionālās atkarības ir galvenās.
2. piemērs: Atrodiet relācijas R(A,B,C,D,E) augstāko normālo formu ar FD, kas iestatīta kā {BC->D, AC->BE, B->E}
1. darbība: Kā redzam, (AC)+ ={A,C,B,E,D}, bet neviena no tās apakškopas nevar noteikt visu attiecību atribūtu, tāpēc AC būs kandidāta atslēga. A vai C nevar atvasināt no neviena cita relācijas atribūta, tāpēc būs tikai viena kandidāta atslēga {AC}.
2. darbība: Galvenie atribūti ir tie atribūti, kas ir daļa no kandidātatslēgas {A, C} šajā piemērā, un citi šajā piemērā nav primārie {B, D, E}.
3. darbība: Relācija R ir pirmajā normālā formā, jo relāciju DBVS nepieļauj vairāku vērtību vai saliktu atribūtu. Attiecība ir 2. normālā formā, jo BC->D ir 2. normālajā formā (BC nav pareiza kandidātatslēgas AC apakškopa) un AC->BE ir 2. normālajā formā (AC ir kandidāta atslēga) un B->E ir 2. parastajā formā (B nav pareiza kandidāta atslēgas AC apakškopa).
Attiecība nav 3. normālā formā, jo BC->D (ne BC nav superatslēga, ne D nav galvenais atribūts) un B->E (ne B ir superatslēga, ne E nav galvenais atribūts), bet gan atbilst 3. normālajam, vai nu FD LHS ir jābūt superatslēgai, vai RHS jābūt galvenajam atribūtam. Tātad augstākā normālā attiecības forma būs 2. Normālā forma.
Piemēram, apsveriet relāciju R(A, B, C) A -> BC, B -> A un B abi ir superatslēgas, tāpēc iepriekš minētā relācija ir BCNF.
Trešā parastā forma
Tiek uzskatīts, ka relācija ir trešajā normālā formā, ja mums nebūtu nekādas pārejošas atkarības ne-pirmajiem atribūtiem. Trešās parastās formas pamatnosacījums ir tāds, ka relācijai jābūt otrajā normālā formā.
Zemāk ir minēts pamatnosacījums, kas jāievēro netriviālajā funkcionālajā atkarībā X -> Y:
- X ir Super Key.
- Y ir galvenais atribūts (tas nozīmē, ka Y elements ir daļa no kandidāta atslēgas).
Lai uzzinātu vairāk, skatiet Trešā parastā forma DBVS.
BCNF
BCNF (Boyce-Codd Normal Form) ir tikai trešās parastās formas uzlabota versija. Šeit mums ir daži papildu noteikumi nekā trešā parastā forma. Pamatnosacījums, lai jebkura saite būtu BCNF, ir tāda, ka tai ir jābūt trešajā parastajā formā.
Mums ir jākoncentrējas uz dažiem pamatnoteikumiem, kas attiecas uz BCNF:
1. Table must be in Third Normal Form. 2. In relation X->Y, X ir jābūt superatslēgai attiecībās.>
Lai uzzinātu vairāk, skatiet BCNF DBVS.
Ceturtā parastā forma
Ceturtā parastā forma nesatur netriviālu vairāku vērtību atkarību, izņemot kandidāta atslēgu. Ceturtās parastās formas pamatnosacījums ir tāds, ka relācijai jābūt BCNF.
Pamatnoteikumi ir minēti zemāk.
1. It must be in BCNF. 2. It does not have any multi-valued dependency.>
Lai uzzinātu vairāk, skatiet Ceturtā parastā forma DBVS.
dubultā java
Piektā parastā forma
Piektā parastā forma tiek saukta arī par prognozēto normālo formu. Piektās parastās formas pamatnosacījumi ir minēti zemāk.
Relation must be in Fourth Normal Form. The relation must not be further non loss decomposed.>
Lai uzzinātu vairāk, skatiet Piektā parastā forma DBVS.
Normālo formu pielietojumi DBVS
- Datu konsekvence: Parastās formas nodrošina, ka dati ir konsekventi un nesatur lieku informāciju. Tas palīdz novērst neatbilstības un kļūdas datu bāzē.
- Datu dublēšana: Parastās formas samazina datu dublēšanu, kārtojot datus tabulās, kurās ir tikai unikāli dati. Tas samazina datu bāzei nepieciešamās krātuves vietu un atvieglo tās pārvaldību.
- Reakcijas laiks: Parastas formas var uzlabot vaicājumu veiktspēju, samazinot datu izgūšanai nepieciešamo savienojumu skaitu. Tas palīdz paātrināt vaicājumu apstrādi un uzlabot sistēmas vispārējo veiktspēju.
- Datu bāzes uzturēšana: Parastās veidlapas atvieglo datu bāzes uzturēšanu, samazinot to lieko datu apjomu, kas ir jāatjaunina, jādzēš vai jāmaina. Tas palīdz uzlabot datu bāzes pārvaldību un samazināt kļūdu vai neatbilstību risku.
- Datu bāzes dizains: Parastās veidlapas sniedz vadlīnijas efektīvu, elastīgu un mērogojamu datu bāzu izstrādei. Tas palīdz nodrošināt, ka datubāzi var viegli modificēt, atjaunināt vai paplašināt pēc vajadzības.
Daži svarīgi punkti par parastajām formām
- BCNF nav atlaišanas, ko izraisa funkcionālas atkarības.
- Ja relācija ir BCNF, tad arī 3NF ir izpildīts.
- Ja visi relācijas atribūti ir galvenais atribūts, tad relācija vienmēr ir 3NF.
- Relācija relāciju datu bāzē vienmēr un vismaz ir 1NF formā.
- Katra binārā relācija (relācija ar tikai 2 atribūtiem) vienmēr ir BCNF.
- Ja relācijai ir tikai atsevišķas kandidātatslēgas (t.i., katra kandidāta atslēga sastāv tikai no 1 atribūta), tad relācija vienmēr ir 2NF (jo nav iespējama daļēja funkcionāla atkarība).
- Dažreiz BCNF formas izmantošana var nesaglabāt funkcionālo atkarību. Tādā gadījumā izmantojiet BCNF tikai tad, ja zaudētie FD nav nepieciešami, pretējā gadījumā normalizējiet tikai līdz 3NF.
- Pēc BCNF pastāv daudz vairāk parasto formu, piemēram, 4NF un citas. Bet reālās pasaules datu bāzu sistēmās parasti nav jāiet tālāk par BCNF.
Secinājums
Nobeigumā relāciju datu bāzes var sakārtot saskaņā ar noteikumu kopumu, ko sauc par parastajām formām datubāze administrēšana (1NF, 2NF, 3NF, BCNF, 4NF un 5NF), kas samazina datu dublēšanu un saglabā datu integritāti. Atrisinot dažāda veida datu anomālijas un atkarības, katra nākamā normālā forma paplašina to, kas bija pirms tās. Uzglabājamo datu īpašās prasības un īpašības nosaka, kura parastā forma ir jāizmanto; augstākas parastās formas piedāvā stingrāku datu integritāti, bet var radīt arī sarežģītākas datu bāzes struktūras.
Iepriekšējā gada jautājumu saites
- GATE CS 2012, 2. jautājums
- GATE CS 2013, 54. jautājums
- GATE CS 2013, 55. jautājums
- GATE CS 2005, 29. jautājums
- GATE CS 2002, 23. jautājums
- GATE CS 2002, 50. jautājums
- GATE CS 2001, 48. jautājums
- GATE CS 1999, 32. jautājums
- GATE IT 2005, 22. jautājums
- GATE IT 2008, 60. jautājums
- GATE CS 2016 (1. komplekts), 31. jautājums
Bieži uzdotie jautājumi par parasto veidlapu
1. J. Kāpēc DBVS ir svarīga normalizēšana?
Atbilde:
Normalizācija palīdz novērst datubāzes anomālijas, kas galu galā nodrošina datu bāzes konsekvenci un palīdz viegli uzturēt datubāzi.
2. J. Vai ir iespējams pārāk normalizēt datubāzi?
Atbilde:
Jā, pārmērīga normalizācija radīs sarežģītus vaicājumus un arī samazina veiktspēju. Tas rada līdzsvaru starp normēšanu un praktiskumu.
3. jautājums: Vai ir nepieciešams normalizēt datubāzi līdz augstākajai parastajai formai, piemēram, (BCNF vai 4NF)?
Atbilde:
Nav noteiktu nepieciešamo nosacījumu jebkurai datu bāzes normalizēšanai. Bieži vien konkrētai veiktspējai un vienkāršībai var pietikt ar zemāku formu.