Nivele de abstractizare
1. Fizic (al inginerului de sistem):
Descrie modul de stocare si structurare a datelor pe suportul de memorare:
cilindru, pista, sector, bloc, octet, bit (ex: client).
2. Logic (al programatorului de aplicatie):
Descrie datele stocate si relatiile dintre ele
Type client=record
nume: string;
strada: string;
oras: integer;
End;
1. Virtual (al administratorului bazei de date):
Programele de aplicatie ascund detalii referitoare la tipul datelor, in scopul
securizarii (ex: salariu).
Modele de date- SGBD
Modelul = o colectie de instrumente pentru descrierea datelor, a relatiilor dintre date, a
semanticii datelor si a restrictiilor.
Clasificarea modelelor
1. Ierarhice
2. De retea
3. Relationale
4. Orientate obiect
5. Altele (relationale orientate obiect, deductive, distribuite, multibaze, active,
multimedia, online)
Comenzile SGBD se grupeaza in 3 categorii de limbaje:
1. DDL=Data Definition Language
Specifica notatii pentru definirea schemei BD
Compilatorul DDL genereaza un set de tabele stocate in Dictionatul de
date care contine metadate(def si caracteristici)
2. DML=Data Manipulation Language – SQL - permite
Parcurgerea structurilor si a legaturilor existente;
Accesul la inregistrari prin adresa sau prin continutul acestora si
actualizarea lor;
Definirea tranzactiilor si a conditiilor de eroare.
3. DSDL=Data Storage Description Language – permite
Alocarea spatiilor de memorie;
Crearea indecsilor asociati cheilor;
Definirea si izolarea datelor confidentiale.
Access
La baza SGBD Access se afla (Gherasim)
Modelul relational al datelor
Modelul orientat pe obiecte (cu evenimente si proprietati)
Permite definirea, consultarea si actualizarea BD, dar si partajarea datelor intre mai
multi utilizatori (mai mult de 20 de utilizatori pot lucra simultan pe o BD)
Permite interogarea cu 3 limbaje: QBE(Query by Exemples), SQL (Structured Query
Language) si VBA (Visual Basic for Applications)
Este compatibil cu tehnologia ActiveX (app client/server).
O BD MsAccess este o colectie de obiecte:
1. Tabele
2. Formulare
3. Interogari
4. Rapoarte
5. Pagini web
6. Macroinstructiuni
7. Module
Tabele=relatii-entitati
Crearea unei BD incepe cu definirea tabelelor, care sunt utilizate pentru stocarea
datelor.
Pentru eliminarea redundantei si fluidizarea fluxului datelor in BD intr-o tabela se
inscriu date referitoare la o singura entitate (ex: client), prin tehnica normalizarii
datelor.
Coloana = atribut = camp – caracteristici ale entitatii. Fiecarui ii coespund mai multe
proprietati, precum Size (text, no, autono), Format (currency, data), InputMask
(password, date), Validation rule (code), required (not NULL), Indexed (cheia).
Randul = tuplu = inregistrare – valorile caracteristicilor entitatii
Fiecare tabela trebuie sa contina macar un index ce reprezinta cheia primara sau
secundara. Cheia primara poate fi un atribut care identifica in mod unic tuplul,
precum numele sau CNP-ul unui client, dar se prefera sistemul de incrementare
automata.
Indexul cheie primara – prevede cate un pointer unic spre fiecare inregistrare si
reprezinta ordinea de afisare prestabilita.
Normalizarea
Proiectarea unei baze de date prevede construirea unei structuri iniţiale (a câmpurilor
componente şi a caracteristicilor acestora), urmată de ameliorarea acestei structuri
până la obţinerea unei variante optime, normalizate.
Normalizarea unei baze de date reprezintă procesul de transformare succesivă a unei
baze de date relaţionale în vederea aducerii sale la o formă standard optimizată.
Procesul de aducere la o formă normală presupune parcurgerea următoarelor
etape:
aducerea bazei de date la prima formă normală (FN I) – impune eliminarea câmpurilor
compuse şi a celor repetitive;
aducerea bazei de date la a doua formă normală (FN II) – se caracterizează prin lipsa
dependenţelor funcţionale parţiale, deci câmpurile tabelei depind doar de cheia
primară a acesteia;
aducerea bazei de date la a treia formă normală (FN III) – această formă nu conţine
dependenţe funcţionale tranzitive;
pentru formele IV şi V se vor elimina dependenţele multivaloare suplimentare şi
dependenţele joncţiune
Relatii dintre tabele
Relaţiile dintre tabele se pot clasifica în 4 tipuri:
1. unu la unu – fiecare înregistrare din tabela părinte corespunde unei înregistrări din
tabela copil;
2. unu la mai mulţi – unei înregistrări din tabela părinte îi corespund mai multe
înregistrări din tabela copil;
3. mai mulţi la unu – unei înregistrări din tabela copil îi corespund mai multe înregistrări
din tabela părinte;
4. mai mulţi la mai mulţi – unei înregistrări din tabela părinte îi corespund mai multe
înregistrări din tabela copil şi invers.
Indexul cheie primara – prevede cate un pointer unic spre fiecare inregistrare si
reprezinta ordinea de afisare prestabilita.
Integritatea referentiala
Asigura validitatea inregistrarilor
A. In fereastra Edit Relationship se aleg campurile de legatura (cheia primara din tabelul
parinte si cheia externa din tabelul copil),
B. se bifeaza Enforce Referential Integrity si
C. Cascade Update Related Fields (pentru reactualizarea in cascada a campurilor
legate),
D. Cascade Delete Related Records (pentru stergerea in cascada a inregistrarilor
legate).
Avantajele relationarii
EX: O companie a greşit numele unui produs în toate comenzile completate pentru
clienţi. În modul birocratic, trebuie parcurse toate înregistrările şi corectate manual.
Însă, folosind relaţiile, în loc să stocăm în tabela care conţine toate informaţiile despre
comenzile clienţilor “Comandă_cl” textul explicit al numelui produsului, stocăm doar
un cod al acestuia, iar în baza codului, regăsim numele acestuia, în tabela “relaţionată”
“Produse” (prin intermediul codului). Folosind această abordare, schimbăm doar
numele produsului în acea tabela “Produse”, iar interogarea noastră va afişa numele
corect la toate înregistrările, cu o singură modificare
- [selectează nrfact, idprod, cant din tabele ANTET şi ARTICOLE între care exită o
legătură de tip “unu la unu” ( cel mai restrictive tip de legătură) cu condiţia 20 <=
cant <= 60 ]
UPDATE - interogare de actualizare a informaţiei
Formulare
Formularele sunt concepute pentru operatiile de adaugare a datelor in BD, pentru
actualizarea sau stergerea acestora si pentru vizualizarea informatiilor din BD daca
unui anumit control (buton, caseta combo, etc) i se asociaza o interogare de selectie la
un anumit eveniment
Contin doua categorii de informatii:
1. De structura (marimea formularului, asezarea atributelor si controalelor);
2. Datele – introduse si accesate de utilizator din BD.
Obiectele unui formular pot fi asociate unor campuri din tabele (pentru
vizualizare date) sau obiecte care pot declansa anumite actiuni (introducere date,
actualizare, stergere) la aparitia unui anumit eveniment.
Macro si Module
Macrocomenzi = Pot fi atasate unui formular, raport sau control pentru automatizarea
unor operatii de rutina.
Module = Se creeaza in limbajul Visual Basic for Application si sunt destinate
extinderii functiunilor specifice unei BD.
Integritatea si securitatea BD
Datele stocate trebuie sa respecte fidel realitatea din intreprindere, iar programele de
gestiune a BD sa asigure o stare coerenta a BD, conform cu:
Regulile de integritate semantica (structurale: cantitatea in stoc nu poate fi negativa)
Sincronizarea accesului concurent la date
Siguranta in functionare (in urma unor defectiuni fizice BD trebuie sa se mentina
coerenta)
Securitatea de utilizare (rolurile utilizatorilor si drepturile de acces).
Restrictiile BD
Statice – respectate permanent de date
Ale cheii primare (Ex: valori unice si nenule)
Integritate referentiala (o realizare a cheii externe se va regasi in multimea
realizarilor cheii primare, sau va fi NULL)
Restrictii asupra valorilor/formatului unui sau mai multor campuri (Ex: Data
cerere<=Data inchiriere)
Asupra valorilor obtinute prin operartii de sintetizare - functii matematice,
statistice, financiare, text, etc. (Ex. Avg(varsta)<45ani)
Dinamice – constrangeri ce privesc trecerea de la o stare la alta a unei inregistrari (in
urma modificarii)
Ex: varsta unei persoane nu poate scadea, salariul unui angajat nu poate fi diminuat.
Tranzactia
Set de operatii de actualizare, care fie se executa toate, fie nici una; nu pot fi executate
partial.
Poate fi salvata (commited) sau derulata inapoi (rollback) BD ramane consistenta.
Tranzactii concurente – jurnal gestionat de SGBD care contine informatii despre
inceputul, sfarsitul sau anularea unei tranzactii + back-up (copii de siguranta)
Sincronizarea accesului concurrent la BD
Sisteme cu control “optimist” – toate modificarile de date sunt transferate in variabile
locale si la sfarsit se verifica daca se pot salva;
Sisteme cu control “pesimist”- isi asigura toate precautiile de la inceput, a.i. executiile
neserializabile sunt imposibile; accesul celorlalte tranzactii va fi temporar blocat prin
excludere mutuala cu functiile LOCK(x) si UNLOCK(x)
Sisteme BD
1. Sisteme Client/Servet
2. Baze de date distribuite
3. Baze de date On-line
4. Baze de date active
5. Multibaze (OLAP si DataMining)
6. Baze de date multimedia
BD multidimensionale
Un ansamblu de date constituite prin extractie sau transformare de date din BDO sau
B de fisiere, interne sau externe, variind in timp, organizate multidimensional, si
explorate folosind interogari conventionale sau tehnici specifice de analiza simpla
(Olap) sau analiza avansata (DataMining)
BD operationale sunt organizate pe domenii de activitate (marketing, gestiunea
resurselor umane, financiar-contabil, gestiune vanzari, etc.)
Scop: stocarea datelor despre tranzactiile unui anumit domeniu de gestiune
Cerinţe:
1. Să se determine modelele conceptual şi logic ale bazei de date.
2. Să se realizeze modelul fizic al bazei de date (tabelele şi relaţiile dintre acestea în Access).
I. Interogari de selectie
12. Să se afişeze cantitatea totală comandată din fiecare produs de către fiecare client.
Numele produselor vor fi ordonate pe coloane iar ale clienţilor pe linii.
13. Să se afişeze câte comenzi s-au primit pentru fiecare produs în fiecare lună a anului
2002. Lunile anului se vor ordona pe coloane iar produsele pe linii.
IV. Interogări tip acţiune
14. Să se realizeze o interogare de tip Make Table Query pentru a realiza o tabelă intitulată
Clienti2 care să conţină codurile fiscale, denumirile şi adresele clienţilor care nu sunt
din Bucureşti.
15. Să se realizeze o interogare de tip Make Table Query pentru a realiza o tabelă
intitulată Cantităţi care să conţină denumirile şi cantităţile totale comandate din fiecare
produs.
16. Să se realizeze o interogare de tip Update Query pentru a majora cu 5 zile termenele
pentru toate comenzile din luna noiembrie 2002.
17. Să se realizeze o interogare de tip Update Query pentru a diminua cu 10% stocurile
initiale pentru toate produsele.
18. Să se realizeze o interogare de tip Delete Query pentru a şterge din baza de date toate
comenzile din ultimele 100 de zile.
19. Să se realizeze o interogare de tip Append Query pentru a adăuga în tabela Clienti2 şi
clienţii din Bucureşti.
ORDER BY CLIENTI.NumeC;
ORDER BY [DataComanda]+[Termen];
HAVING (((COMENZI.DataComanda)>#1/1/2003#))
ORDER BY CLIENTI.NumeC;
GROUP BY PRODUSE.NumeProd;
WHERE (((COMENZI.DataComanda)>#1/1/2003#))
GROUP BY CLIENTI.NumeC
ORDER BY CLIENTI.NumeC;
11. SELECT CLIENTI.NumeC, Sum([Cantitate]*[PretUnitar]) AS VALTOT,
Sum([Cantitate]*[PretUnitar]*19/100) AS TVA
SELECT CLIENTI.NumeC
GROUP BY CLIENTI.NumeC
PIVOT PRODUSE.NumeProd;
SELECT PRODUSE.NumeProd
WHERE (((COMENZI.DataComanda)>#1/1/2008#))
GROUP BY PRODUSE.NumeProd
PIVOT Month([DataComanda]);
SAU
SELECT PRODUSE.NumeProd
WHERE (([Comenzi].[DataComanda]>#1/1/2008#))
GROUP BY PRODUSE.NumeProd
PIVOT Mid([Comenzi.DataComanda],4,2);
14. SELECT CLIENTI.CodFiscal, CLIENTI.NumeC, CLIENTI.AdresaC INTO CLIENTI2
GROUP BY PRODUSE.NumeProd;
SAU
WHERE (((CInt(Mid([COMENZI].[DataComanda],4,2)))=1));
SAU
WHERE (((CLIENTI.AdresaC)="Bucharest"));
WHERE (((Year([DataFactura]))=2008));
GROUP BY CONTINUT_COMANDA.NrComanda,
(IIf([PretUnitar]/10000<1,'de_recalculat',Int([PretUnitar]/10000)));
Formulare Access
1. Să se realizeze un raport pentru a afişa lista cu informaţiile privitoare la clienţi. Clienţii vor fi
ordonaţi alfabetic. Se va adăuga raportului o coloană intitulată Numar curent în care se vor numerota
liniile raportului.
Comenzi macro
1. Se doreşte realizarea unui meniu pentru a facilita utilizatorilor accesarea rapoartelor proiectate la
cerinţele anterioare.
Lista Clienti, Lista Cantitati comandate, Tipareste Comanda, Iesire din Program
2. Să se realizeze o comandă macro intitulată AutoKeys pentru a defini următoarele combinaţii de la
tastatură:
Cerinte suplimentare
Interogari