Sunteți pe pagina 1din 53

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
Trei piloni ai unui model de date

Structur (din ce este alctuit o 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)
Structura (obiectele) unei BDR
Noiuni ale modelului relaional:
Tabele (relaii)
Atribute (coloane sau cmpuri)
Linii (tupluri sau nregistrri)
Restricii (constrngeri) vezi integritatea BD

Alte obiecte ce in de implementarea BD:


Tabele virtuale (view-uri)
Proceduri stocate, inclusiv declanatoare
Indeci
Reguli, etc.
Schema (parial) i coninutul unei
relaii/tabele
Atribute
O tabel poate avea oricte atribute
n practic, n BD diferite pot exista tabele cu
nume identice i cu numr de atribute complet
diferit. De ex. tabela COMENZI, pentru:
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 Valoare inexistent


necunoscute Clientul 6 SA nu are telefon fix
instalat (i nici mobil)
Tabele (cu atribute) ale bazei de date
VNZRI
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)
Mecanisme de asigurare a integritii
unei BD
Restricii (Constraints - vezi slide-urile urmtoare)
tratate n acest curs mecanism pur declarativ
Tipuri de restricii de proiectare i
implementare ntr-o BD
De domeniu
Valori nenule
Atomicitate (neimplementabil direct, este luat n
considerare la proiectarea schemei BD)
De unicitate (chei candidate)
cheie primar
chei alternative
Refereniale
De comportament (reguli definite la nivel de atribut
sau de nregistrare)
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)
Dou domenii i o tabel
(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 ) ;
nclcarea restriciei de domeniu
(n PostgreSQL)
Valori nenule
Pentru atributele importante, trebuie instituit
obligativitatea valorilor nenule:
Matricol,
NumePrenume
NumrFactur
Clauza NOT NULL
Obligatorie pentru atributele din cheia primar
nclcarea restriciei de nenulitate
(n PostgreSQL)
Cum stabilim dac un atribut este
atomic sau nu

Numele unui atribut sugereaz destul de bine


dac atributul este atomic sau 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 minimal
valori non-nule
Restricie: Nici un atribut din cheia primar nu
poate avea valori nule (restricia entitii)
Chei candidat, primare, alternative

Dac ntr-o relaie exist mai multe combinaii de


atribute care confer unicitate tuplului, acestea
sunt denumite chei candidate.
O cheie candidat care nu este identificator
primar este referit ca i cheie alternativ.

Criterii de alegere a cheii primare:


- Familiaritate
- Stabilitate
- Minimalitate
- Simplitate
Pretendeni la cheia primar - 1

Se d tabela STUDENI, pentru BD a FEAA, cu


atributele:
{ Matricol, NumePren, CNP, Adresa, CodPotal,
Localitate, ar, TelFix, TelMobil, E-Mail,
SerieNrCardIdentit, CicluStudii, AnStudii,
FormaStudii, Modul, Specializare, SerieCurs,
Grupa, Observ}

Care este cheia primar a tabelei ?


Pretendeni la cheia primar - 2
Pasul 1: se elimin toate atributele ale cror valori
se pot repeta (pentru doi sau mai muli studeni):
NumePren (exist studeni cu acelai nume i
acelai prenume)
Adresa (fraii sau soii/concubinii locuiesc (uneori)
la aceeai adres)
CodPotal, Localitate, ar, TelFix vezi
explicaia de la Adres
CicluStudii, AnStudii, FormaStudii, Modul,
Specializare, SerieCurs, Grupa ntr-o grup sunt
mai muli studeni
Pretendeni la cheia primar - 3

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)
Pretendeni la cheia primar - 4
Pasul 2: se elimin toate atributele care ar putea
valori nule:
2: Nu toi studenii i declar numrul de telefon mobil
i adresa de e-mail (pentru a nu fi terorizai de
secretariat/decan/pro-decani); i-au rmas doar trei:
Matricol, CNP, SerieNrCardIdentit
2: Favorit pare CNP deoarece:
SerieNrCardIdentit se modific la pierderea cardului, la
schimbarea adresei sau cstorie (nu este stabil)
Valorile atributului Matricol sunt mai lungi i utile doar n
universitate (prin comparaie, CNP-ul este folosit i de
Evidena Populaiei, Paapoarte, Poliie, Moravuri, Anti-
Drog etc. );
Pretendeni la cheia primar - 5
Problema CNP-ului: FEAA are i studeni din
ri care nu folosesc CNP-ul (Grecia, Albania,
China, Frana, Germania etc.)

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
Cheie primar compus - 1
Care este cheia primar a tabelei FACTURRI ?

Niciun atribut, singur (individual) nu difereniaz o


linie de toate celelalte
Cheie primar compus - 2

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

Cheie primar: (NumrFactur, Linie)


Chei alternative: -
Cheie primar compus - 3
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)
Cheie primar compus - 4
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

Cheie primar:(NumrFactur, DataFactur,


Linie)
Cheie alternativ:(NumrFactur, DataFactur,
Produs)
Cheie primar compus - 5
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

Cheie primar:(NumrFactur, DataFactur,


Linie)
Cheie alternativ: - (niciuna)
nclcarea cheii primare (n PostgreSQL)
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
nregistrrilor orfane
Exemplu de restricie referenial
tabel copil tabel printe

cheie primar
cheie strin
Exemplu de restricie referenial n care
cheia strin poate avea valori nule
tabel
tabel copil printe

cheie primar

cheie strin
Declararea restriciei refereniale
CREATE TABLE clienti(
codcl NUMERIC(6) NOT NULL,
dencl VARCHAR(30), codfiscal CHAR(9),
..., CONSTRAINT pk_clienti PRIMARY KEY (codcl
), ...
) ;
CREATE TABLE facturi (
nrfact NUMERIC(8,0) NOT NULL, datafact DATE,
codcl NUMERIC(6),
CONSTRAINT fk_facturi_clienti FOREIGN KEY
(codcl)
REFERENCES clienti (codcl)
ON UPDATE NO ACTION
ON DELETE NO ACTION ) ;
nclcarea restriciei refereniale
Operaiuni ce pot periclita restricia
referenial
ntr-o tabel copil (ex. FACTURI)
Inserarea unei nregistrri (valoarea cheii strine nu
exist n tabela printe)
Modificarea valorii unei chei strine (noua valoare a cheii
strine nu exist n tabela printe)
ntr-o tabel printe (ex. CLIENTI)
tergerea unei nregistri (nregistrrile copil rmn
orfane)
Modificarea valorii unei chei primare (nregistrrile copil
ale vechii valori a cheii primare rmn orfane)
Reguli de implementare a unei
restricii refereniale
La tergerea unei nregistrri printe - ON
DELETE
Se blocheaz operaiunea dac exist mcar o
nregistrare copil (RESTRICT)
Se terg n cascad toate nregistrrile copil (CASCADE)
La modificarea unei valori a cheii primare (ntr-o
nregistrare printe) - ON UPDATE
Se blocheaz operaiunea dac exist mcar o
nregistrare copil (RESTRICT)
Se modific n cascad valori cheilor strine n toate
nregistrrile copil (CASCADE)
(Re)Declararea restriciei refereniale
CREATE TABLE clienti (
codcl NUMERIC(6) NOT NULL,
dencl VARCHAR(30), codfiscal CHAR(9),
..., CONSTRAINT pk_clienti PRIMARY KEY (codcl ),
...
) ;
CREATE TABLE facturi (
nrfact NUMERIC(8,0) NOT NULL, datafact DATE,
codcl NUMERIC(6),
CONSTRAINT fk_facturi_clienti FOREIGN KEY
(codcl)
REFERENCES clienti (codcl)
ON UPDATE CASCADE
ON DELETE RESTRICT ) ;
Restricii de comportament

Reguli la nivel de atribut:


AnStudii cuprins ntre 1 si 3:
AnStudii BETWEEN 1 AND 3
Sex poate fi doar F sau B: Sex IN (F, B)
Stare civila: N, C, D: StareCiv IN (N,C,D)

Reguli la nivel de nregistrare:


Dac CicluStudii = 2, atunci AnStudii poate fi doar 1
sau 2:
CASE WHEN CicluStudii=2
THEN AnStudii <3 END
Declararea unei reguli la nivel de atribut

CREATE TABLE facturi(


nrfact NUMERIC(8) NOT NULL,
datafact DATE DEFAULT CURRENT_DATE,

CONSTRAINT ck_datafact CHECK
(datafact >= DATE2010-08-01
AND datafact <= DATE2015-01-
01)

);
nclcarea regulii la nivel de atribut
Schema i coninutul unei BDR

Coninutul unei relaii (tabele) este reprezentat


de ansamblul tuplurilor (nregistrrilor, liniilor) ce
o alctuiesc la un moment dat.

O schem relaional - un ansamblu de relaii


(tabele) asociate semantic prin domeniul lor de
definiie i prin restricii de integritate
Schema unei BD simple (TRIAJ)
Schem simplificat a BD VNZRI
Tabele virtuale (view-uri)
View (engl) - imagine, relaie (tabel) virtual,
derivat sau dinamic.
O tabel virtual stabilete o legtur semantic
ntre tabele obinuite (statice) i/sau alte tabele
virtuale (dinamice), nefiind definit explicit, prin
tupluri proprii, ca o tabel de baz (static), ci
printr-o expresie relaional.
Pt. tabelele virtuale pe disc se memoreaz numai
schema, nu i coninutul.
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
Cteva tutoriale video

Database Fundamentals
http://www.youtube.com/watch?v=xNJZYX6tpWU&NR=1

Database Terminology
http://www.youtube.com/watch?v=UhSONIeCWj4&feature=related

Lecture - 3 Relational Model


http://www.youtube.com/watch?v=gGGHjYbQMvw&feature=related

S-ar putea să vă placă și