Modelul relational
Modelul de date relational a fost propus in anul 1970 de catre E.F. Codd si constituie cea mai populara modalitate de reprezentare a datelor. E.F. Codd a construit acest model avand la baza conceptele matematice pe care le-a prezentat in lucrarea A Relational Model of Data for Large Shared Databases.
Modelul relational este strans legat de conceptul de relatie si cuprinde trei componente principale:
• o componenta structurala: permite definirea relatiilor prin intermediul atributelor, tuplurilor si a cheilor primare;
• o componenta de integritate: materializata prin impunerea de constrangeri (restrictii);
• componenta de manipulare a datelor: permite prelucrarea datelor prin intermediul unor operatii specifice.
Modelul relational sta la baza celor mai cunoscute sisteme de gestiune a bazelor de date de tip relational (Ingres, DB2, Informix, Oracle, Microsoft SQL Server, MySQL, PostgreSQL, Sybase).
Dupa cum precizam si mai sus, relatia reprezinta elementul central al modelului de date relational. O relatie este definita prin intermediul unui set de atribute (informatii elementare).
Fiecare atribut al unei relatii are un domeniu, care cuprinde un set de valori posibile din care poate lua o singura valoare, pentru fiecare element al relatiei. Elementele unei relatii mai poarta numele de tupluri. Ordinea valorilor in interiorul unui tuplu este data de ordinea de definire a atributelor in relatie.
Schema unei relatii, R(A1, A2, …, An), este compusa din urmatoarele elemente: numele relatiei (R), lista atributelor relatiei (A1, A2, …, Ai, …, An), atributul (sau atributele) care identifica unic tuplurile relatiei (A1).
Numarul de atribute care contribuie la definirea unei relatii constituie gradul relatiei. Numarul de tupluri continute de o relatie reprezinta cardinalitatea relatiei respective.
facultati(id, denumire, adresa, telefon, web)
O relatie poate fi reprezentata prin intermediul unui tabel bidimensional, care cuprinde urmatoarele elemente: nume, cap tabel, coloane si linii. Numele tabelului este acelasi cu numele relatiei pe care o reprezinta. Capul de tabel contine numele atributelor relatiei.
Fiecare coloana corespunde unui atribut al relatiei si are un nume unic in interiorul tabelului. De asemenea, o coloana prezinta un set de valori posibile (domeniu), care pot aparea in coloana.
Liniile corespund tuplurilor dintr-o relatie; o linie dintr-un tabel mai este cunoscuta sub numele de inregistrare. In fiecare element al unei inregistrari se introduce o valoare, care corespunde coloanei in care se afla elementul.
facultati +----+--------------------------------+----------------------+-----------------+------------------+ | id | denumire | adresa | telefon | web | +----+--------------------------------+----------------------+-----------------+------------------+ | 1 | Arhitectura | Traian Lalescu nr.2 | +40.256.404.021 | www.arh.upt.ro | | 2 | Automatica si calculatoare | Vasile Parvan nr.2 | +40.256.403.211 | www.ac.upt.ro | | 3 | Chimie | Piata Victoriei nr.2 | +40.256.403.063 | www.chim.upt.ro | | 4 | Constructii | Traian Lalescu nr.2 | +40.256.404.000 | www.ct.upt.ro | | 5 | Electronica si telecomunicatii | Vasile Parvan nr.2 | +40.256.402.391 | www.etc.upt.ro | | 6 | Electrotehnica | Vasile Parvan nr.2 | +40.256.403.381 | www.et.upt.ro | | 7 | Hidrotehnica | George Enescu nr.1/A | +40.256.404.082 | www.hidro.upt.ro | | 8 | Management | Remus nr.12 | +40.256.404.284 | www.mpt.upt.ro | | 9 | Mecanica | Mihai Viteazu nr.1 | +40.256.403.521 | www.mec.upt.ro | +----+--------------------------------+----------------------+-----------------+------------------+
Intr-un tabel, ordinea liniilor si a coloanelor nu prezinta importanta. Inregistrarile duplicat nu sunt permise intr-un tabel. Pentru a preveni aparitia duplicatelor a fost introdus conceptul de cheie candidat.
Chei
Se numeste cheie candidat (CK) un atribut sau un set de atribute care identifica in mod unic un tuplu al relatie. O cheie candidat prezinta urmatoarele proprietati: unicitate, nu exista doua tupluri in relatie care sa contina aceiasi valoare pentru atributul (atributele) care formeaza cheia; ireductibilitate, nu exista o submultime a cheii care sa detina proprietatea de unicitate.
CK: id CK: web
Se poate observa faptul ca in relatia facultati, atributele id si web se incadreza in pozitia de chei candidat.
Atributele unei relatii care fac parte dintr-o cheie poarta numele de atribute prime, in timp ce restul atributelor mai sunt cunoscute si sub numele de atribute neprime.
Se numeste cheie primara (PK) o cheie candidat care a fost selectata pentru a servi ca si identificator principal pentru tuplurile unei relatii. Fiecare relatie trebuie sa detina o cheie primara. Atributele corespunzatoare cheii primare nu pot contine valori NULL si nu isi pot modifica valoarea prin operatii de actualizare.
PK: id
Din lista de chei candidat va fi selectata cea mai eficienta cheie candidat pentru a ocupa pozitia de cheie primara; pentru relatia facultati, cheia primara este id.
Se numeste supercheie (SK) un set de atribute care identifica in mod unic un tuplu al relatiei. O supercheie difera de o cheie candidat prin faptul ca nu respecta proprietatea de ireductibilitate. Setul atributelor unei relatii reprezinta o supercheie (banala) fara valoare – trivial superkey.
Se numeste cheie externa (FK) un atribut sau un set de atribute dintr-o relatie care constituie o cheie primara intr-o alta relatie.
Relatiile facultati si studenti pot fi puse in asociere (one-to-many), legatura realizandu-se prin intermediul atributului id din relatia studenti (cheie externa). Atributul id din relatia studenti refera atributul id de la nivelul relatiei facultati (cheie primara).
studenti +----------+------------------+------+----+ | matricol | nume | an | id | +----------+------------------+------+----+ | LK3434 | Flavius Radovici | 4 | 5 | | LJ3435 | Adrian Popescu | 3 | 5 | | LK3243 | Radu Vasilescu | 4 | 5 | | LK2819 | Marius Cornea | 4 | 5 | | LJ9866 | Elena Ionescu | 3 | 5 | +----------+------------------+------+----+
Componenta de integritate a modelului de date relational se manifesta prin intermediul unor reguli care asigura corectitudinea datelor.
Constrangerea de integritate a entitatilor se aplica cheilor primare si stabileste ca fiecare tuplu al unei relatii este identificat unic prin intermediul unei chei, ale carei atribute nu pot contine valori NULL.
Constrangerea de integritate referentiala se aplica cheilor externe si stabileste ca orice valoare a unei chei externe se gaseste printre valorile cheii primare din relatia referita sau are valoarea NULL.
Dependente functionale
O cheie determina functional celelalte atribute ale unei relatii, motiv pentru care se numeste determinant.
O dependenta functionala descrie legatura dintre doua atribute ale unei relatii. Spunem ca un atribut Y este dependent functional de atributul X (sau atributul X determina functional pe atributul Y), si notam X->Y, daca oricarei valori a atributului X ii corespunde o singura valoare a atributului Y.
Un alt mod utilizat pentru a defini dependenta functionala este urmatorul. Un atribut Y este dependent functional de atributul X, si notam X->Y, daca valoarea sa este determinata de un atribut care este cheie.
id->denumire, adresa, telefon, web
Daca exista o dependenta functionala intr-o relatie, ea este specificata ca si constrangere intre atribute. Intr-o expresie X->Y, X poarta numele de determinant, iar Y pe cel de dependent. Faptul ca Y nu este dependent functional de X poate fi notat astfel: X|->Y.
Daca atributul Y este dependent functional de atributul X si atributul X este dependent functional de atributul Y, atunci cele doua atribute sunt in relatie de tip unu la unu.
Daca atributul Y este dependent functional de atributul X si atributul Z este dependent functional de atributul Y, atunci spunem ca atributul Z este dependent tranzitiv de atributul X.
X->Y, Y->Z, X->Z