Baze de date pentru incepatori (manuale facultate)

297
؟٠٠٠٠٠ ,* ùgfQ¡: م٢٠ •■-. ; - ئ ه'-• ؛ مح ب م ث ؛ :، مح ه;.:. V م.' ءم إJohn V. Petersen ب م.'':' ع ئ سr* § m s * ä ^ . ء''•■ ' , ؛' ي' ه' مس'م ءءأى؛

description

Download link gratis:https://archive.org/details/BazeDeDatePtIncepatori

Transcript of Baze de date pentru incepatori (manuale facultate)

Page 1: Baze de date pentru incepatori (manuale facultate)

*,٠٠٠٠٠؟

ùgfQ¡:

.-■•٢٠ م

ه'-; ئ

م ' - • ؛

بمح :،ثم ح؛ ;■م ه.:.V . 'م

إ ءم

John V. Petersenب '.م ' سئع': ’ r * § m s * ä ^ .

'؛,'■•'ء'■

ه' 'جمس'مي' ى؛ ءءأ

Page 2: Baze de date pentru incepatori (manuale facultate)

Cuprins

Introducere ..................... ............................... .......... ............................................. . 1

Partea I Baze de date - elem ente generale................... ...................................51. Introducere în bazele de date........................................................................................72. Anatomia unei baze de date.......................................................................................19

Partea a ll-a Proiectarea şi construirea primei baze de date ................... 433. Introducere în proiectarea bazelor de date.................................................................454. Continuare: introducere în normalizare.....................................................................695. Construirea bazei de date în Access........................................................................... 95

Partea a ■ll-a întreţinerea bazei de date ................. .....................................1196. Menţinerea integrităţii prin reguli de validare........................................................ 1217. Bazele integrităţii referenţiale................................................................................... 147

Partea a IV-a Extragerea informaţiilor din baza de date -introducere în SQL ..... .............................................................. 157

8. SQL - elemente generale......................................................................................... 1599. SQL - dincolo de generalităţi................................................................................... 18710. Includerea interogărilor SQL în baza de date....................................................... 217

Partea a V-a Funcţionarea bazei de date - construirea unei aplicaţiisimple pentru baze de date în Access ..... ............. ................. .235

11. Construirea componentelor interfeţei cu utilizatorul............................................ 23712. Obţinerea unor rezultate utile: introducere în crearea şi prezentarea rapoartelor.... 263

Anexe ...................... ........... ....................... .......... .................................. ...... ..........277A. Structura bazei de date T E B ...... ..................................... ................. . 277B. Reguli de integritate referenţială în T E B .................. ........................ 283C. Glosar.............................................................. ..............................................285D. Periodice în domeniul bazelor de date .............................................. 295

E. Resuse Web .......... ......................................................... ............ ............... 298F. In d ex .......... ......................................... ........................................................... 299

Page 3: Baze de date pentru incepatori (manuale facultate)

Index

caseta de dialog iniţială, 21 lansare, 20-22 site web, 20 tabel, 26

سسه € Compression, 30 vedere (Datasheet), 151

Access Database Designeraplicaţii wizard

Import Table, 107 Link Table, 107 Table, 106

baze de date, creare, 103-112 butonul Primary Key, 107 casete de dialog

Save As, 108 ShowTable, 112-113

câmpuri, creare, 107-112 coloane, creare, 106-108 componente, 99-102 meniul Relationships, 112-114 meniul Tools, ١ ٧ , 116 tabele, creare/saivare, 106-107 vederi

Datasheet, 106 Design, 106, 107

Access Database Relationship Builder butonul Create New,114 casete de dialog

Create New Relationships, 114 Documented 116 Edit Relationships, 114, 150-151 New Relationships, 114

casete de validareEnforce Referential Integrity, 114 Referential Integrity, 115

Access Query Designer, 218 câmpuri

introducere, 220sortare după mai multe câmpuri, 226

coloane, eliminare, 223 criterii de selecţie, introducere, 221

Aa doua formă normală, 73-78 a treia formă normală, 79-80 a patra formă normală, 81-82 a cincea formă normală, 81-82 Access, 11

Butoane, Open/View,27 fereastra principală a bazei de date,22 baza de date Northwlnd Traders, 20-26

interogări, 31 normalizare, 70

fereastra SQL, 161 clauza As, 198 clauza Distinct, 178 clauza From, 192-193 clauza Group By, 188-189, 196,202 clauza Having, 206 clauza Join, 193

Union, 184-185 clauza m e re , 170-171, 204-206,212-214 c luzaO rderB y, 172-173,202 combinarea datelor din câmpuri, 167-169 combinarea mai m ultor tabele, 176 declaraţia Delete, 213-214 declaraţia Insert, 210-211 declaraţia Select, 164-165 declaraţia Top n Select, 169-170 declaraţia Update, 212 declaraţii parametrizate, ?.07-208 funcţia AvgO, 204 funcţia Count(), 190-191,195 funcţia Sum(), 196-197 funcţii de agregare, 190 funcţiile سم'اص şiM ax(), ¿٥$ 211 lim itarea rezultatelor, 181 ordine de sortare compusă, 173-175 redenumirea câmpurilor, 166, 198 re tu rnareadate lord inm a im ulte tabe le ,179-181 selectarea anum itor câmpuri, 165 uniuni externe complete, 182-184 uniuni externe la stânga, 180-181 uniuni interne, 177-178 uniuni la dreapta, 182-184

Page 4: Baze de date pentru incepatori (manuale facultate)

300 ANEXE

Contact, 87-88 Court, 89 Department, 86 Employee, 85-86 EmployeeClass, 86 Invoice, 91TimeEntryDetail, 89-91

Access Database Designer, 96-112Access, 11, 20-22definire, 8 ,12denormalizare, 83modelel de tip „picior de cioară” , 59tabelul Case, 88tabelul Client, 86tabelul Contact, 87-88tabelul Court, 89tabelul Department, 86proiectare, 63

elemente esenţiale, 93 instrumente, 51

câmp, 8 ,1 2 dezvoltare, 116 formular, 39 goală, 103-104 importare, 61 Input Mask Wizard, 134 integritate, 122,148-154 tabelul Employee, 85-86 tabelul EmployeeClass, 86 tabelul Invoices, 91 model, 51

a cincea formă normală, 81-82 a doua formă normală, 73-78 a patra formă normală, 81-82 a treia formă normală, 79-80 creare, 52-61diagramă de tip „p ic io r de c ioară”, 61ErWin (Computer Associates), 52forma normală Boyce-Codd, 71normalizare, 12normalizare, 71-78prim a formă normală, 72-73TEB (Time Entry and Billing), 84-85, 96VADBE (Visible Analyst Database Engineer), 52vederea Relationships, 51Visio, 51-52xCase (Resolution), 51-52

cerinţe, determinare, 47-48 obiecte, modificarea numelor, 108 rânduri, 8 raport, 36

funcţii/grupuri agregate, 230-231 interogări

crearea in terogărilor avansate, 228-229 parametrizate, 232-233 salvare, 227

ordine de sortare, introducere, 225 actualizări in cascadă (restricţii de integritate

referenţial¿), 150,153-154 administrator al bazei de date, 17 analist al bazei de date, 18

ANSI (American National Standards Institute), 160

ANSI-SQL, 92,160aplicaţia wizard Import Table (Access Database

Designer), 106 aplicaţia wizard Input Mask, 134 aplicaţia wizard Link Table (Access Database

Designer), 107 aplicaţia wizard Map Database, 61-62 aplicaţii de proiectare (Access Database

Designer), 99-112 aplicaţii wizard

Command Button, 274 Create Database Wizard (Visio), 60 ,96-97 Database Wizard (Visio), 61 Form Wizard

adăugarea butoanelor personalizate, 249 ,25 2 crearea formularului BusinessClient, 246 crearea formularului IndividualClient, 244,253-254 crearea formularului pentru angajaţi, 256-257 modificarea layout-ului, 248

Import Table (Access Database Designer), 106 Input Mask, 134Link Table (Access Database Designer), 107Map Database Wizard, 62Query Wizard, 240-242Report Wizard, 267-269Table Wizard (Access Database Designer), 106

bara de instrumente Design Symbol, 54-56,63 baza de date Northwlnd Traders, 20-26

formulare, 39 interogări, 31 normalizare, 70 rapoarte, 37

baza de date TEB (Time Entry and Billing) model, 84-85, 96 tabele

Case, 88 Client, 86

Page 5: Baze de date pentru incepatori (manuale facultate)

INDEX 301

caseta de dialog Create New Relationships (Access Database Relationship Builder), 114

caseta de dialog Documenter (Access Database Relationship Builder), 116

caseta de dialog Edit Relationships (Access Database Relationship Builder), 114,150-151

caseta de dialog File New Database (Access Database Designer), 104

caseta de dialog Save As (Access Database Designer), 108

caseta de dialog Show Table (Access Database Designer), 112-113

caseta de dialog Startup (Access), 21 caseta de dialog New Relationships (Access

Database Relationship Builder), 114 caseta de dialog New Table, 106-107 caseta de validare Enforce Referential Integrity

(Access Database Relationship Builder), 114 caseta de validare Referential Integrity (Access

Database Relationship Builder), 115 casete de dialog

Create New Relationships (Access Database Relationship Builder), 114

Define Entity, 56 Documenter (Access Database

Relationship Builder), 116 Edit Relationships (Access Database

Relationship Builder), 114,150-151 fereastra principal؛؛ a bazei de date, 22 New Relationships (Access Database

Relationship Builder), 114 New Table, 106-107Save As (Access Database Designer), 108 Show Table (Access Database Designer), 112-113 Startup, 21

casete de instrumentecaseta de instrumente Design Symbol, 63 Design Symbol (Visio), 54-56

casete de validareEnforce Referential Integrity (Access Database Relationship Builder), 114 Referential Integrity (Access Database Relationship Builder), 115

campurl, 8 atribute, 12 cheie primara, 107 combinarea datelor (SQL), 167-169 creare, 107-112 definire, 12 introducere, 220 multlpla, sortare, 226 proprietatl, 29-30

relaţii, 22-25,112 relaţională, 13-16 reguli (la nivel de câmp), 122

A llow Zero Length, 127-129 Default Value, 138 Format, 128-134 Input Mask, 134-138 proprietăţi la n ivel de câmp, 123 Required, 124-128 Validation Rule, 139-140 Validation Text, 141-142

'eguli (la nivel de rând), 143 proprietăţi la nivel de rând, 143 Validation Rule, 144 Validation Text, 144-145

forma titlului, 63SQL (Structured Query Language), 160-163 tabele, 8 ,12 , 26 tabelul TimeEntryDetail, 89-91 tabelul WorkCategory, 90-91 TEB (Time Entry and Billing), 62-66 utilizare, 9-10

bază de date fizică, creare, 96-99 bază de date liberă, creare, 103-104 baze de date relaţionale, 13-16 Bound Column (tab-ul Lookup), 41 BusinessClient

formular, 246 interogare, 242

butoaneCreate (Access Database Designer), 104 Create New (Access Database Relationship Builder), 114

personalizate, introducere, 249, 252 Primary Key, 107 vederea Relationship, 22 View, 2 7 ,33 ,41

butonul Open, 27,31 butonul Relationship View, 22 butonul View, 27,33,41butonul Create (Access Database Designer), 104 butonul Create New (Access Database

Relationship Builder), 114 butonul Primary Key, 107

caractere (Unicode Compression), 30 caseta de dialog a ferestrei principale a bazei de

date (Access), 22 caseta de dialog Define Entity, 56

Page 6: Baze de date pentru incepatori (manuale facultate)

302 A N EXE

creare, 106 eliminare, 223 introducere, 108

combinarea câmpurilor de date (SQL), 167-169 Command Button Wizard, 274 creare, 265-269 crearea

bazelor de date fizice, 96-99bazelor de date, 59,103-112câmpurilor, 107-112coloanelor, 106entităţilor (Visio), 55-56formularelor de tip meniu principal, 258,261formularului pentru clienţi, 239

adăugarea butoanelor personalizate, 2 4 9 ,2t formularului BusinessClient, 246 formularului IndividualClient, 244 ,253-254 formularului pentru angajaţi, 256-257 interogării BusinessClient, 242 interogării IndividualClient, 240 modificarea layout-ului, 248

modelului unei baze de date, 52-61 rapoartelor, 265-271 relaţiilor, 112-114 tabelelor, 106

Create Database Wizard (Visio), 60,96-97

concatenare, 167 dicţionar, 14formular de introducere a datelor, 167-169 impunerea regulilor de validare, 122 normalizare, 12

DBA (Database Administrator). Vezi administra­tor al bazei de date

DBMS (database management system), 10-11 DCL (Data Control Language), 160-163 DDL (Data Definition Language), 160-163 DML (Data Manipulation Language), 160-163 decizii tactice, determinarea cerinţelor bazei de

decizii strategice, determinarea cerinţelor bazei

declaraţia Select (SQL), 164-165 declaraţii (fereastra SQL)

Delete, 213-214 Insert, 210-211 parametrizate, 207-208 Update, 212

redenum ire(SQ L), 166, 198 selectare (SQL), 165 valori nule, 14

cerinţe (baze de date), determinare, 47-49

س سmultivalorlce, 76 primare, 13 ,24 ,75-76 ,107

. surogat (false), 76 Update Foreign Keys, 59

chei cu semnificaţie. Vezi chei multivalorlce chei fără semnificaţie. Vezi chei surogat (false) chei multivalorice, 76 chel primare compuse, 76 chei surogat (false), 76 cheie primară, 13,2 4 ,75-76,107 cheie externă (străină), 59 clauza As

redenumirea câmpurilor, 166 SQL (Structured Query Language), 198

clauza Distinct (SQL), 178 clauza Where (SQL), 170-171,204-206,212-214 clauza ،)oin (SQL), 193 clauza From (SQL), 192-193 clauza Group By (SQL), 188-189,196,202 clauza Having (SQL), 206 clauza Union (SQL), 184-185 clauze (SQL)

As, 198 From, 192-193 Group By, 188-189,196, 202 Having, 206 Join, 193 Order By, 202 Where, 204-206,212-214

clauza Qrder By (SQL), 172-173,202 Client

formular, 239formular/interogare Business/Client, 242 ,24 6 butoane personalizate, 2 4 9 ,2 5 2 formular/interogare IndividualClient, 240 ,244, 253-254layout, modificare, 248

raport cu lista clienţilor creare, 265-269 modificare, 271

clipboard (în Windows), 55 Codd, E.F.,13,18 Column Count (tab-ul Lookup), 39 Column Heads (tab-ul Lookup), 39 Column Widths (tab-ul Lookup), 39 coloane, 8

Page 7: Baze de date pentru incepatori (manuale facultate)

303INDEX

From, 192-193 Group By, 188-189 ,196 ,202 Having, 206 Join, 193 Order By, 202 Where, 204 ,20 6 ,212 -214

declaraţia Top n Select, 169-170 declaraţi؛

Delete, 213-214 Insert, 210-211 parametrizate, 207-208 Select, 164-165 Update, 212(٧٨٥٢؛؛

Avg(),204Count(), 190-191,195 de agregare, 190 M inQ şiM ax(), 205,211 Sum(), 196-197

limitarea rezultatelor, 181 ordine de sortare compusă, 173, 176 operaţii de creare, actualizare şi ş te rg e re ه16, sublimbaje

DCL (Data Control Language), 160-163 DDL (Data Definition Language), 160-163 DML (Data Manipulation Language), 160-163

tabelecombinare, 176 reţurnarea datelor, 173-181

uniunicom piet externe, 182-184 externe la stânga, 180-181 interne, 177-178 la dreapta, 182-184

uniuni complet externe, 182-184 ferestre

combinarea datelor, 167-169 redenumire, 166 reţurnarea datelor, 179-181

clauza Union, 184-185 clauza Where, 170-171 declaraţia ٢٠۴ ٨ Select, 169-170 declaraţia Update, 212

selectare, 165clauza O rder By, 172-173 declaraţia Insert, 210-211 declaraţia Select, 164-165 declaraţii parametrizate, 207-208 funcţia Sum(), 196-197 funcţiile Min() ş i Max(), 205,211 lim itarea rezultatelor, 181 redenumirea câmpurilor, i9 8

declaraţia Delete (SQL), 213-214 declaraţia Insert (SQL), 210-211 declaraţia Update (SQL), 212 declaraţia Top n Select (SQL), 169-170 declaraţii parametrizate SQL (Structured Query

Language), 207-208 denormalizare, 83 Designer (Visio), 52-53 dezvoltarea documentaţiei bazei de date, 116 diagrame

de tip „picior de cioară”, 61 ERD (entity relationship diagram), 70 fişiere .vsd (Visio), 97

Display Control (tab-ul Lookup), 40 documente (ale firmei). Vezi formulare/

documente ale firmei

editarea textului, 63elemente ale raportului (formular de tip meniu

principal), 272-274 elemente esenţiale pentru proiectare,

elemente esenţiale (proiectarea bazei de date), 93 entităţi, 8

baza de date TEB (Time Entry and Billing), 62 caseta de dialog Define Entity, 56 conectare, 56 creare (Visio), 55-56

ERD (entity relationship diagram), 52,55,60 ,70 ErWin (Computer Associates), 52 existent, 49

Ffereastra Designer (Access Database Designer),

fe reastra Main Database (Access Database Designer), 100-101

fereastra SQL (Structured Query Language)ANSi-SQL. 92 ,160 campuri

combinarea datelor, 167-169 redenumire, 166, 198 selectare, 165

clauza Distinct, 178 clauza Order By, 182-173 clauza Union, 184-185 clauza Where, 170-171 ciauze

٨ $, 198

Page 8: Baze de date pentru incepatori (manuale facultate)

304 ANEXE

formularele/documentele unei firme,determinarea cerinţelor unei baze de date, 48

formularul Product, 40 formularul Products (vederea Design), 41 funcţiile Min() şi Max() (SQL), 205,211 funcţia AvgQ (SQL), 204 funcţia CountQ (SQL), 190-191,195 funcţia Sum() (SQL), 196-197 funcţii de agregare (SQL), 190

formularul IndividualClient, 244, 253-254 layout, modificare, 248

grup de discuţii (Microsoft Support), 20

identificarea entităţilor (baza de date TEB), 62-63 importarea bazelor de date, 61 impunerea integrităţii referenţiale, 150 IndividualClient

formular, 244,253-254 Interogare, 240

integritate (a bazei de date)impunerea regulilor de validare a datelor, 122 referenţială, 122,148

impunere, 150introducerea restricţionată a datelor, 152 menţinere, 148-149restricţii, actualizări în cascadă, 150, 153-154 restricţii, ştergeri în cascadă, 150, 153 ştergeri restricţionate, 151

integritate referenţială, 122,148 impunere, 150 menţinere, 148-149 restricţii

actualizări în cascadă, 150, 153-154 priv ind introducerea datelor, 152 ştergeri în cascadă, 150, 153 priv ind ştergerile, 151

interviuri, determinarea cerinţelor unei baze de date, 47-48

interogări, 31Access Query Designer, 218

adăugarea câmpurilor, 219-220 adăugarea criteriilor de selecţie, 221 adăugarea ordinii de sortare, 225 crearea in terogărilor avansate, 228-229 elim inarea coloanelor, 223 implementare funcţiilor/grupurilor de agregare, 230-231

uniuni com plet externe, 182-184 uniuni externe la stânga, 180-181 uniuni interne, 177-178 uniuni la dreapta, 182-184

SQLclauza As, 198 clauza Distinct, 178 clauza From, 192-193 clauza Group By, 188 -189,196,202 clauza Having, 206 clauza Join, 193 clauza O rder By, 202 clauza Where, 204-206,212-214 combinarea tabelelor, 176 declaraţia Delete, 213-214 funcţia AvgQ, 204 funcţia CountQ, 190-191,195 funcţii de agregare, 190 ordini compuse de sortare, 173-175

ferestre ale funcţiilor (SQL)Count(), 190-191,195 de agregare, 190

fişierediagrama .vsd (Visio), 97 TEB.MDB, 105

fişiere cu diagrame .vsd (Visio), 97 fişierul TEB.LDB, 105 fişierul TEB.MDB, 105 Form Wizard

butoane personalizate, 249, 252 formular pentru angajaţi, 256-257 formularul BusinessClient, 246

forma normală Boyce-Codd, 71 forme (titlul bazei de date), 63 formular de tip meniu principal, 258,261,272-274 formular pentru angajaţi, creare, 256-257 formulare

ale firmei. Vezi formulare/documente ale firmei baza de date Northwind Traders, 39 butoane personalizate, 249, 252 de tip meniu principal

creare, 258 ,261elemente ale raportului, adăugare, 272 ,27 4

formularul Products, 40-41 introducerea datelor, 39 layout, modificare, 248 pentru clienţi, creare, 239

form ular pentru angajaţi, 256-257 form ularul BusinessClient, 246 form ularul IndividualClient, 244 ,253-254 nterogarea BusinessClient, 242

in terogarea IndividualClient, 240

Page 9: Baze de date pentru incepatori (manuale facultate)

DCL (Data Control Language), 160-163 DDL (Data Definition Language), 160-163 DML (Data Manipulation Language), 160-163

limbaje de programare limbaj de programare ($160 (هاا Limit To List (tab-ui Lookup), 41 linii, relatii, 66List Rows (tab-ul Lookup), 41 List Width ( أهال-الا Lookup), 41

M

INDEX 305

măşti (Input Mask), 30meniul Tools (Access Database Designer), 112,116 meniul Relationshlps (Access Database

Designer), 112-114 meniul Shape (Vislo), 59 metoda automată de creare a bazelor de date

(modelul bazei de date TEB), 96-99 modificarea numelor obiectelor bazelor de date, 108 menţinerea integrităţii referenţiale, 148-149 metadate. Vezi dicţionar de date metode, crearea bazelor de date, 96-99 meniuri

Relationships (Access Database Designer), 112-114 Shape (Visio), 59Tools (Access Database Designer), 112-116

Microsoft Developer NetWork Knowledge Base. Vezi MSDN KB (Microsoft Developer Network Knowledge Base)

Microsoft Office Pro Magazine, 20 model, al bazei de date

baze de date relaţionale, 13 creare, 52-61diagramă „picior de cioară” , 61 ErWin (Computer Associates), 52 normalizare, 71, 73-82TEB (Time Entry and Biliing), 62-66, 84-85,96 VADBE (Visible Analyst Database Engineer), 52 vederea Relationshlps, 51 Visio, 51-52xCase (Resolution), 51-52

modificarelayout-ului formularului, 248 raportul ClientListing, 271

normalizare, الa cincea formă normală, 81-82 a doua formă normală, 73-78 a patra formă normală, 81-82

interogări parametrizate, 232-233 salvarea interogărilor, 227 sortarea m ai m ultor câmpuri, 226

BusinessClient, 242fereastra SQL (Structured Query Language)

clauza As, 198 clauza From, 192-193 clauza Group By, 188-189, 196,202 clauza Having, 206 clauza Join, ا و و clauza O rder By, 202 clauza Where, 204-206,212-214 declaraţia 214-213 ه, ج وا ج؛ declaraţia Insert, 210-211 declaraţia 212 funcţia AvgO, 204 funcţia Count(), 190-191,195 funcţia Sum(), 196-197 funcţii de agregare, 190 funcţiile Min() şi Max(), 205, 211

IndividualClient, 240 lista alfabetică a produselor, 35 lista Current Products, 31-33 multltabel, 35 Products by Category, 37 salvare, 227 structură, 31

Interogări mult؛؛abel,35 interogarea Current Product List, 31-33 interogarea Products By Category, 35,37 interogări avansate, creare, 228-229 introducerea

butoanelor personalizate, 249, 252 coloanelor, 108elementelor rapoartelor, formulare de tip meniu principal, 272-274

introducerea datelor, restricţii (integritate referenţială), 152

instrumente de proiectare, baze de date, 51 instrumente, proiectarea bazei de date, 51 înregistrări, 8,12

orfane, 183 ştergere, 151

nregistrări orfane, 183؛înţelegerea bazelor de date, 8

lansarea programului Access, 20-22 layout, modificarea formularelor, 248 limbaje (SQL)

ANSI (American National Standards Institute), 160

Page 10: Baze de date pentru incepatori (manuale facultate)

306 ANEXE

FieldName, 29 Format, 30 Indexed, 30 !٢١٢٧٠ Mask, 30 la nivel d e râm p , 123

Allow Zero Length, 127-129 Default Value, 138

128-134 ™ ۴٥٢,؛Input Mask, 134-138 Required, 124-128 Validation Rule, 139-140 Validation Text, 141-142

la nivel de rând, 143 Validation Rule, 144 Validation Text, 144-145

R e t ire d , 30 Validation Rule, 30 Validation Text, 30

propriété؛؛ la nivel de câmp, 123 Allow Zero Length, 127-129Default Value, 138Format, 128-134 Input Mask, 134-138 Re؟ u؛red, 124-128 Validation Rule, 139-140 Validation Text, 141-142

Products by Category, 38 proprietăţi la nivel de rând, 143-145

Query Wizardinterogarea BusinessClient, 242 Interogarea IndividualClient, 240

Rrapoarte, 36 raportul CilentListing, 271 raportul Products by Category, 38 rânduri, 8,12RDBMS (Relational Database Management

System), 122 redenumirea câmpurilor (fereastra SQL), 166,198 reguli

baze de date relaţionale, 13-16 Impunerea regulilor de validare a datelor, 122 proprietăţi la nivel de câmp, 122

A llow Zero Length, 127 Default Value, 138 Format, 128-134 Input Mask, 134-138

a treia formă normală, 79-80 baza de date Northwind Traders, 70 bazelor de date, 12 datelor, 12forma normală Boyce-Codd, 71 modelul bazei de date TEB (Time Entry and

Billing), 84-85 prima formă normală, 72-73 tabelelor, 12

nume, obiecte ale bazei de date, 108

O

operaţiuni de creare actualizare şi ştergere, 160ordine de sortare, 225ordine de sortare compusă (SQL), 173-175

p„picior de cioară”

diagrame, 61modelul bazei de date, 59

plctograma Database (Access Database Designer), 104

pictograma bazei de date (Access Database Designer), 104

prima formă normală, 72-73 profesiuni în domeniul bazelor de date, 17-18 profesiuni în domeniul bazelor de date, 17-18 programator de aplicaţii pentru baze de date, 17 proiectarea bazelor de date, 63 proprietatea Allow Zero Length, 30,127-129 proprietatea Caption, 30 proprietatea DataType, 29 proprietatea Default Value, 30,138 proprietatea Description, 30 proprietatea FieldName, 29 proprietatea Field Size, 30 proprietatea Format, 30,128-134 proprietatea Indexed, 30 proprietatea Input Mask, 30,134-13 proprietatea Required, 30,124-128 proprietatea Validation Rule, 30,139-140,144 proprietatea Validation Text, 30,141-145 proprietăţi

Allow Zero Length, 30 Caption, 30 DataType, 29 Default Value, 30 Description, 30 Field Size, 30

Page 11: Baze de date pentru incepatori (manuale facultate)

INDEX 307

xCase (Resolution), 51-52 suprafaţa de proiectare (Visio), 52-53 SQL (Structured Query Language), 160 sortarea după mai multe câmpuri, 226 Structured Query Language. Vezi SQL (Struc­

tured Query Language) structuri

interogări, 31 tabele

Case, 88 Contact, 87-88 Employee, 86 Invoice, 91 TimeEntryDetaii, 90 WorkCategory, 91

ştergerea înregistrărilor, 151 ştergeri în cascadă (restricţii de integritate

referenţială), 150,153 ştergeri restricţionate (integritate referenţială), 151 ştergeri restricţionate (Integritate referenţială), 152

tabel părinte, 23 tabele, 8,26

caseta de dialog New Table, 106-107 Client, 86combinare (SQL), 176 Contact, 87-88 copil, 23 Court, 89 creare, 106de rezolvare a relaţiilor mulţi la mulţi, 85definire, 12Department, 86Employee, 85-86EmployeeClass, 86interogări multitabel, 35Invoice, 91joncţiune, 24normalizare, 12părinte, 23proprietatea FieldName, 29 relaţii

Access Database Relationship Builder, 114 creare, 112-114

returnarea datelor (SQL),179-181 rânduri, 12 salvare, 107vizualizarea Table Datalist, 39 TimeEntryDetaii, 89-91

proprietăţi la nivel de câmp, 123 Required, 124-128 Validation Rule, 139-140 Validation Text, 141-142

proprietăţi la nivel de rând, 143 Validation Rule, 144 Validation Text, 144-145

Relational Model ه ا Data ٠٥٢ Large Shared Data Banks, A(Codd, E. F.), 13

relaţiiAccess Database Relationship Builder, 114 baza de date TEB (Time Entry and Billing), 62-63 baze de date, 22-24 creare, 112-114

mulţi la mulţi, 23-25 simboluri, 56 unu la mulţi, 23 ,112 unu la unu, 23 vederi, 22

reiaţii unu la mulţi, 23,112 relaţii unu la unu, 23 relaţii mu>ţi la mulţi, 23-25 Report Wizard, 267.269 restricţii (integritate referenţială), 150,153-154 rezultate, limitare (SQL), 181 Row Source (tab-ui Lookup), 41 Row Source Type (tab-ul Lookup), 40

salvareainterogărilor, 227 tabelelor, 107

simboluriDesign Symbol Toolbox (Visio), 54-56 relaţii, 56

sisteme de administrare a bazelor de date relaţionale. Vezi RDBMS (Relaţional Database Management System)

sistem de administrare a bazelor de date. Vezi DBMS site-ul web Microsoft Knowledge Base, 20 site-ul web MSDN KB (Microsoft Developer

NetWork Knowledge Base), 105 site-uri web

Access, 20ErWin (Computer Associates), 52 Microsoft Knowledge Base, 20 MSDN KB (Microsoft Developer NetWork Knowledge Base), 105VADBE (Visible Analyst Database Engineer), 52 Visio, 51

Page 12: Baze de date pentru incepatori (manuale facultate)

308 ANEXE

uniuni interne (SQL), 177-178uniuni la dreapta (SQL), 182-184Update Foreign Keys, 59utilizarea bazelor de date, 9-10VADBE (Visible Analyst Database Engineer), 52validare. Vezi regulivalori nule, 14vizualizarea Relationships, 51 vizualizări, 15

Dataiist, 27, 30, 37Datasheet (Access Database Designer), 27,106,151 Design (Access Database Designer), 27,106-107

formularul Products, 41 raportul Products by Category, 38

Print Preview, 38 relaţie, 22 Relationships, 51 Table Dataiist, 39

Visible Analyst Database Engineer. Vezi VADBE (Visible Analyst Database Engineer)

Visio, 51-52caseta de instrumente Design Symbol, 55-56 Create Database Wizard, 60, 96-97 Design Surface, 52-53 Designer, 52-53 fişiere cu diagrame, 97 Map Database Wizard, 61 meniul Shape, 59 site-ul Visio, 51

vizualizarea Dataiist, 27,30,37 vizualizarea Datasheet, 27,106,151 vizualizarea Design, 27

formularul Products, 41 raportul Products by Category, 38

vizualizarea Design (Access Database Designer),

vizualizarea Print Preview (raportul Products by Category), 38

vizualizarea Table Dataiist, 39

xCase (Resolution), 51-52

vederea Relationshlps, 51 vederi, 15WorkCategory, 90-91

tabele copil, 23 tabele de joncţiune, 24 tabele resolver (mulţi la mulţi), 85 tabelul Case, 88 tabelul Client, 86 tabelul Contact, 87-88 tabelul Court, 89 tabelul TimeEntryDetail, 89-91 tabelul Department, 86 tabelul Employee, 85-86 tabelul EmployeeClass, 86 tabelul Invoice, 91 tabelul WorkCategory, 90-91 Table Designer (tab-ul Lookup), 40 Table Wizard (Access Database Designer), 106 tab-ul Attributes, 56tab-ul Databases (Access Database Designer), 103 tab-ul General, 56,103-104 tab-ul Lookup, 28,40-41

; ؛6 »!, ، ، ,“Databases (Access Database Designer), 103 General, 56General (Access Database Designer), 103-104 Lookup, 28, 40-41

tasta F2, evidenţierea textului, 63

editare, 63 evidenţiere, 63

text evidenţiat, 63 tipul de date AutoNumber, 29 tipul de date Currency, 29 tipul de date Date/Time, 29 tipul de date Memo, 29 tipul de date Number, 29 tipul de date Yes/No, 29 tipul de date Text, 29

Unicode Compression, 30 uniuni (SQL)

complet externe, 182-184 declaraţii, 176 externe la stânga, 180-181 interne, 177-178 ia dreapta, 182-184

uniuni complet externe (SQL), 182-184 uniuni externe la stânga (SQL), 180-181

Page 13: Baze de date pentru incepatori (manuale facultate)

vi

Despre autorJohn V. Petersen este preşedintele şi fondato ru l firm e i de ap lica ţii software ş i design p e n tru baze de date M a in Line Software, Inc., cu sed iu l în Pennsylvania. P latform ele pe care lucrează MLSI s u n t V isu a l FoxPro, V is u a l Basic, Access, SQL Server şi noua p la tfo rm ă de la M icrosoft, V is u a l S tudio.NET.Jo h n a o b ţin u t u n M BA la Haub School o f Business în cad ru l St. Joseph’s U n ive rs iţy în 1993. în prezent, J o h n este 2L la Rutgers U n ive rs ity School o f Law. J o h n a s u s ţin u t confe rin ţe la m u lte evenim ente d in dom eniu , p r in tre care M icroso ft Developer Days şi M icroso ft Tech-Ed. Este a u to ru l m a i m u lto r c ă rţi ş i a rtico le în dom en iu şi a l m a i m u lto r dezvo ltări de a p lica ţii ş i pro iecte de baze de date. E l a p r im it în a n u l 1996 p re m iu l M ost V a luab le Professional (cel m a i va loros profesion ist), aco rda t de M icrosoft.

DedicaţieF iilo r m ei, K a rl ş i Keith . S u n t m â n d ru de to t ceea ce face ţi ş i ş t iu că ve ţi rea liza am ândo i lu c ru r i grozave. V ă iubesc foarte m u lt. Soţie i mele, Evelyn. î ţ i m u lţum esc d in nou p e n tru toa tă dragostea ş i to t s p r ij in u l pe care m i le -a i d ă ru it de-a lu n g u l an ilo r, m a i ales acum , în perspectiva u n u i nou începu t a l m eu în carie ra ju r id ic ă .

Mulţumiriî i m u lţu m e sc în p r im u l rând lu i Jenny W atson p e n tru că m i-a p ropus acest p ro iect. In iţ ia l, acesta a avu t o m u lţim e de în c e p u tu ri ş i o p r ir i d in cauza p ro g ra m u lu i m eu încărcat. Jenny a c rezu t în două lu c ru r i: în p ro iec t ş i în fa p tu l că î l vo i rea liza eu. î ţ i m u lţum esc , Jenny, p e n tru răbdare ş i a ju to r!U n a u to r este foarte norocos când lucrează cu u n ed ito r de dezvoltare p recum M aureen M cD anie l. O ri de câte o ri am avu t o în trebare sau m ă preocupa ceva, M aureen a fost m ereu aproape, gata să-m i dea răspunsu l corect ş i în d ru m ă rile necesare. î ţ i m u lţum esc, M aureen, p e n tru că da ­to r ită ţie acest p ro iec t a devenit am zant şi p lin de sa tis fac ţii.A m avu t ş i p r iv ile g iu l să m ă b u c u r de p rie ten ia ş i a ju to ru l lu i J im B ooth ş i am fost în câ n ta t că a acceptat să fie e d ito ru l tehn ic a l acestei cărţi. J im este u n u l d in tre cei m a i in te lig e n ţi oam eni pe care î i cunosc, ia r cartea a bene fic ia t d in p lin de experienţa, în ţe lepc iunea şi a ju to ru l lu i. A scrie o carte este u n lu c ru im p o rta n t. Necesită m u lt tim p şi, în tr-o a n u m ită m ăsură , sacrific ii. în tim p ce am scris această carte, în afară

Page 14: Baze de date pentru incepatori (manuale facultate)

v ii

de fa p tu l că tre b u ia să ţ in pasu l cu cei do i f i i a i m ei foarte activ i, să-m i văd so ţia când şi când ş i să conduc o firm ă de con su lta n ţă software, am u t il iz a t p u ţ in u l tim p lib e r pe care î l aveam p e n tru a s tu d ia d re p tu l la Rutgers U n ive rs ity School o f Law - camden. P entru că am p u tu t să ţ in pasu l cu aceste ob liga ţii, trebu ie să m u lţum esc: m a i în tâ i colegei mele de fa c u lta te S tephan ie Meade, f iin d c ă m -a to t b ă tu t la cap să -m i îndeplinesc înda to rir ile legate de facultate, apoi profesoarei Beth H illm an, fiin d că a „s u fla t v ia ţă ” asup ra C o n s titu ţie i SUA ş i m i-a deschis o ch ii asup ra p r in c ip iilo r pe care le apără SUA p r in s is te m u l lo r leg is la tiv , în c u ra jă r ile voastre au fă cu t ca în toa rce rile mele de la facu lta te la ora 22:30 să fie m u lt m a i suportabile . în al tre ilea rând, trebu ie să m u lţum esc p ro fe so ru lu i m eu de corespondenţă o fic ia lă , B ria n Foley, p e n tru că d a to r ită lu i am deven it u n s c r iito r m a i bun . în s fâ rs it. î i m u lţum esc ce lu i m a i b u n p rie ten a l m eu, Rod Paddock. N u po t exprim a p r in cuv in te ce m u lt au în se m n a t p r ie te n ia şi s p r i j in u l tă u de-a lu n g u l a n ilo r. R ăm ânând fide l filozofie i tale, „m a i p u ţ in înseam nă m a i m u lt” , cred că asta e to t ce trebu ie să spun.

Spuneţi-ne părerea dumneavoastră!în ca lita te de c it ito r a l că rţii, dumneavoastră su n te ţi cel m a i im p o rta n t c r it ic şi com enta to r a l ei. V ă p re ţu im op in iile ş i d o rim să ş tim ce e bine, ce a ţi d o ri să m a i pub licăm , cu alte cuv in te do rim să ne îm p ă rtă ş iţi cât de poate de m u lt d in experienţa dum neavoastră.Ca ed ito r asocia t la Que, m ă b u c u r de orice com entarii. P u te ţi expedia u n fax, u n e -m a il sau îm i p u te ţi scrie c h ia r m ie p e n tru a m ă in fo rm a ce v -a p lă c u t ş i ce n u la această carte - p recum ş i ce aş pu tea face p e n tru a o îm b u n ă tă ţi.Vă rog să nu uitaţi că nu vă pot ajuta în privinţa problemelor tehnice legate de subiectul cărţii, şi asta din cauza volumului imens de mesaje pe care le primesc, motiv care mă face şi să nu pot răspunde tuturor acestor mesaje. A tu n c i când îm i scrie ţi, n u u ita ţ i să num ele ş i a u to ru l c ă rţii la care vă re fe riţi, d a r şi num ele, adresa ş i te le fonu l sau fa xu l dum neavoastră. V o i c it i cu a ten ţie toate com enta riile şi le vo i face cunoscu te a u to r ilo r şi e d ito r ilo r care au lu c ra t la că rţile respective.Fax: 317-581-4666E -m a il: feedback@ quepublishing.comAdresa: Dean M ille r

E d ito r asociat

201 W est 103rd S treetInd ianapo lis , IN 46290 USA

Page 15: Baze de date pentru incepatori (manuale facultate)

INTRODUCERECredeţi sau n u , p ia ţa n u oferă prea m u lt u n e i persoane care doreşte o carte fundam en ta lă ş i uşo r de c it i t despre baze de date. Când m i-a fost p ropus acest p ro iec t m i-a m spus: „Trebuie să existe o m u lţim e de c ă rţi pe p ia ţă care exp lică n o ţiu n ile fundam en ta le ale bazelor de date p e n tru începă to ri.” Spre su rp rinde rea mea, am găsit foarte p u ţin e şi a tu n c i m i-a m da t seama că această carte trebu ie scrisă.

Partea cea m a i grea în orice m uncă este să începi. D upă ce a i p o rn it pe u n d rum , şi, poate, cel m a i im p o rta n t lu c ru este să fie d ru m u l cel bun , re s tu l este uşor. S copu l acestei c ă rţi este de a vă o rien ta în d ire c ţia corectă când vă începeţi d ru m u l în lum ea tehno log ie i bazelor de date.

D o rin ţa a u to ru lu i a fost să realizeze o carte agnostică, n u în m od special destina tă u n u i p rogram anum e p e n tru baze de date. Deşi exemplele date se folosesc de Access, conceptele bazelor de date prezentate se ap lică o ricăre i baze de date re la ţiona le . De ce am ales Access ca p la tfo rm ă p e n tru prezen­tarea conceptelor? D in două m otive. In p r im u l rând , Access este de departe s is tem u l p en ru baze de date personale cel m a i uşo r de u tiliz a t ş i învă ţa t. Apoi s u n t şanse foarte m a ri să aveţi M icroso ft Office. în consecinţă, p robab il că d e ţin e ţi deja o vers iune de M icroso ft Access. Deşi Access 2000 a fost fo los it p e n tru rea lizarea acestei că rţi, a lte ve rs iu n i (Access 97, sau u lt im a vers iune, Access XP) a r tre b u i să funcţioneze la fel de b ine.

Cui i se adresează cartea?Această carte le este destina tă celor care au a u z it de baze de date da r n u ş tiu ce s u n t acestea, ce co n ţin sau cum să le constru iască . Este scrisă p e n tru a a ju ta orice persoană care trebu ie să lucreze p r im a oară cu o bază de date. Această necesitate poate f i o obligaţie de serv ic iu sau o d o rin ţă personală de îm b u n ă tă ţire a n iv e lu lu i de a p titu d in i ş i cunoştin ţe . Ind ife ren t de m odu l în care a ţi a juns pe p u n c tu l să vă începeţi d ru m u l în acest dom eniu, dacă s u n te ţi începă to r trebu ie să p o rn iţ i cu pasu l 0, ia r această carte este exact ce vă trebu ie !

Cum este organizată carteaCartea este a lcă tu ită d in c inc i pă rţi. Această s tru c tu ră vă poartă de-a lu n g u l evo lu ţie i concepte lor, analizei, p ro iec tă rii, c o n s tru ir ii şi, în fina l, im p lem en­tă r ii baze lor de date.

Partea I - Baze de date - elemente generaleîna in te de a merge pe două picioare, o ric ine merge de-a buşilea . Ce este o bază de date? Care s u n t t ip u r ile de baze de date ş i cum s u n t ele u tiliza te azi în afaceri? Aceste aspecte ş i m u lte a lte le s u n t explorate în partea I.

Page 16: Baze de date pentru incepatori (manuale facultate)

Partea a ll-a - Proiectarea şi construirea primei baze de dateD upă ce am p rezenta t aspectele teoretice legate de bazele de date, este t im p u l să trecem la treabă. P rim u l pas în cons tru irea un e i baze de date constă în ana liza u n o r prob lem e de afaceri şi pro iectarea u n e i baze de date p e n tru a le rezolva. Partea a l l- a vă călăuzeşte paş ii de la designu l concep- tu a l la cons tru irea efectivă a u n e i baze da date.

Partea a lll-a - întreţinerea bazei de dateD upă ce a ţi co n s tru it baza de date, ea trebuie în tre ţinu tă . Ce anum e m enţine o bază de date în b u n ă stare de funcţiona re? ه bază de date este la fei de b u n ă ca ş i date le pe care le conţine. Partea a I lI-a tra tează conceptele cu a c to r u l cărora vă p u te ţi as igura că în baza de date s u n t stocat¿ n u m a i date valide.

Partea a IV-a - Extragerea informaţiilor din baza de date - introducere în SQLîn acest p u n c t ş t iţ i ce este o bază de date, cum să p ro iec ta ţi, să c o n s tru iţ i şi să în tre ^ n e ţi o bază de date. Partea a rv-a revine la scopu l in iţ ia l: punerea la lu c ru a un e i baze de date. T o tu l începe de la m odu l în care s u n t extrase in fo rm a ţiile d in ea. Această carte explică lim b a ju l bazelor de date: SQL (S truc tu red Q uery Language).

Partea a ٧ -^ - Funcţionarea bazei de date - construirea unei aplicaţii simple pentru baze de date în AccessPartea a V -a pune lu c ru r ile cap la cap, a ră tăndu -vă cum să p rezen ta ţi baza de date u tiliz a to r ilo r fin a li. în tr -u n a n u m it m om ent, oam en ii vo r tre b u i să in te rac ţioneze cu baza dum neavoastră de date. Această p a rte tra tează aspecte p recum fo rm u la re le p e n tru in troducerea da te lo r ş i rapoarte le în con tex tu l un e i a p lic a ţii s im ple p e n tru baze de date d in Access.

Convenţii utilizate în această cartes tru c tu ra este concepută pe n tru a vă a ju ta să în ţe legeţi ş i să vă în s u ş iţ i cât m a i m u lte in fo rm a ţii. La în ce p u tu l fie că ru i cap ito l ve ţi găsi u n rezum at, sub fo rm a u n e i lis te con ţinân d subiecte le tra ta te în el.

în p lus , ve ţi găsi m a i m u lte p ictogram e de-a lu n g u l că rţii. Ele vă a trag a ten ţia spre in fo rm a ţii m a i deta lia te , s fa tu r i spre a vă face m unca m ai p roductivă sau a te n ţ io n a i pen tru a vă a ju ta să ev ita ţi potenţia le le probleme. Ia tă care s u n t aceste p ictogram e:

Page 17: Baze de date pentru incepatori (manuale facultate)

INTRODUCERE 3

Notele oferă informaţii suplimentare despre subiectul tratat într-o anumită secţiune. Puteţi sări peste eie, învăţând numai conceptele cheie prezen­tate.

Indiciile vă oferă o imagine asupra „a ceea ce se întâmplă aici” . învăţând o parte din informaţiile de fundal despre o anumită sarcină, veţi înţelege mai bine conceptul prezentat. Indiciile vor face şi ca eforturile dumnea­voastră de dezvoltare să fie mai uşoare si mai eficiente.

Atenţionările sunt menite să salveze situatia! în orice mediu de dezvoltare a aplicaţiilor sunt 100 de lucruri care ar putea merge prost. Mai ales în situatiile în care ati putea ajunge să munciţi foarte mult si să vă îndepărtat¡ de „calea cea dreaptă” , veţi găsi o atenţionare care vă ajută să evitaţi acest lucru.

Page 18: Baze de date pentru incepatori (manuale facultate)

BAZE DE DATE -ELEMENTEGENERALE

Page 19: Baze de date pentru incepatori (manuale facultate)

٠»

INTRODUCERE ÎN BAZELE DE DATEin acest capitol:• Ce este o bază de date?

Cum s u n t u tiliz a te bazele de dateSisteme tip ice de m anagem ent al bazelor de date u tiliza te azi Term eni cheie în bazele de date M odelu l re la ţiona l: prezentare generală P ro fesiun i în dom eniu

S> Rezum at

Page 20: Baze de date pentru incepatori (manuale facultate)

PARTEA I - BAZE DE DATE - ELEMENTE GENERALE

„Drumul de 1000 de li începe cu primul li.”

-V e c h i proverb chinez

C ap ito lu l tratează elementele esenţiale ale bazelor de date re la ţionale , m odu l lo r de u tiliz a re şi te rm e n ii cheie. E x is tă m a i m u lte t ip u r i de baze de date, p recum reţea, ie ra rh ice ş i o rien ta te obiect. S ub iec tu l de in te res în această carte î l rep rez in tă bazele de date re la ţiona le , care su n t, de departe, t ip u l cel m a i p o p u la r de baze de date u tiliz a t astăzi. C a rac te ris tic ile acestu i t ip de baze de date s u n t prezentate în decu rsu l acestu i capito l.

Când începeţi s tu d iu l bazelor de date s-a r putea să a fla ţi că, deşi tehnolog ia a fă cu t bazele de date m a i pu te rn ice ca oricând, în esenţă, acestea există de m a i m u lt t im p decât com puterele . Acest lu c ru s -a r pu tea să vă su rp rin d ă , da r după ce ve ţi înţelege ce s u n t de fap t bazele de date, ve ţi înţelege ş i de ce lu c ru r ile stau astfel. în tru c â t a ţi ales această carte, vo i presupune că s tu d iu l bazelor de date este ceva nou p e n tru dum neavoastră ş i că s tu d iu l bazelor de date n u vă este fam ilia r. Cel m a i b u n s fa t pe care vi-1 p o t oferi în acest m om en t este să vă legaţi cen tu ra de s igu ran ţă , să re sp ira ţi adânc, să f i ţ i p re g ă tit să vă d is tra ţ i ş i să în vă ţa ţi m u lte lu c ru r i no i ş i u tile !

Ce este o bază de date?Cele m a i bune d e fin iţ i i s u n t acelea care necesită câ t m a i p u ţin e cuvin te . în cazul bazelor de date, d e fin iţia cea m a i concisă poate f i redusă la u n s in g u r cuvân t: colecţie. O bază de date este o colecţie de date corelate. Cele tre i elemente esenţia le ale un e i baze de date sun t:

■ Tabelele

■ ColoaneleH L in iile (rândurile )

Tabelele, n u m ite ş i entităţi, rep rez in tă elementele de bază ale in fo rm a ţiilo r pe care d o r iţ i să le u rm ă riţ i. Aşa sun t, de exem plu, c lie n ţii u n e i firm e de serv ic ii, com enzile, fa c tu rile p roduse lo r vândute . Rezultă, deci, că o bază de date t ip ică p e n tru o f irm ă conţine tabele p e n tru c lien ţi, com enzi, fa c tu ri.

Coloanele, n u m ite ş i câmpuri, rep rez in tă a tribu te le u n u i tabel. C onsidera ţi ta b e lu l cu c lie n ţii u n e i firm e. C um a ţi descrie o en tita te c lien t? A tr ib u te p recum num ele prenum ele , adresa, oraşu l, codu l poşta l, te le fonu l etc. s u n t in fo rm a ţii care trebu ie stocate.

Liniile (rândurile), n u m ite ş i înregistrări, rep rez in tă datele p ropriu -z ise . în t im p ce câm purile descriu ce tip de date s u n t stocate, în lin iile tabe le i s u n t stocate datele.

Sistemele m odem e de m anagem ent al bazelor de date adm in istrează ansam ­b lu l de tabele, l in i i ş i coloane. C uvân tu l moderne d in p ropoz iţia an te rioa ră sugerează că au ex is ta t sau există baze de date nem odem e? R ăspunsu l este a firm a tiv . G ând iţi-vă la b ib lio ra ftu r ile cu fa c tu r i d in depa rtam e n tu l de con tab ilita te a firm e i dum neavoastră . Acestea po t f i considerate ca n işte

Page 21: Baze de date pentru incepatori (manuale facultate)

C A P IT O L U L 1 INTRODUCERE ÎN BAZELE DE DATE

tabele, în care câm purile de date d in fa c tu ra o b işn u ită p o t f i considerate coloane, ia r fiecare fa c tu ră poate f i consideată u n râ n d a l ta b e lu lu i. De asemenea, gând iţi-vă la vech iu l s istem cu fişe de catalog pe care b ib lio tec ile îl u t iliz a u {în R om ânia este încă u t il iz a t în m u lte b ib lio te c i -n .t.) . F iecare fişă con ţine aceleaşi elemente: t i t lu l că rţii, a u to ru l, a n u l apa riţie i, ed itu ra etc. Este u şo r de văzu t că fişele form ează tabe lu l, elementele co n ţin u te de :iacare fişă s u n t coloanele ş i fiecare fişă este o lin ie de date.

D ife ren ţa esenţia lă în tre bazele de date m odem e şi „s tră m o ş ii” lo r baza ţi pe docum ente este pos ib ilita te a de regăsire a date lor. în tr -u n s is tem m odern de baze de date, găsirea tu tu ro r că rţilo r pub lica te în a n u l 2000 este s im plă : scrie ţi o in terogare, p unân d com pu te ru lu i o întrebare. S u n t şanse să p r im iţ i răsp u n su l în m a i p u ţ in de o secundă. în sistem ele vechi, bazate pe docu­mente, acest lu c ru a r f i d u ra t câteva m inu te , câteva ore sau poate câteva zile.

în esenţă, tabelele, coloanele ş i lin iile s u n t „cărăm iz ile ” p e n tru o bază de date re la ţiona lă . A tu n c i când c o n s tru iţ i o bază de date, tabelele, lin iile şi coloanele in te rv in im e d ia t în d iscu ţie . O bază de date p e n tru o f irm ă poate conţine peste 100 de tabele. Fiecare tabe l poate avea u n u l sau 100 de câm puri. N u m ă ru l o p tim a l acestora poate f i de te rm ina t p r in te h n ic i corecte de design, care s u n t d iscu ta te în această carte. Deşi bazele de date s u n t in teresante , m o d u l lo r de u tiliza re este, poate, ş i m a i in te resant.

Utilizarea bazelor de dateDacă s u n te ţi ca m a jo rita tea oam enilor, ş i dum neavoastră p r im iţ i c a n tită ţi im po rtan te de corespondenţă neso lic ita tă (junk maiI). Se pare că im e d ia t ce : fe r iţ i cu iva in fo rm a ţii despre dum neavoastră , începeţi să p r im iţ i astfe l de mesaje - fie pe căile trad iţiona le , fie pe căi e lectronice. Dacă a ţi cu m pă ra t :eva de la f irm a X , v e ţi p r im i in fo rm a ţii ş i despre f irm a Y, care oferă produse şi servic ii asem ănătoare. în trebarea dum neavoastră a r pu tea fi: „De unde au ş t iu t să -m i t r im ită aceste in fo rm a ţii? ” sau „De unde au ş t iu t că am cum părat p ro d u su l respectiv?” .

R ăspunsu l are două aspecte. M a i în tâ i, ex is tă in fo rm a ţii despre dum nea­voastră pe care le -a ţi fu rn iz a t d irec t sau ind irec t. Apoi, firm e le au a s im ila t ؛ ceste in fo rm a ţii în baze de date. O ricând cu m p ă ra ţi ceva fo los ind o carte de cred it, o fe r iţ i cu iva in fo rm a ţii despre dum neavoastră ş i despre oam enii :a dum neavoastră. D um neavoastră p r im iţ i lu n a r u n ra p o rt cup rinzând cum pă ră tu rile lu n i i încheiate. Datele p r iv in d aceste cu m p ă ră tu r i, p recum şi cele ale a lto r m ilioane de in d iv iz i care folosesc c ă rţi de c red it s u n t stocate in baze de date.

5e poate spune că la baza co n s tru c ţie i bazelor de date stă trans fo rm area datelor d ispara te în in fo rm a ţii. In lum ea a facerilo r de azi, ş i m a i ales în — arketing , scopu l bazelor de date este ş i el dub lu . M a i în tâ i, firm e le doresc să ştie despre dum neavoastră câ t m a i m u lt pos ib il. Apoi, în acest fe l a flă ce anum e vă d o riţi. Ş i astfe l reven im la exem plu l an te rio r cu cartea de cred it.

Page 22: Baze de date pentru incepatori (manuale facultate)

10 PARTEA I - BAZE DE DATE - ELEMENTE GENERALE

în acest proces, firm e le îş i po t d irec ţiona e fo rtu rile de m arke ting . Care este re z u lta tu l fina l? Ca şi cosum ator, este m a i p robab il să cu m p ă ra ţi decât să v inde ţi. Ş i cu i trebu ie să m u lţum ească firm e le p e n tru creşterea vânzărilo r? Bazelor de date, desigur!

A ţi cum păra t vreodată ceva de pe Amazon.com? La început, datele au fost u tiliza te inc iden ta l pe s ite -u l Amazon. To tuş i, cu trecerea tim p u lu i, o dată ce s-au a d u n a t datele şi experienţa, datele au devenit o parte in teg ran tă a s ite -u lu i. Azi, când in tra ţ i pe acest site - presupunând, desigur, că v-a ţi abonat - vă s u n t oferite to t fe lu l de sugestii p r iv in d produsele. Am azon s to ­chează datele oferite de cum pără tu rile pe care le -a ţi făcu t în tr-o bază de date şi le u tilizează p e n tru a an tic ipa ce a lte produse a ţi fi in te resa t să cum păra ţi.

Va loarea p red ic tivă a da te lo r este, p robab il, b ene fic iu l cel m a i im p o rta n t al s tocă rii da te lo r în baze de date. C om paniile folosesc bazele de date p e n tru a a fla evo lu ţia a facerilo r ş i a an tic ipa tra iec to ria lo r v iitoare . A na lizând datele, com pan iile po t lu a m ă s u ri corective dacă su n t detectate problem e.

Aspectele prezentate an te rio r n u reprezin tă deloc o lis tă exhaustivă a m o d u ­r ilo r de u tiliz a re a u n e i baze de date. Nu a ţi văzu t decât partea a isbe rgu lu i de deasupra apei. Z iln ic s u n t descoperite no i căi de u tiliza re a date lor. P rin tehno log ia m odernă, bazele de date vă p u n la d ispoziţie m ilioane de bytes (octeţi) s im u lta n sub fo rm ă de in fo rm a ţii. Dacă datele a r tre b u i să fie com pila te m anua l, a r f i nevoie de ore, zile, săp tăm ân i, lu n i sau poate ch ia r ani! Acest bene fic iu este extrem de im p o rta n t, deoarece, a tu n c i când datele a ting o a n u m ită vârstă , valoarea lo r devine egală cu zero.

M u lte sistem e de adm in is tra re a bazelor de date s u n t fo losite azi. Secţiunea urm ă toa re le descrie pe cele m a i populare.

Sisteme tipice de administrare a bazelor de dateM u lte sistem e de ad m in is tra re a bazelor de date s u n t fo losite azi. P rin tre cele m a i popu la re sun t:

11 M icroso ft Access E M ic roso ft SQL Server Si M SDE (M icrosoft D ata Engine)■ Oracle IB ■؛ M DB2

M icroso ft Access este u n u l d in tre cele două program e im p o rta n te p e n tru baze de date oferite de M icrosoft. Access este o p la tfo rm ă p e n tru baze de date o rien ta tă spre reţele şi b irou . Deşi are foarte m u lte fu n c ţii, este lim ita tă a tâ t de can tita tea de date pe care le poate stoca, d a r ş i de n u m ă ru l de u til iz a to r i pe care î i poate servi s im u lta n . în general, d im ensiunea m ax im ă a un e i baze de date în Access este de 2 m ilioane de bytes (2 gigabytes). M arele avanta j pe care î l oferă Access este u ş u r in ţa de u tiliza re . Acesta este m o tivu l p e n tru care am ales Access p e n tru a ilu s tra exemplele d in carte.

Page 23: Baze de date pentru incepatori (manuale facultate)

Pe de a ltă parte , ex istă produse p recum M icroso ft SQL Server, Oracle şi DB2. Aceste sistem e de adm in is tra re a bazelor de date p o t stoca m ilia rde de bytes (terabytes). M a i m u lt, aceste sistem e po t servi m ii de u til iz a to r i s im u lta n . Cele m a i m a ri s ite -u r i ş i a p lica ţii p e n tru baze de date folosesc produse de acest tip . Deoarece această carte îş i p ropune să fie o in troducere în bazele de date, produsele precum SQL Server ş i Oracle î i depăşesc scopul. C it iţ i anexele, p e n tru in fo rm a ţii despre resurse de s tu d iu m a i avansate. Este im p o rta n t să re ţin e ţi că, deşi cartea foloseşte M icroso ft Access p e n tru a ilu s tra func ţiona re a bazelor de date, dum neavoastră ve ţi cunoaşte toate fu n c ţiile acestora. S copu l acestei că rţi este de a vă învă ţa ce s u n t bazele de date ş i cum să le fo los iţi. în esenţă, toate bazele de date funcţionează după aceleaşi p r in c ip ii teoretice. D upă ce ve ţi cunoaşte elem entele de bază p re ­zentate în carte, vă va f i re la tiv uşo r să faceţi tra n s fe ru l de cunos tin te la p la tfo rm e m a i avansate, p recum SQL Server, Oracle, sau DB2.

Până acum , aceste p la tfo rm e au fost denum ite sistem e de ad m in is tra re a bezelor de date (database management system - DBMS). M a i precis ele s u n t sistem e de a d m in is tra re a bazelor de date re la ţiona le . C o n s tru c ţia tu tu ro r s is tem elor m en ţiona te are la bază m ode lu l re la ţiona l. înţelegerea bazelor de date are la bază două etape im portan te : cunoaşterea câtorva te rm en i de bază ş i înţelegerea p r in c ip iilo r cheie ale m o d e lu lu i re la ţiona l. Aceste etape fac ob iec tu l u rm ă to a re lo r două secţiun i.

Termeni cheie în bazele de dateU n g losar com ple t cu te rm en i d in bazele de date poate f i găsit în anexa C a acestei că rţi. C u r is c u l redundan ţe i, este cel m a i b ine să vă fa m ilia r iza ţi cu cei m a i o b iş n u iţ i ş i m a i im p o rta n ţi te rm en i pe care n u î i ve ţi în tâ ln i n u m a i în această carte, c i în orice ac tiv ita te care are legă tu ră cu bazele de date pe care o ve ţi desfăşura.

Bază de dateO bază de date a fost de fin ită an te rio r în acest cap ito l ca f iin d o colecţie de elemente în ru d ite de date. M a i precis, o bază de date este o colecţie de tabele sau e n tită ţ i în ru d ite de date. De exem plu o bază de date o b işn u ită p e n tru o firm ă a r pu tea f i a lcă tu ită d in tabelele: c lien t, com anda, p ro d u su l com andat. Toate aceste tabele s u n t în ru d ite u n u l cu a ltu l în tr -u n a n u m it mod. In acest exem plu, c lie n ţii dau comenzi, ia r com enzile co n ţin produse. C h ia r dacă fiecare tabe l este separat, ele a lcă tu iesc îm preună baza de date.

Tabele şi entităţiU n tabe l rep rez in tă „ceva” despre firm ă . Tabelele s u n t n u m ite ş i e n tită ţi. Dacă d o r iţ i să găs iţi sau să s toca ţi in fo rm a ţii despre ceva, s u n t şanse ca acel ceva să fî fos t d e fin it ca tabel. U n u l d in tre p r im ii paş i în cons tru irea une i baze de date p resupune de fin irea tabe le lo r d in care este fo rm ată .

CAPITOLUL 1 INTRODUCERE ÎN BAZELE DE DATE 11

Page 24: Baze de date pentru incepatori (manuale facultate)

12 PARTEA I ■ BAZE DE DATE - ELEMENTE GENERALE

Câmpuri, coloane şi atributeAşa cu m o bază de date este a lcă tu ită d in tabele, tabelele s u n t fo rm ate d in câm puri. C âm purile s u n t n u m ite coloane sau atribute. In fu n ţie de context, va f i fo los it u n u l sau a ltu l d in tre aceşti te rm eni. N u vă lă sa ţi d e ru ta t de fo losirea m a i m u lto r cuv in te , deoarece câm p, coloană ş i a tr ib u t înseam nă toate acelaşi lu c ru . O b u n ă m etodă de a înţelege ce s u n t câm pu rile este să vă g â n d iţi la ele ca d escrip to ri a i tabele lor. De exem plu, cum a r pu tea f i descrisă en tita tea c lien t? Exem ple p o triv ite de câ m p u ri a r f i num ele de fam ilie , p renum ele , oraşu l, s ta tu l, codu l poşta l, n u m ă ru l de te lefon etc.

NormalizareaCând c rea ţi o bază de date, de fin irea tabe le lo r şi a c â m p u rilo r n u este s u fi­cientă. N u m ă ru l ş i s tru c tu ra op tim ă a tabe le lo r s u n t dete rm ina te p r in tr -u n proces n u m it normalizare. P rocesul de norm alizare p resupune crearea a num eroase tabele m ic i în loc de a crea m a i p u ţin e tabele m ono litice . U n u l d in tre scopurile p rinc ipa le ale no rm a liză rii este reducerea redunda n ţe i da­te lor. S u b ie c tu l n o rm a liză rii este d iscu ta t în ca p ito lu l 4.

Rânduri şi înregistrăriFiecare tabe l d in tr-o bază de date con ţine zero sau m a i m u lte râ n d u ri. R ându rile s u n t n u m ite ş i înregistrări. De exem plu, fiecare c lie n t a l une i firm e are o în reg is tra re separa tă în ta b e lu l cu date despre c lie n ţi. De aceea fiecare com andă a u n u i a n u m it c lie n t rep rez in tă u n rând în ta b e lu l care con ţine date despre comenzi.

Cheie primarăO expresie care iden tifică u n ic o în registrare d in tre toate celelalte se num eşte cheie primară. S ub iec tu l che ilo r şi in d e x u rilo r este tra ta t în ca p ito lu l 3.

Modelul bazei de date relaţionale: prezentare generalăIn a n u l 1970, dr. E. F. Codd, cercetător la IBM , a p u b lica t u n a rtico l in t itu la t A Relaţional Model of Data for Large Shared Data Banks (un model re la ţiona l de date p e n tru bazele de date pa rta ja te de m u lţ i u tiliza to ri). în acest a rtico l, dr. Codd a p ropus o nouă teorie a rep rezentă rii bazelor de date a cărei n a tu ră era în m od esenţia l m atem atică . Teoria a p ropus ş i n o i modele m a te m a tic e p e n t ru acce sa re a ş i m a n ip u la re a u n e i baze de da te . Recunoscând unele d in tre d ificu ltă ţile care po t fi în tâ ln ite , a u to ru l a fo rm u la t regu lile p e n tru norm alizarea un e i baze de date. Aceste regu li s u n t d iscu ta te în ca p ito lu l 4.

în secţiunea anterioară au fost am in tite câteva sisteme „re laţionale” de baze de date d isponib ile azi pe piaţă. Folosirea cuvân tu lu i re la ţiona l în tr-u n astfel de context l-a deranjat pe au toru l artico lu lu i. Preocuparea lu i era confuzia existentă

Page 25: Baze de date pentru incepatori (manuale facultate)

C A P IT O L U L 1 INTRODUCERE ÎN BAZELE DE DATE 13

în tre ideea că datele a r putea f i reprezentate în tabele în ru d ite ş i teoria sa p riv ind bazele de date relaţionale. De aceea, el a creat în an u l 1988 cele 12 reguli faimoase ale teoriei bazelor de date relaţionale. Cele 12 reguli su n t cuprinse în lis ta urm ătoare: a tâ t ca form ulare, dar şi ca explicare a în ţe lesu lu i lor. Unele concepte cu care n u sun te ţi încă fam ilia riza t a r putea f i m enţionate în aceste regu li ş i explicaţii. Unde este posibil, su n t indicate şi tr im ite r i la locurile unde su n t tra ta te aceste subiecte în carte. Iată aceste reguli:

1. Toate in fo rm a ţiile d in tr-o bază de date re la ţiona lă s u n t repre­zentate e xp lic it la n ive l logic şi exact în tr -u n s in g u r m od - p r in v a lo ri în tabele.

Toate datele dintr-o bază de date sunt continute în tabele. Valorile din tabele sunt reprezentate sub formă de coloane (câmpuri).

2. Fiecare e lem ent de date (valoare atom ică) d in tr-o bază de date re la ţio n a lă este logic accesib il ca re zu lta t a l un e i co m b in a ţii în tre num ele ta b e lu lu i, cheia p rim a ră ş i num ele coloanei.

Datele dintr-un tabel nu sunt sub forma unui şir continuu de date, ci datele pot fi accesate precizând coloana din care fac parte. De exemplu, puteţi referi numărul comenzii din tabelul cu comenzi ca orders.ordernumber. cu alte cuvinte, nu este necesar să căutaţi într-un şir de caractere pentru a localiza numărul comenzii. ______ _ _____

3. V a lo rile nu le (diferite de sp a ţiu l necom pleta t sau de u n ş ir de caractere blanc) su n t acceptate în tr-u n DBMS relaţional, pen tru a reprezenta in fo rm a ţiile lipsă ş i s itu a ţiile în care n u po t f i date in fo rm a ţii în m od sistem atic, ind ife ren t de t ip u l datelor.

Valorile nule pot fi la început un concept greu de înţeles. Gândiţi-vă la un câmp gol într-o înregistrare pentru un client. Câmpul este necompletat, sau valoarea sa nu este cunoscută? Valorile nule indică o situaţie în care valoarea este necunoscută, spre deosebire de cazul în care câmpul este necompletat. Gândiţi-vă la valorile nule ca având semnificaţia „Nu ştiu”.

4. Descrierea bazei de date este reprezentată la n ivel logic în acelaşi m od ca p e n tru datele ob işnuite , deci u tiliz a to r ii a u to riza ţi po t să aplice acelaşi lim baj re la ţional pen tru a determ ina s tru c tu rile de date care se aplică pen tru datele obişnuite .

în procesul construirii unei baze de date, veti defini elemente ca tabele, câmpuri, indexuri şi aşa mai departe. Numele tabelelor, câmpurilor, indexu­rilor etc. sunt date care descriu alte date, numite metadate. In lumea bazelor de date, metadatele sunt numite şi dicţionare de date. Dicţiona­rele de date pentru adevăratele baze de date relaţionale sunt stocate în tabele de date similare tabelelor de date pe care le definiţi. Mai mult, acelaşi limbaj pe care îl folosiţi la extragerea datelor din tabelele pe care le proiectaţi poate fi folosit în tabelele pe care sistemul le defineşte pentru stocarea dicţionarelor de date.

Page 26: Baze de date pentru incepatori (manuale facultate)

PARTEA I - BAZE DE DATE - ELEMENTE GENERALE14

5. U n sistem re la ţio n a l acceptă m a i m u lte lim ba je ş i d ife rite m o­d u r i de u tiliza re la te rm ina l. To tuş i, trebu ie să existe cel p u ţ in u n lim ba j în care să fie exprim ate în dec la ra ţii, cu o s in taxă b ine de fin ită , ş iru r ile de caractere ş i care este com prehensiv în acceptarea urm ătoare lo r:

IB D e fin iţ ii ale da te lo r■ D e fin iţ ii ale v izu a liză rilo r

M an ipu la re a date lor

C o n d iţii (restric ţii) de in teg rita teA u to r iză r i

Această regulă se referă la capacitatea unei baze de date de a suporta limbaje care vă permit să lucraţi, să vedeţi, să manipulaţi, să controlaţi accesul si să protejat؛ datele. Desi nu este declarat clar, cel mai popular limbaj pentru a realiza toate aceste sarcini este SQL (Structured Query Language). Detalii despre ce este SQL şi cum poate fi implementat veţi găsi în partea a patra a cărţii.

6. Toate v izua lizările care, în teorie, su n t actua lizab ile po t f i ac tua­liza te de sistem .

Această regulă înseamnă că un DBMS relaţional are încorporată capaci­tatea de a modifica datele. In produse precum SQL Server şi Oracle pot fi stabilite sarcini precum actualizarea datelor şi întreţinerea bazei de date la anumite intervale de timp.

7. C apacitatea de adm in is tra re a un e i re la ţii de bază sau a une ia deriva te ca u n s in g u r operand se ap lică n u n u m a i p e n tru regăsirea date lor, da r ş i p e n tru in troducerea , actua liza rea şi ştergerea date lor.

O vizualizare poate fi considerată ca o fereastră prin care pot fi privite datele şi se poate lucra cu ele. Ea poate fi formată din coloane ale unuia sau mai multor tabele. Deoarece o vizualizare este o entitate unică, alcătuită din unul sau mai multe tabele, este necesară numai o operaţie pentru a regăsi, intro- duce, actualiza sau şterge date din unul sau mai multe tabele simultan.

8. Programele p e n tru a p lica ţii ş i a c tiv ită ţile de la te rm in a l răm ân separate logic o ricând se p roduc m o d ifică ri în reprezentările de stocare sau metodele de acces.

Utilizatorul nu trebuie să aibă cunoştinţe de specialitate în legătură cu locul de stocare fizică a datelor sau cu platforma pe care acestea sunt stocate. Cu alte cuvinte, utilizatorul nu are nevoie să stie dacă datele sunt stocate pe Unix sau pe Windows 2000 Server. în legătură cu locul de stocare a datelor, utilizatorul nu trebuie să cunoască decât numele serverului. Iar serverul se poate afla în camera alăturată sau la 4000 de kilometri distanţă. Acest aspect va fi rezolvat de reţea, nu de utilizator sau de baza de date.

Page 27: Baze de date pentru incepatori (manuale facultate)

15C A P IT O L U L i INTRODUCERE ÎN BAZELE DE DATE

Programele p e n tru a p lica ţii şi a c tiv ită ţile de la te rm in a l răm ân separate logic când s u n t efectuate m od ifică ri de orice fel legate de pă s tra re a in fo rm a ţiilo r , care p e rm it separarea, a su p ra tabe le lo r de bază.

Programelor pentru aplicaţii nu ar trebui să li se solicite să cunoască modificările efectuate asupra structurilor de date. De exemplu, dacă sunt adăugate noi coloane în tabel, programul cu care lucrează acel tabel ar trebui să poată lucra neafectat.

10. R es tric ţiile de in teg rita te specifice un e i anum ite baze de date re la ţio n a le tre b u ie să poa tă f i d e fin ite în t r -u n s u b lim b a j re la ţio n a l ş i s tocab ile în cata log, n u în p ro g ra m u l p e n tru a p lica ţii.

Menţinerea integrităţii datelor este probabil una dintre cele mai importante funcţii într-o bază de date relaţională. Ca să fie relaţional, un sistem de baze de date trebuie să poată să ofere aceste servicii. De aceea, o bază de date nu se poate baza pe programe disparate pentru a menţine integri­tatea datelor. Dacă un câmp poate accepta numai anumite valori sau dacă datele dintr-un tabel nu pot fi şterse în cazul în care există alte date, acest lucru trebuie să poată fi definit într-o bază de date. Partea a treia a cărţii tratează menţinerea integrităţii datelor într-o bază de date.

independenţă d is tr ib u ită [distribution 11؛؛. U n DBM S re la ţiona l ؛ indepedence).

O bază de date care respectă modelul relaţional poate fi divizată sau partitionată de-a lungul mai multor locaţii fizice. în concluzie, o bază de date poate fi găzduită pe mai multe computere într-un mediu cu mai multe servere. Indiferent dacă o bază de date se află pe unul sau mai multe servere, programul sau utilizatorul final nu ar trebui să observe diferenţa.

12. Dacă u n s is tem re la ţiona l are u n lim ba j de n ive l scăzut, acesta ' n u poate f i u til iz a t p e n tru a su b m in a sau trece peste regu lile

de in teg rita te şi re s tr ic ţiile exprim ate în lim b a ju l re la ţio n a l de n ive l îna lt.

Limbajele de nivel scăzut au tendinţa să lucreze la o singură înregistrare o dată, pe când limbajele de nivel înalt sunt bazate pe seturi (pot lucra cu mai multe înregistrări o dată). Regula 12 stabileşte de fapt că limbajele de nivel scăzut şi cele de nivel înalt trebuie să respecte aceleaşi reguli.

în m od iron ic, n ic i u n u l d in tre sistemele de baze de date existente n u respectă toate cele 12 regu li. De aceea, p r in de fin iţie , u n s istem de baze de date care este n u m it re la ţio n a l n u este de fa p t re la ţiona l. S -ar pu tea să spune ţi: „Ş i ce dacă? Acesta este dem onstra ţie a fa p tu lu i că regu lile s u n t făcute p e n tru a fi încă lca te .” Aceasta este o observaţie bună . înţelegerea p o s ib ilită ţilo r şi a m o d u lu i de lu c ru cu o bază de date re la ţiona lă s u n t m u lt m a i im p o rta n te

Page 28: Baze de date pentru incepatori (manuale facultate)

16 PARTEA I - BAZE DE DATE - ELEMENTE GENERALE

decât înţelegerea com p lex ită ţilo r teorie i re laţionale. Deşi scopul acestei că rţi î l rep rez in tă aspectele practice ale bazelor de date, înţelegerea o rig in ilo r m o d e lu lu i bazei de date re la ţiona le poate f i u tilă . De aceea v -am o fe rit prezentarea ce lor 12 re g u li ale Iu i Codd. în anexa E p u te ţi găsi tr im ite r i la că rţile în care exis tă in fo rm a ţii avansate ş i p u te ţi învă ţa m a i m u lte despre teo ria re la ţiona lă .

Cariere în domeniul bazelor de datePoate vă în tre b a ţi: „C u aceste cunoş tin ţe despre bazele de date pe care le vo i ob ţine , ce fe l de s lu jb ă vo i obţine?” . Deoarece a ţi ales această carte, este p robab il să fie adevărate două lu c ru r i:

■ Fap tu l că s tu d ia ţi bazele de date are legătură cu cariera dumneavoastră.■ F a p tu l că s tu d ia ţi bazele de date este exp lica t de m otive personale.

Ind ife ren t dacă in te resu l dum neavoastră pen tru bazele de date este de na tu ră persona lă sau profesiona lă, această carte vă va o fe ri u n p u n c t de po rn ire pe calea cea bună . Poate că înce rca ţi să vă ca lifica ţi în tr-o n o u ă meserie. D ar ch ia r dacă n u că u ta ţi u n a lt serv ic iu , după c itire a că rţii, s -a r pu tea să căpă ta ţi o m a i m are cu rioz ita te p e n tru u n serv ic iu în acest dom eniu . Ia tă o lis tă cu scurte descrie ri ale p o s tu r ilo r d in dom en iu l bazelor de date.

Administrator de baze de dateU n a d m in is tra to r de baze de date (database administrator - DBA) este de obicei cel care adm in is trează in tra re a da te lo r în tr-o firm ă . In m od norm al, acest lu c ru necesită ca m od ifică rile s tru c tu r ilo r de date, stocarea u n o r no i p rocedu ri ş.a.m .d. să fie con tro la te de a d m in is tra to r. Acesta se as igu ră că bazele da date ale firm e i s u n t m e n ţin u te corespunzător şi funcţionează op tim . în tim p , pe m ăsu ră ce o bază de date creşte ş i se m aturizează, im plem entarea cu ren tă a acesteia trebu ie reanalizată. A d m in is tra to ru l bazei de date joacă u n ro l cen tra l în acest proces.

Când este dezvoltată o nouă ap lica ţie pen tru o firm ă, dezvo lta to ru l ap lica ţie i se consu ltă cu a d m in is tra to ru l p e n tru a a fla de ta liile tehn ice ale bazei de date. Deşi dezvo lta to ru l bazei de date a r pu tea do ri să-i aducă o m odificare , p ro b a b il că ş i a lte a p lica ţii folosesc aceeaşi bază de date. A d m in is tra to ru l trebu ie să se asigure că m od ifica rea so lic ita tă de o a n u m ită ap lica ţie este com pa tib ilă cu a lte ap lica ţii. Dacă n u este com patib ilă , a d m in is tra to ru l trebu ie să p ro p u n ă s o lu ţii a lte rnative.

Programator de aplicaţii pentru baze de datePoate că s u n te ţi u n p rog ram ato r cu experienţă, d a r n u a ţi m a i lu c ra t cu date până acum• Cu a b ilită ţile sup lim en ta re p e n tru baze de date în arse­na l, ve ţi f i gata să a taca ţi lum ea în dezvoltare a a p lic a ţiilo r p e n tru baze de date. Spre deosebire de celelalte t ip u r i de a p lica ţii software, ap lica ţiile pen tru baze de date au u n im p a c t d irec t asupra o p e ra ţiu n ilo r un e i firm e.

Page 29: Baze de date pentru incepatori (manuale facultate)

Ca să dezvo lta ţi o ap lica ţie pe n tru baze de date destina tă un e i firm e, trebu ie m a i în tâ i să în ţe lege ţi ac tiv ita tea acesteia. Acest lu c ru este to ta l d ife r it de dezvoltarea u n u i u t i l i ta r care tra tează u n a n u m it aspect a l a c tiv ită ţii firm e i. A p lica ţiile p e n tru baze de date t in d să se ocupe de în treaga ac tiv ita te a u n e i firm e sau de u n în treg segm ent a l acestei ac tiv ită ţi. Dacă aveţi experienţă în dezvoltarea a p lic a ţiilo r bazate pe u tilita re , ap lica ţiile p e n tru baze de date vor aduce la începu t cîteva no i provocări. Aceste no i provocări există deoarece cerin ţe le s u n t altele. O în trebare pe care este p os ib il să o p u n e ţi în acest m om ent este „ în ce m od d ife ră cerin ţe le?” . G ând iti-vă la u rm ă to ru l lu c ru : program ele bazate pe u t il ita re care îndep linesc u n s in g u r scop au te n d in ţa de a f i lim ita te . M odu l în care ele fac astăzi ceva va f i acelaşi s i m âine. Bazele de date, pe de a ltă parte, cresc o da tă cu firm a . M a i m u lt, pe m ăsu ră ce m e d iu l de afaceri se schim bă, cerin ţe le une i a p lica ţii p e n tru baze de date se sch im bă ş i ele. Necesitatea de a regăsi n o i in fo rm a ţii, so lic ita rea u n o r no i rapoarte etc. (în tr-o m ăsură m a i m ică sau m a i mare) necesită m od ifică ri asupra s tru c tu r ii bazei de date. S-a m a i spus că o ap lica ţie p e n tru baze de date n u este n ic ioda tă te rm ina tă , deoarece o firm ă se sch im bă în con tinuu .

Analist pentru baze de datePoate că n u d o r iţ i să dezvolta ţi program e, c i m a i degrabă su n te ţi o persoană care înţelege b ine firm a ş i datele legate de aceasta. U n pos t cheie în acest am algam este cel de a n a lis t a l bazei de date. A n a liş tii s u n t p la n ifica to ri cheie în designu l une i baze de date. Este im po rtan t de observat că dezvoltarea a p lic a ţiilo r ş i p ro iecta rea lo r s u n t lu c ru r i d ife rite . P rim u l ş i cel m a i im p o r­ta n t pas în dezvoltarea un e i a p lica ţii p e n tru baze de date este pro iectarea ei. Nu se poate face n im ic altceva îna in te de acest pas.

Rezumatîn acest cap ito l au fost prezentate elementele de bază despre bazele de date. Să recap ituăm : o bază de date este o colecţie de e n tită ţ i în ru d ite . Aceste e n tită ţi, n u m ite ş i tabele, s u n t a lcă tu ite d in câm puri, care m a i s u n t n u m ite ş i a tr ib u te . U n tabe l poate con ţine zero sau m a i m u lte râ n d u r i de date.

Ceea ce este o bază de date d in p u n c t de vedere tehn ic n u este n ic i pe departe a tâ t de in te resan t ca lu c ru r ile pe care le poate face aceasta. Datele su n t sângele d ă tă to r de v ia ţă a l un e i firm e. Toate lu c ru r ile pe care o f irm ă doreşte să le ştie po t f i înm agazinate în date. P entru a înţelege ac tiv ita tea un e i firm e tre b u ie m a i în tâ i să în ţe legeţi datele despre ea. In d ife re n t dacă datele s u n t s u p o rtu l u n e i cam pan ii de m a rke tin g sau a l se rv ic iilo r p e n tru c lien ţi, datele joacă u n ro l im po rtan t.

Azi, cele m a l popu la re baze de date u tiliza te în firm e au la bază m odelu l re la ţiona l dezvoltat de dr. E. F. Codd. C h ia r dacă denum irea sistem de admi­nistrare a bazelor de date relaţionale (relaţional database management sys- tem) este cuprinzătoare, n ic i u n astfe l de sistem a fla t azi pe p ia ţă n u respectă toate cele 12 re g u li ale lu i Codd. D is tin c ţia poate f i de n a tu ră sem antică,

CAPITOLUL 1 INTRODUCERE ÎN BAZELE DE DATE 17

Page 30: Baze de date pentru incepatori (manuale facultate)

18 PARTEA I - BAZE DE DATE - ELEMENTE GENERALE

dar este to tu ş i u t i lă p e n tru a înţelege fu n d a m e n tu l pe care s u n t con s tru ite bazele de date re la ţionale .

în tru c â t bazele de date s u n t sângele dă tă to r de v ia ţă a l u n e i firm e, există m u lte cariere in te resante asociate bazelor de date. T re i d in tre acestea - a d m in is tra to r a l bazei de date, p rogam ato r de a p lica ţii p e n tru baze de date ş i a n a lis t a l bazei de date - au fost decrise pe s c u rt în acest capito l.

Acum , că ş t iţ i în m are ce este o bază de date, su n te ţi gata p e n tru pasu l u rm ă to r: vă ve ţi „m u rd ă r i” m â in ile p ro iectând ş i co n s tru in d p r im a bază de date.

Page 31: Baze de date pentru incepatori (manuale facultate)

ANATOMIA UNEI BAZE DE DATE

în acest capitol:■ O in troduce re în M icroso ft Access■ Baza de date N o rth w in d Traders■ Rezum at

Page 32: Baze de date pentru incepatori (manuale facultate)

20 PARTEA I - BAZE DE DATE • ELEMENTE GENERALE

C a p ito lu l 1 a fos t ded ica t aspectelor teoretice despre bazele de date. Acest cap ito l ş i celelalte ale acestei p ă rţi au ca subiect aspectele practice ale bazelor de date. Bazele de date s u n t e n tită ţi tang ib ile , pe care le p u te ţi vedea ş i cu care p u te ţi luc ra . Deşi teo ria este im p o rta n tă şi u tilă , n u există m etodă m a i b u n ă de învă ţare decât exam inarea une i baze de date reale, inspectarea c o n ţin u tu lu i ei ş i înţelegerea m o d u lu i în care a fost cons tru ită .

Acest cap ito l exam inează baza de date N o rthw ind Traders, care este liv ra tă îm preună cu M icroso ft Access. P entru a exploata la m ax im acest cap ito l şi re s tu l că rţii, a r tre b u i să aveţi p rog ram u l Access in s ta la t pe com pu te ru l dum neavoastră . V ă rugăm să revedeţi cerin ţe le p riv itoa re la software d in secţiunea in tro d u c tiv ă p e n tru de ta lii despre m o d u l în care p u te ţi ob ţine şi in s ta la Access.

Acest ca p ito l n u îş i p ropune să fie o trecere în rev is tă cuprinză toa re a în tre g u lu i p rogram Access. M a i cu rând, scopu l ca p ito lu lu i este de a f i u n gh id ra p id despre func ţiona rea p ro g ra m u lu i Access ş i de a vă învă ţa să f i ţ i p ro d u c tiv în acest m ediu de lu c ru . M u lte d in tre sursele de s tu d iu d ispon ib ile azi vă po t învă ţa toate am ănunte le despre M icroso ft Access.

îna in te de a merge m a i departe, a r tre b u i să vă as ig u ra ţi că a ţi în ţe les b ine cele d iscu ta te în acest capito l.

Câteva dintre resursele populare de unde puteti afla informaţii despre Microsoft Access sunt:

H S ite -u l o fic ia l al M icroso ft Access,h t t p : / /w w w .m ic ro s o f t . c o m /o f f i c e . access

■ G ru p u l de d is c u ţii o fic ia l p e n tru su p o rt Access la adresa h t t p : /c o m m u n it ie s .m ic r o s o f t . com /new sg rou ps / d e f a u l t . a s p ? ic p = g s s & s lc id = u s

■ S ite -u l o fic ia l M icroso ft Knowledge Base, la h t t p : / /w w w .m ic ro s o f t . com /KB/

Introducere în Microsoft AccessAccess, care face parte d in s u ita M icroso ft Office, este u n p rodus com plet p e n tru baze de date. In a fară de fa p tu l că este com plet, este foarte u şo r de u tiliz a t. P r im u l pas în acest proces este lansarea lu i. F igu ra 2.1 ilus trează o p ţiu n ile d in m en iu necesare p e n tru lansare.

D upă lansarea p ro g ra m u lu i Access, ve ţi vedea o casetă de d ia log care vă in v ită să crea ţi o nouă bază de date, să la n sa ţi u n w iza rd d in Access, sau să desch ide ţi o bază de date exis tentă (vedeţi fig u ra 2.2).

Page 33: Baze de date pentru incepatori (manuale facultate)

21

Puteţi lansa Access selectând Start, Programs, M icrosoft Access d in m en iu l principa l.

ا? ا*Create ة new datábase using-

و ر ٢ Biank Access database

مأم | c Access database w izard pages, and projects

٢١ an existing file

I 0K I Cancel I

FIGURA 2.2După lansarea program ulu i Access apare caseta de dialog in iţia lă , care vă perm ite să creaţi sau să deschideţi o bază de date.

în acest caz, ve ţi deschide u n fiş ie r ex is ten t executând c lic pe op ţiunea corespunzătoare, apoi pe OK. Apoi, desch ide ţi f iş ie ru l \ P rogram F i Ie s \ M ic r o s o f t A c c e s s \O ff ic e \S a m p le s \N o r th w in d .m d b . Extens ia im p lic ită p e n tru u n fiş ie r Access este MDB.

My Document؛؛أ

ؤ ق Accessories

ؤ ق Microsoft Visual studio 6,0

Microsoft Exce) ج و

jw l Microsoft Word

QuickBooksPro ي و

Snaglt ي ؤ

7.0 Microsoft SQL Server ي ؤ

Symantec pcAnywhere إ و ث

4.0 ،Adobe Aaoba ؛وتن

f f l Visio Professional and Tedirtcal

ICQ ؛ قPalm Desktop .ج إ

PocketMirrof ؛ إ ؤ

¡Create databases and programs to track and manage your [information by using Microsoft Access.

Windows Update

New Office Document

Open Office Document

WinZip

Smart Labei

Documents

Settings

Search

Shot Down.

CAPITOLUL 2 ANATOMIA UNEI BAZE DE DATE

FIGURA 2.1

Page 34: Baze de date pentru incepatori (manuale facultate)

PARTEA I - BAZE DE DATE - ELEMENTE GENERALE

D upă ce a i deschis baza de date N o rthw ind Traders, este a fişa t fo rm u la ru l p r in c ip a l a l bazei de date - care oferă acces la toate com ponentele bazei de date - vedeţi fig u ra 2.3.

FIGURA 2.3Caseta de dialog p rinc ipa lă a bazei de date oferă acces la toate componentele bazei de date, in c lus iv tabele, in terogări, form ulare şi rapoarte.

Access vă oferă şi posbiiitatea de a scrie pagini Web, macrocomenzi şi module de cod. Deşi veţi vedea referinţe la acestea în diferite ilustraţii, ele depăşesc scopul acestei cărţi. Pentru mai multe informaţii despre ele, citiţi nota de la începutul capitolului privind sursele populare de informare pentru Access.

lată o recapitulare despre lansarea Microsoft Access:

1. Selectaţi Start, Programs, Microsoft Access.2. Din caseta de dialog iniţială, alegeţi să creaţi sau selectaţi o bază de

date existentă.

Baza de date Northwind TradersF igu ra 2.3 p rez in tă fo rm u la ru l p r in c ip a l p e n tru o bază de date d in Access. D in acest fo rm u la r, p u te ţi vedea d ife rite le obiecte d in baza de date, precum şi datele co n ţin u te de aceasta.

Relaţiile din baza de dateP entru a înţelege scopurile un e i baze de date, va tre b u i să vedeţi re la ţiile d in tre d ife r ite le e n t ită ţ i ale acesteia. F ig u ra 2 .4 p re z in tă v izua lizarea con ţinân d re la ţiile d in tr-o bază de date. P entru a avea acces la această vizualizare, va tre b u i să executaţi clic pe b u to n u l Relationship V iew (prezentai şi el în fig u ra 2.4).

Page 35: Baze de date pentru incepatori (manuale facultate)

23CAPITOLUL 2 ANATOMIA UNEI BAZE DE DATE

e،p Show Me؛nic/H t•}¡

3 Supp،ers¡؛؛ ifi] Create latHe in De ،gn view ig] Create ،able by using wfcard

nterng data؛ ÊJ Create tabie by 13 Categoriei

El !customer;؛0 Emobyees

El Order Detals ¡(3 Orders

El frodxts El Shipper؛

Objects

O ik rll _*JCustomerlD . ErnçtoyeelD •

OiaertJate jjre،t'a،s؛Pe ShţpedOate .

SWpYia Freight

$ttçUnne ShçAdâeiS :

StvpOty çfiepon؛►•

[ta،:o،x؟Po؛Sh

(CnfcrKProductlD،►*Price

IQuantityJC،.scount

(CirJimrllorrcjuyham؛ ContactName

CcrtactTitie : Addr،؛،

C،y _Re،>on

ÍCunpanyNam ICcrtacíName

Certa■•؛؛*:: .Address

|Re on .7.1tsOnOrÓer

EwfayedDNarre؛؛La

FirstName

THeOfCo'jrt،BrthDatírfesOateAddress

C،،egorylD5orvName؛C،t

DescriptionPicture

Cc،npany*íame

Vizualizarea re la ţiilo r vă oferă posib ilita tea de a vedea toate tabelele d in tr-o bază de date, precum si m odul în care sunt acestea '.egate.

FIGURA 2.4

ButonulRelationships

Formularul principal de date ؛al baze

Vizualizarea Relationship

Dacă s tu d ia ţ i d iagram a bazei de date ilu s tra tă în fig u ra 2.4, scopu l bazei de date N o rth w in d T raders devine c lar. Dacă p r iv iţ i d in pa rtea d reap tă a d iagram ei, ta b e lu l C ustom ers (c lien ţi) este conecta t cu ta b e lu l O rders com؛ enzi). Lângă ta b e lu l C ustom ers este n u m ă ru l 1, ia r lângă ta b e lu l O r­ders este s im b o lu l in f in itu lu i, care a ra tă ca u n 8 aşezat pe orizonta lă . O astfel de re la ţie este n u m ită unu la mulţi (one-to-many). Cu alte cuvin te , u n c lie n t poate da zero sau m a i m u lte comenzi. Dacă p r iv iţ i re la ţia în sens invers, o com andă poate fi da tă doar de u n c lien t. în aest caz, ta b e lu l C us­tom ers este cons ide ra t părinte (parent), ia r ta b e lu l O rders este considera t copil (child).

Cele tre i t ip u r i de re la ţii pe care le ve ţi în tâ ln i când lu c ra ţi cu bazele de date su n t urm ătoare le :

Unu la unu (one-to-one) - O în reg is tra re d in ta b e lu l pă rin te este în ru d ită n u m a i cu o înreg istare d in ta b e lu l copil.

■ Unu la m u lţi (one-to -m any) - O în reg is tra re d in ta b e lu l p ă rin te este în ru d ită cu zero sau m a i m u lte în re g is tră ri d in ta b e lu l copil.

■ M u lţi la m u lţi (m any-to -m any) - M a i m u lte în re g is tră r i d in ta b e lu l p ă rin te s u n t în ru d ite cu m a i m u lte în re g is tră r i d in ta b e lu l copil. R e la ţiile de acest t ip s u n t de fap t sparte în m a i m u lte re la ţii u n u la m u lţ i. Acest t ip de re la ţii este exp lica t în no ta u rm ătoare .

Page 36: Baze de date pentru incepatori (manuale facultate)

24 PARTEA I - BAZE DE DATE - ELEMENTE GENERALE

Funcţiona rea re la ţ ii lo r este foarte s im plă . Dacă p r iv iţ i toate tabelele d in fig u ra 2.4, ve ţi observa că unele câ m p u ri s u n t scrise cu lite re îngroşate (bold). C om bina ţia acestor t ip u r i a lcătuieşte cheia p rim ară . Reluând concep­tele d iscu ta te în ca p ito lu l 1, o cheie primară este id e n tif ic a to ru l u n ic a l u n u i rând sau a l u n u i tabel. In cazul ta b e lu lu i C ustom ers, cheia p rim a ră sau id e n tif ica to ru l u n ic este câm pu l C ustom erID (iden tifica to ru l c lien tu lu i). Dacă ve ţi p r iv i la fig u ra 2.7, ve ţi vedea că fiecare râ n d care corespunde u n u i c lie n t are o a ltă va loare în câm pu l C ustom erID . Aceeaşi va loare C ustom erID este p re lu a tă în ta b e lu l O rders. Ia tă cum o bază de date ştie care în reg is tra re cop il aparţine une i anum ite în re g is tră ri pă rin te .

C on tin u â n d să vă dep lasa ţi spre stânga în fig u ra 2.4, ve ţi vedea că ta b e lu l Orders este şi cop il ş i părin te . Este cop il p en tru tabe lu l C ustom ers ş i pă rin te p e n tru ta b e lu l O rder D éta ils ( in fo rm a ţii p r iv in d com anda). D in perspectiva ta b e lu lu i C ustom ers, ta b e lu l O rder D éta ils este nepot.

P ropoz iţiile u rm ă to a re s in te tizează re la ţiile c o n ţin u te în baza de date N o rth w in d Traders:

■ U n c lie n t poate em ite zero sau m a i m u lte comenzi, ia r o com andă poate f i em isă n u m a i de u n c lien t.

■ U n cărăuş (transportator) poate transporta una sau m a i m u lte comenzi, d a r o com andă poate f i tra n sp o rta tă de u n s in g u r cărăuş.

11 U n anga ja t poate p re lu a zero sau m a i m u lte comenzi, d a r o com andă poate f i p re lu a tă n u m a i de u n angajat.

Să exam inăm re la ţia d in tre tabelele O rders ş i Employee (angajaţi). Aşa cum este p ro iec ta tă baza de date, o com andă poate f i p re lu a tă n u m a i de către u n angajat. C um a r f i dacă o com andă a r pu tea f i p re lu a tă de m a i m u lţ i anga ja ţi? Poate că f irm a fo loseşte echipe de ang a ja ţi p e n tru a p re lu a comenzile. în acest caz, designu l cu re n t a l bazei de date n u respectă această cerin ţă . A ic i in te rv in e concep tu l de re la ţie m u lţ i la m u lţi.

Să p resupunem că a r f i nevoie de m a i m u lţ i anga ja ţi p e n tru a p re lu a o com andă. Dacă exam inăm re la ţiile curente, ta b e lu l Em ployee este pă rin te , ia r ta b e lu l O rders este copil. Ş t iţ i deja că exis tă u n câm p Em ployeeID în ta b e lu l O rders ş i în acest câm p poate f i s tocată o valoare un ică . C um poate f i re a liz a t aces t lu c ru ? R ă s p u n s u l co n s tă în a d ă ug a rea u n u i ta b e l s u p lim e n ta r n u m it E m p loyeeO rde rs . F ig u ra 2 .5 p re z in tă o v e rs iu n e m od ifica tă a bazei de date N o rth w in d Traders. P entru a în d e p lin i această sarcină, deoarece m ode lu l re la ţiona l n u poate accepta d irec t o re la ţie m u lţ i la m u lţ i, această re la ţie este in d ire c t su po rta tă fo los ind două re la ţii u n u la m u lţ i. T abe lu l in te rm e d ia r este n u m it tabe l de jo n c ţiu n e {junction table).

Page 37: Baze de date pentru incepatori (manuale facultate)

Relaţiile m u lţi la m u lţi sun t suportate p rin crearea u n u i tabel in te rm e­diar, n u m it tabel de joncţiune.

CAPITOLUL 2 ANATOMIA UNEI BAZE DE DATE 25

FIGURA 2.5

Pentru a co n tin u a exem plificarea, să presupunem că în p re luarea u n e i a n u ­m ite com enzi s u n t im p lic a ţi do i anga ja ţi. In acest caz, vo r apărea două în re g is tră ri în ta b e lu l de jo n c ţiu n e . D in perspectiva com enzii, ve ţi vedea doi anga ja ţi im p lic a ţi în p re lua rea acesteia. D in perspectiva u n u i angaja t, ve ţi vedea toate comenzile în pre luarea cărora a fost im p lica t anga ja tu l respectiv, în acest scenariu , aceeaşi com andă poate f i asocia tă cu m a i m u lţ i angaja ţi.

Pe scu rt, u rm ă toa re le fraze descriu esenţa re la ţie i m u lţ i la m u lţi:

■ O com andă poate co n ţin e u n a sau m a i m u lte in fo rm a ţii, d a r o in fo rm a ţie despre comezi poate apa rţine u n e i s ingure comenzi.

■ U n p rodus poate apărea în zero sau m a i m u lte in fo rm a ţii despre comenzi, d a r o in fo rm a ţie despre com enzi poate con ţine u n s in g u r produs.

■ U n fu rn iz o r poate liv ra zero sau m a i m u lte produse, d a r u n p rodus poate f i l iv ra t de u n s in g u r fu rn izo r.

■ C ategoriile po t f i a lcă tu ite d in zero sau m a i m u lte produse, d a r u n p rodus poate apa rţine une i s ingure categorii.

Dar dacă un produs ar putea aparţine mai muitor categorii? Dacă vă gândit¡ că o relaţie mulţi la mulţi poate fi mascată printr-un tabel de joncţiune, sunteţi pe calea cea bună şi înseamnă că învăţaţi repede!

je،p ShowMe؛ îdow؛،،» ،،loc

PeS ٦، Jj Cieate table؛t E ] Crea،« table by uM KT] Create tabto by ert ES Categorisi ED Customers

0 Err.ptoyeeQtder،IU EmptoyeiS

El Order tXa؛،EO Orders

3 Produrts؛D Shippers؟G

» pi:،» □؟

SuvfarD .CwnpenYttarf،

1 Name؛.xia؛CCcrtactTile .

،ddressOtyRegion

'«'•«،tName

،MT'at»

Catego'yfJameaio،Kn؛“C

Picture

— —

Page 38: Baze de date pentru incepatori (manuale facultate)

PARTEA I - BAZE DE DATE - ELEMENTE GENERALE

Dacă revedem re la ţiile d in N o rthw ind T raders, este c la r că scopu l bazei de date este de a su p o rta opera ţia de in troduce re a com enzilor. în a fa ră de in troduce rea com enzilor, m a i este su p o rta t ş i u n s is tem de a d m in is tra re a in v e n ta ru lu i de bază. Aşa cum am m en ţiona t în ca p ito lu l i , dacă în ţe legeţi datele şi s tru c tu ra lo r p u te ţi obţine o perspectivă im edia tă in iţ ia lă a a c tiv ită ţii un e i firm e.

Prezentare generală a componentelor unei baze de dateS ecţiun ile u rm ătoare descriu componentele p rinc ipa le ale u n e i baze de date în Access. Acestea s u n t tabele, in te rogări, rapoarte ş i fo rm u la re . Fiecare com ponentă p r in c ip a lă are varia te subcom ponente, ia r a ic i vom prezenta doar o in troduce re în aceste elemente. In capito le le u rm ă toa re vo r f i p re ­zentate m a i m u lte de ta lii, pe m ăsu ră ce ve ţi începe să lu c ra ţi cu aceste componente.

TabeleleSă p resupunem , de exem plu, că d o r iţ i să vedeţi c o n ţin u tu l ta b e lu lu i Cus- tom ers. C um a ţi pu tea realiza acest lu c ru ? E foarte s im p lu , dacă pa rcu rge ţi paş ii u rm ă to r i (vedeţi fig u ra 2.6):

1. Selectaţi ta b e lu l C ustom ers cu u n c lic de mouse.2. D upă selectare, execu ta ţi c lic pe b u to n u l Open de pe ba ra de in s t ru ­

m ente.

-Ini x’l

Order DetailsObjects

Products'» * S؛'

«،؛ ،« ،

Soups

Order® ±CustcmerlD

ye،lD؛E/r،tc OraarDate RequredOate.: ShippedDate :

jh ţw Freight Shţftâflas

• ShpAddress NpGty؛ hfcRegtMi؛

ShpPostaKoc J

Order■)ProductlDUrstprt»Quart،/Otscourt

ProdjOJDProductNameSuppterlDCategory®QuantityPerUnftUratPiiceUmtslnStockUmtsCnOrderRecrdeftevolDiscontinued

CutmerDct rf.an؛.C،r

ContactName ContactTitfe Address City

jCcnipanytJerrCcrtartName

]CcfitactTitle . I Address City

(Region

EnptoyeelDLastNameFrstName

RleOfCourt؛BrthDateHreDateAddress

Category!)CategcryNameDescriptionPlctixe

M O DjCompanyName(Phone

FIGURA 2.6Puteţi vedea datele con ţinu te în tr-u n tabel dacă deschideţi tabelu l.

Butonul Open

Ip ShowMe؛؛* indow؛؛ Insert Xoob ؛١٠٠٠ »,-t ،■ s ،؛،،؛ ،ju a a y i؛ ® ؛١- ■؛ ¡= € J-Ife

0 Create tabic In Design view؛؛ f Sfj Create table by using «ttard

I i Î ] Create table by enter٠١٠ 3 Categories؛

I Customers Enttoyees ؛

■ „ j p l x i

Page 39: Baze de date pentru incepatori (manuale facultate)

27CAPITOLUL 2 ANATOMIA UNEI BAZE DE DATE

F igura 2 .7 p rez in tă c o n ţin u tu l ta b e lu lu i Custom ers. Această v izua lizare se num eşte D a tashee t (foaie de date). D enum irea este firească, deoarece seamănă cu o foaie de ca lcu l d in Excel.

FIGURA 2.7în vizualizarea Datasheet datele pot fi văzute, modificate sau şerse.

Când vedeţi datele în vizualizarea Datasheet, este important să observaţi că aveţi în faţă o redare directă (live view) a datelor. Aceasta înseamnă că datele pot fi modificate sau şterse. Nu uitaţi, fiţi atent la tastele pe care le apăsaţi când vizualizaţi datele.

Care este s tru c tu ra u n u i tabel? V ă a m in tiţ i d iscu ţia d in ca p itlo u l 1, dspre tabele? Tabe'ele s u n t fo rm ate d in u n a sau m a i m u lte coloane. C um poate fi v izua liza tă s tru c tu ra u n u i tabe l în Access? F igu ra 2.7 ş i paş ii u rm ă to r i vă pot exp lica acest lu c ru :

1. G ăsţi b u to n u l V iew, u lt im u l d in stânga pe ba ra de in s tru m e n te (vedeţi f ig u ra 2.8).

2. E xecu ta ţi c lic pe b u to n u l View. Va f i a fişa tă v izua liza rea Design.3. Executa ţi d in nou c lic pe b u to n u l View; va f i afişată v izualizarea D a ta iis t

(lis ta datelor). Aceasta rep rez in tă o a ltă m oda lita te de a p ro iecta u n tabel, d a r n u este la fel de u t ilă ca v izua lizarea Design.

— '

: Trujillo Emparedados onio Moreno Taquería

Constitución 2222

Berglunds Order Administrator Berguvsvagen

æsr■LaurenceLebihar, EhWbelh Lincoln

Comidas preparadas

■ K r r

CHOPS Chop-suey Chinese

CONSH Consolidated Holdings en؛ DRACD Drachenblut Delikate؟

DUMON Du monde entiar

Folies gourmandes Folk oehfiHB Frank enversand France restauration

GALEOGODOSGOURL

Cocina Típica iei Lanchonetes

HILARIÓN-Abastos

Oros, 92FISSA Fabrica Inter Salchichas S A Diego Boel C/Moralza.zal,

'O I- :FRANK

Franchi S.p.A.

Page 40: Baze de date pentru incepatori (manuale facultate)

PARTEA I - BAZE DE DATE - ELEMENTE GENERALE

Descrierea câmpului

Numele câmpului

Tipul datelor

how Ms؛ rio

A١٠ '؟*■: Urtqus.fiv*<har«،،iK coder basad.oí customer rw*iw,

tree، or post-offic* be؛

.Stste c» provnes

»fer h8،> o،■ •ted narr ؛ ٠١ras؟ ،؛٠٢.،• ؛tccxi¡ a*¡, n d d i&¿ ،٠ te ٠٠ A He،j rjm، can b3

r>-N،rr،í؛&؛CofiCcn،a،tf«meContiittfÖeAddressc،yR®0،onPostalCodeCountryPhons

jpea¡pvteM. F6 - Switd■. pones. El - Hdp

Dacă executaţi clic pe bu tonu l View, pu te ţi să treceţi de la vizualizarea Design la vizualizarea Data list în tr-u n tabel. Detaliile p riv ind coloa­nele, ca numele coloanei, tip u l de date con ţi­nu te şi des­crierea datelor pot f i văzute în vizualizarea Design.

FIGURA 2.8

Tab-ul Lookup-------- ——— ٠٦

Proprietăţile__câmpului

Este important să fiţi foarte atent când vizualizaţi datele dintr-un tabel. Pe măsură ce derulaţi în sus şi în jos lista câmpurilor, este foarte uşor să modificaţi din greşeală atributele unui câmp. Nu uitaţi - fiţi atent ce taste apăsaţi când vizualizaţi structura tabelului!

Scopul şi utilizarea tab-ului lookup sunt discutate mai detaliat în secţiunea referitoare la formulare din acest capitol. Tab-urile Lookup oferă o cale prietenoasă faţă de utilizator pentru asocierea datelor din tabele înrudite.

Proprietăţiîn v izua liza rea Design, dacă d e ru la ţi în sus şi în jo s lis ta câ m p u rilo r, p u te ţi vedea p ro p rie tă ţile extinse ale fie că ru i câm p. în a fară de num e, t ip u l de date ş i descrierea acestora, a lte a tr ib u te ale câ m p u rilo r - ca, m ărim e, fo r­m at, m ască de in tra re ş i legendă - po t f i v izualizate. Aceste a tr ib u te extinse po t f i v izua liza te în pa rtea d in stânga jo s a f ig u r ii 2.7.

Page 41: Baze de date pentru incepatori (manuale facultate)

FieldName (numele câmpului) P roprie ta tea FieldNam e precizează num ele u n u i câm p a l ta b e lu lu i. Num ele u n u i câm p poate avea lung im ea m ax im ă de 64 de caractere ş i poate con ţine orice com b ina ţie de lite re , num ere, spa ţii ş i caractere speciale. Caracterele neperm ise s u n t p u n c tu l, sem nu l exclam ării, accen tu l ş i parantezele. C redeţi sau n u , gh ilim e le le dub le s u n t perm ise în num e le u n u i câm p, d a r este îndo ie ln ic că această po s ib ilita te ar putea fi considera tă u t i lă de cineva. De regulă, ve ţi fo losi lite re le a lfabe tu lu i, cifrele de la 0 la 9 ş i ca rac te ru l underscore (lin ie jos).

C A P IT O L U L 2 ANATOMIA UNEI BAZE DE DATE 29

Deşi poate că aţi inclus spaţii în numele câmpului, ele vă pot face mai multe probleme decât merită. De exemplu, numele firmei Northwind Traders din tabelul Northwind Customers. Dacă utilizaţi spaţii, va trebui să referiţi câmpul sub forma (custom ers .num ele f i r m e i ] . Altfel, dacă nu folosiţi spaţii, câmpul poate fi referit astfel: c u s to m e rs . n u m e le f irm e i. Folo­sirea spaţiilor tinde să complice lururile în loc să le simplifice, deci evitaţi spaţiile în numele câmpurilor.

DataType (tipul datelor) P roprie ta tea D ataType specifică t ip u l de date con ţinu te în câm pu l respectiv. T ip u rile s tandard de date s u n t prezentate în tabe lu l 2.1

Tabelul 2.1 Tipurile standard de date suportate de AccessT ip u l de date Descriere D im ens iunea m ax im ă

Text Date de tip caracter 255 bytes

Memo Date de t ip caracter 64 K

N um ber Date num erice 8 bytes

D ate /T im e Date de tip dată ca lenda ris tică şi oră

8 bytes

C urrency Date m onetare 8 bytes

A u tonum b er Date num erice cu auto increm entare

4 bytes

Yes/N o Date logice de tip T rue /F a lse

(adevărat/fa ls)

1 b it

Access suportă şi alte tipuri de date, inclusiv OLE Object şi Hyperlink. Pentru mai multe informaţii despre aceste tipuri de date, consultaţi sursele de documentare despre Access.

Page 42: Baze de date pentru incepatori (manuale facultate)

30 PARTEA I - BAZE DE DATE - ELEMENTE GENERALE

D e s rip tio n (descriere ) P rop rie ta tea D e sc rip tio n vă p e rm ite să o fe r iţ i in fo rm a ţii descrip tive despre câm pu l respectiv. O descriere poate avea cel m u lt 255 de caractere.

Field S ize (d im ensiunea câm pului) P roprie ta tea F ie ld Size vă perm ite să spec ifica ţi de im ensiunea m ax im ă a da te lo r stocate în acel câm p. Vedeţi ta b e lu l 2.1 p e n tru va lo rile m axim e ale d im e n s iu n ilo r câm purilo r.

Form at (form at) Proprietatea Form at controlează m odu l de afişare a datelor. Această p ro p rie ta te vă pe rm ite să s ta b il i ţ i m o d u l în care a pa r date le num erice , m onetare, de t ip te x t ş i cele de tip da tă ca lenda ris tică sau oră.

Input M ask (m ască de intrare) P roprietatea In p u t M ask oferă u n m ecanism p e n tru in troduce re a m a i uşoară a date lor. De exem plu, p e n tru u n n u m ă rde telefon, o m ască de t ip u l (____)- (_____ ) uşurează in troducerea d ife rite lo rcom ponente ale n u m ă ru lu i de telefon. Access oferă u n program w izard p e n tru a crea va lo rile p e n tru această proprie ta te .

Caption (legenda) P roprie ta tea C aption de te rm ină c o n ţin u tu l descrip tiv al u n e i e tichete fo los ite în tr -u n fo rm u la r sau ra p o rt care con ţine câm pu l respectiv. P roprietatea Caption precizează şi c o n ţin u tu l t i t lu lu i un e i coloane p e n tru u n câm p în v izua lizarea D a ta lis t. (Vedeţi fig u ra 2 .7 p e n tru o prezen­tare a v izu a liză rii D a ta lis t.)

D efau lt Value (valoare im plic ită ) P roprie ta tea D e fau lt V a lue specifică va ­loarea in tro d u s ă a u to m a t în câm p când este creată o nouă înreg istrare . De exem plu, u n câm p cu date num erice poate avea valoarea im p lic ită 0, ia r u n câm p cu date ca lendaris tice poate avea da ta cu ren tă ca valoare im p lic ită .

Validation Rule (regulă de validare) P roprietatea V a lida tion Rule specifică o condiţie pe care trebu ie să o îndeplinească valoarea in trodusă. De exemplu, o valoare num erică trebu ie să fie >=0. Regulile de va lidare a ju tă la păstrarea in te g r ită ţ ii date lor.

Validation Text (tex t de validare) P roprie ta tea V a lid a tio n Text specifică m esa ju l sub fo rm ă de te x t a fişa t p e n tru u t iliz a to ru l care n u respectă regula de va lidare. D im ens iunea m ax im ă a p ro p rie tă ţii este de 255 de caractere.

Rsquired (necesar) P roprietatea Required specifică dacă valoarea un e i date este necesară în tr -u n câmp.

A llow Zero Length (acceptă lungimea zero) P roprietatea A llow Zero Length specifică dacă este perm isă in troducerea u n u i ş ir de caractere cu lung im e zero. Această p rop rie ta te poate f i ap lica tă câ m p u rilo r cu date de t ip text, memo ş i h yp e rlin k .

Indexed (indexat) P roprie ta tea Indexed specifică dacă este creat u n index p e n tru câm pu l respectiv. Pot f i create două t ip u r i de index. U n u l perm ite in tro d u c e ri dup lica te , ia r ce lă la lt n u acceptă dup lica te le .

Compresia UnicodeAccess su p o rtă reprezentarea Unicode a caractere lor, ceea ce înseam nă că acestea s u n t reprezentate p r in do i b iţ i în loc de u n u l. D a to rită rep rezen tă rii

Page 43: Baze de date pentru incepatori (manuale facultate)

31CAPITOLUL 2 ANATOMIA UNEI BAZE DE DATE

pe doi b i ţ i p o t f i supo rta te m a i m u lte pag in i de cod a lim b a ju lu i. Pe de a ltă parte, în reprezentarea pe u n b it este supo rta tă o s ingu ră pag ină de cod şi există ce rin ţe m a i m ic i p r iv in d stocarea pe disc.

InterogăriIn te rogările oferă o cale de v izua lizare a date lor. De cele m a i m u lte o ri, va tre b u i să u t i l iz a ţ i ş i să in te ra c ţio n a ţi cu datele în a ltă m an ie ră decât cea în care le s tocaţi. F igu ra 2 .9 p rez in tă in te rogă rile de fin ite în baza de date N o rthw ind Traders.

،؛؛؛،pen o*،،(؛ :

Design view ٠١ Create query ،؛؛[ O b le a s ١ I î^ j Create query by using wear d

E؛JJ Category Silei for 19؟7p Current Product let؛؛t

ÜD Customers and Supo،er 5 by City p Employee Siles by Coiriry]؛

Invoees s fifcer؛•Invoc ١]§

Extended ؛Cider Detail ١]§C»det S،،،c*als ١)§Orders >ÿy ١]§

1997 §[3 Product Sales for p Products Above Average Price¿

§[J Products by Category ® Quarterly Orders

Jarterty Orders by Product،؛ B by Category ؛P 5 le؛t

Sates by Year ١]§Ten Most Expensive Products £§؛

FIGURA 2.9O mare varietate de in terogări sun t definite în baza de date N orthw ind Traders.

Cea m a i b u n ă cale de a prezenta interogările este u n exem plu s im p lu . C erin ţa este o lis tă a lfabe tică a p roduse lo r active. P entru o astfe l de interogare, aveţi nevoie n u m a i de două in fo rm a ţii: id e n tif ic a to ru l p ro d u s u lu i (p roduct ID] ş i num ele p ro d u su lu i. In terogarea C u rre n t P roduct L is t (lis ta produse lo r curente) îndep lineş te aceste cerin ţe . Paşii necesari p e n tru v izua liza rea c o ţ in u tu lu i u n e i in te ro g ă r i s u n t exact ace iaşi ca p e n tru v izu a liza re a c o n ţin u tu lu i u n u i tabel:

1. Se lectaţi in terogarea C u rre n t P roduct L is t executând c lic pe ea.2. D upă selectare, executaţi c lic pe b u to n u l Open d in ba ra de instrum ente .

F igura 2 .10 p rez in tă rezu lta te le la n să rii in te ro g ă rii C u rre n t P roduct List.

U na d in tre în tre b ă rile dum neavoastră a r pu tea fi: “Care este s tru c tu ra une i in te rogă ri? ” . S tru c tu ra u n e i in te rogă ri este deriva tă d in s tru c tu ra tabe le lo r care fu rn ize a ză in fo rm a ţii le p e n tru in te roga re . P aş ii necesa ri p e n tru v izua lizarea s tru c tu r ii u n e i in te rogă ri s u n t aceiaşi ca p en tru u n tabel:

1. E xecu ta ţi c lic pe b u to n u l View. V e ţi trece astfe l în v izua lizarea Design.2. E xecu ta ţi d in nou c lic pe b u to n u l View; ve ţi trece astfe l în v izua lizarea

D ata list.

S tru c tu ra in te ro g ă rii C u rre n t P roduct L is t este prezentată în fig u ra 2.11.

Page 44: Baze de date pentru incepatori (manuale facultate)

DATE - ELEMENTE GENERALE32 PARTEA i - BAZE

ip ShcwMe؛Şhdow bccrds؛؛، t،»rt Farmat ٤* ؛٠٠٠٠

Product NameProduct ID !Aniseed Syrup ؛........

40 Boston Crab Meal SO Camembert Pierrot

18 Carnarvon Tigers....................................1 Chai........2 Chang

39 Chartreuse verte Cajun Seasoning '؛Chef Anton ١،

48 Chocolade

58 Escaigots de Bourgogne 52 Fito Mix

71 Fletemysost 33 Geitost

15 Genen Shouyu 56 Gnocchi di noma Alice

Gorgonzola Telino 31؛ 6 Grandma's Boysenberry Spread

37 Gravad lax......69 Gudbrsndscalsost

44 Gula Malacca 26 Gumbär Gummibärchen

22 Gustafs Knäckebröd 10 Ikurs

36. Inlagd Sill 43 Ipoh Coffee

Jack’s New England Clam Chowder 41؛ 13 Konbu

76 Lakkalikdöri67 Laughing Lumbegack Lager......

74 Longlife Tofu 65 Louisiana Fiery Hot Pepper Sauce

68 Louisiana Hot Spiced Okra 51 Manjimup Dned Apples

Mascarpone Fabio 32؛؛

9، Record; h I./ 'H > |n |> » | of ________.Number eutansHcal atsgncd to new pcoAirt¡

Butonul View

*■ J i l j ] »- i J I *

FIGURA 2.10

Interogarea C urren t Product L is t oferă o lis tă alfabetică a produselor active.

Câmp

FIGURA 2.11S truc tu ra unei in terogări specifică tabelele şi coloanele utilizate , ordinea de sortare şi c r ite r iu l de selecţie.

Page 45: Baze de date pentru incepatori (manuale facultate)

în in terogarea C u rre n t P roduct L is t s u n t u tiliza te tre i câm puri, da r n u m a i două s u n t afişate în se tu l de rezultate. A l tre ilea câmp, D iscon tinued (discon­tin u u ) , este u t i l iz a t n u m a i în scopu l s ta b ilir i i c r ite r iilo r. în acest caz, s u n t selectate n u m a i în reg is tră rile a căror valoare D iscon tinued este no.

U n u l d in tre cele două câ m p u ri afişate, P roduct Name (num ele p ro dusu lu i) este ş i el a fişa t ş i fo lo s it ca bază de sortare. în acest caz, se tu l de rezu lta te este o rdona t după num ele p ro d u s u lu i în o rd ine ascendentă (crescătoare).

Interogările care con ţin date d in m a i m u lte tabele n u su n t substan ţia l d iferite de cele care c o n ţin date d in tr -u n s in g u r tabel. U n exem plu s im p lu în acest sens este in terogarea A lphabe tica l L is t o f Products (lis ta a lfabe tică a p ro ­duselor). In această in terogare , datele d in tabelele p roduse lo r ş i ca tegoriilo r su n t com bina te p e n tru a fo rm a u n s in g u r set de rezu lta te (vedeţi figu ra 2 . 12).

CAPITOLUL 2 ANATOMIA UNEI BAZE DE DATE 33

FIGURA 2.12Tabelele d in interogările m u ltitabe l sun t au tom at înrud ite , pe baza re la ţiilo r definite în baza de date.

Setu l de rezu lta te a l in te ro g ă rii A lphabe tica l L is t o f P roducts este prezenta t în fig u ra 2.13.

Page 46: Baze de date pentru incepatori (manuale facultate)

34 PARTEA I - BAZE DE DATE - ELEMENTE GENERALE

— f t f lx

-¡*١*؛ و .* M مء

Category I Quantity Per Unit I Unit Price I Units In Stock 1 UtT*

ب . ؛ ! ؛ أ ؛ مي و ل ه.سسمي م هأ Farrriä، أأه،ءءءإة ي « و 6ءإ ص ١٠٠٠٠ أ

ة الآل• ا

$18.00 $19.00 $10.00 $22.00 $25.00 $30.00 .. $40.00

$3.ا00$21.00

00 $38

ت$3مح5.50$ ا

$17.45

S9.20$31.00٠١□،»$2100

>9 00$14 0

$1250$32.00$2.50

JI4.GÜا1هء.ء«.و $1ا

ه. $26ت

$1.جص$16.00$9,65

bags 10 ء و boxes; 24-12 ozbotţlas؛

j 12 - 550 ml bottles 40-Boz jars إ

؛ل.ء؟ء ............ ا ت . : و . ه ء.12- 1 lbpkgs

jars إ 12-12 0ت • 12 - 200 ml jars

.1 kg pkg إ 10 - 500gpkgs؛

:2 kg box ;40-ICUgpkgs

;24 - 250 ml bottles boses 32-5تت، و

.16 kg pkg أ bones X 12 pieces إ ١٥

bo»es 30اا،و c«s4؛pi؟ . ( ،24pkg

وح,.ة.و ءglasses 20 - 450 ؟;bags ؛ 100 - 250 و pieces 1100 - 100 و

glasses ٠ و• أ 10 ^؛g pkg 100-12؛

24 - 200 g pkgs

24 . 12 02 bottles bottles24 - 1ف ٠؛

24 - 250gjais g pkg 500 - 112؛

12-75 cl bottles; 750 cc per bottle؛

Beverages Beverages Condiments Condiments Condiments Produce Condiments Seafood Dairy Products Dairy Products Seafood Produce Condiments Confections Seafood Confections Confections Confections Grains/Cereals Grains/Cereals

Confection؟Confections

Confection؛Seafood Dairy Products Dairy Products Daiiy Products Beveiages Beverages Seafood Seafood Beveiages Beveiages Seafood Seafood

SupplierProduct Name£اا<نمالةب * ء؛اه

.........................................Exotic Liquids Exotic Liquid؟

New Orleans Cajun Delights Grandma Kelly's Homestead Grandma Kelly's Homestead Grandma Kelly's Homestead

?okyo Traders Cooperativa de Guesos la s Cabras’

Cabras' اء Cooperativa de هالآوآءل مMayumi's Mayumi's؛Mayumi's Pavlova, Ltd.Pavlova, Ltd.Specialty Biscuits, Ltd.Specialty Biscuits, Ltd.Spaciaily Biscuits. Ltd.PB KnSckebröd AB PB Knäekebröd AB Hell Sußwaran GmbH & Co KG Hel¡ Süßwaren GmbH & Co KG

Co. KG ٤٠ Heli Süßwaren GmbH Nord-C،st-Fisch Handelsgesellschaft mbH

n¡ s.r.l.؛Formaggi Foil s.r.l. ۴٠٨٠٨؛ Foimaggi

Norske Meierier Breweries ؟ ه واة:’ا ا

Bigfoot Breweries SvenskSjCfodaAB SvenskSjofödaAB Auxjoyeux ecclesiasliques

ecclesiastiques ؛<Au*joyeu New England Seafood Cannery

' New England Seafood Cannery

Product ID_rغ .................B.Cha؛2 Chang

...............................V;... ..... . . .. 3 Aniseed Syrup__ 4 Chef Alton's Cajun Seasoning

6 Grandma's Boysenberry Spread ^7 Uncle Bob's Grganic Dried Pea ج

Northwoods Cranberry Sauce ة 10 ikura

Gueso Cabrales ١ 1 toia12؛ Queso Manchego La Pa

13 Konbu 14 Tofu ٠

15 GenenShouyu 16 Pavlova

19 Carnaivon Tigers غ19 Teatime Chocolate Biscuits

20 Sir Rodney's Marmalade جSir Rodney’s Scon 21:؛« .......

22 Gustsfs Knackebrod و__ 23 Tunnbriid

25 NuNuCa Nufi-Naugat-Creme . وrch«n؛؛r Gummib25؛ Gumbi27 Schoggi Schokolade ئ

30 Nord-Ost Matjeshering 31 Gorgonzola Telino 32 Mascarpone Fabioli ج

3B Geitost 34 Sasquatch Ale

Stout $35 ء'رءاق؛ا 3S Irilsgd Sill

*37 Giavad laتمب CSlsde...ءألو؛ة. .................

39 Chartreuse verte ston Crab Meat40؟ B ء

41 Jack's New England Clam Chowder

::69 Bwotd: H I ' jV ' ' u r ^ > i H ■ .fijnibq■ sot'orriatic aiiyjiaimed ta nevv (*odJct

FIGURA 2.13Rezulta tu l unei in terogări m ultitabe l (cu date din m ai m ulte tabele) apar sub form a u n u i tabel.

RapoarteIn fi d in tr-o bază de date n u s u n t prea u tile dacă n u po t ة accesateş i fo lcs ite in tr -o m an ie ră prie tenoasă fa ţă de u tiliza to r. Când vă i:n b a rca ţi în procesu l dezvo ltă rii a p lic a ţiilo r p e n tru baze de date, în m od in v a ria b il ve ţi f i f i în tre b a t ce rapoarte po t f i generate. în baza de date N orthw ind Traders s u n t de fin ite m ai m u lte rapoarte (vedeţi fig u ra 2.14).

- i f l j x

-١*!*ب•

■جموأ -ءة لمم؛ء ţrţsţrt ا00ءا هسسم ;مأزإلإلأأ؟

ng wo،rd؛report by U5 'ء،هءت»ol Produc ؛؛Li مبساه:،ءء

ءلوماه،ممل،<ءءء حمآ

هس ان،ءهby Ccuntiy ءء،هء Employee

tfivixeby Câ،e90ry ؛Product

Sâ،ssbyCâ،«90>yهة1ءء byتاعوءئئ'>ما'هءء

ةسءء fcy ءيء'أ ء*ضقسSăisi Totals by Amour*

Surrawry of Säle؛ ؛١١'جء،ءدby Yeat ؛Sumiiksy of Safe

FIGURA 2.14Rapoartele definite in baza de date Northw ind Traders.

Page 47: Baze de date pentru incepatori (manuale facultate)

P entru a exp lica fu n c ţio n a re a ra p o a rte lo r, să cons ide răm in te roga re a Products by Category (produse clasificate pe categorii). Această in terogare este s im ila ră ce lor exam inate în secţiunea ante rioa ră ş i este prezenta tă în :!gura 2.15.

In te roga re a P ro d u c ts b y C ategory afişează in fo rm a ţii le prezen ta te în tabe lu l 2.2.

Tabelul 2.2 Structura interogării Products by Category

CAPITOLUL 2 ANATOMIA UNEI BAZE DE DATE 35

Num ele c â m p u lu i Tabelu l S o rta re /c r ite r ii

Category Name Categories Ascending

P roduct Name Products Ascending

Q u a n tity per U n it Products

U n its in S tock Products

D iscon tinued Products <>Yes

R ezu lta tu l in te ro g ă rii Products b y Category este prezenta t în fig u ra 2.16.

FIGURA 2.15Interogarea Products by Category în vizualizarea Design.

Category IDآمحو،سسء

DsscrlpBanProduiiNameS،jpp،»IDC«eg،»yID

Piodjcts؛Table؟ ;Sat

Show: ؛■ Crierii؛

loducls;:ا;ب-س:ذ؛:Ascendro I I

<>YM

،١١١ uery Ţoofa v&Mknv Help Showء ؛؛ ه م ، w،؛v ٤٠ p Ffe

Sortare după categorie Criteriul legat de valoarea şi numele produsului câmpului Discontinued

Page 48: Baze de date pentru incepatori (manuale facultate)

36 PARTEA I - BAZE DE DATE - ELEMENTE GENERALE

how Mo٥٠١٠ ؛ i örefcw; ة » ïw ،٢٠٠،؛ ٢١٣٠٠ ءه«

آو'ي\؟يأأءقل؛,ؤثإلقتيةمهبإل_إمتي;ئئإلءت,جن

Category Name Product Name f Quantity Per "linii■ ه اسما هر ^هءء؛ةاله $ ا ضا ؛ ءه آ► Chai ١٥ bones » 20 bags 39 ه

Beverages Chang 24 -I2 0Z bottles 17 هBeverages Chartreuse verts و7 م ء ء per bottie B9 هBeverages c^te de Blaye 12 75 cl bottles 17 ٥Beverages Ipoh Coffee 16• 500 g tins 17: □Beverages Lakkalikööri ml؛ ، « ء آ ٥ .Beverages Laughing LumbeQack Lager 24 -12 oz bottles 5ت هBeverages Outback Lager 24 - 355 ml bottles □Beverages Rhonbiau Wostetbier 34. D.s ا baillas 125. □Beverages Sasquatch Ale 24• 12 oz bottles 111؛ □ إBeverages Steeleye Stout 24 -12 OZ bottles عأ □Condiments •Aniseed Syrup 12-550 ml bottles وا □Condiments Cajun Seasoning ؟’Chef Anton -0زءسم د3ج 53: □

Condiment؛ GenenShouyu 25Qml bottle-24؛ 39 □Condiments Grandma’s Boysenberry spread ةه وا 12 -ة £ا 130 □Condiments Gula Malacca 20-2 kg bags 2?, □Condiments Louisiana Fiery Hot Pepper Ssucs 32-8oz bottles 76 □Condiments Louisiana »٠١ spiced Okra 24 • 8 oz;j»* ......... 4; □Condiments Northwocds Cianbeiry Sauce 12o،jai-12؛ ■: □ !Condiments Original Frankfurter grüne Soße es،12؛bo 32 □Condiments Sirop dersble 24- 500 ml bottles 113 □Condiments Vegie-spread 15- 625 g jars . 24 □Confections Chocolads lOpkgs. 15 □Confections Gumbar Gummibärchen 100-250gbags 15 ٥Confections Maxilaku 24 - 50gpkgs. 10 هConfections NuNuCa NuC-Nougat-Cieme 20 - 4 ة0 و glasses 76 □Confections Pavfova •32 - 500 g bo »es م □Confections Schoggi Schokolade pieces و 100- 100 49 □Confections Scottish سمائههء،ظو 10 boxes X 3 pieces b □Confections Sir Rodney’s Marmalade 30 gift boxes 40 □Confections Sit Rodney’s Scones ؛ 24 pkgs. X 4 pieces 3 □Confections •Tarte au sucre 48 pies 17 □Confections Teatime هاواهءمأ)ء ء؛اجالء؛، 10 bones *12 pieces 2S □Confections Valkoinen suklaa؛ 12 •100 g bars 65 ه

- Confections Zaansekoeken boxes 10 • 4 0؛ 36 ه

ftamâcffccd category.

FIGURA 2.16interogarea Products by Category ه آ vizualizarea D ata list.

A r tre b u i să vă fie c la r acum câ t de u tile su n t in terogările . Vizua lizare D a ta lis t n u este, to tu ş i, prea u t ilă p e n tru u tiliz a to ru l fina l, ia r a ic i in te rv i rapoarte le . Fo los ind u n ra p o rt p u te ţi re a liza o aşezare în pag ină ca i uşurează vizualizarea date lor şi care este m ai u tilă u tiliza to ru lu i. Interogări] adună la u n loc datele d in u n u l sau m ai m u lte tabele, ia r rapoarte le ofer u n fo rm a t u t i l p e n tru vizua lizarea datelor. F igura 2.17 dem onstrează cu i u n ra p o rt poate în su fle ţi o in terogare.

sisal¡

' ة ت ه * ء و ء-»5hcwM ء سسمال 0،تم

Product Name: Units In Stock:

Chat ^٠Chang 1?Chartreuse verte 69C،tedeBUye 1?Ipoh Coffee 17

Lakkaliko؛»، 57

Laughing Lumbetjack Lager S2Out back Lager ءاRhinbrâu Klosterbler 125Sasquatch Ale ١١١Steeleye stoul ص

Number of Products: ١١

Category: Condiments

Product Name: Units In Stock:

|ل . ى - ه ء ة ت

Category مره Productsم م ءرء،ا2أ -ة

B«v»rages /ء?¿٢٠٥٢٧

Aniseed Syrup

Cajun Seasoning '؟Chef Anion

FIGURA 2.17Raportu l Products by Categoiy în vizualizarea P rin ţ Preview.

j؛J ك—كك-ل Pag؛، لك

Page 49: Baze de date pentru incepatori (manuale facultate)

37C A P ITQ Lyi.ة ANATOMIA UNEI BAZE DE DATE

S truc tu ra u n u i ra p o rt este ceva m ai com plica tă decât a u n u i tabe l sau a Linei in terogări. F igura 2.18 prezintă ra p o rtu l Product s by Categoiy în vizua li- ia rea Design.

Detaliile despre co n s tru ire a rapoa rte lo r su n t d iscu ta te în ca p ito lu l 12.

أ

Sha« Mí ٠ إ إءآ،آرأ Fgrmat إ00،ل ،؛اصمء ٠ ء ع ء و ء

ه ت ت - و ه . ة م ا ؛ ؛ آ ه ء ء ه ٠■ ' - ' ه ق ه• ; ض • ٨ • ئ: ٠ ; ! ؛ ، ءص ٠' '

>اموهأا؛ءمره: , . : : د;■س.

4 Resort Heady

Product!*FvrmaUDaleO*PaçeHeadet

Category: CategoryName

Pro.iiKLl مم>ار :| ihilts In Stork.

اء ..........* Cñ'.&yjryftvr.» Eootw

NimittérofProdncá: ءممأأإب • i "♦ PaqgFOotw

. .

؟ ؟ أ ■ - "

Silii

2.18 FIGURARaportul Products by

؛;ategoiy ؛٨rfzualizarea

.Design

FormulareLJltimele obiecte ale bazelor de date d in Access pe care le trecem în rev is tă in această prezentare generală s u n t form ularele. A ţi văzu t unde su n t stocate la te le (tabelele), m o d u l în care datele po t f i com binate în tr -u n fom a t u t i l ،interogările) ş i m o d u l în care datele po t f i prezentate în tr -u n fo rm a t u t i l rapoarte؛ le). D ar cum p o t f i in troduse datele în baza de date? Pot i i in troduse in două m odu ri:

I I Folosind v izua liza rea Table D a ta lis t (vedeţi f ig u ra 2.6);■I Folosind in troduce rea date lo r în fo rm ulare .

Deşi p u te ţi in troduce , m odifica şi şterge datele în vizualizarea D ata lis t, acest ،ucru n u este foarte u til. Form ulare le p e n tru in troduce rea da te lo r oferă o cale prie tenoasă de in te ra c ţiu n e cu datele fa ţă de u tiliza to r. Ca ş i în cazul rapoarte lor, s tru c tu ra fo rm u la re lo r poate f i foarte com plexă. D eşi aspectele im portan te s u n t prezentate în acest cap ito l, de ta liile despre cons tru irea fo rm u la re lo r s u n t explicate în ca p ito lu l 11.

Figura 2.19 prezintă formularele definite în baza de date Northwind Traders.

Page 50: Baze de date pentru incepatori (manuale facultate)

PA R TE A BAZE BE □ATE - ELEMENTE GENERALE - ا

$a،es by Year Dialog

Silles Reports Dialog

startup 5c«Jiír5

- Createااا»،ء in Design ،،ا،اا' ]ءأ

by using weard ؛٠٢٢١١ Create [ ق

هآ موم، ءاا و ء

Labels Dialog ؤ حااءر0اس

ك م د ؛ €٠٢٨٠٢ ؛ ،» §ج ،ا ؤ Customer Orders 5اسممم0ا

orm2؛s Customer Orcters Sub

Customer Phone list و Customer؛

Employees

Employees (page tieak) Main Switchboard

Orders

c»ders Subform

Product List Products

ء مه JSiterly،^ 0ءSubform سا Quarterly

a

Form ularele definite în baza de date Northw lnd Traders.

FIGURA 2.19

T abe lu l Products a fos t şi va f i d iscu ta t în m a i m u lte contexte. F o rm u la ru l P roduc ts oferă o b u n ă i lu s tra re a fu n c ţ io n ă r ii fo rm u la re lo r , d a r ş i a avan ta je lo r acestora (vedeţi fig u ra 2.20). Să ne a m in tim re la ţiile în care este im p lic a t ta b e lu l Products:

■ U n produs aparţine u n e i categorii.■ U n produs este l iv ra t de u n fu rn izo r.

FIGURA 2.20F orm u la ru l Products oferă o m odalitate de in troducere a datelor prietenoasă faţă de u tiliza to r pen tru un an um it produs.

Doarece ta b e lu l Products este im p lica t în două re la ţii, există două că u tă ri (lookup) p e n tru acest tabel. Acestea se re feră la câ m p u rile S u p p lie rlD (id e n tifica to ru l fu rn iz o ru lu i) ş i C atego iy lD ( id e n tifica to ru l categorie i). Dacă vă a m in t iţ i cele d iscu ta te la în ce p u tu l c a p ito lu lu i aceste câ m p u ri cu cheie externă t r im it la tabelele S upp lie r (furnizor) şi Category (categorie), respectiv. In fo rm a ţii despre m o d u l în care aceste date vo r f i afişate în tr -u n fo rm u la r po t f i găsite în ta b -u l Lookup d in Table Designer. T a b -u l Lookup p e n tru câm pu l S u p p lie rlD d in ta b e lu l P roducts este prezenta t în f ig u ra 2.21.

Page 51: Baze de date pentru incepatori (manuale facultate)

39CAPITOLUL 2 ANATOMIA UNEI BAZE DE DATE

>yWw؛

*WrMoft '، t

C-»¿ Tît«1،

PtwJuctHameSupc،erIDi

yyID؟g»؟C

LMtPikeUntolnSio.؛،

lATfcsOnOiocf

Httber sutc،Mti،،»/ wUgned te ٢٠« p oduct.AjtoMjvCer

Hjlfcif ٠٢٠، ٢٠١

Gxrency

Hjitoct

.stHs) *»5؛udt ١؛ ،١ Um eitryn* tttry a؛ (٥.*، n Cstcguie5؛

(.terboWi!•، «،,٢ îeg., Z-t-iO'jnt

to nur ،din in stotk ،١٢٠ Mn»n،»nkrosr ov«،a،4r ٢٠ » means ،*m ٠٠؛

~ t ~ ~ \ j،؟ pTCÍXítV،«*•

CttfJay Ccrtrd

AowSouw Bound Couro Cokjin Ce-jr،

Cc،،،nr.H-ad؛Cct،mV,V*h؛

UWTolK

Combo Bo*> ry/؟»ta،te

Con) ,١ SELECT DI5TIÍJCTROW [&*p،etC؛

.’aii VU٠•،،» ٨٠٢١١ '*11؛jn>). tv،« ->j «■،ci», -rtn I، ؛٠ ؛٠ <،٠ -؛،٠٢٠٠٠٢١ r» cai be»؛!،؛؛* ¿<

Ccsyi viBW. F6 * Swádi pants, f i » Hafc>.

Căutările s u n t m a i uşo r de fo losit, deoarece u tiliz a to r ii po t lu c ra m a i b ine :u descrie ri în loc de va lo ri cheie num erice lip s ite de înţeles.

Folosind câm pu l S u pp lie rlD ca exem plu, în con tinua re s u n t prezentate h fo rm a ţiile oferite de ta b -u l Lookup:

■ D isp lay C o n tro l (co n tro lu l a fişa t) - E le m e n tu l de in te r fa ţă cu u tiliz a to ru l (casetă com binată, casetă de t ip l is tă sau casetă de text) fo lo s it p e n tru a afişa căutarea.

■ Row Source Type (tipul de rând s u rsă ) - O căutare îş i poate extrage datele d in tr-o in terogare, d in va lo ri sta tice sau d in câm purile u n u i a lt tabel. In acest caz, câm purile S upp lie rlD şi com panynam e (num ele firm ei) su n t in terogate d in tabe lu l cu fu rn izo ri ca sursă de date pen tru căutare.

Tab-ul Lookup

Proprietăţile câmpului ■

rab-ul Lookup oferă n fo rm a ţii şi :omponente ale interfeţei cu utiliza to ru l pen tru suportul construcţie i form ularu lu i.

FIGURA 2.21

Row Source (rândul sursă) - Interogarea, l is ta s ta tică sau lis ta de câ m p u ri fo los ită p e n tru a popu la căutarea.Bound Column (coloana de legătu ră ) - V a l o a r e a , coloanei înscrisă în c â m p u l respectiv . In acest caz, va loa rea S u p p lie r lD d in ta b e lu l S u p p lie r este înscrisă în câm pu l S u pp lie rlD d in ta b e lu l Products. C âm pul S upp lie rlD este p r im u l câmp d in interogare; de aceea, coloana de legă tu ră p e n tru căutare este setată la 1.Colum n Count (num ărul de coloane) - Specifică n u m ă ru l de coloane care vo r f i afişate.Colum n Heads (titlu rile coloanelor) - Specifică dacă s u n t afişate t it lu r i le coloanelor.Colum n W idths (lăţim ea coloanelor) - Specifică lă ţim ea fiecărei coloane. în acest caz, p rim a coloană, S upp lie rlD , are lă ţim ea 0 ş i de aceea n u este afişată. S ingu ra coloană afişa tă este coloana 2, Com- pany Name (num ele firm ei).

Page 52: Baze de date pentru incepatori (manuale facultate)

PA R TE A ا - BAZE DE DATE - E L E M E N T E GENERALE40

■ List Rows (rânduri în listă) - Specifică n u m ă ru l m a x im de râ n d u r i care vo r f i afişate.

S Lis؛ t W idth (lă ţim ea lis te i) - Specifică lă ţim ea p o r ţ iu n ii d in l is tă des tina tă un e i casete com binate şi a une i casete de t ip lis tă .

■ L im it To L is t (lim ită a lis te i) - Dacă este setată pe yes (da), n u m a i va lo rile care apar în lis tă p o t f i in troduse .

Trecerea de la o vizua liza re la a lta în tr -u n fo rm u la r este s im ila ră cu cea d in tabele, in te ro g ă ri ş i rapoarte : executa ţi c lic pe b u to n u l View p e n tru a trece de la v izua liza rea D esign la vizua liza rea Form şi invers.

F igu ra 2 .22 p rez in tă s tru c tu ra fo rm u la ru lu i Products.

FIGURA 2 .22F orm u la ru l Products în vizualizarea Design.

RezumatIn concluzie, a ţi văzu t până acum cele m ai im po rtan te elemente d in tr-o bază de date Access, ş i anum e:

M In te rogă ri

Rapoarte M F orm u la re

Datele s u n t stocate în tabele, ia r re la ţiile definesc m o d u l de asociere a d ife rite lo r tabele. In te rogările com bină tabelele ş i re la ţiile d in tre ele p e n tru a face datele u tile , în t im p ce rapoarte le aduc datele la via ţă . în s fâ rş it, fo rm u la re le p e rm it u tiliz a to r ilo r să in teracţioneze cu datele.

Exam inând o bază de date d in Access, p u te ţi vedea produsu l fin it, şi probabil, ve ţi înţelege m o d u l cum funcţionează îm preună toate elementele. Acest cap ito l vă oferă o p riv ire generală asupra p ă d u rii ară tându -vă rap id copacii. Dacă în ţe lege ţi im ag inea de ansam blu , vă va f i m u lt m a l u şo r să în ţe legeţi de ta liile care vo r ه prezentate în celelalte capitole.

د ؛■[ : ف ض أ ' ث- ،ي ' يإم'.ر''

u i* t in 'S tock:'i ;uñi'InSi! ن أ

0n0fd«ij؛،؛Uf■؛_ »■; '..I...-. U năţ On Old

’ ..ÎR ew d é tL eve i:^ ïReoideri.eve:i■. > ؛Discontinued: p

Page 53: Baze de date pentru incepatori (manuale facultate)

A cum că a ţi în ţe les ce este o bază de date şi cum s u n t bazele de date im plem entate în Access, este t im p u l să aplica ţi aceste cunoştin ţe p r in crearea une i baze de date p ro p rii. U rm ătoare le tre i capito le au ca scop pro iectarea şi co n s tru ire a un e i baze de date cu date tem pora le şi p e n tru fac tu ra re . Pe m ăsură ce s u n te ţi condus în procesu l de pro iectare şi co n s tru ire a bazei de date Tim e E n try and B illing , n u u ita ţ i baza de date N o rth w in d Traders, deoarece ve ţi ap lica aceleaşi p r in c ip ii - s ingu ra d ife ren ţă este prob lem a pe care o rezolvaţi.

CAPITOLUL 2 ANATOMIA UNEI BAZE DE DATE 41

Page 54: Baze de date pentru incepatori (manuale facultate)

PARTEA A

ROIECTAREA SI 30NSTRUIREA 3RIMEIBAZE DE DATE

Page 55: Baze de date pentru incepatori (manuale facultate)

INTRODUCERE IN PROIECTAREA BAZELQR □E DATE

în acest capitol:و P ro iec tu l dum neavoastră: baza de date Tim e E n try

and ^ ل1مللبD ؛ e te rm in a ţi cerin ţe le p riv in d baza de date■ In troduce re în m odelarea bazelor de date■ M ode lu l bazei de date Tim e E n try and B illin g -■ Rezum at

Page 56: Baze de date pentru incepatori (manuale facultate)

DATEPARTEA A ll-A - PROIECTAREA PRIMEI BAZE46

Partea I v-a o fe rit elementele fundam en ta le p e n tru a înţelege ce este o bază de date ş i cum este ea im p lem en ta tă în M icroso ft Access. în partea a doua, începând cu acest cap ito l, ne vom concentra e fo rtu rile să ap licăm ceea ce am în vă ţa t în partea I. îna in te de a pu tea c o n s tru i o bază de date, va tre b u i m ai în tâ i să o pro iec ta ţi. îna in te de a pu tea să o pro iec ta ţi, va tre b u i să în ţe lege ţi prob lem a econom ică pe care o aveţi de rezolvat. Uneori, procesu l de pro iecta re şi cons tru ire a un e i baze de date este s im p lu ; a lteori, acest proces poate f i o adevărată provocare. P rin tre fa c to rii care po t de te rm ina d ificu lta te a sa sun t:

■ M o d u l în care a ţi în ţeles activ ita tea firm e i.■ A p titu d in ile dum neavoastră analitice.■ N u m ă ru l de baze de date pe care le -a ţi m ai dezvoltat.

■ C an tita tea de răbdare pe care o aveţi la dispoziţie .

D in tre toate aceste a p titu d in i, răbdarea este p ro b a b il cea m a i im p o rta n tă ş i m a i greu de o b ţin u t. în t im p , ve ţi cunoaşte b ine activ ita tea firm e i, vă ve ţi dezvolta capacita tea a n a litică şi ve ţi co n s tru i destu le baze de date. Bazele de date n u s u n t n ic ioda tă com ple t dezvoltate de la p rim a încercare. La s fâ rş itu l celei de-a goua încercări, scopu l dum neavoastră va f i aproape în d e p lin it. Cu p u ţ in noroc, to tu l va f i gata la a l tre ilea atac. M ai m u lt decât p ro b a b il este, to tu ş i, că vo r f i necesare p a tru înce rcă ri p e n tru a rea liza u n pro iec t in iţ ia l solid. N um a i dacă aveţi răbdare să ajunge ţi la s fâ rş itu l fiecărei înce rcă ri, vă ve ţi pu tea în d e p lin i scopu l de a pro iecta o bază de date solidă.

S ub iec tu l p ro ie c tă r ii un e i baze de date poate f i foarte alunecos în tr -o lum e a te o riilo r complexe. Teoriile p riv in d proiectarea par să n u se aplice în lum ea bazelor de date - n u este adevărat. La în ce p u tu l un e i c ă rţi in tro d u c tive în bazele de date, to tu ş i, ap rox im a tiv două tre im i d in ele s u n t in u tile . Acest cap ito l şi partea a I l-a s u n t o com bina ţie fo rm ată d in teorie (o tre im e) şi m uncă grea (două tre im i).

V om în vă ţa făcând. Să trecem la treabă!

Proiectul dumneavoastră: o bază de date cu elem ente temporale şi de facturareSă presupunem că a ţi fos t angaja t de f irm a de avocatură Dewey, Cheatem, and Howe p e n tru a co n s tru i o bază de date cu elemente tem pora le ş i de fac tu ra re . In afară de câteva b a n c u ri despre avocaţi (precum „De ce re ch in ii n u m ănâncă avocaţi? D in so lida rita te profesiona lă .”) n u ş t iţ i prea m u lte d e ta lii despre activ ita tea d in tr-o f irm ă de avocatură. Pe baza n u m e lu i bazei de date, ş tiţ i, to tu ş i, două lu c ru r i:

M S is tem u l presupune colectarea de date tem porale.

■ S is tem u l presupune crearea fa c tu rilo r.

Page 57: Baze de date pentru incepatori (manuale facultate)

Acest lu c ru a r pu tea părea extrem de s im p lu , d a r uneo ri a r pu tea f i to t ce aveţi p e n tru început. Aşa cum ve ţi învăţa, obţinerea u n e i in fo rm a ţii poate duce la obţinerea a încă una, două sau m a i m u lte in fo rm a ţii sup lim en ta re ş.a.m .d. Poate că in fo rm a ţiile cele m ai im po rtan te pe care le p u te ţi deţine la în ce p u tu l u n u i pro iec t s u n t lo cu l şi m o d u l în care ve ţi găsi in fo rm a ţiile necesare p e n tru cons tru irea un e i baze de date. Acest sub iec t face ob iec tu l se c ţiu n ii urm ătoare .

Determinaţi cerinţele unei baze de dateC um ve ţi proceda p e n tru a decide ce cerin ţe trebu ie să îndep linească baza de date? E lem en tu l cheie p e n tru a decide acest lu c ru este reprezenta t de fa p tu l că ş t iţ i unde să găs iţi in fo rm a ţiile . în c iuda m a rilo r diferenţe d in tre firm e ş i departam ente le acestora, sursele de in fo rm a ţii s u n t aceleaşi. Pe m ăsură ce ve ţi dezvolta diferite sisteme de baze de date, ve ţi vedea că procesul de adunare a da te lo r p r iv in d cerin ţe le care trebu ie în d e p lin ite este foarte repetabil. P rin tre m ulte le surse de in form are în acest sens, cele m ai obişnu ite s u n t in te rv iu r ile , fo rm u la re le fo losite de f irm ă şi sistem ele existente.

InterviurileCu toate sistem ele de ca lcu l u tiliza te azi de firm e, to t oam enii s u n t cei care ia u deciz ii ş i fac lu c ru r ile să se în tâm ple . N u trebu ie să su b e s tim a ţi ro lu l co m u n ică rii şi - poate m a i im p o rta n t - n u su bes tim a ţi necesitatea de a ascu lta ce au de spus anga ja ţii u n e i firm e. Poate că aceşti oam eni n u po t vo rb i în te rm e n ii te h n ic i ai bazelor de date, dar, d in nou, a ic i in te rv e n iţi dum neavoastră - p e n tru a aduna şi „traduce ” aceste in fo rm a ţii.

P rin in te rm e d iu l in te rv iu r ilo r, ve ţi putea să în vă ţa ţi cum c ircu lă in fo rm a ţiile d in tr-o firm ă . V e ţi învă ţa ş i pe care anum e elemente de date se bazează oam enii ş i ce deciz ii ia u p o rn in d de la ele.

Sunteti pe cale să reconstituit¡ un puzzle.Când luâti interviurile, nu vă iimitati numai la personalul de nivel superior si la angajaţii următorului nivel ierarhic. Fiecare nivel al organizaţiei contribuie cu câte o piesă la acest puzzle. Fiecare este la fel de impor­tant, pentru că, fără toate piesele nu veţi putea niciodată avea imaginea completă asupra organizaţiei, deci nici asupra cerinţelor pe care trebuie să le îndeplinească baza de date pe care o construiţi.

CAPITOLUL 3 INTRODUCERE ÎN PROIECTAREA BAZELOR DE DATE 47

Page 58: Baze de date pentru incepatori (manuale facultate)

48 PARTEA A ll-A - PROIECTAREA PRIMEI BAZE DE DATE

NECESITĂŢI STRATEGICE VERSUS NECESITĂŢI TACTICEDeciziile pe care le ia o firmă sunt de două tipuri:

;Strategice ؛1S Tactice.

Deciziile strategice sunt acelea care se referă la aspecte precum adoptarea unei anumite linii de afaceri, începerea sau terminarea unei anumite linii de produse etc. Deciziile strategice afectează firma ca întreg. Din punct de vedere temporal, orizontul planificării strategice este de obicei mai mare de şase luni şi poate implica perioade de până la cinci ani. Este posibil să cunoaşteţi planurile companiei pentru trei, patru sau cinci ani, iar dacă vi se cere să proiectaţi o bază de date pentru firmă, trebui să cunoşteţi planurile ei strategice. Este probabil ca baza de date să trebuiască să susţină aceste planuri, furnizând informaţii pentru iuarea deciziilor.

în timp ce deciziile strategice sunt pe termen lung, deciziile tactice sunt pe termen scurt si sunt mai detaliate. Deciziile strategice se concentrează pe ceea ce o firmă doreşte să facă; în contrast, deciziile tactice se concentrează pe modul în care aceste lucruri vor fi realizate. De exemplu, o decizie strategică ar putea fi creşterea operaţiilor în următorii doi ani. Pentru a alimenta această creştere, ar fi necesară o creştere de 10% a veniturilor firmei. Deciziile tactice care susţin această strategie ar putea fi:

■ Creşterea timpului de plată a datoriilor pe termen scurt de ia 30 la 60 de zile;

■ Solicitarea plăţii facturilor de către clicenţi în 10 zile în loc de 30 de zile;■ Găsirea unor noi resurse de finanţare bancară.

Poate vă întrebaţi ce legătură au toate acestea cu dezvoltarea bazei de date. Totul! Datele sunt sângele dătător de viaţă al unei firme! Fără date, o companie nu poate lua decizii. Pentru a lua deciziile tactice despre care am vorbit anterior, o bază de date trebuie să ofere datele solicitate într-un format utilizabil. Prin interviuri, poţi afla multe despre ceea ce o firmă doreşte să realizeze şi, între timp, vei afla care sunt cerinţele pe care trebuie să le îndeplinească baza de date.

Formulare şi documente ale firmeiIn te rv iu r ile p o t o fe ri in fo rm a ţii de n ive l în a lt ş i o rie n ta te spre de ta lii. E xam inarea şi analizarea fo rm u la re lo r firm e i este p u n c tu l de începu t p en tru a p ă tru n d e în cele m ai m ic i deta lii. Ia tă câteva exemple de fo rm u la re ale u n e i firm e:

■ F actu ri;

■ Rapoarte;

■ D ocum ente de expediere a m ă rfii;■ Fişe de p o n ta j;

■ Sondaje p riv in d serv ic iile fa ţă de c lien ţi;■ O rice t ip de h â r t i i fo losite de anga ja ţii firm e i.

Page 59: Baze de date pentru incepatori (manuale facultate)

49CAPITOLUL 3 INTRODUCERE ÎN PROIECTAREA BAZELOR DE DATE

Pe p a rc u rs u l in te rv iu lu i, p o ţi descoperi că este extrem de im p o rta n t p e n tru companie să stocheze in fo rm a ţii despre utiliza to ri. Prin analiza şi exam inarea fo rm u la re lo r ş i docum ente lo r firm e i, p o ţi descoperi in fo rm a ţiile specifice despre c lie n ţi care trebu ie colectate. A lt exem plu s u n t fo ile de pon ta j. în p ro ie c tu l cu ren t, baza de date p riv in d evo lu ţia în t im p s i fac tu ra rea , s t ii că trebu ie să u rm ă re ş ti des tu l de de ta lia t evo lu ţia în tim p a lu c ru r ilo r . O foaie de pon ta j tip ic ă a r pu tea conţine urm ătoare ie in fo rm a ţii:

■ Num ele ang a ja tu lu i;■ Data;

■ O ra la care începe lu c ru l;■ O ra la care te rm in ă lu c ru l;■ A ctiv ita te a desfăşurată;■ Pro iectu l;■ C lien tu l.

E xa m in â n d acest exem p lu p r iv in d fo ile de p on ta j, devine m a i c la r ce in fo rm a ţii trebu ie să con ţină baza de date. C a p ito lu l 4 se concentrează asupra m o d u lu i de organizare a in fo rm a ţiilo r. în acest p u n c t, ceea ce este im p o rta n t este lo cu l în care găs iţi in fo rm a ţiile .

Este momentul să vă opriţi şi să respiraţi adânc. Este important să vedeţi cum funcţionează împreună interviurile şi formularele firmei. Este o reţea fără asemănare. într-o anumită măsură, interviurile pot oferi informaţii si despre detalii. Totuşi cea mai mare parte dintre detalii este oferită de analiza formularelor şi documentelor firmei.

Sistemele existenteEste foarte p ro b a b il ca scopu l p ro ie c tu lu i dum neavoastră să fie în locu irea u n u i sis tem existent. Poate că dezvoltarea firm e i depăşeşte capacită ţile s is te m u lu i exis ten t. Sau poate că des ignu l bazei de date existente n u îndep lineşte cerin ţe le to t m ai m a ri ale firm e i. P entru a înţelege cerin ţe le de design ale bazei de date, va tre b u i să în ţe legeţi s is tem u l cu ren t. M ai im p o r­tan t, tre b u i să în ţelegeţi care su n t nea junsurile acestuia. Dacă n u cunoaşte ţi şi n u în ţe lege ţi problem ele legate de s is tem u l existent, p ro b a b ilita te a de a perpe tua aceste prooblem e ş i în n o u l sistem creşte dram atic .

Din multe puncte de vedere, componentele interfetei cu utilizatorul ale unui sistem existent pot fi considerate documentele si formularele firmei. De exemplu, poate că nu există fizic bucata de hârtie care conţine foaia de pontaj, ci probabil că angajaţii introduc informaţiile respective folosind un ecran special. Ca dezvoltator al bazei de date, va trebui să stiti că nu există o linie de demarcaţie clară între sursele disparate de informaţii. Mai mult, nu există nici o ordine stabilită de trecere în revistă a diferitelor elemente. în final, este foarte posibil să trebuiască să revizitezi aceleaşi surse de informaţii. De exemplu, după ce ati analizat un anumit docu­ment, va trebui să reveniţi la intervievarea angajaţilor pentru a obţine alte clarificări privind cerinţele asupra bazei de date.

Page 60: Baze de date pentru incepatori (manuale facultate)

DATEPARTEA A ll-A - PROIECTAREA PRIMEI BAZE50

Vă amintiţi mantra răbdării? Procesul de colectare a cerinţelor privind baza de date ar putea să vă pară nesfârşit. Unii oameni cred că sistemele informatice si bazele de date nu sunt niciodată complete, deoarece mediul de afaceri evoluează si se schimbă în continuu. într-un anumit moment veţi fi adunat destule informaţii pentru a realiza designul iniţial al bazei de date, dar numai realizarea designulul iniţial nu înseamnă că ati încheiat procesul de colectare a informaţiilor privind cerinţele asupra acesteia. Nu uitati, va trebui să repetat؛ procesul de două, trei sau patru ori înainte de a obţine primul design al bazei de date. Pe măsură ce acumulaţi experienţă, vă veţi familiariza cu toate aceste lucruri.

în acest p u n c t, ş t iţ i unde p u te ţi găsi sursele de in fo rm a ţii p e n tru cerin ţe le asup ra bazei de date. A cum în trebarea este cum să a lcă tu ieş ti u n design in iţ ia l. R ăspunsu l este u n m odel al bazei de date. Procesul de creare a p r im u lu i dum neavoastră m odel a l u n e i baze de date este scopu l se c ţiu n ii urm ătoare .

Introducere în modelarea bazelor de dateSe spune că o im ag ine face cât o m ie de cuvin te . N ică ie ri n u este m ai adevărată această zica lă ca în lum ea m ode lă rii bazelor de date. Aşa cum a ţi văzu t, bazele de date s u n t m a i m u lt decât g ru p u r i de tabele. Bazele de date grupează e n tită ţ i în ru d ite ale firm e i. P uneţi-vă în trebarea ce este m a i uşor de rea liza t: o lis tă s ta tică a nu m e lo r de tabele sau o diagram ă care prez in tă tabelele ş i re la ţiile d in tre ele? In d ife ren t dacă s u n te ţi sau n u o persoană cu a p titu d in i tehnice, este m ai uşo r de lu c ra t cu diagram ele. Diagram ele per­m it oam en ilo r să în ţeleagă m ai uşo r problem ele şi conceptele d ific ile .

Să considerăm de exem plu, p lanu rile unei c lăd iri. P riv indu-le , p u te ţi înţelege ra p id scopu l ş i s tru c tu ra c lă d ir ii. P lanurile realizează m u lt m ai m u lt decât ar pu tea cuv in te le să spere că vo r realiza vreodată. în tr -u n a n u m it sens, u n m odel a l bazei de date este ca u n p la n al acesteia. Scopul acestei sec ţiun i este de a vă o rie n ta pe calea creă rii p r im u lu i dum neavoastră m odel al un e i baze de date.

Cum arată un model al bazei de date?In ca p ito lu l 2 am fă cu t o in troduce re în p r im u l m odel al un e i baze de date. P entru a recap itu la , fig u ra 3.1 ilus trează m ode lu l bazei de date N orthw ind Traders d in Access.

Page 61: Baze de date pentru incepatori (manuale facultate)

51INTRODUCERE ÎN PROIECTAREA BAZELOR DE DATE

table ،٦ Design viewObjectsJS2a؛j؛2؛B22

Slw ،bt® |CompanytamContactNameContactTitle .AddressC*yRsgton

OrdcrIDProductIDUmfPrtceQuantity:

ProductlDFroductNamstjppterID؟

©CategoryuartityPefUni؛ ^ ،

Lk-JtPrKeUn،sInS،ockUnisOnOtderReordertevelDiscontinued

OrderiDCustomer ID EmployeeID OrderCate

؛T-i.-ed؛•؛■:5hţ>pedDa،eSNpVlaf؟؛،>FteShlpNameShiipAddress

pC،y5؛hShipP.egionshppoiucccj

Customer IDCompanyNamContactNameCortactTiUeAddressayRegion

GroupsCategory IDCategoryNameDsscrlp،tonPicture

Shipper IDCompanyNarnePhone

[ordertdEmpbyedDLastNam«

fitstfJame

Date؛ * ،d،،؟؛ ie

،-a t

Vizualizarea Relationships vă perm ite să vedeţi toate tabelele d in tr-o bază de date şi re la ţiile d in tre ele.

FIGURA 3 .1

Dacă p r iv iţ i fig u ra 3.1, ve ţi înţelege im ed ia t scopu l bazei de date. C a p ito lu l2 a s tu d ia t acest scop, exam inând m odelu l. A cum vom face o in troduce re în com ponentele m o d e lu lu i une i baze de date.

CÂTEVA CUVINTE DESPRE INSTRUMENTELE DE PROIECTARE A BAZELOR DE DATEInstrumentele de proiectare a bazelor de date pot fi pur şi simplu creionul şi hârtia. Ele pot fi şi foarte complexe, încât să cheltuiţi pe ele câteva sute de dolari sau câteva mii de dolari. Sam Snead, unul dintre cei mai mari jucători de golf ai timpului, relatează cum a realizat lovitutura de 76 puncte pe un teren dificil în cartea sa, The Game/Love. Lecţia pe care o primim de aici nu se referă la instrumentul pe care îl folosim, ci la eficienţa cu care îl folosim. Un desen realizat cu creionul pe un petec de hâtie poate fi la fel de bun precum unul realizat cu un instrument care costă mii de dolari. Bine, poate că am exagerat puţin. Totuşi, nu trebuie să faceţi o ipotecă pentru a vă procura un instrument bun de proiectare a bazei de date. Pe piaţă există două astfel de instrumente relativ convenabile:

■ Microsoft Visio- De la preluarea de către Microsoft, Visio a devenit parte a suitei Microsoft Office. Pentru mai multe informaţii, intraţi pe site-ul Microsoft Visio Web, la h t t p : / / w w w .m ic ro s o ft. c o m /o f f ic e / v is io / .

■ Resolutior¡ xCase - acesta este un instrument complet pentru proiectarea bazelor de date care funcţionează cu SQL Server, Access, Sybase, Informix, DB2 şi multe alte baze de date existente pepiaţă. Pentru mai multe informaţii, intraţi pe site-ul Resolution xCase, la h t t p : / /www. x c a s e . com.

Page 62: Baze de date pentru incepatori (manuale facultate)

Desigur, dacă aveţi nevoie de instrumente foarte specalizate, poate veţi fi interesat de:

■ Computer Associates ErWin-Informaţii la h t t p / ؛ / c a . com /p roduc ts / a im / e rw in . htm.

■ Visible Analist DB Engineer- Informaţii la h t t p : / /www. v i s i b l e . com/ d a ta a p p /d a p p p ro d s /va d b e .htm.

în scopul de a ilustra modelarea bazelor de date si noţiunile înrudite acestei teme, această carte va utiliza Microsoft Visio.

52 PARTEA A ll-A - PROIECTAREA PRIMEI BAZE DE DATE

Crearea primului modelSă facem u n pas înapo i ş i să începem cu u n pro iect gata rea liza t p e n tru a vă pu tea fa m ilia riza cu crearea m o d e lu lu i grafic al bazei de date. în această s itu a ţie ipo te tică a ţi id e n tifica t urm ătoare le e n tită ţi:

■ C lien ţi:

11 Comenzi;■ E lem ente ale com enzilor.

Toate conceptele din această secţiune pot fi utilizate cu instrumente simple precum creionul şi hârtia. Instrumentele de proiectare grafică automată uşurează o parte din muncă, cum ar fi faptul că se asigură că sunt create chei externe în tabelele copil şi descifrează dacă este vorba despre o relaţie unu la unu sau unu la mulţi. Unele Instrumente automatizate pot chiar realiza scripturi care creează automat definiţii ale bazei de date pornind de Ia model. Mai mult, unele instrumente sunt suficient de inteli­gente pentru a sincroniza modelul şi baza de date ori de câte ori este modificat modelul. Toate aceste funcţii sunt drăguţe, dar nici una dintre ele nu este crucială când este vorba de aplicarea conceptelor de modelare şi a notaţiilor. Nu uitaţi, important este violonistul, nu vioara!

C ând la n sa ţi V isio , s u n te ţi în tâ m p in a t de o casetă de dia log care vă in v ită să alegeţi te m p la te -u l (şablonul) de desen p o tr iv it (vedeţi f ig u ra 3.2).

D upă ce a ţi selectat fo ld e ru l Database, ve ţi vedea şase te m p la te -u ri (vedeţi f ig u ra 3.3). P entru acest m odel, selectaţi tem p la te -u l Crow’s Foot ERD.VST. Dacă vă a m in t iţ i cele d iscu ta te la în ce p u tu l acestu i cap ito l, ac ro n im u l ERD vine de la E n tity R ela tionsh ip Diagram .

D upă ce a ţi deschis şab lonu l, p u te ţi u tiliz a im ed ia t V is io Design Surface. V is io Designer este prezenta t în fig u ra 3.4.

Page 63: Baze de date pentru incepatori (manuale facultate)

53CAPITOLUL 3 INTRODUCERE ÎN PROIECTAREA BAZELOR DE DATE

| ؟ ! ' £ ( ؛ ؛ J*؛ ] v i؛j ؛r ^ Sokjfion :٠١ ¿،Loc

I SFen ] Cercei j

Help (

O industrial Process Oírseme، Diagram CU MapsC j Mechanical Enginsering Q j Network Diagram

JAEC_ ؛_J Annotation

_j Block Diagram : ]_ Business Diagram

__J Databasej Electrical and Electronic u3 Software Diagram_ ؛

Management O Visio Extras _ ، * * Fac [1؛filar،■. fcowiig.YST؟ ( JjFiowcKart

FIGURAVisio poate crea m ulte t ip u r i de desene tehnice, in c lus iv diagrame ale m odelelor de baze de date.

■a d B3 ؛.؛............—,p f 7¿rI I

^ I1 »«H

V - î؟؛.....Open ;•: Original ؛ ٢

V؛CO ؛٠ ;r!؛ ؛ ReadOn ؛

l j Badwan.V5Ţ

j Map Database Wizard.VST¿؛ Object Role Modeling.VST

Foot ERDVST '؛name: ]Dow *؛F

Template ('.vst؛ ) :Fîtei o،'type

—...........................-.............■Descriptionloo، ípacíbstion '؛,j Crow's Foot ERD: Use Ihs Crow

s(،cmhip dagrarr.s, data modeing؛ ؛ ,language foi eritily-r ؛ tetafonal ،؛,r relaiiaial data models, conceptual data mods

.! data «ystems. and dal abase dasgn

FIGURA 3.3Visio conţine cinci modele de proiecte ale bazei de date. Cel m ai comun d in tre acestea este Crow’s Foot ERD.

Suprafaţa de desenBara standard

FIGURA 3 .4Visio Design Surface este lansat sub form a unei pagin i albe. Aveţi ladispoziţie m ulte bare de ins trum ente pentru a crea absolut orice tip de form ă sau orice con tro l cu orice atribu te .

Caseta de instrumente Design Symbol

Page 64: Baze de date pentru incepatori (manuale facultate)

DATEPARTEA A ll-A - PROIECTAREA PRIMEI BAZE54

P orn ind de la o sup ra fa ţă de desen liberă , su n te ţi gata să crea ţi p r im u l gra fic . P rocesu l im p lic ă tragerea s im b o lu r ilo r de desen d in caseta de in s tru m e n te Design Sym bol în sup ra fa ţa de desen. In acest proces ve ţi parcurge paş ii u rm ă to ri:

1. P lasaţi o en tita te pe sup ra fa ţa de desen.2. A dăuga ţi a tr ib u te acestei e n tită ţi (nume, câ m p u ri ş i chei).

3. S pec ifica ţi re la ţiile în tre en tită ţi.

P entru a înţelege p r im ii doi paşi, p r iv iţ i figu ra 3.5. Aceasta prez in tă entita tea C ustom er cu u n câm p de fin it. V or m a i f i şi alte câm puri, desigur. O rd inea în care trebu ie in troduse câm purile şi entită ţie în care vor f i in troduse acestea s u n t d iscu ta te în ca p ito lu l 4.

!11؛ ■j j ؛•»؛a o o x a I h

{ ^ 1¿ ، a g□ • ' • ١» J......|H ornai

Wndsw Hefp ؛p؛Ins«، Fwmat Tools Sh ،“١٩٠ ٤؛،، ١٨؛

Ţ|fyÂ5r~-• b / s-----Twrjisa~ ؛١r S ؛؛؛؛؛ ' Horn،، 3 JL--------؛ .jner\

Pagţi/i Statu?: jRMdy

là Dow's Feat ERP

0 ] ٠ ’٠

FIGURA 3.5Entita tea Custom er are două atribute: num ele en tită ţii şi câm pul cheie prim ară.

Să ne oprim puţin pentru a relua nişte concepte importante. Deşi subietul alegerii câmpurilor si a entitătiior în care acestea trebuie incluse este abordat abia în capitolul următor, unele câmpuri trebuie deja adăugate chiar în acest proces. Rolul acestor câmpuri este de a susţine diferitele relaţii dintre entităţi. Este vorba despre câmpurile cheie primară şi cheie externă (străină). Aceste concepte au fost introduse în capitolul 1 şi exemplificate în capitolul 2. Dacă trebuie să revedeţi rapid aceste noţiuni, este mai bine să o faceţi acum, înainte de a trece mai departe.

Page 65: Baze de date pentru incepatori (manuale facultate)

CAPITOLUL 3 INTRODUCERE ÎN PROIECTAREA BAZELOR DE DATE

D upă ce a ţi văzu t cum arată en tită ţile în Visio, să exam inăm câteva m om ente n o ta ţia un e i e n tită ţ i (vedeţi f ig u ra 3.5).

T ip u l diagram ei create este Entity Relationship Diagram (ERD) - d iagram a re la ţiilo r în tre en tită ţi. O entita te d in ERD este a lcă tu ită d in tr -u n dreptungh i, num ele e n tită ţ ii şi lis ta câm purilo r. D upă cum vedeţi, n u este nevoie de u n design specia l p e n tru a crea diagramele. Aşa cum vom a ră ta în cele ce urm ează, to tu ş i, in s tru m e n te le de design fac m unca m u lt m a i uşoară.

Crearea e n tită ţilo r în V is io este foarte sim plă. Paşii u rm ă to r i vă ghidează p r in procesu l c re ă rii e n tită ţilo r Orders ş i O rder Line Item s:

1. Selectaţi s im b o lu l e n tită ţ ii d in caseta de in s tru m e n te Design Sym bol.2. Ţ in â n d apăsat b u to n u l stâng al m ouse-u lu i, trage ţi s im b o lu l pe s u ­

p ra fa ţa de desen.3. După poziţionarea sa pe suprafaţa de desen, eliberaţi bu tonu l mouse-ului.

V a f i creată astfe l o nouă entita te .

4. Selectaţi en tita tea nou creată d in supra fa ţa de desen şi apăsaţi Ctrl+C p e n tru a copia en tita tea în W indow s Clipboard.

5. A păsa ţi C trl+ V p e n tru a l ip i o nouă en tita te pe sup ra fa ţa de desen. Aceasta va a ră ta ca în f ig u ra 3.6, după ce a ţi a ra n ja t en tită ţile .

*قفو.آه~

أ ثج ئ ف ' مممة * و * 0 ٠ ® • *ء •”ن

View Insert Fwm، TocJi Shspe Wrefcw Hete ء ه جل H» أ

٠ م م ٠• ٨ ©.>?; □ ئ ة أ ق ه ءآ | : ءو •ة و و هال أ / ' |مح د ماءاك آ . - T-xJ: م0-,اس ن

I - ج * ,ر • ؛٢٠ * M• * ي عئ ع —¡ LjrţCK،،، إ — Noitr

±rPagei/i

CuSorretهأتد،0 ءآا اآ

u ه سا ب ءل آمسم»م <>

F IG U R A 3.6

Cele două e n tită ţi libere din suprafaţa de desen reprezin tă entită ţile Orders şi Order Line Items, respectiv.

Page 66: Baze de date pentru incepatori (manuale facultate)

DATEA - PROIECTAREA PRIMEI BAZE¡؛- PARTEA A

6. Selecta ţi e n tita tea d in m ijloc , executa ţi clic dreapta şi se lecta ţi Add A ttr ib u te s d in m e n iu l pop-up. D e n u m iţi en tita tea O rders şi executa ţi c lic pe OK. F igu ra 3.7 prez in tă p r im u l tab d in caseta de dia log Define E n tity .

مق

ج ء>!لة ذل ۴ X t د ه €ا أ t ث a o م ٦ y» م م S ■"،( A

؛آ ■ء ه ء إ ص ه • ة ٠ ء • ء ٠ءد ٠ هت ج ،ه و خ ظ ةا ر . ٢٠ وعت دء' ق ت ؛1د

T«،.: foB ţiow Narnc | ' إ " " يسك

0 — — ء * : اإ B~Dcw..'. أل ى -

QOov/tFootEBOع

Gen،Mlا ممسائ،

ا;ا| ه. Harne يم

س س ، ء ؛؛how ؛

٣ Show Biimsty key؛ on>؛

٢ ؛how سا لامص

keys ءأ $مممأءآممهب

I or. ] C«ncd I &<*■ j

FIGURA 3.7Tab-u l General d in caseta de dialog Define E n tity vă perm ite să specificaţi num ele en tită ţii şi diferite atribu te de afişare în diagramă.

7. Repetaţi pasu l 6 pen tru cealaltă entita te, denum ind-o OrderLineltem s.8. Revenind ظ entitatea Orders, repetaţi pasul 6, selectând tab -u l Attribu tes

d in caseta de dia log Define E n tity .

و . Executa ţi clic pe b u to n u l New pentru a crea u n nou câmp. Denumiţi-1 O rderID , specificând că acesta este cheia p rim a ră şi spec ifica ţi t ip u l de date ca Integer. F igura 3.8 prez in tă cum va ară ta caseta de dialog.

ا ه . Repetaţi pasu l 9 p e n tru entita tea O rderLineltem s, adăugând u n câm p n u m it O rderL ine ltem ID . D iagram a va a ră ta ca în f ig u ra 3.9.

A b ia acum incepe d is trac ţia cu adevărat şi abia acum iese în e ^den ţă puterea u n u i in s tru m e n t de pro iectare autom ată. D upă ce a ţi crea t e n tită ţile şi cheile prim a re asociate lo r, p o t f i create re la ţiile d in tre e n tită ţi. Crearea re la ţiilo r, ca şi a e n tită ţilo r, este foarte s im p lă dacă u rm a ţi paşii:

1. Selectaţi s im b o lu l re la ţ iilo r d in caseta de in s tru m e n te D esign Sym- bol.

2. Trageţi s im bo lu l I'elaţei pe supra fa ţa de desen. D upă plasarea pe SU- prafaţă, ve ţi vedea l in ia re laţie i. îna in te de a lăsa lin ia , as igura ţi-vă că e ^ re m ita te a ei d in stânga atinge u n u l d in tre marcajele albastre d in en tita tea Custom er. Dacă a ţi efectuat corect operaţiunea, extrem itatea stângă va ه roşie când selectaţi l in ia re la ţie i (vedeţi figu ra 3 ه1. ا .

Page 67: Baze de date pentru incepatori (manuale facultate)

FIGURA 3.8Tab-u l E n tity din caseta de dialog Defîne E n tity vă perm ite să precizaţi câm purile şi atribute le corespunzătoare lo r pentru orice entitate.

CAPITOLUL 3 INTRODUCERE ÎN PROIECTAREA BAZELOR DE DATE 57

FIGURA 3.9M odelul ERD cu tre i en tită ţi, flecare având defin ită o cheie prim ară.

ireert fwma، Too.s Sh** wnjo« net .« ]ifl.x ٤* «٠٠٠٠ *J H

o ?>؛ o ، i « ، i ، a . a . p o 5T 3/ - î؛ v< * ، « ، H> ؛، O S ، I ■ - r ؛□ s

L#W j-------Ncniv ٠. ،٠ ] ■JL • ?1 ■ t؟ ÎH ٠ ١٤ L؛ ، ¿ 3 g ،Jk <؛؛ • X • £ • ٠ • Q - •٠ 1 j Na.mil ٢٠ * • - * 2 • . ؟ ? - =

a ■٠■ ؛، : E l٠٠ *WaKAihy

؛——١Dotat«

rLm،efflt |،؛cuttonttr | jo>dtrt J |c*d|Otd»LinelemlD i| ؛ |a*toif،»IO | jOnleflD

٢. ;'١٦ . ؛ '■ -.......................... ............................Mm:' R«ady؛، Pai}، J/l؛

؛،3 *٠٠ '•* «.-•ft» ».!> ~ ،•؛••? & ٠؛ ؛6 '?< ٠٦ ،٦٠. ® ١؟، ' ]& ® H 0؛ a

î A * ' A . X۶ ;•۶ ؛: ؛*; i: » * “ ٠ 1 ٠ ؛*' * ؛٠ ٠ J؛؟Tw 3 IV،■•¿ 3 j5T T^؛٠ ' j t f ‘ g — y'¡؛" : " "1 c z j d ! s ؛:•٠ ؛4-2، • ^¿ ,Lt e] - — oEDo wf g

aDoWiFocilERD

:٥٠™،A،tnbuto* iras®—---------- a«w i1 a«w» [

DefineABiWe................... ■■■■ ...............

M*n*:j535D-----— PP.™vi،y^ IMHB3 lZ l

P . v jSi» .p T ~ Daf»JiV،،je: j

| 0 • ] Canal [ [ Hat» |

-LiS .

CuslomalD

I_ _ _ J

0 a

Hwyt m Q.75 n, tvtjc = 0°

Page 68: Baze de date pentru incepatori (manuale facultate)

DATEPARTEA A ll-A - PROIECTAREA PRIMEI BAZE

x & ؛ [١٠٥؛ j 3 ؟،، t t X ٥ ٢،،؛ ١ ٠

i ؛ ؛& ei؟ a؛■؛؛ ٢، ؟a j١؛ § ؛ 4، ٠ ؛< ' j:P 'M؟ A- ٠ a

5h،p« Vrindcw H،lp ،؛F،e B*، View Insert Fotim، Too

a î ؛ / U■ ٩ ٠ lCorwcloi

Teii: f ٠١ ؛؛٠٠■ Co،v،،clot

:S l7 ."a . iŢ g'.V؛f r' ؛Lne

I ..Cticno ؛

I

ÎCtow’îFoolERD B @ ؛1 i:*-'1 Ricvnrtt &**؛؛ rtUiontr*

ta

Paoe 1/1 Statut: ; Raafr

Pentru ca sarcinile autom ate să funcţioneze corect, este im portan t ca flecare capăt al lin ie i re la ţie i să atingă u n m arcaj a lbastru ataşat en tită tii.

FIGURA 3.10

3. Pasul u rm ă to r este de a ataşa en tita tea Orders la capă tu l d in dreapta al l in ie i re la ţie i. E xe cu ta ţi c lic pe el ş i trageţi-1 spre u n u l d in tre m arcaje le albastre ale e n tită ţii. D iagram a va a ră ta precum cea d in fig u ra 3.11. p e n tru ca ea să fie clară, a fos t m ă rită la ap rox im a tiv 150%.

؛ ' [ »Q, <3. |i5 «١٤ O X t j X ؛

■ § ،- ؛؛ iù ،1 ؟٠

hac» VATdow h«p؛، ؛Ed، View In،«، format Too ۶٠٠

،،An ؛ ٩٢ Te>j. j floimal ■*j i، r3 b3؛ jj t؛ j " }1 11 Nwncl l¿ . ’ — ' — * M ' -A • ■Ft H I !lamal

trtr, xijUiL! ٢٠, »٠

SI

FIGURA 3.11L in ia relaţie i conectează acum en tită ţile Custom er şi Orders.

Page 69: Baze de date pentru incepatori (manuale facultate)

CAPITOLUL 3 INTRODUCEREÎN PROIECTAREA BAZELOR DE DATE

4. Repetaţi pasu l 3 pentru o relaţie în tre entită ţile Orders şi OrderLineltem.

S -ar pu tea să vă în tre b a ţi unde este autom atizarea. Până la urm ă, dum nea­voastră a ţi fă cu t toa tă treaba. Aşteptarea a lu a t s fâ rş it: acum ve ţi vedea rezu lta te le m u n c ii dum neavoastră îndâ rjite !

D in m e n iu l Shape, se lecta ţi Update Foreign Keys. V oilà ! Pe baza re la ţiilo r, in s tru m e n tu l a ş t iu t ce chei s tră ine trebu ie defin ite . De exem plu, p e n tru ca en tita tea O rder să suporte o cheie s tră in ă de la C ustom erlD , trebu ie de fin it u n câm p Custom erlD . Aşa cum ve ţi vedea în cap ito lu l urm ă to r, este opţiona l să p ă s tra ţi une le câ m p u ri în ambele e n tită ţi, dar câm purile de la acest nive l n u s u n t opţionale. De aceea d iscu tăm a ic i despre aceste câm puri. M ai s im p lu fo rm u la t, dacă n u aveţi câm puri cheie externă, n u p u te ţi avea re la ţii. De fap t, re la ţiile s u n t esenţa u n e i baze de date re la ţionale . Dacă a ţi parcurs corect paşii, diagram a dum neavoastră va ară ta ca în fig u ra 3.12.

îiâ

Tools Sheçe W،r،3c« Help ،؛،i Wew ir،*« F»(r،؛FI« E،*J v؛fÏ5 ô r؟ ^٩ ٠ ,x ■ a x e >؛, o □ ١

a . ٨ •a a ؛ <٠ ؛٠؛ :؛ ؛؛= » * * ;j Eff؟ □ • a • V • / • A % 3 S5

D g» B ■ & & > :Te*l: | ؛٠ ]

il I Noimei i ١، ' : ٢٠- ' 2* * ؛*؛؛ ’ *■؛ ’ Une: } Hamei 2 •JL

orders ’ OrderUneltems] •

OraerLineitemlD ،٠.................. ^,J OrderlD(IE( -------------------------OrderlD(FK ؛ ' urderl

J -OraerlD jCustomerlD (FK) (IE)

!________

Pige 1/1 Statu»: RevK

:٠ 5 E l.Cray UJI'IMWR -؛٠ ■:n•: ؛

ia

FIGURA 3.12M odelul bazei de date este complet acum, conţinând en tită ţi, chei externe si re la ţii.

Totuşi, de ce se numeşte „crow’sfoot” (piciorul ciorii)? Figura 3.13 explică de ce modelul are acest nume aparent demodat.

Page 70: Baze de date pentru incepatori (manuale facultate)

DATEPARTEA A ll-A ■ PROIECTAREA PRIMEI BAZE60

كمتHalp ،،*«ء ١٧٢ » fumtl Tads )ه-;ص vww ؛Ed ج

ö ؛2؛ D ء n ه X إل د فأ ه €امر0■ماإك، o دء كث مم م ٦ A م;■;٦٢'ئ؛و ء ر ٥ ،.؛ *11 ء ء ئ؛ ي ي ' و

ه ؟ ة ئ ة ه م ; ءم ئ ق با، ة أجد * أ:-محت '’ء ة ت * ج هء ءل م ء : آ ء ب ة ' -ر ’ ء =م* * - ¿i ء;\—— ءل“مب ام

ءج؛جبمءب هText |NonMl

¿IDoWs Fool ERD

Orders

٠ ٢ ٢١^٥ □CustomerlD (FK) (IE)

وء-مب

0 linie simplă ilustrează partea „unu” a relaţiei

Piciorul de cioară ilustrează partea „la mulţi” a unei relaţii

Piciorul de cioară ilustrează partea „la m u lţi" a unei re la ţii. O lin ie sim plă ilustrează partea „u n u ” a relaţie i.

FIGURA 3.13

Crearea unei baze de date reale din m odelul logic al bazei de dateU n in s tru m e n t au to m a t n u este de prea m are folos dacă n u poate supo rta u n m odel log ic al bazei de date - adică p la n u l une i baze de date - şi crearea un e i baze de date reale. Ia tă de ce pro iectarea şi im p lem entarea bazelor de date se realizează îm preună. Lucrând cu modelele, aveţi o şansă de a vizualiza conceptele ş i ide ile îna in te de im p lem entare . Acest proces este de departe m u lt m a i e fic ien t decât u tiliza re u n u ia de t ip u l „încercare ş i eroare” (pe o bază de date reală, p e n tru a vedea dacă lu c ru r ile m erg bine).

V is io ş i alte in s tru m e n te p e n tru pro iectarea bazelor de date au fa c ilită ţ i de creare a bazelor de date reale (fizice) d in modele logice ale bazelor de date. In cazul p ro g ra m u lu i Visio , există capacitatea de a crea o bază de date în Access, ia r procesu l este s im p lu , deoarece este a ju ta t de o ap lica ţie wizard. Selectaţi Tools, M acro, Database, Create Database W izard p e n tru a lansa ap lica ţia w iza rd de creare a bazei de date.

Asiguraţi-vă că nu există erori ERD. De exemplu, o relaţie care nu este conectată duce la o eroare ERD. Dacă modelul conţine erori, baza de date rezultată va avea aceleaşi erori. înainte de a crea baza de date lansând Create Database Wizard pornind de la model, asiguraţi-vă că aţi actualizat cheile externe.

Page 71: Baze de date pentru incepatori (manuale facultate)

61CAPITOLUL 3 INTRODUCERE ÎN PROIECTAREA BAZELOR DE DATE

D upă parcurgerea paş ilo r d in Create Database W izard, ve ţi obţine o nouă bază de date în Access. D ife rite le a tr ib u te de fin ite în m odel s u n t pre lua te de baza de date fiz ică. F igu ra 3.14 ilus trează rezu lta te le ru lă r i i ap lica ţie i w izard Create Database.

- i P l .xj

Objects j Create taUe m Design view ؛؛؛][Create table by using weard ][؟٤

5?) Create table by enteting data

E3 Customerm Ordertjneltems

S3 Orders

FIGURA 3.14Create D ata­base W izard a u tiliza t m odelul creat în acest capitol p en tru a constru i această bază de date în Access.

Crearea unui model logic al bazei de date pornind de la o bază de date fizicăCe zice ţi de s itu a ţia inversă, când aveţi la d ispoziţie baza de date fizică, dar n u aveţi u n m odel? D in fe ric ire , V is io are capacita tea de a efectua şi opera ţiunea inversă, de a crea m ode lu l logic p o rn in d de la baza de date.

P entru a im p o rta o bază de date, parcu rge ţi paşii:1. D in m e n iu l File, selectaţi New, Database, Map Database W izard.

2. In d ic a ţi loca ţia bazei de date pe care a ţi creat-o anterio r.3. A legeţi toate e n tită ţile p e n tru m apare.4. C reaţi o diagram ă Crow’s Foot şi lăsa ţi opţiunea Layout aşa cum este.5. Selectaţi prezentarea tu tu ro r a tribu te lo r şi a cheilor străine. Lăsaţi cele­

la lte a tr ib u te aşa cum sun t.6. D a ţi u n t i t lu şi o descriere p e n tru d iagram a bazei de date.

7. E xecu ta ţi clic pe b u to n u l F in ish .

F igu ra 3.15 prez in tă m odu l cum va ră ta m ode lu l re zu lta t în Visio.

Page 72: Baze de date pentru incepatori (manuale facultate)

PARTEA A ll-A - PROIECTAREA PRIMEI BAZE DE DATE

f؟ ٠١? m i J >٩, ،؟> & .Q o 0 x t t J ١

3 fíe E،،t vvm Irwrt fam * IoíJí Sh*>، ww«■ Help؛¿

U Í 'C p t z J B / ٠ ٥Aiul ٢؛

!١:■؛؛ ؛ ؛ ■ & ؛ . ؛”، ؛' ؛ ،ü . ؛ s ؛؛، ، k ؛ - - /C - O - i •٠ ؛ “ ؛3 >- =■3 ؛1 ١ Î ؛ U ؛ —٠ ؛

uei LiiteiiciitiL.’ ،،٢٦٢■;OrderlD (FK) (IEJ

Order EntryDatabase Model Edit Date 7/28/2001 12:54:41 PM

This database was created in Chapter

Microsoft Access |Pev 0 Creator Administrator

Filename: Drawing؟، Company. ٢٠٧ Company

[::_jDzobast

r~ P«i»ür- Statut; i R«W

Map Database W izard, c itin d o bază de date existentă, a creat acest model al bazei de date.

FIGURA 3.15

Modelarea logică a bazei de date Time Entry and BillingA cum , după ce a ţi în ţe les ce este m odelarea bazelor de date, p u te ţi u tiliz a tehn ic ile învă ţa te p e n tru p ro ie c tu l cu re n t - baza de date Tim e E n try and B illing. Desigur, p r in in te rv iu r i şi analiza docum entelor şi fo rm u la re lo r firm ei, a ţi id e n tif ic a t urm ătoare le e n tită ţi:

■ C lien ţi:■ A nga ja ţi:M Cazuri:M F ac tu ri;

D e ta lii p riv in d evo lu ţia în tim p .

în c u rs u l analizei, a ţi id e n tifica t urm ătoare le re la ţii:

■ U n c lie n t are u n u l sau m ai m u lte cazuri;■ U n c lie n t are u n a sau m ai m u lte fa c tu ri;

O fa c tu ră este a lcă tu ită d in u n u l sau m ai m u lte deta lii.M T im p u l este con to riza t în fiecare caz.

A n g a ja ţii alocă tim p fie că ru i caz.

Page 73: Baze de date pentru incepatori (manuale facultate)

63CAPITOLUL ق INTRODUCERE ÎN PROIECTAREA BAZELOR DE DATE

F igu ra 3 .16 prez in tă m ode lu l bazei de date în acest p u n c t a l procesu lu i de dezvoltare. Aşa cum ve ţi vedea în curând , există deja câteva asp e rită ţi care trebu ie netezite.

- jsaWrcfcw Help ٢٠١٠، أ00ء، ءءدا؛ة lnsert ءهء ٧٠٠٠ Fk و

?k ء و د ى ة ' ه ئ ئآ ةاإ*4 ' A ع' A *،ق : ة ة ؛ ء ء و ء / ه ق ء ؛ ة “ = ء :ة و

' %îaث-م-ءجب ة :م هءأ'إمم'ء &؟ * .S . □ -٠ . ة . أ . أ ا ، ^ZEI":rrrrrr:.

ء C-3-;e:DآClieriao (Fk)(IE

Empioyee

' EmoioveelD

ر£ا(م أم .

CaseID (FIO (IE) Emplcr.'eelO (FK) (IE) invoiceiD (FK) (IE)

7/2S/20D1 1;d8:27PM

etosupport؛Datad3

TargetDB Access |pev ١ Creator: John V Petersen

Filenams tdbDBVvsd Compsny Mar ءهةح'مء اء .mc

Terf 7i~ ٢٠ ؛،،■.؛

Lris.' j ■ ■ Homni ى ' ؛=؛ *

¡1

FIGURA 3.16Versiunea 1 a bazei de date Time E n try and B illing este a lcă tu ită d in cinci en tită ti.

P a y ljl Statut: ■ Ready

Editarea textuluiA ţi observat fo rm a d in d iagram a d in fig u ra 3.16 care conţine in fo rm a ţii descrip tive despre grafic? Form a este n u m ită t i t lu l bazei de date ş i este loca liza tă în caseta de in s tru m e n te Design Symbol. D upă ce a ţi p lasa t t i t lu l bazei de date pe sup ra fa ţa de desen, fiecare bloc de te x t poate f i ed ita t dacă pa rcu rge ţi paşii:

1. E xecu ta ţi clic pe caseta cu t i t lu l bazei de date; va f i selectată în treaga form ă. U n m arca j verde de selecţie va în co n ju ra c o n tu ru l form ei.

2. în acest p u n c t, p u te ţi selecta fiecare d rep tung h i c o n ţin u t în fo rm a cu t i t lu l bazei de date. Pe m ăsură ce selectaţi fiecare drep tungh i, co n tu ru l său este m a rca t cu gri.

3. Apăsaţi tas ta F2. Va fi selectat tex tu l, ceea ce vă perm ite să-l m odificaţi.

Rafinarea designuluiPână acum , p ro ie c tu l a ra tă bine. D ar este oare com plet? D at f iin d că este p rim a sa varian tă , este foarte probab il că nu. A ţi observat că re la ţia n u m ă ru l c inc i are u n asterisc? Deşi, p e n tru început, această re la ţie poate că n u pare am biguă, este. Să exam inăm ceva m ai b ine re la ţia „A nga ja ţii alocă t im p fie că ru i caz.".

Page 74: Baze de date pentru incepatori (manuale facultate)

DATEPARTEA A ll-A - PROIECTAREA PRIMEI BAZE64

Să zicem că în t im p u l in te rv iu r ilo r a ţi descoperit că u n u i anga ja t î i este a tr ib u it u n caz în a in te ca el să aloce t im p cazu lu i. D esignu l cu re n t al bazei de date conţine o re la ţie d irec tă în tre cazuri şi angaja ţi? Nu, d a r con ţine o re la ţie ind irec tă . D in en tita tea Case, p u te ţi găsi anga ja ţi care au alocat t im p ca zu lu i dacă trece ţi p r in en tita tea T im eE n tryD e ta il. C ât t im p to ţ i anga ja ţii im p lic a ţi în tr -u n caz au alocat tim p cazu lu i, p u te ţi afla anga ja ţii care s u n t im p lic a ţi în caz. Dar, pe de a ltă parte , dacă aveţi nevoie de o lis tă cu anga ja ţii care s u n t im p lic a ţi în tr -u n caz şi ş t iţ i că u n ii d in tre ei n u i-a u alocat încă tim p (nu s-au ocupat încă de cazul respectiv). Pe scurt, înseam nă că aveţi ghin ion !

Este im p o rta n t de su b lin ia t că re la ţiile d in tre e n tită ţi trebu ie să fie suporta te in d ife re n t dacă există in s ta n ţie r i specifice ale datelor. Cu alte cuvin te , ch ia r dacă u n anga ja t n u a alocat încă tim p u n u i caz care i-a fos t a tr ib u it, el trebu ie să apară în tr-o lis tă a anga ja ţilo r care lucrează la cazul respectiv. F igura 3.17 prez in tă designu l ra fina t.

ثا*ا-ه®آ؛أهة خلإمبج ، a ث X إل د ى : ةا إ O محم ر ٦ ء A م آ

:ا خيماهآإء-ة؟هث . د م , إ ه إ .ءأ ء آ ٠ 0, _ _ _ و ه

1C

Took Shap» Wirden Help ءس م و_ He ،،&_ ١٠٠٠٠ 1rs،»، ا

B j ؛ و.jlôp ي مي’:ءمح ي ' *Te

Ine: j -~ Mamâl »1 »■ = F* f

؛ sod E4،ny0لءءها،هم ،ا Trwاا I Edit Date 7/26/2001 21: ه1ه : PM

□atatiasEtosu□□^

Target DE: Aece5S | rص

Creator John V. Petersen

d؛DBi.v؛Filename: tdt Mmi Line Software, kx »«■™م

[jOcuv'iFooiERO

r~pjjgéi/F~* statut: ■Ready

FIGURA 3.17Versiunea 2 a m odelu lu i bazei de date Time E n try and B illin g suportă o re laţie directă în tre angajaţi şi cazuri.

A ţi văzu t şi a ltă problem ă? Fe baza acestu i mode], când este vorba despre asocierea a n ga ja ţilo r cu cazurile , aveţi urm ătoarea problem ă: de fiecare dată când u n u i anga ja t î i este a tr ib u it u n nou caz, trebu ie creată o nouă în reg is tra re p e n tru acel angajat. Acest lu c ru are ca re zu lta t în re g is tră ri dub le ale anga ja ţilo r. Astfe l, n u va trece m u lt tim p şi baza de date va f i aglom era iă cu o m u lţim e de date redundante . Când va tre b u i să creaţi rapoarte sau in te rogări, va f i foarte d ific il. Ce s-ar în tâm p la dacă u n angaja t îş i sch im bă num e le şi lucrează la 10 cazuri? V a tre b u i să m o d ifica ţi 10

Page 75: Baze de date pentru incepatori (manuale facultate)

ل و ةمم1¥ائخا INTRODUCEREÎN PROIECTAREA BAZELOR □E DATE

în re g is tră ri ale anga ja ţilo r. Ş tiţ i destule despre bazele de date re la ţiona le ca să în ţe lege ţi că acest scenariu este inaccep tab il. U n u l d in tre scopurile p rinc ipa le ale bazelor de date este să asigure consis ten ţa datelor, reducând re d u n d a n ţa acestora. Şi a tunc i, cum ve ţi rezolva problem a?

V ă a m in t iţ i când am d iscu ta t despre re la ţiile u n u la m u lţ i în c a p ito lu l 2? Este exact s itu a ţia în care ne aflăm acum . A n g a ja ţilo r l i se po t a tr ib u i u n u l sau m a i m u lte cazuri, ia r la u n caz po t lu c ra u n u l sau m ai m u lţ i angaja ţi. A ţi văzu t în ca p ito lu l 2 că spargerea une i re la ţii m u lţ i la m u lţ i în două re la ţ ii u n u la m u lţ i redresează s itu a tia . în acest caz, p e n tru a rezolva problem a, va f i adăugat m o d e lu lu i u n nou tabe l in te rm ed ia r, n u m it tabel de jo n c ţiu n e (jonction table). Tabelele de jo n c ţiu n e su n t n u m ite şi tabele de rezolvare a re la ţiilo r m u lţ i la m u lţ i {many-to-many resolver tables) - dar denum irea n u este n ic i pe departe a tâ t de im p o rta n tă ca ro lu l acestora. Tabelele de jo n c ţiu n e vă p e rm it să fa c ilita ţi consis ten ţa date lor, reducând re d u n d a n ţa acestora. F igura 3.18 prez in tă vers iunea 3 a m o d e lu lu i bazei de date, care conţine n o u l tabe l de jo n c ţiu n e şi re la ţiile m odifica te în tre e n tită ţile Case ş i Empioyee.

M؛ i؛-_ ؤ ?ءا;|' | آ ق ع جا ة □ o ئ X t،د م

*A : ؛ ق: ة ء - ء قئ ءتم ء

رةلا ي، ه ، ؛ . ه ه ة ءمح؟ - ء * م -س ط تسل ء

Windcw Hdc و٠٠ د م،ء ٤* ١٠٠٠٠ س ۶٠٠٠ سا أ

; ء ء ق ا،ءءآ jNo،mal كره'ي|ك ض'|ك ذل ء 1 إأ ة

ر * F، II TNamai" |~ *ه • □ ' ى ج * , ' ت ' In» i Hoimal «n

تتتتتت1

ciientip ţ t ~ " ' " ' CHca3elD

I jCllentlP(Ft<)(IE)

IWDice

InvoiceiociipnnriiFKwiF iCllentlD(FKj(IE)

«ة آ«٠٠ £٢٠٧ مما< ب >،إلهءء jEditDate 7/28/2001 4.37:22 PM

upport؟ Dat3base ta

Target DB. Access Pev: 3 Creator. John V. Petersen

Fiiename tdbDB2 vsd «٠٠١Lr«S'ftv-Vi,Ir

aCiow'îFooiERD

ق 1ق/-<،& iV.■، صا «•

Pâge 1/1 stătu« iRftxty

FIGURA 3.18Versiunea 3 a m odelu lu i bazei de date Time E n tiy and B illin g suportă o re la ţie m u lţi la m u lţi în tre cazuri si angajaţi.

M ai trebu ie încă să m u n c iţ i îna in te ca p r im u l design al bazei de date să fie considera t com plet. Pe m ăsură ce co n tin u a ţi analiza, ve ţi vedea că u n u i caz î i p o t f i asocia ţi m u lţ i c lien ţi. D a to rită acestei s ita u ţii, n u este su fien tă asocierea une i în reg is tră ri T im eEntryD eta il cu u n caz, u n angaja t şi o factură. Deşi este adevărat că în reg is tra rea T im eE n tryD e ta il trebu ie să corespundă

Page 76: Baze de date pentru incepatori (manuale facultate)

DATEPARTEA A ll-A - PROIECTAREA PRIMEI BAZE

u n u i caz, u n e i fa c tu r i şi u n u i angaja t - d in cauză că m ai m u lţ i c lie n ţi p o t f i asocia ţi u n u i caz - en tita tea T im eE n tryD e ta il trebu ie să a ibă C lien tID ca ş i cheie externă. Vedeţi f ig u ra 3.19 care con ţine p rim a vers iune com pletă a bazei de date T im e E n t iy and B illing .

*liSj * . J â J *

x 1 !)؛(٩ €١, «{os ؛_J ؟ ?؛، t i ،؛;o □ ١،■٢٠ hsp- V-trfjrf؛ vj IniSrt Fomwt leali؛-J، V£؛ Fie

Hi

٠ ٠ ٠ ٠ ٠٠٠٠٠٠<٠ ، » lEdrtDil، 7ÆB/2G01 452*6 FM

Database to support

Target OB: Accsss jRev. 3 Creator John ٧ . Petersen

Filename: IdbDB’ .vsd

ClienlOClientCaselD (FK) ٢٤)

Pag« 1/1 Statu»: !Ready

FIGURA 3.19Versiunea 4 a m odelu lu i bazei de date Time E n tiy and B illin g este prim a schiţă completă.

RezumatIn tr -u n scenariu real, ve ţi descoperi că s u n t necesare m a i m u lte ite ra ţii p e n tru a ob ţine designu l in iţ ia l. T im p u l necesar p e n tru a rea liza u n pro iect u t i l depinde de câ t de am ă n u n ţită este analiza dum neavoastră ş i de frecvenţa cu care cere ţi in fo rm a ţii de la u tiliz a to r ii bazei de date. D in tre toate sursele de in fo rm a ţii disponib ile , so lic itările de rapoarte ar putea f i cele m ai valoroase, deoarece p u te ţi parcurge adesea procesu l invers rea liză rii acestora p e n tru a de te rm ina e n tită ţile pe baza cărora trebu ie realizate. Desigur, a lte surse de in fo rm a ţii - in te rv iu r ile ş i sistemele existente - s u n t şi ele im po rtan te . în s itu a ţ ii d ife rite , vă p u te ţi baza pe surse diferite .

R e z u lta tu l m u n c ii d u m n e a vo a s tră de a n a liză cu lm in e a ză sub fo rm a m o de lu lu i bazei de date. Cea m ai com ună şi sim p lă cale de a înţelege tehn ica m ode lă rii este E n tity R ela tionsh ip D iagram (ERD). In s trum en te precum p rog ram u l V is io autom atizează procesul creă rii m odele lor logice ale bazelor de date şi creării bazelor de date fizice după modele. ER D -urile su n t alcă tu ite d in e n tită ţi, a trib u te le e n tită ţilo r şi re la ţiile d in tre e n tită ţi.

Page 77: Baze de date pentru incepatori (manuale facultate)

Dacă există u n sfa t cheie, acesta ar f i „Nu vă îngropaţi prea repede în de ta lii” . Dacă vă ocupa ţi de copaci, fe riţi-vă de pădure. Acest cap ito l n u a in t ra t prea m u lt în d e ta lii p riv in d câm purile cu in fo rm a ţii d in fiecare entita te . De ce? P entru că acest lu c ru n u este abso lu t necesar în rea lizarea u n u i pro iect in iţ ia l so lid al bazei de date. De fa p t in tra re a prea rap idă în de ta lii poate f i u n obstacol. Se vo r m odifica e n tită ţile pe m ăsura d e fin ir ii câ m p u rilo r d in ele? Cel m a i probab il, da. D ar acest lu c ru este în regulă; to tu l face parte d im procesu l de design.

Vă a m in t iţ i m a n tra răbdă rii? D ar reclam a lu i Paul Masson: „N u vom vinde v in u l îna in te de m o m e n tu l p o tr iv it” ?

în cap ito lu l urm ăto r, ve ţi trece cu pro iectu l p r in etapa urm ătoare a dezvoltării sale - procesu l de norm alizare . La s fâ rş itu l ca p ito lu lu i 4, designu l bazei de date T im e E n try and B illin g va f i com plet.

CAPITOLUL 3 INTRODUCERE ÎN PROIECTAREA BAZELOR DE DATE 67

Page 78: Baze de date pentru incepatori (manuale facultate)

4

PROIECTAREA UNEI BAZE DE DATE: INTRODUCERE ÎN NORMALIZARE

în acest capitol:H Ce înseam nă norm alizarea un e i baze de date?

H Paşii necesari p e n tru norm alizare D? ؛ enorm alizarea date lor - ce ro s t are să încă lcăm regu lile ٠

J N orm alizarea ap lica tă - revedere a TEB؛li i Rezum at

Page 79: Baze de date pentru incepatori (manuale facultate)

DATEPARTEA A ll-A - PROIECTAREA PRIMEI BAZE70

în u lt im u l cap ito l am făcu t o in troducere în conceptele de bază ale pro iec tă rii bazelor de date. în acest cap ito l vom consolida a p titu d in ile dobândite în cel precedent. Dacă vă re a m in tiţ i u n a d in tre regu lile de bază ale că rţii, este nevoie de m a i m u lte ite ra ţii p e n tru a obţine u n design o p tim al bazei de date. D upă ce au fos t create prim e le tabele, pasu l u rm ă to r presupune com pletarea acestora cu coloane. In acest m om ent, singure le le coloane care există s u n t cheile prim are şi cele externe necesare p e n tru a supo rta re la ţiile d in tre tabele. în acest pun c t, în trebarea este „Ce coloane trebu ie inc luse în tabele?” . Unele d in tre coloanele pe care trebu ie să le in c lu d e ţi s u n t logice; altele n u sunt. Aşa cum ve ţi vedea, inc luderea une i coloane poate determ ina crearea u n o r no i tabele. Dacă vă g â n d iţi că au fost create toate tabelele necesare p e n tru baza de date Tim e E n tiy and B illin g (TEB), ve ţi avea o surpriză! Procesul de te rm inării coloanelor necesare în tr -u n tabel se num eşte normalizare. Procesul de norm a liza re este scopu l acestu i cap ito l, ia r la s fâ rş itu l său pro iectarea bazei de date TEB va f i com pletă.

Ce înseamnă normalizarea unei baze de date?Norm alizarea une i baze de date poate f i caracterizată cel m ai bine ca procesul organ iză rii acesteia. A cum că ş tim ce înseam nă, să revenim la de ce. Scopul n o rm a liz ă r ii este reducerea prob lem e lo r de cons is ten ţă a date lo r, p r in reducerea redundan ţe i. Pare deru tan t? C onseptu l de norm a liza re poate f i în ţe les m a i u şo r p r in in te rm e d iu l u n u i exem plu s im p lu . P entru a aceasta, să reven im la baza de date N orthw ind Traders d in Access.

F igu ra 4.1 prez in tă E R D -u l (E n tiţy R ela tionsh ip Diagram ) p e n tru baza de date N orthw ind Traders care a fost in trodusă în cap ito lu l 2. O bservaţi re la ţia d in tre tabelele C ustom ers şi Orders. Ca recap itu la re a fu n c ţio n ă rii re la ţiilo r în tr-o bază de date, cheia p rim a ră a ta b e lu lu i părin te este p re lua tă în tabe lu l cop il ca şi cheie externă. In acest caz, câm pu l C ustom erID este p re lu a t în ta b e lu l O rders. Ia tă cum în reg is tră rile de com enzi de la u n a n u m it c lie n t po t f i asociate acestuia.

A tu n c i, de ce n u am p re lua şi alte câm pu ri d in ta b e lu l C ustom ers? Aşa cum ve ţi vedea m a i tâ rz iu , uneo ri ve ţi alege să p re lu a ţi alte câ m p u ri d in ta b e lu l p ă rin te în ta b e lu l copil. Ca regu lă generală, to tu ş i, n u ve ţi d o ri să fa ce ţi acest lu c ru . De exem p lu , dacă v e ţi decide să p re lu a ţ i câ m p u l Com panyNam e în ta b e lu l O rders şi se va m odifica num ele firm e i? V a tre b u i să actua liza a c tu a liza ţi şi ta b e lu l Custom ers şi ta b e lu l Orders, precum şi orice a lt ta b e l care m a i co n ţin e câ m p u l Com panyN am e. C o n tin u â n d exem plu l, ce s-a r în tâ m p la dacă dife rite le a p a r iţ ii ale acestu i câm p n u a r f i actualizate s im u ltan? Care versiune va reflecta cel m ai corect num ele firm ei? Dacă v i se va cere să p regă tiţi u n ra p o rt care trebu ie să con ţină acest câmp, ce tabe l ve ţi fo los i ca sursă?

Page 80: Baze de date pentru incepatori (manuale facultate)

71CAPITOLUL 4 PROIECTAREA UNEI BAZE □E DATE.

FIGURA 4.Diagram a de re la ţii în tre e n tită ţi pentru baza de date N orthw ind Traders prezin tă re la ţia d in tre clien ţi si

Este destu l de c la r că existând doar o apariţie a e lem entu lu i de date respectiv, n u m a i răm âne n im ic de in te rp re ta t şi de gh ic it. Când a c tu a liza ţi câm pu l Com panyNam e în ta b e lu l Custorners, p u te ţi f i s ig u r că toate rapoarte le care se bazează pe acest câm p vo r f i corecte şi actuale. De ce? P entru că respectivu l câm p n u este p re lu a t în m od re d u n d a n t în baza de date, şi, ca rezu lta t, este as igu ra tâ consistenţa datelor. Acelaşi concept poate f i revăzut ş i în m ode lu l de date d in fig u ra 4 .1 .0 consistenţă m ai m are p r in e lim inarea re d u n d a n ţe lo r - acesta este scopu l norm a liză rii!

Paşii de normalizare a modelului de dateAşa cum rea lizarea u n u i design o p tim al bazei de date este u n proces cu m a i m u lţ i paşi, ظ fel este şi procesul de norm alizare. V eţi dori să norm a liza ţi până la a tre ia fo rm ă norm ală , cel p u ţin . Foarte posib il, ve ţi d o ri să faceţi încă u n pas norm a lizând până la fo rm a Boyce-Codd. Form ele a p a tra şi a cincea norm a le există, dar u tiliza rea lo r este m u lt m a i rară . P entru scopu ri in fo rm aţiona le , şi acestea su n t descrise pe scu rt la s fâ rş itu l acestei secţiun i.

P entru a i lu s tra procesu l de norm alizare, cons ide ra ţi urm ătoarea l is tă de date nenorm aliza te:

٠ Id e n t i f ic a to r i c lie n tu lu i (Custom er 1 هل - cheie p rim ară ; n N um ele c lie n tu lu i (Custom er Name];* T ip u l c lie n tu lu i (C ustom er Type);٠ Num e de con tac t (Contact Name) - u n u la m u lţi;M Num ele categorie i (Category Name} - u n u la m u lţi.

Dacă a ţi lu c ra t vreodată cu date proven ind d in tr-o su rsă nere la ţiona lă , acest scenariu vă poate f i fam ilia r. în acest exem plu, lung im ea în re g is tră rii

Page 81: Baze de date pentru incepatori (manuale facultate)

DATEPARTEA A ll-A - PROIECTAREA PRIMEI BAZE72

u n u i c lie n t este va riab ilă , deoarece fiecare c lie n t poate avea u n a sau m ai m u lte in fo rm a ţii de con tac t şi poate face parte d in m ai m u lte categorii. Nu u ita ţ i că to tu l este în fo rm ă b ru tă , ia r in fo rm a ţiile produse de e fo rtu rile dum neavoastră de analiză s u n t nerelaţionale. Toate a tribu te le pe care le -a ţi id e n tific a t p e n tru o en tita te dată s u n t grupate p robab il în tr-o s tru c tu ră p la tă . A ic i in te rv in e procesu l de norm alizare - de a organiza a tribu te le . Să începem p r in a lu a s tru c tu ra anterioară ş i a o aduce la p rim a fo rm ă norm ală.

Prima formă normală: eliminarea grupurilor care se repetăP rim a fo rm ă n o rm a lă (first normal form, pe s c u r t IN F ) p re s u p u n e îndepărta rea g ru p u r ilo r care se repetă. Rămâne să răspundem la în trebarea „Ce s u n t g ru p u rile care se repetă?” . E xem p lu l an te rio r are două g ru p u ri: in fo rm a ţii de con tac t şi categoria. N u u ita ţi, p e n tru fiecare c lie n t po t exista m a i m u lte in fo rm a ţii de con tac t ş i m ai m u lte categorii.

Pentru fiecare grup ce se repetă pe care î l în tâ ln im , g ru p u l este m u ta t în tr -u n tabe l separat. In acest caz, ve ţi avea în f in a l două tabele care co n ţin datele p riv in d in fo rm a ţiile de con tac t şi categoria. S ch iţa urm ă toa re p rez in tă noua s tru c tu ră ş i e n tită ţile sale:

E T abe lu l C ustom er:■ Id e n tif ic a to ru l c lie n tu lu i;■ N um ele c lie n tu lu i;

■ T ip u l c lie n tu lu i;

i T abe lu l cu in fo rm a ţii de contact:■ Id e n tif ica to ru l con tac tu lu i;■ Id e n tif ica to ru l c lie n tu lu i;B N um e de contact.

■ T abe lu l p riv in d categoria:■ Id e n tific a to ru l categoriei;■ Id e n tif ica to ru l c lie n tu lu i;M Num ele categoriei.

Aşa cum poate a ţi g h ic it, ta b e lu l C ustom er este pă rin te p e n tru tabelele C ontact ş i Categoiy. Cele două re la ţii s u n t u n u la m u lţi. Cu a lte cuvin te , fiecare c lie n t poate avea u n u l sau m a i m u lte contacte şi poate f i asocia t cu u n a sau m ai m u lte categorii. D ar care este cheia p rim a ră p e n tru fiecare tabel? G ând iţi-vă la asta câteva m inu te . Problem a che ii p rim are este s trâns legată de a doua fo rm ă norm ală , sub iec tu l se c ţiu n ii urm ătoare . în capito lele anterioare, cheia p rim a ră a fos t în to tdeauna fo rm ată d in tr -u n s in g u r câmp. Deşi acesta a fos t cazu l ta b e lu lu i C ustom er, se poate spune acelaşi lu c ru şi

Page 82: Baze de date pentru incepatori (manuale facultate)

73CAPITOLUL 4 PROIECTAREA UNEI BAZE DE DATE.

despre tabelele C ontact şi Categoiy? R ăspunsu l n u este a tâ t de tra n şa n t cum s-a r părea. G ând iţi-vă în con tinua re la acest sub iec t - î l vom re lua în secţiunea urm ătoare .

în a in te de a trece m a i departe, este im p o rta n t să vedeţi benefic iile care derivă d in m u ta re a in fo rm a ţiilo r de con tact şi categorie i în tabele separate. Im ag ina ţi-vă câ t de d ific ilă a r fi sarc ina a d m in is tră r ii in fo rm a ţiilo r de con­ta c t dacă acestea a r f i stocate în ta b e lu l Custom er. Dacă u n c lie n t ar pu tea avea u n s in g u r num e de contact, a r pu tea f i u n argum en t fa p tu l că datele precum num e, n u m ă r de te lefon şi aşa m ai departe a r pu tea f i stocate în ta b e lu l C ustom er. Până la urm ă , în acest caz, avem de a face cu u n n u m ă r f in it de coloane. D ar dacă cineva ar so lic ita o îm b u n ă tă ţire a bazei de date care im p lică s u p o rtu l m a i m u lto r in fo rm a ţii de con tac t p e n tru u n s in g u r clien t? A ve ţi două varian te :

■ A dăuga ţi alte coloane în tabe lu l C ustom er p e n tru a supo rta contactele m u ltip le ;

Sfi A dăuga ţi u n tabe l cop il care perm ite orice n u m ă r de contacte.

E vident, va ria n ta a doua este m ai uşoară, m ai fle x ib ilă şi m ai economicoasă d in p u n c tu l de vedere al cos tu rilo r. P entru va ria n ta 1, designu l bazei de date a r pu tea să se m odifice în con tinua re o ri de câte o r i u n a n u m it c lie n t va avea m a i m uie contacte decât coloanele d in ta b e lu l Custom er. Dacă este v re u n lu c ru care poate sch im ba de s tin u l une i a p lica ţii p e n tru baze de date, acesta este co n tin u a schim bare a s tru c tu r ii şi m o de lu lu i acesteia. U n m odel so lid ş i s ta b il al bazei de date este fu n d a m e n tu l pe care se s p r ijin ă toate celelalte. D upă dezvoltarea un e i a p lica ţii, m odificarea s tru c tu r ii bazei de date poate f i foarte scum pă ş i cronofagă. în treaga ap lica ţie trebu ie să fie tes ta tă a m ă n u n ţit p e n tru a e lim ina pos ib ilita te a in tro d u c e rii u n o r defecte ca re zu lta t al m o d ifică rii s tru c tu r ii acesteia. Rezolvarea acestor aspecte încă de la începu t evită a pa riţia m u lto r problem e care ar putea apărea m ai tâ rz iu .

D iversele form e norm a le s u n t în cascadă. Cu alte cuvin te , îna in te de a ataca a doua fo rm ă norm ală , va tre b u i să a p lica ţi p rim a fo rm ă norm ală . Acest lu c ru este va la b il ş i p e n tru urm ătoare le form e norm ale. Şi cum p rim a fo rm ă no rm a lă este realizată, să trecem la a doua fo rm ă norm ală , care presupune e lim ina rea da te lo r redundante . C um vo r f i afectate tabelele de acest lu c ru ? V eţi găsi ră sp u n su l în secţiunea urm ătoare .

A doua formă normală: eliminarea datelor redundanteP en tru a aduce tabele le la a doua fo rm ă norm a lă , tre b u ie să a n a liza ţi câm purile în ra p o rt cu cheia p rim a ră . Problem a che ilo r p rim a re a fos t d iscu ta tă în secţiunea anterioară . Cheia p rim a ră a tabe le lo r C ontact şi Category este m ultiva lo rică , adică n u aveţi u n s ingu r câmp care să iden tifice în m od u n ic o în reg is tra re . Pentru ta b e lu l Category, cheia p rim a ră este o com binaţie a câ m p u rilo r Categoiy ID ş i C ustom er ID. M u lţ i c lie n ţi po t u tiliz a aceeaşi categorie, ia r u n c lie n t poate face parte d in m a i m u lte categorii.

Page 83: Baze de date pentru incepatori (manuale facultate)

DATEPARTEA A ll-A - PROIECTAREA PRIMEI BAZE74

Totuş i, u n c lie n t n u poate face parte de m ai m u lte o ri d in aceeaşi categorie. A cesta pare să fie u n lu c ru log ic. D a to r ită aceste i regu li, co m b in a ţia câ m p u rilo r Categoiy ID şi Custom er ID id e n tifică în m od u n ic o în reg is tra re d in ta b e lu l Categoiy. Să reven im la tabe lu l Contact. Aşa cum ve ţi vedea, acest scenariu prez in tă o s itua ţie am biguă.

C âm pu l C ontac t ID id e n tifică o în reg is tra re în m od un ic? A r pu tea să iden ­tifice u n ic în reg istrarea; da r la fel de bine, a r pu tea să n-o facă. Ce părere aveţi de acest răspuns? R ăspunsu l depinde de context. Tabe lu l C ontact se re feră n u m a i la datele de contact? Sau m a i corect a r f i să fie de n u m it C ustom er C ontacts (date de con tac t despre clien ţi)? D in nou, ră sp u n su l depinde de context. Poate f i u n con tact asociat m ai m u lto r c lien ţi? Sau este asociat u n u i s in g u r clien t? A na liza şi e fo rtu rile de pro iectare pe care le face ţi a r pu tea da ră sp u n su l la aceste în trebă ri. U neori, co rpo ra ţiile m a ri po t să apară de m a i m u lte o ri în tabelele cu c lien ţi. Este foarte p os ib il ca o persoană de con tac t să fie asociată m a i m u lto r în re g is tră ri ale c lie n ţilo r, de aceea este foarte im p o rta n t ca ana liza ş i e fo rtu r ile dum neavoastră de pro iectare să descopere toate de ta liile ca acesta. D upă im p lem entarea u n u i sistem , corectarea u n e i greşeli poate f i foarte d ific ilă .

CÂT COSTĂ CORECTAREA UNEI GREŞELI?Dacă este vorba despre o bază de date de 1 dolar, corectarea cât mai rapidă a unei greşeli poate costa 1 dolar. Cât mai rapid posibil înseamnă întimpul prcesului de analiză, design şi modelare a bazei de date. După crearea bazei de date costul corectării aceeleiaşi greşeli este de 10 dolari. După ce sistemul a început faza de testare beta, greşeala costă 100 de dolari. Dacă greşeala trece neobservată la testarea beta şi intră în producţie repararea ei va costa 1000 de dolari.

Dacă vă gândiţi mai bine, este logic să fie aşa. După intrarea în faza de testare beta, dacă este descoperită o greşeală, trebuie să o luaţi de la început. Imaginaţi-vă că aplicaţia dumneavoastră este instalată în câteva sute de locaţii. Costul de a redis­tribui programul şi de a actualiza baza de date poate fi imens. Ideea care se desprinde de aici este că, pe măsură ce treceţi prin diferite stadii de dezvoltare, costul reparării defectelor se măreşte de câte 10 ori. Cu cât analiza şi proiectarea pe care le realizaţi sunt mai eficiente, cu atât este mai probabil să nu depăşiţi bugetul stabilit şi să livraţi aplicaţia la timp sau în avans.

P entru scopul de a exemplifica, să presupunem că u n contact poate f i asociat u n u i s in g u r c lien t. G ând indu-ne la acest lu c ru , ta b e lu l C ontact se a flă în a doua fo rm ă norm ală , deoarece a tribu te le n u depind de o cheie m ultiva lo rică , adică num ele de con tac t depinde n u m a i de id e n tif ica to ru l c o n ta c tu lu i. în acest caz, câm pu l C ontact ID id e n tifică în m od u n ic în reg is tra rea u n u i contact. De asemenea, n u există date redundante . D ar ta b e lu l C ategoiy este în a doua fo rm ă norm ală? De data asta ră sp u n su l este nu .

Page 84: Baze de date pentru incepatori (manuale facultate)

75CAPITOLUL 4 PROIECTAREA UNEI BAZE DE DATE.

în t im p ce u n con tac t este specific u n u i clien t, o categorie este u n obiect independent. P entru a exem plifica să presupunem că avem categoriile m edi­cal, m a rke tin g şi f inanc ia r. U n c lie n t poate aparţine şi categoriei m arke ting şi categorie i fin a n c ia r. Fiecare d in tre aceste categorii poate f i asociată cu m ai m u lţ i c lien ţi. Ia tă, de exem plu, datele urm ătoare , care ar pu tea să se găsească în ta b e lu l Category:

Category ID C ustom er ID Categoria

1 1 M edical

2 1 M arke ting

3 2 F inanc ia r

2 2 M arke ting

S u n t două în trebă ri:

■ Care este cheia prim ară?W O categorie depinde in teg ra l sau p a rţia l de cheia prim ară?

în acest caz, cheia p rim a ră este m u ltiva lo rică , ea com b inând câm purile Category ID ş i C ustom er ID . Categoria depinde p a rţia l, n u in tegra l, de cheia p rim ară . Dacă există u n câm p care n u depinde in teg ra l de cheia prim ară , a tu n c i ta b e lu l n u este în a doua fo rm ă norm ală . P entru a aduce acest tabe l în a doua fo rm ă norm a lă , categoriile trebu ie plasate în tr -u n tabe l separat. Aceasta m ăreşte n u m ă ru l de tabe le de la t re i la p a tru . In co n tin u a re prezentăm noua s tru c tu ră a ta b e lu lu i Category:

■ T a be lu l Category:■ Category ID ( id e n tifica to ru l categoriei):

■ Category Name (num ele categoriei).

M a i jo s este prezenta tă s tru c tu ra n o u lu i tabe l C ustom er Category:M T abe lu l C ustom er Category:

■ C ustom er Category ID (iden tifica to ru l categoriei c lie n tu lu i) - cheie prim ară :

٠ C ustom er ID ( id e n tifica to ru l c lie n tu lu i):■ Category ID ( id e n tifica to ru l categoriei).

CHEI PRIMARE Şl CHEI PRIMARE SUROGATAveţi nevoie de un câmp Customer Category ID în tabelul Customer Category? Răspunsul este nu. Combinaţia câmpurilor Customer ID şi Category ID va servi ca şi cheie primară multivalorică. Acest tip de cheie primară mai este numit şi cheie primară compusă. Intr-un tabel precum Customer Category, care are numai rolul de tabel de rezolvare a relaţiei mulţi la mulţi, o cheie compusă este o alternativă per­fect acceptabilă. Este foarte puţin probabil ca tabelul Customer Category să se

Page 85: Baze de date pentru incepatori (manuale facultate)

DATEPARTEA A ll-A - PROIECTAREA PRIMEI BAZE76

comporte ca părinte, deci cheia primară probabil nu va fi preluată într-un tabel copil. Dacă alegeţi să păstraţi o cheie primară univalorică sau multivalorică este o chestiune de preferinţă personală.

Includerea câmpului este o problemă de consistenţă şi preferinţă pentru o anumită metodologie. Cele două metodologii în chestiune implică utilizarea sau neutilizarea cheilor surogat.

Există două curente de idei privind cheile primare. Unul dintre ele susţine că acestea ar trebui produse în ordine secvenţială; altul susţine că ele ar trebui să fie combinaţii ale câmpurilor existente. Cheile surogat sunt produse în ordine secvenţială, folosind un dispozitiv de incrementare. In Access este utilizat în acest scop tipul de câmp autonumeric (autonumber). Uneori, cheile surogat sunt numite chei fără semnificaţie, deoarece din valoarea acestora nu sunt obţinute informaţii privind înregistrările pe care le identifică. Celălalt tip de chei, cheile multivalorice, este alcătuit dintr-o combinaţie a câmpurilor existente. Uneori, cheia este o combinaţie între numele clientului+adresa+oraş+stat. Este valabilă orice informaţie care identifică în mod unic o înregistrare. Este uşor de văzut că aceste chei multivalorice nu au semnificaţie. Când vedeţi valoarea unei chei, vedeţi imediat datele descrise de înregistrarea pe care cheia o identifică.

Care metodă este corectă? Ambele au calităţile lor. Dintre cele două, cheile surogat reprezintă probabil o abordare mai bună. Pentru a analiza de ce sunt o abordare mai bună, va trebui să înţelegeţi scopul unei chei primare. O cheie primară serveşte la identificarea unică a unei înregistrări. Cheile primare sunt preluate în datele copil cu scopul de a lega înregistrările copil de cele părinte. Ce este mai uşor, preluarea unei singure valori de tip single integersau a unui şir care poate conţine peste 100 de caractere? Ce se va întâmpla dacă se modifică numele firmei, adresa sau orice altă componentă a cheii primare? Nu se va schimba numai cheia primară, ci şi cea preluată ca şi cheie externă în tabelele copil trebuie să se schimbe. Problemele de întreţinere pe care le ridică cheile multivalorice depăşesc orice avantaj pe care acestea l-ar putea avea.

Scopul unei chei primare este dublu: de a identifica în mod unic o înregistrare şi de a servi drept „adeziv” între tabelele înrudite. Valoarea sa ar trebui să nu se schimbe. Cheile primare stau în fundal şi menţin ordinea. în anumite privinţe, ele sunt similare arbitrilor de fotbal. In meciurile frumoase, nu observaţi arbitrul. Utilizatorii primari nu ar trebui să vadă, să cunoască sau să controleze înfăţişarea cheilor primare. Cunoscând toate acestea, sunt cheile primare singura caie de a identifica unic înregistrările? Răspunsul este negativ. Să luăm în considerare câmpul cu numărul clientului.

Doi clienţi nu pot avea acelaşi număr. Altfel, de ce ar mai exista numărul clientului. Adesea, companiile au o metodă sistematică de a numerota clienţii. O parte a numărului poate da informaţii despre client, cum ar fi numele său. în acest caz numărul clientului nu ar trebui să fie cheie primară, deoarece depinde de caracteristicile din înregistrarea cientului. Nu uitaţi, dacă se modifică un aspect de

Page 86: Baze de date pentru incepatori (manuale facultate)

77CAPITOLUL 4 PROIECTAREA UNEI BAZE DE DATE.

care depinde numărul clientului, trebuie modificat şi acest număr. Desigur, nu există nici un motiv pentru care cheia primară nu ar putea avea şi un al treilea rol, cum ar fi cel de număr al clientului. Dacă aşa stau lucrurile, utilizatorii nu ar trebui să aibă controlul asupra valorii efective a acestuia.

In con tinua re vom prezenta m o d u l cum apar n iş te date în ta b e lu l Category:

Category ID CategoiyName

1 M edical

2 M arke ting

3 F inanc ia r

Ia tă cu m a r pu tea să apară n iş te date în ta b e lu l C ustom er Category:

C ustom erC atego iy ID C ustom er ID Category ID

1 1 1

2 1 2

3 2 1

4 2 2

îna in te de a aduce tabelele la a doua fo rm ă norm ală , cons ide ra ţi scena riu l m o d ifică rii descrie rii u n e i categorii. în cazul date lor redundan te vo r f i nece­sare m u lte actua liză ri. D upă aducerea la a doua fo rm ă norm ală , descrierea un e i categorii exis tă în tr-o s ingu ră locaţie. D upă m odifica rea un e i s ingure date, toate rapoarte le care o co n ţin vo r f i actua liza te au tom at. C ât despre rapoarte , să presupunem că îna in te de aducerea la a doua fo rm ă no rm a lă trebu ie să c rea ţi u n ra p o rt care afişează câm pu l Category Name. Ce veţi u tiliza ca sursă p en tru acest câmp? D upă aducerea la a doua fo rm ă norm ală, ră sp u n su l este m u lt m a i clar.

Să a ru n că m o p riv ire asupra ta b e lu lu i Custom er. Dacă exam inăm câm pu l C ustom er Type, se pare că m ai există u n grup care se repetă. Ia tă cum apar datele în acest tabel:

C usom er ID C ustom er Name C ustom er Ţype

1 Ace Tom ato Business

2 PMH H ospita l

3 Rutgers Law School

4 M icroso ft Business

Page 87: Baze de date pentru incepatori (manuale facultate)

DATEPARTEA A ll-A - PROIECTAREA PRIMEI BAZE78

P entru a ap lica a doua fo rm ă norm ală , trebu ie creat u n nou tabe l C us­tom er Type. Ia tă care va fi s tru c tu ra acestu i tabel.

C ustom er Type ID C ustom er Type D escrip tion

1 Business

2 H osp ita l

3 School

D upă crearea n o u lu i tabe l C ustom er Type, trebu ie m od ifica t ta b e lu l C us­tom er, p e n tru a pu tea f i s ta b ilită o legă tu ră în tre cele două tabele. Ia tă care va f i s tru c tu ra n o u lu i tabe l Custom er:

C ustom er ID C ustom er Name C ustom er type

1 Ace Tom ato 1

2 PMH 2

3 Rutgers Law 3

4 M icroso ft 1

F igu ra 4 .2 p rez in tă n o u l m odel de date produs p r in norm alizare .

ء ،ا? ه ء ٠ A r? م V- / ٦ c O ث X ti د O هء وA ه ' * ' *A ; ؛ ؛ ) ء ؛ ء ! ئ ; ء1ءمممئ / B ء V.fiopi ؛ و،Teii: ¡Nomial ' ' V| I ' t Aii

آ ةءا ة ؛ &àر :ه ؟ |ا ؛؛؛ خ ئ > ة ه أ - م - ه : : ' E ٠ 0 ' 1 ء« J . - F I 1 |n«mal’رس I Notmal ى * ء ء '

تأت

jcustom ercategory Iب

, Customer'إCustomerlD ٦

[custom erName jCustomerTypeiP (FK) (IE ) I

Category؛CustomerType؛ اiCustomerTvoelDÎCustomerTypeName

ا ا

(contact

!Contact IDContactName؛

JCustomerlD (FK) (IE )

ill؛؛إ ء؛ءممه st ،tu ? ذ ء

B.ءا،مءأ

ء

FIGURA 4.2Tabelele din acest model de date s u n t aduse la a doua form ă norm ală.

Page 88: Baze de date pentru incepatori (manuale facultate)

79CAPITOLUL 4 PROIECTAREA UNEI BAZE DE DATE.

A treia formă normală: eliminarea coloanelor care nu depind de cheiA ţi în ce p u t cu o s ingu ră s tru c tu ră plată. Pentru a trece la p rim a fo rm ă norm ală , g ru p u r ile care se repetau au fos t m u ta te în tabele separate. A u re zu lta t tre i n o i tabele: Contact, Category şi C ustom er Type. Pasul u rm ă to r este de a duce tabelele la a tre ia fo rm ă norm ală . P entru a i lu s tra acest proces, trebu ie să fie adăugate în ta b e lu l C ustom er unele d in tre câm purile nou create:

H C ustom er ID ;

W C ustom er Name;

S C ustom er Type ID;

■ C ity (o raşu l);

■ State (sta tu l);

■ ZIP Code (codul poştal).

T abe lu l C ustom er este în p rim a fo rm ă norm a lă deoarece n u există g ru p u r i care se repetă şi este în a doua fo rm ă norm a lă deoarece n u există chei m u ltiva lo rice . In acest caz, există o s ingu ră cheie p rim a ră surogat. Se pune prob lem a dacă ta b e lu l este în a tre ia fo rm ă norm ală . P entru aceasta, ar tre b u i ca orice câm p care depinde de orice altceva în afară de cheia p rim a ră să fie m u ta t în a lt tabel. T abe lu l în care este m u ta t câm pu l poate f i u n u l ex is ten t sau u n u l nou. C âm purile precum oraşu l, s ta tu l şi codu l poşta l depind de cheia prim ară? R ăspunsu l este nu . Aceste elemente s u n t com plet independente de cheia p rim a ră C ustom er ID.

Să exam inăm ra p id re la ţia d in tre oraş, s ta t şi cod poştal. C odu l poşta l este specific u n e i lo c a lită ţi ş i u n u i s ta t (este vorba despre lo ca lită ţile ş i statele d in SUA - n. t r . ) . de exem plu, 19301 este codu l p e n tru Paoli, Pennsylvania. Există , to tu ş i, şi Paoli, O klahom a. N u u ita ţ i că scopu l n o rm a liză rii este reducerea da te lo r redundante . Va tre b u i să d e fin iţi n u m a i u n s in g u r ele­m e n t de date ş i să-l re u tiliz a ţi după necesită ţi. G ând iţi-vă că u n m are oraş precum P h ilade lph ia are sute de co d u ri poştale. Pe m ăsu ră ce s tu d ia ţi problem a, devine c la r că este necesar u n nou tabel. In acest caz ve ţi crea u n nou tabe l p e n tru sta t, oraş ş i codu l poştal. Ia tă care va f i s tru c tu ra acestuia:

■ T abe lu l State:

■ State ID ( id e n tifica to ru l s ta tu lu i);

M State Name (num ele s ta tu lu i).

Page 89: Baze de date pentru incepatori (manuale facultate)

DATEPARTEA A ll-A - PROIECTAREA PRIMEI BAZE80

■ T abe lu l City:

■ C ity ID ( id e n tifica to ru l o ra şu lu i);

M C ity Name (num ele oraşu lu i).

■ Tabe lu l C ity State ZIP:

■ ZIP Code (codul poştal);

■ C ity ID ( id e n tifica to ru l o ra şu lu i);

■ State ID ( id e n tifica to ru l s ta tu lu i) .

C um s u n te ţi s ig u r de u n ic ita te a c o d u lu i poşta l, î l p u te ţi u tiliz a ca şi cheie prim a ră . F igu ra 4 .3 a ra tă cum apare m ode lu l de date după aplicarea celei de a tre ia form e norm a le ta b e lu lu i C ustom er. Aşa cum ve ţi vedea când va f i d iscu ta t su b ie c tu l denorm a liză rii, aducerea ta b e lu lu i C ustom er la a tre ia fo rm ă no rm a lă s -a r pu tea să n u aducă rezu lta te optim e.

£]،12؛?V ؛ [s5T؛f ،١€ m o Q ;

WMcw Hdp ؛E،tt V،sv> Irswt Pormal Tcols Ship ؛٤٤؛ ٢٠٠

H * 3* -؛؛ ٠ ' ؛؟> S ; ،١، ؛٠ - i3 "، ’ ؛ CÜÜÜ] Hamal *٠ : ٢ S * - t * ؛= ؟؟؛؟* ’ Lrat( Nonr.al z i

ZKzezzz:aCicw’tFooi

FIGURA 4.3Tabelele d in acest model de date sun t aduse la a tre ia form ă norm ală.

în general, n u ve ţi trece m a i departe de a tre ia fo rm ă norm ală . A r tre b u i să n u u ita ţ i însă că există şi a p a tra şi a cincea fo rm ă norm ală . U tiliza rea lo r este ra ră , to tu ş i. în scopu l c o m p le titu d in ii secţiunea urm ătoare prez in tă pe s c u rt ş i aceste fo rm e norm ale.

Page 90: Baze de date pentru incepatori (manuale facultate)

81CAPITOLUL PROIECTAREA UNEI BAZE DE DATE.

A patra şi a cincea formă normalăIn m ajo rita tea cazurilo r, n u ve ţi trece m ai departe de a tre ia fo rm ă norm ală . A sta n u înseam nă că povestea n o rm a liză rii s-a te rm ina t. E x is tă şi a pa tra ş i a c incea fo rm ă n o rm a lă . A p a tra fo rm ă n o rm a lă izo lează re la ţ i i le independente m u ltip le . D ar ce înseam nă asta? S u n t o m u lţim e de cuvin te , dar conceptu l n u este greu de înţeles. Să începem cu a pa tra fo rm ă norm ală.

Pe m ă su ră ce e fec tua ţi analiza, de te rm ina ţi categoriile de c lie n ţi care se încadrează în anum ite in te rva le ale v o lu m u lu i de vânzări. Ş tiin d ceea ce ş t iţ i despre norm alizare , decideţi să crea ţi u n tabe l de de fin ire a in te rva le lo r cu vo lum e de vânză ri şi apoi să legaţi acest tabe l de ta b e lu l C ustom er Categoiy. Ia tă în continuare s tru c tu ra revizu ită a tabelelor afectate de această m odificare:

٠؛ T abe lu l C ustom er Categoiy:

M C ustom er C ategoiy ID - cheie prim ară ;

■ C ustom er ID;

E C atego iy ID ;

M Sales Range ID ( in d e n tifica to ru l in te rv a lu lu i de vânzări).

■ T abe lu l Sales Range (in tervale le vânzărilor):

■ Sales Range ID (identificatorul in te rva lu lu i de vânzări) - cheie prim ară;

■ Sales Range D escrip tion (descrierea in te rv a lu lu i de vânzări).

Se pune în trebarea dacă există re la ţii reale în tre tabelele C ustom er Category şi Sales Range. Cel m a i probab il, ră sp u n su l este n u . C lie n tu l are vânzări, dar, in te rva le le în care se încadrează vânzările s u n t asociate u n u i c lie n t ca n iş te categorii. P entru aducerea la a p a tra fo rm ă norm ală , câm pu l Sales Range ID trebu ie să fie m u ta t în ta b e lu l Custom er. în cazul ipo te tic curen t, tabelele Custom er, Contact, Categoiy şi Custom er Categoiy satisfac cond iţiile celei de a p a tra form e norm ale.

C onceptu l d in a cincea fo rm ă norm a lă este ceva m ai greu de înţeles. Aceasta presupune div izarea tabe le lo r aduse la a p a tra fo rm ă norm a lă în scopu l reducerii n u m ă ru lu i de râ n d u r i care trebu ie in troduse, m odifica te sau şterse în t im p u l d iverse lor opera ţii de actualizare. Se pune în trebarea dacă este m a i uşoară în tre ţine rea câtorva râ n d u r i de date în p lu s sau în tre ţine rea u n u i tabe l su p lim en ta r. Dacă ch ia r n u aveţi nevoie de u n n ou tabel, m ai bine e v ita ţi crearea lu i. P entru a i lu s tra aducerea la a cincea fo rm ă norm ală , vom considera exem plu) urm ă to r.

Page 91: Baze de date pentru incepatori (manuale facultate)

□ATEPARTEA A ll-A - PROIECTAREA PRIMEI BAZE

Să adăugăm u n tabel Salesperson (agenţi de vânzări) în baza de date ipotetieă la care lu c ra ţi. Baza de date poate în reg istra categoriile asociate u n u i client. In p lus ea în reg istrează ş i agentu l de vânzări că ru ia i-a fos t a tr ib u ită o anum ită com binaţie de categorii de clienţi. Urm area este că trebuie să exisiste u n tabe l c a te ^ r ii-d e -c lie ^ i-a g e n t-d e -v â n z ă r i p e n tru a susţine asocierea în tre cele tre i e n tită ţi. în tru c â t există o re la ţie rea lă în tre categorii şi agenţii de vânzări, acest nou tabe l se află în a p a tra fo rm ă norm ală .

A cum , să presupunem că este pusă în aplicare o nouă regulă: după ce u n u i agent de vânză ri î i este asociată o com bina ţie de categorii de c lien ţi, acesta are acces la alte categorii cu care c lie n tu l ar pu tea f i asociat. Dacă u n c lie n t este asocia t cu t re i agenţi de vânzări, de fiecare dată când l -a ţ i asocia t cu o nouă categorie, trebu ie să adăugaţi tre i în re g is tră ri în ta b e lu l catego!'؛i-de- c lien ţi-agen t-de -vânzări - câte u n a p e n tru fiecare agent. Aceeaşi s itu a ţie ar apărea în cazu l în care c lie n tu l ar f i asociat cu tre i categorii ş i a r in te rve n i o m od ifica re în persona lu l de vânzări. în acest caz, va t re b u i să a c tua liza ţi tre i în re g is tră ri. A cincea fo rm ă no rm a lă presupune div izarea ta b e lu lu i p e n tru a reduce n u m ă ru l de în reg is tră ri.

P en tru a în d e p lin i acest scop, vo r f i create tabelele C ustom er Salesperson ş i C ustom er Category. Această explicaţie presupune că ta b e lu l C ustom er Category n u exista. A na liza ne conduce, m a i degrabă, d irec t la u n tabe l C ustom er Category Salesperson. F igura 4.4 prez in tă m ode lu l de date şi no ile e n tită ţ i care se a ilă în a cincea fo rm ă norm ală .

FIG،^RA 4.4Tabelele din acesf model de date s u n t în a cincea form ă norm ală.

Page 92: Baze de date pentru incepatori (manuale facultate)

CAPITOLUL 4 PROIECTAREA UNEI BAZE DE DATE.

Normalizarea: câteva idei finalePe m ă su ră ce câ ş tig a ţi experien ţă în dezvoltarea baze lo r de date, ve ţi descoperi că norm a liza rea devine u n proces m ai m u lt im p lic it decât u n u l e xp lic it. Cu alte cuv in te , în t im p ce organ iza ţi şi m ode la ţi in fo rm a ţiile dobând ite a n te rio r, ve ţi crea im ed ia t tabele care se află în a tre ia fo rm ă no rm a lă câtă vrem e fo lo s iţi chei surogat univa lo rice . Dacă aveţi o re la ţie m u lţ i la m u lţ i, aşa cum este cazul în tre c lie n ţi şi categorii va tre b u i să faceţi u n pas în p lus şi să trece ţi la a pa tra fo rm ă norm ală . C ât t im p ta b e lu l care joacă ro l de jo n c ţiu n e - tabe lu l Custom er Category în acest caz -con ţine n u m a i m in im u l de date necesare p e n tru a susţine re la ţia m u lţ i la m u lţ i, n u va tre b u i să vă faceţi g r iji pe n tru trecerea la a pa tra fo rm ă norm ală , deoarece tabe lu l respectă deja cond iţiile necesare pen tru această form ă. în fina l, dacă n u trebu ie să vă face ţi g r iji p e n tru a p a tra fo rm ă norm ală , n u va tre b u i să vă faceţi g r iji n ic i p e n tru a cincea form ă norm ală. D in nou, tabe lu l va respecta şi co n d iţiile necesare p e n tru această form ă. S -ar m ai pu tea spune ş i că n u trebu ie să vă face ţi g r ij i p e n tru a p a tra şi a cincea fo rm ă norm ală , deoarece ele n u su n t aplicate în general. Câtă vreme a ţi ajuns la a tre ia fo rm ă norm ală, ia r analiza şi designu l bazei de date au fost realizate cu m inuţioz ita te , şansele dum neavoastră de succes s u n t foarte m ari!

Denormalizarea dalelor - ce rost are să încălcăm regulile?Să lu ă m în considerare tabelele p e n tru oraş, s ta t şi codu l-poşta l-o raş-s ta t. Pe de o parte , aceste tabele se află în a tre ia fo rm ă norm ală . Pe de a ltă parte, de fiecare da tă când trebu ie să sc rie ţi o in terogare p e n tru a extrage date despre c lien ţi, va tre b u i să re u n iţ i date d in p a tru tabele. O ri de câte o ri no rm a liza ţi datele, va tre b u i să p u n e ţi în b a lan ţă două elemente co n tra d ic ­to r ii: scopu l de a reduce re dunda n ţa date lo r ş i m unca su p lim e n ta ră pe care trebu ie să o desfăşura ţi când va tre b u i să extrageţi in fo rm a ţii d in baza de date. în m a jo rita tea cazurilo r, elemente precum oraşu l, s ta tu l şi codu l poştal su n t preluate redundan t în tabele. G ândiţi-vă la s itua ţia când încercaţi să a tr ib u iţ i u n oraş u n u i c lien t, dar oraşu l n u a fos t d e fin it în ta b e lu l cu oraşe. V a t re b u i să a c tu a liza ţi m ai în tâ i acest tabel. A cum , ceea ce s -a r f i rea liza t p r in tr -o s ingu ră operaţie, necesită două operaţii. A sta n u înseam nă că n u a r exista u n m o tiv în tem e ia t d in p u n c tu l de vedere a l f irm e i de a separa in fo rm a ţiile despre oraş, s ta t ş i cod poşta l în m ai m u lte tabele. în acest caz, are ro s t să încă lca ţi regu lile ş i să denorm a liza ţi baza de date.

D ar este im p o rta n t să u rm a ţi regu lile p e n tru denorm alizare. în acelaşi tim p , este im p o rta n t să recunoaşte ţi s itu a ţiile în care este necesar să încă lca ţi regulile . Dacă n u le respecta ţi as igu ra ţi-vă că aveţi u n m o tiv serios p e n tru a face acest lu c ru . Reducerea com p lex ită ţii in te ro g ă rilo r ş i îm b u n ă tă ţire a perfo rm an ţe lo r acestora s u n t m otive în tem eiate p e n tru a face acest lu c ru . F iindcă încă lcarea re g u lilo r trebu ie să fie o excepţie ş i n u s itu a ţia norm ală . De aceea dacă observaţi că denorm alizaţi în continuare , faceţi o pauză pen tru

Page 93: Baze de date pentru incepatori (manuale facultate)

a vă gând i la ceea ce faceţi. E x is tă pos ib ilita te a să a p lica ţi în m od eronat concep tu l denorm a liză rii.

Aplicarea normalizării - recapitulare a bazei de date TEB şi rafinarea designului săuD upă ce a ţi în ţe les b ine norm alizarea, este m om en tu l să ap lica ţi conceptele sale în p ro ie c tu l cu ren t, baza de date Tim e E n tiy and B illin g (no ta tă TEB). P entru a recap itu la , au fos t deja iden tifica te urm ătoare le tabele:

■ Case (cazuri);

■ C lien t (clienţi);

■ ClientCase (cazuri-c lien ţi);

I I Em ployee (angajaţi);

■ Invoice (facturi);

B T im e E n tryD e ta il (deta lii p r iv in d t im p u l alocat).

F igu ra 4.5 prez in tă re la ţiile d in tre en tită ţi.

FIGURA 4.5Versiunea 4 a m odelu lu i bazei de date TEB reprezintă prim a schiţă completă a m odelu lu i bazei de date.

84 PARTEA A ll-A - PROIECTAREA PRIMEI BAZE DE DATE

Page 94: Baze de date pentru incepatori (manuale facultate)

CAPITOLUL 4 PROIECTAREA UNEI BAZE DE DATE.

Identificarea noilor coloane şi tabeleAşa cum b ă n u iţi, p robab il, vo r f i necesare no i tabele. îna in te de a face acest pas, tabelele existente trebu ie com pletate cu coloane. D a r până să trecem m a i departe, este im p o rta n t să re ţinem că n u au fos t exam inate toate aspectele p riv in d datele de pontaj. M odelu l cu care lu c ra ţi conţine in fo rm aţiile de bază necesare p e n tru a exem plifica ş i a preda conceptele despre baze de date tra ta te în această carte. Să co n s tru im acum m ode lu l de date în cepu t în c a p ito lu l 3.

Tabelele EmployeeCase şi ClientCaseDacă vă m ai a m in tiţ i, EmployeeCase şi ClientCase s u n t tabele de jo n c ţiu n e p e n tru re la ţ ii m u lţ i la m u lţ i. U n u i c lie n t i se p o t a tr ib u i m a i m u lţ i angaja ţi. In p lus, u n u i anga ja t i se po t repartiza m a i m u lte cazuri. Acelaşi t ip de re la ţie exis tă în tre c lie n ţi ş i cazuri. D a to rită n a tu r ii acestor tabele, ele n u necesită coloane sup lim entare .

Tabelul EmployeeSă începem cu ta b e lu l Employee. Ce fe l de in fo rm a ţii trebu ie stocate în el? S u n t necesare cel p u ţin urm ătoare le date:

٠ Em ployee ID ( id e n tifica to ru l anga ja tu lu i);

F ؛1 irs t Name (prenumele);

، M '؛ idd le in iţ ia l ( in iţia la ce lu i de-al doilea num e);

٠؛ Last nam e (num ele de fam ilie);

٠؛ Socia l S ecurity N um ber (n u m ă ru l a s ig u ră rii sociale);

S iAddress 1 (adresa 1);

،1 Address 2 (adresa 2);

3 C ity, State, ZIP Code (oraş, sta t, cod poştal);

B Home Phone and W o rk Extension (te le fonul de acasă şi in te r io ru l de la se rv ic iu ).

în p lus fa ţă de cele d in lis ta de m ai sus, m ai su n t necesare câteva in fo rm a ţii. U na d in tre ele este clasificarea anga ja tu lu i. In f irm a de avocatură există parteneri, asociaţi, ju r iş t i , secretare şi personal a d m in is tra tiv . O ricând vă co n fru n ta ţi cu u n elem ent de clasificare, p u te ţi pa ria că va f i necesar u n nou tabel. V ă a m in t iţ i d iscu ţia despre a tre ia fo rm ă norm ală? Clasificarea u n u i angajat poate f i u n element generic care n u depinde de cheia EmployeelD. Dacă vă g â n d iţi la acest lu c ru , trebu ie să adăugaţi u n nou tabe l E m plo- yeeC lassification, îm p reună cu cheia externă E m ployeeC lassifica tion ID în tabe lu l Employee.

Page 95: Baze de date pentru incepatori (manuale facultate)

DATEPARTEA A ll-A - PROIECTAREA PRIMEI BAZE

Firm ele de avocatură au de obicei m u lte departam ente. De exem plu, ar pu tea avea u n u l sau toate departam ente le urm ătoare : im pozite , a n titru s t, l i t ig i i civ ile , p rop rie ta te in te lec tua lă , a s igu ră ri şi m u n ic ip a lita te , p e n tru a n u m i n u m a i câteva. Pare a i i u n nou elem ent de clasificare, nu? V e ţi adăuga u n nou tabe l în baza de date, n u m it D epartm ent. în p lus , va tre b u i să adăugaţi în ta b e lu l Em ployee u n câm p n u m it D epartm entID .

A Să ne amintim că tabelul Employee are următoarea structura:/ sfat\ H Employee ID (identificatorul angajatului) - cheie primară;

■ Department ID (identificatorul departamentului) - cheie externă de la tabelul Department;

■ Employee Class ID (identificatorul clasei angajatului) - cheie externă de la tabelul Employee Class;

B First Name (prenumele);■ Middle Iniţial (iniţiala celui de-al doilea nume);M Last Name (numele de familie);■ Social Security Number (numărul asigurării sociale);H Address 1 (adresa 1);I I Address 2 (adresa 2);a City, State, ZIP Code (oraşul, statul, codul poştal);■ Home Phone and Work Extension (telefonul de acasă şi interiorul

de la serviciu);M E-mail Address (adresa de e-mail).

în conjuncţie cu noile chei externe, la modelul de date au fost adăugate următoarele tabele:

M Department;■ EmployeeClass;

în afară de câmpul DepartmentID, tabelul Department mai conţine şi un câmp numit Description (descriere).

Tabelul CilentT abe lu l C lie n t este des tu l de s im p lu . în el trebu ie stocate urm ă toa re le elemente de date:

M C lien tID ( id e n tifica to ru l c lie n tu lu i) - cheie prim ară ;

٠ C lie n t Ţype ( t ip u l c lie n tu lu i) - f irm ă sau persoană fizică;

N F irs t Name (prenumele);

■ M idd le In iţ ia l ( in iţia la ce lu i de-al doilea n um e);

Page 96: Baze de date pentru incepatori (manuale facultate)

87CAPITOLUL <٠ PROIECTAREA UNEI BAZE DE DATE.

■ Last Name (num ele de fam ilie);

S O rgan iza tion Name (num ele organizaţie i);

■ Address 1 (adresa 1);

S Address 2 (adresa 2);

■ C ity, State, ZIP Code (oraşul, s ta tu l, codu l poştal);

■ Phone (te le fonu l);

■ E -m a il Address (adresa de e-m a il).

T rebu ie d iscu ta te câteva elemente. M ai în tâ i, p e n tru t ip u lu i c lie n tu lu i este necesar u n a lt tabe l p e n tru a stoca dife rite le t ip u r i de c lie n ţi pe care f irm a î i reprezin tă? în acest caz. ră sp u n su l este negativ. în t im p ce vă desfăşura ţi analiza, a ţi a fla t că există n u m a i două t ip u r i de c lien ţi: firm e ş i persoane fizice. A tu n c i fiecare în reg is tra re a u n u i c lie n t va avea u n câm p n u m it C lien t Ţype ( t ip u l c lie n tu lu i) care va conţine fie lite ra B de la „bus iness” , fie lite ra I de la „ in d iv id u a l” . în tr -u n astfel de caz, n u există u n benefic iu prac tic d in crearea u n u i a lt tabel.

D a r contacte le? N u este n ic i o îndo ia lă că în cazul c lie n ţilo r care s u n t firm e va tre b u i să o fe riţi contacte. în trebarea urm ătoare este dacă p o t exista contacte m u ltip le p e n tru fiecare c lien t. Cel m a i probab il, ră sp u n su l este da. V eţi avea nevoie de in fo rm a ţii de contact despre m ai m u lţ i d in tre angaja ţii firm e i c lien t. în concluzie, dacă vă g â n d iţi că va tre b u i să d e fin iţ i u n tabe l d e n u m it C ontac t ( in fo rm a ţii de con tac t), su n te ţi pe calea cea bună!

Structura tabelului Contact este simplă:B ContactID (identificatorul contactului) - cheie primară;■ First Name (prenumele);■ Middle Iniţial (iniţiala celui de-al doilea nume);■ Last Name (numele de familie);■ Title (titlul);■ Phone (telefonul);■ Extension (interiorul);* E-mail Address (adresa de e-mail).

Ce legătură are câmpul Title cu necesitatea unui nou tabel pentru căutare? Titlurile posturilor sunt elemente generice. In acelaşi timp, ele pot varia de la firmă la firmă, lată de ce trebuie să decideţi dacă veţi stoca informaţiile într-un tabel sau le veţi lega datele cu un alt tabel şi o cheie externă. Avantajul de a avea titluri predefinite stocate într-un tabel este consistenţa datelor. De exemplu, aţi putea controla variaţiile de tipul CEO sau C.E.O. în acelaşi timp, probabil că vor exista numai câteva titluri. Când vă în­dreptaţi atenţia spre construirea interfeţei cu utilizatorul, vi se vor prezenta

Page 97: Baze de date pentru incepatori (manuale facultate)

DATEPARTEA A ll-A - PROIECTAREA PRIMEI BAZE

nişte tehnici pentru respectarea standardelor care vor permite variaţiile. In concluzie puteti să creaţi sau să nu creaţi un tabel separat cu titlul postului. Dacă nu veţi crea un tabel separat, titlul va fi stocat în înregistrarea contactului.

Tabelul CaseT abe lu l Case stochează in fo rm a ţiile de bază despre u n caz, in c lu s iv t i t lu l, judecă to ru l, tr ib u n a lu l, departam entu l, data începerii, data procesu lu i, data în ţe lege rii ş i observaţii. Este necesar u n tabe l separat p e n tru ju d e că to r şi tr ib u n a l? Cel m a i probab il, ră sp u n su l este da. F irm a doreşte să ştie ce cazuri au m a i fos t prezidate de u n a n u m it judecă to r. în p lus , firm a va do ri să ştie d e ta lii p r iv in d cazurile care au fos t judeca te în a num ite tr ib u n a le . Dacă lu ă m ca exem plu o raşu l Philade lph ia , acolo există tr ib u n a l de stat, m u n ic ip a l şi federal. în această clas ificare există m u lte t ip u r i de tr ib u n a le în care poate f i ju d e c a t u n caz. Bineînţe les, f irm a doreşte să ştie ce cazuri s u n t judeca te în ce tr ib u n a le .

Cazurile judecate de tribunale au un anumit calendar. în realitate, vom asocia tabelului Case un tabel copil pentru a ţine evidenţa diferitelor elemente care depind de timp, cum sunt depoziţiile, moţiunile de dinainte de proces, răspunsurile, audierile în faţa judecătorului, discuţiile pentru înţelegeri şi aşa mai departe. Tabelul copil se va comporta ca un me­mento, pentru a anunţa utilizatorii despre apropierea unor termene sau prezentări în faţa instanţei. Deoarece aceste elemente nu sunt direct înrudite cu contorizarea timpului şi cu factura, ele vor fi ignorate.

Tabe lu l Case are urm ătoarea s tru c tu ră :■ CaseID (id e n tifica to ru l cazulu i) - cheie prim ară ;■ D epartm en tID ( id e n tifica to ru l departam en tu lu i) - cheie s tră in ă de la

ta b e lu l D epartm ent;H C ourtID (iden tifica to ru l tr ib u n a lu lu i) - cheie stră ină de la tabe lu l Court; ٠ Judge ID ( id e n tifica to ru l ju d e că to ru lu i) - cheie s tră in ă de la ta b e lu l

Judge;i i D ocke tnum be r (n u m ă ru l procesu lu i pe rol);

■ T itle (titlu l);■ Notes (observaţii);■ S ta rt Date (data începerii);■ T r ia l Date (data procesulu i);■ S ettlem en t Date (data în ţe legerii).

Fiecare caz trebu ie să fie a tr ib u it u n u i departam ent. De exem plu, u n l i t ig iu p r iv in d u n p a te n t a r tre b u i să fie a tr ib u it d e p a rta m e n tu lu i Proprie ta te

Page 98: Baze de date pentru incepatori (manuale facultate)

C APITO LU L PROIECTAREA UNEI BAZE DE DATE.

In te lec tua lă . în ce fe l a ju tă acest lu c ru ? Când v ine m o m e n tu l de a a tr ib u i anga ja ţilo r u n caz, n u ve ţi d o ri să faceţi n u m a i acest lu c ru . M ai cu râ n d ve ti do ri să a tr ib u iţ i cazul n u m a i u n o r anga ja ţi care fac parte d in departam entu l respectiv. Aşa cum ş tiţ i, u n anga ja t trebu ie să a p a rţin ă u n u i departam ent. Aşa cum ve ţi vedea m ai tâ rz iu , organizarea date lo r în acest m od vă perm ite să f i l t r a ţ i l is ta anga ja ţilo r. A stfe l s u n t evitate greşelile, ca de exem plu a tr ib u ire a u n u i l i t ig iu p r iv in d p ro p r ie ta te a in te le c tu a lă u n u i avoca t specia liza t în im pozite . M a i tâ rz iu în această carte vom face o in troduce re în regu lile d in tr-o f irm ă ş i in teg rita tea datelor. Aşa cum ve ţi vedea ş i cum p ro b a b il a ţi vă zu t deja, u n design so lid a l bazei de date îm bună tă ţeş te capacita tea de a în tă r i regu lile firm e i şi in teg rita tea datelor.

N ou l tabe l C ourt conţine u n câmp n u m it C ourtID (iden tifica to ru l t r ib u n a lu ­lu i) şi u n u l n u m it D escrip tion (descriere). T abe lu l Judge conţine u n câmp n u m it Judge ID ( id e n tifica to ru l ju d e că to ru lu i), precum ş i u n câm p n u m it C ourtID ( id e n tifica to ru l tr ib u n a lu lu i) p e n tru a realiza legă tu ra cu ta b e lu l C ourt. In p lus , s u n t stocate: prenum ele , in iţ ia la ce lu i de-a l doilea num e, num ele de fam ilie ş i observaţiile despre judecă to r. C h ia r dacă n u vă d a ţi seama, apare astfe l o prob lem ă in te resantă . T abe lu l Case are legă tu ri ş i cu tabe lu l C ourt şi cu tabe lu l Judge. Tabelu l Judge conţine o legătură cu tabe lu l C ourt, deci ju d e c ă to ru lu i i se a tr ib u ie u n tr ib u n a l. Dacă ju d e c ă to ru l are deja o legă tu ră cu t r ib u n a lu l, de ce este nevoie de câte o legă tu ră la ta b e lu l Case şi de la ta b e lu l C ourt şi de la ta b e lu l Judge? P entru că este foarte p o s ib il ca a ltu i ju d e c ă to r să -i fie re p a rtiz a t cazu l dum neavoastră . De asemenea, aceste le g ă tu ri m u ltip le s u n t u tile în rea lizarea rapoarte lo r.

T abelu l T im e E n try D e ta ilSă re ve n im a cum la ta b e lu l T im e E n try D e ta il. In t im p u l ana lize i, a ţi d e te rm in a t deja că o în reg is tra re d in acest tabe l va face legă tu ra cu o în reg is tra re d in ta b e lu l Invoice la m om en tu l fa c tu ră rii. Fiecare în reg is tra re d in ta b e lu l T im e E n tryD e ta il trebu ie să aibă o legă tu ră cu o com bina ţie angaja t-caz-c lien t. N u u ita ţ i că u n caz poate im p lica m a i m u lţ i c lien ţi. De aceea, n u este su fic ie n t să rea liza ţi doar o legă tu ră la u n caz. Problem a alegerii c lie n ţilo r cărora l i se vo r în to cm i fa c tu r i va i i foarte d ific ilă . Ce date m ai trebu ie stocate în tabe lu l T im eE ntryD eta il? Dacă a ţi com ple ta t vreodată o foaie de p on ta j, p robab il g h ic iţ i care su n t cele m a i im po rtan te u n fo rm a ţii. Elem ente precum activ ita tea , data, n u m ă ru l de ore şi ta r ifu l o ra r s u n t u n b u n p u n c t de porn ire . In acest context, ta r ifu l o ra r este cel d in fa c tu ra în to cm ită c lie n tu lu i, n u cel p lă t it anga ja ţilo r. Plata anga ja ţilo r depăşeşte scopu l acestei baze de date. M ai există câteva problem e p r iv in d ta r ifu l orar, deci să ne o p rim p u ţin p e n tru a le d iscuta .

C um va p lă ti u n c lie n t p e n tru servic iile care i se oferă? Depinde de n a tu ra a c t iv ită ţ i lo r . De e xem p lu , p e n tru a c t iv ită ţ i a d m in is tra tiv e , cu m a r f i fo tocopierea docum ente lor, c lie n tu l a r pu tea p lă ti 50 $ pe oră. Dacă la u n caz lucrează u n ju r is t , a tu n c i c lie n tu l a r pu tea f i ta xa t cu 100 $ pe oră, ia r dacă u n avocat rep rez in tă c lie n tu l în in s tan ţă , c lie n tu l a r pu tea f i ta xa t cu

Page 99: Baze de date pentru incepatori (manuale facultate)

1500 $ pe oră. în prezent, in fo rm a ţiile p r iv in d p re ţu r ile o b işnu ite p e n tru diversele a c tiv ită ţi n u s u n t stocate în baza de date. în tabe lu l T im eE n tiyD e ta il este stoca t u n ta r i f de fac tu ra re . P entru a asigura consis ten ţa şi acurateţea date lor, ra ta o b işn u ită trebu ie să fie stocată undeva. în treba rea este unde. Ce a ţi zice de ta b e lu l Employee? U n angaja t poate avea m ai m u lte t ip u r i de a c tiv ită ţi? R ăspunsu l este da. U n avocat p ledan t poate d iscu ta la te le fon cu c lie n tu l, poate apărea în in s ta n ţă sau poate lu a o depoziţie. Fiecare d in tre aceste a c tiv ită ţ i are d ife rite ta r ife orare. Pe baza acestei cerin ţe , ta r ifu l o b işn u it depinde de activ ita tea desfăşurată. Şi atunc i, categoria de activ ita te este stocată în prezent în baza de date? R ăspunsu l este negativ. De aceea, este necesar u n n o u tabe l, n u m it W orkC ategory (categoria a c tiv ită ţii) . D eta liile d in n o u l tabe l W orkC ategory vo r f i d iscu ta te pe scu rt, dar, îna in te de a trece m a i departe, vedeţi cum procesu l de analiză a u n u i tabe l poate duce la crearea de no i câ m p u ri ş i tabele?

T abe lu l T im e E n tiyD e ta il are s tru c tu ra urm ătoare :■ T im eE n tiyD e ta ilID (iden tifica to ru l de ta liilo r de pontaj) - cheie prim ară ; M Invo iceID ( id e n tifica to ru l fa c tu rii) - cheie s tră in ă de la ta b e lu l Invoice;■ CaseID ( id e n tifica to ru l cazulu i) - cheie s tră in ă de la ta b e lu l Case;■ Em ployeeID ( id e n tifica to ru l anga ja tu lu i) - cheie s tră in ă de la ta b e lu l

Employee;■ C lien tID ( id e n tifica to ru l c lie n tu lu i) - cheie s tră in ă de la ta b e lu l C lient; 0 D escrip tion (descriere);If H ours (n u m ă ru l de ore);

٠؛ Rate ( ta r ifu l orar);H W o rk Date (data desfăşu ră rii a c tiv ită ţii) ;E W o rk Category (categoria a c tiv ită ţii) .

în acest m o m e n t se p u n e în tre b a re a dacă în re g is tră r ile d in ta b e lu l T im eE n tiyD e ta il vo r ind ica spre în reg is tră ri în ru d ite d in tabe lu l W orkC ate­gory sau dacă in fo rm a ţiile vo r f i p re lu a te în în re g is tră r ile d in ta b e lu l T im e E n t iy D e ta il. în aces t caz, tre b u ie ca în re g is tră r ile d in ta b e lu l T im eE ntiyD e ta il să fie independente de m odificările d in tabe lu l W orkCategory. De exem plu, ce s-ar în tâm p la dacă, o a num ită activ ita te este fa c tu ra tă cu 100 $ pe oră, ia r peste tre i săptăm âni p re ţu l acelu iaşi servic iu creşte la 120 $ pe oră? Dacă există o legătură, la vizualizarea de ta liilo r în re g is tră rii d in tabelu l T im eE ntiyD eta il veţi vedea nou l tarif. Acest scenariu n u este funcţional. M ai m u lt ta r ifu l d in tabe lu l W orkC ategoiy este u n u l ob işnu it. T a rifu l poate f i m od ifica t după in troducerea în în reg istrarea d in tabe lu l T im eE n tiyD e ta il. D in acest m otiv , ta r ifu l a c tu a l trebu ie s toca t în în re g is tră rile ta b e lu lu i T im eE n tiyD e ta il. în tru c â t descrierea categoriei a c tiv ită ţii se poate m odifica, şi aceasta va f i p re lua tă în în reg is tră rile ta b e lu lu i T im eE n tiyD e ta il.

C um v e ţ i ş t i că a fo s t fa c tu ra tă o a n u m ită în re g is tra re d in ta b e lu l T im e E n tiyD e ta il? Poate vă g â n d iţi că este necesar u n câm p p e n tru a in d ica acest lu c ru . A ic i in te rv in e câm pu l InvoiceID . E l are ro l d u b lu . M ai în tâ i, la

90 PARTEA A ll-A - PROIECTAREA PRIMEI BAZE DE DATE

Page 100: Baze de date pentru incepatori (manuale facultate)

91CAPITOLUL 4 PROIECTAREA UNEI BAZE DE DATE.

crearea u n e i n o i în re g is tră ri în ta b e lu l T im e E n tiyD e ta il, acest câm p are va loa rea im p lic ită 0. Apo i, d u p ă fa c tu ra re , n o u l câm p Invo ice ID este com ple ta t cu o valoare. De aceea, valoarea 0 d in câm pu l InvoiceID în tabe lu l T im e E n tiyD e ta il a ra tă că n u a fos t fa c tu ra t se rv ic iu l respectiv. A stfe l ve ţi ş ti dacă a fos t sau n u în to cm ită factu ra .

N ou l tabe l W orkC a tego iy are s tru c tu ra urm ătoare :

■ W orkC ategory lD ( id e n tifica to ru l categoriei a c tiv ită ţii) - cheie p rim ară ;■ D escrip tion (descriere);

■ D efau ltR ate ( ta r ifu l o b iş n u it) .

Dacă p r iv iţ i u lt im a vers iune a m o d e lu lu i bazei de date d in fig u ra 4.6, n u ve ţi vedea o re la ţie care să im p lice ta b e lu l W orkC ategoiy. în acest scenariu , ta b e lu l W orkC atego iy are ro l de şab lon (template). Cu alte cuvin te , după u tiliz a re a da te lo r d in tr -o în reg is tra re a ta b e lu lu i W orkC a tego iy p e n tru com pletarea da te lo r în ta b e lu l T im eE n tryD e ta il, n u m a i este necesară o re fe rin ţă la ta b e lu l W orkC atego iy. Necesitatea c reă rii şi în tă r ir i i re la ţiilo r este foarte im p o rta n tă . Aceste concepte s u n t d iscu ta te în ca p ito lu l 7. Este des tu l să spunem , deocam dată, că în a num ite cazuri, unele tabele există p e n tru a oferi u n p u n c t de porn ire ope ra ţiilo r de in troduce re a da te lo r în alte tabele. N u u ita ţ i, după ce u n u tiliz a to r alege u n t ip de activ ita te , ta r ifu l acesteia se poate schim ba.

Tabelul InvoiceIn fin a l, dar n u m a i p u ţin im p o rta n t, vom d iscu ta despre ta b e lu l Invoice. Acesta este foarte s im p lu ş i are s tru c tu ra :

B Invo iceID ( id e n tifica to ru l fa c tu rii) - cheie prim ară ;B C lien tID ( iden tifica to ru l c lien tu lu i) - cheie externă de la tabe lu l Client;

Invoce N um ber (n u m ă ru l fa c tu rii);■ Invo ice Date (data fa c tu rii).

în acest context, ta b e lu l Invoice n u este decât u n „adeziv” p e n tru a u n i m ai m u lte în reg is tră ri d in tabe lu l Tim eE ntryD eta il. E xistă u n element d in tabe lu l Invoice care î1 face u n ic - câm pu l Invoice N um ber. în acest context, n u m ă ru l u n e i fa c tu r i este p a rţia l s ta tic şi p a rţia l secvenţial. De exem plu fa c tu ra 150 d in a n u l 2001 a r pu tea avea n u m ă ru l 2001-150. în această s itu a ţie are p re fixu l s ta tic ia r re s tu l este secvenţial. C um este produs n u m ă ru l une i fa c tu ri? în tru c â t ne aflăm încă în faza de m odelare, n u ne vom preocupa de acest aspect.

Recapitulare a modelului bazei de dateCategoric, este m o m e n tu l să lu a ţ i o pauză! F igu ra 4.6 p rez in tă u lt im a vers iune a m o d e lu lu i bazei de date Tim e E n tiy and B illin g (TEB). Acesta este foarte d ife r it ş i m a i expansiv decât cel rea liza t în ca p ito lu l 3. Se spune că o im ag ine valorează m a i m u lt decât o m ie de cuvin te . F igu ra 4.6 oferă o

Page 101: Baze de date pentru incepatori (manuale facultate)

DATEPARTEA A ll-A ■ PROIECTAREA PRIMEI BAZE92

b u n ă înţelegere a fu n c ţiilo r pe care baza de date TEB le va suporta . Este im p o rta n t să observaţi că n u există încă o bază de date fizică. în rea lita te , ve ţi prezenta acest m odel u tiliz a to r ilo r p r im a ri ai s is te m u lu i p e n tru a vă asigura că au fos t îndep lin ite cerinţe le lor. D in perspectiva buge tu lu i, acesta este m o m e n tu l în care d o r iţ i să sesizaţi orice eventuale d is fu n c ţio n a lită ţi. Dacă am com para o ap lica ţie cu o construc ţie , a tu n c i baza de date ar f i funda ţia . Dacă fu n d a ţia este şubredă, co n s tru c ţia se va prăbuş i. Nu veţi pu tea începe co n s tru c ţia îna in te de a tu rn a fu n d a ţia şi în a in te ca ea să se f i usca t. D acă vă g ră b iţi, n u vă aşteaptă lu c ru r i bune. In procesu l de dezvoltare, acesta este m om en tu l în care trebu ie să vă as ig u ra ţi că fu n d a ţia ap lica ţie i dum neavoastră s-a uscat.

EmpiayeeOase؛

-----—______JE) f ؛ (Oescnpiion j jCaselO (FK؛kCaIe*Jiy؛VVo| ١ lEmployeelD fFK) (Ej

-1—j —: z— — iw^woDescuotion؛ . .....................................

[juăge ٠ JCouit ؛

UlldgilD f ؛ )CouHID¡Oescnptcn۶ ؛ ٠ Fi'slName•٠ ؛•

1....¿ ¡^ 't{liCj ’SfO V■؛"J I, ٠.-

(ClientIO (FK'j (E؛ ؛ jCaseID fFK، QE) j ؛

■٦٢ —fimployeiGass [

fEnuilovee'ClasiCi i 1” ' U'esc.riptiwi

• ٠١

|E،M Dîte: &Î6/2C011122Î0 M l

Database lo support Time Entty and Furetons ؟¡Ik

Target DB: Accex |Rev■. 5 Creator John V. Petersen

Filename. IdbDBSvsd

FIGURA 4.6U ltim a versiune a bazei de date Time E n try and B illin g a fost com pletată cu no i coloane şi tabele şi a parcurs procesul de norm alizare.

PUNEŢI ÎNTREBĂRI Şl IMPLICAŢI UTILIZATORII!O metodă prin care puteţi stabili că proiectul dumneavoastră este solid este să puneţi întrebări bazei de date şi să stabiliţi dacă vă poate oferi răspunsuri. De exemplu, puneţi întrebarea „Se poate determina care avocaţi lucrează la un anumit caz?”, apoi vedeţi dacă baza de date poate răspunde la această întrebare. In acest caz, poate. In analiza designului, vedeţi o legătură între cazuri şi angajaţi. Mai mult angajaţii sunt grupaţi pe categorii în tabelul EmployeeClass. Evident, dacă puneţi o întrebare la care baza de date nu poate răspunde, designul acesteia nu este complet.

Page 102: Baze de date pentru incepatori (manuale facultate)

93CAPITOLUL 4 PROIECTAREA UNEI BAZE DE DATE.

Aşa cum bănuiţi, probabil, observarea acestor lipsuri acum, în faza de modelare, este mult economicoasă. Existenţa lipsurilor poate fi determinată prin instinct, nu numai logic. In mod sigur, ştiinţa nu poate răspunde tuturor întrebărilor. Dacă nu ştiţi prea bine ce întrebări să puneţi, aflaţi ce doresc să ştie utilizatorii sistemului. Nu uitaţi să solicitaţi întrebări de la utilizatorii aflaţi pe toate treptele ierarhice. Vă mai amintiţi discuţia noastră anterioară despre nevoile tactice şi nevoile strategice ale unei firme? Utilizatorii vor aprecia în mod sigur faptul că au fost implicaţi în acest proces. Cu cât aţi implicat mai mulţi utilizatori, cu atât este mai probabil ca aceştia să preia şi să accepte sistemul.

RezumatIn acest capito l, a ţi fos t in tro d u s în concepetele norm a liză rii şi ale im p a c tu lu i acesteia asup ra d e s ignu lu i bazei de date. In m a jo rita tea s itu a ţiilo r , o bază de date tre b u ie să se afle n u m a i în a tre ia fo rm ă norm ală . în unele s itu a ţii, to tu ş i, este necesară aducerea la a p a tra ş i a cincea fo rm ă norm ală . Pe m ăsu ră ce p a rcu rge ţi procesu l de norm alizare , ve ţi pu tea s ta b ili ce coloane trebu ie inc luse în ce tabele. Este aproape s ig u r că e fo rtu rile dum neavoastră de norm alizare vă vor conduce la crearea u no r tabele la care n u vă gândiserăţi în e fo rtu rile in iţ ia le de pro iectare. Acest cap ito l ş i cel precedent au sch iţa t o h a rtă ş i u n cad ru p e n tru efectuarea ana lize i ş i p ro ie c tă rii bazei de date. A na liza ş i pro iecta rea bazei de date po t f i complexe, deci scopu l acestor două cap ito le a fos t de a s u b lin ia s im p lita tea şi b u n u l s im ţ. R ecapitu lând, ia tă ca d ru l pe care l-a m creat:

■ A d u n a ţi in fo rm a ţii despre cerin ţe le pe care trebu ie să le îndeplinească baza de date, fo los ind in te rv iu r ile , docum ente le f irm e i ş i sistemele existente.

■ D in aceste in fo rm a ţii, id e n tifica ţi aspectele im po rtan te pe care trebu ie să le urm ărească baza dum neavoastră de date. Aceste „aspecte” vor lu a fo rm a tabele lor.

■ D upă iden tifica rea tabe le lo r im po rtan te , id e n tif ic a ţi re la ţiile d in tre ele. D in acest proces p o t rezu lta no i tabele.

I I D upă ce a ţi pus la p u n c t elementele prim are , aveţi u n cad ru pe care p u te ţi co n s tru i. U tiliza rea n o rm a liză rii şi a in fo rm a ţiilo r aduna te a n ­te rio r, este p o s ib il să vă conducă la iden tifica rea de no i câ m p u ri de date şi tabele.

■ în fin a l. în tre b a ti m ode lu l bazei de date ceea ce f irm a doreşte să afle. Acest proces de te rm ină com p le titud inea m ode lu lu i. Dacă m ode lu l nu poate răspunde la o în trebare , va tre b u i să repe ta ţi u n ii sau to ţi paş ii precedenţi.

A ic i se încheie s tu d iu l ana liza i ş i p ro ie c tă rii u n e i baze de date în sens fo r­m al. A cum vom trece la aspecte m u lt m ai tang ib ile : co n s tru ire a ş i punerea în fu n c ţiu n e a bazei de date. C a p ito lu l 5 vă asistă în procesu l c o n s tru ir ii în Access a bazei de date Tim e E n tiy and B illin g (TEB).

Page 103: Baze de date pentru incepatori (manuale facultate)

5a .

CONSTRUIREA BAZEI DE DATE IN ACCESS

In acest capitol:■ G enerarea au tom ată a bazei de date d in m ode lu l TEB;■ O scu rtă recap itu la re a u t i l i ta ru lu i Access Database De-

signer;

■ Crearea bazei de date fo los ind u t i l i ta ru l Access Database Designer;

■١ R ezum at

Page 104: Baze de date pentru incepatori (manuale facultate)

DATEPARTEA A ll-A - PROIECTAREA PRIMEI BAZE

A cum , după ce a ţi înche ia t m ode lu l bazei de date, este m o m e n tu l să creaţi baza de date fizică. E x is tă două m etode p e n tru a crea o bază de date. Cu p rim a m etodă, ve ţi crea au to m a t baza de date d in diagram a V is io . A doua m etodă presupune crearea au tom a tă a tu tu ro r tabe le lo r, câ m p u rilo r şi re la ţiilo r. C h ia r dacă alegeţi m etoda autom ată , to t va tre b u i să co n fig u ra ţi m a n u a l câteva a tr ib u te de câm؟ pu rilo r. Acesta este m o tiv u l p e n tru care acest ca p ito l se va concentra asupra m etodei m anuale . C a p ito lu l va începe cu m etoda m anua lă , p e n tru cazul în care alegeţi această cale. F igu ra 5.1 ilu s trează p u n c tu l dum neavoastră de porn ire , m ode lu l bazei de date Tim e E n try and B illin g (TEB), pe care a ţi creat-o în c a p ito lu l 4.

eCase؛ploy1؛ ]EirCourt

1'CourtID I l EmcloveeCaseD■"؛O ؛Description ؛ ؛Caselü <٢٣١ )£؛ .--------------:—-----.

jWorkCategay J ٠)؛ j jEmployeeID (FkJ

t• ،؛j.WorkCateqoi ؛'،٢٠٠٠٦٠١ ' ١ Plac rri ١ 7

e؛،Start D TnalDaU

Ssuisir.er؛'؛؛!•. Department© (FK؛

١)£ (CourtID (FK (Judge© (FK) (IE•

jCiientCase

xyl-ClientCaseD !٠٦ j ; JCIientlD (FK) (B ; jCaselD (FK) (E)

FirstName * Middlelnitial LasIName

Oigani؛3li،r.t'jarri؛

A،Jdre؛52

| s؛؛oyeeCfe؛Emp

EmcioyeeClassO i Descriptor؛ ؟

DsfauHRaie

Tm• Entry »* ٠٠٠٢ ١ ^ Oaljts» !^٠ Date G/260M1 ¡\22XAM

ng Functions؛>،Database to support Time Entry and B

Targst DB: .Ac»« |Rev: 5 Creator. John ٧ . Pstsisan

Filename tdbDBSvsd rftvirt. kt؛، *Cwncany.Mar، Ln

FIGURA 5.1M odelul bazei de date Time E n try and B illing.

Generarea automată a bazei de date din modelul TEBIn c a p ito lu l 3 am prezenta t o in troduce re în ap lica ţia w izard Create D ata ­base d in Visio . Aceasta citeşte o d iagram ă cu re la ţii în tre e n tită ţi d in V is io ş i adaugă tabele în tr-o bază de date existentă sau creează o nouă bază de date. P entru d e ta lii despre func ţiona re a fu n c ţii lo r d in V is io , o p riţi-vă p u ţin şi reven iţi la ca p ito lu l 3. în paş ii u rm ă to ri vom recap itu la pe s c u rt m o d u l de u tiliza re a ap lica ţie i wizard.

D upă ce desch ide ţi m ode lu l bazei de date în V isio , d in m e n iu l Tools, alegeţi Database DesignXCreate Database W izard. F igura 5.2 prez in tă caseta de d ia log a ap lica ţie i wizard.

Page 105: Baze de date pentru incepatori (manuale facultate)

CAPITOLUL ة CONSTRUIREA BAZEI □E DATE ÎN ACCES 97

E cranu l de deschidere al ap licaţie i wizard Create Database.

FIGURA 5.2

F igu ra 5.3 p rez in tă pasu l 2 a l aplica ţie i, care vă cere să spec ifica ţi num ele f iş ie ru lu i cu diagram e d in V is io (.vsd) pe care î l ve ţi u tiliz a p e n tru crearea bazei de date.

FIGURA 5.3Pasul 2 al ap licaţie i wizard vă solic ită num ele f iş ie ru lu i din Visio pe care îl veţi folosi.

în tre p a ş ii 2 ş i 3, V is io va c it i fiş ie ru l. în pasu l 3 ve ţi in d ica p ro g ra m u lu i V is io lo ca ţia în care va f i creat n o u l fiş ie r cu baza de date. în acest caz, d e n u m iţi f iş ie ru l T E B .M D B (vedeţi fig u ra 5.4).

FIGURA 5.4Pasul 3 al ap licaţie i vă solic ită num ele bazei de date care va fi creată.

ه name andامما،هسم: أ هاهج6ء

Ch||\ ه م ا ه ه ء ء ؛ م ه ١ |D:V،؛b؛؛oMe Begtnn؛*؛ Guiae ٠٠ ا

١he، ؛e. *he vveard add؛II you open an a»:ling dalaba ز ي

| Hsxt> | Cancel [ث ت

dbdb5.vsd0*\؛ databaie؛ guide ؟oUe begimei؛t\âb

Bjowse ■■ I

ytyjf diagram la س . ٥* C،ck Next to ■e،.the weaid ea* ق5'امه *٠ youl be ؛,wirard locaie: error ١٢ *٠١٠ .eriOfi

hem.؛ *he weard and fix

include: ١٥١؟» Potential ■ Uncornecled relatiorohip;

» hour primary هءامهال؟ءا derived ض »• En*،i

| |r ■| Cancel [

The¿rea*e D a* abs؛؛e Wizardcreate؟ *able؛ lor ةentity ،٧©؛؛ database baîed on a ٥?. » ؛ Microsoft Ac؛

,relationship Vagram

ing database.؛؛an e«i ؛ ٠٦٠٥able) ١٨٢٠٢١ *٠١٠ •• Create a new database.

The wiiard waks only with shapes: trom the IQEFIXot مهتمء'ب ٢٠٠* ؛tenc.؛، ٢٠٠ heJp drawing IDEF1X or ٥٠١١١؛'

enli*y idatioruhip diagrams, chooie Template Help ٢٠٥٠ ,the Viîio Help menu ١٠٢٨)

11 Next > I Cancel [

La u lt im u l pas, este afişată lis ta tabele lor care vor f i create. D upă ce executaţi clic pe b u to n u l F in ish , va f i creată noua bază de date. F igu ra 5.5 prez in tă acest pas.

Page 106: Baze de date pentru incepatori (manuale facultate)

DATEPARTEA A ll-A - PROIECTAREA PRIMEI BAZE

Cfck Fmisfi to have ihe Deal« Databan Wirard «sale o، mocHy the fdowing table:؛

zi<6ad<: Friiir, | L’j-icd JMwe rJo |

FIGURA 5.5La u ltim u l pas este afişată lis ta tabele lor care vor f i create.

D upă crearea bazei de date, executaţi d u b lu clic pe pictogram a d in figu ra 5.6. V a f i la n sa t p ro g ra m u l Access şi va f i deschisă noua bază de date Tim e E n try and B illin g .

5 II\0»،stef »،’'،،*-*»'؛Beyrro¡ Io C ؛؛،،**/»j_J D *«•»؛A '

C hapter

FIGURA 5.6Pictograma n o ii baz de date, afişată în W indows Explorer.

؟٠٠ *ko: r'. Oo.uftyrf.'sr . nv»>

II oble^lijlptelOW*^)

F igura 5.7 prez in tă s is tem u l bazei de date Tim e E n try and B illin g în Access. D iagram a re la ţ iilo r a ra tă la în cepu t foarte dezordonat. în câteva m in u te , dacă m u ta ţi t it lu r ile , p u te ţi face p u ţin ă curăţen ie. Acum , după ce a ţi scăpat de dezordine, toate re la ţiile specificate în diagram a d in V isio se află în actua la bază de date.

Page 107: Baze de date pentru incepatori (manuale facultate)

FIGURA 5.7Relaţiile defin ite în Visio su n t create în fiş ie ru l cu baza de date d in Access.

C A P ITO LU L 5 CONSTRUIREA BAZEI DE DATE ÎN ACCES

dp،5؛ ؛حسم ؛ Ţodسء ء وج مءةم ؛،؟ د

اءهأماأب

. بم»« ءم «هسآا ؛ ءngvdzârd؛C>Ntotâ،Jffbyus

bيمحو y،0ءمحءيص

Ob«KK

نمح|إ إ مإ

■Ërl■االيك،حم؛اسءهء*ءءءهسه،

T،t؛Notes؛

rtDV.i؛؛؛،

هم_ ممصمpefoţiujnihours

إسء*ءا»،

ء |سءامءسص;ج

س، س،رائ،أأءهسمء

IIM n D1,ااممءءمءءبص

؛إسءمحصم(س ه

هصمس مء|لآ FustNâm،

امبملءم0-ءمحا،»ههس

وج|ة؟■ممبت';.ي :•ل.مو

ص

Pe de o parte , această m etodă de a crea baze de date în Access este foarte rap idă şi efic ientă. Pe de a ltă parte , n u ve ţi înţelege cum s u n t create de fap t aceste elemente dacă n u cunoaşte ţi procesul. Până la u rm ă , aceasta este m etoda p r in care ve ţi crea ve rs iun ile in iţ ia le ale bazelor dum neavoastră de date. în tru c â t această carte prezin tă deta liile c o n s tru ir ii şi lu c ru lu i cu bazele de date, re s tu l ca p ito lu lu i se va concentra pe metodele m anua le de creare a tabele lor, co loane lor şi re la ţiilo r.

O scurtă recapitulare a programului Access Database Designerîn ca p ito lu l 2, am fă cu t o in troduce re în Access Database Designer. în acest cap ito l ve ţi lu c ra cu acest program . îna in te de a trece m a i departe, să ana lizăm p u ţ in s ita u ţia , u tiliz â n d ca exem plu baza de date N o rth w in d T rade r’s. F igu ra 5.8 p rez in tă princ ipa le le com ponente d in Access Database Designer.

S ecţiun ile u rm ă toa re schiţează ş i descriu pe scu rt com ponentele p rinc ipa le ale d e s ig n u lu i bazei de date cu care ve ţi lu c ra în acest cap ito l.

Page 108: Baze de date pentru incepatori (manuale facultate)

DATEPARTEA A I I - A - PROIECTAREA PRIMEI BAZE100

Butonul Design Object

،jete. Show Me

-iO l *IDescnpticriF>-c; ،»sgn •ffiN>؛Şsp*«' k£e، Urique fiye-charactei code based on customer name.

;ar¿■ ariYf ¡laneCreate ’abiA f MM.m'W*— Creata table by using wizard Create table by entering data Categories Cusí cross Errployees

Order Deta؛،Orders Products Shppers Suppkeis

Objects ContartNamee،؛ContactT

AdiessCity .Reon Street or posţ-o،fKe box.

province.PostsCodeCountryPhone nurfeer r<i*jes country code Pho٢٠ ؛

١ nckjdes country ccoe؛ Phorerurfcer

I lookup I FwIdS« .

Format InputMask Caption

Velue *٠ Def VaÎdaConRiJe

Vakdston Te؛،Requ»ed AJbw Zero Length Indexed

HULL~L::.y<wy

•٠ f •'à i»«« ،٠« ؛٠ ١٠ >،، ٠٠:KtasfciK. h ijirn،’؛؛،

,full narres ٠٦ p،؛Press F; h: h

Ves (fio C (،cates)

Ţk'-ixiir'iôêàjri *tew. F6 - Switch pan î

Atributele câmpului--- 1

Fereastra principală a bazei de date

Butonul New Database Object

, Table Designer

Butonul Delete ObjectButonul

Open Object

Butonul View Options

i de dateTipuri de obiecte din ،

FIGURA ÍIn terfa ţaM icrosoftAccessDatabaseDesign.

Fereastra principală a bazei de dateîn fig u ra 5.8 su n t afişate două ferestre. în stânga se află fereastra p rin c ip a lă a bazei de date, care oferă acces la toate obiectele d in tr-o bază de date. în deapta se află u t i l i ta ru l de pro iectare a tabe le lo r (table designei), despre care vom d iscu ta m a i tâ rz iu în acest capito l. Fereastra p rin c ip a lă a bazei de date este şi ea d iv iza tă în două p a n o u ri vertica le . Panoul d in stânga conţine d ife rite obiecte şi vă perm ite să selectaţi obiecte de d ife rite t ip u r i. L is ta in c lude tabele, in te rogă ri, fo rm u la re , rapoarte , pagin i, m a c ro in s tru c ţiu n i şi m odule. Când se lecta ţi u n a lt obiect în panou l d in stânga, c o n ţin u tu l p a n o u lu i d in dreap ta se m od ifică p e n tru a prezenta obiectele de t ip u l respectiv. Acest cap ito l se va concentra pe p r im u l t ip de obiecte, tabelele. Celelalte t ip u r i de obiecte vo r f i d iscu ta te în capito le le urm ătoare .

în partea de sus a fe restre i princ ipa le a bazei de date se află o b a ră de in s trum en te a lcă tu ită d in tre i secţiun i. Bara de opera ţii (operations) fu n c ţio ­nează în co n te x tu l o b ie c tu lu i cu re n t selectat. Dacă p riv im spre dreapta, p rim a secţiune a bare i de in s tru m e n te are tre i o p ţiu n i: Open (deschidere), Design (proiectare) şi New (obiect nou).

Page 109: Baze de date pentru incepatori (manuale facultate)

101CAPtTC&UL ء CONSTRUIREA BAZEI DE DATE ÎN ACCES

E fectu l b u to n u lu i Open este de „ru la re (lansare)” a o b ie c tu lu i selectat. în cazul u n u i tabel, aceasta înseam nă navigarea p r in datele acestu ia. F igura 5.9 prez in tă datele d in ta b e lu l N o rth w in d Custom ers.

FIGURA 5.9B uto nu l Open d in fereastra princ ipa lă a bazei de date rulează obiectu l selectat.

B u to n u l Design plasează ob iec tu l cu re n t selectat în m odu l Design. Execu­ta rea u n u i d u b lu c lic pe obiect în p anou l d in dreapta are acelaşi efect. F igura 5.8 prez in tă tabe lu l cu c lie n ţi în m odu l design. Com ponentele u t i l i ta ­r u lu i Table D esigner s u n t d iscu ta te pe la rg în ca p ito lu l 2. B u to n u l New creează u n obiect nou, pe baza t ip u lu i selectat în p anou l d in stânga al fe restre i p rinc ipa le a bazei de date.

Dacă executa ţi c lic pe b u to n u l New, este afişa tă caseta de dia log New Table. F igu ra 5.10 p rez in tă d ife rite le o p ţiu n i d ispon ib ile a tu n c i când c rea ţi u n tabel. Aşa cum ve ţi vedea, Access are m ulte a p lica ţii wizard, care vă ghidează pas cu pas p e n tru îndep lin ire a m u lto r sa rc in i uzuale.

A doua secţiune a fe restre i p rinc ipa le a bazei de date con ţine o s ingu ră opţiune , care şterge ob iec tu l cu re n t selectat. A tre ia secţiune conţine p a tru op ţiun i, care controlează aspectul panou lu i d in dreapta al ferestrei princ ipa le a bazei de date. Cele p a tru o p ţiu n i sun t: Large Icons (pictogram e m ari), S m all Icons (p ictogram e m ici), L is t (listă) şi D eta ils (detalii). F igu ra 5.11 prez in tă n iv e lu l de detaliere a obiecte lor pe care le p u te ţi vedea.

ء م طءو ء س ة أ00؛ا إس ء ءآ ه •،؛؛td* ÏWW insei، Farms 5، أ

© . علخكلإ

w7؛.- wء ة ءآهءت سم n اة [مه«ب ه ،'بم ء هماسام و ، [

]؛؟؛ Crea*، خ،ل؛<ت bv ،n»؛ir،j همحلCaíeoofies و

cusio iiig iio } ~ ~Conlac1 H.inie] " ئ ق دflfast Alfteds Futterlríste Mana Anders « ئ ،م،س

u c»d،r* _ • AMATR Ana Tiujillo Emparedados y helados AnaI TrujiHo ANTON Antonio Moreno Taquería Antonio Moreno * _ اسء« ElAROUT Aiound the Hom Thomss Hardy * _ ؟hpperجأ ؛

nsbbkóp -Chrístina Bírgl'jnd؛ ؛BERGS Berglund صإ _ ٠ ؛ , ور إHanna Moos ؛ sen؛BLAUS Blsuer See Delikaíe ٠ _

، Fiedénqueما،دء)اء ءا ا BLONP Blcndel peí * _»ن_ * BOUD Boildo Comidas pieparads؛ Martin اءااا»ام$

_ * BONAP Bon app' Laurerics Lebihar؛Eliísbeth Lincoln ءآ؛ لءا ' BQTTM ما!موم؛امهس

Eeveiages 'Victona Ashivorth ؛’_ *BSBEV B pao llevar Patncio Simpson ؟Comida ا؛ءءالء CACTU ٠ _

comercial Macte،urna Fianeisca Ch<،ng مءنالها؛ CENTC ٠ _ Chine«،، YíngWafiy ؟>آالء.'الإءم _ • CHOPS

• COMMI ',umércio Mmeiro Pedro Aiorac Crown £ا؛امهمء،ا ،ct dítífl Ho dina؛Coi ا0.ت*؛مب • _

Ig^KSSaSje ا'ءع؛ء«م.>ءص ا،ءءءءاه«ا؛'ء>، s*en 0>اه'ااا a R B a ^ _ * ORACCJanme Labrune مأ ر » م م و م م »إا و • OlJM' iN ا و ، ^ | § | ظوسءممإ|ئصا

E^lerrConnectioi Ann D<*on ء د ء ء امحت • آ * - ء أ ئ ة ئ ح:Mcnd«l وءس Handei ٤۴٠٠٤٠٠ ؟١٨١٠ * —— " ٠٢٨٠* ءملءها'لدهام،اىو Ana Cru؛

ث^^^ججمم_اةي'ءثب * ','■-ذ اه،.اهمء.م«ةئ.ءم•ءب .ء$؛هاء،اامءايئ ءموم،ء0او

• ' • ة ت ت ' ——II. „ ; . ; ; . ¡

ءءء ءا Ssle؟أهمء«آب

Owner Siles Repr•■؛

Order ع.محاا؛'^Sale? Repr.'®

Marketing M; Owner Owner

Accounting ء Sales Repr؛؛

Sales Agent

Owner Sales Assoc

Sale؛ Repre؛Order Admin

ا‘‘» ذ ' Agent ؛Sale

Sales Msnac f/terketingA؛Accounting ء

Groups

u*ue l.vt .*■arăgăTcode orícuctóñw I

Page 110: Baze de date pentru incepatori (manuale facultate)

DATEPARTEA A 11-A - PROIECTAREA PRIMEI BAZE102

FIGURA 5.10Caseta de dialog New Table prezin tă m ai m ulte metode de creare a u n u i tabel.

. iql *l

Ca؛؛،**«، ci NoithwW product.، 11/30/19964:53:0... 9/13/1995 10،؟؛9/13/199510:51 Customers' names, adresses, and pbone ruitors. 7/22/200! 8:29:03 PM

Endoyees'«٠٠٠,* «ie,؛ and perscr.9، rformatun. 11(30؛ 1996•٠:52:5... 9/15/199510:5،9/13/199510:51 ...4:53:1 11/30/1998 ,ouanoti«, and pices for each order in the Crdtrs table ؛؛,Défais on produc9/13/159510:51 Customer name, order date. ane* fretft chaige for eadiorder. 8/20/203، 2:03:20 PM9/13/199510:51 ...12:34:3 7/23/2001 . n îtod *؛m3 ir¡ ؛,xt r،،r«, Siţ،»5, price؛*PM9/13/199510:51 012:03:20 PM/5. 8؛/0؛؛؛hţt*rs'rwnesandcfonenun،«isse5, phor* rurtiers, and h»per،r*s to home pages. l/24/19«5:59؛2... 9/13/199510:51 l>*،؛Supp،ers'narnts, a

n view؛،Create table in [>e 2}؛ 35 J Create tawe by using Ward

Croate tiMe by er<err«j data ؛ [S @1 Cate»aies

S،؛،/؛،• E/rt 1 Ordw Datais؛

0 Crders S3 Prodjcts

Uppers0 ؛ËJ Sufţ،ws

.................... • ٠٠ • ' ٠٠ v؛___________ : . • . v<-• - . .٠ ٠• ٠؛'; £ * ٦٠•■٠٠'. : i

; f i t :

FIGURA 5.11Detaliile de vizualizare pentru flecare obiect al bazei de date conţin descrierea, data u ltim e i m odificări, data creării şi tipu l.

Fereastra DesignerSă ne înd rep tăm acum a ten ţia asupra celei de a doua ferestre prezentate în figu ra 5.8, fereastra Designer. în Access există m ai m ulte u tilita re de design. Acestea s u n t destina te tabelelor, in te rogărilo r, fo rm u la re lo r, rapoarte lo r, pa g in ilo r web, m a c ro in s tru c ţiu n ilo r şi m odule lor. U tilita ru l Table Designer a fost prezenta t în ca p ito lu l 2 şi va reprezenta sub iec tu l acestu i capito l. Vom prezenta şi alte u tilita re când vom d iscu ta despre t ip u r ile respective de obiecte.

Acum , după ce cunoaştem în m are s itua ţia , să trecem la crearea bazei de date Tim e E n try and B illing .

Page 111: Baze de date pentru incepatori (manuale facultate)

103CAPITOLUL ة CONSTRUIREA BAZEI □E □ATE ÎN ACCES

Crearea bazei de date folosind utilitarul DesignAceastă secţiune vă va exp lica pas cu pas cum să crea ţi tabelele, c©l©auele şi re la ţiile . C a p ito lu l 2 v-a prezenta t in s trum en te le de pro iectare a bazelor de date d in Access. A cum ve ţi vedea şi ve ţi experim enta func ţiona rea acestor in s tru m e n te în t r - 0 s itu a ţie reală. Procesul va incepe cu crearea u n e i baze de date fă ră co n ţin u t. D upă crearea ei, ve ţi crea tabelele. în fiecare tabel, veţi d e fin i coloanele, a trib u te le fiecărei coloane ş i cheia prim ară . D upă ce c o n s tru iţi baza de date, ve ţi de fin i re la ţiile d in tre tabele. Ia r după îndep lin irea acestor sa rc in i, ve ţi avea la d ispoziţie elementele esenţiale ale bazei de date Tim e E n try and B illin g . A tu n c i ve ţi f i gata de a trece la pasu l u rm ă to r, punerea în fu n c ţiu n e a bazei de date.

Crearea bazei de dateCrearea bazei de date este cel m a i uşo r d in tre paşi. D in m e n iu l File, selectaţi New. Se deschide caseta de dia log New, care conţine două ta b -u r i. General şi Databases (vedeţi fig u ra 5.12). în ta b -u l General, p u te ţi crea o bază de date fă ră c o n ţin u t. Acesta vă oferă şi pos ib ilita te a de a crea o bază de date p o rn in d de la u n tem p la te (şablon) - vedeţi f ig u ra 5.13. Cu câ t ve ţi dezvolta m ai m u lte baze de date, ve ţi descoperi că acestea se îm p a rt în fu n c ţie de d ife rite le t ip u r i de a c tiv ită ţi ale firm e i. Bazele de date d in tr-o a n u m ită categorie au m u lte în s u ş ir i com une.

FIGURA 5.12T ab-u l General din caseta de dialog New vă oferă posib ilita tea de a crea o bază de date ia ră con ţinu t.

ص سا

Page 112: Baze de date pentru incepatori (manuale facultate)

FIGURA 5.13T ab-u l Databases d in caseta de dialog New vă oferă posib ilita tea de a crea o bază de date pe baza u n u i model (template) prédéfinit.

104 PARTEA A ll-A - PROIECTAREA PRIMEI BAZE DE DATE

ج ق ت ' ن ق ك ؛'

D in ظاآل أل- ة General, se lecta ţi p ic togram a Database şi se lecta ţi b u to n u l OK. Va f i وآالق ةلل؛ caseta de dialog File New Database, specificând loca ţia şi num ele n o ii baze de date (vedeţi fig u ra 5.14).

? ا * ; ا

2âvsh: [ ق Chspter 5 آل ء ه إ € X ’ ي - C j ü ;

:

!

Fie name: jtsb.rndb تل ا0ءآجمحء j

mmmmm (mdb)*. ه 'ءعمح«ءوم ء » ؟ ه type؛ ؛Microsoft ء ة ؛ ء م ء ۴ ١ Csncsl إ

FIGURA 5.14Caseta de dialog File New Database oferă posib ilita tea de a specifica locaţia şi num ele no u lu i fiş ie r cu baza de date.

în caseta de dia log File New Database, d e n u m iţi baza de date T E B .M D B şi executa ţi c lic pe b u to n u l Create. F igura 5.15 prez in tă baza de date fă ră c o n ţin u t pe care tocm a i a ţi creat-o.

FIGURA 5.15

ia ră con ţinu t, pregătită pen tru crearea n o ilo r tabele, coloane şi re la ţii.

Page 113: Baze de date pentru incepatori (manuale facultate)

105CAPITOLUL s CONSTRUIREA BAZEI □E DATE ÎN ACCES

Poate aţi observat că atunci cănd de$chideţi baza de date TEB, repre- zentată de fişierul teb.mdb, apare fişierul teb.ldb. Figura 5.16 prezintă acest fişier. El faciliteaz§ accesul mai multor utilizatori (accesul mult^tiliza- tor) la baza de date. Deşi nu sunteţi familiarizat cu conceptul de multiutili- zator, merită să vă opriţi acum puţin pentru a atinge subiectul. Găndiţi-vă la cazul în care un utilizator lucrează cu datele, iar altul doreşte să le editeze. Cum rezolvă baza de date această problemă? Aici intervine fişierul Idb. El conţine informaţii despre înregistrările blocate şi utilizatorii care le pot debloca.

Pentru mai multe informaţii despre fişierele Idb, consultaţi Microsoft De- veloper NetWork Knowledge Base (MSDN KB). Dacă nu cunoaşteţi MSDN şi baza sa de informaţii, categoric va trebui să devină o parte importantă a arsenalului dumneavoastră. Site-ul web MSDN poate fi accesat la h t t p : / /msdn .m ic ro s o f t . com. Baza de informaţii poate fi accesată la h t t p : / / s e a rc h . s u p p o rt .m ic ro s o f t . com /kb /. Identificatorul specific al articolului despre fişierele Idb este Q208778.

Fişierul cu baza de date din Access

FIGURAProblemele de u tilizare m u ltip lă s u n t adm in is tra te cu u n fiş ie r de blocare, care are acelaşi num e ca si baza de date.

D upă crearea bazei de date, este m om en tu l să c rea ţi tabelele şi coloanele p e n tru baza de date T im e E n try and B illing .

Page 114: Baze de date pentru incepatori (manuale facultate)

DATEPARTEA A ll-A - PROIECTAREA PRIMEI BAZE106

Crearea tabelelor şi coloanelorCrearea tabe le lo r şi coloane lor în Access este foarte sim plă . P rim u l pas este de a crea u n n o u tabel. P entru aceasta, după ca a ţi selectat t ip u l de obiecte Tables în p a n o u l d in stânga, apăsaţi b u to n u l New d in bara de in s tru m e n te a fe restre i p rinc ipa le a bazei de date. Revedeţi fig u ra 5.8 p e n tru de ta lii despre fereastra princ ipa lă a bazei de date. D upă ce executaţi clic pe b u to n u l New, ve ţi în tâ ln i caseta de dia log New Table (revedeţi fig u ra 5.10). în acest caz, ve ţi crea u n tabe l în vizua liza rea Design. M ai m u lt ca s igu r, ve ţi u tiliz a v izua lizarea D esign aproape to t t im p u l. Aveţi la d ispoziţie m a i m uie tabele noi.

Vizualizarea DatasheetD in tre toate o p ţiu n ile aceasta este cea m ai p u ţin u tilă . Dacă vă place să crea ţi tabelele şi, în acelaşi tim p , să in tro d u c e ţi datele, această abordare vă va plăcea. V e ţi începe cu ceva asem ănător u n e i fo i de date, con ţinân d 10 coloane. P ute ţi redenum i câm purile dacă executa ţi c lic cu b u to n u l d rep t al m o u se -u lu i pe num ele câ m p u lu i şi scrie ţi n o u l num e. N u aveţi co n tro lu l asup ra a lto r a tr ib u te ale câm pu rilo r, cum ar f i t ip u l de date, m ască de in tra re , descriere şi aşa m ai departe. Pentru a obţine con tro lu l asupra acestor elemente, trebu ie să trece ţi în vizua liza rea Design.

Vederea DesignVizualizarea Design, prezentată în figu ra 5.8, este metoda preferată de proiec­tare a tabe le lo r. V izua liza rea este div iza tă în două p ă rţi. Partea de sus este fo rm ată d in in fo rm a ţiile de bază despre câmp. Partea de jos conţine atribu te le deta lia te despre câm pu l selectat cu re n t în partea de sus a v izua liză rii.

Table WizardDacă vă a m in tiţi, pu te ţi crea o bază de date porn ind de la u n model predefin it. C h ia r dacă n u alegeţi această cale p e n tru crearea bazei de date, to t aveţi acces la şabloanele tabe le lo r p r in ap lica ţia Table W izard. A p lica ţiile w izard su n t u tile , d a r to t m a i este nevoie să în vă ţa ţi şi să în ţe lege ţi func ţiona re a acestor elemente de bază. Pe m ăsu ră ce câştiga ţi m a i m u ltă experienţă, ve ţi descoperi că a p lica ţiile w izard lungesc t im p u l de efectuare a un e i operaţii. Aşa cum ve ţi vedea foarte repede, la fel ca toate regulile , n ic i aceasta p riv in d a p lica ţiile w iza rd n u este absolută .

Aplicaţia wizard Import TableAceastă ap lica ţie vă ghidează p r in procesu l de pre lua re a d e fin iţie i u n u i tabe l d in tr-o su rsă externă, cum a r f i o a ltă bază de date d in Access sau o a ltă bază de date o rie n ta tă obiect ş i u tiliza rea sa ca bază p e n tru u n nou tabe l în baza dum neavoastră de date d in Access. în acest scenariu , ap lica ţia w iza rd realizează uşo r ceea ce a ltfe l a r f i o sarc ină com plexă. în astfe l de cazuri, ap lica ţiile w iza rd se dovedesc foarte u tile .

Page 115: Baze de date pentru incepatori (manuale facultate)

107C A P ITO LU L 5 CONSTRUIREA BAZEI DE DATE ÎN ACCES

Aplicaţia wizard Link TableA p lica ţia w izard L in k Table este asem ănătoare cu Table W izard, cu o singură excepţie no tab ilă . D e fin iţia ta b e lu lu i pe care î l creaţi în Access face legă tu ra cu o su rsă externă de date. De fapt, această sursă externă stochează datele. C on tin u â n d lu c ru l la n o u l tabel, în caseta de dia log New tab le , se lecta ţi v izua liza rea D esign ş i execu ta ţi clic pe b u to n u l OK.

V a apărea p ro ie c tu l u n u i tabe l libe r, în care p u te ţi crea câ m p u ri (vedeţi fig u ra 5.17).

FwMwSni¿ I " ¿ataTÿpë I

Î S؛؛

.......---"7؛Lookjp I [ ،،؛٢٠٢<

FIGURA 5.17Ia tă cum apare pro iectu l u n u l tabel nou creat.

.t tr، f»s،c nanei۴؛! for h ؛uîinj spaces. ،ies<؛ii ,؛!٢٩ is،3،؛ har، ؛٢١ ud ta -؛t ٠٦، l j netne،؛A f

N u p u te ţi salva u n tabe l dacă n u a ţi creat cel p u ţin u n câmp. Orice tabe l trebu ie să a ibă o cheie p rim ară . P rim u l câm p pe care î l ve ţi crea va f i cheia p rim a ră . R evenind la m ode lu l bazei de date, câm pu l cheie p rim a ră p e n tru ta b e lu l C lien t se num eşte C lien tID . F igura 5.18 prez in tă câm pu l nou creat.

C rearea u n u i câm p este uşoară. U rm a ţi paşii:1. S crie ţi num ele c â m p u lu i în coloana Field Name (ClientID).2. A tr ib u iţ i u n câm p de date în coloana D ata Type (AutoNumber).3. S crie ţi o descriere în coloana D escrip tion (P rim ary Key fie ld fo r C lien t

tab le - n u este o b lig a to riu ca te x tu l scris în această coloană să fie în l im b a engleză, n. tr.).

T ip u l de date AutoNumber este u tiliz a t p e n tru cheile prim are . Access ţine evidenţa u rm ă to ru lu i id e n tifica to r secvenţia l care va f i u tiliz a t p e n tru noile în reg is tră ri. M ai este ceva de făcu t. Trebu ie să desem naţi câm pu l C lien tID ca f i in d cheie p rim a ră . P en tru asta, este s u fic ie n t să apăsa ţi b u to n u l P rim a ry Key, prezenta t în f ig u ra 5.18. Obsevaţi in d ic a to ru l P rim a iy Key, care apare în stânga n u m e lu i câm pu lu i.

Page 116: Baze de date pentru incepatori (manuale facultate)

N□ sunt permise valori duplicate

DATE

FIGURA 5.18îna in te da a

PARTEA A ll-A ■ P R O IE C T A R E A PRIMEI BAZE

Indicatorul Primary KeyButonul Primary Key

Tipul de date AutoNumber

salva un tabel, trebu ie să creaţi cel p u ţin u n câmp şi să de fin iţi cheia prim ară.

D upă ce a ţi se ta t cheia prim ară , este b ine să sa lva ţi im e d ia t tabe lu l. P ute ţi tace acest lu c ru executând c lic pe b u to n u l Save de pe b a ra p r in c ip a lă de ins trum en te d in Access sau d in m en iu l Pile pu te ţi selecta $ave. ©rice metodă a ţi alege, va apărea caseta de dia log Save As (vedeţi fig u ra 5.19). în acest caz, d e n u m iţi ta b e lu l „c lie n t” şi apăsaţi b u to n u l OK.

F igu ra 5.20 prez in tă n o u l tabe l C lient, care acum face parte d in baza de da teT E B .

1. ar dacă doriţi sâ modificaţi numele noului obiect? Modificarea numelor□ ءدفء، ؛ obiectelor este uşoară. Prima regulă este că obiectul ٨٧ poate fi de$chis Indiciul când 1أ modificaţi numele. Când sunteţi gata, selectaţi obiectul în fereastra

principală a bazei de date şi executaţi clic cu butonul drept al mouse-ului. Figura 5.21 prezintă meniul dependent de context care apare (numit meniu contextual, meniu instantaneu sau meniu pop-up). Selectaţi Rename. Cursorul va fi poziţionat ia începutul numelui, oferindu-vă posibilitatea de a scrie un nume nou. Altfel, puteţi selecta obiectul în fereastra principală a bazei de date, apoi să executaţi un clic pe numele său.

Page 117: Baze de date pentru incepatori (manuale facultate)

109C APITO LU L ة CONSTRUIREA BAZEI □E □ATE ÎN ACCES

Save As ظ ■ ; : . , J jJ S i

TeWiName: وjc ien tj

— ٧

Cancel j

Caseta de dialog Save As vă perm ite să specificaţi num ele no u lu i obiect al bazei de date.

FIGURA 5.19

FIGURA 5.20D upă salvarea u n u i obiect al bazei de date,' acesta apare im ed ia t în fereastra princ ipa lă a bazei de date.

D upă ce a ţi în vă ţa t să crea ţi u n câmp, ceea ce ve ţi face este repetarea procesu lu i. T abe lu l 5.1 prez in tă de ta liile specifice fie că ru i câmp.

Tabelul 5.1 Informaţii despre câmpurile tabelului Client Nume T ip D im ensiune Descriere

ClientID A utoN um ber LI* Cheie p rim a ră a ta b e lu lu i C lien t

ClientType N um ber LI Cheie s tră in ă de la ta b e lu l C lie n tT yp e

FirstName Text 30 Prenum ele

Middlelnitial Text ١ In iţ ia la ce lu i de-al doilea num e

e, denumit Client؛Noul tabel al bazei de da

inse أ00؛ر ءسسم rt ٤٠؟ ٤٠، ؛١٠٧٠

ص'.>;ممء؛؛ ءه ' I ;٩١١هس ممهئh Design vww هءم a j Cr«،e

ء O ٠٠٠٠ ،س by uang ماتبمد ووأل 0ءءمء ،س by eotwnj دمحء

Fl¿¿ Name Datatype

- - - - -^لاا*همبلا م

ش ء ؛

Format

ح<مءهل.

ب صا،؟;وأمءIncrement

ض ٢٠١ ض ها ، ز ؛ ا * ءلا ي .اال>ا- ت يسمءاا ه مت غ؛| : ٢١«تءعى ١٠٦٠٦ycu'iie bet،؛ ،٦؛fisfcدا>، ، م ء م د ء م - ء ٠ تءهعه

■ .toi h،t cr.ccooçicr-i ؛Freu۴ ».١٠

(NoDup*a،ei«؛)Y

' آ ب' - إ - - ' م

Numele tabelului este prezentat în fereastra de proiectare

Page 118: Baze de date pentru incepatori (manuale facultate)

Tabelul 5.1 (continuare)Num e T ip D im ensiune Descriere

110 PARTEA A ll-A - PROIECTAREA PRIMEI BAZE DE DATE

LastName Text 30 Num ele de fam ilie

Organi z a t i onName Text 50 Num ele organ iza ţie i

Address1 Text 50 Adresa 1

Address2 Text 50 Adresa 2City Text 30 O raşu l

State Text 2 S ta tu l

ZipCode Text 9 C odul poşta l

Phone Text 10 N u m ă ru l de te lefon

Email Text 50 Adresa de e-m ail

*LI este prescurtarea de la Long Integer.

Create table in Design view

srd:٧٠١ Create table by ■jsmg

Create table by entering data

QpenM Design View

Q l Pm، Preview

Cu ،3؛opy٩؛؛ ؛

Save As...Export...

To ► ؛؟Sen

٠ roup؛؛ £dd ta Create Shortcut...dete؛X f

Rename

Eroperties )؟؛?

FIGURA 5.21Dacă executaţi clic dreapta pe orice obiect al bazei de date, va apărea u n m eniu dependent de context, con ţinând op ţiun icorespunzătoareobiectu lu i.

Când introduceţi informaţii despre câmpuri, veţi vedea un set de atribute ale acestora (de exemplu, dacă este obligatorie completarea unui câmp sau dacă poate fi lăsat necompletat). Nu vă preocupaţi acum de setările pentru aceste proprietăti suplimentare. In capitolele următoare vom realiza o prezentare introductivă a acestor proprietăti si atunci veti învăţa care este rolul lor. în acest moment, vă veti ocupa numai de proprietăţile:

■ Nume;■ Tip;٠ Descriere;■ Dimensiune.

D upă crearea câ m p u rilo r m enţiona te an te rio r, com para ţi ta b e lu l dum nea­voastră cu cel d in fig u ra 5.22.

Page 119: Baze de date pentru incepatori (manuale facultate)

CAPITOLUL 5 CONSTRUIREA BAZEI DE DATE ÎN ACCES 111

FIGURA 5 .2 2

Tabelu l C lien t d in baza de date Time E n try and B illing .

P entru a înţelege m o d u l de cons tru ire a re la ţiilo r, va tre b u i să aveţi la d ispoz iţie cel p u ţ in două tabele. Fo los ind in fo rm a ţiile d in ta b e lu l 5.2, c o n s tru iţ i ta b e lu l Contact. P riv iţi fig u ra 5.23 p e n tru a ve rifica ceea ce a ţi rea lizat. Nu u ita ţ i să efectua ţi paş ii u rm ă to ri:

1. E xecu ta ţi c lic pe b u to n u l New p e n tru a crea u n tabe l nou.

2. C reaţi câm pu l care va i i cheie prim ară .3. A tr ib u iţ i cheia p rim a ră câ m p u lu i pe care l-a ţ i creat la pasu l 2.4. S a lva ţi ta b e lu l în baza de date.

Tabelul 5.2 Informaţii despre câmpurile tabelului ContactNume T ip D im ensiune Descriere

ContactID A u tonum b er LI Cheie p rim a ră p e n tru ta b e lu l C lien t

ClientID N um ber LI Cheie s tră in ă de la ta b e lu l C lien t

FirstName Text 30 Prenum ele

Middlelnitial Text 1 In iţ ia la ce lu i de-al doilea num e

LastName Text 30 Num ele de fam ilie

Title Text 30 T it lu l

Phone Text 10 N u m ă ru l de te lefon

Extension Text 5 In te r io ru l

J2JEE2222H]؟E<fc ،•6 ٧١٠٠٠ ،٢،«؛؛

ii ؟؟٠ “ira _

PrtMry ٢٥٧ Faid ior Tabie Ft»e«gn »'ey to C،،r* T>pe Table

Oigtmatnri Harre Mi«¡¡ 1 ٠؛،«* ....

pCo* .؛Phone Wjrtiei E-mâiAddwi

؛&M،Jn،ne :■s ■ ؛٠٠٠a،*a jqtoo؛::ts ؟٠٦٩, ٠ ٠٠٠.) »،' ٠٠٠*،٠٠٠٠٠ :: M،dn،ne&؛ ‘ ؛

..........Cte«TypeFftffume

Mdieln،«،me؛H5؛،L

ne fcoriläfne9؛»C

LxutMa*C٠٠»

VddaxnRUe

؛!٠٩٧٠٠٠Alow 2mo Ungth tftd«8d

UnKode C،nţ،؛«،or؛

:

Adresa de e-m ail50TextEmail

Page 120: Baze de date pentru incepatori (manuale facultate)

DATEPARTEA A ll-A - PROIECTAREA PRIMEI BAZE112

în acest m om ent, poate d o r iţ i să crea ţi re s tu l bazei de date TEB. S tru c tu ra de ta lia tă a fie că ru i tabe l este prezenta tă în anexa A. o a ltă va ria n tă este să aş tep ta ţi până la s fâ rş itu l acestu i cap ito l, deoarece secţiunea urm ătoare , al cărei sub iec t s u n t re la ţiile , utilizează n u m a i tabelele C lien t ş i C ontact.

Crearea relaţiilorAvând la dispoziţie două tabele, p u te ţi cons tru i o re la ţie în tre tabelele C lien t şi C ontact. Dacă revedeţi m odelu l, ve ţi observa că există o re la ţie u n u la m u lţ i (1:M) în tre cele două tabele. Aceasta înseam nă că p e n tru u n c lien t po t exis ta m a i m u lte contacte. D upă ce a ţi a fla t care s u n t ca racte ris tic ile re la ţie i, pasu l u rm ă to r este crearea re la ţie i în baza de date d in Access.

D in m e n iu l Tools, se lecta ţi R ela tionsh ips. F igu ra 5.24 prez in tă a p lica ţia de co n s tru c ţie a re la ţ iilo r şi caseta de dia log Show Table care apare. Dacă n u apare au tom a t caseta de dialog Show Table, selectaţi Show Table d in m e n iu l R ela tionsh ips.

Page 121: Baze de date pentru incepatori (manuale facultate)

113CONSTRUIREA BAZEI DE DATE ÎN ACCES

G□؛؛J..San:...

TaUei jouertss

A plica ţia de constru ire a re la ţiilo r în bazele de date d in Access.

FIGURA 5.24

în caseta de dia log Show Table d in figu ra 5.24, asigura ţi-vâ că s u n t selectate tabelele C lient şi Contact. Puteţi selecta o opţiune d in tr-o lis tă ţin â n d apăsată tasta S h ift în tim p ce execuataţi clic cu m ouse-u l pe opţiune. D upă selectarea tabele lor, execu ta ţi c lic pe b u to n u l Add. A p lica ţia de co n s tru ire a re la ţiilo r este asem ănătoare celei d in fig u ra 5.25.

FIG URA 5 .2 5

A plica ţia de constru ire a re la ţiilo r d in bazele de date în Access, care conţine tabelele C lien t şi Contact.

Page 122: Baze de date pentru incepatori (manuale facultate)

DATEPARTEA A ll-A - PROIECTAREA PRIMEI BAZE114

D upă crearea celor două tabele, p u te ţi executa clic pe b u to n u l Close a l case­te i de dia log Show Table. E xis tă două metode de creare a re la ţiilo r. Prim a im p lică tragerea câ m p u lu i cheie d in tabe lu l părin te şi plasarea sa în câm pu l cheie s tră in ă d in tabe lu l copil. în acest caz, câm pu l C lien tID d in tabe lu l C lien t va f i tras ş i plasa t în câm pu l C lientID d in tabe lu l Contact. O peraţia „tragere şi plasare” n u este greu de efectuat. Trebuie doar să selectaţi câm pu l pă rin te şi, în t im p ce ţ in e ţi apăsat b u to n u l stâng al m ouse-u lu i, să trageţi po in te ru l m o u se -u lu i în câm pu l cheie s tră ină al ta b e lu lu i copil, ia r apoi să e libe ra ţi b u to n u l m ouse-u lu i. F igura 5.26 prez in tă caseta de dialog E d it Relationships, care apare după ce e libera ţi b u to n u l m ouse-u lu i.

FIGURA 5 .2 6

Caseta de dialog E d it Relationships vă perm ite să specificaţi caracteristic ile unei re la ţii în tre două tabele.

A doua m etodă p r in care p u te ţi crea o re la ţie este de a selecta op ţiunea E d it R ela tionsh ips d in m e n iu l R elationsh ip. V a f i afişa tă aceeaşi casetă de d ia ­log, E d it Relationships, pe care a ţi văzut-o şi în figu ra 5.26. S ingura diferenţă este că acum caseta de dia log este liberă . V a tre b u i să execu ta ţi c lic pe b u to n u l Create Now p e n tru a afişa caseta de dia log Create New R ela tion ­sh ips (vedeţi fig u ra 5.27).

D upă ce com p le ta ţi in fo rm a ţiile necesare în caseta de dia log New R ela tion ­sh ips ca în f ig u ra 5.26, caseta de dia log E d it R ela tionsh ips va ară ta ca în fig u ra 5.27. Caseta de d ia log Create New R ela tionsh ips în locu ieşte opera ţia de tragere şi plasare cu m ouse-u l.

O bservaţi că, în fig u ra 5.27, caseta de dia log E d it R ela tionsh ips ştie că re la ţia creată este u n u la m u lţi. în to tdea una când câm pu l a fla t în partea dreap tă a u n e i re la ţii n u este cheie prim ară , re la ţia va f i considera tă ca f iin d u n u la m u lţi.

Pasul u rm ă to r este de a b ifa caseta de va lidare Enforce Referenţia l In tegrity . D eta liile p r iv in d in te g rita te a re fe ren ţia lă (referenţia l in te g rity - RI) vo r con­s t itu i su b ie c tu l c a p ito lu lu i 7. Pentru a vă oferi o prezentare ra p id ă a in te g ri­tă ţ i i re ferenţia le , gân d iţi-vă la ea ca la o in d ica ţie dată bazei de date p e n tru ad m in is tra re a re la ţiilo r d in tre tabele. De exem plu, este perm isă ştergerea u n u i c lie n t fă ră a şterge m ai în tâ i contacte le sale? Sau, dacă ştergeţi u n con tac t p e n tru u n clien t, trebu ie şterse au tom a t toate contacte le p e n tru c lie n tu l respectiv? U lt im u l aspect este cunoscu t sub num ele de ştergeri în cascadă. Toate aceste exemple ilustrează in tegrita tea referenţială, dar subiec­tu l are m a i m u lte faţete. Această scu rtă prezentare a r tre b u i să vă ofere o b u n ă înţelegere p re lim in a ră a m otive lo r p e n tru care bazele de date supo rtă in te g rita te a re ferenţia lă .

2 1*1

1 Create |

Caocd I

ftftŢype•• IOeatcNew.■ |

Eelated Table/Query:

f'.•-.■•¿■•a ' ! ~ r | ClientID

Iabte/Quwy:

....-r f~ Enforce Referential intêgtf f i

r - ’? ';؛.?؛؛؛»?'‘•’Ow'-Tdi ٢ ٠ v ■i'.'. ! ' ' P ٢

Relationship Type: ; One-To-M-yiy

Page 123: Baze de date pentru incepatori (manuale facultate)

115CAPITOLUL 5 CONSTRUIREA BAZEI DE DATE ÎN ACCES

د-'ءم.

Name؛«،؛

تاص ء 1اس«ءصام؛إسءاءس

(LMNams

rafcte/Qotty;

ا«ى ا

•;Create jjew.[

ءء1آلأ٠٦٢٢٠١٠١ ٠١٦١٠■

،٠٠٠ ؛همءم p"r”TTffQ٠٠٠١يءب(ا«»ؤءت'يسءط ، ا إ’د

FIG URA 5 .2 7

Caseta de dialog Create New Relationships vă perm ite să specificaţi m anua l caracteristic ile unei re la ţii.

1 ■ ■>' *] irw* ذ د

D upă ce b ifa ţ i caseta de va lida re Referentia l In teg rity , execu ta ţi c lic pe b u to n u l OK. F igu ra 5.28 prez in tă re la ţia nou creată. O bservaţi n u m ă ru l 1 a fla t la u n u l d in tre capetele re la ţie i şi sem nu l in f in itu lu i, care seam ănă cu u n op t în to rs pe orizonta lă , la capă tu l „m u lţ i” a l re la ţie i.

. .

ص>؛’ ء' أ ت ت * و فء11. D؛ y . . هة a

1 *1

ممه'قب 'ممص . . . . . . ء8... . ا ، : م ممملة

ء ;ءأق:؛؛

إ ',...-,ت ]":

اوأ ;؛مءءءسمءسرءممسءه مس

FIG URA 5 .28

Noua relaţie u n u la m u lţi în tre tabelele Client şi Contact în ap lica ţia de constru ire a re la ţiilo r.

Page 124: Baze de date pentru incepatori (manuale facultate)

DATEPARTEA A ll-A - PROIECTAREA PRIMEI BAZE116

،¿?J Oricare două câmpuri implicate într-o relaţie trebuie să aibă acelaşi tip si aceeaşi lungime. Dacă veti încerca să creaţi o relaţie între două câmpuri

Indiciul cu tipuri şi/sau dimensiuni diferite, Access va genera o eroare.

Una dintre cele mai importante sarcini în dezvoltarea bazelor de date este documentarea. La un moment dat, va trebui să faceţi modificări şi/sau să pregătiţi noi membri ai echipei. Poate că aveţi o memorie bună, dar nimeni nu are o memorie destul de bună pentru a memora toate detaliile unui proiect. Singura cale de a evita capcanele în care puteţi cădea din cauza memoriei care joacă feste este să documentaţi bine baza de date. Ca să fim cinstiţi, nimănui nu-i place să facă acest lucru. Şi, deşi majori­tatea directorilor şi a clienţilor doreşte documentaţii, nimănui nu-i place să plătească pentru ele. Scopul este de a crea documente complete rapid şi eficient. Aşa cum probabil bănuiţi, Access oferă o soluţie drăguţă pentru această problemă.

Din meniul Tools, selectaţi Analyze, Documenter. Figura 5.29 prezintă caseta de dialog Documenter şi rezultatul furnizat de utilitarul de docu­mentare. Toate obiectele bazei de date pot fi documentate. Documen­taţia poate fi printată din Access sau exportată în Microsoft Word sau Excel,

F IGURA 5 .29

U tilita ru l Docum enter realizează rap id m unca de documentare a bazei de date.

سمم هم ٢٠، ؛م وسم 1س إع

: ء م ث ، %س'؛ ،سل n تل>ءءء «م- مما ل؛ء ء

by usng wizard ؛t،y ا'أج ء'تمحءج Create س by entering ءملل ]أ

،;B ;aer

م ء ، ا ما

Uing binary ه،ئهLong binary dsía

هص؛:p؛M؛Nam

/ءلاهمةء ؛ئ0؛ئ07سم9/1/200Ï 5:56:37 PM

آم؛ه ! ءسه

¡•سم«ء.Ucd.ïâ،،،:Tables. ' إ ة '>س

Al Obisct Types0ءل<مءReport؛

إوم■_آيإب

I 5 ICaned I

Selecta» I

DeaHettAI I

Ü سو Contact ج ي Protêt bes

long integer>wZciot«ngíh؛ ributei: liâüng Cíete: umrHidcfen:

m،«t؟e, Agta-ln،r،؛R:«d sس

DefatMaJk

اlijmrWidth؛

ا؛ م س ١ هسءاءا' «ء مءا

GUID:Ordini، Posaon: p.equired;

Soorce Fteid؛،:SCKjtCiTil

nt '»؛Prmay Key R«،dfor a longbnaryd-Ks

e،،؛Faient©

CJwnt

Long Integer'3sntTypeAbwïêicienglh؛

س،س:ءءII"'■■■■■,”

H•«!filer............................... ■

Page 125: Baze de date pentru incepatori (manuale facultate)

Rezumatîn acest cap ito l, am fă cu t o in troduce re în m odu l de trans fo rm are a u n u i m odel în bază de date. A u fost expuse două metode. P rim a d in tre ele este o cale rap idă de c itire a m ode lu lu i. A doua im p lică generarea m anua lă a ta b e le lo r, co lo a n e lo r ş i re la ţ i i lo r . De asem enea, a fo s t p re ze n ta tă şi cons tru irea re la ţiilo r în Access. Pe v iito r, după ce ve ţi f i în ţe les b ine deta liile , m etoda a u tom ată va f i m u lt m ai rap idă şi m a i efic ientă.

Partea a I l-a a c ă rţ ii se încheie cu acest cap ito l, al c ă ru i scop î l rep rez in tă fazele de pro iecta re ş i cons tru ire a un e i baze de date. în acest m om ent, baza de date con ţine n u m a i elementele esenţiale. în partea a III-a ve ţi trece la n ive lu l u rm ă to r, care im p lică in te ligen ţa de a susţine regu lile firm e i şi in te g rita te a bazei de date.

C A r؟TOLUL ة CONSTRUIREA BAZEI □E DATE ÎN ACCES 117

Page 126: Baze de date pentru incepatori (manuale facultate)

PARTEA ¡ ¡ ح ا a

‘, ض ■'ء م :■ ■؛محة NTREŢINEREA‘ن-

3AZEI □E DATE- NTRODUCERE N INTEGRITATEA 3AZE^R □E □ATE

Page 127: Baze de date pentru incepatori (manuale facultate)

6

MENŢINEREA INTEGRITATII PRIN REGULI DE VALIDAREîn acest capito l:

I I O prezentare generală a fu n c ţio n ă rii re g u lilo r de va lidare în bazele de date

■ Im p lem entarea re g u lilo r la n ive l de câm p

Im p lem entarea re g u lilo r la n ive l de în reg is tra re■ Rezum at

Page 128: Baze de date pentru incepatori (manuale facultate)

în ca p ito lu l 5 a ţi înche ia t procesu l de cons tru ire a elem entelor esenţia le ale bazei de date T im e E n try and B illin g (TEB). Acestea s u n t tabelele, câm purile ş i re la ţiile ş i rep rez in tă m in im u l necesar p e n tru stocarea date lor. M area prob lem ă este acum m odu l în care co n tro la ţi ce anum e se stochează în baza de date? A r t re b u i ca u tiliz a to ru l să poată in troduce orice doreşte? A r pu tea el să salveze în reg is tra rea despre u n c lie n t fă ră o adresă com pletă a acestu ia? A r tre b u i să existe n iş te metode de contro l? Dacă da, a tu n c i cum vo r f i ele im p lem enta te? Aceste în tre b ă ri fac parte d in sub iee tu l vast al in te g r ită ţ ii bazelor de date.

M ajorita tea sistem elor de adm in is tra re a bazelor de date re laţionale (RDBMS) au capacita tea de a m enţine in tegrita tea . In teg rita tea bazelor de date este c las ifica tă în re g u li de va lida re a date lo r şi in teg rita te re ferenţia lă . Regulile de va lida re se ocupă de aspecte precum fa p tu l că datele in troduse în tr -u n câm p s u n t va lide (acceptabile) sau fa p tu l că po t f i salvate în fo rm a tu l în care s u n t in troduse . De exem plu, dacă u n u tiliz a to r n u a in tro d u s oraşu l u n u i client, în reg istrarea n u va putea f i salvată. Acest cap ito l tra tează m odu l de defin ire a re gu lilo r la nivel de câmp şi înregistrare. In tegrita tea referenţia lă are ca ob iec tiv m enţine rea re la ţie i logice d in tre tabele. De exem plu, este perm isă ştergerea în re g is tră r ii u n u i c lie n t dacă există o în reg is tra re cu in fo rm a ţii de con tac t despre el? In teg rita tea re fe ren ţia lă este d iscu ta tă în deta liu în cap ito lu l 7, ia r acest capito l va i lu s tra aplicarea regu lilo r de validare la n ive l de câm p şi în reg is tra re u tiliz â n d ta b e lu l C lien t d in baza de date TEB.

Prezentare generală a regulilor de validareBazele de date sup o rtă re gu li de va lida re la două n ive lu r i. P rim u l este reprezenta t de câm puri. Regulile de va lida re la n ive l de câm p m ai s u n t denum ite v a lid ă ri la n ive l de câm p. De exem plu, dacă u tiliz a to ru l trebu ie avertiza t im e d ia t ce a in tro d u s date nevalide în tr -u n câmp, va f i fo los ită o regu lă de va lida re la n ive l de câmp. A ţi fos t vreodată în s itu a ţia de a n u pu tea părăs i u n câm p îna in te de a in troduce în el date valide? Aceasta este u n a d in tre s itu a ţiile când s u n t aplicate regu lile de va lidare la n ive l de câmp.

Regulile de va lida re la n ive l de câm p s u n t c ritica te adesea deoarece au te n d in ţa de a în tre ru p e f lu x u l de lu c ru . Este supă ră to r să to t f i ţ i în tre ru p t de m e s^e de eroare îna in te de a salva în reg istrarea. Acest lu c ru ne con- duce la în treba rea fundam en ta lă dacă regu lile de va lida re la n ive l de câmp m ai s u n t de v re u n fo los în absenţa un e i înce rcă ri de salvare a în re g is tră rii. De ce n u să n u verificăm va lo rile tu tu ro r câ m p u rilo r o s ingu ră dată, la salvarea în re g is tră rii? Această în trebare ne conduce la conceptu l de re gu li la n ive l de în reg is tra re .

Uneori, s itua ţia u n u i câmp depinde de s itua ţia u n u ia sau m ai m u lto r câm puri. In acest context n u se aplică regulile de validare la nive l de câmp. Puteţi n um a i să verifica ţi s itua ţia tu tu ro r câm purilo r îna in te de a salva înregistrarea.

122 PARTEA A III-A - ÎNTREŢINEREA BAZEI DE DATE

Page 129: Baze de date pentru incepatori (manuale facultate)

Adeseori, dezvoltatorii de baze de date se bazează exclusiv pe reguli de validare la nive l de înregistrare. De exemplu, regulile de validare care altfe l s-ar aplica la nive l de câm p su n t im p lem entate ca parte a schemei generale de regu li la nive l de înreg istrare. P entru a oferi m ai m u ltă clarita te , secţiunea urm ătoare va im p lem enta conceptele de validare la nive l de câmp şi de înregistrare.

CÎAPITGLIJL 6 MENŢINEREA INTEGRITĂŢII PRIN REGULI DE VALIDARE 123

Poate că vă întrebaţi cui îi aparţine responsabilitatea de a se asigura că în baza de date sunt introduse date valide? In mod tradiţional, aceasta este treaba aplicaţiilor software. De exemplu, pentru a asigura introducerea adresei complete, care conţine adresa, oraşul, statul şi codul poştal, era utilizat sistemul software de ordonare a intrărilor. Cândva, bazele de date erau numai instrumente de stocare. Probabil că în trecut aceasta nu era o problemă, fiindcă o bază de date era accesată de o singură aplicaţie. Astăzi însă, bazele de date sunt construite pentru a fi accesibile pentru mai multe aplicaţii. Ce s-ar întâmpla dacă o aplicaţie ar omite o regulă de validare importantă? Ultima redută pentru apărarea integrităţii este chiar baza de date. Dacă vă amintiţi cele discutate în capitolul 1 şi cele 12 reguli ale lui Codd, regula 5 formulează ideea că o bază de date relaţională trebuie să suporte un limbaj care facilitează integritatea datelor.

Doar fiindcă o bază de date respectă regula 5 a lui Codd, nu însemnă neapărat că trebuie să utilizaţi aceste funcţii ale bazei de date. Dacă, totuşi, sunteţi preocupat de aplicarea „celor mai bune practici”, este recomandabil să determinaţi regulile esenţiale pentru integritatea bazei de date şi să implementat¡ aceste reguli. In consecinţă, indiferent de aplicaţia utilizată pentru a interactiona cu baza de date, aceasta din urmă„îsi va purta singură de grijă”, iar dumneavoastră veţi fi sigur de integritatea datelor.

Implementarea validării Ea nivel de câmpîna in te de a in tra în deta liile im p lem en tă rii va lid ă rii la nive l de câmp, trebu ie să efectuăm u n s tu d iu asupra p ro p rie tă ţilo r re levante ale u n u i câm p care su p o rtă va lidarea. în ca p ito lu l 2 am rea liza t o scu rtă prezentare a acestor p rop rie tă ţi. în acest cap ito l ve ţi vedea cum func ţiona re a acestor p ro p rie tă ţi a ju tă la susunerea in te g r ită ţii datelor.

Proprietăţi ale câmpurilorF igu ra 6.1 prez in tă d ife rite le p ro p rie tă ţi ale câ m p u lu i C lien tID d in tabe lu l C lient. în fu n c ţie de m o d u l în care d o r iţ i să co n fig u ra ţi regu lile , este pos ib il să u t iliz a ţ i unele d in tre aceste p ro p rie tă ţi sau ch ia r pe toate, deoarece, în fu n c ţie de t ip u l de date ale câm pu lu i, unele p ro p rie tă ţi n u po t f i u tiliza te . De exem plu, prop rie ta tea A llow Zero Length (perm ite lung im ea zero) poate f i ap lica tă n u m a i u n u i câm p cu date de t ip text, ia r proprie ta tea Decim al Places (n u m ă ru l de zecimale) poate f i ap lica tă n u m a i u n u i câm p num eric . In cazu l câ m p u rilo r A utonum b er, proprie ta tea Required (ob ligatoriu ) n u se aplică, deoarece u tiliz a to ru l n u are co n tro lu l asupra date lo r stocate.

Page 130: Baze de date pentru incepatori (manuale facultate)

6.1 FIG URA

Access suportă o varietate de proprie tă ţi ale câm purilo r pentru a susţine validarea şi in tegrita tea

.da te lor

PARTEA A iil-A - ÎNTREŢINEREA BAZE 124؛

Această secţiune va prezenta m o d u l de s tab ilire a re g u lilo r la n ive l de câm p p e n tru ta b e lu l C lien t d in baza de date TEB.

Proprietatea RequiredDacă este ob liga to rie in troduce rea un e i v a lo ri în tr -u n câm p, proprie ta tea R equired este setată pe Yes (da). F igura 6.2 prez in tă m o d u l de setare a acestei va lo ri. Această p rop rie ta te este de t ip boolean, adică poate accepta n u m a i două va lo ri: Yes (da) sau No (nu). U neori va lo rile po t f i True (adevărat) / False (fals), sau 1 / 0 . 0 va ria b ilă booleană este ca u n com u ta to r - este fie p o rn it, fie oprit.

Pentru a inversa valoarea proprietăţii Required, trebuie doar să selectaţi valoarea cu mouse-ui şi să executaţi dublu clic. O altă metodă este să executaţi clic pe săgeata cu vârful în jos, apoi să selectaţi valoarea dorită din lista derulantă care apare.

B u n u l s im ţ şi rezu lta te le e fo rtu r ilo r dum neavoastră de analiză ş i pro iectare vă vo r in d ica adesea dacă este obligatorie com pletarea v a lo r ii u n u i câm p. în cazu lu i ta b e lu lu i C lien t, com pletarea c â m p u rilo r ClientType, Addressl, City, State, ZIP şi Phone este obligatorie . D ar câm pu l Address2? N u va f i nevoie de a doua adresă p e n tru to ţ i c lien ţii. Acelaşi lu c ru este va la b il şi p e n tru adresa de Email; n u to ţ i c lie n ţii au aşa ceva. Ce părere aveţi despre câm purile FirstName, Middlelnitial, LastName şi OrganizationName? Aceste câ m p u ri s u n t o prob lem ă delicată. U n ii c lie n ţi s u n t persoane fizice, a lţ i i s u n t firm e . Dacă u n c lie n t este persoană fizică, p e n tru care valoarea c â m p u lu i ClientType este „ I ” (de la in d iv id u a l - n .tr .) , a tu n c i va lo rile câ m p u rilo r FirstName şi LastName su n t ob liga to rii.

'؛»؛؛: lM«rt مإ0ا5 أسمم

T Data Typgf ؟؛y Field fc-iواسم ئمإن؛ةآ nn&y

ا Chai-acte» Fiski lo spsofy /؛pa of rfsnt: B-Busn؛®

تت"قاء:؛ءهلءءآه

CKQarizătMTiName Addrs؛؛ ا

«ههء ق؛

أ ........ و.سوitartTyps

ءءصإمحءاسءا1ءمإوب

0هرء0؛امحهسءااءوىة8ء؛1 م

تء،مههةCityءء.مئ2دهءءز؛>١١٠٨٠

-س,مف

Mjmber ؛rtico E-n-Kهسء5ء

F»Hdءءئء؛0؟،س

ستهر

1مبسامتهباCspîian .

:0«ههءءمء

ءآ أس00ه دءل ء م ه' م

fc؛،n8؛f0l»؛؛AtoIndtxea

آم«ءربس Unfode م

سأ-اf;r«s I ءالم؛را-،مح.م،ل>امض ء ء ء >٠١١٠؛جض'ء،؛؛متس م«ءا؛• sn•«، ٠ •م ءمحه

د

٧«م؛ءباهتمتامثءب 0أثب

Page 131: Baze de date pentru incepatori (manuale facultate)

CAPITOLUL6 MENŢINEREA INTEGRITĂŢII PRIN REGUUDEVAL1DARE 125

Com pletarea c â m p u lu i Middlelnitial n u este obligatorie , deoarece n u to ţ i oam en ii au două num e. Dacă este vorba despre o ةس أ , a tu n c i valoarea ~ ClientType este „B ” , deci valoarea câ m p u lu i OrganizationName

este o b lig a to rie . D u p ă cu m vede ţi, în u lt im e le ca zu ri, o b lig a tiv ita te a u n o r câ m p u ri depinde de va lo rile a lto r câm puri. A ic i in te rv in

regu lile de va lida re la n ive l de înreg istrare, ia r această s itua ţie va f i d iscu ta tă în secţiunea urm ătoare .

Pentru a recap itu la , tabe lu l 6.1 prezin tă setările prop rie tă ţii Required pentru ta b e lu l C lient.

FIGURA 6 .2

Proprietatea Required specifică dacă este obligatorie in troducerea datelor în tr-u n an um it câmp.

Tabelul 6 .1 Setările proprietăţii Requiredp en tru câm purile d in tabelu l Client

C ăm pul Valoai

ClientID -

ClientType Yes

FirstName No

Middlelnitial No

LastName No

OrganizationName No

Addressl Yes

Address2 No ٠

City Yes

مو M tfggw •liwait. ل0ج أسسم ءى

' - - - - - - -

-.101 x lد ه

Pimary Key F*w forc،e* Tsbl،م،دسمحءت:Nurrfcer

OsoUD.أ هلء ء ، أ

F»5tftome، اسه

Jype TaWe 0مغء، Foreign ،،y FrstNam،

MddtelniBalء ءصء اا

ءمءء مسم، ء م ء ه،ه ا ءه ء اا

اد0تمموامحماسمااء

بل.. ........... م*$مبتءء،يدف

>هس

£ ب- دPŞone

بت •مء ء..سأءممء.س:ةاء،،امه ب د ا

sn؛،c«p هعمح¥ءس

ءس م،ءZero »0اءصإ ا

Indexed

n - *g"—... .................... ~.................. ~ r~ r~i r~~ r~: r

Setările valide pentru proprietatea Required sunt stocate într-o listă derulantă.

Page 132: Baze de date pentru incepatori (manuale facultate)

126 PARTEA A III-A - ÎNTREŢINEREA BAZEI DE DATE

Tabelul 6.1 (continuare)C âm pul Valoare

State Yes

ZipCode Yes

Phone Yes

Email No

Acum , după ce a ţi setat corespunzător propietatea Required, este m om en tu l să vedeţi care este efectu l său asupra date lor in troduse. Dacă vă m ai a m in tiţ i d in u ltim e le două capito le, tabele po t f i v izua liza te în două m oduri. P rim u l este m o d u l (vizualizarea) Design, cu care a ţi lu c ra t in tens. A l doilea este v izua lizarea Datasheet, prezenta t în ca p ito lu l 2, care se com portă ca o foaie de date. In acest m od de vizua lizare p u te ţi priv i, m od ifica ş i şterge datele d in tr-u n a n u m it tabel. F igura 6.3 prezin tă m odu l de trecere de la vizualizarea Design la v izua liza rea Datasheet. Trebu ie doar să executa ţi clic pe b u to n u l V iew de pe bara p rin c ip a lă de in s tru m e n te d in Access şi să se lecta ţi v iz u a li­zarea dorită .

Când vă a fla ţi în vizua liza rea Datasheet, in t ra ţ i în câm pu l FirstName şi scrie ţi-vă prenum ele . V e ţi observa că, după ce începeţi să scrie ţi, câm pu l ClientID este com ple ta t cu o nouă valoare. F igura 6.4 prez in tă în fă ţişa rea pe care a r tre b u i să o aibă ecranu l dum neavoastră .

D upă ce a ţi in tro d u s o valoare în câm pu l FirstName, înce rca ţi să ie ş iţi d in în reg is tra re apăsând tas ta cu săgeata în jos . Când înce rca ţi să p ă ră s iţi o în reg is tra re , Access ve rifică dacă s u n t îndep lin ite toate regu lile de va lidare s tab ilite . Dacă regu lile s u n t îndep lin ite , în reg is tra rea este salvată. Dacă regu lile n u s u n t îndep lin ite , este generat u n mesaj de eroare (vedeţi figu ra 6.5), care vă in form ează că s-a produs o excepţie. Aşa cum vedeţi, n u se poate spune că acesta este u n mesaj prietenos fa ţă de u tiliza to r. Spre s fâ rş itu l acestei sec ţiun i ve ţi învă ţa te h n ic i sup lim entare de a oferi u tiliz a to r ilo r bazei de date mesaje m a i in tu it iv e şi m ai prietenoase.

în acest m om ent, dacă executa ţi clic pe b u to n u l OK p e n tru a scăpa de caseta de d ia log şi apoi apăsaţi tas ta Escape, noua în reg is tra re pe care a ţi d o r it să o crea ţi va f i ştearsă. In d ife re n t câ t de m u lt vă ve ţi s tră d u i, Access n u vă va pe rm ite să trece ţi peste regu lile de va lida re in s t itu ite ! Să ne concentrăm acum a ten ţia asupra p ro p rie tă ţii A llow Zero Length, care este foarte aprop ia tă de proprie ta tea Required.

Page 133: Baze de date pentru incepatori (manuale facultate)

CAPITOLUL 6 MENŢINEREA INTEGRITĂŢII PRIN REGULI DE VALIDARE 127

înv*'،*، .«؛rfiwr I►؛ JWfţ

ISJ3S- ٩٠٢»■' ' SS

• iienill) 4.11« ni 1 yin t-iiMNoiin

J ’ 2؛،؛¡ "* ، I f؛-•"‘؛■City : Si.il« 1؛

FIG URA 6 .3

B u to nu l View vă perm ite să treceţi de la vizualizarea Design la vizualizarea Datasheet şi invers.

©r،fow HelpFam« ge،«ds؛ Vkvi Insert

ClienilP [ c i i entTyp <

(ÂutoNumb؛

■MHfl HBi |jj¡

: f~~~ — rfirgNirr.»

______ -!3 *!*;

FIG URA 6 .4

Im ediat ce in troduce ţi date în tr-oînregistrare nouă, câm pul cu t ip u l de date AutoNumber este com pletat cu o nouă valoare.

. .

L « : . i . l ...s* ...i

FIG URA 6.5

Nu v i se perm itesalvareaîn reg is tră riidacă nu sun tîndeplin iteregulile devalidare.

Proprietatea Allow Zero LengthAceastă prop rie ta te v i se va părea confuză la început, deoarece este necesar să deoseb iţi în tre ş iru l v id şi u n ş ir de lung im e zero.

Page 134: Baze de date pentru incepatori (manuale facultate)

128 PARTEA A III-A - ÎNTREŢINEREA BAZEI DE DATE

Şirul vid poate fi un concept dificil de înţeles. Gânditi-vă la un câmp liber din înregistrarea unui client. Este el liber cu adevărat sau valoarea sa nu este cunoscută? Şirul vid indică situatia când valoarea nu este cunoscută, spre deosebire de cea în care valoarea nu este completată.

C om b ina ţia de v a lo r i în tre p rop rie tă ţile Required şi A llow Zero Length in f lu ­enţează fu n c ţio n a re a va lid ă rii. Cel m ai b u n p u n c t de s ta rt este acela în care prop rie ta tea Required este setată pe Yes. în acest caz, ş iru l v id n u va f i n ic ioda tă acceptat. N u u ita ţ i că el corespunde v a lo r ii necunoscute. F a p tu l că este obliga to rie in troduce rea v a lo r ii u n u i câm p e lim in ă pos ib ilita te a ca ea să fie necunoscută . A tu n c i, dacă n u este perm is ş iru l vid , cum s tau lu c ru r ile cu u n ş ir de lung im e zero? U n ş ir de lung im e zero, spre deosebire de u n u l v id , este o valoare cunoscută , ia r în cazul o b lig a tiv ită ţii com p le tă rii u n u i câm p este perm is câm pu l de lung im e zero. Dacă este cazul, ve ţi dori să se ta ţi pe Yes proprie ta tea A llow Zero Length.

Să reven im la cazu l când proprie ta tea Required este setată pe No. U n câmp a că ru i com pletare n u este ob liga to rie poate accepta în to tdeauna u n ş ir vid . Se pune în treba rea dacă v i se perm ite să in tro d u ce ţi u n ş ir de lung im e zero. Revenim astfe l la necesitatea cunoaş te rii d ife ren ţe i în tre ş iru l v id şi cel de lung im e zero. Să considerăm , de exem plu, o adresă de e-m ail. Dacă în acest câm p n u este n im ic , a tu n c i c lie n tu l n u are adresă de e-m ail sau adresa lu i n u este cunoscută? Vom d iscu ta m ai tâ rz iu în această secţiune prop rie ta tea Form a t (form at). Aceasta oferă o m etodă de a con tro la m o d u l de afişare a ş iru lu i vid . Dacă do riţi, este po s ib il ca ş iru l v id să apară ca u n ş ir gol. Ceea ce vede u tiliz a to ru l n u este n ic i pe departe la fe l de im p o rta n t ca d ife ren ţa în tre u n ş ir v id şi u n u l libe r. P entru u n u tiliza to r, ele n u su n t dife rite . P en tru dum neavoastră , dezvo lta to ru l bazei de date, ele s u n t foarte dife rite . Să ne op rim p u ţin p e n tru a exam ina lis ta câm purilo r, în scopu l de a vedea care a r tre b u i să fie setările.

C âm pu l ClientType poate f i n u m a i „B ” sau „ I ” . P rin de fin iţie , com pletarea sa este ob liga to rie , ia r cum n u s u n t posib ile decât două va lo ri, n u trebu ie să fie perm is u n ş ir de lungim e zero. Dar câm purile FirstName, Middlelnitial, LastName şi OrganizationName? A r avea ro s t să fie acceptat u n ş ir lib e r ca valoare p e n tru LastName? Cel m ai probab il, ră sp u n su l este nu . Aceste câ m p u ri fie vo r conţine o valoare, fie nu . Dacă vă gâ n d iţi p u ţin , u n ş ir cu lung im ea zero n u va f i acceptab il aproape nic iodată . De aceea, în tabe lu l C lien t, p rop rie ta te a A llow Zero Length va f i setată pe No p e n tru toate câm ­pu rile . In s itu a ţia când ve ţi încerca să in tro d u ce ţi u n câm p de lung im e zero, Access î l va în lo cu i au tom a t cu u n ş ir vid.

Oricât aţi încerca, nu veţi găsi pe tastatură tasta corespunzătoare şirului vid! Dacă un câmp are proprietatea Allow Zero Length setată pe şirul vid, adică dacă este acceptat şirul nul, trebuie doar să ştergeţi toate caracterele din acel câmp. Aceasta va indica programului Access că trebuie să înlocuiască valoarea câmpului cu şirul nul. Imediat ce introduceţi un câmp, toate caracterele vor fi evidenţiate. Trebuie doar să apăsaţi bara de spaţiu şi toate caracterele vor fi şterse.

Page 135: Baze de date pentru incepatori (manuale facultate)

CAPITOLUL 6 MENŢINEREA INTEGRITĂŢII PRIN REGULI DE VALIDARE 129

Proprietatea Format

Aşa cum b ă n u iţi, probab il, toate aceste p ro p rie tă ţi s u n t legate u n a de a lta în tr-o a n u m ită m ăsură. Aşa cum proprie tatea A llow Zero Length are legătură cu p rop rie ta te a Required, proprie ta tea F orm at are legă tu ră cu A llo w Zero Length . Ea are două ro lu r i. M ai în tâ i, contro lează m o d u l de afişare a câ m p u rilo r, apoi contro lează m o d u l de afişare a ş iru lu i vid .

Ind ife ren t de m o d u l de stocare a datelor, proprie ta tea Form at poate m odifica în fă ţişa rea date lor. De exem plu, dacă toate caracterele câ m p u lu i FirstN am e s u n t in tro d u se cu lite re m ic i, prop rie ta tea F o rm a t poate fo rţa afişarea caracterelor cu m ajuscule, lă ră a afecta m odu l în care su n t m em orate datele. Această prop rie ta te este foarte com plexă, cu m u lte se tă ri care dep ind de t ip u l da te lo r cu care lu c ra ţi.

Această carte are două scopuri: mai întâi, să vă înveţe cum să proiectat! bazele de date, apoi să vă înveţe cât se poate de muite despre Access. Documentaţia ajutătoare pe care o conţine acest program este destul de bună, dar informaţiile nu au o valoare prea mare. Prezentarea modului de funcţionare a aplicaţiilor, pe de altă parte, are o valoare incredibilă. După prezentare, puteţi trece ia experimentarea diferitelor setări. Ştiind aceasta, dacă doriţi să vă extindeţi cunoştinţele despre o anumită proprietate sau aplicaţie, trebuie doar să o selectaţi şi să apăsaţi tasta F1. De exemplu, figura 6.6 prezintă informaţiile din Help despre proprietatea Format.

Ironia este că sistemul Help este una dintre funcţiile cele mai valoroase şi totuşi mai puţin utilizate ale aplicaţiilor software.

;تتتءءسا-.م

ثل

Form at PropertyS t i Also Exan'ipl؛ Applies Til

٧٠٧ can use the Form at property to customize the ١١١٠٢ number؟ ، dates, times, and tex t are displayed and printed. For example, if you've created ق Price text box, you can set its F orm at property to C urrency and it؛ D ecim alP laces property to 2 or Auto. If you enter 4321.678 in the control, the number would be displayed 1.68 ءو ي4,3ة .

You can use one of the predefined format؛ or you can create a custom form at by using formatting symbols.Setting

The F o rm a t property uses different settings fo r different ءلق؛ه types. ۴٠٢ information about settings fo r و specific data type, see one of the following topics:

لل ص ٠ س• N»jmbfer..and..C»rrei?.cy..P.9ta.1!sfc«¿■

• Yes/No Pate Type

For a control, you can set this property in the control'؛ property sheet. For a field, you can set this property in table Design view (in the Field Properties section) or in Design view of the Query window (in the Field Properties property sheet). You can also use a macro or V;;uai

FIGURA

Dacă apăsaţi tasta F I când curso ru l este poziţionat pe o anum ită proprie tate va afişa m en iu l Help pentru acea proprietate.

Proprie tatea F orm at este foarte u tilă când trebu ie afişate câm puri cu fo rm a- ta re specială. D ouă t ip u r i de astfe l de câm pu ri s u n t cele care co n ţin num ere de te le fon şi co d u ri poştale. F igura 6.7 prez in tă setarea p ro p r ie tă ţii Form a t p e n tru câm pu l ZipCode.

Page 136: Baze de date pentru incepatori (manuale facultate)

130 PARTEA A III-A - ÎNTREŢINEREA BAZEI DE DATE

OggriptiaftJ«fit ■ a؛،،

1 Chvacler F،eld to specfy type of eter*: B-Busne-ss، I-lndvidual «.f i * Narn

AjC Î4jT’t i lOenUPc،er،TypeRrstNsme

ddleln،ial؛Mna،؛tf؛La

OrgafiiaiionNaiiteAddresîl

Addru؛؟،

ZipCodeProre

Emai؛

■ Field ftopertfes;

al ! Lootup ؛،Gen HSce?،؛

Format Input Mask :

Orfault Vdue

Validation Te*t : ؛؛ •؛،»،¡؛:ifoimk. PrwcP؛؛-,، ؛

Length؛1es(DUp،>;aţ«.:♦:)

' .LJricode Compt esţion

FIGURA 6.7

Setarea @@@@@-@@@@ a prop rie tă ţii Form at asigură afişarea codu lu i poştal cu cinci caractere, o lin iu ţă , apoi p a tru caractere.

Să exam inăm acum func ţiona re a p ro p rie tă ţii Form at. Reveniţi în vederea D atasheet şi trece ţi în ZipCode, apoi in tro d u ce ţi 193011234, dar n u trece ţi încă la câm pu l u rm ă to r. F igu ra 6.8 prez in tă m o d u l în care va a ră ta vederea Datasheet.

FIGURA 6.8

Cât tim p vă afla ţi în câm pul respectiv, proprie tatea Form at n u are

!Client: Table

Help ™؛»،cuds pols i i؛؛» rrnat،؛؛

2Ll؛iS.* -Phone ' - 1 EmailMiil<tlelniilal~f~ LastH. Oiij.iiilz.ilIniiHl Aii jiessl

Recwd؛; !:

Page 137: Baze de date pentru incepatori (manuale facultate)

MENŢINEREA INTEGRITĂŢII PRIN REGULI DE VALIDARE 131

Table ؛Client؛

lp؟؛rricw ţ؛؛؛ Ţoali ؛Pgfraat Record ؛ nsert؛ Wew

-S Ifnt& | Zip Code [Aiiilress2<dme | Oiganli<illotiN| AdJtegst19301-1234

► l »<!>«!

' ' ':'.pi:

Trece ţi acum în câm pu l Phone Number. F igu ra 6.9 prez in tă efectu l p ro p rie ­tă ţ i i Form at. D upă ce p ă ră s iţi u n câmp, Access va respecta afişarea s ta b ilită p r in prop rie ta te a Form at. N u u ita ţ i să apăsaţi tas ta Escape p e n tru a scăpa de date, astfe l în câ t să p u te ţi reveni la m odu l Design. N u u ita ţ i, anum ite re gu li de va lida re vă vo r îm p ied ica să sa lva ţi datele.

FIGURA 6.9

Proprietatea Form at va avea efect după ce ieş iţi d in câmp.

Access nu vă va permite să lăsaţi datele în stare incertă. De exemplu, dacă în timp ce introduceti date vă decideţi să treceti în vizualizarea Design sau să treceti la o nouă înregistrare, va trebui mai întâi să terminat؛ introducerea datelor din înregistrarea curentă. Pentru asta, aveţi la dispoziţie două opţiuni. Fie veti salva datele, ceea ce înseamnă că trebuie să introduceti valori în câmpuri până sunt îndeplinite condiţiile de integri­tate, fie veti renunţa la date. O variantă de mijloc nu există în această situaţie. Acest concept va fi important la crearea formularelor pentru intro­ducerea datelor, pentru a întretine datele. Dacă utilizatorul se află într-o sesiune de introducere a datelor si decide să închidă formularul, va trebui să aleagă între introducerea completă si renunţarea la date. Aceasta este esenţa integrităţii datelor, faptul că nu pot fi stocate date incomplete.

Să ne înd re p tă m acum a ten ţia către a doua fu n c ţie a p ro p r ie tă ţii Form at, co n tro lu l a fişa rii ş iru lu i vid. în cazul câm pu rilo r de text, proprie ta tea Form at este a lcă tu ită d in două secţiun i. Prim a se ocupă de m o d u l de afişare a date lor. A doua in d ică m o d u l de afişare a ş iru lu i vid . P entru baza de date TEB, va fi fo los ită valoarea „N /A ” p e n tru afişarea ş iru lu i vid. C aracte ru l p u n c t şi v irg u lă (;) separă sec ţiun ile p ro p rie tă ţii Form a t (vedeţi fig u ra 6.10).

Page 138: Baze de date pentru incepatori (manuale facultate)

132 PARTEA A III-A - ÎNTREŢINEREA BAZEI □E DATE

•ا.. ه . أţjeip ؟ ء ي م،ع ؛م ءس ،٨؛«$ اي

Destnotioniwaroê>ا............ وس.

CkentTyp،RrKNínií

سءمل،أءسL5(؛ftónv؛

تيا،ءمألءهتسهمحم«سا؛ءءسئ؛ءم

«V

pmkíyt.ey Field ípr تسم ءنهءB-Euí*iMí, l-Inckvldu l ءه سأ íyt>pe،5؛p ؛ ا ا؟ءههمإءكسه

FnSNşmeسء1س

1 هح Name

سا .عم(مصText؛

Ñatrit ومن'سمىممح>ءب«ساء؟١٢سثء5ة

ءس٨٦٠٨٠Erna، ءجمهاع ههيث؛مف

td Propşrţieî»؛F

ال م هاه0ا ، م،ةص|Ce؛ Field

،،Formمء؛اسCspikn

م'امء س سلءأم ،هيس

VaWifKfiŢert.ء.ءسممء

Wow z«0 Length•سءجه

cii«»؛،Corţ ا س م

و: Cod؛ دءس. ءءس',؛؛قءبم’ميءء م ،ا آ ا ضإ ل؛ ه ت ، ا م ، هجتسء ض م ت ؛ fi،؛í. ء

؛سم.ء'هء؛أ م-,ء؛ء

«'» (ح،ثمءهءرءم)ب

Desavié«». P6«»ftwtehwñ5. Fl»Hefe~

FIGURA 6 .1 0

A doua secţiune a proprie tă ţii Form at pentru u n câmp de tex t controlează m odul de afişare a ş iru lu i vid.

Să reven im la v izua liza rea Datasheet, în câm pu l zipCode. O bservaţi că acest câm p conţine valoarea N /A . D a r n u vă grăb iţi! C om pletarea câ m p u lu i ZipCode este obligato rie , deci n u poate accepta ş iru l v id . Şi a tunc i? Răs­p u n s u l este foarte s im p lu . La crearea un e i n o i în reg is tră ri, cu excepţia cazu lu i când este d e fin ită o a n u m ită valoare im p lic ită , ia r despre acest concept vom d iscu ta m ai tâ rz iu în această secţiune, valoarea im p lic ită a u n u i câm p este ş iru l vid. C âm pu l aşteaptă l ite ra lm en te să in tro d u c e ţi o valoare in iţ ia lă . Deoarece com pletarea câ m p u lu i ZipCode este obligatorie , n u ve ţi pu tea salva în reg is tra rea dacă acest câm p con ţine ş iru l vid . F igura6.11 a ra tă cum va apărea in iţ ia l câm pu l ZipCode.Este prop rie ta tea F orm a t su fic ien tă p e n tru a asigura in te g rita te a date lor? R ăspunsu l este, categoric, n u . F igura 6.12 ilus trează acest lu c ru . N u u ita ţi, p rop rie ta te a F o rm a t contro lează m o d u l de afişare a date lor, n u m o d u l în care s u n t in troduse . P entru a con tro la acest aspect, va tre b u i să s tu d ia ţi prop rie ta tea In p u t M ask (mască de in tra re ).

în practică , n u va tre b u i să co n tro la ti m o d u l de afişare a ş iru lu i v id în câm pu l ZipCode, deoarece com pletarea acestu ia este obligatorie . Nu u ita ţi, ş iru l v id n u poate f i stoca t în câm purile a căro r com pletare este obligatorie . Im ag inea a n te r io a ră care u t il iz a câ m p u l ZipCode a a v u t n u m a i scop dem onstra tiv . T abe lu l 6.2 con ţine setările p e n tru fiecare câm p al ta b e lu lu i C lie n t care necesită o setare p e n tru proprie ta tea Form at.

Page 139: Baze de date pentru incepatori (manuale facultate)

MENŢINEREA INTEGRITĂŢII PRIN REGULI DE VALIDARE 133

s■ *؛< i i ٣؛ * ٠٠ ٠ ٠* ■ ٠ h ١ ٠ a٤ ٠؛، .ă l •٠ ٠٠ ؛ ؛ ٠

j* 151؛ f e--.A<Hi«k1 ؛onN،،«2؛،MliIHuiiiltidl | L.islH.iin« 16igan ٢ *City ٢ St.it» ZJ,،”»3o،l« i Phon<f I Emoii f . t ‘

±J 2 2

: v___I ■ 1 I___؛i i. - -

în absenta unei va lori im p lic ite , câm purile unei no i în reg is trări au valoarea in iţ ia lă nu lă .

FIGURA 6.11

FIGURA 6.12

Proprietatea Form at nu poate împiedica in troducerea un o r caractere nevalide în tr-u n câmp.

Page 140: Baze de date pentru incepatori (manuale facultate)

Tabelul 6.2 Setările proprietăţii Formatpentru câmpurile tabelului Client

134 PARTEA A III-A - ÎNTREŢINEREA BAZEI DE DATE

C âm pul Valoare

FirstName @;”N /A ”

Middlelnitial @;”N /A ”

LastName @;”N /A ”

OrganizationName @;”N /A ”

Addressl -

Address2 @;”N /A ”

ZipCode @@@@@-@@@@

Phone @@@-@@@-@@@@

Email @;”N /A ”

P ro p rie ta te a In p u t M askProprie ta tea In p u t M ask (mască de in tra re ) realizează ceea ce proprie ta tea F orm a t n u poate. Problem a este de a con tro la ce caractere s u n t in troduse în tr -u n câm p ş i în ce mod. Proprie ta tea In p u t M ask poate f i con figu ra tă m a n u a l sau generată cu o ap lica ţie w izard . F igura 6.13 prez in tă a p lica ţia w iza rd In p u t M ask. T abe lu l 6.3 con ţine setările p e n tru câm purile ta b e lu lu i C lien t care necesită configurarea p ro p rie tă ţii In p u t M ask.

Figura 6.13

A plica ţia wizard In p u t M ask generează rap id o valoare pentru proprie tatea In p u t Mask.

Dacă executaţi clic pe acest buton, va Puteţi testa în mod interactivfi lansată aplicaţia wizard Input Mask. proprietatea Input Mask.

Page 141: Baze de date pentru incepatori (manuale facultate)

Tabelul 6 .3 Setările proprietăţii In p u t M ask p e n tru câm purile tabelu lu i Client

C âm pul Valoare

ZipCode 00000-9999;

Phone (999) 000-0000

M asca de in tra re p e n tru câm pu l ZipCode este 00000-9999. Ea rep rez in tă u n m odel pe care trebu ie să-l respecte toate datele in troduse . In acest caz, prim ele cinc i caractere trebu ie să fie cifre de la 0 la 9. U ltim ele p a tru caractere trebu ie să fie cifre de la 0 la 9 sau spa ţiu . De ce este perm isă fo losirea s p a ţiu lu i în partea p lus 4 a co d u lu i poştal? D ar poate n u ş t iţ i ce rep rez in tă partea p lu s 4 a co d u lu i poştal.

Ca şi prop rie ta tea Form at, proprie ta tea In p u t M ask este a lcă tu ită d in două p ă rţi. In acest exem plu, m asca de in tra re a co d u lu i poşta l este 00000- 9 9 9 9 ; Prim a secţiune este ch ia r masca de in trare . A doua secţiune specifică dacă este prezenta tă afişarea actuală, in c lu s iv caracterele m ode lu lu i, sau dacă s u n t stocate datele esenţiale. In acest caz, dacă a doua secţiune a r f i fos t setată pe 0, la in troduce rea date lo r 19301-1344, Access ar f i încerca t să memoreze 10 caractere în câm pul ZipCode. In acest caz, al zecelea caracter ar f i l in iu ţa care separă cele două p ă rţ i ale co d u lu i poşta l. Dacă lă sa ţi necom ple ta tă a doua secţiune, n u vo r f i m em orate caractere ale m ode lu lu i, ia r în acest caz, datele m om orate în câm pu l ZipCode s u n t „193011 344” . Setarea acestei se c ţiu n i este foarte im po rtan tă , deoarece, în acest exem plu câm pu l ZipCode are lung im ea de 9 caractere, ia r dacă a r fi m em orate caracterele m o d e lu lu i, codu l poşta l a r f i tru n c h ia t, ceea ce înseam nă că dacă in tro d u c e ţi 19301-1344, va f i m em ora t de fap t 19301-134. U ltim a secţiune specifică în lo c u ito ru l (placeholder) p e n tru sp a ţiu la in troduce rea date lor. în acest caz este fo los it ca rac te ru l underscore (bara jos), dar el poate f i orice caracte r în lo cu ito r. A p lica ţia w izard In p u t M ask cup rinde tre i paşi. Fiecare pas corespunde u n e i secţiun i. In m ajo rita tea s itu a ţiilo r , ve ţi lăsa nesch im bate setările im p lic ite pe care v i le oferă aplica ţia . F igu ra 6.14 prez in tă m o d u l cum va apărea proprie ta tea In p u t M ask după înch iderea aplica ţie i wizard. Pe m ăsură ce ve ţi înţelege m ai b ine funcţionarea prop rie tă ţii In p u t M ask, ve ţi in troduce ch ia r dum neavoastră m ăştile de in tra re , în loc de a fo los i a p lica ţia wizard.

A cum , după ce aveţi u n a d in tre m ăştile de in tra re la degetu l m ic, m ergeţi m a i departe şi se ta ţi câm pu l Phone Number. F igu ra 6.15 p rez in tă m o d u l în care vor apărea rezultatele. Observaţi sem nul exclam ării care precede masca de in tra re p e n tru câm pu l Phone Number? Acest lu c ru de te rm ină afişarea caracte re lo r de la dreapta la stânga.

SJiFITOL JL 6 MENŢINEREA INTEGRITĂŢII PRIN REGULI DE VALIDARE 135

Page 142: Baze de date pentru incepatori (manuale facultate)

DATEPARTEA A lll-A ■ ÎNTREŢINEREA BAZEI136

ء ١ ؛nsírt Jjoob ؛Mhdow ط

تة:•محإ.و؛'______________؟ م'مت ■' ي*آء - ,

■ Field Wame I Datai Type I

0 و>اصا(ق ه <■! NameAddress 1 Address ة«y ..... ............

; ؛ ، ، ،ZpCOdí

آأ-ءمءرسءء

í-xírtií n th íM í ١ ؛٢ءء r. '،» Je •y؛<a؛B ه

م م - م ممحم مس٠٠١.;. س

CienţID . . . . «n،Tyţ،؟C

س. ......... .. همس . س'س ........س »'س

ووآم0ت،مبسماآهرمبسا؛تء

MáníZ

uneZipCodePhxie

^٠^ j اداص، ا؛س،ف'

١٦٠٦ ءس٢١٣١٨٨ ال - « " '«

'اسءءء>ساء،أصبل * ءمم

من،مءتم«م سسمه،؛ء

ء:س ءء(أ ام أ »

a :» ،n ب © همم م '

FIG URA 6 .1 4

Aveţi de ales în tre utilizarea une i ap lica ţii w izard şi setarea m anua lă a proprie tă ţii.

FIG URA 6 .1 5

C aracteru l ! determ ină afişarea caracterelor de la dreapta la stânga.

Page 143: Baze de date pentru incepatori (manuale facultate)

CAPITOLUL 6 MENŢINEREA INTEGRITĂŢII PRIN REGULI DE VALIDARE 137

Când salvaţi tabelul, veţi observa probabil că s-a schimbat proprietatea Input Mask pentru câmpurile ZipCode şi Phone. Masca de intrare pentru câmpul ZipCode s-a transformat în 00000\-9999;;_, iar pentru Phone s-a transformat în l\(999”) „000\-0000;;_. Caracterul \ face să fie afişate caracterele de după el ca şi caractere literale. In majoritatea situaţiilor, nu trebuie să vă faceţi probleme privind modul de stocare a acestei informaţii în Access.

Să ne o p rim câteva m om ente p e n tru a efectua o testare, reven ind la vederea Datasheet. In tra ţ i în câm pu l ZipCode ş i scrie ţi 19301, apoi trece ţi în câm pu l Phone. F igu ra 6 .16 p rez in tă prob lem a care apare.

S o lu ţia aceste i prob lem e este foa rte s im p lă . C a ra c te ru l ! func ţionează oarecum a ltfe l decât p e n tru proprie ta tea Form at. Când la în ce p u tu l p rop rie ­tă ţ i i F o rm a t apare ca rac te ru l !, datele s u n t a lin ia te la stânga. De aceea, dacă m o d ifica ţi proprie ta tea Form at în !@@@@@-@@@@, datele vo r f i afişate corespunzător când n u este in tro d u să partea p lus 4 a co d u lu i poşta l (vedeţi fig u ra 6.17).

FIG URA 6 .1 6

Este im p o rtan t să vă asiguraţi că a ţi corelat proprie tă ţile Form at şi In p u t M ask.

Fie ٤« ٧٠* In ؛٠٢؛ Farm؛، g*،ord، X،o؛، ،؛yxtow .،،؛؛

M 6SH

Aildm*A? | Clly S M!»Miil <llelnili.il 1 L.iaNdine Email

ft؛،»(-

yrnr* Hjrţrtt

Page 144: Baze de date pentru incepatori (manuale facultate)

138 PARTEA A III-A - ÎNTREŢINEREA BAZEI DE DATE

....................... ..۶ B & t\i؛ Q

i"T i' * " n 1/ " 1 g g

.....■.................................... :". >. '■ '■-. l i

FIG URA 6 .1 7

Caracteru l ! d inproprie tateaForm atdeterm inăafişareacaracterelora lin ia te lastânga.

în continuare , încercaţi să in troduce ţi u n n u m ă r de telefon incom plet. F igura 6 .18 p rez in tă excepţia generată de Access. V i se va so lic ita să in tro d u c e ţi datele conform spec ifica ţiilo r m ă ş tii de in tra re .

pecfied fer tb î fteld؛ ؛ . J;000-\0000؛" (W!\)’

| «bn t appropriate for ،he inpu، mask.؟The value you eriered t ١٠

*■ ■ |o o l a

FIGURA 6 .1 8

Access vă solic ită să in troduce ţi datele conform specifica ţiilo r m ăştii de in tra re.

Proprietatea Default ValueProprie ta tea D e fau lt V alue (valoarea im p lic ită ) face ceea ce in d ică şi num ele ei - specifică valoarea care este in tro d u să au tom a t în tr -u n câm p la crearea un e i no i în reg is tră ri. P entru câm pu l ClientType este specificată valoarea im p lic ită I (de la Ind iv idua l = persoană fizică), pen tru că s-a ajuns la concluzia că m a jo rita te a c lie n ţilo r su n t persoane fizice. F igura 6.19 prez in tă setarea p ro p rie tă ţii D e fau lt Value p e n tru câm pu l ClientType. Acesta este s in g u ru l p e n tru care este setată o valoare im p lic ită .

Page 145: Baze de date pentru incepatori (manuale facultate)

FIG URA 6 .1 9

Proprietatea D efault Value vă perm ite să specificaţi o valoare in iţ ia lă a câm pulu i când este creată o nouă înregistrare.

CAPITOLUL 8 MENŢINEREA INTEGRITĂŢII PRIN REGULI DE VALIDARE 139

P ro p rie ta te a V a lid a tio n RuleS ub iec tu l d iscu ţie i se înd reap tă acum spre u n a d in tre cele m ai im po rtan te fu n c ţ ii d in Access şi d in orice produs pe n tru baze de date în general - capacita tea de a specifica re gu li de validare. Regulile po t f i fo rm u la te la nive l de câm p sau de înregistrare. P rim u l t ip de regu li pe care î l vom prezenta este cel la n ive l de câmp. Dacă vă a m in tiţ i, câm pu l ClientType poate avea n u m a i două va lo ri: I sau B. în acest m om ent, n u există o cale de a im pune această regulă. Deşi este specificată valoarea im p lic ită I, n im ic n u vă poate o p r i să in tro d u c e ţi orice va loare în acest câm p. Dacă vă dep lasa ţi la prop rie ta tea V a lid a tio n Rule, ve ţi vedea u n m ic bu to n . Acesta lansează o ap lica ţie de co n s tru ire a exp res iilo r (Expression Bu.ild.er), pe care o p u te ţi u tiliz a p e n tru a fo rm u la regula. A lte rn a tiva a r f i să in tro d u c e ţi m a n u a l regula, ev itând a p lica ţia Expression B u ilde r.

Expresiile pe care le poate utiliza Expression Builder pot fi complexe. Acest capitol tratează numai regulile simple. Dacă nu sunteţi familiarizat cu logica booleană, este recomandabil să vă opriţi puţin pentru a studia documentaţia Help pentru reguli de validare.

F igu ra 6.20 prez in tă setarea p ro p rie tă ţii V a lid a tio n Rule p e n tru câm pu l ClientType. Logica este s im p lă - valoarea acestu ia poate f i B sau I.

و رءاسم ءيأما يمبس ومب ؛ *،<؛؛ ي

'_ بءلمئ-م.;؛' ء.عمي ءم-; ممب,سم.-

Prinaryء Field«ا Clef، 1س 1 ممء،هءهإءب Field (٠ sperfy tj-pe 0، .س: E-&J9T,؛،« 1-1ه-(مإه

Name MJdle Initial LşsţNeme

a،ionNsme»؛Ofgar .،............Address

سة . » $

،ةمحء

L ® لء ٤ Cl-sntTflje

_ مءامسمءس ؛ ذ س

:سءأاء ب 'الوسمه_ سا؛،م

_ Address؛

ء ءءهءأ

؛ n*>؛ • ءا (صل ء ءه ء • ء.صا ،سم؛ م معء

Y«(C،jpkâteiO)؛،

I إ ا00ءص General Field Sue

Input Hs،؛Cspbar>Defauk Value

•f'akdatwnTe«. p.iquked Alow Zer o Length Indexed Unicode Compression

I Peaÿi vïe*■. Fà-ÿ^ntchpÿi«. Fl-ÊHefr.

Page 146: Baze de date pentru incepatori (manuale facultate)

DATEPARTEA A III-A - ÎNTREŢINEREA BAZEI140

:FfeWWame:AuWNunte

C«CfCbonpimary Key field for Clent Tabte

Charact« F 1؛«ld ،۵ spectfy ،١١« of den؛،FţsţNam؛.......

pdr.iduol

Middle InitialLast Name Organijatioo Narre

1 Address ، » Addr؛

City■

a،tonNarw؛:C^.T

ZţiCods Phcne Nxnber

E-maiAdd؛،؛

ZipCode

i<؛» ; t؛FWdPiOf

lookup ؛ Genefsl fteWSue

Forma؛،JnpuţMsîk Caption Dsfault V،،jî Ya،da،»n Rufe Va،dşSoo Tex،

: RsqiirBd Ak>w Zero Length lnde،ed

C،ent Tvpe

.٢٢١٠ x cn:ti&¡ « the •؛،* ٢١« i،،«؛v *؛٠،؛؛ ،١٠؟: (:٠ .

(Dupfcat« OK) ؛

r ‘s S r i view. F6» Switch panes. FI - H»¿.

FIG URA 6 .2 0

Proprietatea V alida tion Rule pentru câm pul ClientType solic ită ca valoarea in trodusă să fie B sau I.

Să ne o p rim p u ţ in p e n tru a testa regula, reven ind în vizua lizarea Datasheet, în ce rca ţi să in tro d u c e ţi o valoare d ife rită de B sau I şi să p ă ră s iţi câm pul. F igu ra 6.21 prez in tă excepţia generată de Access.

et for 'Client.GentType'. Enter a value that؛ 'Or = T ؛"٢“' le

FIG URA 6.21

Când este încălcată o regulă de validare, Access generează o excepţie şi apare o casetă de dialog care inform ează u tiliza to ru l despre acest lu c ru .

Este p u ţ in spus că acest mesaj n u este prie tenos fa ţă de u tiliza to r. P entru a rezolva această problem ă, să reven im la proprie ta tea V a lid a tio n Text (text de validare). T abe lu l 6.4 prez in tă regu lile la nive l p e n tru fiecare câm p care trebu ie să fie setat.

Page 147: Baze de date pentru incepatori (manuale facultate)

Tabelul 6 .4 Setările proprietăţii V alidation Rule p e n tru câm purile tabelu lu i Client

CAPITOLUL 6 MENŢINEREA INTEGRITĂŢII PRIN REGULI DE VALIDARE 141

C âm pul Valoarea

ClientType =”B ” or „ I”

Addressl Is n o t N u ll

City Is n o t N u ll

State Is n o t N u ll

ZipCode Is n o t N u ll

Phone Is n o t N u ll

P ro p rie ta te a V a lid a tio n Tex tP roprie ta tea V a lid a tio n Text (text de validare) este foarte s im plă . Trebu ie doar să prec iza ţi te x tu l care va i i a fişa t când este încă lca tă o regu lă de va lida re (vedeţi fig u ra 6.22).

A cum re ve n iţi la vederea D atasheet ş i in tro d u ce ţi o valoare neva lidă în câm pul ClientType. Figura 6.23 prezintă m esaju l de eroare direct care apare.

FIGURA 6 .2 2

Proprietatea V alida tion Text precizează te x tu l care trebuie să fie afişat când un u tiliza to r încalcă o regulă de validare.

oda،“ ،jefe؛؛؛ irnert Iosii

Oeioirtion»I Cwta Typ Autof*jrr،er؛ Te-A

Field HainePiîrnarv Key Field for Citent Table1 Character Field to specify typ* i f ckent. I-IridiyidualFrstNsmeMdAMiajLax NameOrganijatnn NaineAddress 1Addiess2

CkentlOOentType؛

í¿arrie؛Fts

lastNaoeCrgarcationfian؛

i؛؛A،MreMfţsfZ

،plodePhon». Mxnbcr <؛Pti،T

E-mal Addess

FWdPrcperttes

b ؛ enerel،؛ field Size

،،،srClint Type

OefaJ-VjIue ،«،'dation Rule

Vatdation T»t؛ RequiredAlow Zerc length IndexedUnicode ComprMston

; 9on rufe. Pres، PI for help؛؛d،؛bv the v3 »؛«*؛ctr؛،ysu snThe C،ent Type must be I

(Cup،: ate* Or) ،٢؛

______________

----*--------------------------------

I Peagnyiew. F6— Switch pym. FI —Beţi.

Page 148: Baze de date pentru incepatori (manuale facultate)

DATEPARTEA A III-A - ÎN TREŢINEREA BAZEI142

FIGURA 6.2 3

După ce specificaţi te x tu l de validare,Access î l va folosi în caseta de validare care informează despre încălcarea une i regu li de validare.

îna in te de a con tinua , să dăm u n a lt exem plu de regu lă de va lidare / tex t de va lidare . F igu ra 6.24 prez in tă m esa ju l de eroare pe care î l va vedea u tiliz a to ru l dacă lasă câm pul A d d re s s l necom pletat. D in nou, m esaju l afişat n u este deloc prietenos.

FIGURA 6.2 4

Acesta este m esaju l de eroare im p lic it generat de Access când lăsaţi necom pletat u n câmp a căru i valoare este necesară.

F igu ra 6.25 p rez in tă regu la de va lidare ş te x tu l de va lidare p e n tru câm pu l A d d re ss l. Regula precizează că n u este acceptat ş iru l v id , ia r te x tu l oferă u til iz a to ru lu i u n mesaj prie tenos. F igura 6.26 prez in tă caseta de dia log care apare când u tiliz a to ru l lasă necom ple ta t câm pu l Address 1 şi încearcă să părăsească în reg is tra rea curentă. Tabe lu l 6.5 conţine setările p ro p rie tă ţii V a lid a tio n T ext p e n tru fiecare d in tre câm purile care necesită acest lu c ru .

Tabelul 6 .5 Setările proprietăţii V alidation Text p en tru tabelu l Client

C âm pul Valoarea

C lientType The C lie n tT yp e m u s t be B or I.

Address 1 You m u s t specify an address.

C ity You m u s t specify a city.

State You m u s t specify a state.

ZipCode You m u s t specify a ZIP Code.

Phone You m u s t specify a phone num ber,

(Valoarea proprietăţii Validation Text, adică mesajul de eroare pe care îl va vedea utilizatorul la încălcarea unei reguli de validare, nu trebuie neapărat să fie în limba engleză; de altfel, un text în limba română ar fi mai prietenos pentru utilizatorul român - n. tr.)

١*».to Tr j ،١٠ ؛٠ d»؛his f؛ ؛w ty fa؛equ،ed pfOc١٠ ؛؛،، b«<suse

D J>؛؛b

*J

.f \ The Client Type must be B or I ’

I ؛

Page 149: Baze de date pentru incepatori (manuale facultate)

FIG URA 6.25

Regula de validare pen tru câm pul A d d re s s l precizează că acest câmp nu poate f i lăsat necompletat.

CAPITOLUL 6 MENŢINEREA INTEGRITĂŢII PRIN REGULI DE VALIDARE 143

You must specify an adifrsss

O O ti* I

FIGURA 6.2 6

Proprietatea V alida tion Text oferă u n text prietenos faţă de utiliza to r.

Implementarea validării la nivel de înregistrareCând înce rca ţi să sa lva ţi o în reg is tra re , Access ve rifică m a i în tâ i dacă s u n t sa tis făcu te regu lile de va lidare . A ţi văzu t acest lu c ru şi în exemplele an te ­rioare. Dacă s u n t sa tis făcu te regu lile de va lidare la n ive l de câm p, Access ve rifică îndep lin ire a re g u lilo r la n ive l de înreg istrare , uneo ri denum ite regu li de va lida re la n ive l de tabel. Regulile la n ive l de tabe l s u n t u tile când trebu ie să com pa ra ţi m a i m u lte câ m p u ri p e n tru a de te rm ina dacă s u n t în d e p lin ite sau n u a n u m ite co n d iţii. Logica re g u lilo r de va lida re la n ive l de tabe l este adesea m u lt m a i com plexă, deoarece trebu ie verifica te m a i m u lte câm puri. Acest concept va f i m a i bine i lu s tra t p r in in te rm e d iu l u n u i exem plu.

Proprietăţi la nivel de câmpDacă vă a m in tiţ i, trebu ie specificate num ele şi prenum ele c lie n tu lu i care este persoană fizică, respectiv num ele firm e i. F igu ra 6.27 prez in tă , la care aveţi acces dacă apăsaţi b u to n u l Properties, de pe ba ra de in s tru m e n te M a in Access. Caseta de dia log Table Properties vă perm ite să spec ifica ţi

t«tte ٣٠•■، yFifOfof؛• t-<l>urr ،،8 ftjor،«. l UxKnÎu ؛.w؛، pe4y !yp* -i؛ lo؛f«ù ،'،<،'» <'؛■ I

ClieritIDOwnlTypaFi*Nime

t-Wdilmba، ' 'r\.T *Otg،ncal،inNamiAddressi

Address؛

،>9^c،،jon Nsme

»؛< » ؛،.٢٠٢.

،؛٠٢٠ZpCod،

fticne MjT.ber E-naJ Addes؛

Stat*ZipCodePnoneEtna،

j lookup ٠

You must specify an address۴٠٩ gir edAlow Zero Leoglhlnd،،edUmcode Corrt>r،iswn

Page 150: Baze de date pentru incepatori (manuale facultate)

DATEPARTEA A III-A - ÎNTR EŢIN ER EA BAZEI144

m a i m u lte p ro p rie tă ţi la n ive l de tabel, in c lu s iv p ro p rie tă ţi în ru d ite cu v a li­darea. D upă cum vedeţi, u n tabel, ca şi u n câmp, are o prop rie ta te V a lid a ­tio n Rule şi u n a V a lid a tio n Text.

FIGURA 6.27

Caseta de dialog Table Properties vă perm ite să specificaţi proprie tă ţile V alida tion Rule şi V alida tion Text pe n tru u n tabel.

Proprietatea Validation Rule

C o n tin u â n d exem plificarea, regu la de va lida re u rm ă toa re vă va as igu ra că p e n tru orice c lie n t s u n t precizate num ele ş i prenum ele , respectiv num ele firm e i, după caz: Is Not Nuli And [LastName] Is Not Nuli) Or [FirstName]؛([OrganizationName] Is Not Nuli)M ergeţi m a i departe şi specifica ţi va lo rile p e n tru Addressl, City, State, ZipCode şi Phone, lăsând necom pletate câm purile FirstName, LastName şi OrganizationName. F igu ra 6.28 prez in tă caseta de dia log cu m esa ju l de eroare pe care î l va vedea u tiliz a to ru l. V e ţi u tiliz a prop rie ta tea V a lid a tio n Text p e n tru a rezolva această problem ă.

FIGURA 6 .2 8

D upă îndeplin irea tu tu ro r regu lilo r la nivel de câmp, Access va testa regula la nive l de rând.

Proprietatea Validation TextAşa cum a ţi vă zu t deja, proprie ta tea V a lid a tio n Text vă p rm ite să crea ţi mesaje prietenoase fa ţă de u tiliza to r. în acest caz co n fig u ra ţi proprie ta tea V a lid a tio n T ext astfel: trebu ie specificate fie num ele şi prenum ele c lie n tu lu i (dacă este persoană fiz ică), fie num ele firm e i. M ergeţi m a i departe şi repe ta ţi te s tu l an te rio r. F igu ra 6.29 prez in tă m esa ju l prie tenos fa ţă de u tiliz a to r care apare (nu u ita ţ i, m esa ju l depinde de te x tu l in tro d u s , care n u trebu ie neapă ra t să fie în l im b a engleză - n .tr.).

FirstName] Is Not Null Arid [lastNarne] Is Not Ndl) O'؛] ed by the validation rule؛؛Or* a mofo values are f»ohib [ { .OrgarwationNifneJ Is Not Null)' set for 'Ctent'. Enter a value that the expression for this field can accept

Generäl J

Description.......................Valdation Rule.................. ([FirstName] Is Not Null And [LastNan

F ilter...................... ..Order B y . . ...................

Either the First and Last Name Or Ore

Subdatasheet Marne. . . .

link Master Reids..........

[Auto]

Subdatasheet Height. . . .0"Subdatasheet Expanded. No

Page 151: Baze de date pentru incepatori (manuale facultate)

CAPITOLUL 6 MENŢINEREA INTEGRITĂŢII PRIN REGULI DE VALIDARE 145

FIG URA 6 .2 9

Either the First and Last Name Or Organization Name must be specifted

lL-..g.Z:l Help |

Proprietatea Valida- tio n Text pe n tru u ntabel oferă un mesaj ____prietenos fa ţă de utiliza to r.

D upă ce in tro d u c e ţi num ele şi prenum ele sau num ele firm e i, ia r celelalte re g u li s u n t satis făcu te , ve ţi pu tea să trece ţi la o nouă în reg is tra re , salvând în reg is tra rea curen tă .

Să n u credeţi că o bază de date va îm p ied ica în to tdeauna u tiliz a to ru l să in tro d u c ă date nevalide. P entru a m enţine in teg rita tea bazei de date, fie a p lica ţia p e n tru baze de date, fie ch ia r baza de date trebu ie să fie dotate cu log ica necesară p e n tru va lidarea datelor. Dacă in tro d u ce ţi logica de va lidare în baza de date, v e ţi f i în to tdea una a s igu ra t p r iv in d in te g rita te a datelor, deoarece, la u rm a u rm e i, toate ap lica ţiile trebu ie să utilizeze baza de date p e n tru a salva datele. Aşa cum a ţi văzut, există două n iv e lu r i de va lidare : la n ive l de câm p şi la n ive l de în reg is tra re (sau rând). V a lida rea la n ive l de în reg is tra re m a i este denum ită va lidare la n ive l de tabel. Când sa lvaţi datele, baza de date va ve rifica m a i în tâ i dacă s u n t îndep lin ite regu lile la n ive l de câm p. D acă ele s u n t îndep lin ite , vo r f i verifica te apoi regu lile la n ive l de în reg is tra re . Dacă ş i acestea s u n t îndep lin ite , s u n te ţi la u n pas de a pu tea salva datele. D upă cum ve ţi vedea în c a p ito lu l u rm ă to r, încă n u a ţi scăpat de problem e. C oncep tu l de in te g rita te a da te lo r se extinde la re la ţiile d in tre e n tită ţi. Acest lu c ru este n u m it in tegritate referenţia lă ş i ne vom ocupa de el

Rezumat

în c a p ito lu l u rm ă to r.

Page 152: Baze de date pentru incepatori (manuale facultate)

BAZELE INTEGRITĂŢII REFERENŢIALEîn acest capito l:

Ce este in teg rita tea re ferenţia lă?Im p o rta n ţa m e n ţin e rii in te g r ită ţii referenţa le

M Funcţiona rea in te g r ită ţii re ferenţia le Rezum at

Page 153: Baze de date pentru incepatori (manuale facultate)

C apito lu l ante rio r v-a prezentat conceptul de validare a datelor. Recapitulând, va lida rea date lor, fie la n ive l de câm p sau de în reg is tra re , are ca scop să se asigure că în baza de date s u n t salvate n u m a i date valide. V a lida rea date lor se ocupă de ta b e lu l în care s u n t de fin ite regulile . Cu alte cuv in te , regu lile de va lida re p e n tru ta b e lu l C lien t au ca obiect im p a c tu l n o ilo r date asupra acestu i tabel. Im p a c tu l n o ilo r date despre c lie n ţi asupra ta b e lu lu i C ontact depăşeşte scopu l re g u lilo r de va lidare . în t im p ce regu lile de va lida re se ocupă de problem ele d in in te r io ru l u n u i tabel, regulile de in teg rita te referen- ţ ia lă (referenţial integrity - RI) se ocupă de problem ele d in tre tabele. De exem plu, este perm isă ştergerea une i anum ite în reg is tră ri? Dacă da, ce se va în tâ m p la cu datele d in tabele în rud ite? Este perm isă crearea de date în tr -u n tabe l copil? N u se poate răspunde la aceste în tre b ă ri în con tex tu l u n u i s ingu r tabel. Problemele pe care le rid ică aceste în trebă ri şi răspunsurile lo r su n t d iscuta te în acest capitol. Anexa B conţine o lis tă deta lia tă a regu lilo r de in te g rita te re fe ren ţia lă p e n tru baza de date Tim e E n t iy and B illing .

Ce este integritatea referenţială?In tegrita tea re fe ren ţia lă (referenţial integrity - RI) este u n sistem care asigură m enţine rea v a lid ită ţ ii re la ţiilo r d in tre tabele. G ând iţi-vă la exem plu l clasic al com enzilo r ş i a l d e ta liilo r despre acestea. Folosind ceea ce a ţi în vă ţa t până acum , ş t iţ i deja că aceasta este o re la ţie u n u la m u lţ i ş i că această re la ţie este fa c ilita tă de pre luarea che ii prim are d in comenzi în d e ta lii despre comenzi. Concluzia logică a acestu i lu c ru este că, dacă n u există o comandă, n u poate exis ta u n de ta liu despre aceasta. Se pune în trebarea „C um p o t f i im puse regu lile d in tre tabele?” R ăspunsu l constă în crearea a ceea ce se num eşte restricţii pentru integritatea referenţială (RI constraints). Deşi bazele de date ca cele d in Access au capacita tea de a supo rta in teg rita tea re fe ren­ţia lă , tre b u ie să ech ipa ţi baza de date cu ş tiin ţa de a u tiliz a această capaci­tate.

Importanţa menţinerii integrităţii referenţialeM enţinerea in te g r ită ţ ii re ferenţia le este im po rtan tă , d in aceleaşi m otive pe care le -am prezen ta t în ca p ito lu l an te rio r, la va lidarea date lor. C apacitatea u n e i baze de date de a oferi in fo rm a ţii corecte este d irec t legată de ca lita tea date lor. C apacita tea de a oferi in fo rm a ţii corecte este d irec t legată şi de calita tea re la ţiilo r d in tre tabele. Im portan ţa m en ţine rii in te g rită ţii referenţiale va f i foarte c la ră în ca p ito lu l u rm ă to r, când vom prezenta l im b a ju l SQL (S truc tu red Q uery Language). Până a tunc i, secţiunea u rm ă toa re va servi ca scu rtă prezentare p e n tru ce urm ează.

148 PARTEA A III-A - ÎNTREŢINEREA BAZEI DE DATE

Page 154: Baze de date pentru incepatori (manuale facultate)

149 A P iT O L U L ? BAZELE INTEGRITĂŢII REFERENŢIALE؛؛

Să considerăm exem p lu l ipo te tic s im p lu a l c lie n ţilo r ş i t ip u r ilo r acestora. U n a n u m it t ip de c lie n t poate caracteriza u n u l sau m a i c lien ţi. De aceea, cheia p rim a ră a t ip u lu i de c lie n t este p re lua tă d in ta b e lu l cu date despre c lien ţi. Este vorba despre o re la ţie s im p lă de t ip u n u la m u lţ i ş i a r tre b u i ca până acum să f i ţ i fa m ilia r iz a t cu acest concept. C o n tin u â n d exem p lu l ipo te tic , să presupunem că d o r iţ i să crea ţi u n extras cu date grupate după t ip u l de c lien t. C u a lte cuv in te , e x trasu l va conţine descrierea t ip u lu i de c lie n t ş i datele selectate despre acesta. P entru a realiza acest extras, aveţi nevoie de in fo rm a ţii ş i d in tabe lu l despre c lie n ţi ş i d in ta b e lu l cu date despre t ip u l c lie n ţilo r. Aşa cum v e ţi vedea în c a p ito lu l u rm ă to r, care tra tează l im b a ju l SQL, p e n tru a realiza acest lu c ru trebu ie să a p lica ţi o tehn ică d e n u m ită rea lizarea u n e i le gă tu ri sau a une i u n iu n i (/oin) în tre cele două tabele. în treba rea pe care o ve ţi pune este „C um p o t rea liza o legă tu ră în tre două tabele?” . R ăspunsu l este reprezenta t de re la ţia d in tre tabele. N u u ita ţ i că tabelele co n ţin o in fo rm a ţie com ună: id e n tific a to ru l t ip u lu i de clien t. Aceasta este legă tu ra ce ru tă p e n tru u n iune , ia r u n iu n e a vă va perm ite să com b ina ţi datele d in tabele diferite . Ce s-a r în tâ m p la dacă a r f i perm isă ruperea le g ă tu rii? Să lu ă m în considerare urm ătoare le în trebă ri:

M Este p o s ib il să a tr ib u iţ i u n u i c lie n t u n t ip inex is ten t?11 Este p o s ib il să ştergeţi u n t ip de c lie n t care a fos t a tr ib u it cel p u ţin

u n u i c lien t?

Aceste în tre b ă ri au u n elem ent com un: o legă tu ră rup tă . C onsecinţa ru p e r ii le g ă tu r ii este pierderea datelor. M ai precis, orice c lie n t că ru ia i se a trib u ie u n t ip in e x is te n t va f i om is d in ex trasu l de date. Să ne gând im ce-ar f i dacă v i s -a r perm ite să ştergeţi u n t ip de c lie n t care a fost a tr ib u it deja cel p u ţin u n u i c lien t. Dacă ştergerile n u s u n t res tric ţiona te , r is c a ţi să com prom ite ţi in te g rita te a re la ţie i. R estric ţiile p riv in d in teg rita tea re fe ren ţia lă vă apără exact de acest t ip de s itu a ţii. Cel m ai b u n in d ica to r al in te g r ită ţ ii bazei de date este ca lita tea ş i acurate ţea in fo rm a ţiilo r pe care le produce. Conceptele prezentate în această secţiune vo r deveni m a i clare în ca p ito lu l u rm ă to r, când ve ţi s tu d ia l im b a ju l SQL.

Funcţionarea integrităţii referenţialeE x is tă p a tru t ip u r i de re s tr ic ţ ii p riv in d in teg rita tea re ferenţia lă . Acestea sunt: ştergerile restric ţionate , in troducerea res tric ţiona tă a datelor, ştergerile în cascadă şi actua liză rile în cascadă. Numele fiecă ru i t ip de re s tr ic ţii descrie cu acura te ţe fu n c ţia respectivă. Secţiunea urm ătoare prez in tă aceste p a tru t ip u r i de re s tr ic ţ ii p r iv in d in teg rita tea re ferenţia lă , precum şi m o d u l în care p o t f i aplicate. Fiecare t ip va f i exem p lifica t în co n te x tu l tabe le lo r C lie n t şi C ontact d in baza de date T im e E n try and B illing .

Page 155: Baze de date pentru incepatori (manuale facultate)

150 PARTEA A III-A - ÎNTREŢINEREA BAZEI DE DATE

Stabilirea regulilor de integritate referenţialăîn a in te de a vedea cum funcţionează re s tr ic ţiile , baza de date tre b u ie să fie ech ipa tă cu capacita tea de a supo rta in teg rita tea re ferenţia lă . în ca p ito lu l 5 a ţi creat re la ţ ii în tre tabelele d in baza de date T im e E n try and B illing . D efin irea re la ţ iilo r d in tre aceste tabele este p r im u l pas p e n tru a da bazei de date capacita tea de a im p u n e in teg rita tea re ferenţia lă . Apare caseta de d ia ­log E d it R ela tionsh ips, care vă perm ite să specifica ţi m o d u l în care vo r f i im puse re s tr ic ţiile p r iv in d in teg rita tea re fe ren ţia lă (vedeţi f ig u ra 7.1).

hpi<؛atior&،؛،£ ٤« »¿'١٠ ؛

gn view؛،in Oe ،؛tŞj Oeatf tat at،» by i&fig wim d، ٠)Crea ؛؟؛[I

8]'؛ O،،،، ،٠٥٠ by •،».،■،؛S3 Case

13 Oert P ChertCas«

0 Co»*«3 Cout

!~H Department 3 E'fpbyee؛

H3 ErtctoyeeCase ErrployeeCla 13؛؛

33 Invoice!E3 Judţ*

•ntryOita»؛£E3 Trr

CfcnUDCtenrType Fir «Ni

elr>'.jal؛l-،ddlastNsmeOrganeationNime

ContadlD

F»itName

Name؛ Las Title

Address؛

:jefy;؟«T،t،e)Q«j،»y: Belated Table * cortxi« ZoCede___؛ [

Phone»e^yy

CanceiI Oi-rtlD

C'wte ftew.. j- Peinwitnl lr،«gr،y ،؛P' Wot

٣ C«،ade Update P؛.U*d ۴١؛؛*؛Dele،، Relates kecvds «*؛Case ٢

Coe-To-Many ; «؛i>0 Tjţ؛ion؛a؛،R¡KTV7

*Ready

FIGURA 7.1

Caseta de dialog E d it Relation- ships vă perm ite să specificaţi m odul în care sun t im puse res tric ţiile p riv ind in tegrita tea referenţială.

Dacă d o r iţ i să im p u n e ţi in teg rita tea re ferenţia lă , va tre b u i să a c tiva ţi (să b ifa ţi) op ţiune a Enforce R eferenţia l In teg rity . F igu ra 7.1 prez in tă caseta de va lida re p r in care p u te ţi activa această opţiune . D upă activarea ei, m ai p u te ţi activa, op ţiona l, două t ip u r i de re s tr ic ţii. Acestea s u n t ac tua liză rile în cascadă ş i ştergerile în cascadă. Ce im p lica ţie va avea acest lu c ru asupra ce lorla lte două t ip u r i de re s tr ic ţii? S in g u ru l t ip care n u este op ţiona l este cel a l ş te rg e rilo r re s tr ic ţio n a te . Nu va avea sens vreoda tă să p e rm ite ţi e x is te n ţa u n e i în re g is tră r i c o p il care re fe ră la o în re g is tra re p ă r in te inex is ten tă .

Ş tergerile re s tric ţio n a te po t f i considerate opusu l ş te rge rilo r în cascadă, în re g is tră rile p ă rin te se po t afla în u n a sau două s itu a ţii. M ai în tâ i, dacă înce rca ţi să ştergeţi o în reg is tra re părin te , a tu n c i va tre b u i să ştergeţi şi în re g is tră rile cop il corespunzătoare. A ltfe l, ve ţi f i în s itu a ţia de a avea în re g is tră r i cop il care referă în re g is tră ri pă rin te inexis tente . în a l doilea rând , dacă înce rca ţi să ştergeţi o în reg is tra re pă rin te care are în re g is tră ri

Page 156: Baze de date pentru incepatori (manuale facultate)

CAPITOLUL 7 BAZELE INTEGRITĂŢII REFERENŢIALE 151

copil, n u v i se va perm ite acest lu c ru . Dacă d o r iţ i să ştergeţi în reg is tra rea pă rin te , va tre b u i să ştergeţi m a i în tâ i în reg is tră rile copil. Aşa cum p u te ţi vedea, ştergerile res tric ţiona te ş i ştergerile în cascadă se exclud reciproc.

Ştergerile restricţionateAcest t ip de re s tr ic ţ ii înseam nă că o în reg is tra re pă rin te n u poate f i ştearsă dacă există u n a sau m a i m u lte în reg is tră ri copil. P entru a supo rta ştergerile res tric ţiona te , caseta de va lidare Cascade Delete Related Records d in caseta de dia log E d it R ela tionsh ips trebu ie să fie n u fie b ifa tă . F igu ra 7.2 prez in tă în re g is tră rile d in tabelele C lien t şi C ontact care s u n t u tiliza te p e n tru a de­m o n s tra func ţiona re a in te g r ită ţii referenţia le . F igura 7.3 p rez in tă capaci­tatea p ro g ra m u lu i Access de a prezenta (afişa) s im u lta n în reg istrarea părin te ş i în re g is tră rile copil.

FIG URA 7 .2

Tabelele Client şl Contact în vizualizarea Datasheet.

Dacă vă a m in tiţ i, în vizua liza rea D atasheet p u te ţi efectua orice operaţie cu date. P entru a şterge o în reg istrare , trebu ie doar să selectaţi în tre g u l rând , executând clic pe m arca ju l în reg is tră rii d in extrem ita tea stângă a v izua liză rii Datasheet. în tru c â t s u n t activate ştergerile res tric ţiona te , când înce rca ţi să ştergeţi o în reg is tra re d in ta b e lu l C lien t în ru d ită cu u n a d in ta b e lu l C ontact, Access generează o casetă de dia log cu u n mesaj de eroare, pre ­zenta tă în f ig u ra 7.4.

able■ ؛ a CkrntS؛®

A.l.liew 1Ac« Tomitu Compiny 123 Main Sliftfl N'A N/A N/A(AuloNumb« smsmm&à,¿»•;،1 ’’ ~ - ،؛

: ٠، 1«*I ►* I « ٢ « ،ori H.L-'-.lI

E؛i l l ü S؛ŞmsmâiC»nll>cHD I ClienlID | HmH.una ¡ MiiUllalnlli.il | LaslN.une \ Tille Plmne

,y،',"؛}،AutoNumbet)

I ٢ 1« I • 11 «»>«!؛:

؛'•iS'.-؛•■"■؛ ؛ ، ، . f '؛ ؛ i'١

i i i!®. . . . . . . . .

٠! »-■i .

Page 157: Baze de date pentru incepatori (manuale facultate)

152 PARTEA A lll-A - ÎNTREŢINEREA BAZEI DE DATE

Racon* t<í< l l T > I>» l»*l cf

FIGURA 7.3Access are capacitatea de a afişa sim u ltan înregistrările părinte şi copil.

Dacă executaţi clic pe +/-, puteţi expanda/contracta afişarea datelor copil.

٥٢٠ Eocotd* • Ioofe ]،gncbfir ،۶٠ ١٢٠٠، ٠١٠٠

ia.?؛ ® : ٠■ ■'% il ؟1 ٦۶ •'m ١: # S i؛ ،

<V؛j ...‘< * '

= ٢؟ ■ H M M ،1 3 ) *1

r 1.** a t im f lT I LastName ؛ FiistNam» ¡ Middlaliihial ١ •Client Typ ١ ÓrgaiilzatlsnNanis | Addt«ss ١ | Addiess2 | City

TT 58 f3 N/A N/A N/A Ace Tomalo Company 123 Main Street N/A Philadelphia ؛1 ContactlD «MIddlilnItlal | LastNam* | TW ؛ FiretName | I Phon® | Extensión ؛ Email |

m ....... 5 John 1 Smith1*1 (AutoNumbiir/ ..................

٢ (AutoNumbert 1 N/A N/A N/A N/A :n/a

I [i CKara¿ar wiid'to spatfy typ» cf diftnt: 8-8utipgg, l-*ntfcvk*j¿<

FIGURA 7.4Access generează o casetă de dialog cu un mesaj de eroare la încălcarea ştergerilor restricţionate.

Introducerea restricţionată a datelorIn troduce rea re s tr ic ţio n a tă a date lo r înseam nă că o în reg is tra re cop il n u poate re fe ri u n p ă rin te inex is ten t. în reg is tră rile cop il care re feră u n pă rin te in e x is te n t s u n t denum ite şi în re g is tră ri orfane. In troduce rea re s tr ic ţio n a tă a da te lo r este ob liga to rie p e n tru in teg rita tea re ferenţia lă .

F igu ra 7.5 prez in tă caseta de dialog cu m esa ju l de eroare, generat de Access la încă lcarea in tro d u c e r ii res tric ţiona te a datelor.

FIG URA 7.5

Access generează o casetă de dialog cu un mesaj de eroare la încălcarea in troducerii restricţionate a datelor.

■ îi

',tatJe,dtant ٦، raqjred ،٧٠٧ ؛canrot addor diaog*،a rew d twca،jssarelated recrrd ■ .

Page 158: Baze de date pentru incepatori (manuale facultate)

CAPITOLUL 7 BAZELE INTEGRITĂŢII REFERENŢIALE 153

Ştergerile în cascadăŞtergerile în cascadă înseam nă că, dacă este ştearsă o în reg is tra re părin te , a tu n c i toate în re g is tră rile cop il s u n t şterse autom at. F igura 7.6 prez in tă op ţiun ile care trebu ie configurate pen tru a activa acest t ip de re s tr ic ţii p riv ind in teg rita tea re ferenţia lă . Când ve ţi încerca să ştergeţi o în reg is tra re părin te , Access va genera o casetă de dia log care vă in form ează că vor f i şterse şi în re g is tră rile în ru d ite dacă ve ţi co n tin u a opera ţiunea de ştergere (vedeţi fig u ra 7.7).

FIGURA 7.6Bifarea o p ţiu n ii Cascade Delete Related Records duce la activarea ştergerilor în cascadă.

?delete'these records ٥، you want ءهلس ؛٧١٠ ء ؛

iC.âgZl I

FIGURA 7.7îna in te de ştergerea în reg is tră rilo r în rud ite , Access generează o casetă de dialog p en tru ca u tiliza to ru l să confirm e continuarea operaţiei.

Actualizările în cascadăA ctua liză rile în cascadă înseam nă că dacă se m od ifică cheia p rim a ră a une i în re g is tră ri părin te , este actua liza tă şi cheia externă a tu tu ro r în re g is tră rilo r copil. P entru a activa această re s tric ţie p r iv in d in teg rita tea re fe ren ţia lă , trebu ie să b ifa ţ i caseta de va lida re Cascade U pdate Related Records. F igu ra 7.8 p rez in tă setarea necesară p e n tru activarea o p ţiu n ii cu acest num e.

~7—

كال■■■■

قس ق ثء >،>*،•،

1 Cl-fitîDءس ؛ اا

إاماه س ؛?iN.yn؛L3

* ?! ,,' , ذة::■'•■|٥٢. ! ; ; „ . ; بم- لمومضس^ يءومآI م س ء ء ك ا ء

ط أ ء : مأم£مآءءهل

،؛هء

Cancel ; jا:سما[ا

م،ءذبخ ؟ا،فممحإاءخ،ءإءرب 'ءفع،مبعلا،ا؛هل يءءه<محسمامءءءس

ءلءه«;<مء ا أ ي ' ء؛أهءههسجم

-ممء*ب م : 'محهأ ها،؟س؛ءء؛آ

Page 159: Baze de date pentru incepatori (manuale facultate)

154 PARTEA A III-A - ÎNTREŢINEREA BAZEI DE □ATE

٢^١ :ry؛j،*/؟»B،w،d Tab أس'اص؛ء ء|س " " ' ' آلمءم،ءت ك ~3~“~اكس ^ .سل آ ، CfcntID ء

Jonlrt* ■ j —

««ا— — • كتثتثئ؛ث ?؛؛؛ .سمء،« »« إ ءأ حصءسصهسا*ءممحهميممس

1؟ ؟؟1ي؛ هءء،م'ء هءمحهء تهء:ء.ءny؛On»To-M ؛ !MabanshipTytw

FIGURA 7 .8

Prin bifarea casetei de validareCascide Update Related Records veţi activa actualizarea în cascadă a înreg istrărilo r.

Dacă vă a m in tiţ i, în p ro ie c tu l bazei de date TEB s u n t u tiliza te chei prim are surogat. Acestea n u co n ţin in fo rm a ţii sem nifica tive despre în reg is tră rile pe care le in d e n tif ică în m od un ic . Ele se deosebesc de cheile sem nifica tive p r in fa p tu l că po t f i a lcă tu ite d in două sau m ai m u lte câm puri. De exem plu, o cheie p rim a ră poate f i a lcă tu ită d in com b ina ţia în tre num ele de fam ile, prenum e, oraş şi sta t. A ctua liză rile în cascadă rezolvă s itu a ţia în care se m odifică u n a sau m ai m ulte componente ale cheii. Nu u ita ţi, p en tru a suporta in te g rita te a re fe ren ţia lă ş i re la ţiile d in tre tabele, cheia p rim a ră a p ă r in te lu i trebu ie să fie p re lu a tă în toate în reg is tră rile copil, a ltfe l s is tem u l n u va func ţiona . A va n ta ju l che ilo r surogat este, evident, fa p tu l că n u trebu ie să vă faceţi problem e dacă se m odifică cheia prim ară . în consecinţă, n u trebu ie să vă preocupe necesitatea ac tu a liză rilo r în cascadă sau a co m p le x ită ţii sup lim en ta re . Dacă d o r iţ i să re ca p itu la ţi aspectele d iscu ta te despre cele două t ip u r i de chei prim are , o p riţi-vă p u ţin şi re c it iţ i ca p ito lu l 4.

RezumatIn acest cap ito l am prezenta t u n u l d in tre conceptele cele m a i im p o rta n te p riv in d bazele de date - in tegrita tea referenţia lă. Cele p a tru t ip u r i de re s tr ic ţii p riv in d in te g rita te a re fe ren ţia lă d iscu ta te în acest cap ito l su n t: ştergerile re s tric ţiona te , in troduce rea re s tr ic ţio n a tă a date lor, ştergerile în cascadă şi a c tua liză rile în cascadă. In teg rita tea re ferenţia lă , care com pletează regu lile de in te g rita te la n ive l de câm p şi la n ive l de în reg is tra re , rep rez in tă u n in s tru m e n t pe care a r tre b u i să-l u tiliz a ţ i p e n tru a as igu ra ca lita tea date lo r

Page 160: Baze de date pentru incepatori (manuale facultate)

CAPITOLUL 7 BAZELE INTEGRITĂŢII REFERENŢIALE 155

d in tr-o bază de date. Ideea că o ap lica ţie este la fel de b u n ă ca ş i baza de date cu care lucrează a fos t e nun ţa tă de m ai m u lte ori în această carte. C on tin u â n d p u ţin această idee, ca lita tea une i baze de date este aceeaşi cu a da te lo r pe care le stochează şi a in fo rm a ţiilo r pe care le poate oferi. Partea a I lI-a a c ă rţ ii se încheie cu acest capito l. R ecapitu lând, partea I a prezenta t conceptele esenţia le ale bazelor de date. Partea a I l-a v-a g h ida t în procesu l p ro iec tă rii şi c o n s tru ir ii u n e i baze de date. Partea a I lI-a a tra ta t în tre ţine rea bazei de date p r in in te rm e d iu l re g u lilo r de va lidare şi al in te g r ită ţ ii re feren­ţia le . Partea a IV -a are ca scop extragerea in fo rm a ţiilo r d in tr-o bază de date fo los ind l im b a ju l SQL (S truc tu red Q uery Language).

Page 161: Baze de date pentru incepatori (manuale facultate)

PI I V a

' أ-ب ' -أ أ

EXTRAGEREA NFORMAŢIILOR DIN BAZA DE إل

}A TE - I i iNTRODUCERE ج N SQL

Page 162: Baze de date pentru incepatori (manuale facultate)

8

SQL - ELEMENTE , GENERALEîn acest capito l:

Prezentare generală a l im b a ju lu i SQL D ecla ra ţia SelectRezultatele p rim e i f i ltră r i: u tiliza rea clauzei Where

■ Prim a organizare a rezulta te lor: u tiliza rea clauzei Order By H C om binarea m ai m u lto r tabele: u tiliza rea decla ra ţie i Join

Com binarea m ai m u lto r se tu ri de rezultate: u tiliza rea clauzeiUnionR ezum at

Page 163: Baze de date pentru incepatori (manuale facultate)

Scopul p rim e i ju m ă tă ţ i a acestei că rţi a fos t pro iectarea ş i cons tru irea bazei de date. A doua ju m ă ta te , care începe cu acest cap ito l, se concentrează asup ra fu n c ţio n ă rii acesteia. Nu u ita ţ i, valoarea bazei de date se m ăsoară p r in u tilita te a in fo rm a ţiilo r care pot f i extrase d in ea. Acest cap ito l şi cap ito lu l u rm ă to r prez in tă u n nou l im b a j, n u m it SQL (Stru.ctu.red Query Language). SQL este u n lim b a j independen t de bazele de date care perm ite in terogarea da te lo r ş i efectuarea o p e ra ţiilo r n u m ite pe s c u rt CRUD (Create, Update and Delete - creare, actua liza re ş i ştergere). în tru c â t l im b a ju l n u depinde de bazele de date, co n s tru c ţiile sale, pe care le ve ţi învăţa , s u n t ap licab ile p e n tru SQL Server, Oracle, In fo rm ix , Sybase şi DB2, p e n tru a m enţiona n u m a i câteva a p lic a ţii p e n tru baze de date.

160 PARTEA AIV-A - EXTRAGEREA INFORMAŢIILOR DIN BAZA DE DATE

Prezentare generală a limbajului SQLLa fe l cu m p e n tru lim ba je le de program are precum Basic, C, C++, Java şi Pascal exis tă m a i m u lte ve rs iu n i, aşa ş i p e n tru SQL exis tă m ai m u lte v e rs iu n i. U lt im a d in tre ele este n u m ită A N S I-S Q L 1992. ANSI este prescurta rea de la American National Standard Institute. U ltim a vers iune s tanda rd a l im b a ju lu i SQL a fos t cod ifica tă în 1992. U n s tanda rd n u este decât o specificare pen tru m odu l de funcţionare al u n u i obiect. Dacă produsu l p e n tru baze de date cu care lu c ra ţi supo rtă s ta n d a rd u l ANSI, p u te ţi f i s ig u r că vor f i suporta te elementele esenţiale ale lim b a ju lu i. Aceasta n u înseam nă că o a n u m ită bază de date trebu ie să suporte toate p ă rţile s ta n d a rd u lu i, ci m a i degrabă, de exem plu, că dec la ra ţia Select d in Oracle va fu n c ţio n a la fel ca şi în SQL Server.

V e rs iu n ile a n u m ito r produse p e n tru baze de date se ex tind adesea d inco lo de s tandard . De exem plu, lim b a ju l SQL p e n tru server este d e n u m it T-SQL, ia r p e n tru Oracle este de n u m it PL/SQL. Fiecare d in tre acestea este n u m it superset al s ta n d a rd u lu i ANSI. Cu alte cuvin te , ve rs iu n ile T-SQ L şi P L / SQL ale s ta n d a rd u lu i ANSI n u supo rtă n u m a i s ta n d a rd u l ANSI-92, c i şi co n s tru c ţiile l im b a ju lu i specifice bazei de date. V ers iunea de SQL p e n tru Access respectă îndeaproape s ta n d a rd u l ANSI. De fap t, SQL este fo rm a t d in tre i sub lim ba je :

D D L - D ata D e fin itio n Language ( lim b a ju l de defin ire a datelor);

D M L - D ata M an ipu la tio n Language (lim ba ju l de m anipu la re a datelor);D C L - D ata C on tro l Language ( lim b a ju l de con tro l al datelor).

Acest ca p ito l şi cel care urm ează se vo r concentra asup ra s u b lim b a ju lu i DM L, cel pe care, probab il, îl ve ţi fo losi cel m a i des. S u b lim b a ju l D M L este a lc ă tu it d in com enzile Select, Insert, Update şi Delete. Acest cap ito l va s tu d ia n u m a i com anda Select şi clauzele asociate ei, ia r ca p ito lu l u rm ă to r va s tu d ia u tiliza re a avansată a com enzilo r Select, Insert, Update şi Delete. C ât despre DDL, în m ajo rita tea ca zu rilo r ve ţi u tiliz a in s trum en te le grafice p e n tru crearea tabele lor şi coloanelor. Access n u suportă su b lim b a ju l

Page 164: Baze de date pentru incepatori (manuale facultate)

C Ä P IT o l u l 6 SQL - ELEMENTE GENERALE 161

DCL. C u toate acestea sub lim ba je le D D L ş i D C L vo r f i prezentate pe s cu rt în secţiunea urm ătoare .

Lucrul interactiv cu SQL în AccessUnele produse p e n tru baze de date au o fereastră care perm ite u tiliz a to ru lu i să scrie în m od in te ra c tiv com enzi în SQL. Access are şi el o astfe l de fereastră. T o tuş i, p e n tru a o fo losi, trebu ie să depăşiţi câteva obstacole.

în m a jo rita tea cazu rilo r, ve ţi u tiliz a fe reastra SQL în Access p e n tru a crea in te rogă ri SQL Select. Aşa cum ve ţi vedea, există în SQL c o n s tru c ţii care vă p e rm it să d e fin iţ i şi obiecte ale bazei de date. Deşi fe reastra SQL d in Access n u a fos t pro iec ta tă în acest scop, ea sup o rtă fu n c ţiile D ata D e fin itio n Lan- guage d in SQL.

P en tru a avea acces la fe reastra SQL d in Access, pa rcu rge ţi paş ii u rm ă to ri:

1. Lansa ţi p ro g ra m u l Access ş i alegeţi crearea u n e i n o i baze de date.2. în fe reastra p rin c ip a lă a bazei de date, d in lis ta Objects, selectaţi

Q ueries. L is ta O bjects se a flă în p a n o u l d in s tânga a l fe re s tre i p rin c ip a le a bazei de date.

3. în panou l d in dreapta, selectaţi opţiunea p en tru crearea une i in te rogări în vizua liza rea Design.

4. în ch id e ţi caseta de dia log Show Table, care vă perm ite să adăugaţi tabele în in te rogarea Select. N u există tabele, p e n tru că baza de date este goală!

5. D upă ce în ch id e ţi caseta de dia log Show Table, alegeţi d in bara de in s tru m e n te vizualizarea SQL. Aceasta este p rim a opţiune d in stânga, etiche ta tă SQL.

6. D upă ce p a rcu rge ţi acest pas, fereastra de pro iectare a în re g is tră r ii va dispărea, apoi va apărea fereastra Select Q ue iy . P entru a ru la o a n u m ită în reg is tra re , trebu ie să executa ţi clic pe b u to n u l R un Query, de pe bare de in s tru m e n te Query. Acest b u to n este reprezenta t sub fo rm a u n u i sem n de exclam aţie. F igu ra 8.1 prez in tă rezu lta te le pe care a r tre b u i să le ob ţine ţi.

Pe p a rc u rs u l a ce s tu i ca p ito l, v e ţi în tâ ln i se r ii de p a ş i care încep cu deschiderea u n e i ferestre SQL. P entru aceasta ve ţi u rm a paş ii descriş i m a i sus. în m a jo rita te a cazurilo r, veşi înch ide sesiunea de in terogare fă ră a salva in terogarea. Acest lu c ru este va la b il m ai cu seamă p e n tru com enzile d in DDL. V o r f i salvate însă unele d in tre com enzile l im b a ju lu i DM L. în orice caz, dacă d o r iţ i să sa lva ţi vreo com andă SQL, p u te ţi face acest lu c ru executând c lic pe b u to n u l Save de pe b a ra p rin c ip a lă de in s tru m e n te d in Access.

Page 165: Baze de date pentru incepatori (manuale facultate)

162 PARTEA A IV-A - EXTRAGEREA INFORMAŢIILOR DIN BAZA DE DATE

to؛؛، ndo؛؛؛١٠ o،s؛Query Ie »View ¡ni٤٠، ٤٢*، ٠

٢١Design view، Oeate quefy ؛؛.[ j Create ،*lery by using wuerd؛Ş

Objects

& a ji

Fereastra SQLButonul Run QueryFIGURA 8.1

Fereastra SQL vă perm ite să da ţi comenzi SQL în Access în mod in teractiv.

Sublimbajele DDL şi DCL din SQLAccess axe u n su p o rt l im ita t fa ţă de su b lim b a ju l DDL, şi n u supo rtă sub lim - b a ju l DCL. Bazele de date cum s u n t cele d in SQL Server, Oracle şi DB2, p e n tru a n u m i doar câteva, suportă to ta l ambele sub lim ba je .

DCL vă perm ite să o fe riţi a n u m ito r u tiliz a to r i va ria te p e rm is iu n i, ca de exem plu Select, Inse rt, U pdate şi Delete. Ia tă u n exem plu de declaraţie SQL care oferă u tiliz a to ru lu i n u m it Bob perm is iunea de selectare a ta b e lu lu i Custom ers:Grant select

On Customers To Bob

în această s itua ţie , când Bob se conectează la baza de date, i se perm ite să execute u rm ă toa rea declaraţie SQL:Select *

From CustomersDeşi Access su p o rtă ş i oferă u tiliz a to ru lu i in te rfe ţe specializate p e n tru a supo rta o astfe l de schem ă de securita te , m etoda de con tro l şi de fin ire a p e rm is iu n ilo r de securita te n u a fos t im p lem en ta tă p r in su b lim b a ju l DCL. D eta liile p r iv in d im p lem entarea fu n c ţii lo r de securita te în Access depăşesc scopu l acestei cărţi.

Page 166: Baze de date pentru incepatori (manuale facultate)

163 SQL-ELEMENTE GENERALE ؛ C APITO LU L

P entru a ob ţine m ai m u lte in fo rm a ţii despre im p lem entarea s e c u rită ţii în Access, c o n su lta ţi f iş ie ru l Help.

S u b lim b a ju l D D L acţionează asupra tabe le lo r şi coloanelor. P ute ţi adăuga m od ifica sau re n u n ţa la d e fin iţia u n u i tabel. Ca şi în cazu l tabele lor, p u te ţi adăuga, m od ifica sau re n u n ţa ş i la d e fin iţia u n e i coloane. Ca ş i în cazul s u b lim b a ju lu i DCL, bazele de date d in SQL Server, Oracle ş i D B2 oferă su p o rt dep lin p e n tru DDL. Spre deosebire de su b lim b a ju l DCL, Access su p o rtă l im ita t s u b lim b a ju l DDL. R ulând codu l u rm ă to r în fe reastra SQL, ve ţi crea u n tabe l n u m it Custom ers:Create Table CustomersD esigur, când crea ţi tabele, crea ţi în acelaşi t im p ş i coloane. C odul u rm ă to r creează u n tabe l n u m it Custom ers, care conţine două câm puri, custid şi name:Create Table Customers

(custid counter Primary Key,name text(40))Aşa cu m a ra tă şi codul, câm pu l custid este de t ip A u toN um be r ş i are ro l de cheie prim ară. C âm pul name are t ip u l text, cu lungim ea de 40 de caractere. F igura 8.2 p rez in tă rezu lta te le ru lă r i i decla ra ţie i Create Table. In afara e fec tuă rii acestor opera ţii, p u te ţi m odifica şi s tru c tu ra ta b e lu lu i. C odul u rm ă to r m od ifică lung im ea c â m p u lu i name d in 40 în 50 de caractere: Alter Table Customers

Alter name text(50)

F IG U RA 8 .2

Access oferă suport l im ita t p en tru sub lim b a ju l DDL d in SQL.

E،e Edt ،؛٠١٠ ln؛eit lot؟* ،'Jrvjow )ا«ه

ئ ٥٠٠٢ ظtäUe in Design vi«w 0مماء

Osa(■ tat؛* t«y •J»r؛g هءءءء«ه ،س by ،rtsrrnj ه » ،Cr

m،»s؛Custt سسص,Key م ؛ج ءا ء(سءسا

Lochjp امامءت• ر M dSlii. NswVaiue،Form*

CacOcn،س

eger؛،long lr Intiement

; ■؛>،؛'؛؛< مد .'0

سب بم مم:, آس >؛؛مإء؛;ص»ت. ءم؛ا

ءآ ؛ . امجسأ

DcayivieM. Fe-Swtch panai. Fl-h«ip.

Page 167: Baze de date pentru incepatori (manuale facultate)

Access oferă supo rt l im ita t su b lim b a ju lu i D D L şi în p riv in ţa d e fin ir ii re la ţiilo r d in tre tabele şi a re g u lilo r de va lida re la n ive l de câm p ş i la n ive l de în re ­g istrare . D a to rită acestu i su p o rt l im ita t şi m o d u lu i în care a fos t pro iec ta t pro g ra m u l Access, este foarte p robab il că ve ţi u tiliz a in s trum en te le grafice p e n tru în tre ţine rea tabe le lo r şi coloanelor. In acest s tad iu , to t ce contează este să ş t iţ i ce este D D L ş i că p o s ib ilită ţile sale s u n t lim ita te în Access, dar n u şi în a lte program e p e n tru baze de date.

D upă această s cu rtă prezentare a l im b a ju lu i SQL şi a su b lim ba je lo r sale, vom trece la su b lim b a ju l D M L (Data M a n ip u la tio n Language), pe care î l ve ţi u tiliz a în m a jo rita tea s itu a ţiilo r când lu c ra ţi în SQL. D M L este a lc ă tu it d in com enzile S e le c t , I n s e r t , U pdate ş iD e le te . Unele d in tre aceste com enzi au clauze ad iţiona le care le in fluen ţează funcţiona rea . Să punem la lu c ru baza de date TEB!

164 PARTEA AIV-A - EXTRAGEREA INFORMAŢIILOR DIN BAZA DE DATE

Declaraţia S e le c tD ecla ra ţia S e le c t este, d in tre toate dec la ra ţiile SQL, cea pe care o ve ţi u tiliz a în m a jo rita te a cazurilo r. In te rogările au sopu l u n ic de a extrage in fo rm a ţii d in baza de date. P entru a în d e p lin i acest scop, ve ţi u tiliz a dec la ra ţia S e le c t . F igu ra 8.3 prez in tă o declara ţie S e le c t foarte sim plă .

Hţfc١٠٠١٠ 4 ٤٠٠ هة inseit * هلم

- iC lx ,

ق‘'■ و ء

ءاسم

FIGURA 8 .3

Sim bolu l *d in tr-o declaraţie S e le c t este metoda de a ind ica pe scurt ta ze i de date că trebu ie să retum eze toate câm purile d in tr-u n tabel.

إ.وا.ء.ع.

'■ '• . ؛ - '■ • ء

iiil®ف1 أ ؛ 1ه 1

ت ٢. Díágri آس ءهء،تمحء هإلجم b- UOTQ 'ممك'تتب

أكةلل:

Page 168: Baze de date pentru incepatori (manuale facultate)

C i- . SQL-ELEMENTE GENERALE 165

Când ru la ţ i o declaraţie în fereastra SQL, fereastra este în locu ită cu v izua liza­rea Datasheet. Dacă vă a m in t iţ i d iscu ţiile anterioare , când desch ide ţi u n tabe l p e n tru a p r iv i datele d in el, acesta este prezenta t în v izua liza rea Datasheet. Când desch ide ţi ta b e lu l C lien t p e n tru a p r iv i datele, este ca şi cum a ţi em ite dec la ra ţia SQL Select * From Client. F igu ra 8.4 prez in tă rezu lta te le care vor f i afişate.

FIGURA 8 .4

Când deschideţi u n tabel, veţi obţine vizualizarea Datasheet cu rezultatele unei in terogări.

Fiţi atent când modificaţi datele într-o înregistrare din vizualizarea Datasheet. In funcţie de circumstanţe, acest lucru va duce la modificarea datelor stocate în tabele. Dacă utilizaţi instrumentele de proiectare grafică a inte­rogărilor, rezultatele pot fi marcate cu statutul read-only (numai citire). Proiectarea interogărilor este discutată detaliat în capitolul 10.

Selectarea unor anumite câmpuriîn m a jo rita tea cazurilo r, n u ve ţi do ri să selectaţi toate câm purile d in tr -u n tabel, ci n u m a i câteva d in tre ele. De exem plu, C lien tID n u are sem nifica ţie în afara bazei de date. In tr -u n ra p o rt s im p lu care prez in tă o l is tă cu c lien ţi, estre p o s ib il ca elemente precum n u m ă ru l de te lefon sau adresa de e-m ail să n u fie necesare. In loc să scrie ţi s im bo lu l*, p u te ţi scrie câm purile respec­tive, în ord inea în care d o r iţ i ca ele să apară în se tu l de rezulta te .

Page 169: Baze de date pentru incepatori (manuale facultate)

166 PARTEA A IV-A - EXTRAGEREA INFORMAŢIILOR DIN BAZA DE DATE

P entru a exem plifica, să presupunem că d o r iţ i să a d u n a ţi in fo rm a ţii despre num ele de fam ilie ş i prenum ele c lie n tu lu i sau despre num ele firm e i, după caz. U rm ătoarea declara ţie Select în SQL va rezolva problem a:SELECT firstname, lastname, organizationname

FROM Client;F igu ra 8.5 p rez in tă rezu lta te le acestei in te rogări.

FIGURA 8.5

Interogările S e le c t în SQL vă pe rm it să colectaţi in fo rm a ţii din anum ite coloane.

Redenumirea câmpurilor folosind clauza AsP ute ţi alege câm purile inc luse în in terogare şi ord inea acestora, dar p u te ţi şi să a tr ib u iţ i alte num e câm purilo r selectate. V eţi realiza acest lu c ru fo losind clauza As. P riv iţ i cu aten ţie urm ătoarea declara ţie Select în SQL:SELECT firstname As fname,

lastname As lname, organizationname As org

From Client

cp؛loofc ،Vxtow t ،؛،cor؛؛« rm*t؛ft Fj؛» in *٤ Ffc

_ _ _ _ _

...........r> k£t،«،gn*؛ï؛ë؟

Cr،؛«o quay ،١ ٠٠؛ <١٨ ٠٦٠٧٠srd؛Cresie guwy by usng M

filename j l.itln.ini» j orgiinizarioniuiiif jS N'A Mam tine Software, Inc؛■A N/A Acs Tomato Company jetty rubble N/Ahr. Smith N'A'A N'A N-'A

■١٠ftecor¿- I«! ■ l i

F igu ra 8.6 p rez in tă rezu lta te le acestei in te rogări.

Page 170: Baze de date pentru incepatori (manuale facultate)

iil.HH«lii.nn«Ace Tomata Company ١ N/AN/A !

;Main Line Software. Inc| HA

Smithrubble

JohnBetty

j ،؛este ،»»> in O<Obiactî;reatíquífv ،>'/'

Ptcad: 1« I ’ i i

GroiCS

.'VA '، ؛،

Frg N w

CAPITOLUL 8 SQL-ELEMENTE GENERALE 167

FIGURA 8.6٤٠٠ j؛d* ؛١٠١٠ ¡n«rt R«ordi ţools ؛؛Amtew ؛٢٠

1\ ►*؛٠٠ 1§ ٤ : ; • ■■ a f f i٣ * ؟ tí. • a & a < © ¿-3 • ؛3 ٠'

١ '-*E E c ra a rs v r!tPt*« > i a ؛¿،٢»، W®؛)

Clauza As vă perm ite să redenum iţi un câmp în rezultatele in te rogării.

Combinarea câmpurilor de dateU neori ve ţi d o ri să com b ina ţi date d in m a i m u lte câ m p u ri ş i să re tu rn a ţi datele respective în tr -u n s in g u r câm p d in se tu l de rezu lta te . De exem plu, în loc de a re tu rn a num ele de fam ilie şi prenum ele în câ m p u ri separate, d o r iţ i ca aceste date să fie com binate în tr -u n s in g u r câm p d e n u m it name (nume). D ecla ra ţia Select în SQL care urm ează realizează acest obiectiv: SELECT firstname + " " + lastname As name,

organizationname As org From Client

F igu ra 8.7 p rez in tă rezu lta te le acestei in te rogări.

E x is tă ş i u n r isc în com binarea datelor, n u m ită adesea concatenare. Datele pe care le concatenaţi trebu ie să a ibă acelaşi tip . De obicei, ve ţi com bina date de t ip te x t. D ate le de t ip n u m e ric şi cele de t ip d a te /t im e (data ca lenda ris tică /o ra ) s u n t aduna te a ritm e tic dacă este u tiliz a t ope ra to ru l +. Dacă d o r iţ i să concatenaţi datele de aceste t ip u r i, n u să le a d u n a ţi aritm etic , tre b u ie să le c o n v e rtiţ i la t ip u l de date text, apoi să co m b in a ţi datele convertite . P entru a i lu s tra d iferenţa, p r iv iţ i u rm ă to ru l cod SQL:SELECT 1+2+3 as combinedfield

FROM Client;

Page 171: Baze de date pentru incepatori (manuale facultate)

P؛؛؛Window t ؛؛loo ؛r Record؛rm؛ert P؛n

2p«n؟ ؛؛ ،«ş a•؛

® ggl ٧٠١٠٠ Design ٨ Creat، Quefy srd؛Oeâte query by using m

OWf-U

Ace Tomato Compar N/A H/A

Main Line Softwaie. ؛N/A

S-'ojpî

Record; Hj - . i I

t)ataih«¿yiew~

168 PARTEA AIV-A - EXTRAGEREA INFORMAŢIILOR DIN BAZA DE DATE

FIGURA 8.7

John Smith Betty rubble

Datele din diferite câm puri ale u n u i tabel pot f i com binate pentru a form a u n s ingur câmp în setul de rezultate.

F igu ra 8.8 p rez in tă rezu lta te le acestei in te rogări. D upă cum vedeţi, p u te ţi re fe ri n u n u m a i câm purile actuale în tr-o declaraţie Select, dar şi date statice de t ip num eric , dată ca lendaristică sau tex t {aceste va lo ri statice s u n t n u m ite lite ra le ). In fu n c ţie de m o to ru l p e n tru baze de date pe care îl u tiliz a ţi, p u te ţi re fe ri orice fu n c ţie pe care m o to ru l p e n tru baze de date o înţelege.

îşmmp

-iiS l٤٠؛ ٤٠، ؛؛>،؛٧١ Jnsert '؛؛؛na، Record؛ 1؛،،؛ ،؛v«Jíví ،١١٠؛

«M»y Dv>«»«î ،٠٠٢٠

Ţ I —■

m mjj£S^«vièw~

mup.,::. heS

FIG URA 8.8

în tr-o declaraţie S e le c t pot fi utiliza te datele statice de t ip num eric, dată calendaristică şi text.

Page 172: Baze de date pentru incepatori (manuale facultate)

169 SQL-ELEMENTE GENERALE .*؛CAPITOLUL

în acest caz, num ere le 1, 2 şi 3 s u n t aduna te aritm e tic . M o tivu l p e n tru care vedeţi 4 în reg is tră ri, fiecare cu valoarea 6, este că p e n tru fiecare în reg is tra re este re tu ra n tă a ltă în reg is tra re în se tu l de rezulta te .

Pe de a ltă parte, dacă d o r iţ i ca valoarea re tu m a tă să fie 123, trebu ie să co n ve rtiţi toa te elementele în text, apoi să com b ina ţi va lo rile de t ip text. Desigur, a ţi pu tea să se lecta ţi foarte uşor ş iru l “ 123” ; da r astfe l n u aveţi şansa de a vedea cum po t f i convertite în te x t va lo rile num erice ! C odul u rm ă to r vă duce la rezu lta te le dorite:SELECT Str(1)+Str(2)+Str(3) as combinedfield

FROM Client;F igu ra 8.9 prez in tă rezu lta te le in te rogării.

FIGURA 8.9

Pentru com binarea datelor pot fi utllza te fun c ţiile d in tr-o bază de date, cum este fun c ţia S t r ( ) .

Declaraţiile de tip Top n Se lectU ltim u l sub iec t pe care î l vom d iscu ta despre dec la ra ţia Select este cel al d e c la ra ţiilo r de t ip Top n Select. Acestea m ai s u n t n u m ite şi in te rogă ri de t ip Top n. De m u lte o r i ve ţi d o ri să a fla ţi n u m a i p rim a în reg is tra re , prim e le 10 sau prim e le 100 de în re g is tră r i d in tr -u n set de rezu lta te . U tilizâ n d exem p lu l precedent, în care n u m ă ru l de râ n d u r i d in se tu l de rezu lta te depinde de n u m ă ru l de râ n d u r i d in ta b e lu l de bază, o in terogare de t ip Top n poate con tro la n u m ă ru l de râ n d u r i d in se tu l de rezulate. C odu l u rm ă to r forţează se tu l de rezu lta te să a ibă u n s in g u r rând:SELECT Top 1 Str(1)+Str(2)+Str(3) as combinedfield

FROM Client;

.........

Figura 8.10 prezintă rezultatele acestei interogări.

Page 173: Baze de date pentru incepatori (manuale facultate)

PARTEA A IV-A - EXTRAGEREA INFORMAŢIILOR DIN BAZA DE DATE170

3، view ،r«<t F-iini؛ ؛FIGURA 8 .1 0

O interogare de t ip T op n controlează nu m ăru l de râ n d u ri care apar în setu l de rezultate.

Deşi doriţi să fie afişate numai primele 10 înregistrări, este foarte posibil să fie returnate mai mult de 10. lată un exemplu: doriţi să fie afişate primele 10 produse, în funcţie de preţ. Mai mult, al zecelea produs are preţul 10$, dar există 5 produse care au acelaşi preţ. Câte înregistrări vor fi returnate? Veţi obţine cel puţin 10 înregistrări. A zecea dintre ele este primul produs cu preţul de 10$. Totuşi, deoarece mai există 4 produse care au preţul de 10$, şi acestea vor fi returnate. In această situaţie ipotetică sunt returnate 14 înregistrări.

Care este concluzia? Interogările de tip T o p n pot returna mai mult de n rânduri dacă există mai multe înregistrări cu aceeaşi valoare a expresiei după care se face ordonarea ( o r d e r b y ) .

D upă ce a ţi în vă ţa t cum să extrageţi şi să m a n ip u la ţi datele, pasu l u rm ă to r este f iltra re a şi organizarea lo r. In te rogările de t ip T o p n s u n t m ecanism e de f iltra re . T o tuş i, re s tr ic ţia T o p n este ap lica tă după aplicarea f i l t r u lu i specifica t în c lauza w h e r e . F iltra re a ş i organizarea date lo r vo r f i tra ta te în urm ătoare le două secţiun i.

Rezultatele primei filtrări: utilizarea clauzei W hereîn practică , ve ţi u tiliz a în to tdeauna u n f i l t ru în in te rogările dum neavoastră. Vom extinde unele d in tre exemplele anterioare c las ificându -le după u n a n u m it t ip de c lien t. Dacă vă a m in tiţ i, c lie n ţii po t f i persoane fizice sau firm e. C âm pu l C lientŢype ara tă ce t ip corespunde fie că ru i clien t. P entru a i lu s tra fu n c ţio n a re a clauzei W h e re , să extragem datele cu prenum ele şi num ele de fam ilie p e n tru c lie n ţii persoane fizice.

Page 174: Baze de date pentru incepatori (manuale facultate)

171 SQL-ELEMENTE GENERALE ٠٠١ ، .؛

SELECT lastname + ", " + firstname As Client From ClientWhere ClientType = "I"

A u m a i fos t făcute câteva m od ifică ri. A ţi observat că ord inea în tre prenum e şi num ele de fam ilie a fost inversa tă şi că au fos t separate de v irgu lă? F unc ţiona rea clauze i where este destu l de s im plă . P ute ţi u tiliz a u n u l sau m a i m u lte c r ite r ii. F igu ra 8.11 prez in tă rezu lta te le in te rogă rii.

ه ت'.. ءنحتءيفنن~"'-ذتتاامحءحمم،ت

، ٠٠٠* *ه•® ■.'وأp*؛b ص لسسمم

ةلآل • ء.غلآا

ء '" .• '•

Î0 ؛؛؛ V* ،ء- ' ٠ ، ما ؛٠٠٢ م ؛¿؛ مءا<ل ؛ءمل منصل<اص محرب ٠٠٠

عr؛y «١٠١٠مءلداء أ ول ت’ءأمء م م ء ؤ ؟' "إ ؛ م' ؟ ؛ و_________

1'ء“ تتو', أم ة' . حء

ص

ن ٦,- مء

» دسءء I ' l l >!>■!»>! ci ت

ةقءقئءءء؛ننؤءءمحءثي ا

' ذ '

FIGURA

Clauza where vă perm ite să excludeţ، datele nerelevante.

Să extindem acest exem plu, p resupunând că d o r iţ i să extrageţi to ţ i c lie n ţii persoane fizice a l căro r num e de fam ilie începe cu S. C odai u rm ă to r rezolvă acest lu c ru :SELECT lastname + ", " + firstname As Client

From ClientWhere ClientType = "I" And lastname Like "S*"

Acest exem plu necesită stud ie rea a ten tă a câtorva aspecte. M ai în tâ i, aşa cum am precizat anterio r, p u te ţi com bina m ai m ulte c rite r ii în clauza Where. Apoi, o b s e d a ţi u tiliza re a e u vâ n tu lu i Like în acest caz. în acest exem plu, d o r iţ i să extrageţi to ţ i c lie n ţii persoane fizice al căror num e de fam ilie începe cu lite ra s. V e ţi spune că, în acest caz, c rite r iile s u n t slabe. De obicei, îm preună cu operatoru l de com paraţie Like este u tiliz a t u n caracter w ildcard. In Access, acesta are fo rm a u n u i u n u i asterisc (*). In SQ LServer, ' ^ ld c a r d este sem nu l procente lo r (%). Dacă a ţi f i fo los it sem nu l egal, Access

Page 175: Baze de date pentru incepatori (manuale facultate)

PARTEA A IV-A - EXTRAGEREA INFORMAŢIILOR DIN BAZA DE DATE172

a r f i că u ta t în re g is tră rile p e n tru care num ele de fa m ilie este S*. F igura8.12 prez in tă rezu lta te le in te ro g ă rii cu c r ite r ii m u ltip le , în care apare şi sem nu l w ildca rd .

■*v«w ٠؛،؛•

iiaaE gggaa

BSliMSSSi

FIGURA 8.12

Utilizarea c rite riilo r w ildcard perm ite căutarea după crite rii slabe.

i ،،٠ * r ■-

؛ , . - - - : : . ■ . , :؛

■■::IVlaecord: i<Y: 1! 1 > |n |> * io M |

V om m a i d iscu ta despre clauza where în acest capito l. Clauza Where are u til iz ă r i im p o rta n te în u n iu n e a tabe le lo r şi vom reveni la ea în a ltă secţiune a acestu i cap ito l.

Prima organizare a rezultatelor: utilizarea clauzei Order ByLa fel cum u tiliz a ţi în to tdeauna clauza where pen tru a f i ltra date nerelevante, ve ţi u tiliz a clauza Order By p e n tru sortarea date lo r d in se tu l de rezu lta te . M ai m u lt, pe baza c â m p u rilo r pe care le alegeţi p e n tru a sorta datele, ve ţi d o ri să le s o rta ţi ascendent, descendent sau după u n c rite r iu com binat. Toate aceste opera ţii vo r f i efectuate p r in in te rm e d iu l clauzei Order By. P entru a i lu s tra func ţio n a re a ei, p r iv iţ i codu l u rm ă to r:SELECT lastname + ", " + firstname As Client

From ClientWhere ClientType = "I"Order By lastname

Figura 8.13 prezintă rezultatele acestei interogări.

Page 176: Baze de date pentru incepatori (manuale facultate)

SQL - ELEMENTE GENERALE 173

Clauza O rd e r B y vă perm ite să ordonaţi datele d in setu l de rezultate.

FIGURA 8.13

în m od im p lic it, in d ife re n t de câm pu l pe care î l alegeţi, sortarea se face în ord ine crescătoare (ascendent). Dacă d o r iţ i să so rta ţi rezu lta te le în ord ine descrescătoare (descendent) trebu ie să so lic ita ţi exp lic it acest lu c ru . în afară de c a lif ic a tiv u l p e n tru ord ine descendentă, codu l u rm ă to r este id e n tic cu cel precedent:SELECT lastname + ", " + firstname As Client

From ClientWhere ClientType = "I"Order By lastname Dese

F igu ra 8 .14 prez in tă rezu lta te le acestei in te rogări.

Sortarea după mai multe criteriiSă presupunem că d o r iţ i să rea liza ţi o lis tă cu c lie n ţii persoane fizice. în care s u n t prezentate num ele, oraşu l şi s ta tu l fie că ru i c lien t. în p lus, d o r iţ i să s o rta ţi datele după sta t, oraş şi num ele de fam ilie . De obicei, a tu n c i când s o rta ţi după m a i m u lte câm puri, ord inea în care apar acestea în lis ta de selecţie va f i aceeaşi cu ord inea în care vo r f i sortate: acest lu c ru n u este însă ob liga to riu . D a r rezu lta te le s u n t m a i u şo r de c it it . C odu l u rm ă to r are ca re zu lta t afişarea s ta tu lu i, o ra şu lu i ş i a u n e i c o m b in a ţii în tre prenum e şi num ele de fam ilie . în p lus, rezulta te le s u n t sortate după stat, oraş ş i num ele de fam ilie :SELECT state,city,lastname + ", " + firstname As Client

From ClientWhere ClientType = "I"Order By state,city,lastname

؛٠* Y،٠٠/ !(١١٠٦ f ■؛maf ،ool، '*■•؛'¡؛١• ٤٠٠.

Design ww ٠»» ٠١ feste ng weard؛quefy by >j » re؛

clientI Rubble, Betly Smith, John

ÎS!,؛؛؛''؛*؛

Record l< j ^J| 1 * |n | t» ţ ,wÊÈÈÊm

vró

Figura 8.15 prezintă rezultatele acestei interogări.

Page 177: Baze de date pentru incepatori (manuale facultate)

PARTEA A IV-A - EXTRAGEREA INFORMAŢIILOR DIN BAZA DE DATE174

FIGURA

Folosind ca lifica tivu l D ese, p u te ţi specifica dacă do riţi o sortare ascendentă sau unadescendentă.

٦٠، r<K Jook wy«Jo«t»»؛m¿، P•؟؛.

: 11 ii • ٠ ' .p ؛،?sn

vw ؛I j J G،،W qu،ly r &ti؛«»؛ 't by J «؛١٠٠ : ® j

VVjshiiiglonPaoli

;،-7 •

FIGURA 8.15

Puteti sorta setul de rezu ltate după m ai m ulte câm puri.

Page 178: Baze de date pentru incepatori (manuale facultate)

CAPITOLUL SQL-ELEMENTE GENERALE 175

D upă cum vedeţi, n u trebu ie neapăra t să alegeţi u n a n u m it câm p p e n tru ca el să fie u tiliz a t în tr-o sortare. în această s itu a ţie câm pu l lastname n u apare ca atare în se tu l de rezulta te . In schim b, el a fos t com b ina t cu câm pu l f irstname. C u toate acestea, p u te ţi sorta după acest câm p, câtă vrem e el este d isp o n ib il în ta b e lu l de bază. în m ajo rita tea s itu a ţiilo r , to tu ş i, datele u tiliza te p e n tru sortare vo r f i d ispon ib ile în se tu l de rezu lta te , fie în câm pu l corespunzător, fie com binate cu datele d in a lt câmp.

Să extindem exem p lu l precedent, alegând să sortăm după s ta t, după oraş în o rd in e d e s c re s c ă to a re , a p o i d u p ă n u m e le de fa m il ie în o rd in e descrescătoare. C odu l u rm ă to r realizează acest scop:SELECT state,city,lastname + ", " + firstname As Client

From ClientWhere ClientType = "I"Order By state,city Dese,lastname Dese

F igu ra 8.16 p rez in tă rezu lta te le acestei in te rogări.

ق؛ءءمحإغمح.ئم

clientstate'Rubble. Bettyf Flintstone, Wilma Ssabcm, Sam Smith. John

BearockEedrockWashingtonPaoliا الءمب ص 'سء تلم رإم ،

]؛؟، ت٠٠»مسم «سدءتمرOtimU

1 » 1ا>1*>1 *■Croups

WjSiKMÊSË-- *ح*

pàtoîheïtview'

FIGURA 8 .16

în cadrul fiecăru i câmp după care efectuaţi sortarea, pu te ţi alege şi sortarea descendentă.

، >ءمء ¡ أ ؛س وس ¡٢٠٠* آءل-س مدام ه ء،

هلإأ ، ؛ ج ي ه - ءJ؛

ء١۴٠٠ > ' ٠، ■ي rr وآن

D upă cum vedeţi, p r im u l c r ite r iu de sorta re este s ta tu l. T o tuş i, dacă ve ţi com para f ig u r ile 8.15 şi 8.16 ve ţi vedea că B etty R ubble ş i W ilm a F lins tone au sch im ba t lo cu rile în se tu l de rezu lta te . N u u ita ţ i că so rtă rile după oraş şi num ele de fam ilie se fac descendent. D ar dacă W ilm a F lins tone lo cu ia în Copper Falls? în tru c â t sortarea se face m ai în tâ i după sta t, apoi după oraş şi în f in a l după num e le de fam ilie , în acest caz W ilm a F lins tone a r apărea d in nou în se tu l de rezu lta te îna in te de B e tty Rubble. Este u n b u n exe rc iţiu să vă ju c a ţ i p u ţin cu u n set m ic de date, să le m od ifica ţi, apoi să ru la ţ i d in n ou d ife rite le in te rogă ri p e n tru a vedea care s u n t efectele.

Page 179: Baze de date pentru incepatori (manuale facultate)

Combinarea mai multor tabele: utilizarea declaraţiei J o inîn m a jo rita tea s itu a ţ ii lo r ve ţi d o ri să extrageţi date d in m ai m u lte tabele. De exem plu, este pos ib il să v i se so lic ite crearea une i lis te cu c lie n ţii persoane ju r id ic e (firme) ş i contacte le corespunzătoare acestora. Acesta este ca d ru l de bază care va f i fo los it p e n tru a in troduce conceptu l de u n iu n e a tabelelor. E x is tă p a tru t ip u r i de u n iune : in te rn ă (inner١, externă la stânga [left outer), exte rnă la dreap ta (right outer) şi com ple t externă (full outer). F igu ra 8.17 oferă o ilu s tra re grafică a func ţionă rii, în re la ţie cu tabelele un ite , a dife rite lo r t ip u r i de u n iu n e . Pe p a rcu rsu l acestei d is c u ţii ve ţi reveni m ereu la figu ra 8.17. P entru a exem plifica func ţiona re a t ip u r ilo r de un iu n e , vom fo losi tabelele C lien t şi C ontact.

f i g u r a 8 .1 7 Uniuni SQLExistă p a tru t ip u r i de un iune în tre tabele: in te rnă, la stânga, la dreapta ş i completă.

176 PARTEA AIV-A - EXTRAGEREA INFORMAŢIILOR DIN BAZA DE DATE

Com pletă

Scurtă observaţie privind terminologia despre uniunea tabelelorPentru tipurile de uniune externă la stânga, externă la dreapta si complet externă utilizarea cuvântului externă este adesea omisă; dacă cineva spune uniune la stânga, se subînţelege că este vorba despre uniune externă la stânga. Utilizarea cuvântului externă este o chestiune de preferinţe. Dumneavoastră trebuie să ştiţi numai că, indiferent de sursa de informare utilizată, uniunile la dreapta, la stânga sau completă sunt identice, respectiv, cu uniunile externă la dreapta, externă la stânga, complet externă.

în a in te de a trece m a i departe, să precizăm care este in terogarea de bază pe care o vom u tiliza . în acest context vor f i lu a ţ i în considerare n u m a i c lie n ţii persoane ju r id ic e . P entru a vedea cu ce începeţi, in terogarea urm ă toa re poate f i u tiliz a tă p e n tru a selecta to ţ i c lie n ţii persoane ju r id ic e :SELECT organizationname

From ClientWhere ClientType = "B"Order By organizationname

Figura 8.18 prezintă lista clienţilor persoane juridice (firme), de la care veţi pomi.

La stânga La dreapta

Page 180: Baze de date pentru incepatori (manuale facultate)

177 SQL-ELEMENTE GENERALE “!؛٠ C

إ ت ة 'مي؟؛؛؛ ي ءم هم إل* ţie ؛&ţ ؛؛ÍW 'ئ* ضف

Lista completa a c lien tilo r care sun t firm e d in tabe lu l Client.

FIGURA 8.18

■ '■ ' . . . . . . . . '؛: .مب‘' ب ' ع . ; ي ق ي أ ' ؛ ؛إلي أ ٦، آ ' أ . مم حأثم ءم '

, ■ ٠٠ Iحء :عم

••هءءء ثنلنل ¡ 1 قلئثلثثل ه

Acum , după ce a ţi rea liza t lis ta com pletă a c lie n ţilo r persoane ju r id ic e şi aveţi la d ispoziţie o in terogare de bază cu care p u te ţi lu c ra , pu tem d iscu ta despre u n iu n e a tabe le lo r în SQL.

Uniunile interneR even ind la f ig u ra 8 .17 , p u te ţ i vedea că o u n iu n e in te rn ă re p re z in tă in te rsec ţia în tre u n tabe l pă rin te şi u n tabe l copil. Care este in te rsec ţia în acest caz? Dacă vă a m in t iţ i re la ţia d in tre tabelele C lien t şi Contact, câm pu l cheie p rim a ră clientid d in ta b e lu l C lien t este p re lu a t ca ş i cheie externă în ta b e lu l Contact. D in p u n c t de vedere s in tac tic , clauza Join apare după clauza From. C odul u rm ă to r ilus trează u tiliza re a clauzei Join:SELECT organizationname

From ClientInner Join Contact On (contact.ciientid=client.clientid)

Where ClientType = "B"Order By organizationname

E x is tă şi a ltă m etodă p e n tru realizarea u n iu n ii în tre tabele. în loc de a fo los i s in ta xa d in b lo c u l a n te rio r de in s tru c ţ iu n i, p u te ţi u tiliz a s in taxa urm ătoare :SELECT organizationname

From Client,Contact Where ClientType = "B" And

contact.clientia=client.clientid Order By organizationname

Page 181: Baze de date pentru incepatori (manuale facultate)

178 PARTEA A IV-A - EXTRAGEREA INFORMAŢIILOR DIN BAZA DE DATE

Este im p o rta n t să re ţin e ţi că a tu n c i când in c lu d e ţi u n iu n e a în clauzele From ş i W here, este subînţe leasă u n iu n e a in te rnă . Dacă d o r iţ i să rea liza ţi u n a lt t ip de u n iu n e , tre b u ie neapăra t să fo lo s iţi clauza Jo in . A lte rn a tiva a n te rioa ră a fos t prezenta tă n u m a i ca exem plu. Toate exemplele de cod d in această carte vo r u tiliz a clauza Jo in .

F igu ra 8.19 p rez in tă efectu l in tro d u c e rii clauzei Join. O bservaţi că în se tu l de rezu lta te n u au fos t re tu m a te alte câm puri.

FIGURA 8.19

Setul derezultate o b ţin u t după realizarea u n iu n ii în tre tabelele Client şi Contact.

A r tre b u i să observaţi u şo r două aspecte. M ai în tâ i, Ace Tom ato Com pany apare de două ori. Apoi, f irm a Bob’s House o f Pancakes a d is p ă ru t d in lis tă . M o tivu l du b le i a p a r iţ ii a firm e i Ace Tom ato este acela că p e n tru ea există două contacte, ia r m o tiv u l d isp a riţie i firm e i Bob’s House o f Pancakes este fa p tu l că p e n tru ea n u este d e fin it n ic i u n contact. N u u ita ţ i, o u n iu n e in te rn ă este re z u lta tu l in te rsec ţie i a două tabele. Cu alte cuv in te , o u n iu n e in te rn ă va re tu m a date dacă ş i n u m a i dacă datele d in ta b e lu l pă rin te (d in stânga) au în re g is tră r i corespondente în ta b e lu l cop il (d in dreapta). în acest exem plu, dacă id e n tif ic a to ru l c lie n tu lu i d in ta b e lu l C lien t se regăseşte în în re g is tră r ile d in ta b e lu l C on tac t, în re g is tră r ile co respond en te s u n t „condam nate să existe” . In cazul firm e i Ace Tom ato Com pany, în l is tă apar două în re g is tră ri corespondente, deoarece există două în reg is tră ri în tabe lu l Contact.

Utilizarea clauzei Distinct pentru eliminarea datelor redundanteCe a ţi zice dacă v i s-a r so lic ita o lis tă con ţinând n u m a i acele firm e care au date de contact? Categoric, trebu ie să rea liza ţi o u n iu n e in te rn ă , p e n tru a

V 'l; ■ ، ‘ ١٠ ‘ ■ ١ • ؛ -JaJ*.C؛،V»few t؛؛ ؛؛d، Insert Famat Bsords IM؛ fte

U?؛ ٠ • .?، ' * .? ' a s a m - • *

Page 182: Baze de date pentru incepatori (manuale facultate)

C Ä M Y ö i SQL - ELEMENTE GENERALE 179

e lim in a d in l is tă c lie n ţii despre care n u aveţi date de contact. în acelaşi tim p , d o r iţ i ca fiecare c lie n t să apară în lis tă o s ingu ră dată. în secţiunea an te rioa ră au fos t prezentate in te rogările Top n. To tuş i, în acest caz, o astfe l de in terogare n u va f i u tilă . Ceea ce d o r iţ i este o a ltă l is tă (vedeţi fig u ra 8.20) şi, d in fe ric ire , u rm ă to ru l bloc de in s tru c ţ iu n i SQL vă oferă so lu ţia perfectă:SELECT Distinct organizationname

From ClientInner Join Contact On (contact.clientid=client.clientid)

Where ClientType = "B"Order By organizationname

FIGURA 8.20ClauzaD is t in c t face ca fiecare rând din setu l de rezultate să fie un ic.

Returnarea datelor din mai multe tabeleC on tin u â n d exem p lu l precedent, să extragem acum prenum ele şi num ele de fa m ilie d in ta b e lu l C ontact. U rm ă to ru l bloc de in s tru c ţ iu n i pare să realizeze acest obiectiv:SELECT organizationname,firstname,lastname

From ClientInner Join Contact On (contact. clientid = client. clientid)

Where ClientType = "B"Order By organizationname

Figura 8.21 arată ce se întâmplă dacă încercaţi să rulaţi acest cod.

Page 183: Baze de date pentru incepatori (manuale facultate)

FIGURA 8.21

Dacă numele coloanelor d in clauzele From şi J o in apar în cel p u tin două tabele, trebuie să precizaţi tabelele d in care sun t preluate pen tru a rezolva am biguitatea.

180 PARTEA AIV-A - EXTRAGEREA INFORMAŢIILOR DIN BAZA DE DATE

Dacă vă m a i a m in tiţ i, câm purile firs tnam e şi lastnam e există şi în ta b e lu l C lie n t ş i în ta b e lu l C ontact. Dacă n u in d ic a ţi bazei de date ce tabe l trebu ie u tiliz a t ca sursă, baza de date trebu ie să rezolve s ingu ră am bigu ita tea . Deoarece bazele de date n u po t rezolva aceste am b ig u ită ţi, ve ţi ob ţine u n mesaj de eroare cu m este cel d in fig u ra 8.21.

P en tru a rezolva am b igu ită ţile , trebu ie să prec iza ţi ta b e lu l d o rit. C odul u rm ă to r rezolvă această prob lem ă, ia r f ig u ra 8.22 p re z in tă rezu lta te le ob ţinu te .SELECTorganizationname, contact.firstname, contact.lastname

From ClientInner Join Contact On (contact.clientid = client.clientid)

Where ClientType ="B"Order By organizationname

Uniuni externe ia stângaîn tr -o u n iu n e in te rn ă , în reg is tră rile corespondente se află de o parte şi de a lta a u n iu n ii. D a r dacă d o r iţ i să vedeţi în reg is tră rile d in ta b e lu l d in stânga (tabelu l părin te), in d ife re n t dacă pe n tru ele există în reg is tră ri corespondente în ta b e lu l d in dreapta (tabe lu l copil)? O bţinerea acestor date este uşoară dacă u tiliz a ţ i o u n iu n e externă la stânga. Adesea, uniunea externă la stânga este denum ită , scu rt, uniune la stânga. U rm ă to ru l cod prez in tă u tiliza re a u n iu n ii la stânga:

.٠٠٠ eisssfcgndow؛ «însert Qu»y Ioc ٤٠• ،*<؛ ١١*•؛

.Q !١• ؛ • ٤? • ■ ؛£ ٠ ٠،§ • ' © ■ : B : . v ٠ ؛ S3 _------... .. ..................................................;......٠-----------------—---------— :................................------------------------------------------

BSESmS؛®1fi ،؟H ”” ،؛ ■'> : ٠ ivr-)٠٠٢ *؛]؛^ ؛ ،ţ؛§2p«n ؛

gn view؛؟De ١« jw j O e* te que»v srd؛Oeste qu«y by wi

' ent ٠-'- ' LS' -٢-

’ ■■

JJ S،Jl «atwrrrt-؛ iy ,؟FP d ir ٠* mr r.aMnfn ►c ™ i or. tiîJe fetid .t ١٢١؛ i ٦ \ .ţ

\ ” I "* I

Page 184: Baze de date pentru incepatori (manuale facultate)

SELECT organizationname, contact.firstname, contact.lastname From ClientLeft Outer Join On (contact.clientid = client.clientid)

Where ClientType="B"Order By organizationnameF igu ra 8.23 p rez in tă rezu lta te le acestei in te rogări.

C A P IT O L«! : SQL-ELEMENTE GENERALE 181

FIGURA 8.22

Când u n iţ i tabelele, pu te ţi extrage date din m ai m ulte tabele în acelaşi set de rezultate.

în cazul firm e i Bob’s House o f Pancakes, orice câm p care a r corespunde în ta b e lu l C ontact are valoare n u lă . De ce? Deoarece n u există o în reg is tra re cu date de con tac t p e n tru Bob’s House o f Pancakes. P ute ţi considera că va lo rile nu le s u n t în lo c u ito r i (placeholder) p e n tru datele care a r f i fos t acolo dacă ar f i ex is ta t o în reg is tra re cu date de contact despre c lie n tu l respectiv.

Limitarea rezultatelor la înregistrările fără corespondent în tabelul din dreapta

D ar dacă trebu ie să e fec tua ţi u n iu n e a la stânga inversă, adică să extrageţi n u m a i c lie n ţii care n u au o înregistrare corespondentă în tabe lu l d in dreapta? V e ţi fo los i to t o u n iu n e la stânga p e n tru a vedea toate în re g is tră rile d in ta b e lu l C lient; p e n tru a obţine re zu lta tu l do rit, va tre b u i să adăugaţi c r ite r ii în clauza Where, ca să extrageţi n u m a i în reg is tră rile al căror câmp C ontactID este cons ide ra t n u l. N um a i în reg is tră rile c lie n ţilo r care n u au în re g is tră r i corespondente cu date de contact vor satisface aceste crite rii. C odul u rm ă to r îndep lineşte această m is iune :

v/rthn ţjdp ¿؛w Iruerţ Recwds Toc؛؛y

B M■٠ < :r

oi 11 ; . i 'loniiiiine ؛1؟ firstn.inie I lastiimneJones

Tomato Company، A؟.Inc ؛ .r. Lin، Sofiwai| Ma؛

SmithPetersen

JohnJohn

’٠٠٠٠٠٢! Si««،؛

view ؛،[١٩٢١ CfMíe n by wlívd ؛O f i t

1 > ¡H 1■ 1 ef 1 ؛ ■ Rxord; l< I

Crţapciton \trre

Page 185: Baze de date pentru incepatori (manuale facultate)

182 PARTEA A IV-A - EXTRAGEREA INFORMAŢIILOR DIN BAZA DE DATE

SELECT organizationname From ClientLeft Outer Join On (contact.clientid = client.clientid)

Where ClientType="B" And Contact.Contactld Is Null Order By organizationname

F igu ra 8.24 prez in tă rezu lta te le acestei in te rogări.

p؛je؛ jttndow ؛؛loo ؛insert r'-m* Pecad ؛ Edt View ،٤٠

ffij ireale query In Design vtewj E|J Create query by using wteard

.as 2،!!o»«iaHiţ tţo«»nomg f ' flitlnoiue | !.mn.ii

JonesSmith

JoeJohnAce Tómalo Company

Pancakes ؛o ،■؛*,?obs Ho n bn، Software. Inc ؛،si.M'A

PeteisenJohn

i i i

FIGURA 8.23O un iune externă la stânga extrage toateînreg istrările din partea stângă a in terogării, ind ife ren t dacă există în reg is tră ri corespondente lo r în tabe lu l d in partea dreaptă.

WWr. ,, f - ‘ .

'• Ştie* ٠٠ Vr UE ١١٠

Uniuni externe la dreapta şi uniuni complet externeU n iu n ile externe la dreapta şi u n iu n ile com plet externe su n t discutate îm pre­u n ă în această carte deoarece este p u ţin p robab il să le u tiliz a ţi. Access n u suportă u n iu n ile com plet externe, dar p en tru a realiza o prezentare com pletă vom d iscu ta despre ambele t ip u r i de u n iu n e în această secţiune.

U n iu n ile la stânga s u n t u tile deoarece p e rm it exis ten ţa u n u i p ă rin te cu zero copii. O u n iu n e la dreapta rep rez in tă scena riu l invers, adică u n cop il fă ră pă rin te . Dacă vă a m in tiţ i d iscu ţia despre in te g rita te re fe ren ţia lă d in c a p ito lu l 7, perspectiva exis ten ţe i u n e i în re g is tră ri cop il fă ră o în reg is tra re p ă rin te corespunzătoare era o v io lare a in te g r ită ţii referenţia le .

Page 186: Baze de date pentru incepatori (manuale facultate)

SQL-ELEMENTE GENERALE 183

în plus fa ţă de realizarea u n iu n ii la stânga, pu te ţi şi să extrageţi num ai acele în reg is tră ri care n u au cores­pondent în tabelu l din dreapta.

FIGURA 8.24

Primul lucru pe care îl veti învăţa despre reguli este că, ia un moment dat, veţi întâlni situaţii în care acestea sunt încălcate. în viată, foarte puţine reguli sunt imuabile. Pot exista situaţii când aveţi o înregistrare copil fără înregistrare părinte. Gândiţi-vă la situaţia unei facturi achitate cu numerar. Tot ce vă interesează este să vindeţi ceva cuiva. Nu vă interesează cine este cumpărătorul (clientul) şi nici nu aveţi timp să înregistrat¡ informaţiile despre el. Vor fi alte situatii când exact acelaşi sistem de baze de date trebuie să înregistreze informaţiile despre client. în acest exemplu, vă confruntaţi cu o situaţie hibridă. O soluţie simplă ar fi crearea unui client care plăteşte cu numerar şi asocierea tututrorfacturilor achitate în numerar cu acest client. Deşi soluţia s-ar putea dovedi funcţională, acest pas suplimentar ar putea părea inacceptabil. Şi atunci, poate că abordarea cea mai bună ar fi să permiteţi existenţa unor facturi indiferent de existenţa înregistrărilor părinte. Problemele de proiectare a bazelor de date pentru astfel de situaţii depăşesc însă scopul acestei cărţi. Este suficient să ştiţi că există situaţii când încălcarea regulilor are sens, iar limbajul SQL are capacitatea să rezolve aceste situaţii.

în re g is tră rile de acest t ip se num esc orfane. Dacă în tr -o bază de date este im pusă in te g rita te a re fe ren ţia lă , va f i im p o s ib il să in tro d u c e ţi cop ii fă ră p ă rin ţi. Totuş i, există cazuri când re la ţiile părin te -cop il s u n t doar semantice. Cu a lte c u v in te re la ţ ia e x is tă d oa r cu n u m e le dacă n u este im p u s ă in teg rita tea re fe ren ţia lă . C odul u rm ă to r prez in tă u tiliza re a u n iu n ii externe la dreapta:SELECT organizationname, contact.firstname, contact.lastname

From Client

Page 187: Baze de date pentru incepatori (manuale facultate)

184 PARTEA A IV-A - EXTRAGEREA INFORMAŢIILOR DIN BAZA DE DATE

Right Outer Join Contact Qn (contact.clientid=client.clientid) Where ClientType = "B"Order By organizationname

F igu ra 8 .25 p rez in tă rezu lta te le acestei in te rogări. D upă cum vedeţi f irm a B ob’s House o f Pancakes a d isp ă ru t d in nou d in lis tă . N u u ita ţ i, scopu l u n e i u n iu n i la dreapta este de a extrage în re g is tră ri d in tabe lu l d in dreapta, in d ife re n t dacă exis tă în re g is tră r i corespondente în ta b e lu l d in stânga. F iecare în re g is tra re d in ta b e lu l d in d re a p ta , ta b e lu l C o n ta c t, are o în reg is tra re corespondentă în ta b e lu l d in stânga, ta b e lu l C lient. N ic i una d in tre aceste în re g is tră ri n u corespunde firm e i Bob’s House o f Pancakes.

FIGURA 8.25

O un iune externă la dreapta selectează în reg is trările d in tabelu l copil, ind ife rent dacă există înreg istrări corespunzătoare în tabelu l părin te .

O u n iu n e com ple t externă com bină u n iu n ile externe la dreapta şi la stânga. S u n t selectate toate datele, d in ambele tabele, in d ife re n t dacă există date corespondente lo r în tabe lu l celălalt. Deşi m u lte baze de date, ca de exem plu SQL Server, Oracle ş i D B2 supo rtă u n iu n ile com ple t externe, Access n u sup o rtă acest t ip de un iune . D ar ch ia r dacă Access ar f i su p o rta t acest t ip de u n iu n e , s itu a ţiile în care s u n t necesare u n iu n ile com ple t externe a r f i re la tiv rare.

Combinarea mai multor seturi de rezultate: utilizarea clauzei UnionCom binarea m a i m u lto r se tu ri de rezulta te este u n sub iect destu l de avansat. To tuş i, e fectu l clauze i Union este uşo r de înţeles. Clauza Union vă perm ite

Page 188: Baze de date pentru incepatori (manuale facultate)

CAPITOLUL 8 SQL-ELEMENTE GENERALE 185

să com b ina ţi două dec la ra ţii Select în tr -u n s in g u r set de rezu lta te şi ve ţi avea nevoie de această clauză de m u lte ori. C onsidera ţi s itu a ţia în care trebu ie să rea liza ţi o lis tă conso lida tă a c lien ţilo r. La început, treaba poate părea sim p lă , da r în rea lita te n u este.

D ecla ra ţia Select a fos t prezentată an te rio r în acest cap ito l, ia r exemplele de l in i i de cod au fos t prezentate tehn ic ile care vă p e rm it să extrageţi date despre c lie n ţi d in ta b e lu l C lient. în cazul c lie n ţilo r persoane fizice, num ele c lie n tu lu i este m em orat în câm purile firs tnam e şi lastname. în cazul firm elor, num ele este stoca t în câm pu l organizationnam e. Crearea u n u i extras cu toate aceste tre i câ m p u ri n u este d ific ilă . D ar dacă v i se cere să rea liza ţi u n extras cu n u m a i două câm puri? P rim u l câm p trebu ie să fie t ip u l c lie n tu lu i, care ara tă dacă acesta este persoană fiz ică sau ju r id ic ă (firm ă). A l diolea câm p se num eşte clientname şi memorează num ele c lie n tu lu i. D upă cum ş tiţ i, n u există u n câm p cu acest num e. Ş tiţ i şi că, u tiliz â n d clauza As, p u te ţi re d enum i uşo r u n câm p d in se tu l de rezu lta te . Totuş i, vă revine sa rc ina de a re u n i datele d in câm purile firs tnam e ş i lastnam e, precum şi cele d in câm pul orgenizationnam e în tr -u n s ingur câmp cu num ele c lien tu lu i. Acum , când ş t iţ i datele problem ei, să trecem la rezolvarea ei. U rm ă to r bloc de in s tru c ţ iu n i duce la rezu lta te le dorite:SELECT clienttype, lastname + ", " + firstname As client

From ClientWhere ClientType = "I"

UnionSELECT clienttype, organizationname As Client

From ClientWhere ClientType = "B"Order By ClientType

F igu ra 8.26 prez in tă rezu lta te le acestei in te rogări.

Necesitatea clauzei U n io n este dată de fa p tu l că toate rezu lta te le selectate trebu ie să aibă acelaşi n u m ă r de câm puri, ia r datele d in acelaşi câmp trebuie să a ibă acelaşi t ip . N u u ita ţ i, există u n s in g u r set de rezu lta te . P rim a in terogare va de fin i s tru c tu ra se tu lu i de rezu lta te , ia r după acest m om ent toate în re g is tră rile selectate trebu ie să aibă acelaşi n u m ă r de câm puri. In p lus, datele ace lu iaş i câm p trebu ie să fie toate de acelaşi t ip . în acest caz, deşi al doilea câm p dife ră în cele două in te rogă ri p r in fa p tu l că în p rim a s u n t selectate num ele şi prenum ele c lie n ţilo r persoane fizice, ia r în a doua s u n t selectate num ele f irm e lo r, ambele s u n t câ m p u ri de t ip text. In fina l, în tru c â t p rim a in terogare dictează s tru c tu ra s e tu lu i de rezu lta te , n u m ai este necesară clauza As după câm pul organizationnam e în a doua interogare. De fap t, a doua clauză As este ignorată. Totuş i, p e n tru consecvenţă, este o idee b u n ă să e tich e ta ţi corespunzător câm purile .

Page 189: Baze de date pentru incepatori (manuale facultate)

186 PARTEA A IV-A - EXTRAGEREA INFORMAŢIILOR DIN BAZA DE DATE

FIGURA 8.26

Clauza U n ion vă perm ite să com binaţi în tr-u n s ingur set de rezultate date،e d in m ai m ulte declaraţii S e le c t.

RezumatAcest cap ito l v-a o fe rit o prezentare generală a l im b a ju lu i SQL ş i a une ia d in tre cele m ai u tiliza te pă rţi ale acestui lim ba j, declaraţia Select. A ţi învă ţa t cum să u til iz a ţ i com anda SQL Select p e n tru a extrage date d in tabelele u n e i baze de date. Clauza From specifică ta b e lu l de bază care su p o rtă in terogarea. Clauza where oferă u n m ecanism p e n tru filtra re a da te lo r d in se tu l de rezu lta te . In te rogările de t ip Top n şi clauza Distinct reprez in tă alte in s tru m e n te p e n tru a restrânge datele d in se tu l de rezu lta te . Clauza Join vă perm ite să extrageţi date d in m ai m u lte tabele. Pe lângă toate acestea, a ţi în vă ţa t şi să fo los iţi clauza Union p e n tru a com bina datele d in m a i m u lte in te ro g ă ri în tr -u n s in g u r set de rezu lta te . în p lus , a ţi fo los it clauza As pe n tru a specifica num ele câm pu lu i d in setu l de rezultate. Această clauză este foarte u tilă m ai ales când com bina ţi datele d in m ai m ulte câm puri în tr -u n s in g u r câm p d in se tu l de rezulta te . D upă ce a ţi în ţe les elementele de bază ale l im b a ju lu i SQL, p u te ţi trece la n iş te fu n c ţii SQL m ai avansate.

Page 190: Baze de date pentru incepatori (manuale facultate)

9

SQL-DINCOLO DE GENERALITĂŢI

In acest capitol:A ؛8 doua organizare a rezultate lor: u tiliza rea clauzei Group By 3 U tiliza rea fu n c ţiilo r avansate

El A doua f iltra re a rezu lta te lo r: u tiliza rea clauzei Having 2 A tre ia filtra re a rezu lta te lor: crearea dec la ra ţiilo r SQL para ­

m etriza te

11 M odifica rea da te lo r fo los ind dec la ra ţiile Insert, Update şi Delete Rezum at

Page 191: Baze de date pentru incepatori (manuale facultate)

PARTEA A1V-A - EXTRAGEREA INFORMAŢIILOR DIN BAZA DE DATE188

în c a p ito lu l an te rio r, am prezenta t o in troduce re în u n u l d in tre cele m ai pu te rn ice program e existente - SQL. SQL este l im b a ju l bazelor de date. Dacă aveţi de gând să dezvo lta ţi baze de date, va tre b u i să în vă ţa ţi şi să în ţe legeţi acest program . în ca p ito lu l an te rio r a ţi în vă ţa t să se lecta ţi şi să organ iza ţi datele d in m a i m u lte tabele. în acest cap ito l, ve ţi face u n pas îna in te , în vă ţând să agregaţi (tota lizaţi) şi să su m a riza ţi datele. în ca p ito lu l an te rio r, a ţi în vă ţa t să rea liza ţi o lis tă a c lien ţilo r, organ iza ţi pe t ip u r i. D ar dacă trebu ie să rea liza ţi o interogare care produce o lis tă cu tip u r ile c lien ţilo r ş i n u m ă ru l de c lie n ţi de fiecare tip? Acest t ip de in terogare vă cere să ca lcu ­la ţ i n u m ă ru l de c lie n ţi de fiecare tip . SQL poate rezolva şi această prob le ­mă. Acest t ip de ope ra ţii de agregare, ca şi opera ţiile de m a n ip u la re a da­te lor cum su n t includerea, actuallizarea şi ştergerea datelor reprezintă scopul acestu i capito l.

A doua organizare a rezultatelor: utilizarea clauzei Group ByP rim u l pas p e n tru agreagarea da te lo r presupune u tiliza re a clauzei Group By. Aceasta este u n m ecanism de sum arizare a datelor. Pentru exemplificare, să considerăm in terogarea:Select clienttype

From Client Order By clienttype

F igura 9.1 prez in tă rezu lta te le acestci in terogări.

FIGURA 9.1

O lis tă sim plă cu t ip u rile de c lien ţi care apar în tabelu l Client.

شثآم؛،ءأة

mm

SiSII

ء .ملئأ>ء ص •٨٠٠٠ ب حمب '•'-أ

،،مء ه • هه ' ،ا م، ا م ء ء ' و ,،? ١۶آل . ء ! ي

ر

H M ■

Page 192: Baze de date pentru incepatori (manuale facultate)

189CAPITOLUL 9 SQL - DINCOLO DE GENERALITĂŢI

Aceste rezu lta te n u s u n t te r ib il de u tile , n u - i aşa? Totuş i, există unele in fo r­m a ţii u tile care p o t f i observate fă ră prea m u lt efort. D in aceste rezu lta te , p u te ţi vedea că există n u m a i două t ip u r i de c lie n ţi - B şi I (firm e şi persoane fizice). Şi dacă ve ţi aloca ceva tim p p e n tru a nu m ă ra m a n u a l diferite le în reg is tră ri, ve ţi vedea că p rin tre c lie n ţi se află tre i firm e ş i p a tru persoane fizice. Deşi este b ine să de ţin e ţi aceste in fo rm a ţii, n u este nevoie de u n efort prea m are p e n tru a le obţine. U n u l d in tre avantaje le pe care le oferă o bază de date este fa p tu l că p u te ţi organiza datele p e n tru a obţine ra p id astfe l de in fo rm a ţii. Valoarea da te lo r depinde de tim p . Cu câ t datele s u n t m ai vechi, cu a tâ t valoarea lo r este m ai m ică. Dacă cineva doreşte să to ta lizaze şi să sum arizeze datele m anua l, p robab il că a tu n c i când va te rm ina , datele vo r f i depăşite. Şi există în to tdeauna r is c u l e ro rilo r de num ărare . A ic i in te rv ine clauza Group By.C lauza G roup By vă perm ite să sum ariza ţi datele. Această opera ţiune este p r im u l pas p en tru agregarea şi subtota lizarea datelor. Urm ătoarea interogare prez in tă clauza G roup By, ia r f ig u ra 9.2 prez in tă rezu lta te le ei:Select clienttype

From client Group By clienttype Order By clienttype

FIGURA 9.2

Clauza Group By oferă posib ilita tea de a sum ariza datele.

¡nseit ■؛'maf Iacii ؛؛Jr**« ؛٠.،

____،«<»0 »«I »li I » !>' l -l

; F■rid to ¡ccJv tip» of dwot: B-ftgro», I-ird.riml

Page 193: Baze de date pentru incepatori (manuale facultate)

190 PARTEA A IV-A - EXTRAGEREA INFORMAŢIILOR DIN BAZA DE DATE

In terogarea precedentă este echiva lentă d in p u n c t de vedere fu n c ţio n a l cu urm ătoarea:Select Distinct clienttype

From Client Order By clienttype

De aceea, p e n tru a organiza c la r în reg is tră rile , clauza Group By este a doua m etodă de sum arizare a date lo r pe care a ţi învă ţa t-o în SQL. D ife ren ţa esenţia lă în tre clauzele Distinct ş i Group By este că u lt im a vă perm ite să agregaţi şi să su b to ta liza ţi datele. U rm ătoarea secţiune are ca sub iec t agregarea datelor.

Utilizarea funcţiilor de agregareV or f i foarte rare cazurile când ve ţi u tiliz a clauza Group By fă ră a fo los i u n a d in tre fu n c ţiile de agregare d in SQL. Cele c inc i fu n c ţii de agregare d in SQL s u n t Count ( ) , Sum ( ) , Avg ( ) , Min () ş i Max ( ) . Num ele lo r descriu des tu l de b ine ceea ce fac. De exem plu, fu n c ţia Count () to ta lizează n u m ă ru l de în re g is tră r i, fu n c ţ ia Sum () ca lcu lează to ta lu l m a te m a tic a l v a lo r ilo r câm purilo r, ia r Avg () calculează media aritm etică a va lorilo r. în urm ătoare le t re i s e c ţiu n i vo r f i prezenta te d e ta lii despre fu n c ţio n a re a fu n c ţ ii lo r de agregare.

Funcţia Count ( )F u n c ţia Count () n u m ă ră în reg is tră rile d in fiecare grup. în acest caz, există două g ru p u ri, u n u l p e n tru firm e şi u n u l pe n tru persoane fizice. în trebarea la care înce rca ţi să răsp u n d e ţi este „C âţi c lie n ţi de fiecare t ip are firm a ? ” . C odul u rm ă to r ilu s trează func ţiona re a fu n c ţie i Count (), ia r fig u ra 9.3 prez in tă rezu lta te le ob ţinu te :Select clienttype,count(*) As count

From client Group By clienttype Order By Count(*) Dese

Page 194: Baze de date pentru incepatori (manuale facultate)

F uncţia de agregare C o u n t() vă perm ite să determ inaţi nu m ăru l de în reg is tră ri din flecare grup.

CAPITOLUL 9 SQL - DINCOLO DE GENERALITĂŢI 191

FIGURA 9.3

O ricând ve ţi fo los i u n a d in tre fu n c ţiile de agregare d in SQL, ve ţi u tiliz a clauza As p e n tru a specifica num ele coloanei în se tu l de rezu lta te . A ltfe l, este p o s ib il ca m o to ru l bazei de date să-i aloce u n num e care n u este a tâ t de descrip tiv precum cel pe care l-a ţ i alege dum neavoastră . în p lus , rezu l­ta te le s u n t num ere le de în reg is tră ri, afişate în ord ine descrescătoare.

Ţ in â n d co n t ş i de ceea ce a ţi în vă ţa t în ca p ito lu l an te rio r, poate ve ţi do ri să f i l t r a ţ i se tu l de rezu lta te fo los ind clauza Where. C odul u rm ă to r este iden tic ce lu i d in exem p lu l precedent, cu o s ingu ră excepţie. In acest caz, s u n t n u m ă ra ţi doar c lie n ţii d in s ta tu l C alifo rn ia :Select clienttype,count(*؛ As count

From client Where state = 'CA'Group By clienttype Order By Count(*) Dese

F igura 9.4 prez in tă rezulta te le care apar. D upă cum vedeţi, există doi c lien ţi d in s ta tu l C alifo rn ia , a m b ii f iin d persoane fizice.

tew (Islp؛ ™؛/؛؛njert Fyimt/Recard* lool؛ w؛؛* di؟ _F،e

>■. - g M• !٤ 1؛ » • • e,؛’• - •B i â a î ؛•¿؛:1

Esacsassas seifif ؛ • < 8a '؛ <•'. W I؛؛،،S؛ gn8،*،؛"*» fc،t

1 CIlBnlTyp» j colini | " ».٢٠

Page 195: Baze de date pentru incepatori (manuale facultate)

192 PARTEA A IV-A - EXTRAGEREA INFORMAŢIILOR DIN BAZA DE DATE

FIGURA 9 .4

în com binaţie cu clauza Where, pu te ţi să agregaţi şi să f i lt ra ţ i datele în acelaşi tim p.

Operaţiuni avansate: metodologia prin care datele pot fi puse la un locSă ne o p rim câteva clipe p e n tru a exam ina puterea l im b a ju lu i SQL p r in in te rm e d iu l u n u i exem plu m ai com plica t. V i s-a ce ru t să extrageţi d in baza de date in fo rm a ţiile urm ătoare :

¡6 L is ta ca zu rilo r şi a anga ja ţilo r care lucrează la eleL is ta ca zu rilo r şi n u m ă ru l de anga ja ţi care lucrează la ele

■ L is ta ca zu rilo r şi n u m ă ru l de t ip u r i de anga ja ţi care lucrează la ele

O ricând vă co n fru n ta ţi cu o so lic ita re de extragere a date lor, p r im u l pas ar tre b u i să fie iden tifica rea tabe le lo r necesare. E xam inând cele tre i cerin ţe, observaţi că s u n t necesare cel p u ţin tre i tabele:

■ Case■ EmployeeII EmployeeClass

Dacă vă a m in tiţ i, n u există o re la ţie d irectă în tre tabelele Case şi Employee. La u n caz po t lu c ra m a i m u lţ i angaja ţi, ia r u n anga ja t poate lu c ra la m ai m u lte cazuri. A fos t necesar u n tabe l care rezolvă re la ţia m u lţ i la m u lţi, n u m it EmployeeCase. De aceea, va i i nevoie de u n a l pa tru le a tabel. F igura 9.5 p rez in tă o parte d in diagram a bazei de date TEB care conţine tabelele necesare şi re la ţiile d in tre ele.

Page 196: Baze de date pentru incepatori (manuale facultate)

CAPITOLUL 9 SQL-DINCOLO DE GENERALITĂŢI 193

Identificarea tabelelor necesare şi a re la ţiilo r d in tre acestea este p rim u l pas în constru irea unei declaraţii SQL.

FIGURA 9.5

Cu f ig u ra 9.5 în m in te , p u te ţi de te rm ina clauzele From ş i Join:FROM (EmployeeClass INNER JOIN Employee ON

EmployeeClass .EmployeeClassID = Employee. EmployeeClassID) INNER JOIN (Case INNER JOIN EmployeeCase ON Case.CaselD =

EmployeeCase.CaselD)ON Employee.EmployeelD = EmployeeCase.EmployeelD

Pasul u rm ă to r presupune determ inarea câ m p u rilo r de date care trebu ie re tu m a te în se tu l de rezultate. Pe baza in fo rm a ţiilo r solicitate, vo r f i necesare urm ătoare le câm puri:

B3 case. titleM employee . f irstname şi employee . lastname■ employeeclass.description

în afara câ m p u rilo r specificate, va trebu ie să m ai d e te rm in a ţi şi:■ N u m ă ru l de anga ja ţi

٠؛ N u m ă ru l t ip u r ilo r de anga ja ţi

Să abordăm m a i în tâ i p rim a in terogare: lis ta ca zu rilo r ş i a a n ga ja ţilo r care lucrează la ele. Această in terogare va servi ca fu n d a ţie p e n tru in te rogările urm ătoare , care vo r agrega ş i sum ariza datele. C odul u rm ă to r va fu rn iza lis ta cerută:

Page 197: Baze de date pentru incepatori (manuale facultate)

PARTEA A IV-A - EXTRAGEREA INFORMAŢIILOR DIN BAZA DE DATE194

Select Case.Title, EmployeeClass.Description,Employee.FirstName, Employee.LastName

From (EmployeeClassInner Join Employee ON EmployeeClass.EmployeeClassID =

Employee.EmployeeClassID)Inner Join(Case Inner Join EmployeeCase On Case.CaselD =

EmployeeCase.EmployeeCaselD)On Employee.EmployeeID=EmployeeCase.EmployeelD

Order By Case.Title, EmployeeClass.Description, Employee.Lastname;F igu ra 9.6 prez in tă re z u lta tu l in te rogării.

FIGURA 9.6

Setul de rezultate conţine date d in tabeleleCase,E m p lo ye e C la ss ş i Em ployee.

Este im p o rta n t să observaţi că s in g u ru l scop al ta b e lu lu i EmloyeeCase este să faciliteze u n iu n e a în tre tabelele Employee ş i Case. Dacă n u ar f i ex is ta t acest tabe l in te rm ed ia r, n u ar f i fos t p os ib il să asocia ţi m ai m u lte cazuri cu m ai m u lţ i angaja ţi.

Având la dispoziţie interogarea de bază, să trecem la interogarea urm ătoare -o l is tă cu cazurile ş i n u m ă ru l de anga ja ţi care lucrează la ele. în tru c â t n u vă preocupă num e le acestor angaja ţi, ta b e lu l Employee poate f i exclus d in in terogare . Dacă s ingu ra in fo rm a ţie de in te res este n u m ă ru l anga ja ţilo r, aceasta va f i fu rn iz a tă de ta b e lu l EmployeeCase. în p lus, în acest caz p u te ţi re n u n ţa şi la ta b e lu l EmployeeClass.

Jnd،w« tlee(؛ nseft Fsrreat S«ord، loch؛ ew؛V ؛؛٠¡

L.islHamtJones Kardon Holmes

: Little Heartless

MarySts'en

Attorney-Associate Attorney-Associate Attorney-Partner Paralegal؛

;Attoiney-Associats Paralegal

I Patent Infringement Patent Infringement؛ Patent Infringement Smith Divorce Smith Divorce

Stuart

—1

- 1 □I X|

٠ ٠ -٠٠ , “، •

6 ٠ |««|n| « < ٢ I • I " ؛ Jell- ٢..........................;.-. ■

i ill 1 I * 111؛ IS Wm!¡؛

Page 198: Baze de date pentru incepatori (manuale facultate)

CAPITOLUL 9 SQL-DINCOLO DE GENERALITÄT! 195

Dacă agregaţi datele, au tom a t înseam nă că este necesară clauza Group By. P entru această in terogare este necesară o lis tă cu cazurile ş i n u m ă ru l anga­ja ţ i lo r care lucrează la fiecare caz. Deci rezu lta te le trebu ie să fie grupate după cazuri, ia r u rm ă to ru l cod îndep lineşte această funcţie :Select Case.Title, Count(employeecase.employeecaseid) As employees

From CaseInner Join EmployeeCase On Case.CaseID = EmployeeCase.CaseID

Group By case.title Order By Case.Title

F igu ra 9.7 prez in tă rezu lta te le care apar.

FIG URA 9.7

Acest set de rezultate conţine nu m ăru l de angajaţi grupa ţi pe cazuri.

U rm ătoarea in terogare o ia pe cea precedentă şi m ai parcurge u n nive l. în in terogarea precedentă a ţi fost in te resa t de n u m ă ru l anga ja ţilo r. In această in terogare , ve ţi n u m ă ra t ip u r ile de anga ja ţi d in to ta lu l a n ga ja ţilo r care lucrează la fiecare caz. De exem plu, la cazul nerespectă rii d re p tu lu i de proprie ta te asupra p a te n tu lu i, lucrează p a tru angajaţi. Care este d is tr ib u ţia ce lor p a tru ang a ja ţi în acest caz? Aceasta este în treba rea la care ve ţi răspunde aici. C odul u rm ă to r îndep lineşte această funcţie :Select Case.Title, EmployeeClass.Description,Count(EmployeeCase.Employeeid) As Employees

S.Ä/.S؛.dp،؛ »Indo؛، ،؛Ido «؛؛'.ec¡؛ dt 'i*Ni Inseil Farmat؛؛

IS IIS S iiIPateul lnfrinqement| Smith Dr/orce

—B«SS&Bj """ I 11.s

.Dstashc;t View

Page 199: Baze de date pentru incepatori (manuale facultate)

From (EmployeeClassInner Join Employee ON EmployeeClass.EmployeeClassID =

Employee.EmployeeClassID)Inner Join(Case Inner Join EmployeeCase On Case.CaselD =

EmployeeCase.CaselD) On Employee.EmployeelD = EmployeeCase.EmployeelD Group By Case.Title,EmployeeClass.Description Order By Case.Title,EmployeeClass.Description

F igura 9.8 prez in tă rezu lta te le care apar.

196 PARTEA A IV-A - EXTRAGEREA INFORMAŢIILOR DIN BAZA DE DATE

-agjiuiEmployee«D e s c 11 p I i o n

Attorney-AssociateAltomey-PartnerParalegal

Patent Infringement Patent Infringement Patent Infringement Smith Divorce Smith Divorce

Attorney-AssociateP3talec

Record: l< I < I I

FIGURA 9.8

Setul de rezultate conţine n u m ă ru l de t ip u r i de angajaţi grupa ţi dupăc a s e . t i t l e ş i e m p lo y e e c la s s . d e s c r ip t io n .

- .*!« !*II: Fte ،؛<& Visw Jnserţ FqţimI: Bec،»ds looli ،؛Jr»i*> •؛؛؛؛

- H d Ol 7 ٠٠ ٠٠ - n SI --- ----------- - ؛£ '\ ،31. . . ....... .

Pe m ăsură ce „fo ra ţi” m ai adânc în date, veţi avea m ai m ulte câm puri în clauza Group By. In această interogare, deşi n u su n t re tu m a te num ele angaja ţilo r, ta b e lu l Employee a fos t necesar p e n tru a re tu m a t ip u l anga ja ţilo r. Cu alte cuvin te , p e n tru a trece de la ta b e lu l Case la ta b e lu l EmployeeClass, s u n t necesare tabelele EmployeeCase şi Employee p e n tru a fa c ilita un iunea .

Funcţia Sum()Deseori, va tre b u i să a duna ţi datele d in diferite în reg is tră ri în loc să n u m ă ra ţi în reg is tră rile . A ic i in te rv in e fu n c ţia de agregare Sum (). D in fe ric ire , a ţi rezo lvat deja o m are parte d in problem ele d ific ile în secţiunea anterioară . Aceleaşi concepte de la fu n c ţia Count () se ap lică şi p e n tru fu n c ţia Sum ().

Page 200: Baze de date pentru incepatori (manuale facultate)

CAPITOLUL9 SQL-DINCOLO DE GENERALITĂŢI 197

P entru a i lu s tra func ţiona re a fu n c ţie i Sum ( ) , să considerăm urm ătoare le cerinţe:

L is ta cazu rilo r, anga ja ţilo r, ore lor şi ta rife lo r aplicate:l i L is ta cazu rilo r, to ta lu l ore lor şi ta rife lo r aplicate grupate pe angaja ţi;■ L is ta cazurilo r, to ta lu l ore lo r şi ta r ife lo r aplica te grupate pe t ip u r i de

angaja ţi;

S L is ta cazu rilo r, to ta lu l ore lor şi ta rife lo r aplicate grupate pe cazuri;L ؛1 is ta cazu rilo r, to ta lu l ore lor ş i ta rife lo r aplicate grupate pe categorii

de ac tiv ită ţi;

A p licând m etodolog ia învă ţa tă în secţiunea precedentă, p r im u l pas este iden tifica rea tabe le lo r necesare p e n tru a răspunde acestor cerinţe. De la început, ş t iţ i că aveţi tabelele Employee şi Case. Poate credeţi că este necesar şi ta b e lu l EmployeeCase. D upă cum ve ţi vedea, ta b e lu l EmployeeCase n u este necesar p e n tru aceste in te rogări. în p lus va tre b u i să m ai u t iliz a ţ i şi tabelele EmployeeClass şi WorkCategory. In fina l, p e n tru a ob ţine orele şi tarifele, vă este necesar tabe lu l TimeEntryDetail. Tabelu l TimeEntryDetail se ocupă de u n iu n e a în tre tabelele Employee şi Case. F igu ra 9.9 prez in tă partea re levantă p e n tru acest set de in te rogă ri a diagram ei bazei de date TEB.

FIG URA 9 .9

Tabele le necesare p e n tru a extrage in fo rm a ţii despre orele de m u n c ă s i ta rife le aplica te , g ru p a te d u p ă anga ja ţi, cazuri, ca tegorii de a c tiv ită ţ i şi clase de anga ja ţi.

٤٠» ،)■؛ ١٠٦٠ ge*"•،؛،¡ Io•* Wmilo.» ؟٢٠!

b>؛ - -jS y . . . • •r ١]

(ww،،J>legDiT،D ؛

j ؛r؛Ft ،«(Number

؛؛٢٠ t،«؛،e؛Da؛lnâ|

،،■»،Kiemen؛؛؛ OepârtmenHO؛SurUD

first؛ Jim؛

LaitName

l؛ Addt؛؛i؛s،،،؛Ad

State ZipCods

»Hcfl»ePtxjr l i ،tension/•؛»,

Emâ4 Addre؛؛C'efi-atfti&ritlO

o>e،da5s!l؛Dnp

■910! Xj|

U n iu n ile prezentate în f ig u ra 9.9 s u n t fac ilita te de u rm ă to ru l cod SQL:FROM WorkCategory INNER JOIN ((EmployeeClass INNER JOIN

Employee ON EmployeeClass.EmployeeClassID = Employee.EmployeeClassID)

Page 201: Baze de date pentru incepatori (manuale facultate)

198 PARTEA A IV-A - EXTRAGEREA INFORMAŢIILOR DIN BAZA DE DATE

INNER JOIN([Case] INNER JOIN TimeEntryDetail ON Case.CaseID = TimeEntryDetail.CaseID) ON Employee.EmployeelD = TimeEntryDetail.EmployeelD) ON

WorkCategory.WorkCategorylD = TimeEntryDetail .WorkCategory

Până acum, aţi învăţat că, pe măsură ce creşte numărul de tabele nece­sare pentru o interogare, cu atât este mai complexă clauza Join. Nu vă faceţi probleme! In capitolul următor, veţi vedea cum pot fi create grafic înregistrările. Aplicaţia Access Query Designer oferă o interfaţă priete­noasă faţă de utilizator. In culise, este construit pentru dumneavoastră codul SQL. Scopul acestui capitol si al celui precedent este prezentarea limbajului SQL, independent de o anumită aplicaţie de proiectare a inte­rogărilor. Nu uitaţi, este posibil să vă aflaţi într-un mediu în care trebuie să creaţi manual declaraţiile SQL!

Prim a in terogare pe care trebu ie să o creaţi este lis ta b ru tă a da te lo r care vo r f i agregate şi sum ariza te p r in in te rogările urm ătoare . Aceste date s u n t fu rn iza te de codu l SQL urm ă to r:SELECT employee.firstname + ' ' + employee.lastname As employee,

EmployeeClass.Description As employeeclass,Case.Title, WorkCategory.Description AS workcategory, TimeEntryDetail.Description AS workdescription, TimeEntryDetail.Hours, TimeEntryDetail.Rate,(timeentrydetail.hours*timeentrydetail.rate) AS total

FROM WorkCategory INNER JOIN ((EmployeeClass INNER JOIN Employee ON EmployeeClass.EmployeeClassID =

Employee.EmployeeClassID)INNER JOIN ([Case] INNER JOIN TimeEntryDetail ON

Case.Case.ID = TimeEntryDetail.CaselD) ONEmployee.EmployeelD = TimeEntryDetail.EmployeelD) ON WorkCategory.WorkCategorylD = TimeEntryDetail.WorkCategory

Priviţi cu atenţie câmpul total. Interogarea returnează câmpurile cu numă­rul de ore şi tarifele aplicate din tabelul TimeEntryDetail. în plus, este returnat şi un câmp care înmulţeşte numărul de ore cu tariful aplicat.

Clauza As vă ajută să evitaţi ambiguitatea. Câmpul Description din tabelele EmployeeClass, WorkCategory şi Time EntryDetail face parte din setul de rezultate. Pentru a elimina ambiguităţile, este utilizată clauza As pentru a da câmpului din setul de rezultate un nume mai descriptiv.

Page 202: Baze de date pentru incepatori (manuale facultate)

CAPITOLUL ء SQL-DINCOLO DE GENERALITĂŢI 199

F igu ra 9.10 p rez in tă se tu l de rezu lta te nepre lucra t.

؛wd؛ ءامها ؛مبس تإمحت » ،Fÿms ؛؛،.£ ،أمب ءإءأسم

SSISSăeiniiloyae j *iri|iloÿ«eclâss

fuاءء5؟■ا'ا.ا tí0. ةلأم،!،•ثء؛ا اا،ات■؛ ا.ءم-<ا0«ء>«ء 'ةت"م؟ءءلم. ء<*مملمءمب4ا".م،ما ؛ مأ «ا |Maiyj0fü$ مof opposrnq party ؛Ilfir.ni. هم مءأم0همة ء ء ؛ه :ا ؟ Allorr؛ê؛ A،؛؛iCiàte Paient lnfiif،q؛mer,l ،ا مهب7 “٠٨؛

Allorney-Partner Paient Infrinrjí'rnerií :Court AppMrsnce Filed Ruis 37 a motion to compel discovery ؛I Oliver Holme discuss settlement offer ١٥ 1س، ؟ا.ام Heartless Attorney-Associate Smith Divorce Client .:؛ail Phoned ا

.•Research Researched new state divorce lav؛ Sally Starr ;Paralegal Smith Divorce

Reco. ا ه «■1< ا :

' •-.-آ-‘:C-Jt«l;wëtView

FIGURA 9.10Lista b ru tă a datelor sumarizează grupurile de angajaţi, cazuri, t ip u r i de a c tiv ită ţi şi clase de angajaţi.

at~e toate tabelele p en tru fiecare؛؛Importau، să observaţi eă n u su n t riece؛ Este in terogare . Când in t ra ţ i în deta lii, a tu n c i ve ţi avea nevoie de m a i m u lte tabele p e n tru a supo rta u n n ive l m ai m are de g ra n u la rita te a d e ta liilo r. F igu ra 9 .10 prez in tă cea m ai m are can tita te de deta lii. A cum ve ţi ineepe

٥ ٠٠ ء de ل ٠ ة ؛ ة ، م آ de paşi (aluzie la 00 €آ p rove rbu l chinez o10ه că lă to ria de depăşi începe cu primul pas. - n. trad.) şi ve ţi lu c ra independen t.

C odul u r- ئزهحآلتبا.؛.ا ?rim a in terogare presupune sum arizarea date lo r dupăm ă to r rezolvă acest lu c ru:SELECT employee.firstname+' '+employee.lastname AS employee,

Sum (timeentrydetail.hours*timeentrydetail.rate) AS totalFROM Employee

INNER JOIN TimeEntryDetail ON Employee.EmployeelD =TimeEntryDetail.EmployeelD

employee.iastname؛' '+GROUP BY employee.£irstname Order By Sum(timeentrydetail.hours*timeentrydetail.rate) Desc

Page 203: Baze de date pentru incepatori (manuale facultate)

F igu ra 9.11 prez in tă se tu l de rezu lta te ale in te rogării.

FIGURA 9.11

Acest set de rezultate totalizează num ăru l de ore în m u lţit cu ta r ifu l ap lica t şi sumarizează după angajaţi.

200 PARTEA A I V A - EXTRAGEREA INFORMAŢIILOR DIN BAZA DE DATE

Ce a ţi zice de sum arizare pe baza categoriei de activ ita te? Categoriile de a c tiv ită ţi există în două contexte. M ai în tâ i, ele există în m od independent. Apoi, ele exis tă în func ţie de angaja ţi. Cu alte cuvin te , p u te ţi sum ariza datele n u m a i pe baza ca tegoriilo r de a c tiv ită ţi sau pe baza ca tegoriilo r de a c tiv ită ţi ş i de angaja ţi. C odul u rm ă to r sum arizează datele pe baza a două categorii:SELECT WorkCategory.Description AS workcategory,

Sum(timeentrydetail.hours*timeentrydetail.rate) AS total FROM WorkcategoryINNER JOIN TimeEntryDetail ON Workcategory.WorkCategorylD =

TimeEntryDetail.WorkcategoryGROUP BY WorkCategory.Description ORDER BY Sum(timeentrydetail.hours*timeentrydetail.rate) Dese

F igu ra 9.12 p re z in tă rezu lta te le acestei in te rogări.

F igu rile 9.11 şi 9.12 prez in tă două puncte de vedere asupra aceloraşi date. F igura 9.11 prezin tă datele sum aiiza te după angajaţi, ia r figu ra 9.12 prezin tă datele sum ariza te după categoria de activ ita te . C apacitatea de a diseca, răsuc i ş i sum ariza datele în acest m od este acea valoare pe care o furn izează organ izaţie i l im b a ju l SQL şi baza de date. Ce a ţi zice de o com bina ţie în tre aceste două in te rogă ri - u n sum ar a l a c tiv ită ţii după categoriile de a c tiv ită ţi şi după angaja ţi? Acest lu c ru necesită două nivele de grupare. Aşa cum am m e n ţio n a t deja, cu câ t su n t fu rn iza te m ai m u lte de ta lii, cu a tâ t m ai m u lte tabele vo r f i necesare în in terogare . C odu l u rm ă to r realizează această in terogare m a i deta lia tă :

Page 204: Baze de date pentru incepatori (manuale facultate)

CAPITOLUL 9 SQL-DINCOLO DE GENERALITĂŢI 201

٠٠-، ٠٠٠ .»Mndc؛ Insert FfflTOSt Recofds Tods ..

.. /TT .. ......

'JuA ^ h — ....

؛١، HSW■

Timo£n،ryC<st،lr،Ci،ego<y؛Wc

B jH H i l------ ~ — —

■ :

Setul de rezultate totalizează nu m ăru l de ore în m u lţit cu ta r ifu l şi sumarizează datele după categoriile de activ ită ti.

FIGURA 9.12

SELECT WorkCategory.Description AS workcategory,employee.firstname+' '+employee.lastname AS employee, Sum(timeentrydetail.hours*timeentrydetail.rate) AS total

FROM WorkcategoryINNER JOIN (Employee INNER JOIN TimeEntryDetail ON

Employee.EmployeelD =TimeEntryDetail.EmployeelD)ON Workcategory .Workcategory ID = TimeEntryDetail .Workcategory

GROUP BY workcategory.description,employee.firstname+'' -،-employee. lastname

ORDER BY workcategory.description,Sum (timeentrydetail.hours*timeentrydetail.rate) DescF igu ra 9.13 prez in tă rezu lta te le acestei in te rogări.

Să ne op rim p u ţ in p e n tru a diseca o parte d in date. F igura 9 .12 ara tă că a c tiv ită ţile legate de cercetare au fos t taxate cu 1375 $. F igu ra 9.13 ara tă că Sally S ta r a generat 1000 $, ia r M ary Jones a generat 375 $ p r in a c tiv ită ţi de cercetare. Dacă p r iv im fig u ra 9.11, vedem că M a ty Jones a generat u n ve n it de 1125 $. C um au fos t d is tr ib u iţ i ce ila lţi 750 $ pe care M ary i-a căştigat? F igu ra 9.13 ara tă că re s tu l sum ei a fos t o b ţin u t p r in a c tiv ită ţi de lua re a depoziţiilo r.

Page 205: Baze de date pentru incepatori (manuale facultate)

202 PARTEA A IV-A - EXTRAGEREA INFORMAŢIILOR DIN BAZA DE DATE

Mndow؛؛ ٤٠٠$؛ ؛mat R«wd5>؛irt F؛r| ؛؛٠١٠ t؛e ،d£،

■r-Cl —mmMark Heartless.............؛I Cal

Appearance Oliver Holmes

» !►'1■ I

TnwEn،riC«،،«I\VorwCate،y>ry

mm mMâ1g؛ [□ 1 x||b-atMScW View

FIGURA 9 .13

Acest set de rezultate totalizează n u m ăru l de ore în m u lţit cu ta r ifu l şi le sumarizează după categoriile de activ ită ţi şi după angajaţi.

Până acum , a r i i t re b u it să observaţi că există u n m odel care se repetă. N ive lu l de deta liere de care aveţi nevoie este d irec t legat de n u m ă ru l de tabe le necesare, de n u m ă ru l c â m p u r ilo r d in s e tu l de re z u lta te ş i de c o n ţin u tu l clauze i Group By. P entru a fu rn iza u n argum en t ş i m ai solid, să considerăm u n set de rezu lta te care sum arizează după caz. C odul u rm ă to r este foarte asem ănător ce lu i precedent care că sum arizează după categoria de ac tiv ita te şi cu cel care sum arizează după angajaţi:SELECT Case.Title,

Sum(timeentrydetail.hours*timeentrydetail.rate) AS total FROM Case

INNER JOIN TimeEntryDetail ON Case.CaseID = TimeEntryDetail.CaseID

GROUP BY Case.TitleORDER BY Sum(timeentrydetail.hours*timeentrydetail.rate) Dese

F igu ra 9 .14 p rez in tă rezu lta te le acestei in terogări.

A cum , v i se pare com p lica t să sum ariza ţi m a i departe această in terogare după anga ja ţi ş i după categoriile de ac tiv ită ţi? Procesul n u este com plica t: trebu ie n u m a i să in tro d u c e ţi ta b e lu l corespunzător şi să rea liza ţi u n iu n e a cu in terogarea, să in tro d u ce ţi câm purile sup lim en ta re la l is ta de selecţie şi, în fina l, să in tro d u c e ţi câm purile în clauzele Order By ş i Group By.D ar dacă d o r iţ i n u m a i să de te rm ina ţi to ta lu l general al ve n itu r ilo r generate? Deoarece n u s u n t necesare de ta lii, vă aştep ta ţi ca decla ra ţia SQL să fie foarte s im p lă . Ia tă codu l - ju d e c a ţi ş i dum neavoastră!

Page 206: Baze de date pentru incepatori (manuale facultate)

SQL-DINCOLO DE GENERALITĂŢI 203

‘ *r. ؛ ١١٠٠ ٣٠٣; وءس .أس مصأس >مءب»

ء

؛أمو->بمح.أ.إل, 'ء'مح-تك' تت أ

م 1مء«سمء>اسWorfcutegarv

.سمسس؛ .ف':مح،

عا ه س sills¡

Setul de rezultate totalizează nu m ăru l de ore în m u lţit cu ta r ifu l şi sumarizează datele după cazuri.

FIGURA 9.14

SELECT Sum(timeentrydetail.hours*timeentrydetail.rate) AS total FROM TimeEntryDetail

F igu ra 9.15 p rez in tă rezu lta te le acestei in te rogări.

FIGURA 9.15

Setul de rezultate furnizează to ta lu l general al nu m ă ru lu i de ore în m u lţit cu ta rifu l.

إلء؛ي إل م س insen Ferm،؛ Picwds اس_ :

ء. . . . . . . . . . . . .

ح■ 'ت:م

ء

m m m .؛؛أإل;مح:-هيظإ:قلث

Page 207: Baze de date pentru incepatori (manuale facultate)

204 PARTEA A IV-A - EXTRAGEREA INFORMAŢIILOR DIN BAZA DE DATE

Doarece este ca lcu la t to ta lu l da te lo r d in în treg tabe lu l, n u s u n t necesare clauzele Order By şi Group By.în s fâ rş it, dacă era ţi preocupa t de sum arizarea date lo r p e n tru u n s in g u r angaja t, p e n tru u n s in g u r caz, p e n tru o categorie de a c tiv ită ţi ş.am .d.? Trebu ie n u m a i să in tro d u ce ţi clauza Where p e n tru a f i l t ra datele d in se tu l de rezu lta te . C odu l u rm ă to r extrage datele de sum arizare p e n tru cazul de d ivo rţ S m ith :SELECT Case.Title,

Sum(timeentrydetail.hours*timeentrydetail.rate) AS total FROM CaseINNER JOIN TimeEntryDetail ON Case. CaseID=TimeEntryDetail. Caseid

WHERE case.title="Smith Divorce"GROUP BY Case.TitleORDER BY Sum(timeentrydetail .hours*timeentrydetail. rate) Dese

F igu ra 9 .16 p rez in tă rezu lta te le acestei in te rogări.

FIGURA 9 .16

Setul de rezultate furnizează un to ta l al ve n itu rilo r ob ţinu te în tr-u n an um it caz fo losind clauza W here.

Funcţia Avg ( )F u n c ţia Avg (), aşa cum sugerează ş i num ele ei (aug este prescurta rea de la average = medie), calculează o medie p o rn in d de la expresia in tro d u să în a rgum en tu l ei. C odul u rm ă to r este u n exem plu s im p lu de u tiliza re a acestei fu n c ţii:

V،ew Insert FgrmM Picordi

■ - ' : ' ■ .

totalOivotcij

• Iul’•!

:■■v؛

؛ ٩*..... ٠ ? !* . - -I vwv_______

Page 208: Baze de date pentru incepatori (manuale facultate)

SELECT Avg(defaultrate) As AverageRate From Employeeclass

F igu ra 9 .17 p rez in tă rezu lta te le acestei in terogări.

CAPITOLUL 9 SQL - DINCOLO DE GENERALITĂŢI 205

..............

- -asscrrrv«،،'٠٠ I ؛

"1..—r—i..........;.

m ١ i ٠ ■ v ■ WMMMi؟ i l i l i ® lap

9.17 FIGURA

F ؛( uncţia Avg calculează media expresiei din

.argum ent

F igu ra 9 .17 p rez in tă ta r ifu l m ediu ap lica t de t ip u r ile de anga ja ţi ai firm e i.

Funcţiile M in ( ) şi Max ( )D ar dacă scopu l dum neavoastră ar f i de term inarea v a lo r ilo r m in im ă şi m axim ă ale u n u i a n u m it câm p d in tr -u n tabel? A ic i in te rv in fu n c ţiile de agregare Min () şi Max (). C odul u rm ă to r ilus trează func ţiona re a acestor fu n c ţii:Select Min(defaultrate) As minrate,

Max(defaultrate) As maxrate From employeeclass

F igu ra 9.18 prez in tă rezu lta te le acestei in te rogări.

Page 209: Baze de date pentru incepatori (manuale facultate)

206 PARTEA A IV-A - EXTRAGEREA INFORMAŢIILOR DIN BAZA DE DATE

.٥٠٠ »ÿ>r*k ؛؛Vmv [ns«ft Forros، Too ،٤٠ t*e

— r “ “ ..... ........

mimóte inaxr

■HRB،،،riJ: I« I • 1

QCñJK

FIGURA 9.18

F uncţiile M in () şi Max () retum ează valorile m in im ă, respectiv m axim ă ale expresiei d in argum ent.

A doua filtrare a rezultatelor: utilizarea clauzei H a v in gAdesea, va tre b u i să f i l t ra ţ i rezulta te le pe baza date lor agregate. De exemplu, poate d o r iţ i să vedeţi n u m a i în reg is tră rile în care u n angaja t a generat m ai m u lt de 1000 $. C odu l u rm ă to r u tilizează clauza H aving p e n tru a obţine rezu lta te le dorite :SELECT employee.firstname+' '+employee.lastname AS employee,

Sum (timeentrydetail .hours*timeentrydetail. rate) AS total FROM Employee

INNER JOIN TimeEntryDetail ON Employee.EmployeelD = TimeEntryDetail.EmployeelD

GROUP BY employee.firstname+' '+employee.lastname Having Sum (timeentrydetail .hours*timeentrydetail. rate) >1000 Order By Sum (timeentrydetail .hours*timeentrydetail .rate) Dese

F igu ra 9 .19 prez in tă rezu lta te le acestei in te rogări.

C lauza Having funcţionează pe baza date lo r agregate. Dacă a ţi f i încerca t să u tiliz a ţ i clauza where, SQL ar f i generat o eroare. Pe de a ltă parte, fo losind c la u za Where, ca de exem p lu , Where timeentrydetail.hours * timeentrydetail. rate > 1000, c r ite r iu l a r f i fos t a p lica t n u m a i p e n tru în re g is tră rile d in ta b e lu l TimeEntryDetail. Orice în reg is tra re care n u depăşeşte pragu l de 1000 $ a r fi fost ignorată. în acest caz, d o r iţ i m ai în tâ i să agregaţi toate în reg is tră rile p r iv in d t im p u l necesar cazu rilo r, apoi să a p lica ţi c r ite r iu l de filtra re .

Page 210: Baze de date pentru incepatori (manuale facultate)

FIGURA 9 .1 9

Clauza H aving vă perm ite să f i l t ra ţ i setu l de rezultate pe baza datelor agregate.

C A P IY C Î.U LS SQL-DINCOLO DE GENERALITĂŢI 207

Dacă dorit¡ să fie aplicat criteriul fiecărei surse de înregistrări, utilizaţi r» clauza where. Dacă doriţi să aplicaţi criteriul de filtrare rezultatelor obtinute*؟؟؛؛؛

.Indiciu] prin agregare, utilizaţi clauza Having

A treia filtrare a rezultatelor: crearea declaraţiilor SQL param etrizateîn exem p lu l precedent, dec la ra ţia SQL a a vu t ca scop să re turneze date sum ariza te n u m a i p e n tru cazul de d ivo rţ S m ith . Adesea, ve ţi d o ri să lă sa ţi u tiliz a to ru l să specifice cazul. Problema aceasta apare în două a rii im portan te d in dezvoltarea a p lic a ţiilo r p e n tru baze de date.

E v iden t, este o prob lem ă p e n tru baza de date. Este ş i o prob lem ă p e n tru dezvo lta rea in te r fe ţe i cu u t i l iz a to ru l. P rob lem ele p r iv in d in te r fa ţa cu u t iliz a to ru l s u n t d iscu ta te în partea a cincea a că rţii. Problem ele p riv in d m o d u l în care baza de date se co n fru n tă cu aceste d e c la ra ţii „d inam ice în SQL” vo r f i d iscu ta te acum .

D ec la ra ţiile SQL care so lic ită u t iliz a to ru lu i in troduce rea de date se num esc in te rogă ri param etriza te . D e fin iţia decla ra ţie i SQL conţine u n placeho lder în lo c u l u n e i v a lo r i statice. P entru a i lu s tra acest lu c ru , să considerăm codu l u rm ă to r:

wdî؛؛» *Jnsert Fa'ms ١٠٧١'> dt؛، ţin

I Mary Jones

Record: i<i < 11

Giouo،

.Pafjhett View

Page 211: Baze de date pentru incepatori (manuale facultate)

208 PARTEAAIV-A-EXTRAGEREA INFORMAŢIILOR DIN BAZA DE DATE

SELECT Case.Title,Sum(timeentrydetail.hours*timeentrydetail.rate) AS total

FROM CaseINNER JOIN TimeEntryDetail ON Case.CaseID=TimeEntryDetail.CaseID WHERE case.title=[introduceti numele unui caz]GROUP BY Case.TitleORDER BY Sum(timeentrydetail.hours*timeentrydetail.rate) Dese

F igu ra 9.20 a ra tă ce se în tâ m p lă la executarea acestei in te rogări. V a apărea o casetă de dia log care vă perm ite să specifica ţi num ele cazu lu i.

FIGURA 9.20

Interogările param etrizate perm itu t iliz a to ru lu i să specifice crite riu l îna inte de execuţie.

F igu ra 9.21 prez in tă rezu lta te le in te ro g ă rii după ce u tiliz a to ru l a in tro d u s o valoare.

in ca p ito lu l an te rio r v-a fos t prezenta t carac te ru l w ildea rd *, u tiliz a t în Access. In te rogările param etriza te p o t fo losi ş i ele acest caracter. S ingura d ife ren ţă este că, în lo cu l op e ra to ru lu i =, trebu ie să fo los iţi opera to ru l Like. F ig u ra 9 .22 p re z in tă o in te rogare pa ram e triza tă care im p lem entează o cău ta re w ildea rd , ia r f ig u ra 9.23 prez in tă rezu lta te le in te rogării.

.ءسء Loc؛؛؛ ،؛سم.■« رهء E،e ٤« v»w lr؛؛wt 2ل

e • . '®ظة،ب *B آلرهء ؛-مح©"مح-وا-;

ب م ء ء ء ه م ه ءن م ' ءمءا------------------------------*آإمحءمب امتةوآءآمسمإ --------------------------------

a, if

،0 e؛a C4 ءصء •٨٢٢١ إ

11>

Page 212: Baze de date pentru incepatori (manuale facultate)

FIGURA 9.21

Acest set de rezultate a fost generat de o interogare param etrizată.

CÄP?'f€؛LUL 9 SQL - DINCOLO DE GENERALITÄT! 209

FIGURA 9 .2 2

O peratorul L ik e şi caracterul w ildcard pot fi utiliza te în in terogările param etrizate.

Mii®

Record:

3 EnţtoyeeCa«؛ El Efrp،oy«CI؛«

TfiwEntfyiM 0!«؛w v؛EU W،rKâ

!،Joax

: ؛٢٠٠١٢٠٠•r !»،nan? i•،* ([١٠٠٠« K#oh/ ٠ ،١« ؛

plsass sptcifv a Ija I

fttryO<a* * ؛ £ <1W،ri.:،،igorv

t i (

■BBB Li؛'؛،؛-»

Page 213: Baze de date pentru incepatori (manuale facultate)

fíe ٤٠* View ;ríen fqrmai Peto؛¿• Isol» ؛ÿr*،»■ ؛٠٠١

E in p lo y M lD jf lulH.iine

tiad(AjjlofJ'jTQ■

٤٠، ¿'*«W. is•*؛،؛, ؛•*«Smfeâ*؛ :I_________J.؛

Icnaüib-C^(«؛WarKategay

«؛؛؛؛؟%tWtMhcKVm'

PARTEA AIV-A - EXTRAGEREA INFORMAŢIILOR DIN BAZA DE DATE

, ١ ٠ ؟• ٠ €1؟؛ '•، ٠

" i - * " ::'Z■٠■ ؟ -٨١ - •٠ ٠١٢

I,؛" ؟’؟ ، ' y| A | ٠؟ . li l iw l j Oly؛j5< u î..lS * iir i١ S-re،■: Aci ٢ Stvih n i l i n n ' :3 Ma

W 55 ؛؛íioen Ws؛ ís itlíb tí• ؛SmallLuni؛i) ؛*S; ■!،،tbins ، î ’ > 1 ' i

„ ٧٢----

FIGURA 9.2Rezultatele in te rogării param etrizate în care a fost u tiliz a t caracterul wildcard pentru a efectua o căutare a num elor de t ip u l S*.

Modificarea datelor folosind declaraţiileInsert, Update şi DeletePrezentarea in tro d u c tivă a lim b a ju lu i SQL este aproape încheiată . Singurele elemente răm ase ned iscu ta te s u n t acele p o rţ iu n i ale l im b a ju lu i D ata M a- n ip u la tio n Language (DML) care vă pe rm it să adăugaţi, să m o d ifica ţi şi să şte rge ţi datele. D ec la ra ţiile SQL care fac ilitează aceste o p e ra ţiu n i s u n t Insert, Update şi Delete. Această secţiune prez in tă o scu rtă in troduce re în aceste com ponente SQL DM L. Aşa cum ve ţi vedea, dec la ra ţiile Insert, Update şi Delete s u n t foarte sim ple ş i uşo r de înţeles.

Declaraţia In s e r tD ecla ra ţia Insert este a lcă tu ită d in tre i pă rţi. Prim a d in tre ele desemnează ta b e lu l cu care lu c ra ţi. A doua este o lis tă de câm puri. A tre ia parte este o lis tă de date. C odul u rm ă to r ara tă cum ar fu n c ţio n a o declara ţie In se rt în ta b e lu l D epartm ent:Insert Into Department

(Description)Values ("Criminal Law")

F igu ra 9.24 prez in tă m odu l în care este executată această in terogare în Access.

Page 214: Baze de date pentru incepatori (manuale facultate)

CAPITOLUL و SQL-DINCOLO DE GENERALITĂŢI 211

مه£ إلمإسم ¡n«؟t ءص تمموأ مباه

ئ:ء ؛مح.ة.ءأ

<8اا OepafTnienilO »ا[4ااااااProperly ١ ااا1أا،ءااءلار

i»w «»«2؛ EiWKcnm 3 Ajiiaiiitt ،~r؛،et«tn¿ ي;مح ><،؛؛؛

مم'ءرمممس)ان*ااهاممم”ل Comnietcial 4 او،اامحاVakjnمم

(r؛loNumb

r~ Z T

ذ،-؛'تيغع'.ئP rin executarea declaraţiei SQL In s e r t , a fost in trodus departam entu l C rim ina l Law.

FIGURA 9.24

Unele bazy de date acceptă următoarea declaraţie:Insert Int© Department

Values ("Criminal Law")Cu alte cuvinte, unele baze de date vă permit să omiteţi ه listă explicită de cămpuri. Access, totuşi, necesită ه listă de cămpuri. Omiterea acestei liste nu este ه idee bună, decarece tăceţi presupunerea că structura de bază a tabelului nu s-a mcdificat. Dacă structura nu s-a modificat, este foarte posibil să obţineţi o eroare prin codul SQL. Explicitănd lista de cămpuri, codul dumneavoastră este mai lizibil şi mai uşor de întreţinut. Iar dacă tabelul utilizează valorile implicite, trebuie numai să precizaţi câmpurile în care trebuie completată o valoare.

După ce introduceti în tabel o nouă valoare, cum puteti determina valoarea cheli ei primare? Nu uitati, sistemul generează valoarea cheii. întrucât sunteti sigur că aceasta este valoarea maximă din tabel, funcţia Max () va rezolva problema:

Select Max(departmentid) As lastkey From department

Page 215: Baze de date pentru incepatori (manuale facultate)

PARTEA A IV-A - EXTRAGEREA INFORMAŢIILOR DIN BAZA DE DATE212

F igura 9.25 prez in tă o s itu a ţie în care în tabe l s u n t in troduse m a i m u lte va lo ri. Se pune n u m a i prob lem a a fişă rii tu tu ro r câ m p u rilo r cu care lu c ra ţi şi a va lo rilo r corespondente acestora în câm puri.

FIGURA 9 .25

Declaraţia SQL I n s e r t perm ite in troducerea m ai m u lto r valori în nou l rândEm ployeeClass,

Declaraţia U pdateD ecla ra ţia U pdate conţine două p ă r ţ i im portan te . Prim a parte desemnează ta b e lu l cu care lu c ra ţi. A doua este o l is tă a câ m p u rilo r ş i a n o ilo r va lo ri care trebu ie in troduse în ele. Codul u rm ă to r m ăreşte cu 10 % valoarea ta r ifu lu i im p lic it d in ta b e lu l EmployeeClass:Update EmployeeClass

Set DefaultRate = DefaultRate * 1.10F igu ra 9.26 p rez in tă m odu l în care este executată această in terogare în Access.

D ecla ra ţia Update poate f i com ple ta tă cu o clauză Where. De exem plu, dacă d o r iţ i să m ă r iţ i cu 10 % n u m a i ta rife le care depăşesc 500 $ , trebu ie să scrie ţi u n cod ca acesta:Update Employeeclass

Set DefaultRate = DefaultRate * 1.10 Where DefaultRate>500

t؛،t -»^-؛، ،١I2ue*y loo *.١»W* ¡r ٤٠١

t . ٠٠, Ú\0»soipllon_____EmployeeClj« f~]

t Alltmej Asţociate ؛٠ L،?ga 7؛ Secreta'؛»

3 Paralegal <

£٠٠١ ,mliR.il؛؛

•• ' •....- ;D l x j lom«y.Par1r>،r؛Al

Patent Attorney؛umber);

W،؛ m H N5ERT INTO EmptoyieOs ,{ption، defauKtste؛descr ) ' -,,r ؛

(300 ,1'toiney؛Valu«( ”P«،en، A < ٠

jiLdl

■a-. ...:;.,-gqMi

Page 216: Baze de date pentru incepatori (manuale facultate)

213 SQL-DINCOLO DE GENERALITĂŢI ؟ 2؛,CAM TOLiJ

V،-w Irsert 5؛u،fy؛¡Vytow ،؛؛١١

a ؛؛ .......‘ ٢٠^ ' B ؛’٠٠ ٠٠«،’ t)w ii|.lio n Ţ liglă.ilrH■'!»■ f -r_____Ti7iipipy«e-:ijri

j r f f i.¿- ' ؛ -0Cl ' ؟ . ؟0ci)؛te t؛' I Atlc'»<ry-4؟

3 P،u .*j»i «t •f■ fm *f.¿? fe j& ffiT-r .»٢ ٩ ٤ ~r ؛* »!٤١؛ ٠h I s W, * * S i V!؛؛ ¡؛*J AilcfiiejPirtn،• 165000 WţjM IJ

؛____________4. ؛r:^ ^ -.,... - ٠ § , l/؟?îi؛؛/ i'fctavMii«،، Ti ؛، .٠٠٠٠T• .»؛،vis ,،*-؛ ■؟S؟*£hM8»9؛&«S

٠١! l ٠ C*،»،!»*e - ١٠٠

O ¿"،Wree* C£-3 »*«>:*،؛

£3 t"v*oyct<.laa

-3 .ViJ!ErtiiO! » • ؛ ) » ، ؛3 ،

«n -.Vcci''،V«g،x

Valorile tarifului implicit au fost modificate prin declaraţia SQL Update.

FIGURA 9.26

Dacă trebu ie actua liza te va lo rile d in m ai m u lte câm puri, trebu ie n u m a i să separa ţi p r in v irg u lă num ele acestor câ m p u ri şi va lo rile lo r d in lis ta scrisă în declaraţie. P ro to tipu l u rm ă to r poate ilu s tra m odu l în care poate i i realizată această sarcină:Update «numeletabelului»

Set <<campulx>> = « n o u a valoare>>, cccampuly» = « noua valoare»,« c a m p u l z » = « noua valoare»

where « c a m p » = « v a l o a r e »

Declaraţia DeleteD ecla ra ţia Delete are două p ă r ţ i im po rtan te . Prim a, ca ş i în cazul declara­ţ i i lo r Insert şi Update, este tabe lu l cu care lu c ra ţi. A doua este clauza Where pen tru a s tab ili râ n du rile care trebuie şterse. Codul u rm ă to r va încerca să şteragă toate în reg is tră rile d in ta b e lu l Case:Delete

From Caseîn tru c â t n u există clauza where care să stabilească datele care trebu ie şterse, SQL presupune că d o r iţ i să ştergeţi toate datele. Acest lu c ru este va lab il şi p e n tru decla ra ţia update. In cazul actua liză rilo r, dacă n u preciza ţi datele care trebu ie actua lizate , SQL presupune că d o r iţ i să le a c tu a liza ţi pe toate.

Page 217: Baze de date pentru incepatori (manuale facultate)

214 PARTEA A IV-A - EXTRAGEREA INFORMAŢIILOR DIN BAZA DE DATE

D in fe ric ire , există u n m ecanism în co rpo ra t care vă a ju tă să e v ita ţi com pro­m ite rea in te g r ită ţ ii bazei de date. Dacă vă a m in tiţ i, în ca p ito lu l 7 v-a fost prezen ta t concep tu l in te g r ită ţ ii re fe ren ţia le . Anexa B, con ţine o l is tă a re la ţiilo r d in baza de date. Despre tabe lu l Case pu tem spune că are o re la ţie u n u la m u lţ i cu ta b e lu l TimeEntryDetail. în tru c â t în baza de date su n t u tiliza te ştergerile res tric ţiona te , ia r p e n tru fiecare caz există în re g is tră ri în ta b e lu l TimeEntryDetail, ştergerea u n u i caz va f i im pos ib ilă . F igu ra 9.27 ara tă ce se în tâ m p lă dacă înce rca ţi să ştergeţi în re g is tră ri d in ta b e lu l Case.

FIGURA 9.27Regulile de in tegrita te referenţia lă vă îm piedică să ştergeţi date, adică să com prom ite ţi in tegrita tea referenţia lă a bazei de date.

Deşi caseta de dia log d in figu ra 9.27 vă în treabă dacă d o r iţ i să co n tin u a ţi, în reg is tră rile n u vo r f i şterse. Regulile de in teg rita te re fe ren ţia lă configura te de dum neavoastră p e n tru baza de date s u n t im uab ile .

C odul u rm ă to r oferă u n u lt im exem plu, care încorporează clauza Where în dec la ra ţia Delete:Delete

From EmployeeClass Where EmployeeClassID = 5

Dacă în clasa de anga ja ţi pe care d o r iţ i să o ştergeţi n u există angaja ţi, opera ţia de ştergere va reuş i, deoarece in teg rita tea re fe ren ţia lă n u este încă lca tă în acest caz.

rr-rr،!؟

-!Di XIM،te From Cad،؛ ، tn D b؛D؟

Title

s LIn.î i" ، :’ID ؛؛Ca

Empto.c، ID Client:؛،

٩٠٧٠•، Qjery in Design ٠ ing ،,«ard؟e (jjery by uStartDate

Tnat'at؛itSCTsrtL؟ * ■ ،

Department©CoutUDJuijelD

CaselD ¡DocfceiHiimheţ Title5 ،001• 150 Patent Infringement 7 Smith Divorce

(AuloNumbei) ■

؛2323222!Microsoft Access can't delete 2 record(•) in tlie delete query due to key violation، and 0 record(،) due to lock violations.

anyway? ٠٠٠٢ Do you want to run ttts action ic، Y»s.؛ ,un tha ouery؛ To tgrore th® e،rwis) and

-b؛M ،،؛•causes ct 'h i •Mxkyris, c ؛«*or an «vpianatfcn of t

Page 218: Baze de date pentru incepatori (manuale facultate)

CAPITOLUL 9 SQL-DINCOLO DE GENERALITĂŢI 215

Rezumatîn acest cap ito l, am extins d iscu ţia despre conceptele SQL învă ţa te în ca p ito lu l 8. C a p ito lu l s-a concen tra t asupra u n o r u til iz ă r i avansate ale l im b a ju lu i SQL. V a tre b u i adesea să agregaţi datele fo los ind fu n c ţiile Sum (), Count () şi Avg ( ) . In fu n c ţie de gradu l necesar de g ra n u la rita te a datelor, va tre b u i să în co rp o ra ţi şi clauza Group By. In p lus , fu n c ţiile Min () şi Max {) oferă o cale s im p lă de a extrage va lo rile m in im ă şi m axim ă ale u n u i câm p da t d in tr -u n tabel.

D upă agregarea date lor, este foarte pos ib il să d o r iţ i să f i l t ra ţ i se tu l de re zu l­ta te pe baza rezu lta te lo r calcu la te . Aşa cum a ţi învăţa t, clauza Where n u vă va a ju ta în această s itua ţie , ia r în lo cu l ei va tre b u i să u tiliz a ţ i clauza Having. C lauza Where acţionează asupra date lo r sursă în t im p u l execuţie i in te rogării, ia r clauza Having acţionează asupra se tu lu i de rezulta te ob ţinu te după te rm ina rea execuţie i in te rogă rii. In fina l, a ţi în vă ţa t in te rogările p a ra ­m etriza te ş i alte com enzi d in s u b lim b a ju l D M L d in SQL: Insert, Update şi Delete.Acum , când a ţi în ţe les elementele esenţiale ale lim b a ju lu i SQL, p u te ţi u tiliza in s tru m e n te le grafice p e n tru in te rogă ri d in Access. Scopul acestu i cap ito l şi a l ce lu i precedent este să vă a ju te să în ţe legeţi SQL ca lim b a j, indepen­dent de im plem entarea sa în tr -u n caz particu la r. D upă ce a ţi înţeles lim ba ju l, este m u lt m ai uşoară adoptarea in s tru m e n te lo r grafice care vă a ju tă să ev ita ţi com plexita tea co d u rilo r SQL. De asemenea, pe m ăsură ce face ţi p ro ­grese pe calea dezvo ltă rii a p lica ţiilo r p e n tru baze de date, va tre b u i să re ­cu rge ţi adesea la codu l SQL in c lu s în ap lica ţii. M ai s im p lu spus, dacă aveţi de gând să deven iţi dezvolta to r de a p lica ţii p e n tru baze de date sau ad­m in is tra to r al bazelor de date, trebu ie să cunoaşte ţi şi să u t iliz a ţ i l im b a ju l SQL!

Page 219: Baze de date pentru incepatori (manuale facultate)

10

INCLUDEREA INTEROGĂRILOR SQL IN BAZA DE DATEIn acest capitol:

Prezentare generală a ap lica ţie i Q uery Designer d in Access Crearea in te ro g ă rilo r avansate

■١ R ezum at

Page 220: Baze de date pentru incepatori (manuale facultate)

218 PARTEA A IV-A - EXTRAGEREA INFORMAŢIILOR DIN BAZA DE DATE

în u ltim e le două capitole a ţi învă ţa t despre func ţiile de bază si fu n c ţiile avan­sate ale lim b a ju lu i SQL (S tructured Q ue iy Language). în acest capito l, veţi învăţa cum p u te ţi să stocaţi in te rogări în baza dum neavoastră de date. Sto­carea in te rogă rilo r în baza de date are m ulte avantaje. U n u l d in tre ele este fa p tu l că p u te ţi rea liza ceea ce se num eşte independenţa program / date [program/data independence). Aceasta înseam nă că m odifică rile în codul dum neavoastră de program n u presupun neapărat m od ifică ri în baza de date şi viceversa. O b u n ă proiectare im p lică separarea codu lu i de program şi a m etodelor specifice de acces şi m anipu la re a datelor.

Scopul acestei că rţi cup rinde aspectul legat de date al problemei, dar aceasta n u înseamnă că n u i se acordă atenţie şi l im b a ju lu i de programare. După ce înţelegeţi lim b a ju l SQL, v i se pare că este la fel cu orice a lt program. Ultim ele două capitole v-au prezentat utilizarea propriu -z isă a acestui lim ba j, indepen­dent de o implementare particu lară în tr-o bază de date. Pe m ăsură ce vă im plicaţi m ai m u lt în dezvoltarea ap lica ţiilo r pen tru baze de date, veţi vedea că este im posib il să stocaţi codul SQL direct în logica aplicaţie i dum neavoastră. în acest capito l veţi afla cum p u te ţi stoca direct în tr-o bază de date codul SQL. In tim p ce inc luderea codu lu i SQL în logica aplicaţie i violează independenţa date / program, stocarea codu lu i SQL în baza de date o încurajează.

Stocarea in te ro g ă rilo r în tr-o bază de date depinde de zonele specifice im p le ­m e n tă rii un e i baze de date. In acest capito l, ve ţi învă ţa cum vă perm ite Access să s toca ţi in terogările . A lte program e p e n tru baze de date, ca SQL Server ş i Oracle au m etodolog ii p rop rii.

O prezentare generală a aplicaţiei Query Designer din AccessCredeţi sau nu , d a r a ţi lu c ra t deja cu ap lica ţia Q uery Designer d in Access! C h ia r în ca p ito lu l 8, a ţi lu c ra t în vizua liza rea SQL a acestei ap lica ţii. Când selectaţi Q ueries d in lis ta de obiecte a bazei de date, apar două o p ţiu n i în panou l d in dreapta a l ferestre i princ ipa le a bazei de date. Când op ta ţi pen tru crearea u n e i in te rogă ri în vizua lizarea Design, în p lu s fa ţă de Q uery De­signer, apare o casetă de dia log care vă in v ită să se lecta ţi tabelele care vo r f i in troduse în in terogare. F igura 10.1 prez in tă caseta de dia log Show Table.

Caseta cu listă din caseta de dialog ShowTable funcţionează ca orice altă casetă cu listă din Windows. Dacă tineti apăsată tasta Control (Ctrl) în timp ce selectat¡ elementele, vor fi selectate toate elementele pe care aţi executat Ctrl+clic. Dacă selectat¡ un element si tineti apăsată tasta Shift când selectat¡ alt element, vor fi selectate toate elementele cuprinse între cele două pe care aţi executat clic.

D upă selectarea u n u i tabel, acesta apare în panou l de sus al ap lica ţie i Q u e iy Designer. P entru a exem plifica, să fo losim ta b e lu l Client. D upă selec­ta rea acestu i tabel, el apare în panou l de sus al aplica ţie i. Tabe lu l C lien t este prezen ta t în f ig u ra 10.2,

Page 221: Baze de date pentru incepatori (manuale facultate)

INCLUDEREA INTEROGĂRILOR SQLÎN BAZA DE DATE 219

ء ئمبم أ ؛ . ق م ه ء ء ' j أم'

ا -ق ز 0. -محء Q jeiy n اءماآب م>سم ه اءسء ا Itjeiy by ىعد> ء ١

:É geaC T !

أ ءIDepatmeot

•Show ■؛رم؛ءءءامبمئentena.

'

<3smmك>تك

ء؛

* •؛؛،•'■■. ' ؛ : * ء - ■■•■ء. ت- .

ءلثا£

ه آسور-ءصء '| Both, j ص

ص

A plica ţia Query Designer d in Access.

FIGURA 10.1

FIGURA 10.2

A plica ţia Query Designer d in Access în vizualizarea Design.

h،fc «اص ا ؛ ا Jr،،،؛■ مءنء إأ

E،،«صمأ lDaiath أ « و ا ا م م . ، -to i xţ

؛؛؛؛٩٦ مءيآأقاview ٥ ٠ ٦ ٠، query ث ومءمحو إ

أل ءهءت• إوJ»y by محادء ء،؛تمءص

ءل ؛آو'نمآب’ءامبآ

ء؛ك ةة ت

Table;

Page 222: Baze de date pentru incepatori (manuale facultate)

220 PARTEA AIV-A - EXTRAGEREA INFORMAŢIILOR DIN BAZA DE DATE

Introducerea câmpurilor selectateD upă in troduce re a ta b e lu lu i în Q u e iy Designer, p u te ţi selecta câm purile care vo r f i inc luse în se tu l de rezu lta te . Pentru a selecta u n câm p, trebu ie doar să execu ta ţi d u b lu clic pe el în lis ta câm purilo r. A ltfe l, î l p u te ţi trage d in lis ta de câ m p u ri ale ta b e lu lu i, a fla tă în panou l de sus ş i îl p u te ţi plasa în tr-o coloană d in panou l de jo s al aplicaţie i. O a tre ia m etodă este selectarea u n e i coloane libere, apoi selectarea câ m p u lu i d in lis ta deru lan tă . F igura 10.3 prez in tă câm purile C lien tID , ClientType ş i O rganizationNam e după selectare.

Pe m ăsu ră ce c o n s tru iţ i in terogarea fo los ind ap lica ţia grafică, p u te ţi trece de la vizualizarea Design la vizualizarea SQL. A r tre b u i să f i ţ i deja fam ilia riza t cu vederea SQL, deoarece ea face parte d in ap lica ţia Q uery D esigner şi a ţi lu c ra t cu ea în capito le le 8 ş i 9. F igura 10.4 prez in tă v izua lizarea SQL a in te rogării.

Create que»y ،٦ Design vfcwCtgcts

______

¡OotUD

Name؛، Fir jM.dcfaIV.al ¿J

*Vouch

'danUD

Saw:Crfostiai

jefc؛ tfndow؛ Se« Insert Sueiy looii :j... ٠. • ٩؛ i: ،j .؛؛٠ . . e v

FIGURA 10.3Câm purile ClientID , ClientType şi O rganization­Name au fost selectate pentru această interogare.

D upă ce a ţi se lecta t câm purile , p u te ţi ru la in terogarea ş i ve ţi vedea se tu l de rezu lta te . Rezultate le c u r؛ ■nt<• su n t prezentate în f ig u ra 10.5.

Page 223: Baze de date pentru incepatori (manuale facultate)

M, C!>«tf.Orgifii:a،ionNime؛؛ntT<؛SELECT C،،r,t.ai«n،ID, C،in،.a ¡ROM Cfert؛

CAPITOLUL1C INCLUDEREA INTEROGĂRILOR SQL IN BAZA DE DATE

<j ، t> ١٧٦٠ >٠ l ' '« f Qjtry loofe «؟ ٧٠٠ ■،؛ «

......r i’ •:■">•■ &؟؛؛B؛ S l l l t p lp ؟ •-؟i i ®r 5؛*؛؟“ > ؛ ٠٠ y ؛٤ ١؟ !٠؛٢؟٤ ؛ ؛ ؛ ؛ ^ ، <٦

^¿OaSeiMc-YtriOwgnv»* gy [٢٤ | f~~ CtKf.î

FIGURA 10Trecerea la vizualizarea SQL vă perm ite să vedeţi codul

FIGURA 10.5Puteţi ru la in te ractiv interogarea în ap licaţia Query Designer pen tm a vedea co n ţin u tu l se tu lu i de rezultate.

Introducerea criteriului de selecţie

Inîfrt F&mat g«Cfdi Ioo؛ ^r،t؛،، H.e>؛

. !□ U I

esitgnipilew؛ ، pen§؛؟G

3n vtew»؛،D ١٨ KT] Croata quwy Create query by usirq J•- J ؛£]{

ofc}pcţs

OiflaniţarioiiHaoieCliemlD; Acş Tomato Cornpany ;N/A N/AIvlain Line Software, Inc

s _ .Apolisd Technoloaies

pr«naryT:eY fidd ier Cter* fabte

D upă ce a ţi selectat câm purile dorite, p u te ţi f i l t ra se tu l de rezu lta te fo losind u n c r ite r iu de selecţie. Dacă p r iv iţ i fig u ra 10.5, este c la r că în reg is tră rile

Page 224: Baze de date pentru incepatori (manuale facultate)

222 PARTEA A IV-A - EXTRAGEREA INFGRMAŢIILOR DIN BAZA DE DATE

c lie n ţilo r persoane fizice s u n t nerelevante. F igu ra 10.6 prez in tă c r ite r iu l de selecţie în ap lica ţia de pro iectare grafică.

FIGURA 10.6C rite riu l de selecţie a fost in trodus pentru ca interogarea să retum eze num a i înreg istrările care îndeplinesc condiţia C lien tiype ="B ” .

Ca şi în ex؟ m p lu l precedent, p u te ţi ru la interogarea în m od in te rac tiv pen tru a vedea rezu lta te le . Rezultatele care respectă c r ite r iu l de selecţie s u n t pre­zentate în f ig u ra 10.7.

FIGURA 10.7Setul derezultate reflectă in troducerea c rite r iu lu i de selecţie.

He*}uery٤؛، ؛٠٠٠* ؛٨،«، ؛؛

j awign •gaw,!□I *li

OenUD jCtentType FiritNjme

d،،،Ir*.al j J؛M

&oup

rHntit- _ -Ori.

:kntlDShow:

Of.»،«:

J» Help؛؛ ™؛،؛crdi Xoo؛؛»، fT»ai؛؛Jnjart F ٤١٠* ٧١٠٠ e؟،

- lC |x |ClltntID | ClUntTyp« | Oiganli;

Main Line؛ Bob's Hau ؛

-

1¡ ‘ ord: H l؛،،;

a؛ U Uftmry r*ţf*U te r Clert?

Page 225: Baze de date pentru incepatori (manuale facultate)

INCLUDEREA INTEROGĂRILOR SQLÎN BAZA DE DATE 223

în fina l, trecând în vizua lizarea SQL, p u te ţi vedea codu l SQL. C odul cores­punză to r acestei in te rogă ri este prezenta t în fig u ra 10.8.

FIGURA 10.8Introducerea c rite r iu lu i de selecţie în ap lica ţia grafică de proiectare duce la in tro ­ducerea clauzei Where în codul

Suprimarea coloanelorS in g u ru l scop al câ m p u lu i ClientType este f iltra re a se tu lu i de rezu lta te. Afişarea acestei coloane în se tu l de rezu lta te n u este necesară. In tre p o r­ţ iu n ile S ort şi C rite ria ale p a n o u lu i de jo s al ap lica ţie i de proiectare, ve ţi vedea o casetă de va lidare p r in care p u te ţi s ta b ili dacă o coloană este re- tu rn a tă în se tu l de rezu lta te . F igura 10.9 vă ara tă cum p u te ţi su p rim a coloana C lientType d in se tu l de rezu lta te , ia r fig u ra ! ٢١.9 prez in tă se tu l de rezu lta te m odifica t.

F igu ra 10.11 prez in tă codu l SQL corespunzător acestei in te rogări. D upă cum vedeţi, sup rim area un e i coloane înseam nă doar ştergerea câ m p u lu i d in l is ta de selecţie.

jeb؛ Jjscy Ţaos wmdow؛ nîert١٤٠'»» ؛

jn ytew؛،Da ١، J Creata ،wsry5؛؛ 0 Create query by usng vteid؟؛

i aer*

p ü !

WSKm

Page 226: Baze de date pentru incepatori (manuale facultate)

224 PARTEA A IV-A - EXTRAGEREA INFORMAŢIILOR DIN BAZA DE DATE

-------- - —-?٠٦،:

U،ÎM

ء لمءب ؛ممض ء ءمء:ه ؟ ؟ .-١٠؟ *

- - - - - -

كل|ك ههوص>

ءم ؛ ة أ

■:؛ -

ءا؛وWwwirÆtoori'f«¡--

FIGURA 10.9

Puteţi s tab ili dacă o coloană apare sau n u în setu l de rezultate.

F IG U R A 10.10

Setul derezultate reflectă ştergerea câm pulu i ClientType.

Page 227: Baze de date pentru incepatori (manuale facultate)

INCLUDEREA INTEROGĂRILOR SQL ÎN BAZA DE DATE 225

FIGURA 10.11

Suprim area une i coloane înseam nă doar ştergerea câm pu lu i d in lis ta de selecţie.

Introducerea ordinii de sortareS ingu ra sa rc ină im p o rta n tă pe care o m ai aveţi este să fu rn iz a ţi ord inea de sortare. F igu ra 10.12 a ra tă câ t de u şo r este să a p lica ţi o ord ine de sortare după câ m p u l O rganizationNam e. F igu ra 10.13 p rez in tă se tu l de rezu lta te , ia r f ig u ra 10.14 prez in tă codu l SQL corespunzător.

FIGURA 10.12Puteţi specifica, ind ife rent de câm pul ales pentru sortare, dacă sortarea este ascendentă saudescendentă.

-lOl *li

vwi ١ »؛؛؛٢، Y؛rsafe que: g؛r؛Irea(، ■WWy by u

GfOUPS

q*en»D_________CtanTyp»________OtaanatenHMne I ___; Cler* _______O a n t _______G«nt ^ j ___________

-٠■........ :Show:

Oţana:

Page 228: Baze de date pentru incepatori (manuale facultate)

226 PARTEA A IV-A - EXTRAGEREA INFORMAŢIILOR DIN BAZA DE DATE

[ Pyro،؛ >هءءءةأمحيس ئج ا مأا v؛rw ب

•iyhCK،anv*M؛OM،Bqui ة وby uang wizard وإلص Cra،،e ا.يأ

ti«؟،

Orijjriiz.TlioiiHniricTomato Company ء I Ac

Applied Tschnolagie؛Bob's Hausa of Pancakes;

١٨٢ ,Main Line SoftwaiP

ClimiilO

¿¿ad. ii I ' i l ; ► } ►I l» »l of

wBm¡PnnUry K«yFieMforCi»ntTat>lc~

ةها«وا- «؛ا؛ء

FIGURA 10.13Setul derezultateprezin tăsortareaascendentădupă câm pulOrganization-Name.

ب جم ء؛ع 6» وس «،*>!؛ هعم» JsoŞ أمئمء

' •آز•;■ •٧٠ م|ك

ظصقءمحمء،؛واءمquery ،1 Daikjr) ■new ت ه ءهء ا

3îj Ocate t}مالءق:ب x r i by UVVCfriecU

م ستااآهول؛،،ءا؛س ما i،snt,o؛ntiD,ءم ةئم،FROMC،?n

HERE ((،a،en،.Ckin،Typ«i-‘B))"؛،،;ORCtR 9YC،srt.Org*to،ionNâms

FIGURA 10.14Specificarea o rd in ii de sortare în ap lica ţia de proiectare grafică duce la in troducerea clauzei Order By în codul SQL.

Sortarea după mai multe câmpuriF igu ra 10.15 ara tă câ t de uşoară este sortarea după m ai m u lte câm puri. Aceasta înseam nă n u m a i specificarea o rd in ii ascendente sau descendente

Page 229: Baze de date pentru incepatori (manuale facultate)

CAPITOLUL 1ا ' INCLUDEREAiNTEROGĂRILORSQLÎN BAZA DE DATE 227

p e n tru fiecare câm p sorta t. Precedenţa s o rtă r ii funcţionează de la stânga la dreapta. în această s itua ţie , se tu l de rezu lta te va f i so rta t m a i în tâ i după s ta t, apoi după num e le organ iza ţie i. P entru a sup o rta această sorta re sup lim en ta ră , a fost in tro d u s în in terogare câm pu l State.

FIGURA 10.15Setul de rezu ltate este sorta t m ai în tâ i după stat, apoi după numele organizaţiei.

Salvarea interogăriiSalvarea in te ro g ă rii este uşoară. Trebu ie doar să executa ţi clic pe b u to n u l Save de pe bara de in s trum en te . F igura 10.16 prez in tă u n mesaj care vă perm ite să specifica ţi u n num e pen tru interogare. D upă salvarea in te rogării, dacă executa ţi d u b lu clic pe ea în fereastra p rin c ip a lă a bazei de date, aceasta va f i ru la tă .

٤٠٠ ٤« سص ،nsert Şjttyloo* أسممء طءة

: ء ؛ > إ ء ءسم ا ' ؛K؛gn ه ، ؛ ولأسمط i؛

.101 *I

.1DI XI

هه » ؛ [ما«ههه2 ؛

jSpCcde

fm دM 6: Ţ

١٠٠؛Show; I n

' .ي ■

Page 230: Baze de date pentru incepatori (manuale facultate)

؛ ؛١٠.* Jrwert Query Tcos ^ndow be•؛ »

- Ip I * l i

؟8؛؛p،n ٤٤ ¡،Mg'» ®t*؛،Create query ١٨ Dedgn vtew Creâs queiy by using ward

Objects

_GrOJW_

- ■■ ■ti: ■•■- •Table؛ : Şort؛

Show: :Criteria

•f ■ - r r - ;

228 PARTEA AIV-A - EXTRAGEREA INFORMAŢIILOR DIN BAZA DE DATE

M'، ؛ ¿1*1 S E:Query Name v ....1 « ' ٦

!Business ClientCancel | |

FIGURA 10.16Caseta de dialog Save As vă perm ite să specificaţi num ele in terogării.

Crearea interogărilor avansatePână acum a ţi vă zu t fu n c ţiile de bază ale ap lica ţie Q uery Designer d in Access. Crearea in te rogărilo r avansate fo losind această aplicaţie este aproape la fe l de uşoară ca şi crearea in te ro g ă rilo r ob işnu ite . Să considerăm o lis tă s im p lă a anga ja ţilo r, care conţine câm purile Em ployeeID , EmployeeClass, FirstN am e ş i LastName. Aşa cum ş t iţ i deja, descrierea c la s ifică rii anga ja ţilo r apare şi în tabe lu l EmployeeClass. Aceasta înseam nă că interogarea necesită două tabele şi o declaraţie de u n iune . în tru c â t re la ţia este stocată în baza de date, n u trebu ie să vă a m in tiţ i deta liile despre un iune . Când creaţi in te ro ­garea şi in tro d u ce ţi tabelele Employee şi EmployeeClass, un iu n e a va apărea autom at. F igura 10.17 prez in tă această in terogare în ap lica ţia de proiectare grafică, ia r fig u ra 10.18 prez in tă rezu lta te le in te rogării.

Page 231: Baze de date pentru incepatori (manuale facultate)

FIGURA 10.17

CAPITOLUL ١ INCLUDEREA INTEROGĂRILOR SQL IN BAZA DE DATE

U n iun ile s u n t create autom at când îninterogare sun t in troduse tabele în rud ite .

FIGURA 10.18Setul de rezultate conţine date din tabelele Employee şi EmployeeClass.

ecrds؛؛ ; w ¡T'jert؛؛« ،d٤«، ؛

bj■ftr. - !:■ J'a. ...„■IEmployeelD !______Desai|>tion 1 FlislHame t I . jsiH.im

Heartiessl Jones : Kardon

Mart: . Mary Steven ؛

pmey-Ass،ciaie؛Ai13؛ e؛a،؛otrey-Asso6؛A l 16؛Attome y-Assouji؛

!،•u ،ii؛’y-As7؛؛ AtlctrSmalls

• Srnrth Holrnes

Derek:Jo*; Oliver

11 Attomey-Assaciale 1 Atlomey-Associale

y-Partner8؛AJIornAtlO'ney-Partns'

. Meade؛iŞlephsni4؛ Legal SscielariStuartDa’od

Sal/؛1?Nig

=jbbin؛H;SlatiTufriel

(AutoNumbet)

► I >■!>?! ofRecord: u | « 11

F igu ra 10.19 prez in tă codu l SQL p e n tru in terogarea care re tum ează lis ta anga ja ţilo r.

Page 232: Baze de date pentru incepatori (manuale facultate)

230 PARTEA A IV-A - EXTRAGEREA INFORMAŢIILOR DIN BAZA DE DATE

FIGURA 10.19Vizualizarea SQL prezin tă codulcorespunzător in te rogării care retum ează lis ta angajaţilor.

Im plementarea funcţiilor şi a grupărilor de agregareU ltim u l sub iect pe care î l vom aborda este reprezentat de fu n c ţiile şi grupările de agregare. P entru a exem plifica, să presupunem că trebu ie să crea ţi o in terogare care realizează o l is tă a ca zu rilo r şi a n u m ă ru lu i de anga ja ţi care lucrează la fiecare caz. De la început, ş t iţ i că trebu ie să fo lo s iţi tabelele Case şi EmployeeCase. în tru c â t num ele anga ja ţilo r n u prez in tă in teres, ta b e lu l Em ployee n u este necesar.

D in aceste două tabele, ve ţi avea nevoie de câm pu l T itle al ta b e lu lu i Case şi de fu n c ţia de agregare CountO p e n tru a nu m ă ra anga ja ţii care lucrează la fiecare caz. P entru a fa c ilita num ărarea, va tre b u i să fo los iţi o func ţie „group b y ” p e n tru câ m p u l T itle . A p lica ţia Q u e iy Designer n u are capacita tea im p lic ită de a in troduce g rupă ri şi fu n c ţii de agregare. F igura 10.20 prez in tă două aspecte. M ai în tâ i, prez in tă b u to n u l Totals, de pe bara p rin c ip a lă de in s tru m e n te . Când execu ta ţi c lic pe acest bu to n , în panou l d in partea de jo s a ap lica ţie i de pro iectare a in te ro g ă rilo r apare o nouă secţiune, n u m ită Total Apoi, fig u ra 10.20 vă prez in tă in terogarea în Q uery Designer.

- - -■ ' ;ft''؛'؛■' ؟ ؛ 1 ؛٠٠ ؛di ؛٠٠٠، ¡ruert Query Ţoolj ؛«؛via*« ،؛؛٠؛٦١؛?: ١٠١l؛B- B 7,؛ ؛؛ : • ؟*؛؛ '-، ٠• ! ٠٠.... ■ ٠• !•:

Page 233: Baze de date pentru incepatori (manuale facultate)

INCLUDEREA INTEROGĂRILOR SQLÎN BAZA DE DATE 231

[ f lir t لأءء آا Ţoofe و ي سن ت

ESSgZZS¡SammM,¿:í.SBBBaw ءس

Ewfm/eeïïJ[ ا ر ، ءا إ

؛صءا ،ه ؛

أ0:ره،

lEtrclovaci: EiTcton Eríttoye-eCat*

-

« ٠»

Această interogare implementează fun c ţiile de agregare Count() şi Group By.

FIGURA 10.20

în secţiunea To ta l d in Q uery Designer, p u te ţi alege fu n c ţiile de agregare specifice pe care d o r iţ i să le im p lem enta ţi. F igu ra 10.21 prez in tă se tu l de rezu lta te , ia r fig u ra 10.22 p rez in tă codu l SQL corespunzător.

FIGURA 10.21Setul de rezultate ale in te rogării Case Employee Count.

م س ة Loa¡ دس ء ءه ™ ظ ،٩٤ irwrt و ٤« لا،مه ه

ث ٠ , ؛ , ءعم - lo i XI

EmployéesI Patent Infringemení i Sfijií hG ivorce

Page 234: Baze de date pentru incepatori (manuale facultate)

PARTEAAIV-A-EXTRAGEREA INFORMAŢIILOR DIN BAZA DE DATE232

ing !■«ard؛C/eale quwy by g ق؛ r53 r.li*w I r.iirvt u ¿:■

؛م ء ن'؛ءءو،،ااةسء؛اءا5 سا بصاصء SELECT Cais.Titl,»هت'مالئlD “ EmpfcyeeCaM.CMelO؛€e.Ca؛P.OM [Csie] INNER 501N EmployesCMe ONCa؛

OUPBYCsse.T*،؛،؛،¡ORDER BY Cô5«,TO

'•7777؟

ftgady

ا*اى.Nefr.fluay ق و .إلو أ

' :'ب •' آلوX،»، Wr،iow Hefc ؛ ا،،،وال ي

'

هيصي،ءةة هءس<>؛ ا ٠، ء ؛ة هDwlst»j،ty'nDeîignview س | ].؛؟؛

M»؛ l ء■

FIGURA 10.22Codul SQL corespunzător in te rogării Case Employee Count.

Interogări param etrizateŞi in te rogă rile param etriza te s u n t uşo r de im p lem enta t. Pentru a i lu s tra acest lu c ru , să presupunem că d o r iţ i să crea ţi o lis tă cu c lie n ţii care s u n t firm e. D ife ren ţa cheie este că, a tu n c i când ru la ţ i in terogarea, u tiliz a to ru l este in v ita t să in tro d u c ă s ta tu l. F igura 10.23 prez in tă această in terogare în Q u e iy Designer.

FIGURA 10.23La ru larea acestei in terogări, u tiliza to ru l va ة in v ita t să in troducă o valoare pentru câm pul State.

ء،ع *؛؟ a؛w insert Query look¡ سمإل0م نهت

مء. عقسةس ءع ء' مخ؛ء * .ئة>ءء

عهلقل 'إل

. l o l x l j

laonUD ■|Qen،7ype

اسء ة ؟ |مبسءسمك د ا

:>a-ţTypeOrtxœéMrHàmePent

ء

Page 235: Baze de date pentru incepatori (manuale facultate)

233 A P iT G im iîi INCLUDEREA INTEROGĂRILOR SQLÎN BAZA DE DATE؛

F igu ra 10.24 a ra tă cum u tiliz a to ru lu i i se so lic ită u n param etru , ia r figu ra 10.25 prez in tă rezu lta te le in te rogării.

FIGURA 10.24La ru la rea unei in te rogări param etrizate, u tiliza to ru l este in v ita t să sprcifice o valoare pentru fiecare param etru.

FIGURA 10.25Setul de rezultate prezin tă c lien ţii care s u n t firm e d in s ta tu l New Jersey.

£،e ١٠٠ ٤٠٠ W ،n«Tt Query

-Iblxj

.؛؛£ 1:1zi

* ssSac

Show؛:Cfterta

Ll :.C»"~<

Page 236: Baze de date pentru incepatori (manuale facultate)

RezumatSă sperăm că a ţi în vă ţa t că in s tru m e n tu l grafic de pro iectare a in te ro g ă rilo r este doar o extensie a l im b a ju lu i SQL, pe care deja î l cunoaşte ţi. V e ţi vedea că este m a i u şo r ş i m a i p ro d u c tiv să lu c ra ţi d irec t cu codu l decât cu in s tru ­m e n tu l de pro iectare sau poate v i se va părea m ai uşo r să p ro iec ta ţi grafic in te rogările . Cel m a i p robab il, ve ţi vedea că în a num ite cazuri este m a i b ine să u til iz a ţ i codul, ia r în alte le să p ro iec ta ţi grafic in te rogările . L u c ru l cel m a i im p o rta n t este să în ţe legeţi m a i în tâ i codul, apoi să în ţe lege ţi fu n c ţio ­narea in s tru m e n tu lu i de pro iecta re gra fică a in te ro g ă rilo r. Acesta este m o tiv u l p e n tru care am s tru c tu ra t astfe l capito le le 8, 9 şi 10.

In d ife re n t dacă lu c ra ţi cu in s tru m e n tu l de pro iectare grafică sau în cod. to t în Q u e iy D esigner lu c ra ţi. Este im p o rta n t să observaţi că cele două vederi ale a p lica ţie i Q uery D esigner rep rez in tă două m o d u ri de v izua liza re a aceleiaşi in te rogă ri. Deoarece lu c ra ţ i în Q uery Designer, in d ife re n t dacă fo lo s iţi codu l sau pro iectarea grafică, p u te ţi stoca in terogarea în baza de date.

Acest cap ito l încheie abordarea p rim a ră a acestei cărţi. Recapitu lând, parteaI a rea lizat o prezentare in tro d u c tiv ă a bazelor de date ia r partea a I l-a v-a că lăuz it în procesul p ro iec tă rii şi creării une i baze de date. Partea a I lI-a v-a prezenta t m ecanism ele în tre ţin e r ii un e i baze de date, ia r partea a IV -a a rea liza t o prezentare in tro d u c tivă în lim b a ju l SQL, pe care î l ve ţi fo losi p en tru a extrage in fo rm a ţii d in baza de date. Partea urm ătoare ş i u lt im a a că rţii, partea a V-a, vă va ară ta cum p u te ţi co n s tru i in te rfe ţe cu u tiliz a to ru l sim ple si cu m p u te ţi în tre ţin e datele d in baza de date. în p lus, ve ţi învă ţa ş i cum să c o n s tru iţ i rapoarte sim ple. în t im p u l d iscu ţie i despre rapoarte, ve ţi vedea cum s u n t u tiliz a te in te rogările pe care tocm ai le -a ţi co n s tru it.

234 PARTEA AIV-A ■ EXTRAGEREA INFORMAŢIILOR DIN BAZA DE DATE

Page 237: Baze de date pentru incepatori (manuale facultate)

P Ä R T E i ‘. ه ٧

UNCŢIONAREA AZEI □E □ATE- ;ONSTRUIREA INEI APLICAŢIIIMPLE pen tr uAZE □E DATE ^ACCESS

Page 238: Baze de date pentru incepatori (manuale facultate)

٠ i‘?*

CONSTRUIREA COMPONENTELOR INTERFETEI CU UTILIZATORULIn acest capitol:

Prezentare generală a ap lica ţie i Form Designer d in Access■ Crearea fo rm u la re lo r p e n tru ap lica ţia TEB

■ Crearea u n u i fo rm u la r de t ip m en iu p rin c ip a l 18 Rezum at

Page 239: Baze de date pentru incepatori (manuale facultate)

P entru u n ii e itito r i, acest cap ito l a r pu tea reprezenta partea am uzan tă a c o n s tru ir ii a p iic a ţiilo r p e n tru baze de date. C o n s tru irea in te rfe ţe lo r cu 1 مل ا الظمحآ ال ل , denum ite de obicei în Access formulare, este o sarc ină in c re d ib il de uşoară. Dacă n u v -a ţi ؛ ' ^ ؛ ilia r iz a t cu scrierea co d u rilo r de program , n u vă faceţi g riji! P u te ţi rea liza 99 % d in ceea ce trebu ie să faceţi fă ră să scrie ţi vreo lin ie de cod. Ia r dacă trebu ie să scrie ţi coduri, n u - i n in iic ! Ceea ce trebu ie să sc rie ţi ş i lo cu l în care trebu ie să scrie ţi vo r f i c la r explicate în acest capito l.

A cest c a p ito l va aduce la o la ltă m a i m u lte concepte care au fo s t deja prezentate în arfe. M؛) ai precis, va tre b u i să revedeţi căteva a tr ib u te ale c â m p u rilo r ş i d e fin iţ i i ale in te ro g ă rilo r stocate în baza de date. La s fâ rş itu l c a p ito lu lu i, ve ţi înţelege b ine cum po t f i com binate com ponentele bazei de date şi ale fo rcnu lare lo r p e n tru a oferi s o lu ţii complete.

Prezentare generală a aplicaţiei Form Designer din AccessCu m u lt t im p în urm ă , în ca p ito lu l 2, a fost prezentată pe s c u rt ap lica ţia Form Designer d in Access. Tot ce v-am spus a tu n c i a fost că această aplicaţie există şi că vom vo rb i de ta lia t despre ea, m a i tâ rz u. în؛ acest cap ito l vom respecta această p rom is iune . F igu ra 11.1 p re z in tă u n fo rm u la r n u m it Ind iv idua lC lie n ts .

238 PARTEA A V-A - FUNCŢIONAREA RAZEI DE DATE

Page 240: Baze de date pentru incepatori (manuale facultate)

٠ .. fOL JL11 CONSTRUIREA COMPONENTELOR INTERFEŢEI 239

A p lic a ţia F orm D esigner d in Access are două com ponen te p rin c ip a le : sup ra fa ţa de pro iectare ş i caseta de ins trum en te . D in fe ric ire , cea m a i m are parte d in m u n ca de creare a in te rfe ţe lo r cu u tiliz a to ru l poate f i efectuată fo los ind a p lic a ţii w izard . D in m otive în tem eiate, u tiliza re a acestor a p lica ţii este evita tă aici. Când trebu ie să lu c ra ţi cu com ponentele esenţiale ale bazei de date ş i să în ţe lege ţi func ţiona re a generală a bazelor de date, trebu ie să a fla ţi ce se petrece în culise. Dacă lu c ra ţi cu fo rm u la re le , a p lica ţiile w izard vă a ju tă să începeţi, ocupându-se de pă rţile grele în lo cu l dum neavoastră , în m u lte cazuri, dum neavoastră in te rv e n iţi după aceea, p e n tru a a jus ta a num ite im p lem en tă ri.

Pe m ă su ră ce ve ţi co n s tru i fo rm u la re , ve ţi vedea că procedura este aceeaşi. Cu alte cuv in te , ve ţi u rm a aceiaşi paşi de bază, şi anum e:

1. Lansa ţi a p lica ţia Form W izard.2. Alegeţi u n tabe l sau o in terogare pe care se bazează fo rm u la ru l.

3. Alegeţi câm purile care vo r fi afişate în fo rm u la r.

4. Alegeţi o aşezare a elem entelor (layout) şi u n s til.5. S a lva ţi fo rm u la ru l.6. In tra ţ i în New Form D e fin itio n şi faceţi m ic i a jus tă ri.

Crearea formularelor pentru aplicaţia TEBS ecţiun ile urm ă toa re vă vo r că lăuzi p r in procesu l de cons tru ire a fo rm u la ­re lo r p e n tru a în tre ţin e datele despre c lie n ţi ş i angaja ţi. în p lus , ve ţi crea şi u n fo rm u la r de t ip m e n iu p r in c ip a l care va f i u tiliz a t p e n tru a lansa alte fo rm u la re . Vom rea liza două fo rm u la re p e n tru c lien ţi: u n u l p e n tru firm e şi a ltu l p e n tru c lie n ţi persoane fizice. P entru a co n s tru i aceste fo rm u la re , trebu ie create două in te rogări. Ca să rea liza ţi fo rm u la ru l p e n tru angaja ţi, vo r f i necesare două cău tă ri. Dacă vă a m in tiţ i, orice anga ja t apa rţine u n u i departam ent şi î i este a tr ib u ită o clasificare. Poate vă a m in t iţ i şi că au fost c o n fig u ra te d ife r ite a tr ib u te ale c â m p u r ilo r p e n tru a fa c il ita crearea fo rm u la re lo r. N u vă tem eţi de necesitatea de a re c iti pasaje anterioare ale că rţii, deoarece în tre g u l proces va f i re ca p itu la t în acest capito l!

Formularele pentru clienţiPoate vă m a i a m in t iţ i că există două t ip u r i de c lien ţi: persoane fizice şi firm e. Fiecare t ip este d ife ren ţia t fo los ind câm pu l ClientTvpe. P entru c lie n ţii persoane fiz ice s u n t com pletate câm purile cu prenum ele num ele de fam ilie şi in iţ ia la . P entru c lie n ţii care s u n t firm e, este com ple ta t câm pu l cu num ele organ izaţie i. Când o fe riţi u tiliz a to r ilo r o m etodă de in troduce re a datelor, d o r iţ i să le fie câ t m a i u şo r posib il. în acest caz, este logic să crea ţi două in te rfe ţe diferite .

Page 241: Baze de date pentru incepatori (manuale facultate)

Cea m a i s im p lă cale de a c o n s tru i două in te rfe ţe d ife rite este să d e fin iţ i două in te rogări: u n a p e n tru c lie n ţii persoane fizice, a lta p e n tru c lie n ţii care s u n t firm e, în tru c â t ş t iţ i deja să c o n s tru iţ i in te rogări, m a n u a l sau fo los ind ap lica ţia de creare grafică, acest cap ito l vă va învăţa cum să u tiliz a ţi aplica ţia Q uery W izard p e n tru a de fin i aceste in te rogări.

Interogarea IndividualClient

F ig u ra 11.2 p re z in tă lansarea p lica ţie i Q uery W izard. M o tiv u l u t il iz ă r ii in te ro g ă rilo r în acest caz este fa p tu l că u n tabe l are două ro lu r i. P entru a în d e p lin i aceste două ro lu r i, este logic să-l d iv iza ţi în două p ă rţi: c lie n ţii persoane fizice şi c lie n ţii firm e.

240 PARTEA A V-A - FUNCŢIONAREA BAZEI DE DATE

-in i xiء ئ؛غأ> ب ممء؛ءأ أ X : ه ئممحم إ

مي؟.? ٠١ ؟؛'؛*ء ٠١٠٠t UstnQ0؛«r ؛سا'

C»s-Eire،oyee سs،ng؛Irrţlerfet-Car t

lK،r>j؛»-toy؛Errţ

■MM ,؛ ,, ي ,

'م y ؛١٠٠ ؛n»it -ءأم و t، Ţ؛

ق ل علق

ح0 نم : أ ؟ ' أ ت ء ح- هم ق ة ؛! ® م ب أ ء ممم أ ه أ $ حأ بم م أجأ

. د

FIGURA 11.2

A plica ţia Query W izard poate f i lansată d in fereastra princ ipa lă a bazei de date.

F igu ra 11.3 p rez in tă p r im u l pas în de fin irea in te rogă rii, care presupune alegerea u n u i tabe l sau a u n e i alte in te rogări. In acest caz, este u tiliz a t tabe lu l Client. în tru c â t această interogare va im p lica n u m a i c lie n ţii persoane fizice, n u este necesar câm pu l O rganizationNam e în se tu l de rezu lta te . De aceea, acest câm p a fos t omis.

F igu ra 11.4 p rez in tă a l doilea pas a l ap lica ţie i Q uery W izard, care im p lică denum irea in te ro g ă rii ş i specificarea dacă aceasta va f i executa tă sau va m a i f i m od ifica tă îna in te de execuţie.

Page 242: Baze de date pentru incepatori (manuale facultate)

CONSTRUIREA COMPONENTELOR INTERFEŢEI 241CAPITOL

FIGURA 11.3Pasul 1 al aplica ţie i Q ue iy W izard vă perm ite să de fin iţicâm purile care vor f i inc luse în setu l de rezultate.

FIGURA 11.4Pasul 2 al ap licaţie i Query W izard vă perm ite să fu rn iza ţi u n num e p en tru interogare şi să precizaţi dacă ea va f iexecutată direct sau va fi deschisă pentru a f i m odificată îna inte de salvare.

كسمس'مب ء؛،، ٤« ءس ín؛ert loaés ت

ئ ءم إ ك أ إ ص X إ ءء ةأ> ' ®صك

Ob)Kts

Us do ycu >wn، for your qjtryJ،؛ Whstب !ست،؛ما

your ،همم أعلءء$' ،٠١، informatori theهمء،،ا م ؛٠ ء أ•ء؛ءدءء

ه مء „ ء query or modfy ٥١٠ qusry’i ء ٠٠ yauwan، ؛٥ ٠٠٠٨ هCrajpt

.vwwWormsaon ٠١٠٢ ،٥ 5»nthe٢ ؛

٢ Ksctayو ه ت on*rOikirqMţhthequwy?

i r س ا' م

Page 243: Baze de date pentru incepatori (manuale facultate)

PARTEA A V-A - FUNCŢIONAREA BAZEI DE DATE242

dp؛< *.fy Ţa» VjtaCc<<5؛ nsart؛ Wew «٤٢ Fie

jCfcnUD _JjCHentlype ؛

iffc،ne ؛ |Fr| )MkHdnftW j j j

OentTy'

focady

La interogarea Ind iv idua lC lien t, creată fo losind ap lica ţia Query Wizard, au fost adăugate o ordine de sortare şi un crite riu .

D upă ce execu ta ţi c lic pe b u to n u l F in ish , in terogarea va f i sa lvată ş i va fi deschisă o nouă in s tan ţie re a ap lica ţie i Q uery Designer. E x is tă do i paşi s u p lim e n ta r i care tre b u ie p a rc u rş i în a in te de f in a liz a re a in te ro g ă r ii Ind iv idua lC lien t. M ai în tâ i, interogarea trebu ie sorta tă după num e de fam ilie ş i în ord ine ascendentă. Apoi, trebu ie in tro d u s în câm pu l ClientType u n c r ite r iu p e n tru a se re tu rn a n u m a i în reg is tră rile care îndep linesc co nd iţia C lie n tT yp e = T . F igu ra 11.5 prez in tă ap lica ţia Q uery D esigner şi aceste m o d ifică ri sup lim en ta re .

FIGURA 11.5

X : “٥ 7

. . ....

. • A■ ؛£ a ٠٠ - ؛ > ؛ r°

Interogarea BusinessClient

Paşii necesari p e n tru rea lizarea in te ro g ă rii BusinessC lien t s u n t aproape aceiaşi cu cei necesari p en tru crearea in te rogării Ind iv idua lC lien t. O diferenţă este fa p tu l că în loc de prenum e, num ele de fam ilie şi in iţ ia lă apare u n câm p cu num ele organizaţie i. M ai departe, ord inea de sortare a elem entelor d in acest câm p este ascendentă. A ltă d ife ren ţă se referă la c r ite r iu . în in te rogarea B usinessC lien t, vo r f i re tu rn a te în se tu l de rezu lta te n u m a i în reg is tră rile care îndeplinesc cond iţia ClientType = ”B ” . F igura 11.6 prezin tă in te rogarea B usinessC lien t în ap lica ţia de pro iectare a in te rogă rilo r.

F igu ra 11.7 p rez in tă ambele in te rogă ri în acţiune. D upă ce am te rm in a t cu in te rogările , poate începe m unca de adunare a c lie n ţilo r persoane fizice şi c lie n ţilo r firm e.

Page 244: Baze de date pentru incepatori (manuale facultate)

CONSTRUIREA COMPONENTELOR INTERFEŢEI 243

،؛JenUD ؟ncType،؛C|

¡Hrtfclnilsl ¿ j

Tab،S؛؛٠١٠w: ؟٠٢٢؛

j،lp؛ iow؛؛•* jefy Ţocis؛* w Insert٤١٠٠ ٤٠، «؛؛ ;I

^ b l؛ ! ?g ؛ ■ PPr.3-

aSinNani؛ «QnntlD Cfcr*Tyoe loro،rtr؛ ،nt Own، Ci،؛C

& 0 I B

Addiessl Address؛Ctefit Ctent

......."“0" " ' B

& —

٠ ٧ \

Interogarea BusinessClient, com pletată cu o sortare şi u n c rite riu în Query Designer.

FIGURA 11.6

: * ٠٢١ ؛٠٧٠٢«

،rtndtw؛¡ l'iurrt P£rma، Retcrd، Iao،s ؛٠١٠

N/j 123 ؛ Main Street؛ Ac e famato CompanyApplied Technologic Penn Center

je؛< Create ؛?؛[ Business Ci ؛§؛

*B-jsnessC

Bob's House of Paneat¿ 100 Dune Ayenut N/ Main Line Software. Inc. 119 Biddle Road;N/J r-i/A n/(AuioNumbert I

ss-En*،، I؛ • ١]§ -،|fp Employee

Etţtayee-L j ٠١ §(1 IndcvMuiKI I

Fin.iN.nne IM iiliilalnitia liplintslone

:Rubble Seaborn ؛

WilmaBettySamJohn Smith

N/A؛(AutoNumberl I

:ecord؛؛

j*twy'Ksy Faid tor citfti ftSk

٠٠٢ -a

11 m-

X ؛ ،liiev؛؛ r»go؛Q،؛¿ Qpen؟ ؛

J Crwte tjje1؛> ?؛ Otw

Cli*ntlD j Cilimt Type | OigănizatlonHame j Aildieat 1 |

،la*]Client Type LdstNaina

Reccrd: ■< j • l i

FIGURA 11.7Interogările care retum ează c lien ţii persoane fizice şi c lien ţii care sun t firm e oferă două m od uri de a p riv i tabelu l Client.

Page 245: Baze de date pentru incepatori (manuale facultate)

244 PARTEA A V-A - FUNCŢIONAREA BAZEI DE DATE

Formularul IndividualClient

Dacă n u a ţi i i a vu t la dispoziţie a p lica ţii w iza rd care să se ocupe de partea grea a c o n s tru ir ii fo rm u la re lo r, această m u n că ar consum a m u lt t im p . Deşi a ţi f i p u tu t să vă baza ţi n u m a i pe ceea ce vă oferă a p lica ţia w izard , pe n tru a obţine o in te rfa ţă m a i fu n c ţio n a lă ş i m ai prie tenoasă fa ţă de u tiliz a to r ve ţi do ri să m o d ifica ţi fo rm u la ru l după ce î l creaţi. Vestea cea b u n ă este că şi p e n tru m u lte d in tre s a rc in ile pe care le v e ţ i exe cu ta d u p ă c rea rea fo rm u la ru lu i există a p lica ţii w izard! F igura 11.8 prez in tă p r im u l pas de u tiliza re a ap lica ţie i Form W izard.

FIGURA 11.8Pasul 1 al aplica ţie i FormW izard vă perm ite să alegeţi u n tabel sau o interogare şi câm purile corespunzătoare pe care se va baza fo rm u la ru l.

Ob)gcti

Sfiyjpî

F igura 11.9 prez in tă pasu l 2. în acest pas, p u te ţi alege aşezarea elem entelor (layout) în fo rm u la r. In acest caz, va f i selectată opţiunea im p lic ită de aşezare pe coloane.

în pasu l 3, prezenta t în f ig u ra 11.10, p u te ţi alege u n s til. Access conţine m a i m u lte s tilu r i. In aceste exemple, va f i u tiliz a t s t ilu l Blends.

. - _

în acest caz, la baza fo rm u la ru lu i In d iv id u a lC lie n t stă in te rogarea In d iv i- dua lC lien t. P en tru toate aceste fo rm u la re , vom alege să u tiliz ă m toate câm ­pu rile .

Q ٠* Uj® 3، ؟۶!

،٠٠١ ”؛J ؛٠٠٠٠ ؛ X , ٠، •؛'،■ :؛:؛؛ 1؛؛ ، ؛ j §؛؟2P«n ؛

IJ "oe،،،> form 'in OiOgr,<١ 1؛fard» ٧١٠٨٠ ÎŞ ] Create ferm by

o؟ ؛ ? -

ălT"~

Page 246: Baze de date pentru incepatori (manuale facultate)

245CONSTRUIREA COMPONENTELOR INTERFETEI

FIGURAPasul 2 al ap licaţie i Form W izard vă perm ite să alegeţi o aşezare a elementelor d in fo rm ular.

لم ؟؛؛؛ ؟ ي ؟ خ ' .Ete؟ fi« a

?y،ewouMyoul،e،؛،Whs

Bkj«prir*ExpedieriInduttrMInismabonalءء،مءء؛ءSarxiSofws،and،>d

،ة0مأأSunn ءهءصوآ

aajpi

Labil Oala

CerceT

ferm d

ح1 دغملهق؛اس ٠٤٠٣٠١٣ .ص : ٠٠ »اءءأ-آ

ء ج ءتعء ٠١Cwsgr f،»mا• 0ءاا،م ا لم وأ ا ءا ه - Ota 0ه te ferm by ا ؟ أ

FIGURA 11.10Pasul 3 al aplica ţie i Form W izard vă perm ite să alegeţi u n s til pentru form ular.

tB*H j ÿat> ) Ehgi

Page 247: Baze de date pentru incepatori (manuale facultate)

246 PARTEA A V-A - FUNCŢIONAREA BAZEI DE DATE

ل ح خل3م

Croup؛

Car،،l

'formWgard

أ'■ل'نح-ى* ' و ؛مح. ؛s * ؛ &â ' ! X.* 'ه

ء ٤« ص ln«؛t 1س مجب إمحبإ

: □ ك ؛أةمحأ V ' -'؛ ؛؛’■ ء *' م;

ءا « ؛سأ ه wtatttl* doyou ٠٠٠١، ءث“ |مت أ ت ء ة ت أ ت

ءه ١١« «ا0ءءه ء، ء هس» *٠ سه ، ء ء <لم ماا

م ءس> ٠١٠دا يالا ٠ء ©٠ ١٢٠٧ ص،ص ٠٠٣أءل ،٠

ئ م؛؟”'م.اءء '، '* ء ؟ ممء ء يممي ‘»<2"مممءمءب ءا هه،' ٢ هإلس؛

٢ سء»"ه*رإامءامءءمموء

ه ؛و'سم إ ءو:م ئ بObjects I j j Cr«atefc

ا ول ٠٠٠٠٠٢،

F o rm u la ru l B usinessC lient se bazează pe interogarea BusinessClient.

în u lt im u l pas, prezen ta t în f ig u ra 11.11, ca ş i în Q uery W izard, p u te ţi alege u n num e p e n tru fo rm u la r şi p u te ţi specifica dacă fo rm u la ru l va fi ru la t d irec t sau va m a i f i m od ifica t îna in te de salvare.

FIGURA 11.11

F igu ra 11.12 p rez in tă p ro d u su l fina liza t. Folosind bara de in s tru m e n te d in partea de jos a fo rm u la ru lu i, p u te ţi trece la p rim a înreg istrare , la în reg is tra - rea precedentă, la în reg is tra rea urm ă toa re sau la u lt im a în reg is tra re . In p lus , p u te ţi adăuga no i în reg is tră ri. Ce vă lipseşte este p os ib ilita te a de a şterge sau an u la m od ifică rile . Acest lu c ru se datorează fa p tu lu i că, după ce crea ţi fo rm u la ru l, trebu ie să adăugaţi u n set de bu toane care adaugă func - ţio n a lita te în fo rm u la r. D eta liile p r iv in d procesu l de adăugare a bu toane lo r de com andă personaliza te vor ج d iscu ta te m ai tâ rz iu , în cu rs u l acestei sec- ţ iu n i.

Formularul BusinessClient

Paşii necesari p e n tru crearea fo rm u la ru lu i B us inessC lien t s u n t aproape aceiaşi ca la crearea fo rm u la ru lu i In d i^ id u a lC lie n t. S ingura excepţie este fa p tu l că, în acest caz, fo rm u la ru l se va baza pe in terogarea BusinessC lien t. F igu ra 11.13 prez in tă fo rm u la ru l BusinessC lien t.

Page 248: Baze de date pentru incepatori (manuale facultate)

CONSTRUIREA COMPONENTELOR INTERFEŢEI 247

.ndov¡؛؛

•،ISUiQtxKU

Cf«tB 1>1>» PIhmhî

tiu.nl

Flintstone

***Ubli؛ 10، Boulder Avenue

Í4l،ll«S؟2Grauen

Copper Falls

F orm u la ru lcreat de ap lica ţia wizard oferăcapacitatea de a naviga p rin în reg is trări şi posib ilita tea de a crea noi înreg istrări.

FIGURA 11.12

::<ÿ:

٢٠٨٠١■ K«y ٢٠« for Cfcf* Tat*

- I g l x l

B âay;Anal ؛ «

iş p p S M H M؛ ،٠ x ؛ ؛،•»a ؛؛،،*؛؛،•op«■ m؟؟

■ - . ،،،Vi

Şifll* CA

Rec or à. !< j■ I l T .» |.n|>»| of

٤٠؛ ٤٢١، ¿'tw ٤٢؛«؛ ،،mut Pétard؛ J.x)،i ؟،؛r*bw He>؛

¡ '؟*،،؛١ ،3؛١٠٠' ¿ tjgCpan

vT،؛Design v ٦« te form&،<؛ Î j؟Ob)Kt» aa-j.Email

Indvi

Ofga،ifiail«iiN.Mi>e Ace Tomato Company

Main Street ؛

Aţi؛؟«،،

PhiladelphiaGroups

fomyy Key FieidTof Cţeo( Tat¿

FIGURA 11.13F orm u la ru l BusinessC lient este bazat pe interogarea BusinessClient.

Page 249: Baze de date pentru incepatori (manuale facultate)

PARTEA A V-A - FUNCŢIONAREA BAZEI DE DATE248

Acum , după ce a ţi creat لالق© fo rm u la re , este t im p u l să m o d ifica ţi aşezarea elem entefor şi să in tro d u c e ţi câteva butoane personaliza te p e n tru com enzi p e n tru a com ple ta fu n c ţio n a lita te a acestora.

Modificarea aşezării elem entelor din formulareDeşi a p lica ţia ^ z a r d face foarte m u lte in lo cu l dum neavoastră , n u poate face treaba în p ropo rţie de 100 %. F igura ه.11 prez in tă aşezarea m od ifica tă a fo rm u la ru lu i Ind iv idua lC lie n t. Aşezarea m od ifica tă are u n aspect m ai e ch ilib ra t ş i m a i profesiona l. S ch im bările n u se referă n u m a i la poziţie. M ai

سقل , a fos t şters căm pu l C llen tlD . N u este necesar ca u tiliz a to ru l să vadă acest câmp, deoarece el este fo los it de baza de date. în al doilea rând, câm pul Client"fype a fos t m u ta t în partea de jo s a fo rm u la ru lu i, ia r proprie ta tea vis ib le a fo s t seta tă pe No. N u u ita ţ i că în fiecare fo rm u la r p e n tru c lie n ţi fiecare c lie n t trebu ie să a ibă acelaşi t ip de valoare. De aceea, n u este nevoie ca u tiliz a to ru l să vadă acest lu c ru . Totuşi, câm pu l n u oferă s e r ic i i valoroase p e n tru în re g is tră rile noi. V e ţi vedea de ce este im p o rta n t acest câm p în secţiunea urm ătoare. în sfârşit, unele d in tre etichetele cu tex t u tiliza te pen tru a descrie câm purile de in tra re au fost fie m odificate, fie p u r şi s im p lu şterse. P entru a şterge u n element, trebu ie doar să î l se lecta ţi cu m ouse-u l şi apăsa ţi ta s ta Delete. P entru a m od ifica te x tu l un e i etichete, execu ta ţi c lic pe ea p e n tru a o selecta ş i m o d ifica ţi proprie ta tea C aption în caseta de p ro p rie tă ţi prezenta tă în fig u ra 11.14.

FIGURA 11.14Versiunea m odifica tă a fo rm u la ru lu i Ind iv idua lC lien t are u n aspect m ai ech ilib ra t şi m ai profesional.

ه؛؛ ء1ث عء I ع عةل|

astNsms:؛.»FirsiNsm؛

:ZipCode

:Phone

؛ ا » س ا Data ا ،س ا م

- - - - - ف-ب . . . . ممم. ؛

ب م * و م ء , . م.S i* Cota...

مءقس.هماا£ .ءم،ةءءا؛مق

Ccior . 8هم...FofeCoter

اة6777215

Page 250: Baze de date pentru incepatori (manuale facultate)

'Asin ؛n،ert F،jm* Ţooli ■،؛Trr،■»؛

٢٢»™، I Data I Event I Olho. | AlftxcB Ne* Page.............. NoneNswftowOrW.............. NeneKeecTogettw................ HoVW *..................... YkDeçiay When.................. AlwayjCsnGrow.....................Canihr**•. .................... No

....... .......... 2.2oerBackCofar.................... -2H7«3633SpedalEfíetí..................Fia،

i j j٠٠؛ Orasna،onNa؟؛~.

;AdCjfeSSl

Udd'essî&CUPÎ'ZlBCoae

Pnooe؛ .Eniil

i8nti؛C؛

CAPITOLUL 11 CONSTRUIREA COMPONENTELOR INTERFETEI

F ig u ra 11 .15 p re z in tă ace leaş i m o d if ic ă r i, d a r a p lica te fo rm u la ru lu i B usinessC lien t.

.101x1

X؛ ٢١١؛ j V > S ; ■&،*؛» ¡«'gs؟Í0 GoaleformnDragnvwvT~؛ I ،،؟Obje ~

٠f،rm by unmj ►«ard،“ ، 3r«،a،>r.t8 3؛u4 ؛.. Î S

U*1؛ M 1 -J؟ ®

■؛_«\ a ١؛

،*«؛£٢٧١٢١٠

FIGURA 11.15Versiunea m odificată a fo rm u la ru lu i B usinessC lient are un aspect m ai ech ilib ra t şi m ai profesionist.

Introducerea butoanelor de comandă pentru navigarea prin înregistrăriCele două fo rm u la re p e n tru c lie n ţi s u n t aproape com plete. U lt im u l pas presupune in troducerea b u toane lo r personalizate care facilitează navigarea p r in în re g is tră ri, in troduce re a şi ştergerea în re g is tră rilo r. In p lus , va f i in tro d u s ă capacita tea de a salva ş i a n u la m odifică rile , precum ş i cea de a găsi în re g is tră rile pe baza u n u i c r ite r iu de căutare. D in fe ric ire , există a p lic a ţii w iza rd care p o t în d e p lin i aceste s a rc in i ş i prac tic , n u este necesar să sc rie ţi v re u n cod. Aşa cum ve ţi vedea, va f i necesară o l in ie de cod în b u to n u l Add.

F igu ra 11.16 prez in tă fo rm u la ru l In d iv id u a lC lie n t în m o d u l Design. Caseta de in s tru m e n te Form Design, prezenta tă şi ea în fig u ra 11.16, con ţine o varie ta te de controa le care po t f i in troduse în fo rm u la r. A p lica ţia Form W izard a u til iz a t aceleaşi controa le când au fos t create prim e le ve rs iu n i ale fo rm u la re lo r.

P entru a in tro d u ce u n b u to n în fo rm u la r, trebu ie doar să execu ta ţi c lic pe p ic togram a b u to n u lu i de com andă d in caseta de in s trum en te . F igu ra 11.17 p rez in tă cum îş i sch im bă m ouse-u l form a.

Page 251: Baze de date pentru incepatori (manuale facultate)

250 PARTEA A V-A - FUNCŢIONAREA BAZEI DE DATE

B،؛Wreiow Bوءس'

:FirstNam؛ :ست:::ااههاءهسمةيفت'أ*إ:Address؛

Adărei؛

State;'قلءهم'،م

:Phone

jptiMtri-ftcw

مء ها ؟ma، ئه ا و ه sert ؟ «

-laixi

LasiName ؛*,•؛ور'؛FirstName؛

;Àdà’àssl

S,؛ M؛ .Emil؛؛Phori;

Clienl :

~»j0es*anVi9-٢—-أ-—-؛

FIGURA 11.16Caseta de Instrum ente din Form Design conţine o varietate de controale care pot f i in troduse în tr-u n form ular.

FIGURA 11.17Dacă executaţi clic pe un element din caseta de instrum ente , po in te ru l m ouse-u lu i îş i schim bă înfăţişarea, a ju tându-vă să

■ plasa ţi obiectu l pe suprafaţa de proiectare a fo rm u la ru lu i.

آ ء؛ة ă"؟؛؛*؛؛ -a؛i«w؛x أ هء - cp a 'iM؛؛؛

، j مء I ؛Eyan ۶٠١٢٠* ا 0صم إEmbedded ; . , . . , , . ءء/-أءءة-اء :

Q،«y When . . . . . . . Always؛Ot

. . . . . . . . 0.2ŢF aeC ck* ...:.; . . . . . . 10CK0115

. هس . . . . . . . . . هس. » مFonts? . . , , , . . . . . . . . «

Bold . . . . . . . . ؛ . » . .r-ortWB. صر . . . . . . . . . . . ،م . مصه

FontUnd»lne . . . . . . . . . HoNo . . . . . . . . . . . . ا . ماعر؛س

ءسنجس*ن'ثث' ءو ا ءل ا ، Fwm» إ ه؛مه ا Ever،. ا ا

Caption. , . . . . . . . . . . . . ïndMuüdlOent •Single Form . . . . . . . . . . Oifauftاس ..س . . . . . .Views Aiowwi

. ٢٠؛ . . . . . ءوعهء،ءةهم0.ء، .s«، . . . . . سا . ب » م »،أم«

lines. . . . . . . . . . . . Vas ء.مبمم>ءies . . . . . . . . . Auto .ءء؛أءو .. ؛،> . . . . ء . . هم€هسم.٣ . . . . . . . . ء . م ء . . ه5. ء Bor آ

.CaiiroiBox؛ . . . . . . . . . . . ïe

. • ٧؛» . . . . . . م . » ¡ « . م.

S؛؛¡

stil ة: • أ

D upă ce se lecta ţi u n loc d in fo rm u la r în care d o r iţ i să apară obiectu l, execu ta ţi u n clic. F igu ra 11.18 prez in tă p r im u l pas a l ap lica ţie i Com m and B u tto n W izard, care apare când ob iec tu l este p lasa t în fo rm u la r.

Page 252: Baze de date pentru incepatori (manuale facultate)

11.18 FIGURAP rim u l pas al aplica ţie i Command B utton Wizard vă in v ită să selectaţi t ip u l de operaţie executată când se execută clic

,pe b u to n

251 CONSTRUIREA COMPONENTELOR INTERFEŢEI ' ؛؛,؛CAPITOL

D upă ce se lecta ţi o operaţie, pasu l 2, prezenta t în f ig u ra 11.19, vă in v ită să selectaţi b u to n u l care va apărea.

FIGURA 11.19Pasul 2 al ap licaţie i Command B u tton W izard vă in v ită să selectaţi bu tonu l care va apărea.

يؤع ءياع إلءص |n«ft آأل'0ءهآ V-S■ نيسم ترايئ

ضء!(مت5محا-ممم

ق كال'■*م ذيj Evî ءم؛ام إ 0هءه

ا،ءهء.0،إآ ... . .

. . . . . . .Ţype ءمءءباء-ء. . . . . [ءء:سم . ءءا

ه ه م بلءءءس,ج...؛، :مHypţrh*سءداصأ ,

'سهسءأهس...أرت« ..

ء «<،٠٨ ه « ٠٠ IOJ ص (٠ h«ppan»٠١٠١ء ١٠١٠* معام»اسمم

Emb«dd،cاجم«مءء«ل.ا ء اسء 0ءء،سم مس ٠،.

١«:Aiways

ا..م;سم■1.75

٠ "'«ض؛«مأا’""’“س ٠ ٠ ٠ءا ء ءه ء ء ء دصمحء ه ه ء . ءاع' » :IWflMiBIZBMBBMI ا ► >-ص ج ما*م.٦٠

ءمءءءمما«هءهب |سهءهءم«ءء.'« 'ام ٠٠٠م مءءءا؛ م' ءمهإم’ممبسم، مه ء » م آممحمهبمةءممم،ب مء?،،م"'رسه

. :سن,.PcrsCok»

ب تييم-ت

ب ج ةق'■!م|'س - -م ك ق - إ ء , ث م ثا م

ا تخاتءم،؛ام م-ةااعآ

\u. 1JW.ViWW ء سءه:؛?button «٥ an ؟pictur ه lyouwani '.®ttor

(م؛ءء ء آمل هس Tex،, you •«؛ •؛؛٠٠ ihe tsxt ء0ءههل.•اممءل'جيسم

ش هى،ءم ، ء ه8مءءءا ه ه ءدWS'jrS; مءل«ملن ;

جإ~ءءء إجقجججمهء،اإلئء|:إ0سومتب

|؛ايل Arrow (6يسف |UpAi؛<'w(Btj؛،

rswvAiPwuiFwsCobf,

bggŢrt•?

ت

«همتأس،مسمبا -■ذ • ••• , . . 101x1ا ffc *،، ص ،٨١٠٠١ ءءس ؛». ء؛ءصمم مأء؛ا

ء ■ ٠ ه ء فءم م ه ■ ; أ5• tn م ١٠ا 0أمسمبمآئآمل ٠ ؛ سم ٠ ا ٠ ل ٠٠ ر ال ■ ممح' ■;*’أ- دحئ ؛- . L؛

mnnffrwriiCTmarr;

S S K S M :إ 0اام ا ت'.عثتتتتءتتءءا.,.. tvtre ا c*h~

ء-ءهآمب . . . .PKtie. . . . . . . . .

م م آ م ء م . . . . . ،ح.

مةبسءض5..؛ Hypstfefc هس!«ي

'• ؛ ......؛،؛،، ..

ء - م' «هوسم. ،؛

ءأس ءم.

Page 253: Baze de date pentru incepatori (manuale facultate)

PARTEA A V-A - FUNCŢIONAREA BAZEI DE DATE

U lt im u l pas a l a p lica ţie i w izard , prezenta t în fig u ra 11.20, vă in v ită să spec ifica ţi u n num e descrip tiv p e n tru bu ton . Când va sosi m o m e n tu l să in tro d u c e ţi cod su p lim e n ta r p e n tru b u to n u l Add, ve ţi vedea câ t de im p o r­ta n t este să spec ifica ţi num ele u n u i bu ton .

FIGURA 11.20Pasul 3 al ap licaţie i Command B u tton Wizard vă in v ită să specificaţi un num e descrip tiv pen tru obiectu l bu ton de comandă.

F ig u ra 11.21 p re z in tă în fă ţiş a re a fo rm u la ru lu i In d iv id u a lC lie n t d u p ă adăugarea ce lorla lte butoane de navigare.

F IG U R A 11,21F orm u la ru l Ind iv idua lC lien t cu butoanele de navigare personalizate.

p؛s؛V،<vk*v fc ،،؛٠٢ mai?؛ n«Ht؛ vWw ،؛،£ ٤٠

;Command¿؛

Rrg ^ v ,: ¡ssu٠ - ■

!٠ OÄB 1 Ev«*: I Other j «،■؛I Fofiti CapSon. ■ , . . . . . . . . . . . Command2S

.. .. Embedded---------ypt . ؛ ؟Vfjre ؟ ..........Transpirar*. , . . . . . . . . . ;No ؛

. . . . . . . . . Address ؛Hyperiiri-------S،،AtHms ،؛hjpsrif ؛

؛ v؛؛tfe........... ;٢؟؟so،áyWhen. . . . . . . . . . , -Always؛D ؛

,the butîwi later ؛٠ refer ٤٠ you ؛<wi hé ٢١٠٢١٠ anogf،J؛Arâ ؛

That's d ،he irf ormetian the «*ard need، ،0 create youf ».d bufe؛ccrc،n،r

؛;0.1667*

Width. . , . Haight fore Cab .

,ytton؛ Display Hete t،vajstc*،feing the

Care* ) <6** j ^ j |

؛.

■ ■ B H ■ ■

jCOmtnaryJ&Atori Weatd

W ow؛، ،؛؛dt View Jnsert I،o؛

؛Addr؛،«1

:Address؛

;ZipCode

Email؛.Phons؛

؛;CfcHlI'TvTf:؟

Page 254: Baze de date pentru incepatori (manuale facultate)

CAPITOLUL 11 CONSTRUIREA COMPONENTELOR INTERFEŢEI 253

D upă crearea butoane lo r de navigare, pasu l u rm ă to r presupune in troducerea ca p a c ită ţilo r care p e rm it u tiliz a to ru lu i să creeze şi să şteargă în reg is tră ri, să salveze ş i să anuleze m od ifică rile asupra în re g is tră rilo r, ia r în f in a l să caute o a n u m ită în reg is tra re după u n c r ite r iu de căutare.

Introducerea capacităţilor suplimentare în formularul IndividualClient

In troduce rea fu n c ţie i de creare şi şteregere a în re g is tră rilo r, salvare şi a n u ­la re a m o d ifică r ilo r asup ra în re g is tră rilo r, precum ş i a fu n c ţie i de căutare, este la fe l de uşoară ca şi in troduce rea u n u i a lt t ip de b u to n de com andă. Funcţia de căutare poate i i găsită în secţiunea Record Navigation d in aplica ţia C om m and B u tto n W izard. F u n c ţia su p lim en ta ră în această secţiune se găseşte în secţiunea Record O perations. F igu ra 11.22 prez in tă p r im u l pas p e n tru in troduce re a u n e i n o i în reg is tră ri.

eip؛؛ fcw؛«*S،s gdt View Jnsert Pansat loots V

nd29؛Ctxnm

*Petal

LastNameMiaair؛:FlrstName

؛Address؛'

Wha، action do you want to happen when ،he button a pfasîed? ..maiPhone؛

Difer،،■، ars available for Mch cateffxy.

AcitcflCMqcnss:؛

™' e e..ir ii'“”" 'C3te Retord؛،Form Operations Diţ:؛

PrW Record ؛؛؟؛؛ I I Report OperationslAppka،،on • Save Record'؛؛

■jndoRetord

Coiiuu.ii،.i>9

FIGURA 11.22Secţiunea Record Opera­tions a ap licaţie i wizard oferă posib ilita tea de a crea, adăuga, şterge, salva şi anulaînreg is tră rilein tr -u nform ular.

_I I yit> 1 I

¡ecranând euton Weatd

F igu ra 11.23 p rez in tă fo rm u la ru l Ind iv idua lC lie n t, cu fu n c ţiile su p lim e n ­ta re pe care le necesită u n fo rm u la r o b iş n u it p e n tru in troduce rea datelor.

D upă in troducerea tu tu ro r butoane lor m ai este necesar u n element de perso­nalizare. Dacă vă m a i a m in tiţ i, deşi am prom is că n u prea va f i nevoie să scrie ţi cod, va tre b u i to tu ş i să in tro d u ce ţi o lin ie de cod p e n tru b u to n u l Add (de in troducere a în reg is tră rilo r). Această sarcină este îndep lin ită în secţiunea urm ătoare .

Page 255: Baze de date pentru incepatori (manuale facultate)

254 PARTEA A V-A - FUNCŢIONAREA BAZEI DE DATE

gw ¡n>ert Pamat gctords Iod» Wrtdew Edp

Ia t£ ' r^Z T : r j c f t i g j . - • :.'JHLil ؛

! -Ci x l

N/A Rubble

100 Boulder Avenue

iii? ؛ 999S9-Bedtock

Eiikill213-555-1.

>'l»M

p،«e؛R

Find What;

Lock in: jbxtvidudOnn، 3

Matefc jwhcisReid ~ 3 Mow» [

FIGURA 11.23F orm u la ru l Ind iv idua lC lien t, com pletat cu fu n c ţiile tip ice necesaire u n u i fo rm u la r de in troducere a datelor.

Introducerea codului personalizat pentru butonul Add

Controale le d in tr -u n fo rm u la r răspund un e i va rie tă ţi de evenimente. Even i­m entele tip ice s u n t executarea u n u i clic, executarea u n u i d u b lu clic şi apăsarea u n e i taste, p e n tru a enum era n u m a i câteva. Dacă este apăsat u n bu to n , are loc even im en tu l On C lick. Program area în func ţie de evenim ente este bazată pe ataşarea co d u rilo r p e n tru diverse evenim ente ale s is tem u lu i. A p lica ţia C om m and B u tto n W izard se ocupă în lo cu l dum neavoastră de cea m ai m are parte a codu lu i. E xis tă însă câteva cazuri când trebu ie să in te rve ­n i ţ i după aceea, p e n tru a m ă ri func ţiona lita tea b u to n u lu i respectiv. în acest caz, codu l su p lim en ta r are ro lu l de a da câm pu lu i ClientType valoarea cores­punzătoare. F igu ra 11.24 prez in tă m odu l de acces la p rocedura evenim en­tu lu i On C lick d in fe reastra Property.

Lângă procedura even im en tu lu i O n C lick d in fereastra Property, prezentată în f ig u ra 11.24, ve ţi observa u n m ic b u to n cu o elipsă pe el. D upă ce vă a s ig u ra ţi că este selectat b u to n u l Add, dacă executa ţi c lic pe b u to n u l cu elipsa, va apărea o fe reastră V isu a l Basic Code E d itin g (pen tru editarea co d u lu i în V isu a l Basic). Această fereastră ş i codu l su p lim e n ta r care trebu ie in tro d u s s u n t prezentate în fig u ra 11.25.

Page 256: Baze de date pentru incepatori (manuale facultate)

CONSTRUIREA COMPONENTELOR INTERFEŢEI 255

ءلصقلOta¿

MiOا؛ذ اء؟هلءاا-ن

، ذ

'¿loCca* !ءءءلءءأوا■صق؛ل■:,؛.:■ قFermat j r-i،؛ Even، j o،her I ٠، ا

. . . . . . . . . . . ب . .أ . مم. ا icit ؛- - t;؛OoE -- ‘

. . . . . . امرءمء . -.ن 0ام ء 'ءمءم ... ...... . . ٠٢١ اه1 —I I - اءءهه«ءء*On Ck* . . . . . . . . . . . . . . [Evw

ه . إ . . . . . . . . . . . . .: OnCWCkم ء ء . . . . . . . . . 1 جآءس“.

. . . ه Of>Mcu،sMo■■ ء . . . ف. . . . . .٠، On Maine .

، . . . , . , . . . . . ح <٠٥٠١١٠.

. Oo Key Pi e s s . . . . . . . . . . .

Pnwie

ءةءصم <ا آا

itilndow tjelp ؛ آءل’س !٠٠٠٠" ؟ ؟ ء ٤٠* ٠٠ .؟

ء ؛ ه ث'هههأل؛ هي-م9 ءس أ إ س ، س

H*cro or finctionUvît rürtfv^n :onOcü lî .;¿¿é¿

Procedurile pentru evenimente corespunzătoare controale lor pot f i accesate din fereastra Event a ferestrei Property.

FIGURA 11.24

FIGURA 11.25Codulsup lim entar, in trodus p rin procedura cmdAdd_ClickQ, a tribu ie câm pu lu i ClientType valoarea corespunzătoare.

ءم اوء ٨ c،.TTV،t ءل0ء، ه ا ،٣ م ، ، < م ء إ

س س

snmmmsammmm Ferma،ا Da،e Ever، ا other ا ٠• ا

On Enter.. . . . . . . . . . . . . •r On.. . . . * ، £ . . . . . . . . .

. . . . . . . . . OnâotFocut. . . . . ا .. . ه ه سه »

.....OnOUl،آء0،سام . . . . . . . . . . . (Ev«r إ

؛مءسمسممMWO'؛ ; نل؟سمااأآءه

■،؛ií-lrs yţcco* س

CNznuin (ACW^IAIN)• teti (tefa)

H ■ م،بس مءء،ءء □a؛* cإلاءا، آأولءس

p، 1 vats 3u،■ cmdAdd_'líck()On Eccor Goto Err_crna،a،l_Cilck

تسمءةتسظءءمتت؛لlimdAdd CjT«wan:?B.jtK»~ «l

همءمسا ، ا مممحء

jCma.GoToRec

صه: 'ست؛مء ء:م0ءآر1ءع تمهم

;oníTorrype :->»

:>wUdd_Click¡

هءعأ£ه Cliefc:

ؤل »U-'ث

عق

pewgnView

Page 257: Baze de date pentru incepatori (manuale facultate)

DATEPARTEA A V-A - FUNCŢIONAREA BAZEI256

A cum în ţe lege ţi de ce este im p o rta n t să d a ţi fie că ru i b u to n u n num e des­crip tiv? Dacă v -a ţi i i bazat pe num ele im p lic it fu rn iza t de ap lica ţia Com m and B u tto n W izard, v -a r f i fos t foarte greu să d ife re n ţia ţi d ife rite le co d u ri p e n tru proceduri.

în acest punc t, fo rm u la ru l In d iv id u a lC lie n t este com plet. P entru fo rm u la ru l B usinessC lien t ve ţi u rm a aceiaşi paşi pe care i-a ţ i pa rcu rs p e n tru a pregăti fo rm u la ru l Ind iv idua lC lien t, cu excepţia codu lu i personalizat adăugat pen tru b u to n u l Add. în cazu l fo rm u la ru lu i BusinessC lien t, câm pu l C lien ttype va avea valoarea "B ” .

Formularul EmployeeU lt im u l fo rm u la r despre care vom d is c u ta în acest c a p ito l stochează în re g is tră rile despre angaja ţi. Spre deosebire de fo rm u la re le p e n tru c lien ţi, fo rm u la ru l p e n tru anga ja ţi n u necesită o in terogare , c i va acţiona d irec t asup ra ta b e lu lu i Employee. C aracte ris tica in te resan tă a acestu i fo rm u la r n u este com plexita tea , deoarece, de fap t, acesta este foarte s im p lu , ci fe lu l în care derivă unele d in tre în su ş ir ile sale d in m etadatele ta b e lu lu i E m ­ployee.

Poate vă a m in t iţ i că în tr-o bază de date d in Access po t f i stocate varia te ca rac te ris tic i ş i m etadate de؛" căutare. F igura 11.26 p rez in tă m etadate le de căutare p e n tru câm pu l D epartm entID .

FIGURA 11.26Controalele afişate şi metadatele de căutare pot f i stocate în metadatele câm pulu i.

. ... ¡ ¡i i i——؛j؛as t؛، s*؛ .Qsfsma.

AjtoN-nb*'RrKName

Marfc’rJIla؛liî،iiane

،»ecu،3؛؛ou

٠٠٠«،?»yStat»ZipCodeHonwfhcr«WorkfxterwonEmail Address

NumberDepartment tD(*/iiberID؛؛eCls؛Employ

_;r_oporţ«s_؟te،d؟

iane،«¡ iqofcup Oi*،ay Control

ce '■/pe؛Row 5ou RowSăOrcS

jnw : :>؛،Bound C .0*mr>C«rt

Hsads؛ 'Cotuir Column Wfc*hs UrtRws.U،t width

،،Un» Toi

.............................Combo Boc;Table/Query

،partmentid from De؛efect dexrtpcion,d.؛؛

Departments)Description

—~ Ţ_____fiaHSSj. ¡؛؛ I______________________jOepa'trncnt______Department؛¿،

| ■[ -•r —B— ~-n" [Show:؛؛■ : ؛Crtteri-؛،

Page 258: Baze de date pentru incepatori (manuale facultate)

CAPITOLUL 11 CONSTRUIREA COMPONENTELOR INTERFEŢEI 257

Figura 11.26 arată că pen tru a afişa datele de căutare d in tabe lu l Departm ent este u tiliz a t u n con tro l de t ip casetă com binată deru lantă . Datele d in tabe lu l D epartm ent se găsesc în proprie ta tea RowSource d in ta b -u l lookup. Probabil vă a m in t iţ i că în tre tabelele D epartm en t şi Employee există o re la ţie u n u la m u lţi. Cheia externă a câ p u lu i D epartm entID , pre lua tă în tabe lu l Employee, corespunde che ii prim are d in ta b e lu l D epartm ent. In acest mod, elementele d in caseta com b ina tă s u n t sincron iza te corespunzător cu în re g is tră rile d in tabe lu l Employee. A p lica ţia Form W izard utilizează in fo rm a ţiile d in m etadate când constru ieş te fo rm u la ru l Employee. F igura 11.27 prez in tă fo rm u la ru l Employee, com p le ta t cu bu toane de com andă personalizate.

FIGURA 11.27.M ulte d in tre caracteristic ile şi controalele u n u i fo rm u la r derivă d in metadatele bazei de date.

D upă ce a ţi crea t câteva fo rm u la re p e n tru date, ve ţi începe să vedeţi foarte m u lte elemente com une în procesu l de cons tru ire a fo rm u la re lo r. Cu alte cuv in te , d u p ă ce c o n s tru iţ i câteva fo rm u la re , fo rm u la re le încep să semene u n u l cu a ltu l! S in g u ru l t ip de fo rm u la r despre care n u am d is c u ta t până acum este cel care stochează datele d in două sau m ai m u lte tabele s im u ltan . Aceste t ip u r i de fo rm u la re au u n n ive l de com plexita te care depăşeşte sco­p u rile acestei că rţi. P entru a vedea u n astfe l de fo rm u la r, p u te ţi deschide baza de date N orthw ind Traders, care vă este oferită îm preună cu prog ram u l Access.

Secţiunea u rm ă toa re prez in tă cons tru irea u n u i fo rm u la r care n u este bazat pe date. M ai precis, ve ţi a lia cum p u te ţi c o n s tru i u n fo rm u la r de t ip m en iu p rin c ip a l. în p lus , ve ţi învă ţa cum p u te ţi m anevra d ife rite le p ro p rie tă ţi ale fo rm u la ru lu i, pe care ve ţi d o ri să le u tiliz a ţ i a tâ t în fo rm u la re le bazate pe date câ t şi în fo rm u la re le care n u s u n t bazate pe date.

٠٠٣ أءإأإ؛ آا'هءمحلI؛x،s سص هج: ه :

Keaton

500 Park Place

¿،،•آ19333-Devon

I «ا»مم»ء ٢١ WölK Extension

ا&أساب ،* ه ما ؛آ ءمه

c6h.com؛ile،^tAttorney-Partnerلا,سا؛ا'ااا,ءا):

Prop eru ه سا،ءااالاEnvironments! Lsw Antitrust اوا » >ا * ا * »ا اFamily Law Criminal Law Maritime Law

Record: l< I < I I

Page 259: Baze de date pentru incepatori (manuale facultate)

Crearea unui formular de tip meniu principalF igu ra 11.28 p rez in tă o sesiune de creare a u n u i fo rm u la r, in iţ ia tă p r in deschiderea d irec tă a v izu a liză rii Design, n u a ap lica ţie i w izard . Deoarece acest fo rm u la r n u se bazează pe date, n u s u n t necesare butoane le de n a v i­gare p r in în reg is tră ri care apar în m od norm a l în partea de jos a fo rm u la ru lu i. E xis tă alte a tr ib u te pe care poate d o r iţ i să le m a n ip u la ţi, cum a r f i fa p tu l că este sau n u activa t b u to n u l m in /m a x , t ip u l de chenar şi legenda (explicaţia) fo rm u la ru lu i, p e n tru a n u m i n u m a i câteva.

258 PARTEA A V-A - FUNCŢIONAREA BAZEI DE DATE

FIGURA 11.28Fisa de proprie tă ţi a fo rm u la ru lu i vă perm ite să m an ip u la ţi diferite atribu te alefo rm u la ru lu i.

D upă configurarea fo rm u la ru lu i, p u te ţi să in troduce ţi butoanele de com andă care vo r lansa fo rm u la re le create în acest cap ito l. Vestea b u n ă este că a p lica ţia C om m and B u tto n W izard face aproape toa tă m u n ca în lo c u l dum neavoastră. F igura 11.29 prez in tă p r im u l pas pe n tru in troducerea u n u i b u to n care lansează u n fo rm u la r.

S،s ٤،؛، ،؛hw لس هأمم'با

Fotm

د ا مم« ا ءم£ع ا سم ا اا1 ا : ءTEBMsinMinu .........................، ءمءما

Form ئ . ي . . . . . . . . . . إ >؛محمع ٧٠٠٠ .0o<h . . . . . . . . . . .س .

*ا مسا م ء ه ء ؛ . . . . ا . . . . . . . ئ.No . . . . . . . ^س؛»ء . م ء، ءهNo . . . ها . صم؛ء سوعءم.

Une» . . . . . . . . . . No؟Cr«،n

No. . ، م آ . . . . . . . عجمج.og،؛،biydr* styla. . . . . . . . . . D

Contrai Box... . . . . . . ;...-VesMnHaxButtiy». . . . . . . Nonedoi، B u ta n ....... .. YesWha،*Jh،Buaen... . . . . . No

"75. i.........................w»،hv(٨٠٨٠) . . . . . . . . . . . ءص.ءء، .

PictufS Type. . . . . . . . . . . . E،nMd،dClp . . ىهمم..ا؛>ءب . ءءءوم

PCureA،jnrt«n، . . . . . . lienttrTyng .. . . . . . . No ءىا،اء . ............ 2مب

ااءهةآ قمما،ءة9'' وكسw؟ţri1؛؛IŞJ Crea،sfomnDs إ Oblica

fonr.Şyusinq wcad ؛ ءءهءء؛ ه -ل;1 ا ؛ ' ' آ عك

اءسمه؛ح،ؤ؛س. سدسء.

ع»سم)

F igu ra 11.30 prez in tă a l doilea pas a l ap lica ţie i w izard , care vă so lic ită num ele fo rm u la ru lu i care va f i lansat.

Page 260: Baze de date pentru incepatori (manuale facultate)

FIGURA 11.29în procesul de in troducere a u n u i bu ton care lansează un fo rm u la r este u tiliza tă ap lica ţia Command B u tton Wizard.

CAPI1'4»I.UL1i CONSTRUIREA COMPONENTELOR INTERFEŢEI 259

a a.

^lcj *jj

<non»)Embaddod٠٢ )١٠٨١٠ Son da you Mart ١٠ ha«•«' w،w> the button i

preiiad?

Dff ٠٠ ، Kticoj e/t avaiable lot « ٢٨ t«agory.♦ Peta»

:xt0s9؛<C«،e Artxxii؛pţ،y Fotm F،et|، ٠١، Roco«d Navigat |

I Chit Form______[ReCMd Operatorii or~ Fr.ţf ؛ :d؛£ B22kE2t â3HII OIBiB.'it OptfaBons .jAppicatton lOpenPage

Prin،aF&-.n| • ؟aneou؛،،>|MIPrtr، Current Fom

gwigr-ir Data ١

CmvndO

Ctrctl |

IButtonWaafd

١ ăiii*« | X ؛ ٠* > 5؛ ؟؛ i ggg^-ryT^. 'i Foimat | D«t، ١ Evan، | ٢١٥٠٠ | Pi

. . . ConmandG

x] -

I Fsrmst | osia | Evori | oth» | Al |CnfflBMTdD.............. ؛ , .at-SKr t jCreate fcm rObţetK(none)fiicrdord

<Create tom b !١].؛ |١٠٠١٠، fwm wcnid you Sa the coranand button to aţ*n’

| Bu!ln«sClient€ OetW

lnî»Kju«ICIIent]BMaiiManu!؛

Cancd { <B.ad». | a e iV } Fnth |

BEE22K ؛

I (Comwnd Button Wm»d

FIGURA 11.30A l doilea pas alap lica ţie i wizardsolic itău tiliz a to ru lu inum elefo rm u la ru lu icare va f i lansat.

■0 -a * ، ؛ * * ، ، ' • ٠ ٠ ٠ i ؛•a• a s a

-،jalKjli 1£؛î،؛5w> '3M«، 1 ■> ؛ 1 ٠، »؛؛؛؛>

Page 261: Baze de date pentru incepatori (manuale facultate)

DATEPARTEA A V-A - FUNCŢIONAREA BAZEI260

F igura 11.31 prez in tă al tre ilea pas al ap lica ţie i wizard, care oferă p o s ib ilita ­tea ca fo rm u la ru l să fie deschis p e n tru a găsi o a n u m ită în reg is tra re sau să fie deschis p e n tru a afişa toate în reg is tră rile .

FIGURA 11.31A l tre ilea pas al aplica ţie i wizard specifică m odul în care va f i deschis fo rm u la ru l.

F igu ra 11.32 p rez in tă al pa tru le a pas al ap lica ţie i w izard , care vă oferă capacita tea de a specifica dacă b u to n u l va conţine te x t sau o im agine.

FIGURA 11.32

A l patru lea pas al ap licaţie i wizard specifică aspectul bu to n u lu i.

،arma؛؛ w lŢ»ert؛iJ ، ،٤

Tahcma

قاهكل|ةعثمتا:; ٠ ٠ إ عتسا Dat، ١ Evant I سم ا Al ا أ -

Conmardû . . . . . . . -• ; '-،<■؛«•■ ؛ , . ه—•'

!٠٠٠ ئوسIl "‘ miiîn 1 F اا~

Creáis 7 ؛0اء -. n i .form by ءءهءت

Emtaddcdíhefona?

■Crus■س«أ . CPW1 ه form ¿nd dfcsíiy ،٠٠ هعء » fo«ء,؛،ءأءءه<ءساا i.aiKcmct ء atfhyee ٢٠٢ ٠ ءصء Alway»

1.0417-، مس.'ب ٢ Open (he ؛٣١ and س sçmjtk 'مهم ه

.jopen ir« form and ،tow at the recofdí' ء-2H7W3MO٢٠٠١٠٠٨٠

NoffMl

............i

■j—j

t*™»

يمب

يءس م م ا ، م ء ، ا ؛سامح، « مأ '

lwi*y■ If •ء، ؛ text ١٠١٠ *ywc*n ،yp أ ء ء roa tltxer هه3ء«، ؟، lud ء picture to ء ء1ء ء ; «■choose PWUB, youÍTtcisY ء

٢٠٢١١ ؛Ccmn*

ء 1مم ءممءم.-نر form

ء ٢ ءصء ;

I'Car*;«،

Page 262: Baze de date pentru incepatori (manuale facultate)

,iT O LU i.11 CONSTRUIREA COMPONENTELOR INTERFEŢEI 261

F igu ra 11.33 prez in tă a l c inc ilea pas al ap lica ţie i w izard , care oferă p o s ib i­lita te a de a in tro d u ce u n num e descrip tiv p en tru bu ton .

FIGURA 11.33A l cincilea pas al ap licaţie i wizard oferă posib ilita tea de a specifica un num e descrip tiv pentru buton.

F igu ra 11.34 prez in tă fo rm u la ru l com plet de t ip m en iu , precum şi cele tre i fo rm u la re create în acest capito l.

FIGURA 11.34F orm u la ru l com plet de tip m eniu princ ipa l şi cele tre i form ulare create în acest capitol.

ءهء هس:ءلءأمب ا-ءءس تاهءل ءهمبلإ-أممإل■ب

ConwwdOوآسم

(vtrt I آ AI.. . . . . . .. . . . . . . (net*). . . . . . . ÎM&&V)

l-omtc

?butten ٠٠ ftsme اصي ،٠*do you إسا ،س»ا مسهاصهسم، سا س ءم ا

Encfcy«*Or.» »٢د ص ٢٠٠١، to £سء ٣٠»٠٠١٢ل th،(■، a> >؛٦٠ Wo»Mi«rln«س

صء س ءحءدصأس،ة1همأم3ه30

'سسم ه

م.اءسص ٢ 0ءتاامء Heb on ملء،؛rrta^ tn» سءم

.^ ~ i■'Cwtri'

jCoBWvind Button Wteard■٢؛

ب firmst 8ءهمءءمأمج :،٠٠ ء مآء؛ *

» ■ ص هSmith ا Joe

y» I11-1M11I؛c«i؟SfleiiHS إ

3 Mam strae!ا سمن ت

r

123 Main street ٣ إ Hi>it*Pimu؛ ٠

قإ|ئغع.ثئ/نةءtir^kmefom I

] rGHOtrtfam¡*¿ إ

"[j tr>Jvk)ujlO«>< Farm -. ؛

MB؛؟،عس*ا م ،ا م Fiinlslone

0U8؟Boulder AV ا0ت

ذا„ل نل٢ Copper Falls م . ة ؟عم ا

،Bun ا ت13-555-131ت ء°سسم•

g la ix l j.ftern¿'

Page 263: Baze de date pentru incepatori (manuale facultate)

Rezumatîn acest cap ito l a ţi văzu t câ t de s im p lă este cons tru irea u n u i fo rm u la r în Access. în tru c â t ap lica ţiile w izard p o t face aproape toa tă m unca, n u trebu ie să excelaţi în tr -u n lim ba j de program are p e n tru a co n s tru i o aplica ţie p en tru baze de date. De fap t, a r tre b u i să vă fie c la r că s u n te ţi pe calea cea b u n ă în constru irea une i a p lica ţii p en tru baze de date! U ltim u l pas al acestei că lă to rii in iţ ia le este să o fe r iţ i u t il iz a to ru lu i pos ib ilita te a de a extrage in fo rm a ţii fo los ind rapoarte le . în ca p ito lu l u rm ă to r vom d iscu ta despre rapoarte .

262 PARTEA A V-A - FUNCŢIONAREA BAZEI DE DATE

Page 264: Baze de date pentru incepatori (manuale facultate)

OBŢINEREA UNOR REZULTATE UTILE: INTRODUCERE IN CREAREA Şl PREZENTAREA RAPOARTELOR

în acest capitol:■ Prezentare a ap lica ţie i Report Designer d in Access 11 Crearea rapoa rte lo r p e n tru ap lica ţia TEB I I In troduce re a elem entelor rapoa rte lo r în fo rm u la ru l de t ip

m e n iu p rin c ip a l ■٠ R ezum at

Page 265: Baze de date pentru incepatori (manuale facultate)

în această carte am a firm a t că valoarea u n e i baze de date constă în ca lita tea da te lo r pe care le con ţine ş i a in fo rm a ţiilo r pe care le poate oferi. Până acum , în general, a ţi lu c ra t cu elemente de date şi în re g is tră r i ind iv idua le . S ingu ra excepţie a a p ă ru t când am prezenta t in te rogă rile şi l im b a ju l SQL (S truc tu red Q uery Language). Folosind in terogările , p u te ţi colecta şi agrega datele. Procesul de ru la re a in te rogă rilo r este adesea de n u m it transfo rm area da te lo r în in fo rm a ţii. Se m en ţine însă prob lem a m o d u lu i în care s u n t prezentate in fo rm a ţiile p e n tru u tiliza to r. Ea este rezo lvată p r in exis ten ţa p o s ib ilită ţ ii de rapo rta re a date lo r d in aplicaţie . Rapoartele su n t, probab il, ca rac te ris tica cea m a i im p o rta n tă a u n e i baze de date, precedate n u m a i de ca lita tea bazei de date şi a date lor propriu-z ise. In acest cap ito l vom prezenta a p lica ţia R eport Designer d in Access ş i tehn ic ile de bază pe care trebu ie să le în ţe lege ţi p e n tru a crea rapoarte sim ple în Access.

Prezentare generală a aplicaţiei Report Designer din AccessCa ş i în cazu l fo rm u la re lo r, „cu m u lt tim p în u rm ă ” , în ca p ito lu l 2, am p rezen ta t pe s c u rt a p lica ţia R eport Designer d in Access. A cest ca p ito l îndep lineşte p rom is iunea de a vă ară ta cum să u tiliz a ţ i această aplicaţie .

264 PARTEA A V-A - FUNCŢIONAREA BAZEI DE DATE

FIGURA 12.1

A plica ţia Report Designer din Access.

١٤١؛؟ *

Vhdow ،Jep؛ rj-rae، Joofs ؛riser؛ Jew؛

Raport

*!EU*!

Design view ٦، 40 Oeste rawxt؛J Crea،« report hy uSng w»d؛؛l

Obiect»

J O I* ¡ ]

♦ PaţeHexiq

*Petei

Groupt

Page 266: Baze de date pentru incepatori (manuale facultate)

Toate a p lica ţiile de pro iecta re a rapoarte lo r funcţionează, în l in i i generale, asem ănător. M a jo rita tea au o abordare de t ip „benzi” (banded). Cu alte cuv in te , când p ro ie c ta ţi u n rapo rt, aveţi la d ispoziţie în pag ină o bandă p e n tru a n te t (header), p e n tru subso l (footer) ş i benzi de de ta lii. F igu ra 12.1 prez in tă aceste tre i benzi. Num ele benz ilo r re flectă cu acura te ţe c o n ţin u tu l lor. A n te tu l p a g in ii conţine de obicei t i t lu l ra p o rtu lu i şi etichete care descriu c o n ţin u tu l acestu ia. S ubso lu l p a g in ii conţine de obicei n u m ă ru l p a g in ii ş i elemente de date. B anda de de ta lii, aşa cum sugerează num ele ei, conţine ra p o rtu l de ta lia t. D upă cum ve ţi vedea, banda de de ta lii poate f i îm p ă rţită în a lte benzi de de ta lii. N ive lu l de div izare a u n e i benzi de d e ta lii depinde de m o d u l de grupare a date lor. Vom d iscu ta în acest cap ito l şi despre m o d u l de grupare în tr -u n rapo rt. F igu ra 12.1 p rez in tă ş i caseta de in s tru m e n te p e n tru controa le , aceeaşi cu care a ţi lu c ra t când a ţi p ro iec ta t şi c o n s tru it fo rm u la re . D in fe ric ire , fiin d că Access este p lin de a p lic a ţii w izard , în gene­ra l n u va f i nevoie să in t ra ţ i în de ta liile neplăcu te ale c o n s tru ir ii u n u i ra p o rt de la zero. în acest cap ito l vom u tiliz a foarte m u lt a p lica ţia R eport W izard.

Crearea rapoartelor pentru aplicaţia TEBAcest ca p ito l vă va conduce p r in procesu l c re ă rii u n u i ra p o rt care prez in tă îîs ta c lie n ţilo r. Ca ş i fo rm u la re le , rapoarte le po t f i create u tiliz â n d ap lica ţiile w izard . Dacă este necesar, p u te ţi in tra în a p lica ţia de pro iecta re p e n tru a face m ic i a ju s tă ri. Aşa cum ve ţi a fla în curând , după crearea u n u i ra p o rt fo los ind o ap lica ţie w izard , ve ţi ş ti cum să crea ţi toate rapoarte le . E x is tă ş i rapoarte com plexe şi, probab il, la u n m om ent da t va f i necesar să c rea ţi şi astfe l de rapoarte . P entru exemple de rapoarte complexe, s tu d ia ţ i baza de date N o rth w in d Traders, care este l iv ra tă îm preună cu p ro g ra m u l Access; o d iscu ţie de ta lia tă despre rapoarte le complexe depăşeşte însă scopu l că rţii.

Este im p o rta n t să observaţi că m unca m a i d ific ilă constă în pro iectarea in te rogărilo r. U n ra p o rt n u este decât u n m ecanism de liv ra re a rezu lta te lor. Rapoartele b ine pro iecta te n u fac decât u n lu c ru : fu rn izează u n fo rm a t

• p e n tru afişarea efic ien tă a datelor.

Lista Clientîn a in te de crearea ra p o r tu lu i cu l is ta c lie n ţilo r, va f i necesară o in terogare pe care să se bazeze ra p o rtu l. în ca p ito lu l 8 am prezenta t cons tru irea une i in te rogă ri cu u n iu n e . O astfe l de in terogare com bină două d ec la ra ţii SQL în scopu l c re ă rii u n u i set de rezu lta te . în tru c â t c lie n ţii se îm p a rt în firm e şi persoane fizice, ia r p e n tru stocarea n u m e lo r acestora s u n t u tiliza te d ife rite câ m p u ri în fu n c ţie de t ip u l c lie n tu lu i, este necesară o in terogare cu un iune . F ig u ra 12.2 p re z in tă a p lic a ţia Q uery D esigner ş i d e fin iţ ia in te ro g ă r ii C lien tL is ting .

CAPITOLUL 12 OBŢINEREA UNOR REZULTATE UTILE 265

Page 267: Baze de date pentru incepatori (manuale facultate)

266 PARTEA A V-A ■ FUNCŢIONAREA BAZEI DE DATE

ندسلآ؛ءءمأء،ءهء

«؛ءأءم■.ب

t<B gdit liwert Şutty Xoob Wryiaw ţjefr

س ٩٧٠٢/ ،١ Design «سwaerd س Create ٠٧٠٢/ by ل

ل«سمح س انسلBusnesiCfeot

Cm«-Employee سSfcşntUsan؟

Obgct*

عءا،وآءء, ؛س ه , ه / س C،enT ٠١ ،،eri،t؛«e,te،r>،me+,+hrKrafrieA5 dsn،,sddr ،551,س6, ' ح م سPromdterrt

T'' ء where ،lienttype «س ه , ه ء م » م , م «سء ؛ س,ا , م س همح»!لمس ت ه ا JNICN Selectآس Oenf ته موFrom،،ent

٦٢ - wheisctenttypaهمسم؛،اءا،؛,مب ا ألءصه

Groups

.

FIGURA 12.2în tru c â t interogarea C lien tL isting utilizează clauzaU n io n , interogarea poate f l creată num a i fo losind vizualizarea SQL.

ءم،؛م،يا،م

objects

Groups

<i I؟٠٠٠٠؛كشلاا ؛_لكك

foamhaetView

نمب م؛ق؛ ■،؛؛ ؛م ١١٠٠١ Jn«؛rt *صم ،ا<ءءءج ٤٥٠ ؛ا ءأ ههمد

،-• :% i l ii ق:‘• - ' مم؛ ٠٧؛أ ج ه و ٠ ؛.

١ مءء١٦٠١٠ J Creete query n Design؛Ş إ

I Create auety by usngء>*اعهCkent Uibng » ا BUST؛I BusnessCاسم

«Cou ء م ا آمم£-ءصء

clien ءلاااء؛ 2، *addr ٠ 1ه ا ء د1ء ا. iD U i j

! ،١١١٢ ؛ ؛> Ace Tomato Company 123 Main Street Philadelphia PA

Basnet، ء،اءمب Applied Technologies ١ Penn Center Suite اماب? Philadelphia PAءص ؟ ماا fl.iKine؛ Bob'S Meuse of PancaWes 100 Dune Ajren، Avalon ;NJ

Business Client Main Line SoSwsre ؛٨، 119 Biddle Raa< ء1ا هه PA أr.dMOual Client Flinlsttne. Wilaia هم؛اب ء هال1أ ث ة 1م ء ءه ء ء Falls ا CA•ndMdu»! rt؛«Cl Rubble. Betty اBoulder Aï 00؛ Bedrock ؛CA أIndividual ااءء؛اه Seaborn Sam؛ 1600 Pennsylva Washington DC؛Individual اتسما Smith. John؛ SX Lancasterا Apt ICO Paoli ؛PA إ

F igura 12.3 prez in tă se tu l de rezu lta te C lientL isting . Poate vă în tre b a ţi de ce s u n t re tu m a te în se tu l de rezu lta te cuvinte le „In d iv id u a l C lien t” ş i „Business C lien t” , ş i n u codurile corespunzătoare t ip u r ilo r de c lien ţi. P entru u tiliza to r, codu l „ I ” sau „B ” poate să n u fie la fe l de in tu it iv ca ş i cuv in te le respective. N u u ita ţ i, scopu l u n u i ra p o rt este de a fu rn iza in fo rm a ţii. U tiliz a to ru l n u trebu ie să fie ob liga t să ghicească sem n ifica ţia u n e i p rescu rtă ri.

FIGURA 12.3Setul de rezultate al interogării ClientL isting.

Page 268: Baze de date pentru incepatori (manuale facultate)

F igu ra 12.4 prez in tă p r im u l pas al ap lica ţie i R eport W izard. Ca şi în cazul a p lica ţie i F orm W izard, p r im u l pas so lic ită u tiliz a to ru lu i o in terogare sau u n tabe l pe care să se bazeze rapo rtu l. La p r im u l pas, p u te ţi alege câm purile pe care d o r iţ i să le afişa ţi.

CAPITOLUL 12 OBŢINEREA UNOR REZULTATE UTILE 267

إ ٤٠٠ ءه£ وس ص ء ؛،«ممئب ٥٠٠ا- ا* *

هج ء، » ا ته . ة . م و م ثس؛ ء م ء ؟ مأ م أجا

i prrarrermBKgaasraig¿.٠٠٠ .:شة غ ؛ق ر هأوممحمحسم-يمج ي'

FIGURA 12.4Pasul 1 al ap licaţie i Report W izard solic ită u tiliz a to ru lu i o interogare sau u n tabel pe care să se bazeze raportu l.

D upă ce a ţi selectat câm purile , p u te ţi trece la p asu l 2. A ic i ve ţi specifica m o d u l de grupare a date lo r în ra p o rt (vedeţi f ig u ra 12.5). în m od im p lic it, u n ra p o rt n u con ţine g ru p u ri. In cazu l lis te i c lie n ţilo r, datele vo r f i grupate după t ip u l clien ţilo r. Dacă vă am in tiţi, trebuie să vă gând iţi la această grupare când p ro ie c ta ţi in terogarea. De aceea, datele d in in te rogarea C lien tL is ting s u n t ordonate m a i în tâ i după t ip u l c lien ţilo r.

Pasul 3, prezen ta t în fig u ra 12.6, in v ită u tiliz a to ru l să specifice m o d u l de sortare a da te lo r d in raport. Dacă a ţi pro iec ta t corect in terogarea, n u este nevoie să specifica ţi o a ltă ord ine de sortare.

Page 269: Baze de date pentru incepatori (manuale facultate)

DATEPARTEA A V-A - FUNCŢIONAREA BAZEI268

títtsip،* ، * fie ٤« VVsw ln*،rt To« ؛؛٠٦-

ObiecOraoçmj، ٠١١؛ Ccyou nan، to add

،،?tew٢٠٠«، ؛، S3؛===؛؛_1

cler،, address!, address؛ , city, state, zipcoda

[addles!؛address؛

Ista،»apcode

Pr-qri،y

Group؛

| Ne«t > ISroupm; - [ Caned Qrvsh

s «»،'؛؛'ra&ss! <■ e«lqn :«New I؛ ¿ re^ew]؛.،؛

FIGURA 12.5Pasul 2 al ap licaţie i Report W izard cere u tiliz a to ru lu i să precizeze m odul de grupare a datelor din raport.

FIGURA 12.6Pasul 3 al aplica ţie i Report W izard cere u tiliz a to ru lu i să precizeze m odul de sortare a datelor din raport.

fe؛P؛؛؛ni«t îcob ţ؛ tfew

..»s٠ ،؛ n؛»p؛ ¿M i؛،Q،£rev ؛

’،S i CreSt،l Wha، ،a-t order do you *art (o- detal record ؛H S H ؛ 'EJ Cresta1؛ ;

rt •ocrcth by iţ to feu ini»؛ You can ,or âevtrAn) order »؟ascend

J؛Z i ١ ،1^ 3~~~—“٢،

3 -J---------------I ٠،(i □ ؛ •

Groups

C m . I I t W I

|ágportWÍ«»d

Page 270: Baze de date pentru incepatori (manuale facultate)

Pasul 4 a l ap lica ţie i w iza rd cere u tiliz a to ru lu i să precizeze m o d u l în care datele apar în rapo rt, precum şi orien ta rea p a g in ii (vedeţi fig u ra 12.7).

CAPITOLUL 12 OBŢINEREA UNOR REZULTATE UTILE 269

FIGURA 12.7Pasul 4 al aplica ţie i Report W izard cere u tiliz a to ru lu i să specifice m odul în care datele apar în rapo rt şi orientarea paginii.

f،»JM

٢٠»،**

eip؛؛ yr>*w؛ insert lools ؛»S ،٠« ٤٠£

Ho« wo*! you fta lo ta/ out your report?2] Createi؛

.13 Croate؛Objera

Orimuaoo

' Pot ،rai ' Landscape

layout "

1 «2u،fc ٢ 0yt،*e2 ٠،

ft I6؛،ao;U ٢ ■ ft2؛jr> u؛o ٢

x««* xx»« xxxxxXXXXX XXX« xxxxxGroups

F Adjusi the ffeMis«h jc «Ifistdsfi، at, ■

j j (jrt* \Can«،.

)Report W art-

F igu ra 12.8 p rez in tă pasu l 5, care cere u tiliz a to ru lu i să specifice u n s t il al ra p o rtu lu i. Access con ţine m a i m u lte s t i lu r i predefin ite de rapo rt.

FIGURA 12.8Pasul 5 al ap licaţie i Report W izard in v ită u tiliza to ru l să specifice s tilu l rap o rtu lu i.

&hctow

٠«*؛

ş j Createi Create ©؛

. What sty؛* waJd you ؛،؟8..?

Corporate Rxmsl Scit Gray

liMakmkMControl from Detail

Groups

1

fceportwuarrf

Page 271: Baze de date pentru incepatori (manuale facultate)

DATEPARTEA A V-A - FUNCŢIONAREA BAZEI270

U ltim u l pas al aplica ţie i Report W izard so lic ită u tiliz a to ru lu i u n num e pen tru ra p o rt ş i în treabă dacă ra p o rtu l va f i p rev izua liza t sau deschis în ap lica ţia R eport D esigner (vedeţi fig u ra 12.9).

FIGURA 12.9U ltim u l pas al ap lica ţie i Report W izard in v ită u tiliza to ru l să specifice u n num e pentru rap o rt şi îl întreabă dacă rap o rtu l va f i previzualizat sau m odificat.

F igu ra 12.10 prez in tă aspectu l in iţ ia l al ra p o rtu lu i. D upă cum vedeţi, unele date s u n t tru n ch ia te . Secţiunea urm ătoare vă ara tă cum p u te ţi m odifica designu l ra p o rtu lu i.

1930120500

;.و.؛*كأه'ممأر آ2مآ pEWffffiTffUM

س س س س سl^g'PQC

FIGURA

سوااأأءا أا؛اا

ciienttvpe cient adfrsssl address2 city statsBusiness c

MaHLIne Software, In 6 ا0سا ا و Road Parti PA 19301Bob's House of Pancak 100 tXne Avenue Avalan MJ 08202

1700 Penn Center Sute ١ Technologies ؛[Apple Ace Tomato Company 123 Main street

PMaaelphePMadelpfia

PAPA

19101 191 ٥١

Pac،tWasttnjfon

BearocK Copper Falls

Smnti, John 00ة Lancaster Avenue Apt 100Seaborn, Sam 1600 PennsytvamaAvRubble. BeQy 100 Bajiaer AvenueFlnwtone, Wilma 102 Bajider Avenue

Raportu l C lien tL is ting produs de ap lica ţia Report Wizard.

life¿»-■:!

Page 272: Baze de date pentru incepatori (manuale facultate)

CAPITOLUL 12 OBŢINEREA UNOR REZULTATE UTILE 271

Modificarea raportului ClientListing în Report DesignerM odifica rea rapoa rte lo r este asem ănătoare m o d ifică rii fo rm u la re lo r. Când execu ta ţi c lic pe fiecare elem ent d in ap lica ţia de pro iectare a rapoarte lo r, p u te ţi m anevra d ife rite le a tr ib u te ale e lem en tu lu i selectat în fe reastra Pro- perty. A lte rna tiv , pu te ţi lu c ra d irect cu obiectu l pen tru a-i m odifica d im ens iu ­n ile ş i/s a u poziţia . F igu ra 12.11 prez in tă ra p o rtu l m od ifica t în a p lica ţia de proiectare.

SBSSSBiE

Report

: Bepert Hcajer

Glie ut il stinoReiiort•♦Page Ha ader

Wârassj.* ctonttype Hctder: ،CJteriOype:::::::: j::;♦ Caetd

iptod،: Page Footei

■ Peport Footef

(none)Embedded

Centw

F igura 12.12 prez in tă aspectul m odifica t al ra p o rtu lu i C lien tL is ting în m odu l P rin ţ Preview.

FIGURA 12.11Rapoartele pot fi m odificate la fel ca şiform ularele.

) •٠■ *i o ؛٢؛ ;>؟<٣

§ m ~ i |

■ S .z ja

a

Oth* j Al | ،٤٢٠٢ ...C،or،Li؛،؛n؛iPeges،؛ _____

Ai PagesPer Column؛

Format؛.........C،ptk*v ..

Page Header,,Page foater. . . . .

GrpKespTogathor ;W»h. . . , . . . .

Peturs:,, . . . . . .Pfcture Type. . . . -

P»ă،»e 5» Mode - Pict،*B Algnfrant.

. . . . .١١٠٩ PictursPctus Pacps. .،,.

&WX.. . . . . . . .. . . . . . . ..Gridv

Page 273: Baze de date pentru incepatori (manuale facultate)

FIGURA 12.12R aportu l m odifica t C lien tL is ting în m odul P rin ţ Preview.

272 PARTEA A V-A - FUNCŢIONAREA BAZEI DE DATE

Introducerea elementelor din raport în formularul de tip meniu principalD upă ce crea ţi u n rapo rt, trebu ie să d a ţi u tiliz a to r ilo r pos ib ilita te a de a ru la ra p o rtu l. în acest context, p u te ţi oferi acces la ra p o rt în fo rm u la ru l de t ip m e n iu p rin c ip a l, pe care l-a ţ i creat în ca p ito lu l precedent. F igu ra 12.13 p re z in tă p r im u l pas p e n tru in tro d u ce re a u n u i b u to n a l ra p o r tu lu i în fo rm u la ru l de t ip m e n iu p rinc ipa l.

FIGURA 12.13O pţiun ile pen tru butoane ale rapoarte lor se găsesc în secţiunea Report Opera- tions a aplica ţie i Command B u tton Wizard.

Client Llstbig Reportcfcent Address Adrese 2 City. State. ZipCode

PA 19301MJ 08202PA 19101PA 19101

PA 19301DC 20500

PsdiAvalon

Sula 17 Phiadelphla Philadelphia

Apt 100 PaoliWashington

BefrocK Copper Fals

119 BHdle Road 100 Dune Avenue 1 Psnn Center

500 Lancaster Avenue 1600 Pennstfvania Avenue 100 Boulcter AV8nue 102 BoulderAvenua

Cllwt Mam Une Software, Inc. Bob's Housa of Pancakes Appled T echnologies Ace Tomsto Corrpany

ln<tMdiial ale*«Srrith, John

Rubbie, Betty F ؛nts! cr؛e. wiima

J_؛ :<■!<«! ~ id jd i ؟®؛،p

Page 274: Baze de date pentru incepatori (manuale facultate)

OBŢINEREA UNOR REZULTATE UTILE 273

Pasul 2 so lic ită num ele ra p o rtu lu i care va f i ru la t la apăsarea b u to n u lu i (vedeţi fig u ra 12.14).

FIGURA 12.14Pasul 2 al ap licaţie i Com m and B u tton W izard vă solic ită num elera p o rtu lu i care va f i ru la t la apăsarea bu to n u lu i.

Pasul 3, prezen ta t în fig u ra 12.15, vă so lic ită să p rec iza ţi dacă pe b u to n va apărea u n te x t sau o im agine.

FIGURA 12.15Pasul 3 vă solic ită să precizaţi dacă pe bu ton va apărea u n text sau o imagine.

.ي؟. ؤإل. ج ي؟!Tahonaand3؛íComp

ص ٠.

Create fomi iس you8<í(he tomm*nd س00 (٠ ٣١٦?، مله ٢١؛»«؛س

*&*■*& ب م م ء ء مهومء I

ه ه د ء * ء وسمم

ou I « I »■ I f * ]

jj nÍBianá.6i<KipWganl

٤٠، وسم آءمء>أأ ء'هءم حي إسمت

1مأءءءاو

عقrsato forminC* an? ٠١ ،٠٠ هص or a wfcjre ٠٠) ،Da you vtar

: ٢٠٦tv«the،e*tt2(fecíay. iíytú» » , vou،hoo،eî»xt؛iمس ; ه ء ؟ صسهاسه ه ، هس«ج,مءء مء

'va■ م *.-•. LítngSeoort Iءمم,رب:ء ء|مءءمءه؛أءءءءب • !"E iW W fW

fot سم، ; ءءه،ةلة

ث ك

إ ءس«سهء'CMmno * '؛ [ ifrst» }C r*4.

JcpmtnandBüttanWeard

Page 275: Baze de date pentru incepatori (manuale facultate)

DATEPARTEA A V-A - FUNCŢIONAREA BAZEI274

U lt im u l pas al ap lica ţie i w izard in v ită u tiliz a to ru l să furn izeze u n num e descrip tiv p e n tru b u to n (vedeţi f ig u ra 12.16).

FIGURA 12.16U ltim u l pas al aplica ţie i Command B u tton W izard solic ită u n num e descrip tiv pen tru buton.

în fina l, f ig u ra 12.17 vă prez in tă fo rm u la ru l de t ip m e n iu p r in c ip a l care lansează ra p o rtu l C lie n tL is tin g în m o d u l Preview. Dacă ru la ţ i d in nou a p li­ca ţia C om m and B u tto n W izard, v i se va părea foarte s im p lu să in tro d u ce ţi u n b u to n a l că ru i efect este p rin ta re a rezu lta te lo r ra p o rtu lu i.

Co،nmand3

.!□ 1 x| 1

،،»'a,:٤٤،«؛؛٠٨؛ ÛP*V:؟§

EjQ ~ Create form h |Vflia، do you ؛

refer to: the I؛A nwaningFu fCier،؛

st»rç؛L

Ihafjaltherfofi ؛.caomand buttonfor»

ne،s OoV hx3 .؛u

Pot )؛١٠١ IrOJO ia :

T.-؛Cowma-Hl3 *

٢ Oacisy Help on custoir&ing the button.

.I

’<s>rtnvŸ¡ k / ion Wgard

: : EmployBB Form |

SnwssOsnt Foim |

liyjyitlue) Oient Ferm j

; [.■c»»it:üitriîiR»ort I

Business Client

Main Line Softwaf®, Inc. Bob's Hous? of Pane*؛

AppiedTethnologiBS Acs Tomato Company

lniliviiiu.il Client Srrith, John

FIGURA 12.17F orm u la ru l de t ip m eniu princ ipa l are acum sicapacitatea de a lansa rap o rtu l Clien tL is ting în m odul P rin ţ Preview.

Address

*٥ ' ÿe» lewis Window ؟١، ،؛(؛؛

٤١٠*« F ٠ ’ sa : is ٠ Cy ٠K 'S P i O S f f l : •٠٠%

S :؛ «Î < ،3 ؛ ٠ .«>*£ ; X'٤٤ ؛«؛؛٢٢ ؛ SSfWl،gn view؛؛fO Create form h De]؛ | I Objects

Client Listing Report

Page 276: Baze de date pentru incepatori (manuale facultate)

RezumatCrearea rapoarte lo r, ca şi a fo rm u la re lo r, este o sarc ină s im p lă în Access. U tilizâ n d a p lica ţiile w izard , n u su n te ţi ob liga t să scrie ţi co d u ri de program p e n tru a produce rezu lta te valoroase ş i u tile . G ând indu-vă la acest lu c ru , n u încape îndo ia lă că dacă ş t iţ i să sc rie ţi co d u ri de program aveţi o capaci­ta te m u lt m a i m are de a crea com ponente m a i flex ib ile şi m ai sofis tica te p e n tru ap lica ţii. A cum d u p ă ce a ţi p a rcu rs această carte, u rm ă to ru l pas log ic este să exp lo ra ţi şi alte fu n c ţii d in Access ş i să în vă ţa ţi să prog ram a ţi în V is u a l Basic. In d ife re n t ce ve ţi face, n u u ita ţ i că to tu l porneşte de la o bază de date! Succes!

CAPITOLUL 12 OBŢINEREA UNOR REZULTATE UTILE 275

Page 277: Baze de date pentru incepatori (manuale facultate)

STRUCTURA BAZEI DE DATE TEB

Page 278: Baze de date pentru incepatori (manuale facultate)

278 ANEXE

Tabelul CaseNum ele câ m p u lu i T ip u l de date DescriereCaseID A utoN um ber Cheie p rim a răD ocketN um ber Text N u m ă ru l de ro lNotes Memo Câmp pentru note în fo rm at liber

S ta rtD a te D ate /T im e D ata la care începe lu c ru l la caz

T ria lD a te D ate /T im e D ata procesu lu i

S ettlem entD ate D ate /T im e D ata în ţe legerii

D epartm entID N um ber Cheie externă la ta b e lu lD epartm en t

C ourtID N um ber Cheie externă la ta b e lu l C ourt

JudgeID N um ber Cheie externă la ta b e lu l Judge

Tabelul ClientNum ele câ m p u lu i T ip u l de date DescriereC lien tID A utoN um ber Cheie p rim a ră

C lientType Text T ip u l c lie n tu lu i (B p e n trufirm e, I p e n tru persoane fizice)

F irstNam e Text Prenumele (dacă ClientType = I)

LastName Text Num ele de fam ilie(dacă ClientType = I)

M id d le ln it ia l Text In iţ ia la (dacă C lientType - I)O rganizationNam e Text Num ele f irm e i

(dacă ClientType = B)A d d re ss l Text P rim a adresăAddress2 Text A doua adresăC ity Text O raşu lState Text S ta tu lZipCode Text C odul poşta lPhone Text N u m ă ru l de te lefon

E m a il Text Adresa de e-m ail

Tabelul ClientCaseN um ele c â m p u lu i T ip u l de date DescriereClientCaseID A utoN um ber Cheie p rim a răC lien tID N um ber Cheie exte rnă la ta b e lu l C lien tCaseID N um ber Cheie externă la ta b e lu l Case

Page 279: Baze de date pentru incepatori (manuale facultate)

ANEXA k STRUCTURA BAZEI DE DATE TEB 279

Tabelul ContactNum ele c â m p u lu i T ip u l de date DescriereC ontactID A utoN um ber Cheie p rim a răF irstN am e Text Prenumele

M id d le ln it ia l Text In iţ ia la

LastName Text Num ele de fam ilieT itle Text F unc ţia

Phone Text N u m ă ru l de te lefon

E xtens ion Text In te r io ru l

E m a il Text Adresa de e-m ail

C lien tID N um ber Cheie externă la ta b e lu l C lien t

Tabelul CourtNum ele câ m p u lu i T ip u l de date Descriere

C ourtID A utoN um ber Cheie p rim a ră

D escrip tion Text Num ele in s ta n ţe i

Tabelul DepartmentNum ele c â m p u lu i T ip u l de date Descriere

D epartm entID A utoN um ber Cheie p rim a ră

D escrip tion Text Num ele d e p a rta m e n tu lu i

Tabelul EmployeeNum ele c â m p u lu i T ip u l de date Descriere

EmployeeID A utoN um ber Cheie p rim a ră

F irstN am e Text Prenum ele

M id d le ln itia l Text In iţ ia la

LastName Text Num ele de fam ilie

Socia lS ecurity Text N u m ă ru l a s ig u ră r ii sociale

Address 1 Text P rim a adresă

Address2 Text A doua adresă

C ity Text O raşu l

S tate Text S ta tu l

ZipCode Text C odu l poşta l

Page 280: Baze de date pentru incepatori (manuale facultate)

280 ANEXE

HomePhone Text N u m ă ru l de te le fon de acasă

W orkE xtens ion Text In te r io ru l de la serv ic iu

E m a il Text Adresa de em ailD epartm en tID N um ber Cheie externă la ta b e lu l

D epartm en t

Em ployeeClassID N um ber Cheie externă la ta b e lu lEmployeeClass

Tabelul EmployeeCaseNum ele câ m p u lu i T ip u l de date Descriere

EmployeeCaseID A utoN um ber Cheie p rim a ră

CaseID N um ber Cheie externă la ta b e lu l Case

EmployeeID N um ber Cheie externă la ta b e lu lEmployee

Tabelul EmployeeClassNum ele c â m p u lu i T ip u l de date Descriere

EmployeeClassID A utoN um ber Cheie p rim a ră

D escrip tion Text Num ele clasei de anga ja ţi

D e fau lt C urrency T a r ifu l im p lic it

Tabelul InvoiceNum ele câ m p u lu i T ip u l de date Descriere

InvoiceID A utoN um ber Cheie p rim a ră

InvoiceN um ber Text N u m ă ru l fa c tu r ii

InvoiceRate Date /T im e D ata fa c tu r ii

C lien tID N um ber Cheie exte rnă la ta b e lu l C lien t

Tabelul JudgeNum ele c â m p u lu i T ip u l de date DescriereJudgeID A utoN um ber Cheie p rim a ră

F irstN am e Text PrenumeleM id d le ln it ia l Text In iţ ia la

Page 281: Baze de date pentru incepatori (manuale facultate)

281AN EXA A STRUCTURA BAZEI DE DATE TEB

LastName Text Num ele de fam ilieNotes Memo Note ale u tiliz a to ru lu iC ourtID N um ber Cheie externă la ta b e lu l C ourt

Tabelul TimeEntryDetailNum ele c â m p u lu i T ip u l de date DescriereT im e E n tryD e ta il A u toN um ber Cheie p rim a răD escrip tion Text Descrierea a c tiv ită ţiiH ours N um ber N u m ă ru l de ore alocateRate C urrency T a r ifu l pe orăW orkD ate D a te /T im e D ata a c tiv ită ţiiW orkC ategory N um ber Cheie externă la ta b e lu l

W orkCategoryInvoiceID N um ber Cheie externă la ta b e lu l

InvoiceCaseID N um ber Cheie externă la ta b e lu l CaseEm ployeeID N um ber Cheie externă la ta b e lu l

EmployeeC lien tID N um ber Cheie externă la ta b e lu l C lien t

Tabelul WorkCategoryNum ele c â m p u lu i T ip u l de date DescriereW orkC ategory lD A utoN um ber Cheie p rim a răD escrip tion Text Descrierea categoriei de activ ită ţiD efaultR ate C urrency T a rifu l im p lic it pe oră

Page 282: Baze de date pentru incepatori (manuale facultate)

REGULI DE INTEGRITATE REFERENŢIALA IN BAZA □E DATE TEB

Page 283: Baze de date pentru incepatori (manuale facultate)

284 ANEXE

T oa te re la ţ i i le im p le m e n te a ză ş te rg e ri re s tr ic ţ io n a te ş i in tro d u c e re a re s tr ic ţio n a tă a da te lo r. A c tu a liză rile re s tr ic ţio n a te n u s u n t ap licab ile deoarece s u n t u tiliza te chei prim are surogat. Paragrafele urm ătoare prez in tă fiecare tabe l p ă rin te ş i tabelele cop il corespunzătoare lu i.

Tabelul Case (cheie primară: caseid)T a be lu l Employee: m u lţ i la m u lţ i (p rin ta b e lu l de legă tu ră EmployeeCase);

T abe lu l C lient: m u lţ i la m u lţ i (p rin ta b e lu l de legă tu ră ClientCase);

T abe lu l T im eE n tryD e ta il: u n u la m u lţi.

Tabelul Client (cheie primară: clientid)T abe lu l ClientCase: u n u la m u lţ i (facilitează re la ţia m u lţ i la m u lţ i a ta b e lu lu i Case);

T abe lu l C ontact: u n u la m u lţi;

T abe lu l Invoice: u n u la m u lţi;

T abe lu l T im eE n tryD e ta il: u n u la m u lţi.

Tabelul Court (cheie primară: CourtID)T abe lu l Case: u n u la m u lţi;

T abe lu l Judge: u n u la m u lţi.

Tabelul Department (cheie primară: departmentid)T abe lu l Case: u n u la m u lţi;

T abe lu l Em ployee: u n u la m u lţi.

Tabelul Employee (cheie primară: employeeid)T abe lu l EmployeeCase: u n u la m u lţ i (facilitează re la ţia m u lţ i la m u lţ i a ta b e lu lu i Case);

T abe lu l T im eE n tryD e ta il: u n u la m u lţi.

Tabelul EmployeeClassT abe lu l Employee: u n u la m u lţi.

Tabelul Invoice (cheie primară: InvoiceID)T abe lu l T im eE n tryD e ta il: u n u la m u lţi.

Page 284: Baze de date pentru incepatori (manuale facultate)

cGLOSAR

Page 285: Baze de date pentru incepatori (manuale facultate)

A doua formă normalăA doua fo rm ă no rm a lă izolează şi m u tă datele redundan te în tr -u n tabe l separat.

A treia formă normalăA tre ia fo rm ă no rm a lă face ca toate câm purile u n u i râ n d să fie dependente de che ia p rim ară .

A patra formă normalăA p a tra fo rm ă no rm a lă izolează re la ţiile m u ltip le independente. Este foarte ra r u tiliza tă .

A cincea formă normalăA cincea fo rm ă no rm a lă izolează re la ţiile m u ltip le în ru d ite sem antic. Este foarte ra r u tiliza tă .

Administrator al bazei de dateA d m in is tra to ru l bazei de date răspunde de adm in is tra rea şi organizarea u n u i sis tem de a d m in is tra re a bazelor de date.

AliasU n alias este o va ria ţie a n u m e lu i u n u i tabe l în tr-o in te rogare SQL. De exem plu, in te rogarea urm ă toa re utilizează a lia su l c în lo cu l n u m e lu i rea l al ta b e lu lu i C ustom ers:SELECT C .CompanyName, *

FROM Customers c;

Atribut■ U n câ m p /o coloană d in tr -u n tabel.■ O prop rie ta te a u n u i câmp, ca de exem plu legenda, t ip u l de date,

d im ens iunea ş.a.m .d.

286 ANEXE

Page 286: Baze de date pentru incepatori (manuale facultate)

ANEXA C GLOSAR 287

Auto-uniuneU n iune în care u n tabe l este u n it cu el însuş i. U n exem plu t ip ic este o re la ţie în tre tabelele cu date despre anga ja ţi (Employee) şi su p e rio r ii lo r ie ra rh ic i (S uperv iso r). T o ţi su p e rio r ii s u n t anga ja ţi. F ie că ru i anga ja t î i corespunde u n câm p Superv isorID , care referă a lt câm p Em ployeelD .

Bază de dateO colecţie de date ad m in is tra te şi organizate de u n sistem de adm in is tra re a bazelor de date.

Blocaj (deadlock, deadly embrace)S itua ţie în care două sau m ai m u lte procese n u po t co n tin u a deoarece au nevoie de aceeaşi resursă.

BlocareU n d ispoz itiv de con tro l u tiliz a t p e n tru a oferi acces exc lus iv la o a n u m ită resursă, de obice i o înreg istrare .

CâmpC âm purile , nu m ite şi coloane, s u n t elementele de construc ţie ale u n u i tabel. De exem plu, u n tabe l t ip ic cu date despre c lie n ţi este com pus d in câm puri p e n tru prenum e, num ele de fam ilie , oraş, s ta t şi codu l poşta l. U n câm p (n u m it ş i atribut) este o coloană a u n u i tabe l şi stochează u n elem ent atom ic descrip tiv despre o entita te .

CheieU n câm p u tiliz a t p e n tru accesul la o a n u m ită în reg istra re . P rin tre t ip u r ile de chei se n u m ă ră cheile prim are şi cheile candidat.

Cheie candidatU n câm p sau u n grup de câ m p u ri care id e n tifică u n ic o în reg is tra re .

Cheie compusăU n t ip de cheie p rim a ră a lcă tu ită d in două sau m ai m u lte câ m p u ri d in tr -u n tabel.

Page 287: Baze de date pentru incepatori (manuale facultate)

ANEXE

Cheie externă (străină)O cheie stoca tă în a lt tabe l cu scopu l de a suporta o re la ţie . De exem plu, cheia p rim a ră a ta b e lu lu i p e n tru com enzi este p re lu a tă ca ş i cheie externă în ta b e lu l cu date despre comenzi.

Cheie primarăU n câm p sau o com b ina ţie de câ m p u ri care id e n tifică în m od u n ic u n rând de date. E x is tă două t ip u r i de chei prim are : chei surogat ş i che i sim ple.

Cheie surogatO cheie su roga t este u n câm p creat p e n tru iden tifica rea u n ică a u n u i rând de date. De obicei, o cheie surogat este de t ip u l în treg cu auto increm entare . C elă la lt t ip de cheie (cheie prim ară ) rep rez in tă o cheie com pusă, a lcă tu ită d in două sau m a i m u lte câm puri. A lte rn a tiva la o cheie suroga t este o cheie n a tu ra lă (care are sens în afară de fa p tu l că este cheie prim ară). Cheile n a tu ra le n u s u n t neapăra t com puse, cum este cazul n u m ă ru lu i c lie n tu lu i, n u m ă ru l fa c tu r ii sau n u m ă ru l com enzii, toate acestea f iin d chei na tu ra le , a lcă tu ite d in tr -u n s in g u r câmp.

ConcurenţăAcces s im u lta n la aceleaşi date al m a i m u lto r u tiliza to r i.

ConflictC o n flic tu l resu rse lo r are loc dacă doi sau m ai m u lţ i u tiliz a to r i încearcă să actualizeze s im u lta n acelaşi elem ent de date.

CopilŢ in ta u n e i re la ţii. De exem plu, în tr-o re la ţie în tre com enzi şi elem entele com enzii, elementele com enzii s u n t copii, deoarece s u n t ţ in ta u n e i re la ţii cu comenzile.

Data Definition Language (DDL)S u b lim b a ju l D D L perm ite u tiliz a to r ilo r să creeze, să m odifice şi să şteargă d ife rite elemente ale un e i baze de date, ca tabele, coloane şi v izua liză ri.

Page 288: Baze de date pentru incepatori (manuale facultate)

GLOSAR 289

Data Manipulation Language (DML)S u b lim b a ju l D M L perm ite u tiliz a to r ilo r să creeze, să actualizeze, să şteargă şi să in terogheze elementele de date d in tr-o bază de date.

DateC o n ţin u tu l u n e i baze de date. Elem entele de date d in tr-o bază de date po t f i extrase, grupa te ş i sum ariza te p e n tru a produce in fo rm a ţii.

Date care se repetăValoare a u n u i câm p care apare de m ai m u lte o ri în tr -u n tabel. De exem plu, descrierea u n u i t ip de c lie n t poate apărea de m ai m u lte ori. Procesul de n o rm a lizare va m u ta o s ingu ră in s ta n ţă a fiecărei descrie ri în tr -u n tabe l separa t p e n tru a e lim ina datele care se repetă ş i redundan ţe le asociate lor.

Date redundanteDate stocate în cel p u ţin două lo cu ri în tr-o bază de date. Scopul n o rm a liză rii este e lim ina rea da te lo r redundante .

DenormalizareProcesul invers norm a liză rii.

Design conceptual al bazei de dateU n m odel concep tua l a l bazei de date, independent de im p lem entarea u n e i anum ite baze de date.

Designul (proiectarea) bazei de dateProcesul de iden tifica re a e n tită ţilo r d in rea lita te ş i a re la ţiilo r d in tre ele, u rm a t de trans fo rm area acestora în tr -u n m odel al bazei de date.

Diagrama relaţiilor între entităţi (Entity Relationship Diagram - ERD)O te h n ică specia lă de rea lizare a d iagram elor care perm ite prezentarea p ro ie c tu lu i bazei de date re la ţionale .

Page 289: Baze de date pentru incepatori (manuale facultate)

290 ANEXE

Dicţionar de dateDatele care descriu s tru c tu ra une i baze de date; denum ite şi metadate - date care descriu datele. De exem plu, t ip u l şi d im ensiunea da te lo r s u n t m etadate care descriu u n a n u m it câm p de date. Colecţia acestor date fo r­mează d ic ţio n a ru l de date al u n e i baze de date.

DomeniuSetul va lorilo r posibile pe care le poate conţine u n element de date. De exemplu, u n câm p care conţine z iua d in lu n ă poate avea va lo ri de la 1 la 31.

EntitateU n obiect a l bazei de date capabil să stocheze datele; m a i este n u m it şi tabel. U n obiect a l bazei de date care stochează date despre o persoană, u n loc, u n lu c ru sau u n concept ş i este organizat sub fo rm ă de râ n d u r i (înregis­tră ri) ş i coloane (câm puri).

Forma normală Boyce-CoddForm a norm a lă Boyce-Codd este o extensie a celei de a tre ia form e norm ale. U n tabe l se a flă în fo rm a norm a lă Boyce-Codd dacă dependenţa fie că ru i elem ent de date d in tr -u n tabe l poate f i u rm ă rită cu o cheie cand ida t. P entru exem plificare, să considerăm s tru c tu ra urm ătoare : S tuden t, Profesor şi Decan. Profesor depinde de Decan, dar Profesor n u este cheie. P entru a trece la fo rm a no rm a lă Boyce-Codd, s tru c tu ra trebu ie d iv iza tă în două: S tudent, Profesor ş i Profesor, Decan.

Funcţii de agregareF u n c ţiile de agregare d in SQL, cum s u n t Count (), Sum (), Avg (), Min () şi Max () oferă pos ib ilita te a de a sum ariza datele la efectuarea un e i in te rogări.

Independenţa datelorO separa ţie în tre m o d u l de stocare a da te lo r şi m o d u l de accesare şi m a n ip u la re a acestora.

IndexU n elem ent a l bazei de date, u tiliz a t p e n tru a op tim iza a num ite căi de acces la date. De exem plu, dacă trebu ie să accesaţi date despre c lie n ţi p o rn in d de la oraş, trebu ie să rea liza ţi u n index pe baza câ m p u lu i cu date despre oraş.

Page 290: Baze de date pentru incepatori (manuale facultate)

ANEXA C GLOSAR 291

Integritate referenţialăR e s tric ţii care su s ţin re la ţiile d in tre tabele. De exem plu, în cazul c lie n ţilo r ş i al com enzilor, u n u tiliz a to r va f i îm p ied ica t să şteargă în reg is tra rea u n u i c lie n t dacă exis tă în re g is tră r i în ru d ite cu comezi date de el. M ai m u lt, u n u tiliz a to r va f i îm p ied ica t să creeze o în reg is tra re a u n e i com enzi p e n tru u n p ă rin te (în acest caz, o în reg is tra re p e n tru u n c lie n t corespunzător) in e x is ­ten t.

InterogareProcesul de extragere a date lo r d in tr-o bază de date fo los ind comezi a căro r s in taxă poate f i în ţe leasă de s is tem u l de adm in is tra re a bazelor de date. Cea m a i o b iş n u ită cale de in terogare a da te lo r este u tiliza re a com enzii Select d in SQL.

înregistrareU n g ru p de câ m p u ri care fac parte d in acelaşi tabel. în re g is tră rile m ai s u n t n u m ite ş i rânduri sau tupluri. O în reg is tra re este u n râ n d a l u n u i tabe l şi con ţine toate câm purile p e n tru o a n u m ită in s ta n ţie re a u n e i e n tită ţi.

M etadateDate care descriu alte date. Datele con ţin u te în d ic ţio n a ru l de date (Data D ic tionary) s u n t adesea denum ite m etadate care descriu s tru c tu ra bazei de date.

Modelul ierarhic al bazei de dateU n m odel a l bazei de date în care datele s u n t stocate ie ra rh ic . P entru a accesa datele, trebu ie să începeţi d in partea superioa ră a ie ra rh ie i şi să p ă tru n d e ţi până la e lem entu l de date dorit. X M L este u n exem plu de stocare ie ra rh ică a date lor.

Modelul relaţional al bazei de dateU n m odel a l bazei de date a lc ă tu it d in tabele b id im ens iona le în ru d ite în tre ele. E. F. Codd a dezvolta t m ode lu l re la ţio n a l a l bazei de date în a n u l 1970.

NormalizareProcesul de organizare a u n e i baze de date astfe l în câ t să fie e lim ina te datele redundan te .

Page 291: Baze de date pentru incepatori (manuale facultate)

292 ANEXE

Ordinea fizică a înregistrărilorO rd inea în re g is tră rilo r, aşa cum s u n t ele stocate pe h a rd disc.

Ordonare logică a înregistrărilorO ordonare a în re g is tră r ilo r bazată pe u n a n u m it index.

PărinteS ursa u n e i re la ţii. De exem plu, în tr -o re la ţie în tre com enzi ş i elemente ale com enzilor, ta b e lu l p e n tru com enzi este părin te , deoarece este su rsa un e i re la ţii cu ta b e lu l p e n tru elemetele com enzilor.

Prima formă normalăP rim a fo rm ă n o rm a lă însem nă e lim inarea g ru p u r ilo r care se repetă.

Proiectul (designul) bazei de date fiziceR ezu la tu l im p le m e n tă rii p ro ie c tu lu i conceptua l al bazei de date în tr -u n a n u m it sis tem de a d m in is tra re a bazelor de date.

RândU n g rup de câ m p u ri care fac parte d in acelaşi tabel. M ai s u n t denum ite înregistrări sau tuplurt

Relaţie mulţi la mulţiO re la ţie în tre două tabele, în care m a i m u lte în re g is tră ri d in tr -u n tabe l po t f i în ru d ite cu m a i m u lte în re g is tră r i d in ce lă la lt tabel. P entru a fa c ilita o re la ţie m u lţ i la m u lţ i, trebu ie u tiliz a t u n tabe l in te rm e d ia r de legătură.

Relaţie unu la mulţiO re la ţie în tre două tabele în care o în reg is tra re d in ta b e lu l p ă rin te este în ru d ită cu m a i m u lte în re g is tră ri d in ta b e lu l copil. De exem plu, o în reg is ­tra re a u n u i c lie n t (d in tabe lu l părinte) poate f i în ru d ită cu m ai m u lte în reg is­t ră r i ale com enzilo r (în ta b e lu l copil).

Page 292: Baze de date pentru incepatori (manuale facultate)

ANEXĂ C GLOSAR 293

Restricţii de domeniuR e stric ţii a sup ra u n u i elem ent de date, im puse p e n tru ca n u m a i anum ite v a lo ri d in dom en iu să poată f i stocate. M ai s u n t n u m ite şi reguli de validare la nivel de coloană/cămp.

Sistem de administrare a bazelor de date (Database Management System - DBMS)Software cu capacitatea de defin ire ş i adm in is tra re a bazelor de date. P rin tre sistem ele popu la re de adm in is tra re a bazelor de date sun t: SQL Server, Oracle ş i DB2.

Structured Query Language (SQL)SQL este u n lim b a j independent p e n tru baze de date, u tiliz a t p e n tru a in teorga, actua liza , şterge ş i m od ifica datele.

TabelU n tabe l este o reprezentare a u n e i e n tită ţi ş i este a lc ă tu it d in râ n d u r i şi coloane de date.

Tabel de legăturăU n tabe l in te rm e d ia r u tiliz a t p e n tru a supo rta o re la ţie m u lţ i la m u lţi.

TranzacţieU n set de o pera ţii care trebu ie fie să reuşească in teg ra l fie să eşueze. De exem plu, o operaţie care adaugă u n nou c lie n t ş i o nouă com andă trebu ie să reuşească in te g ra l sau să eşueze. Dacă a r f i pos ib ilă adăugarea u n u i c lie n t ia ră in troduce rea une i com enzi ş i/s a u adăugarea u n e i com enzi fă ră adăugarea u n u i c lien t, a r f i apărea o v io lare a in te g r ită ţii bazei de date.

TiipluU n g rup de câ m p u ri care fac parte d in acelaşi tabel. T u p lu r ile m a i s u n t n u m ite şi rânduri sau înregistrări.

Page 293: Baze de date pentru incepatori (manuale facultate)

294 ANEXE

UniuneO operaţie în SQL care com bină datele d in două tabele în tr -u n s in g u r set de rezultate. O u n iu n e com bină num a i două tabele; o interogare care necesită com binarea m a i m u lto r tabele utilizează u n iu n i m u ltip le (fiecare d in tre ele com b inând două tabele).

UniuneO opera ţiune în SQL care uneşte două dec la ra ţii Select p e n tru a ob ţine u n s in g u r set de rezu lta te .

Valoare nulă (nuli value)Ind ică s itu a ţia în care u n u tiliz a to r n u a a tr ib u it o valoare u n u i elem ent de date. Valoarea n u lă este d ife rită de 0 sau de u n ş ir vid . De exem plu, dacă în reg is tra rea despre u n c lie n t conţine o valoare n u lă în câm pu l pen ti u stat, aceasta înseam nă că s ta tu l n u este cunscu t. G ând iţi-vă la va loarea n u lă ca la o com pletare a câ m p u lu i cu te x tu l „N u ş t iu ” .

VizualizareU n obiect a l bazei de date care rep rez in tă o colecţie de date d in u n u l sau m a i m u lte tabele. M ai este n u m ită şi interogare.

WildcardU n opera to r w ild ca rd perm ite u tiliz a to ru lu i să găsească date pe baza u n u i m odel. De exem plu, num ele c lie n ţilo r po t f i com parate cu A* p e n tru a găsi toate în re g is tră rile cu c lie n ţii al căro r num e începe cu lite ra A.

Page 294: Baze de date pentru incepatori (manuale facultate)

PERIODICE DE SPECIALITATE

Page 295: Baze de date pentru incepatori (manuale facultate)

296 ANEXE

Ia tă câteva reviste in fo rm a tive populare , care au ca sub iec t dezvoltarea bazelor de date:

K؛ SQL Server Magazine (www. s q lm a g . corn);

1، O racle Magazine (www. oram ag. corn);

I I D B 2 Magazine (www. db2 .mag);

■ Sybase Magazine (www. s y b a s e . com /inc /sybm ag );

El A cce ss /V B /S Q L A dvisor (www. a d v is o r . com /AccessVBSQ LAdvisor);

Hi V isu a l S tud io Magazine (www. d e v x . com);

H In te llig e n t E nte rp rise (w w w . in t e l l ig e n t e n t e r p r is e . com);

D ؛1 M Re vie w (www. d m re v ie w . com);

H Ins ide M icroso ft Access (www. e le m e n tk j o u rn a ls . com);

■ S m a rt Access (w w w .p in p u b .co m /a cce ss );

Bl Database A d m in is tra to r Newsletter (www. t d a n . com);

■ Database Trends (www. d a ta b a s e tre n d s . com).

Page 296: Baze de date pentru incepatori (manuale facultate)

ERESURSE PE WEB

Page 297: Baze de date pentru incepatori (manuale facultate)

Ia tă câteva s ite -u r i web populare , a căror tem ă este dezvoltarea bazelor de date:

■ www. s q ls e r v e r c e n t r a l . com - O com unita te de dezvoltatori SQL Server ş i a d m in is tra to r i de baze de date.

H www. devx .com - Devx este u n site web in fo rm a tiv p e n tru dezvoltarea a p lica ţiilo r, care este proprie ta te a Fawcette P ublica tions.

I I w w w .m s d n .m ic ro s o ft.c o m /n e w s g ro u p s - Oferă acces la g ru p u rile de d is c u ţii on line p e n tru su p o rt peer-to-peer.

3 www. s q lm a g . com - V a ria n ta on line a SQL Server Magazine.

■ w w w .m ic ro s o ft . co m /o f f i c e /a c c e s s / - S ite -u l web M icrosoft Access.

www. databaseansw ers .com - U n site in fo rm a tiv general, drăguţ, despre analiza şi pro iectarea bazelor de date, precum şi despre cele m ai bune metode.

298 ANEXE