Documente Academic
Documente Profesional
Documente Cultură
1 [Codd72]
2 [Date04]
3 [Date86], [Miranda&Busta90], [Connoly s.a.96], [Dollinger98]
4 [Riordan99]
2 Capitolul 3
oricare coloan conine o valoare i numai una5. Astfel, 1NF respinge ideea de set de
valori, tuplu de valori sau combinaia acestora ca valoare a unui singur atribut pe
un oricare tuplu (linie) a relaiei.
Ali autori formeaz explicit pentru 1NF i restricia: toate atributele ce compun
relaia s fie n dependen funcional fa de cheia relaiei, ceea este, oarecum, o
tautologie, ntruct una dintre "poruncile" valabile pentru orice tabel stipuleaz
negru pe alb c ntr-o relaie nu pot exista dou tupluri identice sau, altfel spus,
ntr-o relaie trebuie s existe mcar un atribut sau combinaie de atribute ale cror
valori s deosebeasc orice tuplu de toate celelalte sau orice relaie posed o cheie
primar.
Formularea care a generat cele mai multe confuzii este legat de noiunea de
grupuri repetitive6: O relaie n 1NF nu trebuie s conin grupuri repetitive.
De obicei, noiunea de grup repetitiv este raportat direct la cea de atomicitate.
Diferenierea atomicitate grup repetitiv apare n [Lungu s.a.95], pentru care un
atribut atomic este unul simplu (ne-compus): O relaie este n 1NF dac domeniile
pe care sunt definite atributele relaiei sunt constituite numai din valori atomice
(elementare). n plus, un tuplu nu trebuie s conin atribute sau grupuri de
atribute repetitive7. Din pcate, autorii se opresc aici cu definiia, pstrnd o
remarcabil discreie vis-a-vis de ceea ce consider grup repetitiv. La fel stau
lucrurile i la dna. Ileana Popescu8.
Un plus de claritate aduce definiia lui Toby Teorey, pentru care o relaie este n
1NF dac i numai dac toate coloanele conin numai valori atomice; aceasta
nseamn c nu exist grupuri (coloane) repetitive n cadrul vreunei linii a tabelei.
Imediat autoarea precizeaz c un grup repetitiv apare ntr-o tabel atunci cnd unui
atribut multi-valoare i sunt permise dou sau mai multe valori reprezentate n cadrul unei
aceleai linii9. Sau, dup cum spunea Chris Date pn n ediia a asea a celei mai
cunoscute cri a sa, un grup repetitiv reprezint o coloan care conine cteva
valori n fiecare linie, sau, altfel spus, un numr diferit de valori pe linii diferite10.
n concluzie, aducerea unei relaii n 1NF presupune discutarea urmtoarelor
elemente:
raportul atribut simplu/atribut compus;
grupuri repetitive de atribute (pe orizontal);
grupuri repetitive de valori n cadrul fiecrei celule a tabelei.
Atribut Descriere
IdFilm Codul unic al filmului
TitluOriginal Titlul n englez, francez etc, aa cum apare la lansare filmului
TitluRO Traducerea romneasc a titlului original
AnLans Anul lansrii
Productori Productorul sau productorii filmului
Regizori Regizorul sau regizorii filmului
Rol Rolul din film
Actor Actorul care interpreteaz rolul/filmul curente
Genuri Genul/genurile la care se ncadreaz filmul (horror, comedie etc.)
DenPremiu Numele premiului - tipul (Oscar, Leul de argint, Ursul de aur etc.)
LocDecernare Locul n care se organizeaz festivitatea sau festivalul
Categorie Categoria premiului (pentru ce anume se acord premiul)
AnPremiu Anul decernrii
cuvinte-cheie, iar a doua are un singur autor. Relaia nenormalizat conine trei
grupuri repetitive: Cote, Autori i CuvinteCheie.
BIBLIOTEC
ISBN Titlu Cote Autori
973-683-889-7 Visual FoxPro. Ghidul III-13421, III- Marin Fotache, Ioan
dezvoltrii aplicaiilor 13422, III-13423 Brava, Ctlin Strmbei,
profesionale Liviu Creu
973-683-709-2 SQL. Dialecte DB2, Oracle i III-10678, III- Marin Fotache
Visual FoxPro 10679
BIBLIOTEC_GRUPURI_REPETITIVE_PE_ORIZONTAL
ISBN Titlu Cota1 Cota2 Cota3
973-683-889-7 Visual FoxPro. Ghidul dezvoltrii III-13421 III-13422 III-13423
aplicaiilor profesionale
973-683-709-2 SQL. Dialecte DB2, Oracle i Visual III-10678 III-10679 NULL
FoxPro
PERSOANE_1
CNP Nume Prenume DataNaterii CNPMam CNPTat
2641121390802 Bucur Cerasela 21-11-1964 2440611390167 1401205390102
...
PERSOANE_2
CNP Nume Prenume DataNaterii CNPPrinte Printe
2641121390802 Bucur Cerasela 21-11-1964 2440611390167 Mam
2641121390802 Bucur Cerasela 21-11-1964 1401205390102 Tat
...
11 [Teorey99], pp.99-100
Proiectarea bazelor de date 7
pierderi sau alterri de informaii ? n acest sens, am putea lua n discuie trei
soluii, dup cum urmeaz.
BIBLIOTEC_TUPLURI_NOI_SOLUIA_1
ISBN Titlu Cot Autor
973-683-889-7 Visual FoxPro. Ghidul dezvoltrii aplicaiilor III-13421 Marin Fotache
profesionale
973-683-889-7 Visual FoxPro. Ghidul dezvoltrii aplicaiilor III-13422 Ioan Brava
profesionale
973-683-889-7 Visual FoxPro. Ghidul dezvoltrii aplicaiilor III-13423 Ctlin Strmbei
profesionale
973-683-889-7 Visual FoxPro. Ghidul dezvoltrii aplicaiilor NULL Liviu Creu
profesionale
973-683-889-7 Visual FoxPro. Ghidul dezvoltrii aplicaiilor NULL NULL
profesionale
973-683-889-7 Visual FoxPro. Ghidul dezvoltrii aplicaiilor NULL NULL
profesionale
973-683-889-7 Visual FoxPro. Ghidul dezvoltrii aplicaiilor NULL NULL
profesionale
973-683-889-7 Visual FoxPro. Ghidul dezvoltrii aplicaiilor NULL NULL
profesionale
973-683-709-2 SQL. Dialecte DB2, Oracle i Visual FoxPro III-10678 Marin Fotache
973-683-709-2 SQL. Dialecte DB2, Oracle i Visual FoxPro III-10679 NULL
973-683-709-2 SQL. Dialecte DB2, Oracle i Visual FoxPro NULL NULL
Rezultatul furnizat este alctuit din dou linii, una ce conine valoarea Ioan
Brava, iar celalalt valoarea NULL. Lipsesc, deci, ceilali trei autori ai crii despre
Visual FoxPro, din care unul (sracul) a scris chiar o carte despre SQL. Interogarea
ce furnizeaz rspunsul corect trebuie s foloseasc o jonciune sau corelare dup
atributul ISBN. Prin urmare, este necesar de tiut c structura informaional pe
care o reprezint tabela de mai sus are o serie de neajunsuri.
Cel mai net motiv de renunare la aceast variant este prezena valorilor nule
n componena atributelor cheie primar, dup cum vom discuta n paragraful 3.4.
Numr de linii egal cu suma valorilor elementare ale atributelor de tip grup
repetitiv
A doua soluie de completare are n vedere eliminarea problemei de la tergerea
unei linii n cazul soluiei precedente, i anume: pe oricare linie, o valoare nenul a
unuia dintre cele trei atribute atrage dup sine nulitatea celorlalte dou - vezi
figura 3.6. Spre exemplu, prima carte are 3 cote, 4 autori i 8 cuvinte cheie; prin
urmare vor fi necesare 3 + 4 + 8 = 15 linii.
BIBLIOTEC_TUPLURI_NOI_SOLUIA_2
ISBN Titlu Cot Autor
973-683-889-7 Visual FoxPro. Ghidul dezvoltrii aplicaiilor III-13421 NULL
profesionale
973-683-889-7 Visual FoxPro. Ghidul dezvoltrii aplicaiilor III-13422 NULL
profesionale
973-683-889-7 Visual FoxPro. Ghidul dezvoltrii aplicaiilor III-13423 NULL
profesionale
973-683-889-7 Visual FoxPro. Ghidul dezvoltrii aplicaiilor NULL Marin Fotache
profesionale
973-683-889-7 Visual FoxPro. Ghidul dezvoltrii aplicaiilor NULL Ioan Brava
profesionale
973-683-889-7 Visual FoxPro. Ghidul dezvoltrii aplicaiilor NULL Ctlin Stmbei
profesionale
973-683-889-7 Visual FoxPro. Ghidul dezvoltrii aplicaiilor NULL Liviu Creu
profesionale
973-683-889-7 Visual FoxPro. Ghidul dezvoltrii aplicaiilor NULL NULL
profesionale
973-683-889-7 Visual FoxPro. Ghidul dezvoltrii aplicaiilor NULL NULL
profesionale
973-683-889-7 Visual FoxPro. Ghidul dezvoltrii aplicaiilor NULL NULL
profesionale
973-683-889-7 Visual FoxPro. Ghidul dezvoltrii aplicaiilor NULL NULL
profesionale
973-683-889-7 Visual FoxPro. Ghidul dezvoltrii aplicaiilor NULL NULL
profesionale
973-683-889-7 Visual FoxPro. Ghidul dezvoltrii aplicaiilor NULL NULL
profesionale
973-683-889-7 Visual FoxPro. Ghidul dezvoltrii aplicaiilor NULL NULL
profesionale
973-683-889-7 Visual FoxPro. Ghidul dezvoltrii aplicaiilor NULL NULL
profesionale
973-683-709-2 SQL. Dialecte DB2, Oracle i Visual FoxPro III-10678 NULL
973-683-709-2 SQL. Dialecte DB2, Oracle i Visual FoxPro III-10679 NULL
973-683-709-2 SQL. Dialecte DB2, Oracle i Visual FoxPro NULL Marin Fotache
10 Capitolul 3
BIBLIOTEC_TUPLURI_NOI_SOLUIA_3 (fragment)
ISBN Titlu Cot Autor
973-683-889-7 Visual FoxPro. Ghidul dezvoltrii aplicaiilor III-13421 Marin Fotache
profesionale
973-683-889-7 Visual FoxPro. Ghidul dezvoltrii aplicaiilor III-13421 Ioan Brava
profesionale
973-683-889-7 Visual FoxPro. Ghidul dezvoltrii aplicaiilor III-13421 Ctlin Stmbei
profesionale
973-683-889-7 Visual FoxPro. Ghidul dezvoltrii aplicaiilor III-13421 Liviu Creu
profesionale
973-683-889-7 Visual FoxPro. Ghidul dezvoltrii aplicaiilor III-13421 Marin Fotache
profesionale
973-683-889-7 Visual FoxPro. Ghidul dezvoltrii aplicaiilor III-13421 Ioan Brava
profesionale
973-683-889-7 Visual FoxPro. Ghidul dezvoltrii aplicaiilor III-13421 Ctlin Stmbei
profesionale
973-683-889-7 Visual FoxPro. Ghidul dezvoltrii aplicaiilor III-13421 Liviu Creu
profesionale
.... (nc 88 de linii pentru cartea de Visual
FoxPro, plus 6 pentru cartea de SQL )
...
COTE
ISBN Cot
973-683-889-7 III-13421 CRI_CUVCHEIE
973-683-889-7 III-13422 ISBN CuvntCheie
973-683-889-7 III-13423 973-683-889-7 baze de date
973-683-709-2 III-10678 973-683-889-7 SQL
973-683-709-2 III-10679 973-683-889-7 proceduri stocate
973-683-889-7 FoxPro
973-683-889-7 formulare
AUTORI_CRI 973-683-889-7 orientare pe obiecte
ISBN Autor 973-683-889-7 client-server
973-683-889-7 Marin Fotache 973-683-889-7 web
973-683-889-7 Ioan Brava 973-683-709-2 baze de date
973-683-889-7 Ctlin Strmbei 973-683-709-2 algebr relaional
973-683-889-7 Liviu Creu 973-683-709-2 SQL
973-683-709-2 Marin Fotache
973-683-709-2 Marin Fotache
CRI
ISBN Titlu Editura LocSediuEd AnApariie
973-683-889-7 Visual FoxPro. Ghidul dezvoltrii Polirom Iai 2002
aplicaiilor profesionale
12 Soluia este sugerat n [Lungu s.a.95], [Oprea99], [Connoly s.a.96], [Elmasri & Navathe 00] etc.
Proiectarea bazelor de date 13
BIBLIOTEC_2
Cot ISBN Titlu Autori
III-13421 973-683-889-7 Visual FoxPro. Ghidul dezvoltrii Marin Fotache, Ioan Brava,
aplicaiilor profesionale Ctlin Strmbei, Liviu Creu
III-13422 973-683-889-7 Visual FoxPro. Ghidul dezvoltrii Marin Fotache, Ioan Brava,
aplicaiilor profesionale Ctlin Strmbei, Liviu Creu
III-13423 973-683-889-7 Visual FoxPro. Ghidul dezvoltrii Marin Fotache, Ioan Brava,
aplicaiilor profesionale Ctlin Strmbei, Liviu Creu
III-10678 973-683-709-2 SQL. Dialecte DB2, Oracle i Visual Marin Fotache
FoxPro
III-10679 973-683-709-2 SQL. Dialecte DB2, Oracle i Visual Marin Fotache
FoxPro
COTE_AUTORI COTE_CUVCHEIE
14 Capitolul 3
CRI2
Cota ISBN Titlu Editura LocSe- AnApa-
diuEd riie
III- 973-683-889-7 Visual FoxPro. Ghidul dezvoltrii Polirom Iai 2002
13421 aplicaiilor profesionale
III- 973-683-889-7 Visual FoxPro. Ghidul dezvoltrii Polirom Iai 2002
13422 aplicaiilor profesionale
III- 973-683-889-7 Visual FoxPro. Ghidul dezvoltrii Polirom Iai 2002
13423 aplicaiilor profesionale
III- 973-683-709-2 SQL. Dialecte DB2, Oracle i Polirom Iai 2001
10678 Visual FoxPro
III- 973-683-709-2 SQL. Dialecte DB2, Oracle i Polirom Iai 2001
10679 Visual FoxPro
FILME
IdFilm TitluOriginal TitluRO AnLans
11899 As Good As It Gets Mai bine nu se poate 1997
12345 Bicentennial Man Omul bicentenar 1999
PRODUCTORI REGIZORI
IdFilm Productor IdFilm Regizor
11899 James Brooks 11899 James Brooks
11899 Bridget Johnson 12345 Chris Columbus
11899 Kristi Zea
12345 Michael Barnathan
12345 Chris Columbus
12345 Gail Katz
DISTRIBUIE GENURI
IdFilm Rol Actor IdFilm Gen
11899 Levin Udall Jack Nicholson 11899 comedie
11899 Carol Connelly Helen Hunt 11899 dram
11899 Simon Bishop Greg Kinnear 11899 romantic
11899 Frank Sachs Cuba Gooding Jr. 12345 SF
12345 Andrew Martin Robin Williams 12345 dram
12345 Little Miss Amanda Martia Embeth Davidtz 12345 romantic
12345 Portia Charney Embeth Davidtz
12345 Richard Martin Sam Neil
12345 Rupert Burns Oliver Platt
12345 Galatea Kiersten Warren
PREMII
IdFilm DenPremiu LocDe- Categorie AnPre- Actor
16 Capitolul 3
cernare miu
11899 Oscar Hollywood cel mai bun actor n rol 1998 Jack Nicholson
principal
11899 Oscar Hollywood cea mai bun actri n 1998 Helen Hunt
rol principal
11899 Globul de aur New York cea mai bun imagine 1998 NULL
11899 Globul de aur New York cel mai bun actor ntr-o 1998 Jack Nicholson
comedie/musical
11899 Globul de aur New York cea mai bun actri ntr- 1998 Helen Hunt
o comedie/musical
Figura 3.11. Constituirea de relaii separate pentru fiecare grup repetitiv pentru BD
FILMOGRAFIE
Gselnia funcioneaz n cazul relaiei referitoare la crile din biblioteca FEAA
i la filmografie. Schimbm ns datele problemei. Lum n discuie tabela
DOTARE_JUCRII din figura 3.12 care gestioneaz dotarea cu jucrii a fiecrui
copil al unei familii. n spiritul dreptului inviolabil la proprietate i al luptei contra
colectivismului, fiecare jucrie aparine, cel puin oficial, unui singur copil al
familiei, eventualele mprumuturi fiind rodul exclusiv al negocierilor (i violenei
juvenile).
DOTARE_JUCRII
CodFamilie NumeFamilie Copil Jucrii DataCumprrii
1111 Popescu Ioan Marc Trenule electric 14-05-1998
Loredana Ppu Barbie 15-09-1998
Elvis Puzzle 200 piese 23-12-1998
Puzzle 250 piese 14-05-1999
Puzzle 200 piese 24-12-1999
Csua Lego 08-03-2000
...
COPII JUCRII
CodFamilie Copil CodFamilie Jucrii DataCumprrii
1111 Marc 1111 Trenule electric 14-05-1998
1111 Loredana 1111 Ppu Barbie 15-09-1998
1111 Elvis 1111 Puzzle 200 piese 23-12-1998
1111 Puzzle 250 piese 14-05-1999
1111 Puzzle 200 piese 24-12-1999
1111 Csua Lego 08-03-2000
FAMILII
CodFamilie NumeFamilie
1111 Popescu Ioan
Proiectarea bazelor de date 17
Figura 3.13. Baza de date DOTARE_JUCRII adus n 1NF prin eliminarea grupurilor
repetitive
Dei nu am fcut dect s urmm un algoritm prescris ca sigur, avem de a face
cu un caz tipic de descompunere cu pierdere de informaii. n cazul nostru, cele trei
relaii nu furnizeaz o informaie esenial: crui copil i aparine o jucrie anume.
Oricum am proceda, eliminarea grupurilor repetitive nu rezolv corect
ntotdeauna problema normalizrii (aducerii relaiei n 1NF i continurii apoi cu
2NF s.a.m.d.), deoarece identificarea lor se face prin observaie i nu pe baza unei
analize semantice riguroase a relaiilor dintre atribute.
Dei atrage un grad de redundan considerabil, este recomandabil ca n aceast
situaie 1NF a relaiei s fie obinut prin introducerea n tabel a unei linii pentru
fiecare jucrie i duplicarea valorilor celorlate atribute, ca n figura 3.14.
DOTARE_JUCRII_1
CodFamilie NumeFamilie Copil Jucrie DataCumprrii
1111 Popescu Ioan Marc Trenule electric 14-05-1998
1111 Popescu Ioan Loredana Ppu Barbie 15-09-1998
1111 Popescu Ioan Elvis Puzzle 200 piese 23-12-1998
1111 Popescu Ioan Loredana Puzzle 250 piese 14-05-1999
1111 Popescu Ioan Marc Puzzle 200 piese 24-12-1999
1111 Popescu Ioan Loredana Csua Lego 08-03-2000
Nici relaia universal VNZRI, ale crei atribute sunt cele din tabelul 2.1, nu
este scutit de probleme la identificarea atributelor repetitive, dar amnm discuia
pentru paragraful urmtor.
LOCALITI_CODURI_VECHI
CodPotal OraComun Sat Jude
5319 Vntori Vntori Vrancea
5319 Vntori Jorti Vrancea
5319 Vntori Mircetii-Vechi Vrancea
5613 Roznov Roznov Neam
5613 Roznov Slobozia Neam
5300 Focani NULL Vrancea
simplificare, toate cele patru coduri sunt atribuite unor adrese aflate pe bulevardul
Independenei. Astfel, codul 700106 este asociat tuturor imobilelor din Bd. Indepen-
denei, iar valoarea 1-5, 9-13 pentru atributul Numere desemneaz urmtoarele
numere: 1, 3, 5 (1-5) i 9, 11, 13 (9-13). Valoarea aceluiai atribut pe linia urmtoare
(codul 700099) - 18-T indic un set de valori pare ce ncepe cu 18 i continu cu 20,
22, ... pn la ultima adres par de pe bulevardul Independenei. T-ul nseamn
deci "Terminare", epuizare, i asigur atribuirea automat a acestui cod potal
eventualelor viitoare construcii ridicate pe acest bulevard (dac o mai fi loc). Pe
linia de mai jos valoarea 25-T se refer la toate numele impare ncepnd cu 25 pn
la ultimul imobil situal pe acea parte ("impar") a bulevardului. Penultima linie a
tabelei semnaleaz un lucru oarecum deranjant: un cod potal poate fi alocat chiar
i la dou sau mai multe strzi, n cazul nostru, numerelor pare de la 2 la 26 i
numrului 28 de pe bulevardul Carol I, dar i tuturor numelor de pe aleea Veronica
Micle (n tabel este preluat titulatura de pe www.posta-romana.ro).
CODURI_NOI_V1
CodPotal Localitate Strada Numere Comuna Jude
627395 Vntori NULL NULL Vntori Vrancea
627397 Jorti NULL NULL Vntori Vrancea
627399 Mircetii-Vechi NULL NULL Vntori Vrancea
700106 Iai Bd. Independenei 1-5 NULL Iai
9-13
700099 Iai Bd. Independenei 18-T NULL Iai
700102 Iai Bd. Independenei 25-T NULL Iai
700100 Iai Bd. Independenei 7-13 NULL Iai
700505 Iai Bd. Carol I 2-26 NULL Iai
28
Aleea Micle Veronica T
700482 Iai Bd. Carol I 26A NULL Iai
30-32
36
700504 Iai Bd. Carol I 28A NULL Iai
34
38
42
707295 Mirceti NULL NULL Mirceti Iai
CODURI_LOCALITI
20 Capitolul 3
CODURI_STRZI CODURI_NUMERE
CodPotal Strada CodPotal Numere
700106 Bd. Independenei 700106 1-5
700099 Bd. Independenei 700106 9-13
700102 Bd. Independenei 700099 18-T
700100 Bd. Independenei 700102 25-T
700505 Bd. Carol I 700100 7-13
700505 Aleea Micle Veronica 700505 2-26
700482 Bd. Carol I 700505 28
700504 Bd. Carol I 700505 T
700482 26A
700482 30-32
700482 36
700504 28A
700504 34
700504 38
700504 42
CODURI_NOI_V2
CodPotal Localitate Strada TipNr NrIniial LitIniial
627395 Vntori NULL NULL NULL NULL
627397 Jorti NULL NULL NULL NULL
627399 Mircetii-Vechi NULL NULL NULL NULL
700106 Iai Bd. Independenei impare 1 NULL
700106 Iai Bd. Independenei impare 9 NULL
700099 Iai Bd. Independenei pare 18 NULL
700102 Iai Bd. Independenei impare 25 NULL
700100 Iai Bd. Independenei impar 7 NULL
700505 Iai Bd. Carol I pare 2 NULL
700505 Iai Bd. Carol I pare 28 NULL
700505 Iai Aleea Micle Veronica ambele 1 NULL
700482 Iai Bd. Carol I pare 26 A
700482 Iai Bd. Carol I pare 30 NULL
700482 Iai Bd. Carol I pare 36 NULL
700504 Iai Bd. Carol I pare 28 A
700504 Iai Bd. Carol I pare 34 NULL
700504 Iai Bd. Carol I pare 38 NULL
700504 Iai Bd. Carol I pare 42 NULL
707295 Mirceti NULL NULL NULL NULL
Figura 3.18. Noile coduri potale - tabel normalizat dar fr cheie primar
22 Capitolul 3
CODURI_SATE
CodPotal Localitate Comuna Jude
627395 Vntori Vntori Vrancea
627397 Jorti Vntori Vrancea
627399 Mircetii-Vechi Vntori Vrancea
707295 Mirceti Mirceti Iai
CODURI_ORAE
Cod Locali Strada TipNr NrIni- LitIni- NrFi- LitFi- Ju-
Potal tate ial ial nal nal de
700106 Iai Bd. Independenei impare 1 5 NULL Iai
700106 Iai Bd. Independenei impare 9 13 NULL Iai
700099 Iai Bd. Independenei pare 18 NULL NULL Iai
700102 Iai Bd. Independenei impare 25 NULL NULL Iai
700100 Iai Bd. Independenei impar 7 13 NULL Iai
Proiectarea bazelor de date 23
Figura 3.19. Tabele separate pentru localitile cu un singur cod i pentru localitile cu
mai multe coduri
CODURI_SATE are o mndree de cheie primr: CodPotal. La
CODURI_ORAE n-am scpat de improvizaii. Astfel, pentru a evita nulitatea
literei iniiale, am folosit spaiul, aa nct cheia primar este (CodPotal,
Strada, NrIniial, LitIniial).
Am rezolvat o problem i am dat de alta: la majoritatea cutrilor trebuie s
efectum n prealabil reuniunea celor dou tabele, ceea ce e destul de apstor.
Spre exemplu, primul i ultimul cod potal alocat judeului Iai este necesar o
interogare de genul:
CODURI_NOI_V3
Id CodPotal Localitate Strada TipNr NrIniial
3456789 627395 Vntori NULL NULL NULL
3456790 627397 Jorti NULL NULL NULL
3456791 627399 Mircetii-Vechi NULL NULL NULL
24 Capitolul 3
Figura 3.20. Noile coduri potale - tabel normalizat dar fr cheie primar
Atenie, ns ! Cheile surogat constituie o tentaie creia (ca oricrei tentaii)
trebuie s i se dea curs cu moderaie.
innd seama c:
- un client are un singur sediu central (poate avea filiale, ns ne limitm la a
considera c facturarea se face pe adresa sediului central);
- o factur emis are un numr unic i se ntocmete unui singur client;
- o factur conine una sau mai multe linii;
- pe fiecare linie este nregistrat un produs, fiecare vndut ntr-o anumit
cantitate i la un anumit pre unitar;
- deoarece este posibil re-diferenierea procentului de tax pe valoarea
adugat n funcia de categoria produselor (alimentare, medicamente,
cri, bunuri considerate de lux etc.), ProcTVA este bine de asociat fiecrui
produs;
- o ncasare are la baz un document justificativ;
- o factur poate de pltit de client n trane;
- la o ncasare se pot achita, integral sau parial, una sau mai multe facturi,
cheia primar ar fi combinaia (NrFact, Linie, Codnc). Necazul este c la
momentul ntocmirii nu se cunosc datele despre ncasri. Mai mult, aceasta poate
surveni la distane mari n timp, mai ales n condiiile blocajelor financiare care ne-
au fcut celebri n mediul economic european.
Potrivit primei soluii care nu ncalc restricia de entitate, inserarea de linii n
tabela VNZRI se face abia n momentul ncasrii facturii, ceea ce este inadmisibil,
ntruct baza de date va fi incapabil s furnizeze informaii vitale precum:
vnzrile pe ziua, sptmna, luna, anul curente;
vnzrile pe produse;
vnzrile pe clieni;
creanele (valoarea rmas de ncasat) fa de clieni.
prezenta valori identice pe dou tupluri (un tuplu pentru de Niro, cellalt pentru
Pacino), iar restricia de cheie primar ar fi nclcat.
Cnd proiectm baze de date trebuie s ne gndim i la astfel de spee
marginale ce pot compromite o structur chiar dup ani buni de funcionare a
aplicaiei. Fiind tentai s adugm celor patru atribute din cheie pe al cincilea,
Actor, nu putem s nu observm c, pentru premiile acordate la categoriile regie,
scenariu etc., acest atribut are valori NULLe, ceea ce violeaz restricia de entitate.
Soluia cea mai la ndemn ine de ruperea acestei relaii n dou, una dedicat
premiilor de interpretare, iar a doua celorlalte premii - vezi figura 3.21.
PREMII_INTERPRETARE
IdFilm DenPremiu LocDe- Categorie AnPre- Actor
cernare miu
11899 Oscar Hollywood cel mai bun actor n rol 1998 Jack Nicholson
principal
11899 Oscar Hollywood cea mai bun actri n 1998 Helen Hunt
rol principal
11899 Globul de aur New York cel mai bun actor ntr-o 1998 Jack Nicholson
comedie/musical
11899 Globul de aur New York cea mai bun actri ntr- 1998 Helen Hunt
o comedie/musical
CELELALTE_PREMII
IdFilm DenPremiu LocDe- Categorie AnPre-
cernare miu
11899 Globul de aur New York cea mai bun imagine 1998
Figura 3.21. Ruperea relaiei PREMII din cauza problemelor de cheie primar
14 Exist lucrri respectabile, precum [Atzeni s.a. 99], care nici nu fac aluzie la prima form
normal sau atomicitatea valorilor ntr-o relaie
15 [Elmasri & Navathe 00], p. 485
Proiectarea bazelor de date 27
BIBLIOTEC_SET
ISBN Titlu Cote_SET Autori_SET
973-683-889-7 Visual FoxPro. Ghidul dezvoltrii {III-13421,III- {Marin Fotache,
aplicaiilor profesionale 13422, III-13423} Ioan Brava, Ctlin
Strmbei, Liviu Creu}
973-683-709-2 SQL. Dialecte DB2, Oracle i {III-10678, {Marin Fotache}
Visual FoxPro III-10679}
21 [Date03]
Proiectarea bazelor de date 29
BIBLIOTEC_ ATR
ISBN Titlu Cote_REL
973-683-889-7 Visual FoxPro. Ghidul dezvoltrii aplicaiilor profesionale Cote
III-13421
III-13422
III-13423
STUDENI_EXAMENE_ATR1
Matricol NumePrenume An Specializare
EL13455 Popovici I Vasile 3 Informatic economic
Examene_ATR
CodDisc DenumireDisc NrCredite DataExamen Nota
AI3501 Baze de date I 6 29/01/2004 8
AI3502 Programare vizual i RAD 7 01/02/2004 10
CodDisc DenumireDisc NrCredite DataExamen Nota
AI3501 Baze de date I 6 29/01/2004 4
AI3502 Programare vizual i RAD 7 01/02/2004 8
AI3501 Baze de date I 6 12/02/2004 8
CodDisc DenumireDisc NrCredite DataExamen Nota
AI3501 Baze de date I 6 29/01/2004 9
AI3502 Programare vizual i RAD 7 01/02/2004 4
AI3502 Programare vizual i RAD 7 15/02/2004 9
CodDisc DenumireDisc NrCredite DataExamen Nota
AI3503 Analiza sistemelor informaionale 6 04/02/2004 7
STUDENI_EXAMENE_ATR2
CodDisc DenumireDisc NrCredite DataExamen
AI3501 Baze de date I 6 29/01/2004
StudeniNote_ATR
Matricol NumePrenume An Specializare Nota
EL13455 Popovici I Vasile 3 Informatic economic 8
EL13456 Zineanu W Ion 3 Informatic economic 4
EL13457 Ablaei R Zicu 3 Informatic economic 9
Matricol NumePrenume An Specializare Nota
32 Capitolul 3
Dup discuia din acest paragraf, n care domeniile pot fi definite ct se poate
de flexibil, n funcie de nevoile aplicaiei, ne putem pune ntrebarea: ce rost mai
are s discutm despre aducerea relaii n 1NF, operaiune care, uneori, presupune
creterea numrului de tupluri de cteva ori, astfel nct n loc s micorm
redundana, mai degrab o mrim, cel puin aparent ?
Dou ar fi argumentele n sprijinul celor prezentate n acest capitol pn n
paragraful n care ne aflm (oricum este ultimul !). Mai nti, n procesul
normalizrii, acesta e doar primul pas. Redundana pe care o introducem rezolv o
problem extrem de important, cea a pierderilor de informaii. Dup cum o s
vedem n capitolele urmtoare, este aproape sigur c n celelalte forme normalizate
vom scpa de aproape tot ce este redundant ntr-o relaie.
Al doilea argument ine de instrumentele software de care dispunem. La acest
moment suportul SGBD-urilor pentru domenii de tip set, ca s nu mai vorbim de
atribute de tip relaie, este mai degrab unul modest. Chiar dac produsele
importante au faciliti importante n definirea de obiecte, cnd se pune problema
mecanismului de declarare a integritii obiectelor, i mai ales a celui de interogare,
lucrurile se acutizeaz. Chiar dac teoretic opiunile sunt generoase, atunci cnd se
Proiectarea bazelor de date 33
pune problema punerii n oper a unei aplicaii de lucru cu baze de date nu putem
eluda "meandrele concretului", cu att mai puin "sinergia faptelor".