Академический Документы
Профессиональный Документы
Культура Документы
Autor
Titlu
Editura
Locul
Anul apariiei
Avnd n vedere posibilitile unui calculator legate de parcurgerea fiierelor, s-ar prea c
vor putea fi realizate uor o mulime de rapoarte. n timpul exploatrii pe calculator a fiierului s-au
depistat ns probleme cauzate de modul de structurare a informaiilor.
Conducerea bibliotecii a impus ca numele autorului s fie scris n alt mod, conform unui
format diferit.. Pentru autorii mai puin prolifici problema nu e dificil, dar unii autori se regsesc
n fiier de zeci de ori. Modificarea n zeci de locuri a aceluiai nume poate conduce la erori greu
de depistat. Aceast anomalie poart numele de anomalia la actualizare. Pentru eliminarea ei,
modelul relaional propune structurarea informaiilor n dou tabele: un tabel cu numele autorilor i
un tabel cu cri:
-1-
INFORMATIC*I*
CodAutor
Autor
NrInv
CodAutor
Titlu
Editura
Locul
Anul apariiei
n momentul nregistrrii unei cri, dac autorul exista deja n tabelul de autori, i se
noteaz codul care apoi este folosit la nregistrarea crii. Dac autorul nu exist n fiierul de
autori, el va fi adugat, n momentul adugrii atribuindu-se un cod. n acest mod, modificarea
numelui autorilor se realizeaz simplu, numele fiecrui autor aprnd o singur dat.
Aceast anomalie poate aprea dac se cere tergerea din fiierul de cri a nregistrrii
corespunznd unei cri pierdute. Odat cu titlul crii se terge i editura care a publicat-o.
Ulterior, dac se dorete realizarea unui raport privind editurile cu care biblioteca are relaii, n
raport nu va mai figura editura care a realizat cartea suprimat. Acest anomalie poart numele de
anomalia la tergerea datelor.
Dac se dorete nregistrarea n baza de date a bibliotecii a datelor unei noi edituri, n
modelul elaborat acest lucru nu este posibil fr adugarea unei prime cri achiziionate de la
aceasta. Se spune atunci c baza prezint o anomalie la adugarea datelor.
IA.02.3. Normalizarea
Modelul relaional elaborat de Codd propune soluii pentru eliminarea acestor anomalii.
Procesul de structurare a bazei de date n vederea eliminrii anomaliilor sesizate poart numele de
normalizare. Normalizarea const n aducerea bazei de date ntr-una dintre formele normale, cele
mai importante fiind cele trei forme prezentate n continuare.
-
Prima form normal cere ca tabelele n care sunt pstrate informaiile s satisfac
urmtoarelor cerine:
a. Fiecare coloan trebuie s pstreze o informaie elementar (care nu se mai poate
descompune). n exemplul prezentat, dac o carte are mai muli autori coloana
CodAutor ar trebui s conin mai multe coduri, deci acest mod de structurare nu
respect aceast cerin.
b. Fiecare coloan trebuie s aib un nume unic;
c. Tabelul nu poate avea dou linii coninnd informaii identice. Fiecare tabel din
componena unei baze de date normalizate conine o cheie primar. O cheie primar este
un cmp care are valori distincte pentru toate liniile tabelului. Uneori, mai rar, cheia
primar este obinut prin alturarea valorilor dintr-un ansamblu de mai multe cmpuri.
-2-
INFORMATIC*I*
Pot exista n baza de date tabele care nu au o cheie primar. Tabelele pentru care s-a
definit o cheie primar respect, de regul, cerina enunat.
d. ntr-un tabel nu se admit grupuri de informaii care se repet. n exemplul dat Editura i
Locul formeaz un grup care probabil se repet pentru toate crile provenind de la
aceeai editur.
-
A doua form normal se refer la tabele ale bazei de date care respect cerinele primei
forme dar au cmpuri care nu depind funcional de cheia primar. De exemplu urmtorul tabelul de
comenzi :
Comanda
1
2
3
4
Client
Leonida SRL
Suprem ABC S.A.
Transilvania grup S.A.
Rodna Trans S.R.L.
Pers. de contact
Marcel Bihoreanu
Ioan Moldovan
Vasile Pop
Carmen Ionescu
Total
4023.30
2048.50
1100.05
834.00
n exemplul dat, cheia primar este cmpul Comanda. Acest cmp nu este ntr-o relaie funcional
cu Pers. de contact, deoarece n cazul n care o firm a emis mai multe comenzi cmpul Pers. de
contact va conine n mod repetat aceeai valoare.
n acest caz aducerea bazei de date n a doua form normal va conduce la definirea a dou tabele,
unul pentru comenzi i unul care asociaz fiecrei firme o persoan de contact.
Comanda
1
2
3
4
Client
Leonida SRL
Suprem ABC S.A.
Transilvania grup S.A.
Rodna Trans S.R.L.
Client
Leonida SRL
Suprem ABC S.A.
Transilvania grup S.A.
Rodna Trans S.R.L.
-
Total
4023.30
2048.50
1100.05
834.00
Pers. de contact
Marcel Bihoreanu
Ioan Moldovan
Vasile Pop
Carmen Ionescu
Pentru a fi n a treia form normal un tabel trebuie s fie n a doua form normal i, n plus, toate
cmpurile care nu depind direct de cheia primar trebuie eliminate.
Exemplu de tabel care nu este n forma a treia normal:
-3-
INFORMATIC*I*
Societate
Leonida SRL
Suprem ABC S.A.
Transilvania grup S.A.
Rodna Trans S.R.L.
Ora
Galati
Bacau
Sibiu
Bistrita
Cod potal
21450
11760
51280
23413
Judet
Galati
Bacau
Sibiu
Bistrita Nasaud
n exemplu cmpul Judet depinde de Ora si nu de Societate, deci trebuie eliminat. Pentru
memorarea judeelor va trebui adugat un tabel care s conin lista oraelor i, pentru fiecare ora,
judeul n care este situat.
Coloanele unui tabel care satisface a treia form normal conin informaii care depind direct de
cheia primar.
cod editur
Edituri
CodE
Nume
Adresa
Telefon
editura
NrInv
CodA
Titlu
CodE
Anul
cod autor
carte
Acest tip de relaie este cel mai frecvent ntlnit i st la baza modelului relaional elaborat
de Codd.
Cheile primare din cele dou tabele sunt CodE pentru Edituri i NrInv pentru Cri. n
tabelul de cri, CodE i CodA (cod autor) sunt chei strine. O cheie strin dintr-un tabel A
-4-
INFORMATIC*I*
permite regsirea unei linii dintr-un tabel asociat, B. n tabelul asociat, B, cheia strin din tabelul A
este de regul cheie primar. n cazul dat, cheia strin CodA permite regsirea n tabelul de autori a
numelui acestuia iar cheia strin CodE permite gsirea numelui editurii care a publicat cartea.
Observaie : Tabele ca de exemplu Edituri pot conine cmpuri care au n mod evident valori
distincte pentru toate articolele din tabel. De exemplu Numele sau Telefon. n teoria bazelor de date
astfel de cmpuri sunt denumite chei candidate, deoarece ar putea fi chei primare.
2. Relaii 1 la 1 (one to one)
O relaie de tipul 1 la 1 apare n cazul n care unei linii dintr-un tabel i corespunde o singur
linie n tabelul cu care acesta este n legtur.
n cazul n care fiecrei nregistrri dintr-un tabel i corespunde o nregistrare n al doilea
tabel nu este necesar nregistrarea informaiilor n dou tabele separate. Tabelele separate sunt
create n cazul n care nu toate liniile primului tabel au corespondent n al doilea tabel.
Exemplu:
Se consider perechea de tabele din exemplul de mai jos. Aceasta conine datele angajailor
unei companii i numele soilor / soiilor angajailor.
Angajati
Soti
Cod_ang
Nume
Prenume
Nr_pers
Nume
Prenume
Cod_ang
12
Ionescu
Valer
101
Pop
Ioan
13
13
Pop
Diana
103
Ionescu
Lucia
12
14
Popescu
Marius
Cri
CodA_1
NrInv_1
CodA_2
NrInv_2
CodA_3
NrInv_3
CodA_4
NrInv_4
CodA_5
NrInv_5
CodA_6
NrInv_6
CodA_7
NrInv_7
NrInv_8
NrInv_9
-5-
INFORMATIC*I*
Tab. de legtur
CodA_1
Cri
CodA_2
NrInv_1
NrInv _1
CodA_2
CodA_2
NrInv _3
NrInv _2
CodA_3
CodA_3
NrInv _3
NrInv _3
CodA_4
CodA_6
NrInv _3
NrInv _4
CodA_5
CodA_2
NrInv _8
NrInv _5
CodA_6
NrInv _6
CodA_7
NrInv _7
NrInv _8
IA.02.5. Aplicaii
1. Pornii aplicaia Oracle SQL Developer i creai n schema biblio urmtoarele tabele:
cititori
cod_cit
number (4, 0)
cnp
number (13, 0)
nume
varchar2 (30)
prenume
varchar2 (20)
localitatea
varchar2 (30)
judetul
varchar2 (20)
adresa
varchar2 (80)
telefon
number (10, 0)
e_mail
varchar2 (50)
cheie primar : cod_cit
cod_carte
cod_autor
autcarti
number (4, 0)
number (4, 0)
imprumut
cod_carte
number (4, 0)
cod_cit
number (4, 0)
data_imprumut
date
data_rest
date
chei strine : cod_carte, cod_cit
Obs.
e-mail-ul poate fi null
data_rest poate fi null
-6-
INFORMATIC*I*
- n tabelul cititori:
1 || 1246845691231 || Popescu || Marin || Turda || Cluj || str. Mica, nr. 123 || 0264122112 || popescu@personal.ro
2 || 2342356786431 || Maniu || Laura || Dej || Cluj || str. Zambilelor, nr. 321 || 0744123456 || laura_maniu@yahoo.com
3 || 2897654356789 || Rotaru || Clin || Sighisoara || Mure || str. Grii, nr. 43 || 0265012021 || calinrotaru@personal.ro
- n tabelul autcarti:
(1; 1), (2; 2), (3; 3), (4; 4)
- n tabelul imprumut:
1; 1; 10 octomrie 2001; 15 octombrie 2001
1; 2; 10 februarie 2007; etc.
-7-
INFORMATIC*I*
-8-
INFORMATIC*I*
Observaie: Stergerea se va realiza ntr-o ordine permis de integritatea referenial. n exemplul dat
se ncepe cu tabelul Copii si apoi se terge tabelul Angajati.
Deschidei fiierul care conine salvarea realizat (File / Open):
-9-
INFORMATIC*I*
Observaie: Aplicaia va cere indicarea conexiuni folosite la restaurarea obiectelor din fiierul de
comenzi:
- 10 -