Download - CURS 5.docx

Transcript

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


Top Related