C U P R I N S

Introducere

9

Capitolul 1  -  Obiectul proiectării bazelor de date

13

1.1.  Locul bazelor de date în sistemul informaţional

13

1.2.  Principalele arhitecturi ale aplicaţiilor în care sunt implicate bazele de date

16

1.3.  O metodologie clasică de dezvoltare a aplicaţiilor

19

1.4.  Privire de ansamblu asupra proiectării bazelor de date

25

1.5.  Proiectarea bazelor de date în prezentul volum

29

Capitolul 2  -  La inceput a fost normalizarea

31

2.1.  Concepte ale modelului relaţional de organizare a bazelor de date

32

2.1.1.  Relaţii/tabele, domenii, atribute, valori nule

33

2.1.2.  Restricţii ale bazei de date

35

2.2.  Nevoia de normalizare

39

2.2.1.  Redundanţe

40

2.2.2.  Anomalii la inserare

40

2.2.3.  Anomalii la modificare

40

2.2.4.  Anomalii la ştergere

41

2.3.  Normalizarea - câteva tuşe

41

2.4.  Etapele normalizării

42

2.5.  Descompunere fără pierdere de informaţii

44

2.6.  Relaţia universală

46

Capitolul 3  -  Prima formă normalizată

51

3.1.  Definiţii ale primei forme normalizate

51

3.2.  Atribute simple şi atribute compuse

53

3.3.  Despre grupuri repetitive şi urmările lor

54

3.3.1.  Grupuri repetitive pe orizontală

55

3.3.2.  Eliminarea grupurilor repetitive prin adăugarea de tupluri

57

3.3.3.  Eliminarea grupurilor repetitive prin construirea de noi relaţii

61

3.4.  Prima formă normală şi problema cheii primare a relaţiei universale

67

3.5.  Dezbateri pe marginea şi în centrul primei forme normale

76

Capitolul 4  -  Dependente funcţionale. A doua formă normalizat

83

4.1.  Dependenţe funcţionale

83

4.1.1.  Definiţie

83

4.1.2.  Dependenţe funcţionale cu sursa compusă

86

4.1.3.  Proprietăţi ale dependenţelor funcţionale, închidere şi acoperire minimală

91

4.1.4.  Dependenţe funcţionale simetrice şi redundante

93

4.2.  Reprezentări ale dependenţelor funcţionale

94

4.2.1.  Diagrame ale DF

94

4.2.2.  Graful dependenţelor funcţionale

96

4.2.3.  Matricea dependenţelor funcţionale

98

4.3.  Dependenţe funcţionale totale

100

4.4.  Trecerea relaţiilor în a doua formă normală (2NF)

101

Capitolul 5  -  A treia formă normalizată şi forma normală Boyce-Codd

111

5.1.  Dependenţe funcţionale directe/tranzitive

111

5.2.  Aducerea relaţiilor în a treia formă normală

114

5.3.  Aducerea relaţiilor în 3NF prin grafuri şi matrice ale DF

120

5.4.  Forma normală Boyce-Codd

123

5.5.  Câteva probleme ale normalizării

130

5.5.1.  DF aparent tranzitive, dar care conţin informaţii neredundante

131

5.5.2.  Dependenţe tranzitive necanonice

132

5.5.3.  Relaţii semantice imposibil de preluat în dependenţe funcţionale

138

5.5.4.  Simetrie şi temporalitate în dependenţele funcţionale

143

5.5.5.  Grafuri şi BCNF

146

Capitolul 6  -  Dependenţe multivaloare şi de joncţiune. Formelenormalizate 4 şi 5

149

6.1.  Dependenţe multivaloare

149

6.2.  A patra formă normală

156

6.3.  Dependenţe de joncţiune

164

6.4.  A cincea formă normală

170

6.5.  Alte forme normale

171

Capitolul 7  --  Surogate, reguli, incluziuni. Soluţii SQL şi Oracle. Un caz practic

173

7.1.  Chei surogat

173

7.1.1.  Nevoia de surogate

173

7.1.2.  Puncte de vedere privind cheile surogat

177

7.1.3.  Declararea/obţinerea cheilor surogat

180

7.2.  Restricţii simple şi complexe. Atribute redundante ajutătoare

181

7.2.1.  Reguli la nivel de atribut şi înregistrare

182

7.2.2.  Reguli, atribute redundante şi declanşatoare

183

7.2.3.  Restricţii şi relaţii noi

191

7.3.  Dependenţe de incluziune

194

7.4.  Caz practic - centru de închiriere a casetelor video

205

Capitolul 8  -  Generalizări, ierarhii, grafuri, echivalenţe

231

8.1.  Generalizare şi specializare

231

8.2.  Ierarhii generalizate

241

8.3.  Grafuri

253

8.3.1.  Distanţe între localităţi. Trasee

254

8.3.2.  Generarea traseelor

258

8.3.3.  Rezervări şi gestiunea călătoriilor

261

8.4.  Incluziuni & echivalenţe

266

Capitolul 9  -  Denormalizare şi postnormalizare

269

9.1.  Denormalizarea - rău-rău, dar chiar necesar?

269

9.2.  Categorii de operaţii legate de denormalizare

272

9.3.  Copii "exacte" ale unui atribut în mai multe tabele

277

9.4.  Atribute derivate/sintetice

279

9.5.  Relaţii redundante/sintetice

297

9.6.  Atribute introduse pe baza grupurilor repetitive

307

9.7.  Ruperea relaţiilor pentru creşterea vitezei de acces

311

Capitolul 10  -  Temporalitate şi acces în baze de date

313

10.1.  Validitatea temporală a unei scheme

313

10.2.  Consemnarea evoluţiei unor parametri. "Refacerea" unei valori anterioare

320

10.3.  Protejarea "trecutului", închideri contabile şi nu numai

335

10.4.  Arhivări, fuziuni, compatibilităţi

339

Bibliografie

345