+ All Categories
Home > Documents > MDC Curs DB - itee.elth.pub.roitee.elth.pub.ro/~mm/ibd/lab05/MDC_Curs_DB.pdf · 5) Ionescu Ion,...

MDC Curs DB - itee.elth.pub.roitee.elth.pub.ro/~mm/ibd/lab05/MDC_Curs_DB.pdf · 5) Ionescu Ion,...

Date post: 20-Oct-2019
Category:
Upload: others
View: 8 times
Download: 0 times
Share this document with a friend
50
UNIVERSITATEA POLITEHNICA DIN BUCUREŞTI FACULTATEA DE ELECTROTEHNICĂ CEZAR FLUERAŞU M MA A N N A A G G E E M M E E N N T T U U L L D D A A T T E E L L O O R R Ş Ş I I A A L L C C U U N N O O Ş Ş T T I I N N Ţ Ţ E E L L O O R R Note de curs Bucureşti - 2003
Transcript
Page 1: MDC Curs DB - itee.elth.pub.roitee.elth.pub.ro/~mm/ibd/lab05/MDC_Curs_DB.pdf · 5) Ionescu Ion, Sisteme cu microprocesoare, Politehnica Press, 2003 6) Georgescu P, Sisteme multiprocesor,

UNIVERSITATEA POLITEHNICA DIN BUCUREŞTI FACULTATEA DE ELECTROTEHNICĂ

CEZAR FLUERAŞU

MMAANNAAGGEEMMEENNTTUULL DDAATTEELLOORR ŞŞII AALL CCUUNNOOŞŞTTIINNŢŢEELLOORR

Note de curs

Bucureşti - 2003

Page 2: MDC Curs DB - itee.elth.pub.roitee.elth.pub.ro/~mm/ibd/lab05/MDC_Curs_DB.pdf · 5) Ionescu Ion, Sisteme cu microprocesoare, Politehnica Press, 2003 6) Georgescu P, Sisteme multiprocesor,

PLANUL CURSULUI

1. Managementul datelor. Sisteme de gestiune a bazelor de date.

2. Managementul documentelor. Limbajul XML şi aplicaţii ale sale.

Page 3: MDC Curs DB - itee.elth.pub.roitee.elth.pub.ro/~mm/ibd/lab05/MDC_Curs_DB.pdf · 5) Ionescu Ion, Sisteme cu microprocesoare, Politehnica Press, 2003 6) Georgescu P, Sisteme multiprocesor,

Managementul datelor şi al cunoştinţelor

CF 1 16/02/03

PARTEA I-A. 1 MANAGEMENTUL DATELOR.

SISTEME DE GESTIUNE A BAZELOR DE DATE.

1.1 CE ESTE O BAZĂ DE DATE.

Colecţie structurată de date.

EXEMPLU: Agendă telefonică (în EXCEL sau programe similare) Numele şi prenumele Telefon Adresa TABELĂ Ionescu Ion 123 45 67 Polizu 12

Ionescu Vasile 456 12 32 Spl. Independenţei 313 Înregistrări

Georgescu Petre 214 56 12 Bd. Muncii 142 (records)

.......

Câmpuri (fields)

Bază de date elementară (“flat file database”):

- Compusă dintr-o singură tabelă (tablă)

Page 4: MDC Curs DB - itee.elth.pub.roitee.elth.pub.ro/~mm/ibd/lab05/MDC_Curs_DB.pdf · 5) Ionescu Ion, Sisteme cu microprocesoare, Politehnica Press, 2003 6) Georgescu P, Sisteme multiprocesor,

Managementul datelor şi al cunoştinţelor

CF 2 16/02/03

1.2 BAZE DE DATE RELAŢIONALE..

Compuse din mai multe tabele (table), legate între ele prin relaţii.

CONTRA-EXEMPLU: Bibliografie (mai mult sau mai putin ipotetică):

1) Ionescu I, Operating Systems, IEEE Transactions on Computers, 4, 2000 2) Ionescu I, Sisteme de operare avansate, NET Report, 5, 2002 3) Popescu V, Real Time operating Systems, IEEE Trans. On Computers, 5, 2002 4) Vasilescu V, Arhitectura sistemelor de calcul, TEORA, 2003 5) Ionescu Ion, Sisteme cu microprocesoare, Politehnica Press, 2003 6) Georgescu P, Sisteme multiprocesor, NET Report, 7, 2002

Prezentarea sub forma de tabelă unică: (s-a adăugat şi adresa de email a autorilor)

No Numele email Titlul Unde Anul Nr1 Ionescu I [email protected] Operating

Systems IEEE Transactions on Computers

2000 4

2 Ionescu I [email protected] Sisteme de operare avansate

NET Report 2002 5

3 Popescu V [email protected] Real Time operating Systems

IEEE Trans. On Computers

2002 5

4 Vasilescu V [email protected] Arhitectura sistemelor de calcul

TEORA 2003

5 Ionescu Ion [email protected] Sisteme cu microprocesoare

Politehnica Press

2003

6 Georgescu P [email protected] Sisteme multiprocesor

NET Report 2002 7

Probleme:

Repetarea unor informaţii în mai multe înregistrări Risipă de spaţiu, Risc de inconsistenţă a datelor (aceeaşi informaţie prezentată în moduri diferite)

Gestiune dificilă (unele modificări trebuie efectuate în toate înregistrările) Structură rigidă, dificil de adaptat unor situaţii noi

Page 5: MDC Curs DB - itee.elth.pub.roitee.elth.pub.ro/~mm/ibd/lab05/MDC_Curs_DB.pdf · 5) Ionescu Ion, Sisteme cu microprocesoare, Politehnica Press, 2003 6) Georgescu P, Sisteme multiprocesor,

Managementul datelor şi al cunoştinţelor

CF 3 16/02/03

Exemplu: 1) Ionescu I, Operating Systems, IEEE Transactions on Computers, 4, 2000 2) Ionescu I, Sisteme de operare avansate, NET Report, 5, 2002 3) Popescu V, Real Time operating Systems, IEEE Trans. On Computers, 5, 2002 4) Vasilescu V, Arhitectura sistemelor de calcul, TEORA, 2003 5) Ionescu Ion, Sisteme cu microprocesoare, Politehnica Press, 2003 6) Georgescu P, Sisteme multiprocesor, NET Report, 7, 2002 7) Ionescu I, Popescu P, Arhitecturi Paralele, Politehnica Press, 2003

Riscul de alterare a informaţiilor la operaţii de:

Înserarea unei noi înregistrări, Modificare, Ştergere (ex: daca se şterge înregistrarea 6, se pierde adresa de email a autorului, care era prezent o singură dată în tabelă).

SOLUŢIE: Împărţirea informaţiilor în mai multe tabele, legate între ele prin relaţii: No Numele email Titlul Anul Nr Unde 1 Ionescu I [email protected] Operating Systems 2000 4 IEEE

Transactions on Computers

2 Ionescu I [email protected] Sisteme de operare avansate

2002 5 NET Report

3 Popescu V [email protected] Real Time operating Systems

2002 5 IEEE Trans. On Computers

4 Vasilescu V [email protected] Arhitectura sistemelor de calcul

2003 TEORA

5 Ionescu Ion [email protected] Sisteme cu microprocesoare

2003 Politehnica Press

6 Georgescu P [email protected] Sisteme multiprocesor

2002 7 NET Report

7 Ionescu I, Popescu P

Arhitecturi paralele 2003 Politehnica Press

Informaţii referitoare la: Autori Lucrare Publicaţie Se vor împărţi în mai multe tabele (table): PERSOANE LUCRARI PUBLICATIA

Page 6: MDC Curs DB - itee.elth.pub.roitee.elth.pub.ro/~mm/ibd/lab05/MDC_Curs_DB.pdf · 5) Ionescu Ion, Sisteme cu microprocesoare, Politehnica Press, 2003 6) Georgescu P, Sisteme multiprocesor,

Managementul datelor şi al cunoştinţelor

CF 4 16/02/03

STRUCTURA BAZEI DE DATE: TABELA PUBLICATII: PubNo PubNume PubOras Carte ...etc.....

1 IEEE Transactions on Computers NY 2 NET Report Bucuresti 3 TEORA Bucuresti 4 POLITEHNICA Press Bucurest 5 Microsoft Press Redmond 6 The Linux Journal Helsinki

TABELA LUCRARI: LucrNo LucrTitlu Anul No LucrRezum LucrKwd PubNo

1 Operating Systems 2000 4 nncyn, lm Unix, DOS 1

2 Sisteme de operare avansate 2002 5 cn cyc Unix 2

3 Real Time operating Systems 2002 5 ........... QMS, Lin 1

4 Arhitectura sistemelor de calcul 2003 3

5 Sisteme cu microprocesoare 2003 Intel, 4

6 Sisteme multiprocesor 2002 7 2

7 Arhitecturi paralele 2003 4

8 Windows in the best 2002 8 Win bla bla money, ... 5

9 LINUX is better 2002 9 Tux Tux, ... 6

TABELA AUTORI LucrNo PersNo AutorNo

1 1 1 2 1 2 3 3 3 4 6 4 5 1 5 6 4 6 7 1 7 7 3 8 8 2 9 9 5 10

TABELA PERSOANE: PersNo PersNume PersPrenume PersMail ....alte câmpuri...

1 IONESCU Ion [email protected]

2 GATES Bill

3 POPESCU Vasile [email protected]

4 GEORGESCU Petre [email protected]

5 TORVALDS Linus 6 VASILESCU Victor [email protected]

Page 7: MDC Curs DB - itee.elth.pub.roitee.elth.pub.ro/~mm/ibd/lab05/MDC_Curs_DB.pdf · 5) Ionescu Ion, Sisteme cu microprocesoare, Politehnica Press, 2003 6) Georgescu P, Sisteme multiprocesor,

Managementul datelor şi al cunoştinţelor

CF 5 16/02/03

MODELUL DATELOR:

RELATII INTRE TABELE:

Cardinalitate: PUBLICATII (1) LUCRARI (n)

O lucrare apare într-o singură publicaţie O publicaţie poate conţine oricâte lucrări

LUCRARI (1) AUTORI (n) Fiecare înregistrare din tabela AUTORI se referă la o singură

lucrare (dacă aceeaşi persoană are mai multe lucrări, acestea apar în înregistrări distincte)

O lucrare poate avea mai mulţi autori. AUTORI (n) PERSOANE (1)

O pesoană poate fi autorul mai multor lucrări Fiecare înregistrare din tabela AUTORI se referă la o anumită

persoană.

Integritate referenţială: Fiecare referinţă dintr-o tabelă către alta să corespundă unei

întegistrări existente . Exemplu: LUCRARI.PubNo PUBLICATII.PubNo Integritatea referenţială poate fi distrusă în urma unor operaţii de ştergere / modificare.

Page 8: MDC Curs DB - itee.elth.pub.roitee.elth.pub.ro/~mm/ibd/lab05/MDC_Curs_DB.pdf · 5) Ionescu Ion, Sisteme cu microprocesoare, Politehnica Press, 2003 6) Georgescu P, Sisteme multiprocesor,

Managementul datelor şi al cunoştinţelor

CF 6 16/02/03

1.3 SISTEME DE GESTIUNE A BAZELOR DE DATE (SGBD).

STRUCTURA UNUI SGBD:

• „MOTORUL” bazei de date („Database Engine”).

Realizează operaţiile de gestionare a informaţiilor stocate în baza de date:

• Structura bazei de date: Crearea / modificarea / ştergerea tablelor Crearea / modificarea / ştergerea indecşilor

• Operaţii asupra datelor: Înserarea datelor Modificarea datelor Ştergerea datelor Controlul integrităţii referenţiale Căutări, interogări

• DATELE („Data Store”) Aici sunt stocate datele din BD. Modelul datelor este stocat împreună cu datele !!!

• INTERFAŢA („User Interface”)

Asigură interfaţa între utilizator şi motorul bazei de date.

Interfeţe tip „linie de comandă” Interfeţe grafice.

Page 9: MDC Curs DB - itee.elth.pub.roitee.elth.pub.ro/~mm/ibd/lab05/MDC_Curs_DB.pdf · 5) Ionescu Ion, Sisteme cu microprocesoare, Politehnica Press, 2003 6) Georgescu P, Sisteme multiprocesor,

Managementul datelor şi al cunoştinţelor

CF 7 16/02/03

TIPURI DE SGBD:

• BAZE DE DATE „MONOLITICE”:

Motorul bazei de date şi interfaţa se află pe acelaşi sistem de calcul. În principal, baze de date de talie şi performanţe reduse.

• BAZE DE DATE „CLIENT – SERVER”:

CLIENT

Cereri

Rezultate SERVER

Clientul poate fi :

Clent „greu un program „dedicat” (specific bazei de date)” Client „uşor” un browser (Internet Explorer, Netscape), care

interacţionează cu baza de date prin intermediul unei interfeţe software (ASP, Java, JavaScript, VBScript, PHP, etc...)

Trebuie făcută distincţia între:

Modelul Client-Server Modelul cu acces la distanţă

Page 10: MDC Curs DB - itee.elth.pub.roitee.elth.pub.ro/~mm/ibd/lab05/MDC_Curs_DB.pdf · 5) Ionescu Ion, Sisteme cu microprocesoare, Politehnica Press, 2003 6) Georgescu P, Sisteme multiprocesor,

Managementul datelor şi al cunoştinţelor

CF 8 16/02/03

EXEMPLE DE SGBD:

• BAZE DE DATE „CLIENT – SERVER”: ORACLE IBM – DB2 INFORMIX MS SQL - SERVER ... şi altele ...

• BAZE DE DATE „MONOLITICE”: Windows:

MS Access Fox Pro MySQL ... şi altele ...

Linux: (în general, Open Source) MySQL PostgreSQL ... şi altele ...

Notă: toate aceste baze de date pot fi accesate prin intermediul unor clienţi uşori, comportându-se în unele situaţii ca baze de date „client-server”.

Page 11: MDC Curs DB - itee.elth.pub.roitee.elth.pub.ro/~mm/ibd/lab05/MDC_Curs_DB.pdf · 5) Ionescu Ion, Sisteme cu microprocesoare, Politehnica Press, 2003 6) Georgescu P, Sisteme multiprocesor,

Managementul datelor şi al cunoştinţelor

CF 9 16/02/03

1.3.1 Conţinutul unui SGBD.

1.3.1.1 „Motorul” SGBD (Database Engine).

Realizează operaţiunile asupra datelor din BD: Crearea structurilor de date (table, indecşi, etc) Definirea unor reguli de integritate a datelor. Gestiunea „procedurilor stocate” (dacă baza de date o permite). Operaţiuni asupra datelor:

Interogare (Selecţie). Adăugare. Modificare. Ştergere.

Interpretarea comenzilor primite.

Gestiunea şi execuţia codului scris într-un limbaj de programare (universal sau specific).

1.3.1.2 Datele stocate (Data Store).

Structuri de date: Tabele („Table”)

Sunt structurile fundamentale de stocare a datelor. Conţin efectiv datele, în una sau mai multe table.

Indecşi. Structuri ajutătoare, care sporesc performanţele în operaţiile de

căutare / sortare. „Vederi” („View”) Proceduri stocate („stored procedures”). Operaţiuni („Query”) Etc...

1.3.1.3 Interfaţa cu utilizatorii (User Interface).

Ecrane. Asigură un cadru comod pentru operaţiile asupra datelor din BD.

Ecrane in mod „text” Ecrane grafice (gen Windows).

Repoarte. Situaţii tipărite, pentru prezentarea datelor după diverse puncte de

vedere. Module de cod.

Proceduri auxiliare, scrise într-un limbaj de programare proprietar sau standardizat (ex: SQL, limbaje de „generaţia a patra”, etc...)

Etc...

Page 12: MDC Curs DB - itee.elth.pub.roitee.elth.pub.ro/~mm/ibd/lab05/MDC_Curs_DB.pdf · 5) Ionescu Ion, Sisteme cu microprocesoare, Politehnica Press, 2003 6) Georgescu P, Sisteme multiprocesor,

Managementul datelor şi al cunoştinţelor

CF 10 16/02/03

1.3.2 Table.

Componenta fundamentală a unui SGBD.

1.3.2.1 Structura unei table.

Exemplu: PersNo PersNume PersPrenume PersMail etc

1 IONESCU Ion [email protected]

2 GATES Bill

3 POPESCU Vasile [email protected] Înregistrări 4 GEORGESCU Petre [email protected]

5 TORVALDS Linus 6 VASILESCU Victor [email protected]

Câmpuri

Tipuri de câmpuri (dependent de tipul BD): Numerice:

• Seriale (autoNumber) • Intregi (Integer) • Întregi lungi (Long Integer) • Reale (Real, Float, Single, ...) • Zecimale (Decimal) • Monetare (Currency)

Text: (Text, Char(n), ...) Obiecte Diverse alte tipuri, în funcţiune de implementare...

Observaţii:

Nu pot exista două înregistrări identice – fiecare înregistrare este unică !!! (se poate evita, incluzând un câmp SERIAL / AutoNumber, care identifică în mod unic o înregistrare)

Valorile din coloane sunt de acelaşi tip. Ordinea coloanelor nu este semnificativă. Ordinea liniilor nu este semnificativă.

1.3.3 Indecşi.

Structuri auxiliare ataşate unor câmpuri sau grupuri de câmpuri, cu scopul de a:

Accelera operaţiile de căutare Accelera operaţiile de sortare.

Cheie primară:

Index principal, care asigură unicitatea unei înregistrări.

Page 13: MDC Curs DB - itee.elth.pub.roitee.elth.pub.ro/~mm/ibd/lab05/MDC_Curs_DB.pdf · 5) Ionescu Ion, Sisteme cu microprocesoare, Politehnica Press, 2003 6) Georgescu P, Sisteme multiprocesor,

Managementul datelor şi al cunoştinţelor

CF 11 16/02/03

Inconveniente: Operaţiile de adăugare / modificare pot fi încetinite. Creşte volumul bazei de date. Pot perturba accesul concurent la o tablă, în sisteme cu mai mulţi

utilizatori („Multi User”)

Tipuri de indecşi: Indecşi pe un singur câmp Indecşi pe mai multe câmpuri.

Indecşi unici:

Nu este permis ca două înregistrări să conţină acceaşi valoare a indexului (indiferent de numărul de câmpuri al indexului)

Ce câmpuri trebuie indexate:

În general, câmpurile de legatură cu alte table. Cheia primară a unei table.

Exemplu: tabla AUTORI (v. mai jos):

Tabela Campul Tip Descriere AUTORI Autorii lucrarilor (legatura intre LUCRARI si PERSOANE) AutorNo Counter Contor intern LucrNo Long Publicatia: Legatura la PUBLICATII->PubNo PersNo Long Autorul: Legatura la PERSOANE->PersNo Index PrKey Unique Fields LUCRARIAUTORI No LucrNo PERSOANEAUTORI No PersNo PrimaryKey Yes Yes AutorNo

PrimaryKey: Cheia primară (un contor, care asigură unicitatea valorii ->

index unic) LUCRARIAUTORI: legătura cu înregistrarea corespunzătoare din tabla

LUCRARI (nu este index unic, pot exista mai multe înregistrări din tabla LUCRARI care se referă la o aceeaşi publicaţie)

PERSOANEAUTORI: legătura cu înregistrarea corespunzătoare din tabla PERSOANE (nu este index unic, pot exista mai multe înregistrări din tabla PERSOANE care se referă la o aceeaşi publicaţie)

Page 14: MDC Curs DB - itee.elth.pub.roitee.elth.pub.ro/~mm/ibd/lab05/MDC_Curs_DB.pdf · 5) Ionescu Ion, Sisteme cu microprocesoare, Politehnica Press, 2003 6) Georgescu P, Sisteme multiprocesor,

Managementul datelor şi al cunoştinţelor

CF 12 16/02/03

1.3.4 Exemplu de bază de date.

Structura bazei de date: MDC_ExBiblio.mdb Tabela Campul Tip Descriere AUTORI Autorii lucrarilor (legatura intre LUCRARI si PERSOANE) AutorNo Counter Contor intern LucrNo Long Publicatia: Legatura la PUBLICATII->PubNo PersNo Long Autorul: Legatura la PERSOANE->PersNo

Index PrKey Unique Fields

LUCRARIAUTORI No LucrNo PERSOANEAUTORI No PersNo PrimaryKey Yes Yes AutorNo

LUCRARI Lucrarile din bibliografie LucrNo Counter Nr. serial al lucrarii (contor intern) LucrTitlu Text(50) Titlul lucrarii Anul Integer Anul aparitiei Nr Integer pt. reviste: numarul din an; pt. carti: ramane blanc LucrRezumat Memo Rezumatul lucrarii LucrKwd Text(50) Cuvinte - cheie PubNo Long Legatura la tabla PUBLICATII->PubNo PubEtc Text(5) ... alte informatii .....

Index PrKey Unique Fields

PrimaryKey Yes Yes LucrNo PUBLICATIILUCRARI No PubNo

PERSOANE Tabela de persoane (autori) PersNo Counter Nr. serial al persoanei (contor intern) PersNume Text(20) Numele persoanei PersPrenume Text(20) Prenumele persoanei PersMail Text(20) Adresa de e_mail PersEtc Text(5) .... alte eventuale informatii ...

Index PrKey Unique Fields

PrimaryKey Yes Yes PersNo

PUBLICATII Tabela de publicatii PubNo Counter Nr. publicatiei (contor intern) PubNume Text(50) Denumirea publicatiei / editurii PubOras Text(20) Orasul unde apare PubCarte Yes/No Yes=carte, No=revista PubEtc Text(5) ... alte campuri ....;

Index PrKey Unique Fields

PrimaryKey Yes Yes PubNo

Page 15: MDC Curs DB - itee.elth.pub.roitee.elth.pub.ro/~mm/ibd/lab05/MDC_Curs_DB.pdf · 5) Ionescu Ion, Sisteme cu microprocesoare, Politehnica Press, 2003 6) Georgescu P, Sisteme multiprocesor,

Managementul datelor şi al cunoştinţelor

CF 13 16/02/03

1.4 O ABORDARE FORMALĂ. Entităţi:

Reprezentarea simplificată a unui obiect sau a unui concept. Se face abstracţie de elementele care nu sunt relevante în cadrul

reprezentării.

Instanţă: Un reprezentant particular al unei entităţi.

Domeniu:

Descrierea unei mulţimi de valori autorizate. Relaţii:

Produsul cartezian al n domenii D = D1 x D2 x ................ x Dn e constituit de „tuple” < a1, a2, ...................., an> astfel încât: ai ∈ Di , i=1, n

Tablă (tabelă):

Reprezentarea „bidimensională” a unei relaţii:

PersNo PersNume PersPrenume PersMail etc 1 IONESCU Ion [email protected]

2 GATES Bill

3 POPESCU Vasile [email protected] Instanţă 4 GEORGESCU Petre [email protected]

5 TORVALDS Linus 6 VASILESCU Victor [email protected]

a1 a2 an

Atribute Schema unei relaţii:

R (A1, A2 , . . . . , An) Relaţie compusă din atributele Ai Exemple: PUBLICAŢII (PubNo, PubNume, PubOras, ...) PERSOANE (PersNo, PersNume, PersPrenume, PersMail, PersEtc)

Page 16: MDC Curs DB - itee.elth.pub.roitee.elth.pub.ro/~mm/ibd/lab05/MDC_Curs_DB.pdf · 5) Ionescu Ion, Sisteme cu microprocesoare, Politehnica Press, 2003 6) Georgescu P, Sisteme multiprocesor,

Managementul datelor şi al cunoştinţelor

CF 14 16/02/03

Convenţie: Cheia primară a fost reprezentată cu caractere subliniate:

Baze de date relaţionale:

Reuniunea unui număr finit de relaţii Observaţii relative la terminologie:

Termen formal Termen uzual (engleză) Termen uzual (română) relaţie table tablă (tabelă) atribut field câmp tuplu record înregistrare

Modelul Entităţi – Asociaţii (relaţii) (v. baza de date MDC_ExBiblio.mdb):

PersNoPersNumePersPrenume....LucrNo

PERSOANE ScriuLucrNuLucrTitlu....PersId

LUCRARIApar In

PubNuPubNume...LucrNo

PUBLICATII

0,n 1,n 0,1 1,n

Persoanele SCRIU Lucrari Lucrarile APAR IN Publicatii

Entităţi:

PERSOANE (PersNo, PersNume, PersPrenume) LUCRARI (LucrNo, LucrTitlu) PUBLICATII (PubNo, PubNuşe)

Cardinalităţi minime şi maxime :

Numărul minim (maxim ) de instanţe ale entităţii de sosire asociate cu entitatea de plecare ( se scriu de partea entităţii de plecare )

PersNoPersNumePersPrenume....

PERSOANE Scriu

LucrNuLucrTitlu....

LUCRARI0,n 1,n

Persoanele SCRIU Lucrari

O persoană poate scrie între 0 şi un număr oarecare (n) de lucrări.(dacă se includ printre persoane şi cele care nu scriu nimic; dacă nu, cardinalităţile se schimbă în (1,n) ).

O lucrare poate fi scrisă de o singură persoană (1) sau de mai multe (n)

Page 17: MDC Curs DB - itee.elth.pub.roitee.elth.pub.ro/~mm/ibd/lab05/MDC_Curs_DB.pdf · 5) Ionescu Ion, Sisteme cu microprocesoare, Politehnica Press, 2003 6) Georgescu P, Sisteme multiprocesor,

Managementul datelor şi al cunoştinţelor

CF 15 16/02/03

LucrNuLucrTitlu....

LUCRARI Apar In

PubNuPubNume...

PUBLICATII0,1 1,n

Lucrarile APAR IN Publicatii

O lucrare poate să nu apară deloc (0) sau să apară într-o singură publicaţie.

Se poate modifica în (1,1) dacă se consideră lucrări numai cele publicate;

Excepţia, în general de neacceptat, a unei lucrări publicate în mai multe publicaţii, nu este luată în considerare în modelul de mai sus.

O publicaţie conţine cel puţin o lucrare (1), dar poate conţine mai multe (n).

Dependenţă funcţională

Două mulţimi X şi Z sunt în dependentă funcţională dacă o valoare x∈X

determină una şi numai una din valorile y∈Y, pentru orice x∈X. | ,X Y x X y Y x X⇒ ∈ ⇒ ∈ ∀ ∈

O dependenţă funcţională elementară cuprinde un minim de atribute în

partea stângă. Chei (Keys):

Ansamblu de atribute care determină în mod unic o relaţie ( permit identificarea univocă a unei instanţe )

R ( A1 , A2, ..., Ak , ........, An)

Exemplu: PERSOANE (PersNo, PersNume, ....)

Orice relaţie trebuie să posede o cheie.

Alt exemplu: codul numeric personal (CNP): CNP = S AA LL ZZ NNNNNN

S = sexul (1/2) AA = anul naşterii (00-99, secolul ??? ) LL = luna ZZ = ziua NNNNNN=număr (există, teoretic, riscul unor valori dedublate)

Page 18: MDC Curs DB - itee.elth.pub.roitee.elth.pub.ro/~mm/ibd/lab05/MDC_Curs_DB.pdf · 5) Ionescu Ion, Sisteme cu microprocesoare, Politehnica Press, 2003 6) Georgescu P, Sisteme multiprocesor,

Managementul datelor şi al cunoştinţelor

CF 16 16/02/03

Normalizare: Descompunerea ansamblului de atribute ale sistemului modelat, astfel încât:

Să nu existe pierderi de informaţie Relaţiile semantice care sunt construite să rămână coerente.

Date pentru exemplificare (v. baza de date MDC_ExComenzi.mdb): Comenzi-V0:

ComNo ComData ComFurn FurnAdr ComArt 1 1/12/2002 HP Stirbei Vodă 95, Buc, Ro DJ3325, DJ5550 2 2/12/2002 FLAM G. Enescu 36, Buc, Ro 2*DJ5550, D145 3 1/02/2003 DC Stirbei Voda 60, Buc, Ro 2*D145, PSC2100 4 1/03/2003 HP Stirbei Vodă 95, Buc, Ro 2*DJ3325, DJ3420, PSC2210 5 2/03/2003 HPUS 10 Main Str, LA, USA PSC2100, D145

Forme normale - CODD – 1970 1) Prima formă normală (FN1)

O relaţie este în FN1 dacă toate atributele care o compun sunt de tip atomic. (toate tablele sunt compuse din câmpuri elementare) Exemplu: Tabla Comenzi-V0 nu este în FN1: ComNo ComData ComFurn FurnAdr ComArt

1 1/12/2002 HP Stirbei Vodă 95, Buc, Ro DJ3325, DJ5550 2 2/12/2002 FLAM G. Enescu 36, Buc, Ro 2*DJ5550, D145 3 1/02/2003 DC Stirbei Voda 60, Buc, Ro 2*D145, PSC2100 4 1/03/2003 HP Stirbei Vodă 95, Buc, Ro 2*DJ3325, DJ3420, PSC2210 5 2/03/2003 HPUS 10 Main Str, LA, USA PSC2100, D145 Este un agregat Este o listă va fi descompus în

câmpuri elementare: va fi transferată în înregistrări separate:

Rezultă : Comenzi-FN1 ComNo ComData ComFurn FurnStr FornLoc FurnTara ComArt ComCant

1 1/12/2002 HP St.Voda 95 Buc Ro DJ3325 1 1 1/12/2002 HP St.Voda 95 Buc Ro DJ5550 1 2 2/12/2002 FLAM G.Enescu36 Buc Ro DJ5550 2 2 2/12/2002 FLAM G.Enescu36 Buc Ro D145 1 3 1/02/2003 DC St.Voda 60 Buc Ro D145 2 3 1/02/2003 DC St.Voda 60 Buc Ro PSC2100 1 4 1/03/2003 HP St.Voda 95 Buc Ro DJ3325 2 4 1/03/2003 HP St.Voda 95 Buc Ro DJ3420 1 4 1/03/2003 HP St.Voda 95 Buc Ro PSC2210 1 5 2/03/2003 HPUS 10 Main St. LA USA PSC2100 1 5 2/03/2003 HPUS 10 Main St. LA USQ D145 1

Comenzi-FN1(ComNo, ComArt, ComData, ComFurn, FurnStr, FurnLoc, FurnTara, ComCant)

Page 19: MDC Curs DB - itee.elth.pub.roitee.elth.pub.ro/~mm/ibd/lab05/MDC_Curs_DB.pdf · 5) Ionescu Ion, Sisteme cu microprocesoare, Politehnica Press, 2003 6) Georgescu P, Sisteme multiprocesor,

Managementul datelor şi al cunoştinţelor

CF 17 16/02/03

2) A doua formă normală (FN2)

O relaţie este în FN2 dacă ea este în FN1 şi dacă nici un atribut din cheie nu este determinat de un subansamblu de atribute din cheie. (cheia să nu conţină redondanţe) Exemplu: Tabla Comenzi-FN1 nu este în FN2:

ComNo este o parte a cheii, iar ComFurn, FurnStr, FurnLoc, FurnTara depind numai de ea.

Soluţia: se separă datele în două table: Comenzi-FN2 ComNo ComData ComFurn FurnStr FornLoc FurnTara

1 1/12/2002 HP St.Voda 95 Buc Ro 1 1/12/2002 HP St.Voda 95 Buc Ro 2 2/12/2002 FLAM G.Enescu36 Buc Ro 2 2/12/2002 FLAM G.Enescu36 Buc Ro 3 1/02/2003 DC St.Voda 60 Buc Ro 3 1/02/2003 DC St.Voda 60 Buc Ro 4 1/03/2003 HP St.Voda 95 Buc Ro 4 1/03/2003 HP St.Voda 95 Buc Ro 4 1/03/2003 HP St.Voda 95 Buc Ro 5 2/03/2003 HPUS 10 Main St. LA USA 5 2/03/2003 HPUS 10 Main St. LA USQ

Articole ComNo ComArt ComCant

1 DJ3325 1 1 DJ5550 1 2 DJ5550 2 2 D145 1 3 D145 2 3 PSC2100 1 4 DJ3325 2 4 DJ3420 1 4 PSC2210 1 5 PSC2100 1 5 D145 1

Comenzi-FN2(ComNo , ComData, ComFurn, FurnStr, FurnLoc, FurnTara) Articole (ComNo, ComArt , ComCant )

Unde Articole.ComNo este o cheie străină (foreign key) de legătură cu tabla Comenzi,

Page 20: MDC Curs DB - itee.elth.pub.roitee.elth.pub.ro/~mm/ibd/lab05/MDC_Curs_DB.pdf · 5) Ionescu Ion, Sisteme cu microprocesoare, Politehnica Press, 2003 6) Georgescu P, Sisteme multiprocesor,

Managementul datelor şi al cunoştinţelor

CF 18 16/02/03

3) A treia formă normală (FN3)

O relaţie este în FN3 dacă ea este în FN2 şi dacă nici un atribut care nu aparţine cheii nu depinde de altul care nu aparţine nici el cheii.

Exemplu: Tabla Comenzi-FN2 nu este în FN3 :

Soluţia: se separă tabla Comenzi-FN2 în două table: Furnizori: FurnCod FurnStr FornLoc FurnTara FurnNume HP St.Voda 95 Buc Ro Hewlett-Packard Romania FLAM G.Enescu36 Buc Ro Flamingo Computers DC St.Voda 60 Buc Ro Depozitul de calculatoare HPUS 10 Main St. LA USQ Hewlett-Packard

Comenzi: ComNo ComData ComFurn

1 1/12/2002 HP 1 1/12/2002 HP 2 2/12/2002 FLAM 2 2/12/2002 FLAM 3 1/02/2003 DC 3 1/02/2003 DC 4 1/03/2003 HP 4 1/03/2003 HP 4 1/03/2003 HP 5 2/03/2003 HPUS 5 2/03/2003 HPUS

Articole ComNo ComArt ComCant

1 DJ3325 1 1 DJ5550 1 2 DJ5550 2 2 D145 1 3 D145 2 3 PSC2100 1 4 DJ3325 2 4 DJ3420 1 4 PSC2210 1 5 PSC2100 1 5 D145 1

ComData

ComFurn

FurnStr FurnLoc FurnTara

ComNo

Page 21: MDC Curs DB - itee.elth.pub.roitee.elth.pub.ro/~mm/ibd/lab05/MDC_Curs_DB.pdf · 5) Ionescu Ion, Sisteme cu microprocesoare, Politehnica Press, 2003 6) Georgescu P, Sisteme multiprocesor,

Managementul datelor şi al cunoştinţelor

CF 19 16/02/03

Furnizori (FurnCod, FurnStr, FurnLoc, FurnTata, FurnNume) Comenzi(ComNo , ComData, ComFurn) Articole (ComNo, ComArt , ComCant )

Un furnizor poate avea mai multe comenzi

O comandă poate cuprinde mai mulşte articole Un articol apare o singură dată într-o comandă.

Page 22: MDC Curs DB - itee.elth.pub.roitee.elth.pub.ro/~mm/ibd/lab05/MDC_Curs_DB.pdf · 5) Ionescu Ion, Sisteme cu microprocesoare, Politehnica Press, 2003 6) Georgescu P, Sisteme multiprocesor,

Managementul datelor şi al cunoştinţelor

CF 20 16/02/03

De la modelul „entităţi – relaţii” la „modelul relaţional”:

Reguli de tranziţie: R1. Se creează o relaţie (R) (adică o tablă) pentru fiecare entitate, în care sunt

incluse toate atributele entităţii. R2. Două entităţi E1 şi E2 care sunt legate printr-o asociaţie (1,1) se traduc în două

relaţii R1 şi R2 (adică în două table T1 şi T2), în care se includ: • Atributele relaţiilor respective, • Se adaugă în E2 cheia lui E1 („cheie străină”, „foreign key”)

R3. Două entităţi E1 şi E2 care sunt legate printr-o asociaţie (n,m) se traduc în • două relaţii R1 şi R2 (adică în două table T1 şi T2), care înglobează

atributele din R1 şi R2 • o relaţie R12 (adică o nouă tablă) care include cheile din R1 şi R2 (v.

exemplu tablei AUTORI de mai sus).

Rezultat: (v. mai sus baza de date MDC_ExBiblio.mdb):

Page 23: MDC Curs DB - itee.elth.pub.roitee.elth.pub.ro/~mm/ibd/lab05/MDC_Curs_DB.pdf · 5) Ionescu Ion, Sisteme cu microprocesoare, Politehnica Press, 2003 6) Georgescu P, Sisteme multiprocesor,

Managementul datelor şi al cunoştinţelor

CF 21 16/02/03

1.5 Algebra relaţiilor.

=> Date selecţionate

RESTRICŢIE (SELECŢIE):

Selectarea acelor înregistrări care satisfac anumite criterii de selecţie;

PROIECŢIE Selectarea anumitor câmpuri din toare înregistrările.

PRODUS CARTEZIAN: Concatenarea tuturor tuplelor (înregistrărilor) din prima tablă cu toate înregistrările din cea de a doua tablă.

JOIN Combinarea între produsul cartezian şi restricţie. Operatorul (=) poate fi înlocuit de ( > < >= <= )

a b c

1 2

=>

a 1 a 2 b 1 b 2 c 1 c 2

1 a 2 b 1 c 3 d

1 u 2 v 3 w 4 x

=>

1 a 1 u 2 b 2 v 1 c 1 u 3 d 3 w

Page 24: MDC Curs DB - itee.elth.pub.roitee.elth.pub.ro/~mm/ibd/lab05/MDC_Curs_DB.pdf · 5) Ionescu Ion, Sisteme cu microprocesoare, Politehnica Press, 2003 6) Georgescu P, Sisteme multiprocesor,

Managementul datelor şi al cunoştinţelor

CF 22 16/02/03

UNIUNE Reunirea într-o singură tablă a tuturor înregistrărilor din două table (de structuri compatibile).

=>

INTERSECŢIA Extragerea înregistrărilor comune din două table (de structuri compatibile).

=>

DIFERENŢA Extragerea înregistrărilor dintr-o tablă care nu se găsesc în cea de a doua tablă (de structuri compatibile)

DIVIZIUNEA Care sunt înregistrările din prima tablă asociate (prin intermediul a două câmpuri cu domeniile de definiţie comune) cu toate înregistrările din a doua tablă.

=>

a 1 d 2 a 3 b 1 c 2 a 2

1 2 3

=>

a

Page 25: MDC Curs DB - itee.elth.pub.roitee.elth.pub.ro/~mm/ibd/lab05/MDC_Curs_DB.pdf · 5) Ionescu Ion, Sisteme cu microprocesoare, Politehnica Press, 2003 6) Georgescu P, Sisteme multiprocesor,

Managementul datelor şi al cunoştinţelor

CF 23 16/02/03

1.6 SQL - limbajul sistemelor de gestiune a bazelor de date. SQL = S(tructured) Q(uery) L(anguage)

= Limbaj structurat de interogare (a bazelor de date).

Standard care precizează sintaxa instrucţiunilor prin care se pot executa operaţiuni asupra datelor dintr-o bază de date.

Exemplu:

SELECT LUCRARI.LucrTitlu, LUCRARI.Anul FROM PERSOANE INNER JOIN (LUCRARI INNER JOIN AUTORI ON LUCRARI.LucrNo = AUTORI.LucrNo) ON PERSOANE.PersNo = AUTORI.PersNo WHERE (((PERSOANE.PersNume)="IONESCU") AND ((PERSOANE.PersPrenume)="Ion")) ORDER BY LUCRARI.Anul;

Categorii de instrucţiuni SQL:

Instrucţiuni de selectare (extragere) a datelor dintr-o bază de date: SELECT ....

Instrucţiuni de modificare a datelor: INSERT ... UPDATE ... DELETE ...

Instrucţiuni de definire a structurilor de date: CREATE DATABASE ... CREATE TABLE ... CREATE INDEX ... ...

1.6.1 Instrucţiunea SELECT.

Permite extragerea unor date, care răspund unor criterii de selecţie. Nu modifică datele.

Analiza unei instrucţiuni SELECT tipice:

SELECT LUCRARI.LucrTitlu, LUCRARI.Anul Clauza SELECT - ce se va selecta

FROM PERSOANE Clauza FROM - de unde

INNER JOIN Clauze de legătură între table (LUCRARI INNER JOIN AUTORI ON LUCRARI.LucrNo = AUTORI.LucrNo) ON PERSOANE.PersNo = AUTORI.PersNo WHERE (((PERSOANE.PersNume)="IONESCU") Criterii de selecţie. AND ((PERSOANE.PersPrenume)="Ion")) ORDER BY LUCRARI.Anul; Criterii de ordonare.

Page 26: MDC Curs DB - itee.elth.pub.roitee.elth.pub.ro/~mm/ibd/lab05/MDC_Curs_DB.pdf · 5) Ionescu Ion, Sisteme cu microprocesoare, Politehnica Press, 2003 6) Georgescu P, Sisteme multiprocesor,

Managementul datelor şi al cunoştinţelor

CF 24 16/02/03

Sintaxa :

SELECT DISTINCT DISTINCTROW TOP n câmpuri AS xxx FROM tablă, ... INNER JOIN LEFT JOIN RIGHT JOIN tablă ON xxx = yyy WHERE xxx OP yyy [GROUP BY] xxx [HAVING] xxx OP yyy ORDER BY xxx

NNNN= opţionale OP = (< > <= >= <> BETWEEN LIKE IN .NOT IN...)

Funcţiuni - agregat:

COUNT( ..) SUM (...) MIN (...) MAX(...) AVG (...) StDev( ), StDevP(..), Var (...), VarP (...)

Page 27: MDC Curs DB - itee.elth.pub.roitee.elth.pub.ro/~mm/ibd/lab05/MDC_Curs_DB.pdf · 5) Ionescu Ion, Sisteme cu microprocesoare, Politehnica Press, 2003 6) Georgescu P, Sisteme multiprocesor,

Managementul datelor şi al cunoştinţelor

CF 25 16/02/03

1.6.2 Instrucţiuni de modificare a datelor.

1.6.2.1 Instrucţiunea INSERT INSERT INTO <nume tabla>

[(lista coloane insert)] [VALUES (lista valori de inserat)

<lista coloane insert> := <nume coloana> [, <nume coloana] <lista valori de inserat>:= <InsValoare> [,<InsValoare>] <InsValoare> := <valoare> | NULL

Exemplu:

INSERT INTO ArticoleLista ( ArtCod ) SELECT DISTINCT Articole.CodArt FROM Articole;

INSERT INTO ArticoleLista ( ArtCod ) VALUES („”IBM”);

1.6.2.2 Instrucţiunea UPDATE UPDATE <nume tabla>

SET <clauza update> WHERE <clauza where>

<clauza update>=<coloana = valoare>[,<coloana=valoare>]

Exemplu: UPDATE Comenzi SET (ComFurn = „”HPUS”) WHERE (ComNo=4);

1.6.2.3 Instrucţiunea DELETE DELETE FROM <nume tabla>

WHERE <clauza>

Exemplu: DELETE FROM Comenzi WHERE (ComNo=4);

Page 28: MDC Curs DB - itee.elth.pub.roitee.elth.pub.ro/~mm/ibd/lab05/MDC_Curs_DB.pdf · 5) Ionescu Ion, Sisteme cu microprocesoare, Politehnica Press, 2003 6) Georgescu P, Sisteme multiprocesor,

Managementul datelor şi al cunoştinţelor

CF 26 16/02/03

1.6.3 Instrucţiuni de definire a structurilor de date.

1.6.3.1 Instrucţiunea CREATE TABLE. CREATE TABLE <nume tabla>

(<element> [,<element>]) <element>:= NumeColoana Tip [ <clauze> ]

Exemplu:

CREATE TABLE Produse ( Cod Text(20) NOT NULL, Nume Text(50)) CONSTRAINT [Index1] Primary Key (Cod);

1.6.4 Create Index

CREATE [ UNIQUE ] INDEX index ON table (field [ASC|DESC][, field [ASC|DESC], ...]) [WITH { PRIMARY | DISALLOW NULL | IGNORE NULL }]

1.6.5 Tranzacţii.

Grup de instrucţiuni care trebuie executqte în totalitate, sau, în caz de eroare, trebuie abandonate în totalitate.

BEGIN TRANS

Instructiuni (modificarile inca nu se transmit in baza de date)

... COMMIT TRANS (daca e OK, se inregistreaza

in baza de date toate operatiunile executate)

ROLLBACK (daca au aparut erori, se revine

La valorile initiale)

Page 29: MDC Curs DB - itee.elth.pub.roitee.elth.pub.ro/~mm/ibd/lab05/MDC_Curs_DB.pdf · 5) Ionescu Ion, Sisteme cu microprocesoare, Politehnica Press, 2003 6) Georgescu P, Sisteme multiprocesor,

Man

agem

entu

l dat

elor

şi a

l cun

oştinţe

lor

CF

27

16/0

2/03

1.7

SQL şi

alg

ebra

relaţio

nală

. (v

. baz

a de

dat

e M

DC

_ExC

omen

zi.m

db):

OPE

RAŢI

A

Inst

rucţ

iune

a SQ

L R

EZU

LTA

TUL

RES

TRICŢI

A (S

ELEC

ŢIA

) C

omen

zi:

Com

No

Com

Dat

a C

omFu

rn1

1/12

/200

2 H

P

1 1/

12/2

002

HP

2

2/12

/200

2 FL

AM

2

2/12

/200

2 FL

AM

3

1/02

/200

3 D

C

3 1/

02/2

003

DC

4

1/03

/200

3 H

P

4 1/

03/2

003

HP

4

1/03

/200

3 H

P

5 2/

03/2

003

HPU

S

5 2/

03/2

003

HPU

S

Car

e su

nt c

omen

zile

făcu

te la

HP

: SE

LEC

T C

omen

zi.*

FRO

M C

omen

zi

WH

ERE

(((C

omen

zi.C

omFu

rn)=

"HP

"));

PRO

IEC

TIA

C

omen

zi:

Com

No

Com

Dat

a C

omFu

rn1

1/12

/200

2 H

P

1 1/

12/2

002

HP

2

2/12

/200

2 FL

AM

2

2/12

/200

2 FL

AM

3

1/02

/200

3 D

C

3 1/

02/2

003

DC

4

1/03

/200

3 H

P

4 1/

03/2

003

HP

4

1/03

/200

3 H

P

5 2/

03/2

003

HPU

S

5 2/

03/2

003

HPU

S

Car

e su

nt c

omen

zile

şi f

urni

zorii

re

spec

tivi:

SELE

CT

Com

enzi

.Com

No,

C

omen

zi.C

omFu

rn

FRO

M C

omen

zi;

Page 30: MDC Curs DB - itee.elth.pub.roitee.elth.pub.ro/~mm/ibd/lab05/MDC_Curs_DB.pdf · 5) Ionescu Ion, Sisteme cu microprocesoare, Politehnica Press, 2003 6) Georgescu P, Sisteme multiprocesor,

Man

agem

entu

l dat

elor

şi a

l cun

oştinţe

lor

CF

28

16/0

2/03

PRO

DU

S C

AR

TEZI

AN

C

omen

zi:

Com

No

Com

Dat

a C

omFu

rn1

1/12

/200

2 H

P

1 1/

12/2

002

HP

2

2/12

/200

2 FL

AM

2

2/12

/200

2 FL

AM

3

1/02

/200

3 D

C

3 1/

02/2

003

DC

4

1/03

/200

3 H

P

4 1/

03/2

003

HP

4

1/03

/200

3 H

P

5 2/

03/2

003

HPU

S

5 2/

03/2

003

HPU

S

Fu

rniz

ori:

Furn

Cod

Fu

rnSt

r Fo

rnLo

cH

P S

t.Vod

a 95

B

uc

FLA

M

G.E

nesc

u36

Buc

D

C

St.V

oda

60

Buc

H

PUS

10 M

ain

St.

LA

SELE

CT

Com

enzi

.Com

No,

Com

enzi

.Com

Dat

a,

C

omen

zi.C

omFu

rn,

Fu

rniz

ori.F

urnS

tr,

Fu

rniz

ori.F

urnL

oc

FRO

M C

omen

zi, F

urni

zori;

Page 31: MDC Curs DB - itee.elth.pub.roitee.elth.pub.ro/~mm/ibd/lab05/MDC_Curs_DB.pdf · 5) Ionescu Ion, Sisteme cu microprocesoare, Politehnica Press, 2003 6) Georgescu P, Sisteme multiprocesor,

Man

agem

entu

l dat

elor

şi a

l cun

oştinţe

lor

CF

29

16/0

2/03

JOIN

Com

enzi

: C

omN

o C

omD

ata

Com

Furn

1 1/

12/2

002

HP

1

1/12

/200

2 H

P

2 2/

12/2

002

FLA

M

2 2/

12/2

002

FLA

M

3 1/

02/2

003

DC

3

1/02

/200

3 D

C

4 1/

03/2

003

HP

4

1/03

/200

3 H

P

4 1/

03/2

003

HP

5

2/03

/200

3 H

PUS

5

2/03

/200

3 H

PUS

Furn

izor

i: Fu

rnC

od

Furn

Str

Forn

Loc

HP

St.V

oda

95

Buc

FL

AM

G

.Ene

scu3

6 B

uc

DC

S

t.Vod

a 60

B

uc

HPU

S 10

Mai

n St

. LA

Com

enzi

le la

div

erşi

i fur

nizo

ri:

* V

aria

nta

1:

SELE

CT

Com

enzi

.Com

No,

Com

enzi

.Com

Dat

a,

C

omen

zi.C

omFu

rn,

Fu

rniz

ori.F

urnS

tr,

Fu

rniz

ori.F

urnL

oc,

Fu

rniz

ori.F

urnT

ara

FRO

M C

omen

zi, F

urni

zori

WH

ERE

(((C

omen

zi.C

omFu

rn)=

[Fur

nizo

ri].[F

urnC

od]))

; V

aria

nta

2 (c

u JO

IN):

SELE

CT

Com

enzi

.Com

No,

omen

zi.C

omD

ata,

Furn

izor

i.Fur

nStr,

Furn

izor

i.Fur

nLoc

,

Furn

izor

i.Fur

nTar

a FR

OM

C

omen

zi IN

NER

JO

IN F

urni

zori

ON

C

omen

zi.C

omFu

rn =

Fu

rniz

ori.F

urnC

od;

Page 32: MDC Curs DB - itee.elth.pub.roitee.elth.pub.ro/~mm/ibd/lab05/MDC_Curs_DB.pdf · 5) Ionescu Ion, Sisteme cu microprocesoare, Politehnica Press, 2003 6) Georgescu P, Sisteme multiprocesor,

Man

agem

entu

l dat

elor

şi a

l cun

oştinţe

lor

CF

30

16/0

2/03

UN

IUN

E Com

enzi

2002

C

omen

zi20

03

Toat

e co

men

zile

din

ani

i 200

2 şi

20

03:

SELE

CT

* FR

OM

Com

enzi

2002

U

NIO

N

SELE

CT

* FR

OM

Com

enzi

2003

;

INTE

RSE

CŢI

A

Com

enzi

: (de

la s

ediu

l prin

cipa

l) C

omN

o C

omD

ata

Com

Furn

1 1/

12/2

002

HP

1

1/12

/200

2 H

P

2 2/

12/2

002

FLA

M

2 2/

12/2

002

FLA

M

3 1/

02/2

003

DC

3

1/02

/200

3 D

C

4 1/

03/2

003

HP

4

1/03

/200

3 H

P

4 1/

03/2

003

HP

5

2/03

/200

3 H

PUS

5

2/03

/200

3 H

PUS

Com

enzi

: (al

tă s

ucur

sală

)

Car

e su

nt c

omen

zile

car

e au

fost

cute

şi d

e al

tă s

ucur

sală

: SE

LEC

T C

omen

zi.C

omN

o,

C

omen

zi.C

omD

ata,

Com

enzi

.Com

Furn

FR

OM

Com

enzi

W

HER

E

(((E

xist

s

(SEL

ECT

Com

enzi

.Com

No,

Com

enzi

.Com

Dat

a,

C

omen

zi.C

omFu

rn

FRO

M C

omen

ziAl

taSu

curs

ala

WH

ERE

Com

enzi

.Com

No=

C

omen

ziA

ltaS

ucur

sala

.Com

No)

)

<>Fa

lse)

);

Page 33: MDC Curs DB - itee.elth.pub.roitee.elth.pub.ro/~mm/ibd/lab05/MDC_Curs_DB.pdf · 5) Ionescu Ion, Sisteme cu microprocesoare, Politehnica Press, 2003 6) Georgescu P, Sisteme multiprocesor,

Man

agem

entu

l dat

elor

şi a

l cun

oştinţe

lor

CF

31

16/0

2/03

DIF

EREN

ŢA

Com

enzi

: (de

la s

ediu

l prin

cipa

l) C

omN

o C

omD

ata

Com

Furn

1 1/

12/2

002

HP

1

1/12

/200

2 H

P

2 2/

12/2

002

FLA

M

2 2/

12/2

002

FLA

M

3 1/

02/2

003

DC

3

1/02

/200

3 D

C

4 1/

03/2

003

HP

4

1/03

/200

3 H

P

4 1/

03/2

003

HP

5

2/03

/200

3 H

PUS

5

2/03

/200

3 H

PUS

Com

enzi

: (al

tă s

ucur

sală

)

Car

e su

nt c

omen

zile

car

e nu

au

fost

făcu

te d

ecât

de

la s

ediu

l pr

inci

pal:

SELE

CT

Com

enzi

.Com

No,

Com

enzi

.Com

Dat

a,

C

omen

zi.C

omFu

rn

FRO

M C

omen

zi

WH

ERE

((

(Not

Exi

sts

(S

ELEC

T C

omen

zi.C

omN

o,

C

omen

zi.C

omD

ata,

Com

enzi

.Com

Furn

FR

OM

Com

enzi

Alta

Sucu

rsal

a W

HER

E C

omen

zi.C

omN

o=

Com

enzi

Alta

Suc

ursa

la.C

omN

o))

<>

Fals

e));

Page 34: MDC Curs DB - itee.elth.pub.roitee.elth.pub.ro/~mm/ibd/lab05/MDC_Curs_DB.pdf · 5) Ionescu Ion, Sisteme cu microprocesoare, Politehnica Press, 2003 6) Georgescu P, Sisteme multiprocesor,

Man

agem

entu

l dat

elor

şi a

l cun

oştinţe

lor

CF

32

16/0

2/03

DIV

IZIU

NEA

A

rtic

ole:

A

rtic

oleL

ista

(toat

e ar

t. co

man

date

, fă

ră re

petiţ

ie ):

Car

e su

nt c

omen

zile

car

e cu

prin

d to

ate

artic

olel

e co

man

date

: SE

LEC

T D

ISTI

NC

T

A1.C

omN

o FR

OM

Arti

cole

AS

A1

WH

ERE

((

(Exi

sts

(S

ELEC

T A

rtCod

FRO

M A

rtico

leLi

sta

WH

ERE

N

OT

EXIS

TS

(S

ELEC

T *

FRO

M A

rtico

le A

S A2

WH

ERE

A

1.C

omN

o=A

2.C

omN

o

A

ND

Arti

cole

List

a.A

rtCod

=A2.

Cod

Art

)))=

Fals

e));

Page 35: MDC Curs DB - itee.elth.pub.roitee.elth.pub.ro/~mm/ibd/lab05/MDC_Curs_DB.pdf · 5) Ionescu Ion, Sisteme cu microprocesoare, Politehnica Press, 2003 6) Georgescu P, Sisteme multiprocesor,

Managementul datelor şi al cunoştinţelor

16.02.200316.02.2003CF 33 16/02/03

1.8 INIŢIERE ÎN ACCESS.

MS JET Motorul bazei de date

Visual C++

Visual BASIC

ACCESS

ODBC

ORACLE

SQL Server

INFORMIX

WORD

EXCEL

Page 36: MDC Curs DB - itee.elth.pub.roitee.elth.pub.ro/~mm/ibd/lab05/MDC_Curs_DB.pdf · 5) Ionescu Ion, Sisteme cu microprocesoare, Politehnica Press, 2003 6) Georgescu P, Sisteme multiprocesor,

Managementul datelor şi al cunoştinţelor

16.02.200316.02.2003CF 34 16/02/03

OBIECTE DE BAZĂ

ACCESS JET

Table

Query (interogări)

Formulare (ecrane)

Reporturi

Macro

Module

Acces la date

Interfaţa

Programare

TABLE

Page 37: MDC Curs DB - itee.elth.pub.roitee.elth.pub.ro/~mm/ibd/lab05/MDC_Curs_DB.pdf · 5) Ionescu Ion, Sisteme cu microprocesoare, Politehnica Press, 2003 6) Georgescu P, Sisteme multiprocesor,

Managementul datelor şi al cunoştinţelor

16.02.200316.02.2003CF 35 16/02/03

TABLE

BAZA de DATE principală

TABLE interne

Ecrane

BAZA de DATE ataşată

TABLE ataşate

Query

BAZĂ de DATE SQL

TABLE ataşate

Repoarte

MACRO COD

BIBLIOTECI nume.MDA

nume.MDB

DLL

Page 38: MDC Curs DB - itee.elth.pub.roitee.elth.pub.ro/~mm/ibd/lab05/MDC_Curs_DB.pdf · 5) Ionescu Ion, Sisteme cu microprocesoare, Politehnica Press, 2003 6) Georgescu P, Sisteme multiprocesor,

Managementul datelor şi al cunoştinţelor

16.02.200316.02.2003CF 36 16/02/03

TABLE - TIPURI DE CÂMPURI ACCESS Echiv. SQL AutoNumber SERIAL (nu sub ODBC) Text(n) CHAR(n) Number Byte Integer INTEGER LongInteger LONG Single REAL, FLOAT Double FLOAT Currency MONEY, DECIMAL Yes/No INTEGER Memo --- Objet OLE --- INDEX INDEX LINK ---

QUERY (interogări)

TIPURI SQL SELECTION SELECT *** FROM xxx UPDATE UPDATE xxx SET *** (modificări) APPEND INSERT INTO xxx (adăugiri) MAKE TABLE SELECT *** FROM *** INTO xxx (creare) DELETE DELETE *** FROM xxx (ştergere) CROSSTAB TRANSFORM *** SELECT *** PIVOT *** (anal. încrucişată) (nu şi în SQL standard ) UNION SELECT *** UNION SELECT *** PASS-THROUGH sintaxa bazei SQL client

Page 39: MDC Curs DB - itee.elth.pub.roitee.elth.pub.ro/~mm/ibd/lab05/MDC_Curs_DB.pdf · 5) Ionescu Ion, Sisteme cu microprocesoare, Politehnica Press, 2003 6) Georgescu P, Sisteme multiprocesor,

Managementul datelor şi al cunoştinţelor

16.02.200316.02.2003CF 37 16/02/03

Construcţia unei interogări (Query). Construcţia vizuală (Access): Codul SQL echivalent: Selecţie :

SELECT LUCRARI.LucrTitlu, LUCRARI.Anul FROM PERSOANE INNER JOIN

(LUCRARI INNER JOIN AUTORI

ON LUCRARI.LucrNo = AUTORI.LucrNo)

ON PERSOANE.PersNo = AUTORI.PersNo WHERE (((PERSOANE.PersNume)="IONESCU") AND ((PERSOANE.PersPrenume)="Ion")) ORDER BY LUCRARI.Anul;

Rezultatul interogării:

Selecţie + funcţii agregat :

SELECT LUCRARI.Anul, Count(LUCRARI.LucrTitlu) AS NrLucrariAnual FROM PERSOANE INNER JOIN (LUCRARI INNER JOIN AUTORI ON LUCRARI.LucrNo = AUTORI.LucrNo) ON PERSOANE.PersNo = AUTORI.PersNo WHERE (((PERSOANE.PersNume)="IONESCU") AND ((PERSOANE.PersPrenume)="Ion")) GROUP BY LUCRARI.Anul ORDER BY LUCRARI.Anul;

Rezultatul interogării:

Page 40: MDC Curs DB - itee.elth.pub.roitee.elth.pub.ro/~mm/ibd/lab05/MDC_Curs_DB.pdf · 5) Ionescu Ion, Sisteme cu microprocesoare, Politehnica Press, 2003 6) Georgescu P, Sisteme multiprocesor,

Managementul datelor şi al cunoştinţelor

16.02.200316.02.2003CF 38 16/02/03

Optimizări:

WHERE expresie simplă optimizabilă :

(câmp indexat) OP expresie OP : < > <= >= <> BETWEEN LIKE IN ..

expresie optimizabilă: expresieSimplă AND expresieSimplă expresieSimplă OR expresieSimplă

Page 41: MDC Curs DB - itee.elth.pub.roitee.elth.pub.ro/~mm/ibd/lab05/MDC_Curs_DB.pdf · 5) Ionescu Ion, Sisteme cu microprocesoare, Politehnica Press, 2003 6) Georgescu P, Sisteme multiprocesor,

Managementul datelor şi al cunoştinţelor

16.02.200316.02.2003CF 39 16/02/03

Queryuri CROSSTAB ( analiză încrucişată):

TRANSFORM Count(LUCRARI.LucrNo) AS CountOfLucrNo SELECT PUBLICATII.PubNume FROM PUBLICATII INNER JOIN LUCRARI ON PUBLICATII.PubNo = LUCRARI.PubNo GROUP BY PUBLICATII.PubNume PIVOT LUCRARI.Anul;

Page 42: MDC Curs DB - itee.elth.pub.roitee.elth.pub.ro/~mm/ibd/lab05/MDC_Curs_DB.pdf · 5) Ionescu Ion, Sisteme cu microprocesoare, Politehnica Press, 2003 6) Georgescu P, Sisteme multiprocesor,

Managementul datelor şi al cunoştinţelor

16.02.200316.02.2003CF 40 16/02/03

ECRANE (.formulare )

Elementul principal al interfeţei cu utilizatorul. Tip FIŞĂ:

Tip LISTĂ CONTINUĂ:

Page 43: MDC Curs DB - itee.elth.pub.roitee.elth.pub.ro/~mm/ibd/lab05/MDC_Curs_DB.pdf · 5) Ionescu Ion, Sisteme cu microprocesoare, Politehnica Press, 2003 6) Georgescu P, Sisteme multiprocesor,

Managementul datelor şi al cunoştinţelor

16.02.200316.02.2003CF 41 16/02/03

Formulare (ecrane) – Exemple de tipuri de câmpuri :

Proprietăţile obiectelor :

Sursa ecranului :

Tabelă : ex. PERSOANE

Query înregistrat Instrucţiune SQL:

ex: SELECT * FROM PERSOANE WHERE PersNume LIKE "I*" Câmpuri:

Legate Independente

Page 44: MDC Curs DB - itee.elth.pub.roitee.elth.pub.ro/~mm/ibd/lab05/MDC_Curs_DB.pdf · 5) Ionescu Ion, Sisteme cu microprocesoare, Politehnica Press, 2003 6) Georgescu P, Sisteme multiprocesor,

Managementul datelor şi al cunoştinţelor

16.02.200316.02.2003CF 42 16/02/03

EVENIMENTE.

PROGRAM SUB WINDOWS.

START

Înregistrează fereastra programului

//Bucla principală a programului: Cât timp (While) sosesc mesaje pentru mine

Tratează mesajul

End While END

Select case case ... default Fin Select

NUCLEUL WINDOWS

Aplicaţie

Aplicaţie

Evenimente: …

Page 45: MDC Curs DB - itee.elth.pub.roitee.elth.pub.ro/~mm/ibd/lab05/MDC_Curs_DB.pdf · 5) Ionescu Ion, Sisteme cu microprocesoare, Politehnica Press, 2003 6) Georgescu P, Sisteme multiprocesor,

Managementul datelor şi al cunoştinţelor

16.02.200316.02.2003CF 43 16/02/03

EVENIMENTE IN ECRANE

Deschiderea unui ecran

Deschidere (Open)

Înainte de afişarea ecranului

Încărcare (Load)

Înregistrările sunt afişate

Redimensionare (Resize)

Când se afişează prima oară, sau se redimensionează ecranul

Activare (Activate)

Ecranul devine fereastra activă

Continuare (Current)

Se trece la altă înregistrare

Evenimente ataşate controalelor:

Intrare

(Enter)

Se accesează controlul, dar acesta încă nu e activ.

Focalizare (Get Focus)

Controlul devine cel activ.

NOTĂ: Numai evenimentele principale sunt prezentate !!

Page 46: MDC Curs DB - itee.elth.pub.roitee.elth.pub.ro/~mm/ibd/lab05/MDC_Curs_DB.pdf · 5) Ionescu Ion, Sisteme cu microprocesoare, Politehnica Press, 2003 6) Georgescu P, Sisteme multiprocesor,

Managementul datelor şi al cunoştinţelor

16.02.200316.02.2003CF 44 16/02/03

Evenimente legate de înregistrări (record) :

Înainte de modificare

(Before Update)

Înainte de salvarea înregistrării (după ce s-au făcut modificări)

După modificare (After Update)

După salvarea înregistrării.

Închiderea unui ecran :

Descărcare

(Unload)

Înregistrările sunt eliberate, ecranul este încă afişat.

Desactivare (Desactivate)

Ecranul se închide, sau pierde controlul atunci când se selectează alt ecran.

Închidere (Close)

Ecranul dispare.

Page 47: MDC Curs DB - itee.elth.pub.roitee.elth.pub.ro/~mm/ibd/lab05/MDC_Curs_DB.pdf · 5) Ionescu Ion, Sisteme cu microprocesoare, Politehnica Press, 2003 6) Georgescu P, Sisteme multiprocesor,

Managementul datelor şi al cunoştinţelor

16.02.200316.02.2003CF 45 16/02/03

ELEMENTE FUNDAMENTALE de Access Basic.

Cod:

Evenimenţial (ataşat formularelor / repoartelor ) Module globale.

Proceduri: SUB nomSub (...)

...... END SUB

Funcţiuni: Function nomFunc ( ... ) [AS type] ...... nomFunc = valoare

END Function Obiecte: Variabile:

Variabile simple : DIM VarInt AS Integer DIM VarString AS String DIM VarStringN AS String * N DIM VarLong AS Long DIM VarSingle AS Single DIM VarDbl AS Double DIM VarMon AS Currency DIM VarGeneric AS Variant DIM VarObj AS OBJECT

Tablouri: DIM Tablou (N) AS tip DIM Tablou (10 TO 20 ) AS tip

Variabile de acces la date DIM Db AS Database DIM Ws AS Workspace DIM Td AS Tabledef DIM Rs AS Recordset DIM Qd AS Querydef DIM Ct AS Container DIM Doc AS Document

Variabile Obiect ale Access:

DIM Frm AS Form DIM Rep AS Report

Page 48: MDC Curs DB - itee.elth.pub.roitee.elth.pub.ro/~mm/ibd/lab05/MDC_Curs_DB.pdf · 5) Ionescu Ion, Sisteme cu microprocesoare, Politehnica Press, 2003 6) Georgescu P, Sisteme multiprocesor,

Managementul datelor şi al cunoştinţelor

16.02.200316.02.2003CF 46 16/02/03

Tipuri definite: TYPE TipNou X AS TipPredefinit Y AS TipPredefinit ... END TYPE DIM VarDeTipNou AS TipNou

Constante: CONST Const = Valoare

Validitatea (eng: scope) şi vizibilitatea variabilelor:

GLOBAL VarGlobala DIM VarLocalaInModul DIM X FUNCTION Fct( ) DIM VarLocalaInFunctie STATIC VarStatica DIM X '=> Ascunde precedentul X END FUNCTION

Alt modul de cod

Page 49: MDC Curs DB - itee.elth.pub.roitee.elth.pub.ro/~mm/ibd/lab05/MDC_Curs_DB.pdf · 5) Ionescu Ion, Sisteme cu microprocesoare, Politehnica Press, 2003 6) Georgescu P, Sisteme multiprocesor,

Managementul datelor şi al cunoştinţelor

16.02.200316.02.2003CF 47 16/02/03

STRUCTURI DE CONTROL

Instrucţiuni condiţionale:

IF condiţie THEN Instrucţiune IF condiţie THEN

Acţiuni când condiţia este adevărată END IF IF condiţie THEN

Acţiuni când condiţia este adevărată ELSE

Acţiuni când condiţia este falsă END IF IIF (condiţie, CeFacDacăEadevărat, CeFacDacăEfals)

Bucle: FOR variabilă = ValInit TO ValFin [STEP pas]

instrucţiuni NEXT variabilă WHILE condiţie

instrucţiuni WEND DO { WHILE | UNTIL } condiţie

instrucţiuni [EXIT DO]

LOOP DO

instrucţiuni [EXIT DO]

LOOP { WHILE | UNTIL } condiţie SELECT Case expresie

CASE val [ , val]: instrucţiuni CASE val1 TO val2: instrucţiuni CASE IS exprRel: instrucţiuni CASE ELSE: instrucţiuni

END SELECT

Page 50: MDC Curs DB - itee.elth.pub.roitee.elth.pub.ro/~mm/ibd/lab05/MDC_Curs_DB.pdf · 5) Ionescu Ion, Sisteme cu microprocesoare, Politehnica Press, 2003 6) Georgescu P, Sisteme multiprocesor,

Managementul datelor şi al cunoştinţelor

16.02.200316.02.2003CF 48 16/02/03

1.9 STUDIU DE CAZ.


Recommended