Baza de Date

13
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

description

programarea calculatoarelor si limbaje de programare

Transcript of Baza de Date

Page 1: 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

Page 2: Baza de Date

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

Page 3: Baza de Date

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

Page 4: Baza de Date

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

Page 5: Baza de Date

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)

Page 6: Baza de Date

–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]

Page 7: Baza de Date

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");

}

}

Page 8: Baza de Date

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

Page 9: Baza de Date

•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

Page 10: Baza de Date

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+…);

Page 11: Baza de Date

Închiderea conexiunii

DupăîncetareautilizăriiobiectelorConnection,StatementșiResultSetseapeleazămetodaclosecareelibereazăresurselecareaufostutilizate.rs.close();stmt.close();conn.close();