Documente Academic
Documente Profesional
Documente Cultură
MODELUL RELAIONAL
Noiuni, restricii, schem, coninut
Fondator
Edgar F. Codd (1923-2003) Matematician Angajat al IBM 1969: raport intern IBM 1970: un articol celebru publicat n Communications of the ACM
http://www.seas.upenn.edu/~zives/03f/cis550/codd.pdf
Critic modelul ierarhic i propune un model de date fundamentat matematic, bazat pe logica predicatelor
BD) Integritate (ce restricii pot fi definite pentru a asigura un ct mai mare grad de corectitudine a datelor din BD) Manipulare (cum puteam actualiza i stoarce de informaii o BD)
Tupluri, tupluri... - 1
O linie (tuplu) este, d.p.d.v. matematic, o relaie ntre clase de valori O relaie (tabel) poate avea, n orice moment, oricte tupluri (linii)
Tuplul de mai sus aparine tabelei CLIENI i se refer la unul dintre clienii firmei (Modern SRL)
Tupluri, tupluri... - 2
D.p.d.v. matematic, tuplul corespunztor clientului Modern SRL este o relaie ntre patru valori (vi) extrase din patru clase de valori (domenii Di)
un domeniu asociat codului intern atribuit fiecrui client D1 un domeniu asociat numelor firmelor-client D2 un domeniu asociat asociat adreselor (sediilor) clienilor D3 un domeniu asociat codurilor potale (ale sediilor (v , v4 ) unde clienilor) D3 4 1, v2 , v
v 1 D1 , v2 D 2 , v 3 D3 , v4 D 4
Ansamblul valorilor de acelai corespunde unui atribut Pentru fiecare atribut intereseaz:
numele domeniul
tip
O pizzerie Un dealer auto En-grossist de materiale de construcii O firm de mobil Un hotel O sal de conferine
Valori nule
CLIENI2
Valori necunoscute
Valoare inexistent
Clientul 6 SA nu are telefon fix instalat (i nici mobil)
n cadrul unei baze de date, o relaie prezint un nume distinct de al celorlalte relaii Valoarea unui atribut ntr-un tuplu este atomic (simpl, elementar) Fiecare atribut are un nume distinct Orice valoare a unui atribut face parte din domeniul pe care a fost definit acesta Ordinea dispunerii atributelor i tuplurilor nu influeneaz coninutul informaional Nu pot exista dou tupluri identice
Vizualizarea obiectelor BD n
O r a c l e
PostgreSQL
Integritatea unei BD - 1
O BD conine informaii despre procese, tranzacii, operaiuni (etc.) economice (i nu numai) n BD informaiile ar trebui s fie exacte sau ct mai apropiate de realitate Din pcate, corectitutinea nu poate fi asigurat 100% dect n foarte puine situaii Mecanismul de integritate diminueaz numrul de erori din coninutul BD
Integritatea unei BD - 2
Ex. de erori evitabile: dou persoane cu o aceai valoare a atributului CNP doi sau mai muli studeni cu matricol identic existena n BD a unui student cruia s nu i se cunoasc numele studeni care s apar nscrii n anul 7 de studii existena vreunei note pentru un student inexistent
Integritatea unei BD - 3
Mecanismul de integritate al BD este un ansamblu de restricii care, odat declarate (i implementate), sunt supravegheate automat de ctre SGBD La nclcarea unei restricii, SGBD-ul ip i blochez inserarea, modificarea sau tergerea (care a generat nclcarea) n BD pentru termenul nclcare se folosete cuvntul violare (modest omagiu adus tirilor de la ora 17:00)
Restricii de domeniu
Se pot declara: Implicit, la crearea unei tabele, prin tipurile standard asociate fiecrui atribut: numr ntreg, numr real, ir de caractere, dat calendaristic, interval etc. Explicit prin comenzi:
CREATE DOMAIN (implementat n PostgreSQL) CREATE TYPE (implementat n PostgreSQL)
CREATE DOMAIN domCoduriPostale NUMERIC(6) CHECK ( VALUE BETWEEN 100001 AND 999999) ; CREATE DOMAIN domEMailuri VARCHAR(100) CHECK (VALUE LIKE '%@%.%') CREATE TABLE pers ( nume VARCHAR(50), prenume VARCHAR(50), adresa VARCHAR(100), codpost domCoduriPostale, email domEMailuri ) ;
Valori nenule
Atomicitate
Este o restricie de proiectare a BD Accepiunea clasic a atomicitii: valorile tuturor atributelor trebuie s fie simple, elementare (nici complicate/complexe (imagini, clipuri video) i nici colecii/seturi) A atras multe reprouri la adresa modelului relaional (mai ales din direcia orientrii pe obiecte) Este alunecoas: o aceai valoare poate fi considerat atomic, alteori neatomic !!!
Atomicitate ex.1
Pentru BD dedicat unei biblioteci personale, toate valorile pot fi acceptate ca atomice Pentru BD unei biblioteci universitare (cutri dup autori, subiecte...), valorile
Atomicitate ex.2
n unele situaii ex. BD FEAA, tabela STUDENI, atributul Adresa este atomic n alte situaii (ROMTELECOM, ROMGAZ) NU !
Atributul MatricolStudent este atomic Atributul Student nu este atomic (un student are un nume, un CNP, un matricol, este nscris la o specializare, ntr-un an de studii) NumeClient este atomic Client nu ! Atributul Telefon (numrul) este atomic Atributul Telefoane nu !
Problema identificrii
Cum difereniem:
O persoan de alta, Un profesor de altul (toi sunt enervani!), O carte de alt carte (asta chiar c nu v intereseaz!), O factur de alt factur ?
Oamenii fac diferenierea uneori incontient, pe baza unei imagini de ansamblu Calculatoarele au nevoie de informaii precise pentru a face identificarea
Identificatori
ntr-o tabel (relaie) este interzis existena a dou (sau mai multe) linii (nregistrri) complet identice Trebuie s existe un atribut (sau o combinaie de atribute) ale crui valori nu se repet pe alte linii, orict de mare ar fi tabela (miliarde de nregistrri) Dac o tabel nu are niciun identificator, atunci trebuie reproiectat (de obicei i se mai adaug cteva atribute) !
Cheia primar
Definiie: Atribut sau un grup de atribute care identific fr ambiguitate fiecare tuplu (linie) al relaiei (tabelei) Cerine:
unicitate: compoziie
Restricie: Nici un atribut din cheia primar nu poate avea valori nule (restricia entitii)
Rmn n discuie:
Matricol (identific fiecare student a fost valabil la nivel de facultate, apoi la nivel de universitate, iar acum este valabil la nivelul rii) CNP (este unic la nivel naional) TelMobil (de obicei, un telefon mobil este folosit de o singur persoan) E-Mail (i adresa de e-mail este personal) SerieNrCardIdentit (combinaia Serie+Nr card de identitate este unic la nivel naional)
Risc: n unele nregistrri din tabela STUDENI (corespunztoare studenilor care provin din rile de mai sus) valoarea CNP va fi NULL !!!
Soluie: cheia primar a tabelei STUDENI va fi atributul Matricol
Chei alternative
n ex. anterior (tabela STUDENI), atributul:
SerieNrCardIdentit
i atributele ale cror valori nu trebuie s se repete, dar pot avea valori NULLe:
CNP TelMobil E-Mail
pot fi declarate chei alternative (clauza UNIQUE din SQL); SGBD-ul va veghea ca valorile nenule ale acestora s nu se repete
Specificaii minimale 1:
Numrul facturii nu se recicleaz O factur este adresat unui singur client O factur conine oricte linii Pe o linie se afl un singur produs Un produs poate aprea de dou sau mai multe ori ntr-o factur
Specificaii minimale 2:
Numrul facturii nu se recicleaz O factur este adresat unui singur client O factur conine oricte linii Pe o linie se afl un singur produs Un produs nu poate aprea de dou sau mai multe ori ntr-o factur Cheie primar: (NumrFactur, Linie) Cheie alternativ: (NumrFactur, Produs)
Specificaii minimale 3:
Numrul facturii se recicleaz annual O factur este adresat unui singur client O factur conine oricte linii Pe o linie se afl un singur produs Un produs nu poate aprea de dou sau mai multe ori ntr-o factur
Specificaii minimale 4:
Numrul facturii se recicleaz annual O factur este adresat unui singur client O factur conine oricte linii Pe o linie se afl un singur produs Un produs poate aprea de dou sau mai multe ori ntr-o factur
Restricia referenial
O BD este alctuit din mai multe tabele (pentru a diminua redundanele i anomaliile ce pot aprea la editare) Multe perechi de tabele se afl n relaia printe-copil (relaie stabilit printr-un atribut cu aceeai semnificaie i deseori cu acelai nume; n cele dou tabele atributul se numete cheie primar (sau alternativ), respectiv cheie strin, (sau cheie extern sau coloan de referin)) Restricia referenial interzice apariia
Exemplu de restricie referenial n care cheia strin poate avea valori nule tabel printe tabel copil
cheie primar
cheie strin
Restricii de comportament
AnStudii cuprins ntre 1 si 3: Sex poate fi doar F sau B: Sex IN (F, B) Stare civila: N, C, D: StareCiv IN (N,C,D)
Dac CicluStudii = 2, atunci AnStudii poate fi doar 1 sau 2: CASE WHEN CicluStudii=2 THEN AnStudii <3 END
Proceduri stocate
Module de program (cod) care fac parte integrant din baza de date. Procedurile stocate sunt pstrate n dicionarul de date (catalogul sistem).
Exemple: funcii pentru calculul unor valori implicite, proceduri/funcii de validare la nivel de atribut module de validare la nivel de nregistrare funcii/proceduri de calcul a unor expresii complexe etc.
Declanatoare (triggere)
Declanatorul (trigger) este un tip special de procedur stocat care este executat automat odat cu un eveniment predefinit (ex. inserare, actualizare sau tergere) Faciliti: actualizarea automat a unor atribute calculate restricii utilizator complexe jurnalizarea actualizmodificrilor suferite de baza de date, pstrarea integritii refereniale etc. Tipologie diferit de la SGBD la SGBD
Database Fundamentals
http://www.youtube.com/watch?v=xNJZYX6tpWU&NR=1
Database Terminology
http://www.youtube.com/watch?v=UhSONIeCWj4&feature=related
http://www.youtube.com/watch?v=gGGHjYbQMvw&feature=related