Documente Academic
Documente Profesional
Documente Cultură
PRELUCRAREA DATELOR
pentru anul II Inginerie economică (4 ani de studiu)
resp.
BAZE DE DATE
Pentru anul IV Inginerie economică (5 ani de studiu)
Braşov
2006
1
2
Cuprins
4
1. Baze de date. Proiectare. Implementare. Gestionare
1.1.1 Introducere
Modelul relaţional de BD
5
Există trei modele uzuale de implementare de BD: ierarhic, reţea sau
relaţional. Fiecare se bazează pe conceptul de date stocate ca set sau
mulţime de înregistrări. Imaginaţi-vă un set de fişe, de exemplu.
Modelele ierarhic şi reţea se bazează pe parcurgerea legăturilor dintre
date pentru a lucra cu baza de date; de regulă sunt utilizate pentru
sisteme-cadru generale, vaste şi nu fac obiectul cursului nostru.
Sistemele de gestionare a bazelor de date relaţionale (SGBDR) au
cunoscut o largă răspândire, datorită modelului simplu, relaţional de
date pe care-l utilizează:
Datele se prezintă sub forma unei colecţii (unui set) de relaţii
Fiecare relaţie are forma unui tabel (cea mai importantă
componentă a unei BD)
Rândurile (înregistrările) tabelului reprezintă entităţi
Coloanele (câmpurile) tabelului sunt atribute/proprietăţi ale
acestor entităţi
Fiecare tabel are un set de atribute, care împreună reprezintă o
“cheie” care defineşte fiecare entitate în mod unic.
De exemplu, o societate poate avea în baza sa de date un tabel cu
angajaţii săi, cu un rând/înregistrare pentru fiecare angajat. Ce atribute
ar fi de interes? Depinde de sigur de scopul pentru care a fost creat
tabelul, şi atributele sunt stabilite la momentul configurării bazei de
date. Ca exemplu aplicaţia poate fi un ştat de plată, deci va fi nevoie, în
afară de nume, cod angajat şi de informaţii referitoare la adresă şi
salariu.
8
Ca urmare a apărut o nouă tratare a datelor, prin baze de date (BD),
gestionate de sisteme de gestionare a bazelor de date (SGBD).
Baza de date este o colecţie partajată de date între care există relaţii
logice (şi o descriere a acestor date), proiectată pentru a satisface
necesităţile informaţionale ale unei organizaţii.
-- Date --
Hardware - Software -- -- Proceduri – Persoane
Maşină Punte Om
Hardware
10
Evident, pentru a funcţiona, SGBD au nevoie de elemente hardware,
care pot fi un singur PC până la o reţea. Un SGBD poate necesita un
anumit tip de elemente hardware sau de sistem de operare, sau poate
funcţiona pe o diversitate de elemente hardware şi platforme; Access
2000 este de ex. un SGBD relaţionale pe 32 biţi, pentru crearea de
aplicaţii clasice sau de tip client-server pentru BD, pentru sistemele de
operare Windows 9x şi Windows NT 4+; de asemenea, un SGBD
necesită un minimum de memorie (MS-a: size: 2,32 KB) şi spaţiu de
disc (MS-Access: size on disk: 4 KB).
O configuraţie / arhitectură
client-server este prezentată
în figura 1.1, pentru o
organizaţie cu patru filiale
legate într-o reţea de PCuri,
deservite de un server central.
Pe server se află programele
back-end, adică partea din
SGBD care administrează şi
controlează accesul la BD. Pe
calculatoarele din diversele
locaţii/PC clienţi se află
aplicaţiile front-end, adică
partea din SGBD care
constituie interfaţa cu
utilizatorul.
Fig. 1.1
Software
Componenta soft cuprinde programele SGBD şi programele de aplicaţie
împreună cu sistemele de operare, inclusiv software de reţea, dacă este
cazul. Programele aplicaţie sunt scrise într-un limbaj de programare din
generaţia a treia (C, Cobol, Fortran) sau de generaţia a patra – SQL,
incorporat într-un limbaj de generaţia a treia.
SGBD poate avea propriile instrumente de generaţia a patra, care
permit dezvoltarea rapidă de aplicaţii prin furnizarea unui limbaj de
interogare şi a unor generatoare de rapoarte, formulare, grafică etc.
11
Instrumentele de generaţia a patra îmbunătăţesc productivitatea şi
permit realizarea unor programe uşor de întreţinut.
Datele
Datele reprezintă cea mai importantă componentă a unui SGBD,
d.p.d.v. al utilizatorului; datele = punte între componentele maşină şi
cele umane. BD conţine:
- Date operaţionale
- Meta-date, adică date despre date.
Structura BD este numită schemă şi are mai multe tabele sau fişiere,
fiecare având mai multe atribute (câmpuri).
Procedurile
Procedurile se referă la instrucţiunile şi regulile care guvernează
proiectarea şi utilizarea BD. Procedurile sunt necesare atât
administratorilor, cât şi utilizatorilor de BD şi pot cuprinde instrucţiuni
referitoare la ;
- deschiderea unei sesiuni de lucru în SGBD;
- utilizarea unei anumite facilităţi a SGBD sau a unui program
aplicaţie;
- pornirea şi oprirea SGBD;
- efectuarea de copii de siguranţă a BD ;
- tratarea defecţiunilor hard sau soft;
- modificarea structurii unui tabel, reorganizarea BD pe mai multe
discuri, arhivarea datelor etc.
Persoanele
Sunt ultima componentă a unui mediu SGBD şi va fi discutată la
paragraful „Poziţiile persoanelor din mediul SGBD”.
Administratorii de date şi de BD
Proiectanţii de BD
13
Există proiectanţi de BD logice şi proiectanţi de BD fizice.
Programatorii de aplicaţii
Avantaje
- Controlul redundanţei datelor; nu se elimină în întregime
redundanţa, ci se controlează volumul inerent al acesteia în BD.
- Coerenţa datelor; datorită eliminării redundanţei, orice
reactualizare a unui articol (stocat o singură dată) se face o
singură dată, eliminându-se incoerenţa. Dacă articolul este stocat
de mai multe ori, SGBD garantează coerenţa tuturor exemplarelor
din articolul respectiv.
- Mai multe informaţii obţinute de la aceeaşi cantitate de date; ca
urmare a integrării datelor operaţionale, două sau mai multe fişiere
pot fi integrate, extrăgându-se mai multe informaţii.
- Partajarea datelor; fişierele sunt deţinute de compartimentele
organizaţiei care le utilizează, dar fiind parte din BD, ele sunt la
dispoziţia tuturor utilizatorilor interesaţi.
- Integritatea crescută a datelor; se referă la validitatea şi coerenţa
datelor stocate. Integritatea este exprimată prin constrângeri, care
reprezintă reguli de coerenţă pe care BD nu are voie să le încalce.
- Securitatea crescută; se referă la protecţia BD faţă de utilizatorii
neautorizaţi. Fără sisteme de securitate, integrarea ar face datele
15
foarte vulnerabile. Securitatea se realizează prin nume de
utilizatori plus parole. Se poate limita tipul de operaţie efectuată.
- Aplicarea standardelor; prin integrare se pot aplica standarde
organizaţionale, naţionale sau internaţionale, ca de ex. formatul
datelor, convenţii referitoare la denumire, pt. a facilita schimburi
între sisteme.
- Economia de scală; în loc de bugete pentru fiecare compartiment
pentru crearea unui sistem propriu de BD bazat pe fişiere, există
un buget unic combinat, care permite alocarea fondurilor
economisite pentru îmbunătăţirea sistemului.
- Echilibrul între cerinţele aflate în conflict; cerinţele posibil în
conflict ale diferitelor compartimente referitoare la utilizarea BD
sunt gestionate la nivel de DBA, care va lua deciziile ce se impun şi
va acorda prioritate aplicaţiilor majore.
- Îmbunătăţirea accesibilităţii datelor şi capacităţii de răspuns;
limbajele de interogare şi generatoare de rapoarte asociate SGBD
oferă utilizatorilor posibilitatea unor interogări ad-hoc, fără a apela
la programator.
- Productivitatea crescută; SGBD furnizează standardele necesare
aplicaţiei, economisind timpul programatorului.
- Capacitatea de întreţinere îmbunătăţită, prin independenţa de
date; într-un SGBD descrierile datelor sunt separate de aplicaţii,
aplicaţiile fiind imune la modificarea descrierii datelor; este
caracteristica de independenţă program-date, care uşurează
întreţinerea aplicaţiilor din BD.
- Concurenţa/simultaneitatea îmbunătăţită; se garantează alterarea
datelor în situaţia când acelaşi fişier este utilizat simultan de mai
mulţi utilizatori.
- Îmbunătăţirea serviciilor de salvare de siguranţă şi refacere. Se
minimizează pierderile apărute ca urmare a unor defecţiuni. Nu
este necesară realizarea zilnică de copii de siguranţă.
Dezavantaje
- Complexitatea; pt. ca un SGBD să fie funcţional, acesta va evolua
într-un sistem soft extrem de complex. Funcţionalitatea trebuie
cunoscută de către toţi cei implicaţi în BD, de la DA la utilizatorul
final, pentru a o putea exploata. Dacă SGBD este greşit înţeles, BD
proiectată poate fi greşită, cu toate consecinţele acestei situaţii.
16
- Dimensiunea; Fiind un element soft foarte complicat, SGBD ocupă
mult spaţiu pe disc şi necesită multă memorie pentru a funcţiona
eficient.
- Costul SGBD; variază în funcţie de mediu şi funcţionalitate. De la
150 USD pt. un PC cu un utilizator, la 750.000 USD pt. un sistem
mainframe cu sute de utilizatori. Se adaugă cheltuieli periodice
anuale de întreţinere.
- Costurile adiţionale pentru elemente hardware; pentru a sigura
performanţele SGBD poate fi nevoie de achiziţionarea unui
calculator mai mare, chiar dedicat rulării SGBD, cu disc şi memorie
mai mari.
- Costul conversiei; la implementarea unui nou sistem SGBD şi/sau
a unei noi configuraţii hard, conversia poate costa semnificativ mai
mult decât noile elemente hard. Se include costul instruirii
personalului, angajarea de personal specializat. Apare termenul de
sistem moştenit, adică un sistem mai vechi, inferior, de care
organizaţia se cramponează din motive de costuri de conversie.
- Performanţa; SGBD (spre deosebire de cel bazat pe fişiere) este
general, creat pentru a permite diverse aplicaţii; astfel unele pot
funcţiona mai puţin rapid decât în cazul sistemului bazat pe fişiere,
creat pentru o anume aplicaţie.
- Impactul crescut al unei defecţiuni. Centralizarea (partajarea)
resurselor creşte vulnerabilitatea SGBD. Eşecul oricărei
componente poate duce la sistarea tuturor operaţiilor.
17
Tratarea datelor prin baze de date rezolvă dificultăţile abordării pe bază
de fişiere. O bază de date reprezintă un set partajat de date şi
descrierea acestora între care există relaţii logice. BD este proiectată
pentru a satisface necesităţile informaţionale ale unei organizaţii.
18
1.2. Modelul relaţional (SGBDR)
1.2.1 Terminologie
Exemplu:
n
X Di
În general scriem produsul cartezian a n mulţimi ca fiind: i 1
Fiecare element al produsului cartezian va fi un n-tuplu, adică este
format din n elemente, câte unul din fiecare mulţime de la 1 la n. Orice
submulţime a acestui produs cartezian, adică orice mulţime de n-tupluri
reprezintă o relaţie a celor n mulţimi (care formează produsul
cartezian).
20
Fie o relaţie R cu atributele Ai cu domeniile corespunzătoare Di, i=1,n.
Relaţia R va fi definită de schema de relaţie S= {A 1:D1, A2:D2, ...,
An:Dn}.
Fiecare înregistrare (tuplu) din acest tabel (relaţie) va fi descrisă prin n
coloane (atribute), va fi deci un n-tuplu, fiecare atribut (A i , i=1,n)
luând o valoare (di , i=1,n) din domeniul corespunzător (D i , i=1,n).
Deci di Di.
Un n-tuplu al relaţiei (o înregistrare din tabel) va avea deci forma:
(A1:d1, A2:d2, …, An:dn).
Fiecare element din acest n-tuplu este format dintr-un atribut şi
valoarea lui.
Relaţia va fi deci o mulţime (un set) de astfel de n-tupluri.
Când relaţia R se scrie sub formă de tabel, atributele (A i) vor fi capetele
de coloane, iar tuplurile (n-tuplurile) vor fi rândurile, de forma d 1, d2, …,
dn.
21
Trebuie să existe posibilitatea de identificare unică a unui tuplu dintr-o
relaţie, prin valorile atributelor sale.
Cheia primară: este cheia candidat care este selectată [din toate
cheile candidat identificate] pentru a identifica în mod unic tuplurile din
cadrul unei relaţii.
Cheile candidat neselectate se numesc chei alternative.
22
1.2.2 Integritatea relaţională
1.2.2.1 Null-uri
Null reprezintă valoarea unui atribut care este curent necunoscută sau
nu este aplicabilă tuplului respectiv.
Valoare logică “necunoscut”.
Un Null nu este acelaşi lucru cu o valoare numerică = 0 sau cu un şir de
text “spaţii” (zero string); acestea sunt valori, un Null însemnând însă
absenţa unei valori.
1.2.3 Vederi
1.2.3.1 Terminologie
Conţinutul unei vederi este definit ca o interogare asupra unei sau mai
multor relaţii de bază. Vederile sunt dinamice, adică modificările în
relaţiile de bază sunt reflectate imediat în vederi. Şi invers, modificările
permise operate asupra vederii se transmit relaţiilor de bază.
25
Un Null reprezintă o valoare pentru un atribut care este necunoscut în
momentul respectiv sau nu este definit pentru acel tuplu.
Integritatea entităţilor este o constrângere care stabileşte că, într-o
relaţie de bază nici un atribut al unei chei primare nu poate avea
valoarea Null. Integritatea referenţială stabileşte că valorile cheii
străine trebuie să corespundă valorilor unei chei candidat a unui tuplu
oarecare din relaţia de bază sau să aibă în întregime valoarea Null.
În modelul relaţional o vedere este o relaţie virtuală. Vederea oferă
securitate şi permite proiectantului să personalizeze modelul unui
utilizator. Vederile sunt create dinamic pentru utilizatori. Nu toate
vederile pot fi reactualizate.
28
- Conversia şi încărcarea datelor: transferul în noua BD a oricăror
date deja existente şi conversia oricăror aplicaţii existente, a.î. să
poată funcţiona în cadrul acesteia.
29
Fig. 1.2 Ciclul de viaţă al aplicaţiilor tip bază de date
30
model de date (de exemplu entitate-relaţie - ER), al SGBD, dar
independent de alte consideraţii fizice legate de SGBD.
31
1.3.3 Proiectarea aplicaţiilor
Tipuri de tranzacţii:
- de regăsire;
- de reactualizare;
- mixte (regăsire plus reactualizare).
33
Administrarea bazei de date (DBA): Administrarea realizării fizice a
unei aplicaţii de tip BD, inclusiv proiectarea şi implementarea fizică a
BD, stabilirea controlului de securitate, integritate, monitorizarea
performanţelor sistemului şi reorganizarea BD după necesităţi.
35
Modelul ER este un model conceptual de nivel înalt, dezvoltat de Chen
(1976) pentru a facilita proiectarea BD. Un model de date conceptual se
compune din:
- un set de concepte care descriu structura bazei de date (entităţi,
relaţii, atribute) şi
- tranzacţiile de regăsire şi actualizare asociate.
Scopul realizării unui model de date de nivel înalt este:
- perceperea datelor de către utilizator,
- ascunderea aspectelor tehnice asociate proiectării BD.
Un model de date conceptual este independent de tipul de SGBD utilizat
şi de platforma hardware asociată.
36
Reprezentare în modelul ER: entitatea tare se trece într-un dreptunghi
cu chenar simplu, entitatea slabă într-un dreptunghi cu chenar dublu
(fig. 1.3).
Personal Ruda_apropiata
1.4.1.2 Atribute
37
Fig.1.4. Reprezentarea schematică a tipurilor de entităţi “Personal”,
“Filiala” şi “Ruda apropiată” şi a atributelor acestora.
38
1.4.1.3 Tipuri de relaţii
40
Fig. 1.9. Relaţie cvadruplă, numită “Reglementează”
Nume de roluri pot fi utilizate şi când două entităţi sunt asociate prin
mai mult decât o relaţie (fig. 1.11).
41
Fig. 1.11 Entităţi asociate prin două relaţii distincte numite
“Administrează” şi “Este alocat”, împreună cu numele de roluri
corespunzătoare.
43
Liniile sunt etichetate cu raportul de cardinalitate, care în fig. 1.14 este
1: 1.
44
Diagrama ER corespunzătoare
acestei relaţii este reprezentată în
figura 1.16.
Fig. 1.16. Diagrama ER a relaţiei
1:M
45
Relaţii mai mulţi la mai mulţi (M:N)
Diagrama ER corespunzătoare
este prezentată în figura 1.18.
Fig. 1.18.
Diagrama ER a relaţiei M:N
46
Constrângerile de participare determină dacă existenţa unei entităţi
depinde de legătura sa de altă entitate prin intermediul unei relaţii.
Participarea unei entităţi într-o relaţie este totală, dacă existenţa unei
entităţi necesită (este condiţionată de) existenţa altei entităţi prin
intermediul unei anumite relaţii. Altfel participarea este parţială.
Exemplu. În relaţia binară Filiala Este Alocat Personal (fig. 1.19) o
filială poate exista, evident, numai dacă are alocat personal. Deci
existenţa entităţii Filiala este condiţionată de existenţa entităţii
Personal. Ca urmare entitatea Filiala va participa total (obligatoriu) în
relaţia Este Alocat, şi se va reprezenta cu linie dublă.
47
minimă 0) sau să fie alocat unei filiale, şi numai uneia (valoare maximă
1).
Fig. 1.20 Constrângeri de participare, notaţie alternativă
48
Fig. 1.22. Reţeaua semantică a modelului ER din fig. 1.21
Reţeaua semantică a
modelului restructurat
(corect) este cea din fig.
1.24.
Angajatul SG37 este alocat
filialei B3, coordonată de
secţia S1.
52
1.4.5 Întrebări la capitolul 1.4
Descrieţi conceptele de bază ale modelului ER, şi reprezentarea
schematică a acestora.
Descrieţi constrângerile ce pot fi impuse entităţilor participante
într-o relaţie.
Descrieţi problemele ce pot apărea în crearea unui model ER.
1.5 Normalizarea
Anomaliile de inserare
Anomaliile de ştergere
54
Dacă în relaţia Personal_Filiala o anumită filială apare o singură dată
(filiala are un singur membru de personal), atunci ştergerea acestui
membru de personal va duce la ştergerea şi a informaţiilor referitoare la
filiala respectivă.
Anomalii de modificare
55
Atunci când există o dependenţă funcţională, ea este specificată ca o
constrângere între atribute.
A B: pentru o valoare dată a lui A (în toate rândurile din tabel unde
apare această valoare) se va găsi o singură valoare a lui B
56
Pentru a identifica cheia primară a relaţiei (tabelului) Personal_Filiala se
identifică întâi toate cheile candidat, adică acele atribute care identifică
în mod unic fiecare rând din relaţie.
Toate atributele care nu fac parte din cheia primară trebuie să fie
dependente funcţional de aceasta.
Ca urmare cheia primară va fi acel atribut (sau set de atribute) care
determină funcţional toate celelalte atribute ale relaţiei.
Cu alte cuvinte cheia primară va fi acel atribut (sau set de atribute) de
care sunt dependente funcţional toate celelalte atribute ale relaţiei.
În relaţia Personal_Filiala această cerinţă o îndeplineşte numai atributul
Nr_Pers.
57
Schema legăturilor dintre formele normale
Forma nenormalizată (UNF) este un tabel care conţine unul sau mai
multe grupuri repetitive.
Prima formă normală (1NF) este o relaţie în care intersecţia fiecărui
rând cu fiecare coloană conţine o singură valoare şi numai una.
59
Fig. 1.32. Relaţia Client_Inchiriere în prima formă normală (1NF)
60
Fig. 1.33 Relaţiile Client şi Prop_Inchir_Proprietar în 1NF
Cum rezultă din fig. 1.33, ambele relaţii sunt în 1NF, deoarece la
intersecţia dintre fiecare rând şi fiecare coloană există o singură
valoare.
61
O dependenţă funcţională A → B este parţială, dacă există un atribut
din componenţa lui A, care dacă este eliminat din A, dependenţa
funcţională se păstrează.
Al doilea tabel din fig. 1.33 se află în 1NF şi are cheia primară compusă
din 2 atribute: Nr_Client, Nr_Proprietate. Tabelul este expus anomaliilor
de reactualizare. Dacă de exemplu trebuie de modifica valoarea chiriei
pentru proprietatea PG4 şi reactualizarea nu se face în fiecare rând în
care apare PG4, se pierde coerenţa bazei de date. Se observă că
atributul „Chirie” depinde funcţional numai de atributul „Nr_Proprietate”
şi nu de întreaga cheie primară compusă. (Adică, dacă se elimină
atributul Nr_Client din cheia primară, dependenţa funcţională
Nr_Proprietate → Chirie se păstrează).
62
Se consideră tabelul Client_Inchiriere (fig. 1.32), având o cu cheie
primară compusă.
- tabelul iniţial – sub alt nume - îşi păstrează cheia primară iniţială,
compusă, şi acele atribute care au dependenţă funcţională totală de
cheia primară (fd1).
64
tranzitiv de A prin intermediul lui B (cu condiţia ca A să nu fie
dependent funcţional de B sau C).
- tabelul iniţial – sub alt nume - îşi păstrează cheia primară iniţială, şi
acele atribute care au nu au dependenţă funcţională tranzitivă de cheia
primară:
Proprietate_de_Inchiriat (Nr_Proprietate, AdresaP, Chirie,
Nr_Proprietar)
66
Proprietate_de_Inchiriat (Nr_Proprietate, AdresaP, Chirie,
Nr_Proprietar)
Proprietar (Nr_Proprietar, NumeP)
68
1.5.9 Întrebări la capitolul 1.5
70
- Determinarea cardinalităţii (1:1; 1:M; M:N) şi constrângerilor de
participare (totală, parţială); eventual se specifică şi valorile limită
ale cardinalităţii.
- Documentarea tipurilor de relaţii. Pe măsură ce sunt identificate, li
se atribuie denumiri evidente; acestea, precum şi constrângerile se
trec în dicţionarul de date.
- Vizualizarea pe parcurs a t.e. şi t.r. identificate prin modelarea ER.
72
Fig. 1.34. Exemplu de generalizare a tipului de entitate
75
Exemplu: Relaţia Ziar Face Reclama Proprietate (fig. 1.35 a) este de
cardinalitate M:N, deoarece un ziar poate face reclamă mai multor
proprietăţi, iar unei proprietăţi i se poate face reclamă in mai multe
ziare.
Relaţia se descompune conform figurii 1.35 b, unde Reclama este o
entitate slabă a cărei existenţă depinde de existenţa celorlalte două
entităţi tari.
76
Fig. 1.36. Relaţie complexă M:N descompusă în trei relaţii binare 1:M.
77
Fig. 1.37. Eliminarea unei relaţii recursive
78
Fig. 1.38. Eliminarea unei relaţii cu atribut
Pasul 2.1.5 Eliminarea atributelor cu valori multiple
Discutaţi posibilitatea
declarării entităţii
Telefon ca entitate
slabă şi a
constrângerii de
participare a entităţii
Filiala ca parţială.
79
îmbină, selectând una din cheile primare, dacă acestea nu coincid.
Cealaltă cheie primară devine alternativă.
În urma pasului 2.1 s-a obţinut modelul de date logic local, ca urmare a
rafinării modelului de date conceptual.
80
Relaţia pe care o entitate o are cu altă entitate este exprimată prin
mecanismul cheie primară – cheie străină. Adică cheia primară din
entitatea părinte devine cheie străină în entitatea copil.
81
Pentru fiecare entitate slabă se creează o relaţie care să cuprindă toate
atributele sale simple. În plus se include cheia primară a entităţii părinte
(sau proprietar) ca şi cheie străină.
Exemplu: Filiala Are Personal, unde Filiala este părinte iar personal
este copil.
82
Personal (Nr_Personal, Prenume, Nume, Strada, Orasul, CodP, Functia,
Sex, Salariu, Nr_Filiala)
Cheie primară Nr_Personal
Cheie străină Nr_Filiala se referă la Filiala (Nr_Filiala)
Filiala (Nr_Filiala, Adresa, Nr_Tel, Nr_Fax, Nr_Personal_Manager)
Cheie primară Nr_Filiala
Cheie alternativă Nr_Tel sau Nr_Fax
Cheie străină Nr_Personal_Manager, care se referă la Personal
(Nr_Personal)
83
Prin impunerea de constrângeri se protejează baza de date faţă de
riscul de incoerenţă.
Se consideră 5 tipuri de integritate, anume referitoare la:
a. datele cerute
b. domeniile atributelor
c. integritatea entităţilor
d. integritatea referenţială
e. constrângerile întreprinderii
a. Datele cerute
Unele atribute nu admit Null-uri. În aceste situaţii se selectează
proprietatea de câmp required, care cere date pentru câmpul respectiv.
Se verifică dacă aceste constrângeri au fost identificate şi documentate
în dreptul atributelor în dicţionarul de date (vezi pasul 1.2)
c. Integritatea entităţilor
Cheia primară a unei entităţi nu poate conţine Null-uri. Se verifică pasul
1.5
d. Integritatea referenţială
84
Se ia ca exemplu relaţia Personal Administrează Proprietate, de
cardinalitate 1:M.
Entitate părinte (Ep): Personal, cheie primară: Nr_Personal
Entitate copil (Ec): Proprietate, cheie străină: Nr_Personal, copie a cheii
primare din Personal.
SET NULL Când se şterge o apariţie din Ep, valorile cheii străine în
Ec sunt setate la Null. Are loc o reactualizare prin
setare la Null a valorilor atributelor selectate din cheia
străină a Ec. Această strategie se poate aplica numai
dacă atributele cheie străină acceptă Null-uri.
85
SET DEFAULT Când se şterge o apariţie din Ep, valorile cheii străine
corespunzătoare din Ec sunt setate la valori prestabilite
(default).
Exemplu: se şterge un membru al personalului în Ep
(Personal) şi automat proprietăţile pe care acestea le-a
administrat trecute în Ec (Proprietăţi) se setează la
atributul Nr_Pers la valoarea corespunzătoare
managerului.
e. Constrângerile întreprinderii
Sunt de fapt regulile de afaceri care pot uneori genera reactualizări ele
entităţilor. De exemplu agenţia imobiliară poate stabili ca un membru al
personalului să administreze maxim 10 proprietăţi.
Pasul 2.6. se încheie cu documentarea tuturor constrângerilor de
integritate. Aceasta se face în dicţionarul de date, pentru a fi luate în
considerare la implementarea fizică.
Pasul 2.7 Revizuirea modelului de date logic local împreună cu
utilizatorii
Se verifică dacă modelul de date logic local este o reprezentare
„adevărată” a vederii utilizatorului. Modelul de date logic local trebuie să
fie complet şi in întregime documentat. Modelul şi documentaţia se
revăd împreună cu utilizatorul.
86
În această etapă se construieşte un model de date logic global prin
îmbinarea modelelor de date logice locale individuale, care au fost
realizate pentru a reprezenta fiecare vedere a utilizatorilor.
După îmbinare trebuie rezolvate conflictele dintre vederi, ca şi orice
suprapuneri existente. Va rezulta o reprezentare a întregii întreprinderi
independentă de orice utilizator sau aplicaţie.
87
În versiunea globală obţinută prin îmbinare s-a utilizat versiunea
descompusă a atributului Nume_Prenume (în urma consultării cu
utilizatorii).
88
(6) Includerea (fără îmbinare) a relaţiilor unice din fiecare vedere
locală
Relaţiile pentru care nu s-au găsit relaţii identice în alte vederi se
includ nemodificate în modelul global.
89
Se realizează prin utilizarea normalizării şi conform tranzacţiilor
cerute, dacă este necesar. Este un pas echivalent cu 2.3 respectiv 2.4,
anume se fac aceleaşi validări dar acum pentru modelul de date logic
global.
90
recursive, cu atribute, a atributelor cu valori multiple, reexaminarea
relaţiilor de tip 1:1 şi eliminarea relaţiilor neredundante.
Modelul de date logic se validează prin normalizare, prin care se
garantează că modelul reprezintă fidel întreprinderea, este coerent, cu
redundanţă minimă şi stabilitate maximă.
Constrângerile de integritate se impun pentru a proteja BD faţă de a
deveni incoerentă. Există 5 tipuri de constrângeri de integritate: asupra
datelor necesare, ale domeniilor atributelor, de integritate a entităţilor,
de integritate referenţială şi ale întreprinderii.
Integritatea referenţială se asigură prin constrângeri de
existenţă, care definesc în ce condiţii poate fi o cheie candidata sau
străină inserată, reactualizată sau ştearsă.
Există mai multe strategii care pot fi aplicate atunci când o apariţie a
entităţii părinte pe care vrem să o ştergem are corespondent în
entitatea copil: NO ACTION, CASCADE, SET NULL, SET DEFAULT şi NO
CHECK.
Constrângerile întreprinderii se numesc uneori şi reguli de afaceri.
Modelul de date logic este susţinut de către documentaţie, cum ar fi
dicţionarul de date sau schema relaţională, care sunt realizate pe
parcursul construirii modelului.
91
1.8 Metodologia de proiectare fizică a bazelor de date pentru
bazele de date relaţionale
92
Din dicţionarul de date, pentru fiecare atribut există şi:
- domeniul atributului, care constă din tipul de date, lungimea
acestora şi constrângeri asupra domeniului
- opţional, o valoare prestabilită a atributului
- dacă atributul poate conţine NULLuri
- dacă atributul este derivat, şi în acest caz cum trebuie calculat.
93
Proiectul logic iniţial a fost adaptat funcţionalităţii SGBD ţintă (MS-
Access). În continuare sunt prezentate câteva exemple ale acestui
proces de adaptare (rafinare):
94
Atributul Proiectul logic Proiectul fizic pt. Explicaţii
MS-Access
Nr_Proprietate Şir variabil de Tip de date Text,
Access nu
(PK) caractere, max. 5 lungimea 5 deosebeşte
între şiruri de
caractere cu
lungime fixă
şi variabilă
Nr_ProprietarP Nr_Proprietar Nr_ProprietarP (FK) Access nu
(FK) → Nr_Proprietar din → Nr_Proprietar din acceptă ca o
Nr_ProprietarA „Proprietar_Privat” „Proprietar_Privat” aceeaşi FK
(FK) şi în totodată iar dintr-un tabel
Nr_Proprietar Nr_ProprietarA (FK) copil să bată
Admit NULLuri → Nr_Proprietar din → Nr_Proprietar din în 2 tabele
„Proprietar_Afacere” „Proprietar_Afacere” părinte
diferite
(integrit.
ref.)
Nr_Filiala (FK) Regula de Regula de MS Access
reactualizare: reactualizare: oferă doar:
CASCADE CASCADE Regula de
Regula de ştergere: Regula de ştergere: reactualizare:
SET DEFAULT NO ACTION CASCADE
Regula de
ştergere:
NO ACTION
MS Access nu
acceptă:
SET NULL şi
SET DEFAULT
95
În cadrul tabelelor:
- se specifică cheia primară
- se setează proprietăţile câmpurilor: field size, format, input mask,
caption, default value, validation rule/text, required.
- Se creează liste de tip „lookup”, ca cea pentru tipul de proprietate:
97
Pasul 4.2. Proiectarea constrângerilor întreprinderii pentru
SGBD ţintă
98
- relaţiile şi atributele accesate de tranzacţie şi tipul de acces
(interogare, inserare, reactualizare, ştergere)
- constrângerile de timp impuse tranzacţiilor
101
Singurele operaţii necesare pentru tranzacţia D sunt de citire (C),
documentate în figura de mai sus. Atributele utilizate ca puncte de
acces, de intrare sunt notate cu (P).
În cadrul tranzacţiei D se accesează tabelul „Filiala”, punctul de acces
fiind atributul cheie primară Nr_Filială, care se citeşte (C). Din tabelul
„Filiala”, prin mecanismul cheie primară-cheia străină (Nr_Filiala) se
citesc (C) în tabelul „Proprietate_de_Închiriat” datele referitoare le toate
proprietăţile oferite de o anumită filială. Atributul „Tipul” se utilizează ca
punct de intrare pentru interogare (clientul caută un anumit tip de
proprietate).
La accesarea unui număr de filială din „Filiala” se accesează tabelul
„Proprietate_de_Inchiriat” de 48 – 300 ori (există minim 48 de
proprietăţi din fiecare tip disponibile la o filială, şi o filială oferă maxim
300 de proprietăţi).
102
În majoritatea cazurilor SGBDurile bazate pe PCuri (de ex. MS-Access)
nu permit utilizatorului alegerea sau modificarea organizării fişierelor
din tabelele de bază.
104
Fig. 1.45. Relaţia Personal simplificată cu atributul derivat Nr_Proprietăţi
Exemplu:
Tranzacţia E: Enumerarea numărului proprietăţii, oraşului, tipului, chiriei
şi avansului pentru închiriere (conform regulilor de afaceri: avansul = 2
x chiria).
105
Pasul 5.4.2 Considerarea dublării atributelor sau grupării
(uniunii) relaţiilor
107
Pentru a evita rularea interogării de fiecare dată (necesitatea realizării
uniunii între cele 2 tabele), în tabelul „Proprietate_de_Închiriat” se
introduce o redundanţă controlată, anume câmpul „Nume” (care există
şi în tabelul „Personal”).
108
În baza modelelor de date logice local se proiectează vederile
utilizatorilor. Vederile se creează în MS-Access prin interogări QBE, care
se bazează pe limbajul de interogare structurată SQL (Structured Query
Language).
Exemplu: Se doresc detalii referitoare la personalul agenţiei imobiliare,
vizibile pentru supervizorul organizaţiei, dar fără informaţii referitoare la
salarii.
In timp ce managerul organizaţiei vede relaţia de bază, completă:
Personal (Nr_Personal, Prenume, Nume, Adresa, Telefon, Sex, Functia,
Salariu, Nr_Filiala)
Cheie primară: Nr_Personal
Cheie străină: Nr_Filiala, se referă la relaţia, tabelul „Filiala” (cu cheia
primară Nr_Filiala).
109
Pasul 6.2 Proiectarea regulilor de acces
De regulă utilizatorii nu au acces la relaţiile de bază, ci numai la vederile
create pentru ei. Administratorul de BD atribuie fiecărui utilizator un
identificator de autorizaţie care are asociată o parolă.
Fiecare instrucţiune SQL executată de către SGBD este efectuată în
numele unui anumit utilizator. Identificatorul de autorizaţie determină la
ce obiecte din BD se poate referi utilizatorul şi ce operaţii poate efectua
asupra acestor obiecte. Fiecare obiect creat în SQL are un proprietar
identificat prin identificatorul de autorizaţie. Proprietarul este singurul
care cunoaşte existenţa obiectului respectiv şi deci poate efectua
operaţii asupra lui.
110
Privilegiile sunt acţiunile pe care un utilizator are voie să le efectueze
asupra unei relaţii de bază sau vederi.
111
O dată deschisă BD, toate obiectele (tabele, interogări, formulare etc.)
sunt puse la dispoziţia utilizatorului.
112
Figura de mai jos ilustrează caseta de dialog pentru acordarea
permisiunilor de utilizator şi de grup. Se reglementează modul în care se
lucrează cu fiecare obiect din BD.
Un control mai fin se realizează prin definirea de grupuri (conturi de
grup) noi, cărora li se acordă anumite permisiuni (de grup). Apoi se
adaugă utilizatorii care fac parte din acest grup, care au implicit toate
drepturile grupului din care fac parte, dar ale căror drepturi pot fi
modificate individual, astfel încât să fie mai multe sau mai puţine faţă de
grup.
113
Obiectiv: Monitorizarea sistemului operaţional şi îmbunătăţirea
performanţelor acestuia, pentru a corecta deciziile inadecvate de
proiectare sau pentru a reflecta cerinţele în schimbare.
114
Calea către imaginea/imaginile stocate pe hard disk se specifică în
design view al formularului (sau raportului sau paginii de acces) creat
după tabel.
115
Următoarea etapă (pasul 5): proiectarea organizării fişierelor şi
metodelor de acces care vor fi utilizate pentru stocarea relaţiilor de
bază. Aceasta presupune analizarea tranzacţiilor, alegerea organizării
adecvate a fişierelor, adăugarea de indexuri secundare, introducerea de
redundanţă controlată şi estimarea spaţiului necesar pe disc.
Indexurile secundare furnizează un mecanism de specificare a unei
chei suplimentare pentru o relaţie de bază, pentru regăsirea mai
eficientă a datelor.
Denormalizarea este o opţiune atunci când performanţele sistemului
nu sunt satisfăcătoare şi o relaţie are o rată de reactualizare scăzută şi o
rată de interogare foarte ridicată.
Baza de date trebuie prevăzută cu un mecanism de securitate (pasul
6). Măsurile de securitate necesare se identifică pe parcursul proiectării
logice. Ele se realizează prin crearea de vederi pentru utilizatori şi
utilizarea de mecanisme de control al accesului, scrise în limbajul SQL.
Etapa finală (pasul 7) din proiectarea fizică a BD constă în
monitorizarea şi reglarea neîntrerupte ale sistemului operaţional
pentru maximizarea performanţelor.
116