Baza de Date
-
Upload
darieandreeag -
Category
Documents
-
view
212 -
download
0
description
Transcript of Baza de Date
Baza de date (BD/DB)
Reprezintă o colecție de date organizate pentru a facilita căutarea și regăsirea rapidă cu ajutorul calculatorului.
Este un ansamblu structurat de date, înregistrat pe suporturi accesibile calculatorului pentru a satisface simultan cerințele mai multor utilizatori într-un mod selectiv și în timp util.
Este structurată astfel încât să faciliteze diverse operații cu datele:
– stocarea, introducerea (insert)
– regăsirea, interogarea după diverse criterii (query)
– modificarea, actualizarea (update)
– ștergerea (delete)
Avantaje ale bazelor de date
Controlul centralizat al datelor
Viteză mare de regăsire și actualizare a informațiilor
Sunt compacte comparativ cu documentele scrise
Flexibilitate în ceea ce privește modificarea structurii
Redundanță scăzută – partajarea datelor
Menținerea integrității datelor – securitate, politici de acces
Independența datelor de suportul hardware
Clasificarea bazelor de date
După modelul de date
– baze de date relaționale
– baze de date obiectuale
– baze de date obiect-relațional
– baze de date ierarhice
– baze de date rețea
După numărul de utilizatori
– baze de date monoutilizator
– baze de date multiutilizator
După numărul de sisteme de calcul unde este stocată
– baze de date centralizate
– baze de date distribuite
Baza de date relaționale
Se bazează pe noțiunea de relație matematică
Are o reprezentare ușor de înțeles, sub forma unui tabel bidimensional ce conține informații despre o mulțime de entități
– fiecare linie din tabel reprezintă o entitate
– fiecare coloană reprezintă un atribut al entității
Relațiile între entități se transpun în asocieri între tabele prin intermediul egalităților unor atribute comune.
Pentru interacțiunea cu bazele de date relaționale se utilizează un limbaj de manipulare a datelor (LMD):
– de ex. SQL (Structured Query Language).
Baza de date – înregistrări, câmpuri
O bază de date reprezintă o serie de înregistrări
Înregistrare
– o entitate specifică, componentă elementară a unei baze de date
– cuprinde câmpuri sau elemente de date
– pot conține informații numerice, text sau reprezentări grafice
Câmpuri
– descriu principalele atribute ale unei entități
Organizarea datelor într-o bază de date
Structura bazei de date poate fi reprezentată pe niveluri
tipul datelor
legături între date
restricții aplicate datelor
Sistem de gestiune a bazelor de date (SGBD/DBMS)
Este un ansmablu de programe care permit utilizatorului să interacționeze cu o bază de date.
Diverși utilizatori sau categorii de utilizatori au asociate drepturi de acces specifice:
– dreptul de a efectua doar operațiile specifice activității sale și doar pe acea porțiune a bazei de date care ste necesară pentru aceasta
Exemple:
– Oracle, MySQL, Microsoft SQL, Microsoft Access, Visual FoxPro, SQLite, etc.
Funcțiile unui SGBD
Descrierea datelor
Utilizarea datelor
Integritatea datelor
Confidențialitatea datelor
Accesul concurent la date
Siguranța în funcționare
Limbajul SQLEste unul din cele mai puternice limbaje structurate pentru interogarea bazelor de date relaționale.
Face parte din categoria limbajelor de aplicații
Este un limbaj neprocedural și declarativ: –descrie ce date vrea să obțină
–nu stabilește modalitățile prin care se ajunge la datele respective
Instrucțiunile SQL
Instrucțiuni de definire a datelor
–permit descrierea structurii bazei de date
Instrucțiuni de manipulare a datelor
–adăugare, ștergere, modificare date
Instrucțiuni de selecție a datelor
–permit consultarea bazei de date
Instrucțiuni de procesare a datelor
Instrucțiuni de control al cursorului
Instrucțiuni privind controlul accesului la date
Instrucțiuni de definire a datelor
Creare bază de date
CREATE DATABASE nume_db
Ștergere bază de date
DROP DATABASE nume_db
Creare tabel
CREATE TABLE nume_tabel
(camp1 tip_data1 [NOT NULL],
camp2 tip_data2 [NOT NULL], ...)
Modificare tabel
ALTER TABLE nume_tabel ADD nume_camp tip_data
Ștergere tabel
DROP TABLE nume_tabel
Instrucțiuni de selecție a datelor (1)
Cereri de interogare simplă
SELECT [domeniu] lista_selectieFROM nume_tabel1, nume_tabel2, …[WHERE criteriu_selectie][ORDER BY campuri_criteriu [ASC|DESC]]
Cererideinterogarecomplexe
–cereri agregat (grupări)
–asocieri (JOIN)
–combinările (UNION)
Instrucțiuni de selecție a datelor (2)
Agregări
–permit gruparea înregistrărilor care au câmpuri cu aceeași valoare
–pot folosi una din următoarele funcții de grup: COUNT, SUM, AVG, MIN, MAX
SELECT [domeniu] functie_agregat(numa_camp) AS alias, [lista_selectie]FROM nume_tabel1, nume_tabel2, …GROUP BY camp_de_grupare[HAVING criteriu_de_grupare][ORDER BY campuri_criteriu [ASC|DESC]]
Instrucțiuni de selecție a datelor (3)
Asocierile(JOIN)
–date din tabele diferite pot fi grupate prin producerea tuturor combinațiilor posibile
–există mai multe categorii de joncțiuni
•CROSS (încrucișată) –rar folosită
•Echivalentă (cea mai folosită)
–folosește clauza WHERE asociată cu egalitatea dorită
•Neechivalentă (rar folosită)
–Folosește clauza WHERE cu orice alt operator de comparare diferit de cel de egalitate
Instrucțiuni de selecție a datelor (4)
Asocierile(JOIN)
–după modul de asociere a înregistrărilor din tabele, joncțiunile pot fi:
•interne INNER JOIN
•externe
–de stânga LEFT OUTER JOIN
–de dreapta RIGHT OUTER JOIN
Instrucțiuni de selecție a datelor (5)
Combinările(UNION)
–permit afișarea rezultatelor mai multor interogări SELECT în același timp, cu o serie de restricții:
•numărul de câmpuri din fiecare instrucțiune SELECT trebuie să fie același
•secvența de nume din fiecare listă decâmpuri trebuie să corespundă
•se poate utiliza doar o singură dată clauza ORDER BY
Instrucțiuni pentru manipularea datelor
Adăugareadeînregistrări
INSERT INTO nume_tabel (camp1, camp2, …) VALUES (valoare1, valoare2, ...)
Ștergerea de înregistrări
DELETE FROM nume_tabel[WHERE criteriu_stergere]
Modificări de înregistrări
UPDATE nume_tabel SET nume_camp1=valoare_1[, nume_camp2=valoare2, …] [WHERE criteriu_actualizare]
Curs 8
Cuprins
Java și bazele de date
accesul la baze de date folosind JDBCTM
–caracteristici
–arhitectură
–API
JDBC API
Este destinat accesului la orice tip de date tabelare, în special la acele date stocate într-o bază de date relațională.
Ajută la realizarea de aplicații Java care gestionează următoarele activități:
–conectarea la o sursă de date (de ex. o bază de date)
–transmiterea către baza de date a unor instrucțiuni SQL pentru interogări, actualizări, ștergeri de date, etc.
–recuperarea și procesarea rezultatelor obținute de la baza de date
Exemplu de utilizare JDBC API
public void connectToAndQueryDatabase(String username, String password) {
Connection con = DriverManager.getConnection(
"jdbc:myDriver:myDatabase",
username, password);
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table1");
while (rs.next()) {
int x = rs.getInt("a");
String s = rs.getString("b");
float f = rs.getFloat("c");
}
}
Componente JDBC
JDBC API
–parte a platformei Java ce include pachetele java.sqlși javax.sql
JDBC DriverManager
–o clasă care definește obiectele care pot conecta aplicațiile Java la un driver JDBC
–deși este destul de simplu, reprezintă coloana vertebrală a arhitectruii JDBC
JDBC Test Suite
–ajută la verificarea funcționării programelor
JDBC-ODBC Bridge
–baze de date centralizate
–baze de date distribuite
Arhitectura JDBC
JDBC API implementează următoarele două modele de acces la baza de date:
–two-tier (pe două niveluri)
–three-tier (pe trei niveluri)
Procesarea instrucțiunilor SQL cu ajutorul JDBC
Pașii necesari procesării instrucțiunilor SQL sunt următorii:
–stabilirea conexiunii
–crearea instrucțiunilor
–executarea interogărilor
–procesarea rezultatelor
–închiderea conexiunii
Stabilirea unei conexiuni
O conexiune este reprezentată de un obiect din clasa Connection.
Legarea aplicației la o sursă de date se poate face folosind:
–clasa DriverManager
•permite conectarea aplicației la o sursă de date, specificată prinURL-ul bazei de date
–interfața DataSource
•este preferată deoarece permite ca anumite detalii privind sursa de date să fie transparente pentru aplicația Java
Stabilirea unei conexiuni -exemplu
Connectionconn=null;
PropertiesconnectionProps=newProperties();
connectionProps.put("user",this.userName);
connectionProps.put("password",this.password);
conn=DriverManager.getConnection(
"jdbc:"+this.dbms+"://"+
this.serverName+
":"+this.portNumber+"/",
connectionProps);
Exemple de URL pentru stabilirea unei conexiuni
MySQLjdbc:mysql://localhost:3306/test.db
Java DBjdbc:derby:testdb;create=true
SQLitejdbc:sqlite:test.db
Crearea instrucțiunilor
PentrureprezentareainstrucțiunilorSQLsefoloseșteinterfațaStatement.
PentrucreareaunuiobiectStatementsefoloseșteoconexiune(unobiectConnection):Statement stmt = conn.createStatement();
Existătreitipurideinstrucțiuni:
–simple(Statement) –pentru instrucțiuni SQL fără parametri
–extinse (PreparedStatement) –pentru a pregări instrucțiunile SQL care ar putea conține parametri de intrare
–apelabile (CallableStatement) –pentru a executa proceduri stocate ce pot conține atât parametri de intrare cât și de ieșire
Executarea interogărilor
SefaceapelândunadinmetodeleexecutealeobiectuluiStatement:
–execute
•returnează true dacă primul obiect returnat de interogarea SQL este un ResultSet
•se folosește dacă interogarea returmnează unul saiu mai multe obiecte ResultSet
–executeQuery
•returnează un obiect ResultSet
–executeUpdate
•returnează un întreg reprezentând numărul de linii afectate de instrucțiunea SQL (INSERT, DELETE sau UPDATE
Executarea interogărilor -exemple
Interogărideselecție
ResultSetrs=stmt.executeQuery(“SELECT*FROMfacultati;”);
Interogărideactualizare
stmt.executeUpdate(“DELETEFROMfacultatiWHEREcodF='FAN';”);
Procesarea rezultatelor obținute
ObiectulResultSetobținutînurmauneiinterogăriesteostructurădedatecepermiteaccesareaacestoraprinintermediulunuicursor.
–cursorul este un pointer (indicator) către una din liniile (înregistrările) returnate în ResultSet.
Procesarea rezultatelor -exemplu
Stringquery="selectCOF_NAME,SUP_ID,PRICE,SALES,TOTALCOFFEES";
stmt=con.createStatement();
ResultSetrs=stmt.executeQuery(query);
while(rs.next()){
StringcoffeeName=rs.getString("COF_NAME");
intsupplierID=rs.getInt("SUP_ID");
floatprice=rs.getFloat("PRICE");
intsales=rs.getInt("SALES");
inttotal=rs.getInt("TOTAL");
System.out.println(coffeeName+"\t"+supplierID+…);
Închiderea conexiunii
DupăîncetareautilizăriiobiectelorConnection,StatementșiResultSetseapeleazămetodaclosecareelibereazăresurselecareaufostutilizate.rs.close();stmt.close();conn.close();