dependențe funcționale și forme normale
Funcțională valoare de atribut zavisimost- într-un tuplu identifică în mod unic valoarea unui alt atribut într-un tuplu. Formal, relația funcțională este definită după cum urmează: în cazul în care A și B - R atribute în tabel, intrarea
indică faptul că, dacă cele două tuple din tabelul R sunt aceeași valoare a atributului A, atunci ele au aceeași valoare a atributului V. Această definiție se aplică și în cazul în care A și B - o multitudine de coloane, nu doar coloanele individuale. Desemnarea prevede următoarele: A determină funcțional C.
Atribut în partea stângă a FZ numit determinant. Atributul determinant (atribut), valoare care determină valorile altor atribute ale tuplele.
Tabelul relațională este în a doua formă normală (2NF) în cazul în care nici un atribut non-cheie nu sunt dependente funcțional doar pe o parte a cheii. Astfel, a doua formă normală poate fi rupt numai atunci când componenta cheie.
În cazul în care masa nu îndeplinește 2NF, atunci există tot felul de anomalii (de intrare, actualizare, ștergere). Pentru a scapa de masa de anomalii ar trebui să fie împărțită în două tabele relaționale, fiecare dintre care satisfac 2NF. Aceste două mese mai mici, numite proiecția tabelului original. tabelul Proektsiya- format din mai multe atribute selectate dintr-un alt tabel. Procesul de divizare în două tabelul 2NF constă din următoarele etape:
1) creează un nou tabel, atributele care sunt atribute ale tabelului original incluse în legea federală contrară regulilor. FL este principalul factor determinant cheie al noului tabel;
2) atributul privind dreptul din Legea federală, este exclus din tabelul inițial;
3) în cazul în care mai mult de un FL viola 2NF, apoi pașii 1 și 2 se repetă pentru fiecare astfel de FL;
4) În cazul în care același determinant vine în mai multe FZ, toate dependente funcțional de atributele sale sunt plasate într-un atribute non-cheie din tabel, care va fi factorul determinant.
Masa relațională are oa treia formă normală (3NF) dacă pentru orice dependență funcțională. X este cheia (adică deteminant este cheia). Rezultă că orice tabel care satisface 3NF tazhe satisface 2NF. Dacă tabelul nu sunt conforme cu 3NF, există o redundanță de date, ceea ce conduce, de asemenea, la tot felul de anomalii. Solutia la aceste probleme - aceeași partiție.
Deoarece 3NF tabele satisface întotdeauna 2NF suficient pentru a utiliza criteriul de a treia formă normală. Dacă fiecare factor determinant în tabel este cheia acestui tabel, masa este prima, a doua și a treia formă normală. Acest lucru simplifică procesul de normalizare, după cum este necesar să se verifice doar un singur criteriu.
Trebuie remarcat faptul că această definiție corespunde celei de a treia formă normală în unele surse forma normală Boyce-Codd.
În cele mai multe cazuri, realizarea celei de a treia formă normală și este considerată suficientă pentru proiectele actuale de baze de date, dar teoria normalizare sunt forme normale de ordin superior, care au fost deja conectate nu cu dependențe funcționale între atributele relațiilor, și reflectă problemele mai subtile ale domeniului semantica și asociate cu alte tipuri de dependențe.
Prima formă normală interzice să aibă atribute multi-evaluate. Cu toate acestea, există multe situații în care trebuie să ambiguitate.
Condiția asigurarea independenței atributelor prin solicitarea repetarea unor valori numite o dependență multivaloare (ZMP). ZMP este aceeași condiție restrictivă, cum ar fi FL, deoarece acestea necesită un număr mare de repetiții ale valorilor de date. O etapă importantă în normalizarea constă în a scăpa de dependențe multi-evaluate. Un tabel este într-o formă normală a patra. în cazul în care este în formă normală a treia și nu are dependențe multi-evaluate. Având în vedere că problema dependențelor multivalentă apar în legătură cu atributul multivalentă, atunci problema este rezolvată prin plasarea dependențe multivalentă a fiecărui atribut multi-evaluate în propriul tabel cu cheia, care depinde de atribut.
Luați în considerare situația specifică clar pentru toți elevii. Să presupunem că avem o atitudine care simulează examenele viitoare în sesiune. Să presupunem că se pare ca:
(Nr zach.kn. Group, Disciplina).
Lista disciplinelor pe care studentul trebuie să ia, în mod clar nu determinat de numele și numărul grupului (de exemplu, specialitatea) sa.
În acest sens, următoarele două valori, dependențe:
Grupul - „Disciplina și Grupul -“ zach.kn. Cameră
Aceasta înseamnă că fiecare grup corespunde în mod unic în lista de subiecte pe curriculum și numărul grupului determină lista studenților care studiază în acest grup.
Dacă lucrăm cu atitudinea inițială, nu vom putea stoca informații despre noua trupa si curriculum-ul său - lista de subiecte care trebuie să treacă în fața grupului, atâta timp cât studenții sunt înscriși în ea. Când modificați lista de subiecte în curriculum, de exemplu, adăugând o nouă disciplină, pentru a face aceste modificări în raport cu toți elevii implicați în acest grup este foarte dificil. Pe de altă parte, dacă vom adăuga elevi la un grup existent, avem nevoie pentru a adăuga un set de tuple corespunzător listei de subiecte pentru grup. Aceste modificări raport anomalii este exact asociat cu prezența a două dependențe multivaloare.
În acest exemplu, puteți face raportul de descompunere inițială a două relații:
(Nr zach.kn. Group)
Ambele atitudini sunt în formă normală a patra și fără anomalii remarcat. Într-adevăr, ambele operații sunt acum simplificate modificare: adăugarea unui elev nou asociat cu adăugarea de doar un tuplu în primul raport, precum și adăugarea unei noi rezultate disciplină în adăugarea unui tuplu în a doua atitudine. În plus, în a doua relație, putem stoca orice număr de grupuri cu o anumită listă de discipline, care nu au fost încă înscriși studenți.
Acesta din urmă este o formă normală a cincea formă normală 5NF, care
rar utilizate în practică. Într-o mare măsură, este un studiu teoretic.