Sunteți pe pagina 1din 23

BAZE DE DATE

Suport de curs

Datele - sunt informaţii primare.


- pot fi numere, mărimi, relaţii etc. urmând a fi supuse unor prelucrări.
- prelucrate într-un context cu semnificaţie şi scop devin informaţii utile.

Informaţiile ⊆ Date
dispun de caracteristici caracter pur sintactic
semantice, orientate spre
conţinutul şi sensul atribuit
reprezentării realităţii .

Clasificarea datelor:

♦ În funcţie de reflectarea în timp a proceselor şi fenomenelor reprezentate:


-date active, dinamice - reprezintă procese sau fenomene în curs de desfăşurare;
-date pasive - se referă la procese sau fenomene care au avut loc şi care s-au terminat. Ele sunt utile
pentru analize comparative, conducerea proceselor şi fenomenelor care se vor repeta;
-date previzionale - cuprinse în planuri şi programe şi reflectă procese şi fenomene viitoare

♦ În funcţie de domeniul de activitate la care se referă:


-tehnologice – utilizate pentru conducerea şi dirijarea proceselor tehnologice industriale;
-economice – obţinute prin prelucrări succesive de către compartimentele din cadrul unei societăţi
comerciale aflate pe diferite trepte ierarhice şi utilizate de către conducerea societăţii în activitatea de
analiză şi decizie;
-ştiinţifice - utilizate în domeniul cercetării ştiinţifice si al proiectării tehnologice;

♦ În funcţie de forma de exprimare a fenomenelor pe care le reflectă:


-numerice (cantitative) - exprimă aspectul cantitativ al fenomenelor şi se obţin prin măsurare,
numărare, cântărire sau calcul;
-nenumerice (calitative) – se prezintă printr-o mare varietate de forme: concepte, liste bibliografice,
texte, rapoarte etc.;
-analogice - exprimate prin parametrii cu variaţie continuă din cadrul proceselor tehnologice, de
exemplu presiunea, temperatura, viteza, tensiunea electrică, etc.;
♦ În funcţie de destinaţie:
-de programare - asigură suportul decizional privind elaborarea planurilor şi strategiilor de dezvoltare
pe anumite perioade de timp;
-de pregătire-lansare - utilizate pentru fundamentarea deciziilor privind pregătirea şi lansarea
lucrărilor în succesiunea logică a lor;
-de control reglare – pe baza lor se desfăşoară procesul decizional privind adoptarea deciziilor de
corecţie;
-de evaluare şi raportare;

♦ În funcţie de caracteristicile lor funcţionale:


-de stare - caracterizează cantitativ şi calitativ potenţialul tehnic de producţie al unităţii şi
subdiviziunilor;
-de intrare - caracterizează cantitativ şi calitativ intrările, la nivel de sistem şi subsisteme componente;
-de ieşire - caracterizează influenţa pe care o exercită societatea comercială asupra mediului
înconjurător;
-de cooperare - exprimă legăturile organizatorice ce se stabilesc atât în interiorul societăţii comerciale,
cât şi între societate şi alţi agenţi economici;
-de execuţie - reflectă modul de desfăşurare a activităţii curente şi asigură conducerea operativă a
unităţii;
♦ În funcţie de rolul pe care îl au în sistemul de management:
-planificare;
-control;
-fundamentare a deciziei.

Ce este un sistem de baze de date (B.D)

Un sistem de baze de date în descrierea sa cea mai simplă e un sistem de păstrare a


înregistrărilor bazat pe calculator, adică un sistem al cărui scop e de a înregistra şi menţine informaţii.
Informaţia implicată poate fi oricare entitate căruia noi îi conferim o semnificaţie, adică ceva care poate
fi necesar în procesele de luare de decizii implicate în gestionarea unei organizaţii.

Datele memorate (stocate) într-un sistem sunt partiţionate într-una sau mai multe baze de date.
DEFINTIE: O bază de date e un depozit pentru date memorate. În general ea este atât integrată cât şi
partajată. Prin integrată înţelegem că o bază de date poate fi gândită ca o unificare de mai multe
fişiere de date cu redundanţele dintre aceste fişiere total sau parţial eliminate.

De exemplu o bază de date ar putea conţine atât înregistrări ANGAJAŢI, conţinând nume,
adresă, departament, salarii, cât şi înregistrări PERFECŢIONĂRI care reprezintă înrolarea angajaţilor
în curs de perfecţionare.
Să presupunem că pentru administrarea cursurilor e necesar cunoaşterea departamentului
fiecărui angajat înscris. E clar că nu e necesar să se introducă această informaţie redundantă în
înregistrările PERFECŢIONĂRI pentru că ea este cuprinsă în datele ce se găsesc în tabela ANGAJAT
corespunzătoare.
Prin partajarea unei baze de date se înţelege că bucăţi individuale de date din baza de date pot fi
partajate între mai mulţi utilizatori individuali în sensul că fiecare dintre ei poate avea acces la această
bucată de date şi o poate folosi în scopuri diferite. Astfel partajarea e o consecinţă a faptului că baza de
date e integrată.
În exemplul de mai sus informaţia despre departament din înregistrarea ANGAJAT este
partajată de utilizatorii din departamentul personal şi de cel din pregătire cadre. O altă consecinţă a
faptului că baza de date e integrată este că un utilizator dat va utiliza numai o parte (o submulţime) a
bazei de date. Mai mult submulţimile diferiţilor utilizatori vor acoperii în diferite moduri.

Termenul PARTAJAT este extins pentru a acoperii adesea partajarea concurentă, adică
abilitatea mai multor utilizatori de a accesa baza de date posibil chiar acea bucată de bază de date în
acelaşi timp. Acest sistem se numeşte MULTIUTILIZATOR.

HARDWARE-UL UNUI SISTEM DE DAZE DE DATE constă în volumele de memorare,


discuri, dischete sau benzi pe care rezidă baza de date împreună cu aparatele şi unităţile de control ale
unei baze de date.
Între baza de date FIZICĂ (datele aşa cum sunt ele memorate pe suport) şi utilizatorii
sistemului există un nivel software numit sistem de gestiune a bazei de date (S.G.B.D).

UTILIZATORI
Vom considera 3 mari categorii de utilizatori.
În primul rând există PROGRAMATORUL aplicaţiei responsabil a scrie programe aplicaţie
care folosesc bazele de bate. Aceste aplicaţii program operează asupra datelor pentru regăsirea
informaţiilor sau ştergerea informaţiilor existente. Toate aceste funcţii se realizează emiţând cereri
potrivite către sistemul de gestiune a bazelor de date.
O a doua clasă de utilizatori sunt END-USERII ce accesează bazele de date de la un terminal.
Ei folosesc un limbaj de interogare oferit ca o parte integrată a sistemului sau utilizează aplicaţiile
scrise de programatorii de aplicaţii.
A treia clasă de utilizatori este ADMINISTRATORUL BAZEI DE BATE.

De ce trebuie o întreprindere să aleagă o bază de bate integrată?

Răspunsul este acela că un sistem de baze de date oferă întreprinderii un control centralizat.

AVANTAJELE care rezultă din controlul centralizat sunt:


1 redundanţa poate fi redusă;
2 inconsistenţa poate fi evitată;
3 datele pot fi partajate;
4 pot fi aplicate restricţii de securitate;
5 poate fi menţinută integritatea datelor.

RECAPITULARE și DETALIERE

hardware
Componentele unui Sistem de Baze de Date software
utilizatori, programatori, administratorul BD
date

SGBD

Utilizator Utilizator
final Baza de date final

Date Date
Program Program
Aplicaţie Aplicaţie

Date Date

Hardware. Sistemele de baze de date sunt, de regulă, instalate pe calculatoare de uz general,


de la calculatoare PC standard, până la staţii multiprocesor puternice. Bineînţeles, performanţele
generale de operare ale calculatorului (numărul şi viteza procesoarelor, dimensiunea şi viteza de
operare a memoriei principale) influenţează în mod corespunzător performanţele sistemului de baze de
date.
Software. Între baza de date (colecţia de date memorate fizic în fişiere pe hard-discuri) şi
utilizatorii sistemului există un nivel software, numit Sistem de Gestiune a Bazei de Date (SGBD)
(Database Management System - DBMS).
SGBD-ul este o interfata intre utilizatori si sitemul de operare.
Orice SGBD contine printre alte componente un limbaj de descriere a datelor (LDD) care
permite descrierea structurii unei baze de date, a fiecarei componente a ei, a relatiilor dintre ele, a
drepturilor de acces ale utilizatorilor la baza de date, a restrictiilor in reprezentarea informatiilor si alte
elemente asemanatoare. O alta componenta foarte inportanta a unui SGBD este limbajul de cereri
(LC) sau limbajul de prelucrare a datelor (LPD) ce permite operatii asupra datelor aflate in baza de
date cum sunt: incarcarea bazei de date, inserarea unui nou element, stergerea unui element,
modificarea unuui element, cautarea unor elemente, diferite statistici asupra datelor si alte operatii
asemanatoare.

Utilizatorii bazelor de date pot fi impartiti in urmatoarele clase:

- Utilizatorii finali care pot sa obtina informatiile fara sa aiba cunostinte de programare. Ei
obtin informatiile pe care le doresc prin comenzi stiute si eventual raspunzand la diferitele optiuni pe
care i le indica sistemul de calcul la un moment dat.

- Programatorii de aplicatii care pot scrie programe in LC, acestea fiind apoi compilate si
memorate in fisiere putand fi lansate in executie de utilizatori prin invocarea numelui asociat lor.

- Administratorul bazei de date care stabileste structura initiala a bazei de date si modul de
memorare a datelor la nivel fizic, acorda drepturi de acces al utilizatorilor la baza de date sau parti ale
ei, stabileste conditiile pentru asigurarea securitatii si integritatii datelor, modifica structura bazei de
date daca este nevoie, asigura intretinerea bazei de date facand periodic copii si reconstituid eventual
baza de date in cazul cand au aparut erori datorate componentelor soft, hard sau de utilizare si raspunde
in general de modul de utilizare al bazei de date.

- Administratorul sistemului de baze de date care stabileste bazele de date de pe un sistem de


calcul, aloca spatii de memorare si asigura drepturi de acces.

Arhitectura internă a Sistemelor de Baze de Date

Arhitectura internă a unui sistem de baze de date propusă prin standardul ANSI/X3/SPARC (1975)
conţine trei nivele funcţionale: nivelul intern, nivelul extern şi nivelul conceptual:

Vedere Vedere Vedere Nivelul extern


utilizator utilizator utilizator

Nivelul conceptual
SGBD

Nivelul intern
 Nivelul intern – (fiind de fapt singurul nivel existent efectiv) constituit din schema internă ce descrie
structura de stocare fizică a datelor în baza de date, utilizând un model al datelor fizice.
La acest nivel se descriu detaliile complete ale stocării şi modul de acces la date.
 Nivelul conceptual – sau schema conceptuală, descrie structura întregii baze de date pentru o
cumunitate de utilizatori.
La nivel conceptual se face o descriere completă a bazei de date ascunzându-se detaliile legate de
stocarea fizică si detaliind descrierea entităţilor, tipurilor de date, relaţiile dintre ele şi restricţiile
asociate.
 Nivelul extern – sau nivelul vizual (utilizator), include o colecţie de scheme externe ce descriu baze
de date prin prisma diferiţilor utilizatori.

Funcţiile sistemului de gestiune a bazelor de date


1) Funcţia de descriere a datelor permite definirea structurii bazei de date cu ajutorul limbajului
de definire. La nivelul acestei funcţii se descriu:
− multitudinea atributelor(câmpurilor) din cadrul structurii bazei de date;
− legăturile dintre entităţile bazei de date sau dintre atributele aceleaşi entităţi;
− criterii de validare a datelor;
− metode de acces la date;
− asigurarea integrităţii şi confidenţialităţii datelor.
2) Funcţia de manipulare a datelor este cea mai complexă funcţie şi realizează următoarele
activităţi:
− crearea (încărcarea) bazei de date;
− adăugarea de noi înregistrări;
− suprimarea unor înregistrări;
− modificarea valorilor corespunzătoare unor câmpuri;
− căutarea, sortarea şi editarea parţială sau totală a unei înregistrări.
3) Funcţia de utilizare asigură mulţimea interferenţelor necesare pentru comunicarea tuturor
utilizatorilor cu baza de date. În cadrul acestei funcţii apar mai multe categorii de utilizatori:
− utilizatori “liberi” sau conversaţionali sunt utilizatorii care utilizează limbajele de interogare a bazei
de date într-o formă simplistă.
− utilizatori programatori, care utizează limbajele de manipulare, realizând proceduri complxe de
exploatare a bazei de date.
− administratorul bazei de date care apare ca un utilizator special.
4) Funcţia de administrare a bazei de date apare ca o funcţie complexă şi este de competenţa
administratorului bazei de date.

Etapele în evoluţia SGBD-urilor:


1. Până în anii şaizeci datele erau organizate doar în fişiere, gestionate de programe scrise în
diferite limbaje de programare universale (exemple: Cobol, Fortran etc.).
2. La sfârşitul anilor şaizeci a apărut modelul arborescent de organizare a datelor şi primele
SGBD-uri care erau ierarhice şi implementau acest model (exemplu: IMS).
3. La începutul anilor şaptezeci a apărut modelul reţea de organizare a datelor şi SGBDurile
reţea ce implementau acest model (exemple: IDMS, SOCRATE).
SGBD-urile arborescente şi reţea fac parte din prima generaţie şi ele constituie pionieratul în
domeniu.
4. La sfârşitul anilor şaptezeci, începutul anilor optzeci a apărut modelul relaţional de organizare
a datelor şi ulterior s-au realizat SGBD-urile relaţionale ce implementau acest model (exemple:
Oracle, Informix, DB2, SQLServer, Visual Foxpro, Access etc.). Este generaţia a doua de SGBD,
care prin simplitate, interactivitate şi neproceduralitate domină piaţa actuală.
5. La sfârşitul anilor optzeci, începutul anilor nouăzeci a apărut modelul orientat obiect de
organizare a datelor şi SGBD-urile orientate obiect ce implementau acest model (exemple:
Gemstone, O2, Jasmine etc.). Aceasta este generaţia a treia de SGBD care este în plină dezvoltare
acum.

Avantajele folosirii bazelor de date:


- Reducerea redundanţei datelor. Datorită abordării centralizate, se pot sesiza eventualele
suprapuneri între diverse aplicaţii şi se poate interveni astfel încât aplicaţii diferite ce utilizeze
date similare să utilizeze în comun un singur set de date.
- Evitarea inconsistenţei datelor. Derivă din reducerea redundanţei datelor, ca urmare a
faptului că se foloseşte un singur set de date. Astfel la actualizare se va modifica valoarea unei
singure enităţi.
- Utilizarea în comun a datelor (partajare). Se referă atât la centralizarea utilizării datelor cât
şi la posibilitatea de a dezvolta noi aplicaţii pornind de la datele deja existente în baza de date.
- Standardizare. Se pot impune uşor unele standarde legate de modul de stocare a datelor,
transferul datelor întere diferite aplicaţii sau între diferite baze de date.
- Aplicarea restricţiilor de securitate se referă la posibilitatea introducerii de verificări asupra
autorizării accesului la bazele de date pentru fiecare utilizator şi pentru fiecare tip de operaţie.
- Menţinerea integrităţii datelor. Consistenţa datelor şi protecţia datelor împotriva diverselor
accidente sau incidente tehnice ce pot avea loc.

Clasificarea SGBD-urilor
1) După sistemele de calcul pe care se implementează:
- SGBD pentru calculatoare mari se folosesc pentru baze de date foarte complexe şi foarte mari
(exemple: Oracle, DB2, IMS).
- SGBD pentru minicalculatoare se folosesc pentru baze de date complexe şi mari şi au cunoscut o
dezvoltare puternică în anii ‘80 (exemplu: Oracle).
- SGBD pentru microcalculatoare se folosesc pentru baze de date de complexitate şi de mărime mici şi
medii. Au o mare răspândire în momentul actual (exemple: FoxPro, Oracle, Acces).
Tendinţa actuală este ca SGBD-ul să fie compatibil pe cât mai multe sisteme de calcul sub cât mai
multe sisteme de operare.
2) După limbajul de programare utilizat:
- SGBD-ul cu limbaj gazdã este cel care are un limbaj de manipulare a datelor bazat pe unul de nivel
înalt (universal). Limbajul gazdă poate fi chiar un limbaj universal (Cobol, Pascal) sau o extensie
(adaptare) a unui astfel de limbaj.
- SGBD-ul cu limbaj propriu (autonom) este cel care are un limbaj de manipulare a datelor specific.
Acest limbaj de programare propriu este procedural şi are marele avantaj că permite implementarea
tuturor facilităţilor oferite de SGBD. În el se pot programa proceduri complexe şi interfeţe puternice ca
într-un limbaj universal, dar în plus se realizează un acces uşor şi optimizat la baza de date.
Dezavantajul este că un astfel de limbaj nu poate fi utilizat decât de specialiştii în informatică (exemplu
Visual FoxPro).
Astazi, majoritatea SGBD-urilor pentru microcalculatoare au implementat, parţial sau total, limbajul
SQL, care este şi standardizat internaţional.
3) După modelul logic de date implementat:
-SGBD ierarhice sunt cele care implementează modelul de date arborescent (ierarhic) şi au fost primele
care s-au utilizat pentru gestionarea bazelor de date.
- SGBD reţea sunt cele care implementează modelul de date reţea şi care au eliminat multe din limitele
celor ierarhice. Ele au o largă aplicabilitate pentru numeroase probleme din lumea reală, dar sunt dificil
de utilizat datorită complexităţii ridicate.
- SGBD relaţionale sunt cele care implementează modelul de date relaţional şi au aplicabilitate în
majoritatea domeniilor din lumea reală. Ele pot fi folosite de o gamă largă de utilizatori datorită
facilităţilor oferite (generatoare, limbaj neprocedural etc.)
(exemple: Oracle, Visual FoxPro, Paradox, Acces, Informix, Progress).
- SGBD orientate obiect sunt cele care implementează modelul de date orientat obiect. Ele se pretează
bine la problemele foarte mari, de complexitate ridicată, precum şi pentru tipurile noi de aplicaţii
(proiectarea asistată, multimedia, sisteme deschise)
(exemple: O2, Orion, Jasmin).
4) După localizarea bazei de date
- SGBD centralizate sunt cele care gestionează datele amplasate într-o singură bază de date centrală. La
acestea au acces toţi utilizatorii autorizaţi pentru a efectua diferite operaţii de manipulare a datelor.
Toate calculatoarele care nu sunt legate în reţea şi lucrează cu baze de date au instalat un SGBD
centralizat.
- SGBD distribuite sunt cele care gestionează datele amplasate pe mai multe calculatoare dintr-o reţea
tratîndu-le ca un tot unitar. Complexitatea acestor SGBD-uri este ridicată, având componente speciale
pentru realizarea conexiunilor şi tratarea distribuită a datelor (exemplu: Oracle, DB2, Informix).

Conceptele de baza in modelarea datelor

Conceptele de baza in modelarea datelor sunt concepte de entitati, instanţe de entitati si atribute.

O instanţa de entitate descrie un obiect specific, real sau abstract. Este util sa distingem intre
entitati si instanţe de entitati ( instanţele= obiecte iar entităţile = clase de obiecte care au aceleaşi
proprietati ).
Proprietatile unei instante se numesc atribute. Atributele si entitatile poseda un nume care le
indentifica.
O entitate are unul sau mai multe atribute ale caror valori identifica unic sau distinct o instanta
de entitate fata de alta.

Entitatea este conceptul de baza in modelarea datelor si ea poate fi o clasa de obiecte reale sau
abstracte. Ex: obiecte reale: angajat, departament, profesor, student, client, etc iar entitati care
reprezinta obiecte abstracte sunt: investitii, vanzare, angajare. Fiecare din obiectele abstracte are o
semnificatie reala dar ele nu sunt obiecte fizice.

Tehnicile de modelare a datelor nu disting intre entitatile reale si abstracte ci le reprezinta in


acelasi mod. Noi vom folosi DMT-Data Modeling Technique. Ea se bazeaza pe logica Database Design
Technique create de Robert Braun intr-un produs numit Jeans dezvoltat de DARACOM si Database
Design Group INC pentru Bank of America.

Atribute
Proprietatile unei entitati se numesc atributele sale.
Fiecare instanta de entitate are cate o valoare pentru fiecare din atributele sale.
Atributele se reprezinta intr-o diagrama model printr-o lista cu numele lor in cutia entitatii (este
dreptunghiulara).
Angajat 23
Nume
Penume
BI
Salariu

Tehnicile de modelare de date presupun ca doua atribute cu acelasi nume sunt acelasi atribut.
Astfel daca LOCUL apare ca un atribut in entitatea ANGAJAT software-ul de modelare de date trebuie
sa semnaleze atributul ca fiind redundant sau inconsistent sau chiar sa stearga una din aparitile
atributului.

Null-ul
Este important de stiut cand poate avea un atribut o valoare nula. Astfel o valoare nula este o
valoare necunoscuta sau inaplicabila ci nu o valoare numerica egala cu zero.
Un atribut null nu are o valoare cunoscuta la un moment dat dar ea exista conceptual in
modelul de date.
Domenii
Valorile unui atribut sunt luate dintr-un domeniu care determina multimea valida de valori
pentru unul sau mai multe atribute.
Anumite atribute pot avea toate acelasi domeniu. Ex: atributele data nasterii, data angajarii, data
intalnirii sunt toate luare din domeniul date iar pretul de vanzare si lisata de preturi sunt luate din
domeniu bani.
Domenile
1. determina operatiile premise asupra unui atribut
2. determina care atribute pot fi comparate sau folosite in combinatii
3. determina multimea de valori precum si marimea si formatele campurilor din baza de date
fizica.

Chei candidate

Instantele unei entitati se disting prin valorile cheilor candidate. O cheie canidata este o multime
de attribute ale caror valori identifica unic instantele unei entitati.
Pot exista mai multe chei candidate pentru o entitate. Ex: cheile considerate pt entitatea
ANGAJAT pot fi atributul, marca angajatului sau colectiv numeric angajat, data nasterii, locul
nasterii.Oricare din aceste chei candidate identifica unic insatantele entitatii angajate.
Termenul “cheie” se foloseste ca o prescurtare pentru cheie candidat.
O cheie candidata nu trebuie sa fie un unic atribut ( ex anterior). Se pot folosi mai multe atribute
ale caror valori formeaza impreuna identificatorul unic .
O cheie candidata costruita din mai mult de un atribut se numeste cheie compusa.
Identificarea cheilor candidate depinde de datele care se modeleaza.
Chei primare si chei alternate.
Una din cheile candidate ale unei entitati este selectata ca fiind cheie primara. In exemplul cu
entitatea ANGAJAT marca angajat ar putea fi cheie primara, celelalte sunt chei alternative.
Conceptele de baza ale cheilor candidate intr-un model de date sunt:
1. instantele unei entitati sunt distinse una de alta prin valorile cheilor candidate.
2. o cheie candidate este o multime de unul sau mai multe atribute ale caror valori impreuna
identifica in mod unic instantele unei entitati.
3. nici o parte a unei chei candidate nu poate fi ea insasi o cheie candidate.
4. daca doua insatante ale entitatiii are aceeasi valore a chei candidate atunci ele sunt aceeasi
instanta.
5. pentru o entitate pot exista mai multe chei candidate
6. una din cheile candidate este selectata ca fiind cheie pimara
7. celelalte chei sunt cunoscute ca fiind chei alternante
8. fiecare instanţa de entitate trebuie sa aibă o unitate valoare de cheie primara.
9. un atribut cheie primara nu poate avea niciodată valoare nula.
10. entitati multiple pot avea aceeaşi cheie primara .

Relatiile intr-un model de date sunt asociatii intre entitati si sunt reprezentate in mod uzual prin
liniile intre cutiile cu entitati.
Alte tehnici de modelare folosesc un simbol special ca un diamant pentru a reprezenta relatia.
O relatie de conectare : are un nume de verb , are o cardinalitate care arata cate instante ale unei entitati
sunt legate de cate instante ale celeilalte entitati.
In plus o relatie de conectare intre entitatile A si B poate avea o dependenta de existenta, ceea
ce inseamna ca entitatea B nu poate exista dc nu exista entitatea A.
Poate avea o relatie de dependenta de identificator ceea ce inseamna ca cheia primara a entitatii
B include cheia primara a entitatii A, dependenta de identificator implica dependenta de existenta.
Exista o diferenta majora intre relatiile de conectare unul la mai multi si mai multi la mai multi
deoarece ele nu au aceeasi semnificatie. Va reprezenta corect conectarea intre departamente si angajati
relatia determinate de catre regulile de afaceri din lumea reala care se modeleaza.
Cardinalitatea este o tehnica de modelare de date care foloseste linii pentr a prezenta relatii intr-
o diagrama de model si utilizeaza un simbol la sfarsitul liniei penru a reprezenta cardinalitatea relatiei.
Cardinalitatea oricarei conectari intre relatiile A si B este un adin urmatoarele:
• o instanta a lui A este conectata la mai multe instante ale lui B
• o instanta a lui A este conectata la cel putin o instanta a lui B
• o instanta a lui A este conectata la exact n instante ale luB
• o instanta a lui A este conectata intre n si m instante ale lui B.
Relatiil mai multi la mai multi sunt impartite in relatiile componente una la mai multi atunci cand
modelul este rafinat petru a prezenta mai multe detail.
Atribute cheie straine.
Dupa ce relatile mai multi la mai multi au fost impartite pot fi identificate atributele cheie straiana.
Def. Un atribut al unei entitati care se gaseste in cheia primara a unei alte entitati se numeste
atribut cheie straina.
Partajarea acelui atribut indica o relatie intre cele doua entitati.
Reguli
-regula de definire – cand doua entitati sunt asociate printr-o relatie de conectare atributele de
cheie primara a entitatii tata migreaza in entitatea fiu devenind acolo attribute cheie straina
- regula de validare – o instanta de entitate poate avea numai o singura valoare petru fiecare din
atributele sale de cheie straina.
Nume de roluri.
Cand exista mai mult de o relatie intr-o pereche de entitati atributelor cheie straina li se
asimileaza nume de roluri. Acestea permit distinctia intre diferite aparitii ale unui nume de atribut
cheie straina intr-o entitate.
Deoarece entitatile migreaza in diferite relatii ele au o semnificatie diferita.
Ex: Planificarea de zboruri. Fiecare oras poate sa fie oras de plecare pt mai multe curse aeriene
si de sosire pt alte curse aeriene. Fiecare cursa aeriana are exact un oras de sosire si unu de plecare .
Observam ca modelul prezinta 2 entitati: oras si cursa aeriana de 2 ori. Cheia primara a unui oras
migreaza in in cursa aeriana de doua ori, o data prin relatia decolare pentr si o data prin relatia
aterizare pentru un avion.
Pentru a distinge intre cele doua atributii ale aparitiei cheie straina cod oras in entatea cursa aeriana
unei aparitii îi dăm numele cod oras plecare iar celeilalte îi este dat numele de rol cod oras sosire.

Maparea şi modele relaţionale

1. OBIECTIVELE
Obiectivele originale ale modelului relaţional au fost simplitatea, independenţa datelor şi
tratarea riguroasă a derivabilităţii redundanţei şi consistenţei.

SIMPLITATEA: Modelul relaţional de bază este mai simplu decât sunt alte tehnici de modelare a
datelor deoarece el vede datele ca şi când acestea ar fi formatate în tabel. Coloanele tabelei reprezintă
proprietăţile tabelei iar liniile tabelei valorile acestei proprietăţi. Coloanele între tabele se formează prin
coloane care au acelaşi nume sau valori comparabile. Oamenilor li se pare natural să vadă datele în
tabele: contabilitatea generală, liste de preţuri etc.

INDEPENDENŢA DATELOR: Modelul relaţional oferă mai multă independenţă datelor decât o face
orice altă abordare de modelare de date care este legată de un sistem managerial a bazelor de date
comercial. Modelul relaţional izolează aplicaţiile program de creştere a resursei dee date şi de
schimbări de reprezentare a datelor astfel încât utilizatorii unei baze de date relaţionale nu trebuie să
ştie nimic despre caracteristicile bazei de date fizice. Consideraţiile despre bazele de date, logică şi
fizică, sunt separate. Modelul relaţional adresează numai caracteristici logice, cele fizice fiind lăsate pe
seama celui care implementează baza de date.

RIGOAREA: Modelul relaţional are o solidă fundamentare matematică care permite ca cererile să fie
adresate mai concret decât în modelele care nu au această fundamentare. Astfel de date includ: „ Ce
date sunt derivabile din alte date?Există inconsistenţă în aceste date?”

2. STRUCTURA RELAŢIONALĂ
Componentele structurale ale modelului relaţional sunt relaţii, atribute, domenii, tuple, chei şi
reprezentări. În mod formal o bază de date relaţională se defineşte ca:
-o colecţie finită de relaţii variind în timp definită în concordanţă cu o colecţie finită de domenii. O
relaţie de n mulţimi domenii D1, D2..Dn este o mulţime de elemente de forma (d1, d2..dn) fiecare di
este o valoare din domeniul Dj.

RELAŢII: O relaţie este o tabelă cu nume, cu linii şi coloane. Gradul relaţiei este dat de numărul său de
coloane.
ATRIBUTE: Fiecare coloană sau atribut ale unei relaţii are un nume. Atributele relaţii PROFESOR
sunt: NUME; PROFESOR; MARCA; FUNCŢIE etc.

DOMENII: valorile unui atribut aparţin unui domeniu.


TRUPLE: Elementele unei relaţii sunt liniile tabelei numite şi truple. Fiecare linie conţine şi valori,
câte una pentru fiecare atribut. Atunci când o relaţie reprezintă o entitate fiecare linie reprezintă o
instanţă de entitate.
Liniile sau tuplele pot să apară în orice ordine şi tabela va transmite aceeaşi semnificaţie.

CHEI Orice relaţie are o mulţime de chei candidate din care una se selectează pentru a fi cheia primară.
Cheile candidate, cheia primară şi cheile alternative au aceeaşi definiţie în modelul relaţional.
REPREZENTĂRI O convenţie comună pentru reprezentarea unei relaţii este de a-i da numele urmat de
numele atributelor sale cu cheia primară subliniată.
OPERATORI RELAŢIONARI Cei trei operatori relaţionali de bază sunt: PROJECT, SELECT, JOIN
multe limbaje oferă comenzi de nivel înalt folosind operatorii relaţionali de bază ca primitive.
PROJECT: Operatorul Project extrage atribute dintr-o relaţie formând o nouă relaţie:
R2=PROJECT(R1)(A1, A2...An)
SELECT Operatorul Select sau Restrict extrage linii dintr-o relaţie selectându-le pe acelea care satisfac
anumite criterii şi formează o nouă relaţie:
R2=SELECT(R1)(condiţii)
JOIN Operatorul Join extrage linii din două relaţii potrivindu-le după anumite criterii şi formând o
nouă relaţie cu acestea.
R3=JOIN (R1) (Condiţie)(R2)
NATURAL JOIN un caz special al apariţiei JOIN este cel numit NATURAL JOIN care potriveşte
relaţiile sale operând pe valorile egale. Este folosită pentru a combina relaţii pentru care atributele de
cheie primară ale uneia apar ca atribute de cheie străină ale celeilalte.

3. DEFINIREA SCHEMEI
Limbajul folosit pentru a descrie structura bazei de date într-un DBMS se numeşte adesea „data
definition languege”, adică DDL sau „ schema definition languege”. Limbajul de definire al schemei
pentru o bază de date relaţională trebuie să fie în stare să creeze, să mogofice şi să şteargă descrieri de
relaţii şi de atribute ale lor. Există mai multe limbaje de definire a schemei pentru baze de date
relaţional, dar noi vom folosi partea limbajului SQL, limbajul de date relaţionale, care este orientată
spre definirea schemei.
SQL permite, de asemenea, inserarea, modificarea şi ştergerea de tuple din relaţii şi oferă o
facilitate de control a datelor care:
- permite utilizatorilor să autorizeze alţi utilizatori pentru a accede date;
- specifică aserţiuni dinspre interogarea datelor;
- specifică tranzacţii care se declanşează de către anumite evenimente.
SQL este baza pentru multe limbaje comerciale de date relaţionale şi de asemenea pentru limbajul de
date relaţionale dezvoltate de către ANSI/X3112.

4. MAPĂRI DIN MODELE DE DATE LOGICE


Maparea dintr-un model de date logice pe un model relaţional este relativ directă atât timp cât
nu se întâlnesc relaţii de categorie.
5. ENTITĂŢI; ATRIBUTE ŞI RELAŢII DE CONECTARE
Regulile de bază pentru maparea entităţilor, atributelor şi a relaţiilor de conectare dintr-un
model de date logice pentru o bază de date relaţională sunt:
- o entitate este reprezentată de o relaţie;
- fiecare atribut al unei entităţi este reprezentat de un atribut de relaţii;
- o relaţie de conectare este reprezentată prin prezenţa unui atribut de cheie străină în relaţia fin.

Procesul de mapare: O secvenţă uzuală de evenimente în proiectarea bazei de bate este


construcţia la început a unui model de date logice şi apoi maparea într-o formă care poate fi
implementată de un DBMS.

6. COMENTARII FINALE
Dezvoltarea modelului relaţional a constituit o secvenţă de jaloane în cercetarea gestionării
datelor. Simplitatea modelului relaţional şi separarea vederilor atractiv pentru cel puţin 15 ani în primul
rând în comunicarea cercetărilor şi apoi pe piaţă.
CELE MAI BUNE CARACTERISTICI: ale modelului relaţional sunt:
- viziunea sa simplă, tabelară asupra datelor;
- mulţimea completă de operaţii de manipulare date;
- separarea modelului logic de implementare fizic.
DEZAVANTAJELE de bază ale modelului relaţional sunt:
- supraîncărcarea semantică într-o singură structură tabelară se reprezintă o varietate de construcţii de
modelare de date logice;
- demonetizarea prin caracterizarea DBMS-urilor comerciale ca „ relaţionale” chiar dacă ele utilizează
anumite restricţii ale modelului relaţional ca de ex integritatea referenţială;
- operatorii relaţionali care sunt la un nivel procedural de programator şi trebuie acoperiţi prin comenzi
de nivel înalt care sunt mai uşor de folosit de către nespectatori;
- implementarea ineficientă relativ la alte proiectări, pentru anumite tipuri de structuri de date.
Prima problemă poate fi ameliorată prin folosirea unei tehnici de modelare a datelor logice
modelul relaţional. A doua problemă nu ţine chiar de modelul relaţional, ci de folosirea de către
industria tehnologiei. La a treia problemă este mai mult de lucru, iar a patra se rezolvă prin
specializarea hard-ului şi soft-ului bazei de date DBMS-ulrilor relaţionale comerciale(MySQL)
continuă să aibă probleme de performanţă în mediile bazei de date mari şi complexe.

NORMALIZAREA

NORMALIZAREA este un proces dezvoltat în conjuncţie cu modelul de date relaţionale cu toate că ea


este aplicabilă modelării logice a datelor în general.

OBIECTIVELE

Normalizarea relaţională este un proces pentru identificarea grupărilor de atribute stabile cu o


mare interdependenţă şi afinitate.
Normalizarea încorporează principiile modelării semantice a datelor şi dă proiectării extensive
de baze de date logice. Normalizarea se bazează pe conceptele de dependenţe între atribute şi ea
impune un set de reguli guvernând structura semnificaţiei datelor. Aceste reguli bazate pe condiţii de
dependenţă ajută la stabilirea definiţiilor semnificaţiilor şi prezic reprezentările faptelor.
Cele mai importante 2 tipuri de dependenţe de atribute sunt pt scopurile noastre dependenţa
funcţională şi dependenţa multivalorică.
PRIMA FORMA NORMALĂ

Teoria relaţională foloseşte termenul de forme normale pentru a descrie extinderea la care au
grupate atributele în relaţii stabile.
Au fost propuse numeroase forme normale fiecare încercând să obţină o grupare de atribute cât
mai stabilă. Interesul nostru se restrânge la 6 forme normale. Primele 5 purtând nume de ordine şi
ultima formă normală boyc/COD.
O relaţie este în prima formă normală dacă şi numai dacă fiecare atribut poate conţine numai o
singură valoare.
O relaţie nu poate avea nici o linie care conţine un grup repetitiv de valori de atribute.
Pentru a normaliza o relaţie în prima formă normală este necesar să facem ca nici o linie să nu
conţină atribute care se repetă.
Cele 2 raţiuni principale pentru prima formă sunt că semantica unei relaţii este mai explicit
adică nici un atribut nu poate avea mai mult de o valoare într-o linie dată.
Pe de altă parte că nici un atribut nu poate avea valori multiple.

A DOUA FORMĂ NORMALĂ

O relaţie este în a doua formă normală dacă şi numai dacă ea este în prima formă normală şi
orice atribut cu cheie este dependent funcţional complet de cheia primară.

Bazele de date MYSQL

MySQL este un sistem de gestiune a bazelor de date relaționale, produs de compania suedeza MySQL
AB și distribuit sub Licența Publică Generală GNU. Este cel mai popular SGBD open-source la ora
actuală, fiind o componentă cheie a stivei LAMP (Linux, Apache, MySQL, PHP).

Programul SQLyog

SQLyog Community Edition este un program, de fapt o interfață grafică foarte atrăgătoare ce ne ajută
să lucrăm cât mai ușor posibil cu serverul bazei de date MySQL. Pentru a putea folosi SQLyog
Community Edition este nevoie de cunoștințe SQL, programul folosit în administrarea bazelor de date
de tip SQL. SQLyog Community Edition permite optimizarea bazei de date sau exportarea de date
din baza de date în diferite formate CSV, HTML și XML.

SQL (Structured Query Language - Limbaj Structurat de Interogare) este un limbaj de programare
specific pentru manipularea datelor în sistemele de manipulare a bazelor de date relaționale (RDBMS),
iar la origine este un limbaj bazat pe algebra relațională. Acesta are ca scop inserarea datelor,
interogații, actualizare și ștergere, modificarea și crearea schemelor, precum și controlul accesului la
date. A devenit un standard în domeniu (standardizat ANSI-ISO), fiind cel mai popular limbaj utilizat
pentru creearea, modificarea, regăsirea și manipularea datelor de către SGBD-urile (Sistemele de
Gestiune a Bazelor de Date) relaționale. Pe lângă versiunile standardizate ale limbajului, există o
mulțime de dialecte și variante, unele proprietare, fiind specifice anumitor SGBD-uri și de asemenea
conținând extensii pentru a suporta SBD-urile (Sistemele de Baze de Date) obiectuale (obiectual-
relaționale).
SQL permite atât accesul la conținutul bazelor de date, cât și la structura acestora.

Elementele limbajului SQL


Limbajul SQL este divizat în următoarele elemente:

• Clauze, care sunt componente ale instrucțiunilor și interogărilor.


• Expresii, al căror efect este producerea de valori scalare sau tabele.
• Predicates, pot specifica condiții care sunt evaluate de SQL conform logicii ternare sau logicii
booleene, în scopul limitării efectelor instrucțiunilor, sau pentru a influența cursul programului.
• Interogările, au ca scop regăsirea datelor după criterii specifice.
• Instrucțiunile, pot avea un efect persistent asupra datelor sau structurii datelor, sau pot controla
tranzacțiile, conexiunile sau cursul programului. În general, instrucțiunile SQL se termină cu
caracterul punct-virgulă (";"), deși acest lucru nu este obligatoriu în toate platformele SQL. Spațiile
albe suplimentare sunt ignorate, dar ele pot fi folosite pentru lizibilitatea codului SQL.

Tipuri de date în SQL


Oricărei coloane (sau câmp) dintr-un tabel SQL îi este asignat un tip de dată, la fel ca în toate celelalte
limbaje de programare. Tipurile de date sunt următoarele:

• CHARACTER (sau CHAR) - șir de caractere


• INTEGER (sau SMALLINT) - număr întreg
• FLOAT, REAL sau DOUBLE PRECISION - număr real
• NUMERIC(precision, scale) sau DECIMAL(precision, scale) - număr zecimal , unde
“precision” înseamnă numărul de cifre din partea întreagă, “scale” înseamnă numărul de zecimale.
• DATE - data zilei.
• TIME - ora.
Funcția sistem NOW întoarce data și ora curentă.
Interogări
Cea mai des utilizată instrucțiune în SQL este instrucțiunea SELECT.

SELECT [ALL | DISTINCT] coloana1 [,coloana2]


[INTO fișier]
FROM tabel1 [,tabel2]
[WHERE condiție] [ AND|OR condiție...]
[GROUP BY listă-coloane]
[HAVING condiții]
[ORDER BY listă-coloane [ASC | DESC] ]
• Clauza INTO este utilizată pentru a transfera rezultatul interogării într-o nouă tabelă; valabil
în Microsoft Access, dar nu în toate platformele SQL.
• Clauza WHERE este utilizată pentru a specifica condiții trebuie să îndeplinească coloanele din
care se face selecția. Această condiție este o expresie logică obținută prin alicarea operatorilor
conjuncție (AND) și disjuncție (OR) asupra unor expresii logice elementare obținute cu ajutorul
operatorilor: = (egal), <>(diferit), < (mai mic decât), <= (mai mic sau egal decât), > (mai mare
decât), >= (mai mare sau egal decât), LIKE (permite selectarea potrivirilor parțiale cu ajutorul
operatorului %; de exemplu: select city, state from towntable where state LIKE 'north%');
• Clauza GROUP BY permite gruparea coloanelor multiple în scopul prelucrării acestora
prin funcțiile agregate: AVG - media aritmetică; COUNT - numărul articolelor; MAX - maximul;
MIN - minimul; SUM - suma.
Exemplu: Maximul populației tuturor orașelor americane din statul Indiana:

SELECT MAX(population) FROM citylist WHERE state = 'Indiana';

• Clauza HAVING Spre deosebire de clauza WHERE, acționează asupra rândurilor rezultate din
clauza GROUP BY , aplicându-le condiția, spre a fi ulterior prelucrare prin funcțiile agregate.
• Clauza ORDER BY Ordonează rezultatele interogării în ordine alfabetică după unul sau mai
multe câmpuri. ASC înseamnă în ordine crescătoare, iar DESC - ordine descrescătoare. Ordinea
implicită este crescătoare.
• Alte cuvinte cheie: ALL - Toate articolele; DISTINCT - Numai articolele unice, fără
duplicate.
Exemple: 1. Selectarea tuturor cărților din tabela Book, având prețul mai mare decât 100.00, în ordinea
crescătoare a titlurilor:

SELECT * FROM Book WHERE price>100.00 ORDER BY title;

2. Selectarea tuturor titlurilor cărților din tabelele Book și a autorilor cărților citiți din tabela Authors:

SELECT Book.title, Authors.name FROM Book INNER JOIN Authors ON Book.author = Authors.id
GROUP BY Book.title;

Logica ternară (3VL)


Ideea a fost introdusă în SQL pentru a asigna valoarea Null înregistrărilor vide și informațiilor care
lipsesc dintr-un câmp.
Manipularea datelor
Limbajul de manipulare a datelor (DML) este un subset al SQL utilizat pentru a adăuga, actualiza sau
șterge date.
Instrucțiunile limbajului de manipulare a datelor

INSERT - inserează un articol într-o tabelă:

INSERT INTO tabel (câmp1, câmp2, ...) VALUES (valoare1, valoare2, ...);

• UPDATE - actualizează un set de articole:

UPDATE tabel SET câmp = valoare [WHERE condiție];

• DELETE - șterge un set de articole:

DELETE FROM tabel [WHERE condiție];

Tranzacții
Tranzacțiile sunt utilizate pentru a controla în ce condiții se desfășoară o succesiune a instrucțiunilor de
manipulare a datelor.
Instrucțiuni:

• START TRANSACTION (sau BEGIN WORK, BEGIN TRANSACTION, în funcție de


dialectul SQL) Început de tranzacție.
• SAVE TRANSACTION (sau SAVEPOINT) salvează starea bazei într-un punct al transacției
• COMMIT Operează toate operațiile tranzacției ca fiind permanente.
• ROLLBACK Anulează toate operațiile tranzacției începând cu ultimul COMMIT.
Instrucțiunile COMMIT și ROLLBACK termină tranzacția curentă și deblochează datele.
Exemple:
1.

CREATE TABLE tbl_1(id int);


INSERT INTO tbl_1(id) VALUES(1);
INSERT INTO tbl_1(id) VALUES(2);
COMMIT;
UPDATE tbl_1 SET id=200 WHERE id=1;
SAVEPOINT id_1upd;
UPDATE tbl_1 SET id=1000 WHERE id=2;
ROLLBACK to id_1upd;
SELECT id from tbl_1;

2.

START TRANSACTION;
UPDATE Account SET amount=amount-200 WHERE account_number=1234;
UPDATE Account SET amount=amount+200 WHERE account_number=2345;
IF ERRORS=0 COMMIT;
IF ERRORS<>0 ROLLBACK;

Limbajul de definire a datelor


Limbajul de definire a datelor (DDL) gestionează structura datelor și indexului.

Instrucțiuni
CREATE TABLE creează un tabel în mod linie de comandă:

CREATE TABLE tabel(


câmp1 tip1,
câmp2 tip2,
...
PRIMARY KEY (index1, index2, ...)
);

Exemplu:

CREATE TABLE My_table(


my_field1 INT,
my_field2 VARCHAR(50),
my_field3 DATE NOT NULL,
PRIMARY KEY (my_field1, my_field2)
);

• ALTER TABLE modifică structura unui tabel existent prin


redenumirea/adăugarea/ștergerea/schimbarea structurii unei coloane sau index:

Redenumirea unui tabel


ALTER TABLE tabel RENAME TO nume_nou_tabel;

Adăugarea de câmpuri noi

ALTER TABLE table_name ADD ( câmp1 def1, col2 def2, ... );

Exemplu:

ALTER TABLE supplier ADD (supplier_name varchar2(50), city varchar2(45));

Modificarea structurii unui câmp

ALTER TABLE table_name MODIFY (câmp1 tip1, câmp2 tip2, ... );

Exemplu:

ALTER TABLE supplier MODIFY ( supplier_name varchar2(100) not null, city varchar2(75));

Ștergerea unui câmp

ALTER TABLE tabel DROP COLUMN câmp;

Exemplu:

ALTER TABLE supplier DROP COLUMN supplier_name;

Redenumirea unui câmp

ALTER TABLE tabel RENAME COLUMN nume_vechi TO nume_nou;

Exemplu:

ALTER TABLE supplier RENAME COLUMN supplier_name to sname;

• TRUNCATE TABLE – Șterge toate articolele unui tabel:

TRUNCATE TABLE tabel;


• DROP TABLE – Șterge tabelul:

DROP TABLE tabel;

Drepturi ale utilizatorilor SQL în rețea


Limbajul de control al datelor (DCL) autorizează utilizatorii și grupurile care lucrează cu o anumită
bază de date.
Instrucțiuni

• GRANT acordă unul sau mai multe drepturi unui utilizator sau grup.
• REVOKE (operația inversă) elimină unul sau mai multe drepturi unui utilizator sau grup.
Exemple: 1.

GRANT SELECT, UPDATE ON My_table TO some_user, another_user;

2.

REVOKE SELECT, UPDATE ON My_table FROM some_user, another_user;

EXEMPLE ÎN SQL

Să se creeze o tabela cu numele pet avand urmatoarele coloane


Name varchat 20
Own varchat 20
Species varchat 20
Sex car 1
Birth dag
Death
Sa se introduca valorie
1. Fluffy harold cat f 02.041993
2. Buffy carol dog f 13,051989
3. Fun benny dog m 27,08,1980
4. Slim benny snake m 29,06,1996
5. Bowser diane dog m 13,08,1979
6. Celtic gwen bird f 09,11,1998
7. Pufbal diane hamster f 30,03,1999

Observații pentru rezolvare:


Comanda (select * from) selecteaza toate datele din tabela
Pentru ca sa calculam varsta folosim urmatoarea comanda
Select name, year(death) - year(birth) as age from pet where death is not null
Dacă alegem mai mult date din tabel cu caracteristici diferite folosim cuvantul cheie OR
Pentru a alege un nume din tabel care incepe cu o anumita litera folosim comanda where name like
b%

Sa se creeze o tabela care sa contina: pacienti 1


- Numar curent
- Nume
- Prenume
- Diagnostic
- Data consultatiei
Sa se populeze tabela cu informatii si sa se realizeze o comanda select prin care sa se afiseze tori
pacientii care au porgramarea consultatiei maine.

Exemple de subinterogari

Exemplul 1. Subinterogarea determină toţi clienţii care sunt din acelaşi oraş cu Albu:
SELECT *
FROM clienţi
WHERE oraş=(SELECT oraş
FROM client
WHERE NUME=‟Albu‟)
Exemplul 2. Determinaţi toţi clienţii din oraşul celui cu comanda 1015:
SELECT *
FROM clienţi
WHERE oraş=(SELECT oraş
FROM companie
WHERE NR_COM=1015)
Exemplul 3. Următoarea subinterogare furnizează fabricile care au termenul de livrare
mai mic decât termenul de livrearea a lui DAEWO.
SELECT *
FROM fabrici
WHERE termen_liv <(SELECT termen_liv
FROM fabrici
WHERE ID_FABRICA=”DAEWO”)

Sa se creeze o tabela care sa contina numar curent, nume, prenume, diagnostic, data consutatiei
(pacienti 1)-5 randuri
Sa se populeze tabela cu informatii si sa se realizeze ocomanda select prin care sa se afiseze toti
pacienti care au programarea consultatiei maine
Comanda rezolvare > SELECT * FROM pacienti1 WHERE dataconsultatiei= (SELECT
dataconsultatiei FROM pacienti1 WHERE dataconsultatiei=CURDATE()+1)

Se cosidera 4 tabele for angajatii, id, nume salar, data angajarii, data concediereii, numar copiii.
Tabela salarii cu id, numar zile, brut, deducere copii, impozit, si net;
Deducerii brut min, brut max, deducere
Deducere copiii, numar copii, deducere copii,
Deducere;
- 1 copil – 100
- 2 copii 170
- 3 copii 220
- 4 copii 260
Venit brut:
- 0 -300 200deducere
- 301- 600 – 150 deducere
- 601-800 – 100 deducere
- > 800 – 0
Formula impozit = (venit brut – deducere – deducere copii) * 0.16
Venit net = venit net – impozit

S-ar putea să vă placă și