Modelul relaţional a fost propus de E. F. Codd în 1970 care prin articolul „Un model relaţional de date pentru bănci de date partajate de dimensiuni mari” a stabilit cerinţele teoretice pentru modelul de date relaţional. Modelul relaţional este un model formal de organizare conceptuală a datelor, destinat reprezentării legăturilor dintre date şi bazat pe teoria matematică a relaţiilor. Modelul relaţional a fost definit cu rigoare matematică deosebită, fiind un mijloc performant de studiu al proprietăţilor logice ale unui sistem de baze de date. Modelul relaţional este orientat spre mulţimi în timp ce sistemele ierarhice şi reţea sunt orientate spre fişiere. În modelul relaţional relaţiile sunt utilizate pentru a reprezenta informaţiile despre obiectele reprezentate în baza de date. Conform modelului relaţional datele sunt structurate logic sub formă de tabele care definesc relaţii. Fiecare relaţie are o denumire şi este definită prin atribute care sunt coloanele tabelei. O relaţie este reprezentată printr-un tabel bidimensional, în care coloanele corespund atributelor, iar liniile corespund înregistrărilor individuale. Ordinea coloanelor (atributelor) este arbitrară, relaţia fiind invariantă la modificarea ordinii atributelor. Pentru fiecare atribut există un domeniu de valori posibile. Domeniile pot fi diferite pentru fiecare atribut, dar este posibil ca mai multe atribute să aibă acelaşi domeniu. Conceptul de domeniu permite definirea sensului şi a sursei de valori pentru fiecare atribut. Un element unei relaţii este numit tuplu, şi corespunde unei linii a tabelei. Tuplurile pot apărea în orice ordine fără a modifica semnificaţia relaţiei fiind formate din valori concrete pentru toate atribute ce definesc relaţia. Numim intensitate a relaţiei componenta fixă, invariantă, în timp a unei relaţii, formată din structura relaţiei împreună cu domeniile de valori pentru atribute şi eventualele restricţii asupra valorilor posibile. Numim extensie (stare) a relaţiei partea care se modifică în timp, adică tuplurile. Gradul relaţiei reprezintă numărul de coloane (atribute), iar cardinalitatea relaţiei numărul de linii (tupluri) pe care le are tabela ce defineşte relaţia. Gradul relaţiei este o parte a intensităţii relaţiei. Cardinalitatea exprimă starea relaţiei la un moment dat şi se modifică prin adăugarea, respectiv ştergerea de tupluri. Spunem că o relaţie este normalizată dacă este structurată adecvat. Baza de date relaţională este o mulţime de relaţii normalizate. Numim schemă a relaţiei denumirea relaţiei urmată de o mulţime de perechi atribut, domeniu.
Un domeniu este o mulţime de valori care poate fi definită fie enumerând elementele componente, fie definind o proprietate distinctă a domeniului valorilor. Fie atributele A1, A2, . . ., An şi domeniile finite D1, D2, . . ., Dn, nu neapărat disjuncte. Mulţimea {A1:D1, A2:D2, . . ., An:Dn} reprezintă schema de relaţie. Numim tuplu, sau n-tuplu, un element (V1,V2, . . .,Vn) al produsului cartezian D1 ´ D2 ´ . . . ´ Dn al domeniilor D1, D2, . . ., Dn, unde V1є D1, …, Vn є Dn.
O relaţie R pe mulţimile D1, D2, . . ., Dn este o submulţime a produsului cartezian D1 ´ D2 ´ . . . ´ Dn, adică o mulţime de tupluri. Mulţimea numelor atributelor corespunzătoare unei relaţii o numim schemă relaţională şi o notăm cu R (A1, A2, . . ., An). Putem reprezintă o relaţie printr-un tabel bidimensional în care fiecare linie corespunde unui tuplu, iar fiecare coloană unui domeniu din produsul cartezian, de fapt unui atribut. Atunci când se reprezintă o relaţie sub forma unui tabel în care antetul coloanelor sunt înscrise numele atributelor, iar fiecare linie reprezintă tuplurile (V1,V2, . . .,Vn) în care fiecare valoare este luată din domeniul corespunzător. Numele atributului exprimă semnificaţia valorilor din calcul coloanei respective. Numărul atributelor defineşte gradul relaţiei, iar numărul de tupluri din relaţie defineşte cardinalitatea relaţiei.
O relaţie are următoarele proprietăţi:
- are o denumire care identifică relaţia în mod unic;
- fiecare element (celulă) al relaţiei conţine exact o valoarea atomică (singulară);
- fiecare atribut are o denumire unică în cadrul relaţiei;
- toate valorile unui tribut aparţin domeniului de valori al atributului;
- ordinea atributelor nu este semnificativă;
- fiecare tuplu este distinct; nu există tupliri duplicate;
- ordinea tuplurilor nu este semnificativă, dar poate optimiza accesul individual la fiecare tuplu.
Atunci când inserăm tupluri într-o relaţie, este posibil ca un atribut să fie necunoscut sau nedefinit. Pentru a reprezenta acest tip de atribut a fost introdusă o valoare convenţională în relaţie, şi anume valoarea null, care reprezintă o modalitate de a trata datele incomplete sau deosebite. Există sistemele relaţionale care nu acceptă conceptul de null, care nu are corespondent în logica booleană, din care face parte calculul predicatelor folosit pentru modelul relaţional.
Numim relaţie de bază o relaţie caracterizată printr-o denumire, care corespunde unei entităţi din schema conceptuală, ale cărei tupluri sunt memorate în baza de date. O vizualizare este rezultatul dinamic al mai multor operaţii relaţionale, care acţionează asupra relaţiilor de bază pentru a realiza o altă relaţie. Numim relaţie virtuală o vizualizare. Spunem că un tabel este de tip virtual (view, vizualizare, vedere), dacă reprezintă o relaţie virtuală. Relaţia virtuală nu există fizic ca tabel în baza de date, ci doar ca definiţie a relaţiei, deoarece datele pe care le conţine nu sunt în realitate memorate, ele fiind incluse în alte tabele reale care reprezintă relaţii reale. Tabelul de tip view (vizualizare, filtru, relaţie virtuală) reprezintă o filtrare a unui tabel iniţial, sau mai multor tabele legate între ele, necesară unei anumite abordări, unei anumite aplicaţii. Utilizarea vizualizărilor asigură securitatea tabelelor iniţiale şi permite prezentarea informaţiei în conformitate cu drepturile de acces al fiecărui utilizator, asigură accesul la date personalizat pentru fiecare utilizator şi în plus simplifică operaţiile complexe asupra relaţiilor de bază. Deoarece vizualizările sunt relaţii virtuale toate reactualizările efectuate asupra relaţiilor de bază care sunt folosite la definirea relaţiilor virtuale trebuie să fie imediat reflectate imediat de toate vizualizările afectate.
Pentru o relaţie trebuie să fie posibilă identificarea în mod unic a fiecărui tuplu prin valorile atributelor ce definesc relaţia. Numim supercheie un atribut sau o mulţime de atribute care identifică în mod unic fiecare tuplu relaţiei. Numim cheie candidat o supercheie pentru care nici o submulţime de atribute nu este supercheie. Cheia candidat are două proprietăţi: unicitatea şi ireductibilitatea. Numim cheie primară cheia candidat selectată pentru a identifica în mod unic tuplurile din cadrul relaţiei. Cheile candidat care nu sunt cheie principală se numesc chei alternative. Numim cheie străină un atribut sau o mulţime de atribute care sunt identice cu cele din cheia candidat ale unei alte relaţii.
Model relaţional este caracterizat de trei elemente:
- structura relaţională a datelor;
- operatorii de tip relaţional folosiţi în model;
- regulile de integritate care se aplică asupra cheilor în model.
În anul 1985, E.F. Codd a publicat un set de 13 reguli de fidelitate pe baza cărora se apreciază dacă un sistem de gestiune de baze de date poate fi considerat relaţional. Majoritatea sistemelor de gestiune de baze de date considerate ca fiind de tip relaţional nu respectă absolut toate regulile definite de Codd, mai mult, în prezent, lista este reformulată şi cuprinde 100 de reguli.
Regula 0 – regula gestionării datelor: Un SGBD considerat ca fiind relaţional trebuie să fie capabil să gestioneze o bază de date prin posibilităţile sale relaţionale. Aceasta înseamnă că SGBD nu va folosi pentru definirea şi manipularea datelor operaţii care nu sunt de tip relaţional. Practic, majoritatea implementările existente de SGBD nu respectă această regulă.
Regula 1 – regula reprezentării datelor: Într-o bază de date relaţională, informaţia este reprezentată explicit la nivel logic sub forma unor tabele ce poartă numele de relaţii. Este regula cea mai importantă şi conform lui E.F. Codd şi în cazul în care un SGBD care nu respectă această regulă, nu poate fi considerat relaţional. Referirea la nivelul logic precizează că elemente de construcţii logice, cum sunt indecşi, nu au obligatoriu o reprezentare sub formă de tabele.
Regula 2 – regula accesului garantat la date: Fiecare valoare de dată (valoare atomică) dintr-o bază de date trebuie să poată fi adresată în mod logic printr-o combinaţie formată din numele relaţiei, valoarea cheii primare şi numele atributului. Se poate regăsi orice valoare aparţinând oricărui atribut al unei relaţii, dacă sunt specificate numele relaţiei, numele atributului şi valoarea cheii primare.
Regula 3 – regula reprezentării informaţiei necunoscute (tratarea sistematică a valorilor null): Un sistem relaţional trebuie să permită utilizatorului definirea unui tip de date numit null pentru reprezentarea unei informaţii necunoscute la momentul respectiv indiferent de tipul de dată. Într-un SGBD relaţional trebuie să putem face diferenţa între valoarea zero, un şir vid de caractere şi o valoare necunoscută.
Regula 4 – regula dicţionarelor de date (catalog dinamic on-line, bazat pe modelul relaţional): Asupra descrierii bazelor de date (informaţii relative la relaţii, vizualizări, indecşi, etc) trebuie să se poată aplica aceleaşi operaţii ca şi asupra datelor din baza de date. Descrierea bazei de date este reprezentată la nivel logic sub forma unor tabele care pot fi accesate în acelaşi mod ca şi datele efective.
Regula 5 – regula limbajului de interogare (sub-limbaje de date cuprinzătoare): Trebuie să existe cel puţin un limbaj care să permită: (1) definirea datelor, (2) definirea vizualizărilor, (3) manipularea datelor (interactiv sau prin intermediul programului), (4) constrângerile de integritate, (5) autorizarea, (6) limitele tranzacţiilor (început, execuţie, reluare). În general, toate implementările SQL respectă această regulă. Limbajul permite utilizatorilor să definească relaţii şi vizualizări, să regăsească informaţia şi să o poată actualiza, să verifice şi să corecteze datele de intrare etc.
Regula 6 – regula de reactualizare a vizualizării: Toate vizualizările care sunt teoretic reactualizabile pot fi reactualizate de sistem. Un SGBD trebuie să poată determina dacă o vizualizare poate fi actualizată şi să stocheze rezultatul interogării într-un dicţionar de tipul unui catalog de sistem. Trebuie să existe un mecanism prin care să se poată determina dacă anumite vizualizări pot fi actualizate sau nu. Majoritatea implementărilor SQL stabilesc aceasta, în funcţie de variantele instrucţiunii de selecţie utilizate.
Regula 7 – regula limbajului de nivel înalt (operaţiile de inserare, reactualizare şi ştergere de nivel înalt): Regulile de manipulare asupra unei relaţii luată ca întreg sunt valabile atât pentru operaţiile de regăsire a datelor, cât şi asupra operaţiilor de inserare, actualizare şi ştergere a datelor. Un SGBD relaţional nu trebuie să oblige utilizatorul să caute într-o relaţie, tuplu cu tuplu, pentru a regăsi informaţia dorită. Operaţiile de manipulare a datelor pot fi aplicate atât în mod interactiv cât şi prin program, într-un limbaj gazdă.
Regula 8 – regula independenţei fizice a datelor: Programele de aplicaţie şi activităţile utilizatorilor nu depind de modul de stocare a datelor sau de modul de acces la date. Într-un SGBD relaţional trebuie să se separe aspectul fizic al datelor (stocare sau acces la date) de aspectul logic al datelor.
Regula 9 – regula independenţei logice a datelor: Programele de aplicaţie şi activităţile utilizatorilor trebuie să fie transparente la modificările de orice tip efectuate asupra datelor. Orice modificare efectuată asupra unei relaţii, nu trebuie să afecteze operaţiile de manipulare a datelor, programele de aplicaţie şi mecanismele de interogare directă nu sunt afectate de modificările făcute asupra datelor.
Regula 10 – regula independenţei datelor din punct de vedere al integrităţii: Constrângerile de integritate specifice unei baze de date relaţionale nu vor fi definite programele de aplicaţie ci de sub-limbajul relaţional de date, urmând a fi memorate în catalogul sistem. (Regulile de integritate trebuie să fie definite într-un sub-limbaj relaţional, nu în programul de aplicaţie). Limbajul SQL permite definirea de restricţii privind integritatea datelor şi stocarea lor în catalogul de sistem prin aceasta asigurându-se controlul centralizat asupra constrângerilor.
Regula 11 – regula independenţei datelor din punct de vedere al distribuirii: Sub-limbajul de manipulare a datelor trebuie să permită utilizarea aceloraşi programe de aplicaţie şi interogări (să fie invariante din punct de vedere logic)pentru a accesa date centralizate sau distribuite (Distribuirea datelor pe mai multe calculatoare dintr-o reţea de comunicaţii de date, nu trebuie să afecteze programele de aplicaţie şi interogările, dacă şi ori de câte ori datele sunt centralizate sau distribuite fizic). Independenţa de distribuţie presupune ca un program de aplicaţie care accesează sistemul SGBD pe un singur calculator trebuie să funcţioneze fără modificări şi într-o reţea chiar dacă datele sunt mutate de pe un calculator pe altul, utilizatorul percepând datele fără a cunoaşte locul în care sunt stocate. Programele de aplicaţie trebuie să funcţioneze fără modifică şi într-o reţea, chiar dacă datele sunt transferate de pe un calculator pe altul.
Regula 12 – regula versiunii procedurale a SGBD (nonsubversiune): Orice componentă procedurală a unui SGBD trebuie să respecte aceleaşi reguli de integritate ca şi componenta relaţională (orice limbaj de nivel inferior trebuie să respecte aceleaşi reguli de integritate exprimate în limbajul relaţional de nivel înalt).
Cele 13 reguli pot fi grupate în cinci domenii de funcţionalitate:
- reguli fundamentale (regula 0 şi regula 12);
- reguli structurale (regula 1 şi regula 6);
- reguli de integritate (regula 3 şi regula 10);
- reguli de manipulare a datelor (regula 2, regula 4, regula 5, regula 7);
- reguli privind independenţa de date (regula 8, regula 9 şi regula 11).
Un SGBD este minimal relaţional dacă datele din cadrul bazei de date sunt reprezentate prin valori în tabele, nu există pointeri observabili de către utilizatori, iar sistemul suportă operatorii relaţionali de proiecţie, selecţie şi compunere naturală, fără limitări impuse din considerente interne.
Un SGBD este complet relaţional dacă este minimal relaţional şi, în plus, sistemul suportă restricţiile de integritate de bază (unicitatea cheii primare, constrângerile de referinţă, integritatea entităţii) şi precum şi toate operaţiile de bază ale algebrei relaţionale.
Un SGBD relaţional îndeplineşte funcţiile unui SGBD, cu anumite particularităţi care decurg din concepţia de organizare a datelor, respectiv din modelul relaţional. Fiecare SGBD relaţional implementează modelul relaţional într-o manieră proprie care îl diferenţiază de restul sistemelor relaţionale.
Caracterizarea unui SGBD relaţional se poate realiza la nivelul clasei de SGBD relaţionale, în sensul caracterizării globale, unitare în raport cu celelalte tipuri de SGBD, sau la nivelul unui SGBD relaţional individual în sensul caracterizării particularităţilor sale, în raport cu alte SGBD de tip relaţional.
Realizarea funcţiilor unui SGBD relaţional se face cu ajutorul unor instrumentele şi mecanisme de lucru specifice de tip relaţional, care le separă de sistemele considerate ca fiind nerelaţionale:
- un limbaj relaţional pentru descrierea datelor la nivel fizic, logic şi conceptual;
- un limbaj relaţional pentru manipularea datelor;
- mecanisme pentru controlul integrităţii semantice a datelor;
- mecanisme pentru optimizarea cererilor de date;
- mecanisme pentru asigurarea coerenţei datelor în condiţiile accesului la date;
- utilitare pentru generarea de formulare şi rapoarte, utilitare pentru generarea de aplicaţii, utilitare pentru generarea unor statistici referitoare la starea şi activitatea bazei de date, etc.
Un obiectiv important a proiectării unei baze de date de tip relaţional îl reprezintă gruparea atributelor în relaţii astfel încât redundanţa datelor să fie minimă. Relaţiile care conţin date redundante pot crea probleme, denumite anomalii de reactualizare, care clasificate în:
- anomalii de ştergere constau în faptul că anumite date care urmează să fie şterse, fac parte din tupluri în care se găsesc şi alte date care mai sunt necesare în continuare, ori ştergerea făcându-se la nivelul tuplului, acestea se pierd;
- anomalii de inserare (adăugare) constau în faptul că anumite date care urmează să fie adăugate fac parte din tupluri incomplete (pentru care nu se cunosc toate datele), ceea ce face ca acestea să nu poată fi adăugate;
- anomalii de modificare rezultă din faptul că este dificil de modificat o valoare a unui atribut atunci când ea apare în mai multe tupluri ale relaţiei.
Spunem că un atribut B al unei relaţii R depinde funcţional de un alt atribut A, atunci când fiecărei valori a atributului A îi corespunde exact o anumită valoare atributului B (A®B). Dependenţa funcţională este o proprietate a semnificaţiei sau a semanticii atributelor. Semantica indică modul în care atributele sunt legate unele de altele şi specifică dependenţele funcţionale ale acestora. Dependenţa funcţională este specificată ca o constrângere între atribute. Dacă atributul B depinde funcţional de atributul A, spunem că atributul A este determinatul atributului B. Spunem că o dependenţă funcţională este totală sau completă dacă cele două atribute au o dependenţă funcţională în ambele sensuri (A®B şi B®A). Pentru trei atribute A, B şi C, în care A®B şi B®C spunem că C este dependent tranzitiv de A prin intermediul atributului B, dacă avem şi A®C. În acest caz spunem că există o dependenţă tranzitivă.
Eliminarea acestor anomalii se realizează cu ajutorul operaţiei numite normalizare, care este o tehnică formală care se bazează pe cheile primare, respectiv cheile candidat ale relaţiilor şi pe dependenţele funcţionale. Tehnica include o mulţime de reguli care pot fi utilizate pentru testarea relaţiilor individuale. Dacă o anumită cerinţă nu este îndeplinită pentru o anumită relaţie, atunci relaţia în cauză va fi descompusă în relaţii care satisfac în mod individual cerinţele normalizării. Normalizarea presupune parcurgerea unei succesiuni de paşi, fiecare pas corespunzând unei forme normale. Prin parcurgerea etapelor de normalizare relaţiile devin progresiv mai restrictive ca format şi mai puţin vulnerabile la anomaliile de actualizare. Procesul de normalizare a relaţiilor se realizează în mai mulţi paşi, începând cu forma normală unu (1NF) şi ajungând la forma normală cinci (5NF). Pentru modelul relaţional doar prima formă normală (1NF) este de importanţă critică, celelalte forme normale fiind opţionale. Pentru a înlătura aceste anomalii, E.F. Codd a stabilit iniţial trei forme normale pentru relaţii şi a introdus procesul de normalizare care se bazează pe noţiunea de dependenţă funcţională ca relaţie între atributele unei entităţi care are un caracter invariant. Teoria normalizării se ocupă cu îmbunătăţirea succesivă a schemei conceptuale, fiind satisfăcute, în acelaşi timp, următoarele condiţii:
- conservarea datelor, adică în schema conceptuală finală să existe toate datele din cadrul schemei iniţiale;
- conservarea dependenţelor dintre date, adică să se păstreze tipurile de relaţii dintre entităţi;
- descompunerea minimală a relaţiilor iniţiale, adică în schema conceptuală finală nici o relaţie nu trebuie să fie conţinută într-alta.
O relaţie este în forma normală unu (1NF), dacă şi numai dacă toate atributele ei conţin numai valori atomice, adică o sigură valoare şi numai una. În plus, un tuplu nu trebuie să conţină atribute sau grupuri de atribute repetitive. Este forma de bază a relaţiilor, care figurează ca cerinţă minimală la majoritatea sistemelor de gestiune a bazelor de date de tip relaţional.
O relaţie este în a doua formă normală (2NF), dacă este în forma normală unu şi oricare dintre atributele non-cheie este dependent funcţional complet de cheia primară a relaţiei.
O relaţie este în a treia formă normală (3NF), dacă se găseşte în forma normală doi şi toate atributele non-cheie sunt dependente tranzitiv de cheia primară.
În afara primelor trei forme normale au fost introduse şi formele normale: forma normală Boyce – Codd (BCNF), a patra formă normală (4NF) şi a cincia formă normală (5NF) care conduc la diminuarea redundanţei în baza de date. Trecerea de la forma 3FN la 4FN şi 5FN se face operând asupra cheilor compuse între ale căror atribute apar relaţii care generează dependenţe ce nu sunt funcţionale, numite dependenţe multi-valoare.
O relaţie este în forma normală Boyce – Codd (BCNF), dacă fiecare determinant este o cheie candidat.
A patra formă normală (4NF) elimină redundanţele datorate relaţiilor de tip n:m, adică a dependenţelor multiple.
A cincia formă normală (5NF) elimină dependenţele multiple de tip ciclic, având ca rezultat o descompunerea a relaţiilor de tip uniune fără pierderi, din relaţiile rezultate în urma descompunerii putând fi reconstituită relaţia iniţială. Dependenţa de tip uniune fără pierderi este o proprietate a operaţiei de descompunere, care garantează că nu sunt introduse linii false atunci când relaţiile rezultare în urma descompunerii sunt reunite printr-o operaţie de uniune naturală.
Operatorii modelului relaţional
Operatorii modelului relaţional definesc operaţiile care pot fi efectuate asupra relaţiilor, pentru realizarea funcţiilor de prelucrare asupra datelor din baza de date. Modelul relaţional foloseşte operatori relaţie din algebra relaţională şi calculul relaţional. Algebra relaţională şi calculul relaţional sunt limbaje formale utilizate pentru bazele de date relaţionale ca suport pentru limbajul de manipulare a datelor, de nivel înalt. Algebra relaţională a fost introdusă de E.F. Codd în 1971 ca o mulţime de operaţii formale în care operanţii şi rezultatul sunt relaţii şi care acţionează asupra uneia sau a mai multor relaţii pentru a defini o nouă relaţie, fără a modifica relaţiile iniţiale. Cei cinci operatorii fundamentali ai algebrei relaţionale sunt fie operatori folosiţi pentru operaţiile de regăsire: selecţia (sau restricţia), proiecţia, produsul cartezian, reuniunea şi diferenţa, şi alţi trei operatori pentru operaţiile de uniune, intersecţie şi împărţire, adică operatori tradiţionali pe mulţimi (UNION, INTERSECT, PRODUCT, DIFFERENCE) şi operatori relaţionali speciali (PROJECT, SELECT, JOIN, DIVISION). Operatorii de selecţie şi proiecţie sunt unari, operând asupra unei singure relaţii, iar ceilalţi sunt operatori binari, acţionând asupra unei perechi de relaţii. În algebra relaţională se specifică în mod explicit o anumită ordine pentru evaluarea oricărei expresii, ceea ce implică o anumită strategie de evaluare a interogării bazei de date.
În calculul relaţional o interogare precizează ce va fi extras din baza de date fără a se preciza modul de evaluare a unei interogări. Calculul relaţional este o adaptare a calculului predicatelor din logica simbolică aplicat pentru interogarea bazelor de date. În logica simbolică, un predicat este o funcţie de mai multe variabile, care are o valoare de adevăr. Înlocuind variabile cu valori se obţine o expresie numită propoziţie, care poate fi adevărată sau falsă. Variabilele iau valori dintr-un domeniu dat. Calculul relaţional se prezintă sub două forme: orientat spre tupluri şi orientat spre domenii. Pe baza unor predicate iniţiale, prin aplicarea unor operatori ai calculului cu predicate (conjuncţia, disfuncţia, negaţia, cuantificatorul existenţial şi cuantificatorul universal) se pot defini noi predicate, noi relaţii.
J.D. Ullmann a demonstrat echivalenţa dintre algebra relaţională şi calculul relaţional. Motiv pentru care orice relaţie posibil de definit în algebra relaţională poate fi definită şi în cadrul calculului relaţional, şi reciproc.
Integritatea referenţială
Constrângerile de domeniu sunt restricţii care se aplică asupra mulţimi de valori permise pentru atributele relaţiilor.
Regulile de integritate sunt constrângeri sau restricţii ce se aplică tuturor instanţelor din baza de date, adică aserţiuni pe care datele conţinute în baza trebuie să le satisfacă şi prin care se asigură corectitudinea datelor. Se face distincţie între regulile structurale, care sunt inerente modelării datelor şi regulile de funcţionare (comportament), care sunt specifice unei aplicaţii particulare. Există trei tipuri de constrângeri structurale (de cheie, de referinţă, de entitate) ce constituie mulţimea minimală de reguli de integritate pe care trebuie să le respecte un SGBD relaţional şi care sunt definite în raport cu noţiunea de cheie a unei relaţii. Integritatea entităţilor impune ca într-o relaţie de bază (care corespunde unei entităţi în schema conceptuală) nici un atribut al unei chei primare nu poate fi null. Conform reguli de integritate referenţiale dacă o relaţie are o cheie externă atunci orice valoare a cheii externe va coincide cu valoarea unei chei candidat a unui tuplu în relaţia de bază a acesteia sau este o valoare null. Sunt formulate trei reguli de integritate structurală:
- unicitatea cheii: cheia primară trebuie să fie unică şi minimală;
- integritatea entităţii: atributele cheii primare trebuie să fie diferite de valoarea null;
- integritatea referirii: o cheie externă trebuie ori să fie null în întregime, ori să corespundă la o valoare a cheii primare asociate.
Niciun comentariu:
Trimiteți un comentariu