CURS 5.docx

9
CURS 5. Restricţii de integritate ale modelului relaţional 3.3 Restricţii de integritate ale modelului relaţional Restricţiile de integritate ale modelului relaţional reprezintă cerinţe pe care trebuie să le îndeplinească datele din cadrul bazei de date pentru a putea fi considerate corecte şi coerente în raport cu lumea reală pe care o reflectă. Dacă o bază de date nu respectă aceste cerinţe, ea nu poate fi utilizată cu un maxim de eficienţă. Restricţiile sunt de două tipuri: - restricţii de integritate structurale, care se definesc prin egalitatea sau inegalitatea unor valori din cadrul relaţiilor: restricţia de unicitate a cheilor; restricţia entităţii; dependenţele între ele; - restricţii de integritate de comportament care ţin cont de semnificaţia valorilor din cadrul bazei de date. Utilizarea modelului relaţional nu impune definirea şi verificarea tuturor acestor tipuri de restricţii de integritate. Din acest punct de vedere există restricţii de integritate minimale. Acestea sunt obligatoriu de definit şi de respectat când se lucrează cu modelul relaţional. Dintre restricţiile minimale fac parte: restricţia de unicitate a cheii; restricţia referenţială; restricţia entităţii. Alte restricţiii de integritate ar fi dependenţele; restricţii de comportament. Restricţii de integritate minimale Restricţiile de integritate minimale sunt definite în raport cu noţiunea de cheie a unei relaţii. Cheia identifică un tuplu în cadrul unei relaţii fără a face apel la toate valorile din tuplu.

Transcript of CURS 5.docx

CURS 5. Restricii de integritate ale modelului relaional

3.3 Restricii de integritate ale modelului relaional

Restriciile de integritate ale modelului relaional reprezint cerine pe care trebuie s le ndeplineasc datele din cadrul bazei de date pentru a putea fi considerate corecte i coerente n raport cu lumea real pe care o reflect. Dac o baz de date nu respect aceste cerine, ea nu poate fi utilizat cu un maxim de eficien.Restriciile sunt de dou tipuri: restricii de integritate structurale, care se definesc prin egalitatea sau inegalitatea unor valori din cadrul relaiilor: restricia de unicitate a cheilor; restricia entitii; dependenele ntre ele; restricii de integritate de comportament care in cont de semnificaia valorilor din cadrul bazei de date. Utilizarea modelului relaional nu impune definirea i verificarea tuturor acestortipuri de restricii de integritate. Din acest punct de vedere exist restricii de integritate minimale. Acestea sunt obligatoriu de definit i de respectat cnd se lucreaz cu modelul relaional. Dintre restriciile minimale fac parte: restricia de unicitate a cheii; restricia referenial; restricia entitii. Alte restriciii de integritate ar fi dependenele; restricii de comportament.

Restricii de integritate minimale

Restriciile de integritate minimale sunt definite n raport cu noiunea de cheie a unei relaii. Cheia identific un tuplu n cadrul unei relaii fr a face apel la toate valorile din tuplu. Cheia unei relaii reprezint ansamblul minimal de atribute prin care se poate identifica n mod unic orice tuplu al relaiei. Oricare relaie posed cel puin o cheie: cheie simpl, cnd cheia este construit dintr-un singur atribut; cheie compus, cnd cheia este construit din mai multe atribute.

Exemplul 1:

A:DAB:DBa1b1a2b3a3b2 R1:R2: a) cheie simpl b) cheie compusADAB:DBa1b1a1b2a2b3a3b2Fig. 5.1. Chei simple i chei compuse

Determinarea cheii unei relaii necesit cunoaterea tuturor extensiilor posibile, nu numai a aceleia din momentul n care se stabilete cheia. Astfel, presupunnd c R1 i R2 sunt versiuni ale aceleiai relaii R la momente de timp diferite: t1, respectiv t2, alegerea la momentul t1 drept cheie atributul A a relaiei R se dovedete a fi greit, ntruct atributul A nu face posibil identificarea unic a tuplurilor i la momentul t2. Cheia relaiei R este reprezentat, prin urmare, de perechea de atribute (A,B).

Exemplul 2:

simbol_judet#nume_judMMMaramuresABAlbaJUDETE:STRAZI:simbol_judecod_loc#id_strad#nume_strBVBV230120IndependeneiBVBV230078GriiCJCJ147120CireilorFig. 5.2. Chei simple i chei compuse n cadrul relaiilor JUDEE, respectiv STRZI

Observaie: Cheia relaiei JUDEE este simbol_jude, deoarece fiecare jude are o codificare unic a denumirii sale, deci fiecrui jude i corespunde un singur simbol. Cheia relaiei STRZI este compus din atributele cod_loc i id_strada. Dac s-ar alege drept cheie primar doar atributul id_strada, acesta nu ar identifica n mod unic numele unei strzi dintr-o localitate, id-ul strzii respective putndu-se regsi i n alte localiti ale aceluiai jude sau a altui jude. La fel, dac s-ar alege drept cheie primar atributul cod_loc, acesta nu ar mai identifica n mod unic un tuplu, deoarece ntr-o localitate exist mai multe strzi.

O relaie poate avea mai multe combinaii de atribute, cu proprietatea de identificare unic a tuplurilor. Se spune n acest caz c relaia posed mai muli candidai cheie (chei candidate). Definiia 1. Se numete cheie primar, cheia aleas dintre cheile candidate care s serveasc n mod efectiv la identificarea tuplurilor. Cheia primar nu poate fi reactualizat. Cheia primar a unei relaii nu este altceva dect atributul de identificare a unei entiti, prin urmare se reprezint fie prin subliniere, fie urmate de semnul #.Definiia 2. Se numete cheie extern atributul/grupul de atribute dintr-o relaie R1 a crui/cror valori sunt definite pe acelai domeniu/aceleai domenii ca i cheia primar a unei alte relaii R2 i care are rolul de a modela asocierea ntre entitile reprezentate prin relaiile R1 i R2. n acest caz, R1 se numete relaie care refer, iar R2 se numete relaie referit.

Exemplul 1:

cnpnumele simbol_judet1701205230023Sas IoanBV2660805270023Pop Ana CJsimbol_judetdescriereBVBrasovCJClujMMMaramuresDATE_PERSOANA:JUDETE:Fig. 5.3. Reprezentarea legturii dintre relaiile DATE_PERSOANA i JUDETE cu ajutorul cheii externe simbol_judet din cadrul relaiei DATE_PERSOANA

Observaia1: n exemplul de mai sus, relaia DATE_PERSOANA are drept cheie primar atributul cnp, iar ca i cheie extern atributul simbol_judet, iar relaia JUDETE are drept cheie primar cheia simbol_judet. Relaia DATE_PERSOANA este relaia care refer, iar JUDETE este relaia referit.Observaia2: ntre cele dou relaii (entiti) avem urmtoarea asociere:

DATE_PERSOANAJUDETEare reedina(1,1)(0,n)Fig. 5.4. Asocierea dintre entitile DATE_PERSOANA i JUDETE

Exemplul 2:

simbol_judet#nume_judBVBraovCJClujJUDETE:simbol_judecod_loc#nume_locBVBV230BraovCJCJ147DejLOCALITATI:simbol_judetcod_loc#id_strada#nume_strBVBV230001IndependeneiBVBV230002GriiCJCJ147003CireilorSTRZI:Fig. 5.5. Reprezentarea legturii ntre relaiile JUDETE i LOCALITATI cu ajutorul cheilor externe simbol_judet i cod_localitate

Restricia de unicitate a cheii

Restricia de unicitate a cheii impune ca ntr-o relaie s nu existe dou linii identice (linii care s nu conin aceleai valori pentru toate atributele). Altfel spus, restricia de unicitate a cheii impune ca ntr-o relaie s nu existe dou tupluri cu o aceeai valoare pentru atributul cheie. Exemplele 1 i 2 respect restricia de unicitate a cheii.

Restricia referenial

Restricia referenial impune ca ntr-o relaie R1 care refer o relaie R2, valorile cheii externe s figureze printre valorile cheii primare din R2 sau s fie valori null (nedefinite). R1 i R2 nu trebuie s fie neaprat distincte. Exemplele 1 i 2 prezint un mecanism de legare a relaiilor i respect restricia referenial a cheii.

Restricia entitii

Restricia entitii impune ca ntr-o relaie atributele cheii primare s fie nenule. (Atributele cheie s nu conin valori nule). Dac exist valori null, cheia i poate pierde rolul de identificator de tuplu. Astfel, la ncrcarea unui tuplu, valoarea cheii trebuie s fie cunoscut, pentru a se putea verifica faptul c aceast valoare nu exist deja ncrcat. Exemplele 1 i 2 respect restricia entitii.Relaia REZ din figura 4.17 ncalc restricia entitii deoarece exist chei primare ce conin valori nule, dup cum este cazul judeului Braov.

Alte restricii de integritate

n categoria restricii de integritate intr urmtoarele tipuri de restricii:a) restricii referitoare la dependena datelor: dependen funcional; dependen multivaloare;b) restricii de comportament: restricii de domeniu; restricii temporale.

Restriciile referitoare la dependena datelor, reprezint modul n care datele depind unele de altele.

Dependenele funcionale

Dependenele funcionale reprezint dependena ntre date prin care se poate identifica un atribut/grup de atribute prin intermediul altui atribut/grup de atribute.

Dac X i Y sunt dou subansamble de atribute ale atributelor relaiei R, spunem c ntre X i Y exist o dependen funcional, notat , dac i numai dac:(i) fiecare valoare a lui X poate fi asociat unei singure valori din Y, i(ii) dou valori distincte ale lui X nu pot fi asociate dect aceleiai valori ale lui Y.X se numete determinantul (sursa) dependenei, iar Y se numete determinatul (destinaia) dependenei.

Exemple: Urmtoarele atribute se afl n dependen funcional: cod_potallocalitate, deoarece unui cod potal i corespunde o singur localitate (sensul dependenei este foarte important, deoarece, viceversa ar nsemna: o localitate are un singur cod_potal); nr_facturdata_factur, deoarece cunoaterea numrului facturii determin cu exactitate data facturii.Dou atribute nu sunt n dependen funcional, notat X Y, atunci cnd cunoaterea unei valori a primului atribut fie nu permite cunoaterea nici uneia dintre valorile celui de al doilea atribut, fie permite cunoaterea mai multor valori ale celui de al doilea atribut.

Exemplu: Urmtorul atribut nu se afl n dependen funcional: cnpnr_factur, deoarece pentru o persoan se pot ntocmi mai multe facturi (aferente fiecrei vnzri).n cadrul modelului relaional, o dependen funcional este reprezentat printr-o sgeat ce pornete din surs i se termin n destinaie.

nr_factura#data_facturiicnp12006-07-05170120523002322006-06-282581023457723FACTURI:Fig. 5.6. Reprezentarea dependenei funcionale ntre atributele nr_factura i data_facturii

Dependenele multivaloare

Dependenele multivaloare reprezint dependena n care un atribut/ grup de atribute poate reprezenta/ identifica mai multe valori pentru o singur valoare a unui alt atribut/ grup de atribute.

Dac X,Y i Z sunt trei subansambluri de atribute ale atributelor relaiei R, spunem c ntre X i Y exist o dependen multivaloare, notat sau , dac i numai dac:(i) la fiecare valoare a lui X poate fi asociat una sau mai multe valori ale lui Y, i(ii) aceast asociere nu depinde de apariiile lui Z.

Altfel spus, dac i (x,y,z), (x,y,z) sunt dou tupluri din R, atunci i (x,y,z), (x,y,z) sunt tupluri din R.

Exemplu: n relaia OFERTE (alctuit din atributele: id_tip_oferte, cnp i simbol_judet) valorile atributului id_tip_oferte au urmtoarea semnificaie: 01 desemneaz imobil de tip apartament, iar 02, imobil de tip cas. Astfel, urmtoarea relaie conine dependene multivaloare:

id_tip_ofertecnpsimbol_judet011701205230023MM012581023457723MM021701205230023SM012581023457723SM012581023457723SM022581023457723CJOFERTE:

deoarece

(x, y,z)(x, y,z)(x, y,z)(x, y,z)01 1701205230023 MM01 2581023457723 SM01 1701205230023 SM01 2581023457723 MMFig. 5.7. Relaia OFERTE n care exist dependen multivaloare