Sunteți pe pagina 1din 65

Universitatea Al.I.

Cuza Iai Facultatea de Economie i Administrarea Afacerilor Catedra de Informatic Economic

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

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

Atribute & domenii - 1

Ansamblul valorilor de acelai corespunde unui atribut Pentru fiecare atribut intereseaz:
numele domeniul

tip

Un domeniu este un ansamblu valorilor acceptate (autorizate)


Domenii largi, ex.domeniul adreselor potale Domenii nguste, ex. domeniul sexului, care are doar dou valori, M (masculin) i F (feminin)

Atribute & domenii - 2


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

Prima definiie (ca predicat) a unei relaii

A doua definiie (ca set de nregistrri) a unei relaii

Valori nule
CLIENI2

Valori necunoscute

Valoare inexistent
Clientul 6 SA nu are telefon fix instalat (i nici mobil)

Tabele (cu atribute) ale bazei de date VNZRI

Reguli privitoare la relaii (tabele)


(Connoly&Begg 2004)

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

Obiecte ale unei BD n

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)

Mecanisme de asigurare a integritii unei BD


Restricii (Constraints - vezi slide-urile urmtoare) tratate n acest curs mecanism pur declarativ Declanatoare (Triggers) subiect abordat n discipline ale masterului Sisteme informaionale pentru afaceri mecanism declarativ-procedural Reguli (Business Rules) vezi master SIA mecanism declarativo-procedural

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

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)

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

Atributul Adresa are componentele:

Strada Nr Bloc Scar Etaj Apartament CodPotal Localitate Jude

n unele situaii ex. BD FEAA, tabela STUDENI, atributul Adresa este atomic n alte situaii (ROMTELECOM, ROMGAZ) NU !

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 (chiar dac numai unul vine la coal !)

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,

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

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 printe tabel copil

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)

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

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

(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)

Restricii de comportament

Reguli la nivel de atribut:


AnStudii BETWEEN 1 AND 3

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)

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

Schema BD VNZRI n Oracle Data Modeler

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