Proiectarea Bazelor de DateProiectarea Bazelor de DateCurs
Facultatea de Electronica, Telecomunicatii si Tehnologia Informatiei
Anul IV A (INF)
Prof. Felicia IonescuProf. Felicia Ionescu
http://info.tech.pub.ro/~fionescu
Baze de date, 2008 Prof. Felicia Ionescu 2
Capitolul 1: IntroducereCapitolul 1: Introducere Definitii baze de date, sisteme de baze de date Componentele sistemelor de baze de date Arhitectura interna a sistemelor de baze de date Avantajele oferite de sistemele de baze de date Clasificari ale sistemelor de baze de date
Clasificare dupa modelul de date Clasificare dupa numarul de utilizatori Clasificare dupa numarul de statii pe care este memorata baza de date
Modelarea datelor Modele conceptuale de nivel inalt Modele specifice de date
Evolutia sistemelor de baze de date
Baze de date, 2008 Prof. Felicia Ionescu 3
Sisteme de baze de date Sisteme de baze de date Bazele de date se folosesc in aproape toate domeniile de activitate actuale:
Activitati bancare si comerciale (vanzari produse) Productie (gestiunea stocurilor, gestiunea financiar-contabila, salarizare etc.) Evidenta populatiei, taxe si impozite Servicii (servicii medicale, rezervari bilete de calatorie etc.)
Definitie (in sens larg): O baza de date (database) este o colecie de date corelate din punct de vedere logic, care reflecta un anumit aspect al lumii reale i este destinata unui anumit grup de utilizatori. In acest sens pot fi considerate ca fiind baze de date: Fise de evidenta (mentinute manual) Fisiere de documente sau foi de calcul tabelar (Microsoft Word, Microsoft Excel) Baze de date mentinute computerizat
Definitie (in sens restrans): O baz de date este o colecie de date creat i meninut computerizat, care permite operaii de: Introducere (insert) Stergere (delete) Actualizare (update) Interogare (query)
Baze de date, 2008 Prof. Felicia Ionescu 4
Componentele unui Sistem de Baze de Date (1)Componentele unui Sistem de Baze de Date (1)
Un sistem de baze de date (Database System) este un sistem computerizat de meninere a evidenei unei anumite activiti, folosind baze de date
Componentele unui sistem de baze de date sunt: hardware, software, utilizatori si date persistente
Hardware: Sistemele de baze de date sunt instalate pe calculatoare de uz general Bazele de date sunt memorate fizic ca fisiere pe discuri magnetice (hard-discuri)
Software: Sisteme de operare, biblioteci, instrumente de dezvoltare, interfete Sistemul de Gestiune a Bazelor de Date (SGBD) (Database Management
System DBMS) - recepioneaz cererile utilizatorilor de acces la baza de date, le interpreteaz, execut operaiile corespunztoare i returneaz rezultatul
Aplicatii de baze de date: (Database Applications) sunt programe care ofer anumite utilizari ale unei baze de date
Baze de date, 2008 Prof. Felicia Ionescu 5
Componentele unui Sistem de Baze de Date (2)Componentele unui Sistem de Baze de Date (2)
Utilizatori: Programatori de aplicatii Utilizatori finali Administratorul bazei de date Analisti si proiectanti ai bazelor de date
Datele persistente sunt memorate in fisiere pe hard-disk Limbaje conceptuale pentru lucrul cu bazele de date:
Limbaje pentru Definirea Datelor(LDD) (Data Definition Languages DDL) Limbaje pentru Manipularea Datelor (LMD) (Data Manipulation Languages
DML)
SGBD
Baza de date
Utilizatorfinal
Program aplicaie
Date
Date Date
Date
Baze de date, 2008 Prof. Felicia Ionescu 6
Arhitectura interna a unuiArhitectura interna a unui Sistem de BDSistem de BD Arhitectura pe 3 niveluri relativ independente: nivelul intern, nivelul
conceptual i nivelul extern (Standard ANSI/X3/SPARC -1975) Schema descrierea datelor pe un anumit nivel: schema interna,
conceptuala si scheme externe (vedere utilizator) Corespondente intre niveluri (mappings)
Schema intern
Schema conceptual
Vedere utilizator #1
Vedere utilizator #2
Vedere utilizator #nNivelul extern
SGBDNivelul conceptual
Nivelul intern
Datememorate
Baze de date, 2008 Prof. Felicia Ionescu 7
Avantaje oferite de Sistemele de BDAvantaje oferite de Sistemele de BD
Compactitate ridicat a datelor Reprezentarea unor asocieri complexe intre date Timp de dezvoltare a bazelor de date redus Viteza mare de actualizare si regasire a datelor Redundanta controlata a datelor (si cat mai scazuta) Flexibilitate, mentinerea datelor actualizate la zi Independenta datelor fata de suportul hardware utilizat Securitatea datelor: autentificarea utilizatorilor si autorizarea accesului Impunerea de restrictii (constrangeri) de integritate la introducerea si
actualizarea datelor Mentinerea integritatii datelor in caz de defecte: salvare si refacere Posibilitatea de partajare a datelor intre mai multe categorii de utilizatori Posibilitatea de introducere a standardelor
Baze de date, 2008 Prof. Felicia Ionescu 8
Clasificarea Sistemelor de Baze de Date (1)Clasificarea Sistemelor de Baze de Date (1)
Clasificare dupa modelul de date: Modelul de ierarhic de date Modelul de date retea Modelul relational Modelul obiect-orientat Modelul obiect-relational
Clasificare dupa numarul de utilizatori Sisteme mono-utilizator Sisteme multi-utilizator
Clasificare dupa numarul de statii pe care este memorata baza de date: Baze de date centralizate Baze de date distribuite
Arhitectura client-server: Server (back-end): SGBD-ul si baza de date Client (front-end): program (programe) de aplicatie
Baze de date, 2008 Prof. Felicia Ionescu 9
Clasificarea Sistemelor de Baze de Date (2)Clasificarea Sistemelor de Baze de Date (2)
Sisteme de baze de date centralizate: a- mono-utilizator; b- multi-utilizator
AplicaieClient
SGBD
BDa
Server
Reeade comunicaie
AplicaieClient
AplicaieClient
AplicaieClient
SGBD
BD
Server
b
Reeade comunicaie
AplicaieClient
AplicaieClient
AplicaieClient
SGBD
BD
ServerSGBD
BD
Server
Sistem de baze de date distribuit
Baze de date, 2008 Prof. Felicia Ionescu 10
Modelarea datelorModelarea datelor Un model este o abstractizare a unui sistem:
capteaz cele mai importante trsturi caracteristice ale sistemului (concepte) conceptele trebuie sa fie relevante din punct de vedere al scopului pentru care
se definete modelul respectiv
Tehnica de identificare a trsturilor caracteristice eseniale ale unui sistem se numete abstractizare.
Un model de date stabilete regulile de organizare i interpretare a unei colecii de date.
n proiectarea bazelor de date se folosesc 2 categorii de modele: Modele conceptuale de nivel nalt (modelul Entitate-Asociere, modelul Entitate-
Asociere Extins) descriu concis colectiile de date care modeleaz activitatea dorit fr s detalieze modul de reprezentare sau de prelucrare a datelor -schem conceptual de nivel nalt
Modele specializate (modelul ierarhic, modelul reea, modelul relaional, etc.) -descriu reprezentarea mulimilor de entiti i a asocierilor dintre acestea prin structuri de date specifice - schem conceptual (logic)
Trecerea de la modelul conceptual de nivel nalt la un model de date specific proiectare logic a bazei de date.
Baze de date, 2008 Prof. Felicia Ionescu 11
Modelul EntitateModelul Entitate--AsociereAsociere Modelul Entitate-Asociere (Entity-Relationship Model) defineste multimile
de entiti i asocierile dintre ele, dar nu impune nici un mod specific de structurare i prelucrare (gestiune) a datelor; Introdus n 1976 de P.S. Chen
O entitate (entity) este orice exista in realitatea obiectiva si poate fi identificat n mod distinctiv Exemple: o persoana, o planta, o activitate, un concept etc.
Un atribut (attribute) este o proprietate care descrie un anumit aspect al unei entiti Exemple: persoanele au nume, prenume, adresa etc.
Tip de entitate (entity type): se refera la entittile similare, care pot fi descrise prin aceleasi atribute Exemple: tipul persoana, tipul planta
Multime de entitati (entities set): colecia tuturor entitilor de acelai tip dintr-o baz de date constituie o mulime de entiti Exemple: multimea tuturor persoanelor, multimea tuturor plantelor
O entitate este o instanta a unui tip de entitate si un element al multimii de entitati de acel tip
In exprimarea curenta, adeseori nu se face diferentierea dintre entitate, tip de entitate si multime de entitati, dar diferenta este evidenta
Asemanare cu modelul obiect: tip de entitate - clasa; entitate - obiect
Baze de date, 2008 Prof. Felicia Ionescu 12
AsocieriAsocieri O asociere (relationship) este o coresponden ntre entiti din dou sau
mai multe mulimi de entiti; asocierile pot avea atribute Tipul asocierii (relationship type) se refera la asocierile similare, care pot
fi definite intre 2 sau mai multe multimi de entitati Multime de asocieri (relationship set): multimea asocierilor de acelasi tip O asociere este o instanta a unui tip de asociere si un element al multimii
de asocieri de acel tip In exprimarea curenta, adeseori nu se face diferentierea dintre asociere, tip
de asociere si multime de asocieri, dar diferenta este evidenta Gradul unui (tip de) asociere (degree): numrul de (mulimi de) entiti
asociate; dupa grad, asocierile pot fi: binare (de gradul 2, ntre 2 mulimi de entiti) majoritatea asocierilor multiple (ntre k mulimi de entiti, k > 2) destul de rare
Categorii de (tipuri de) asocieri binare - dup numrul elementelor din fiecare dintre cele dou mulimi puse n coresponden: unul-la-unul (one-to-one) 1:1; exemplu: sot-sotie unul-la-multe (one-to-many) 1:N; exemplu: parinte-fii multe-la-unul (many-to-one) N:1; exemplu: fii-parinte multe-la-multe (many-to-many) M:N; exemplu: profesori-studenti
Baze de date, 2008 Prof. Felicia Ionescu 13
Categorii de asocieri binare (1)Categorii de asocieri binare (1)
Asocieri binare intre multimile de entitati A si B
unul-la-unul 1:1 unul-la-multe- 1:N
Baze de date, 2008 Prof. Felicia Ionescu 14
Categorii de asocieri binare (2)Categorii de asocieri binare (2)
Asocieri binare intre multimile de entitati A si B
multe-la-multe- M:Nmulte-la-unul- N:1
Baze de date, 2008 Prof. Felicia Ionescu 15
Cardinalitatea asocierilorCardinalitatea asocierilor
Cardinalitatea (multiplicitatea) unei asocieri fa de o mulime de entiti(cardinality, multiplicity) este numrul maxim de elemente din acea mulime care pot fi asociate cu un element din alt mulime a asocierii Exemplu: asocierea unul-la-multe dintre mulimile A i B prezint multiplicitatea
1 fa de mulimea A i multiplicitatea N (se nelege o valoare oarecare N > 1) fa de mulimea B
Raport de cardinalitate (cardinality ratio): raportul dintre valorile cardinalitilor unei asocieri fa de dou din mulimile de entiti asociate Exemple pentru asocieri binare: 1:1, 1:N, N:1, M:N Asocierile multiple (k-are, k > 2) prezint cte un raport de cardinalitate pentru
fiecare pereche de mulimi de entiti pe care le asociaz.
Baze de date, 2008 Prof. Felicia Ionescu 16
Diagrama EntitateDiagrama Entitate--Asociere Asociere Diagrama Entitate-Asociere (Entity-Relationship Diagram) reprezint
grafic modelul Entitate-Asociere prin mulimile de entiti i asocierile dintre acestea
Multimi (tipuri) de entitati: Puternice (de sine statatoare) Slabe (depind de alte multimi de entitati)
Notatii:
A B Asociere binar 1:Nntre 2 tipuri de entiti1 N
Tip entitate Tip de entitate puternic
Tip entitate Tip de entitate slab
Nume atribut Atribut
Baze de date, 2008 Prof. Felicia Ionescu 17
Exemplu de diagrama EntitateExemplu de diagrama Entitate--Asociere (1)Asociere (1) Multimi de entitati puternice:
SECTII (Numar, Nume, Buget) ANGAJATI (Nume, Prenume, DataNasterii, Adresa, Functie, Salariu) PROIECTE (Denumire, DataInceperii, Termen, Buget)
Multimi de entitati slabe: DEPENDENTI (Nume, Prenume, DataNasterii, GradRud)
ANGAJATISECTII1 N
DEPENDENTI
1
N
PROIECTE
M
N
LucreazaIntretin
Numr Buget Nume
Denumire BugetGradRudenie
Salariu
Cuprind
Nume
Baze de date, 2008 Prof. Felicia Ionescu 18
Exemplu de diagrama EntitateExemplu de diagrama Entitate--Asociere (2)Asociere (2) Asocieri:
Asocierea SECTII - ANGAJATI - 1:N Asocierea ANGAJATI - PROIECTE - M:N Asocierea ANGAJATI - DEPENDENTI - 1:N
Raportul de cardinalitate al unei asocieri este stabilit de proiectant astfel nct s reflecte ct mai corect modul de organizare a activitii modelate
Modul de stabilire a tipurilor de entiti i a asocierilor nu este unic: aceeai funcionalitate se poate obine printr-o varietate de diagrame E-A
O mulime de entiti se denumeste printr-un substantiv, iar o asociere se denumeste (de regula) printr-un verb, deoarece o asociere reprezint o interaciune ntre entiti
Modelul E-A nu precizeaz modul cum sunt realizate asocierile ntre mulimile de entiti: acest aspect depinde de modelul de date specializat utilizat pentru definirea bazei de date Exemple: n modelul ierarhic asocierile sunt realizate explicit, prin pointeri de la o
entitate la entitile asociate; n modelul relaional asocierile se realizeaz prin egalitatea valorilor unor atribute comune ale multimilor de entiti (chei)
Baze de date, 2008 Prof. Felicia Ionescu 19
Modelul EntitateModelul Entitate--Asociere ExtinsAsociere Extins Modelul Entitate-Asociere Extins (Enhanced Entity-Relationship Model)
permite definirea de subtipuri ale unui tip de entiti, care motenesc atribute de la tipul de entitate respectiv
Crearea ierarhiilor: specializare si generalizare Tipurile i a subtipurie formeaza ierarhii de tipuri de entiti complexe,
organizate pe mai multe niveluri Diagrama Entitate-Asociere Extinsa
ANGAJAT
TEHNICIANSECRETARA
Nume Prenume Salariu
VitezaRedactare Calificare
DataNasterii Adresa
INGINER
Specialitate
d
Baze de date, 2008 Prof. Felicia Ionescu 20
Modelul de date ierarhicModelul de date ierarhic Modelul ierarhic (Hierarchical Model): baza de date se reprezinta printr-o
structur ierarhic de nregistrri (records) conectate prin legturi (links). A fost primul model folosit pentru dezvoltarea bazelor de date Cel mai cunoscut SGBD ierarhic: sistemul IMS (Information Management
System) dezvoltat de IBM n programulde cercetri Apollo, n perioada anilor 1960
O nregistrare de date n modelul ierarhic este o instan a unui tip de nregistrare (record type) i const dintr-o colecie de cmpuri (fields), fiecare cmp coninnd valoarea unui atribut.
Un tip de legtur n modelul ierarhic: tip de asociere cu raportul de cardinalitate 1:N (printe-fiu) ntre dou tipuri de nregistrri
Schema conceptual a unei baze de date n modelul ierarhic se reprezint printr-un numr oarecare de scheme ierarhice
O schem ierarhic este un arbore direcionat, reprezentat pe mai multe niveluri, n care nodurile sunt tipuri de nregistrri, iar arcele sunt tipuri de legturi
Baze de date, 2008 Prof. Felicia Ionescu 21
Baze de date ierarhiceBaze de date ierarhice
Numai legturi de tipul printe-fiu, care corespund asocierilor 1:1 i 1:N din modelul E-A
Asocierile M:N se pot reprezenta prin multiplicarea nregistrrilor de tip fiu, atunci cnd sunt referite de mai multe nregistrri de tip printe mare redundan a datelor
Avantaje: simplitatea i eficiena de calcul Deficiente:
nu exista separare intre descrierea logica si fizica a datelor interogarile trebuie s fie prevzute explicit in structura datelor
Utilizari actuale - aplicatii specializate, baze de date XML
f1 f2 f3
FACULTATI
p1 p2 p3
PROFESORI
s1 s2 s3
STUDENTI
s1 s2 s4
FACULTATI
PROFESORI
STUDENTI
FACULTATI
PROFESORI
STUDENTI
1
N
M
N
(a) Diagrama E-A (b) Schema ierarhica (c) Arbori de instantiare a datelor
Baze de date, 2008 Prof. Felicia Ionescu 22
Modelul de date reteaModelul de date retea Modelul reea (Network Model) folosete o structur de graf pentru
definirea schemei conceptuale a bazei de date Modelele ierarhic si retea modele pre-relationale Standardizat n 1971, de o comisie DBTG (Database Task Group). Sisteme de gestiune comerciale in modelul retea: IDS II (Honeywell),
UNISYS (Burroughs), IDMS (Computer Associates) Nodurile grafului sunt tipuri de entiti (nregistrri - records), iar muchiile
reprezint asocierile (legturile-links) dintre tipurile de entiti Asocierile M:N se reprezint fr duplicarea nregistrrilor, fiecare
nregistrare putnd fi referit de mai multe nregistrri, ceea ce elimin redundana
Dezavantaje: aceleasi ca si la modelul ierarhic, la care se adauga complexitatea mare in reprezentarea datelor
Actualmente modelul retea este rar utilizat pentru baze de date de uz general, care necesita interogari
Exist domenii n care modelul retea este util, de exemplu, pentru reprezentarea scenelor virtuale (baze de date grafice)
Baze de date, 2008 Prof. Felicia Ionescu 23
Modelul de date relationalModelul de date relational Modelul relaional (Relational Model) se bazeaz pe noiunea de relaie
(relation) din matematic, care corespunde unei mulimi de entiti Fundamentat de E.F. Codd (IBM), prin lucrarea "Un model Relaional de
Date pentru Bnci Mari de Date Partajate" (1970) Dezvoltare extraordinara a sistemelor de gestiune a bazelor de date
relationale, datorit simplitii i a fundamentrii matematice a modelului Alte lucrri ale cercetatorilor C.J. Date, P. Chen, R. Boyce, J.D. Ullman, R.
Fagin, W. Armstrong, M. Stonebraker etc. au perfecionat modelul relaional Primul Sistem de Gestiune a Bazelor de Date Relaionale (SGBDR) a fost
prototipul System R (IBM, 1970) Dup aceasta numeroase companii au realizat sisteme de gestiune
relaionale: Oracle, Microsoft, Ingres, Sybase SGBDR folosesc limbajul SQL (Structured Query Language), pentru care
au fost emise mai multe standarde ANSI (American National Standardization Institute) si ISO (International Standardization Office)
Majoritatea SGBD-urilor relaionale actuale implementeaz versiunea SQL2 (SQL92) si/sau SQL3 (SQL99)
Baze de date, 2008 Prof. Felicia Ionescu 24
Modelul obiectModelul obiect--orientatorientat Modelul obiect (Object Model) este un concept unificator Necesar in domenii in care se manipuleaza date de tipuri complexe:
proiectarea sistemelor de calcul: programare, hardware, interfete, baze de date proiectarea asistat de calculator in alte domenii sisteme de informaii geografice medicin i altele
Strategii pentru dezvoltarea sistemelor de gestiune a bazelor de date obiect-orientate (SGBDOO): Extinderea unui limbaj de programare obiect-orientat cu capaciti de
administrare a obiectelor persistente: sistemul GemStone (extinde Java si C++) Extinderea unui limbaj de programare relaional cu capaciti de orientare spre
obiecte. ExemplU: limbajul ODL (Object Query Language) (sau Object SQL), Exist mai multe astfel de sisteme, cum sunt: Ontos, Versant, O2.
Dezvoltarea unui limbaj obiect-orientat pentru baze de date complet nou: SIM (Semantic Information Manager).
Dificultati: Complexitate in dezvoltare a bazei de date i a aplicaiilor Interogarile trebuie s fie prevzute explicit in structura datelor
Utilizare SGBDOO: cam 5% din sistemele de gestiune actuale
Baze de date, 2008 Prof. Felicia Ionescu 25
Modelul obiectModelul obiect--relationalrelational Modelul obiect-relaional (Object-Relational Model) reprezint extinderea
modelului relaional cu caracteristici ale modelului obiect Modelul obiect-relaional pstreaz structurarea datelor n relaii, si, in plus:
permite definirea unor noi tipuri de date, ca domenii ale atributelor permite extinderea tipurilor de date prin motenire
Sistemele de gestiune a bazelor de date obiect-relaionale (SGBDOR) se realizeaz prin extinderea sistemelor relaionale, de regula n mod gradat, adugndu-se de la o versiune la alta ct mai multe caracteristici posibile ale modelului obiect
Aceasta abordare asigur rularea n continuare a aplicaiilor relaionale existente n noile versiuni de sisteme SGBDOR, ceea ce permite productorilor (Oracle, Informix i IBM) s-i pstreze clienii i domeniile de utilizare
Limbajele de programare pentru SGBDOR sunt standarde mai recente ale limbajului SQL: SQL3 (SQL1999), SQL-2003, SQL-2006
Baze de date, 2008 Prof. Felicia Ionescu 26
Complexitatea datelor si a interogarilorComplexitatea datelor si a interogarilor Clasificare propusa de M. Stonebraker (1996)
SGBDR SGBDOR
Sisteme de fiiere SGBDOO
Complexitatea datelor
Complexitatea interogrilor
SGBDR prelucreaz tipuri simple de date, dar permit interogri complexe SGBDOO prelucreaz tipuri de date complexe, dar n care rezolvarea
interogrilor este destul de dificil SGBDOR permit prelucrarea datelor complexe i rezolvarea interogrilor
complexe; sistemele de baze de date obiect-relaionale sunt considerate sisteme de baze de date universale
Baze de date, 2008 Prof. Felicia Ionescu 27
Evolutia sistemelor de baze de dateEvolutia sistemelor de baze de date1960 Modele prerelationale: ierarhic si retea
Primele produse de baze de date (DBOM, IMS, IDS, Total, IDMS)Standarde Codasyl
1970 Modelul relational prototipuri de SGBDRLucrari teoretice asupra modelului relationalArhitectura interna pe 3 niveluri a bazelor de date (ANSI and Codasyl)Modelul Entitate-Asociere
1980 Dezvoltarea SGBDR comercialePrimul standard SQL (ANSI, ISO) Baze de date distribuite
1990 Arhitectura client/server a sistemelor de baze de date (two-tier arch.)Baze de date obiect-orientateBaze de date obiect-relationaleStandarde SQL: SQL 92, SQL 99
2000 Arhitectura pe 3 niveluri a sistemelor de baze de date (three-tier arch.)Baze de date in sistemul WWW (World Wide Web)
Baze de date, 2008 Prof. Felicia Ionescu 28
Sisteme de Gestiune a Bazelor de dateSisteme de Gestiune a Bazelor de date
Sisteme ComercialeOracle ($$$$)DB2 (IBM) ($$$)SQL Server (Microsoft) ($$)
Sisteme Open SourcePostgreSQLMySQL
Baze de date, 2008 Prof. Felicia Ionescu 29
Baze de date, 2008 Prof. Felicia Ionescu 1
Capitolul 2: Modelul RelationalCapitolul 2: Modelul Relational Relatii, atribute, domenii; schema relatiei Reprezentarea relatiilor prin tabele Limbajul SQL:
Conventii lexicale Expresii, operatori, functii Instructiuni de definire a datelor: CREATE, ALTER, DROP Instructiuni de manipulare a datelor: SELECT, INSERT, UPDATE, DELETE
Constrangerile de integritate ale relatiilor Constrangeri de domeniu Constrangeri de tuplu: cheia primara chei secundare Constrangeri de integritate referentiala chei straine
Indexarea relatiilor Indexul primar Indexuri secundare
Baze de date, 2008 Prof. Felicia Ionescu 2
Relatii Relatii Atribute Atribute DomeniiDomenii Modelul relational: E.F.Codd, 1970 IBM O baz de date relaional este compus dintr-o mulime finit de relaii
fiecare relaie reprezinta o multime (tip) de entitati sau o multime (tip) de asocieri fiecare relatie este unica intr-o baza de date o relatie se defineste prin intermediul atributelor sale
Atributele unei relaii corespund atributelor tipului de entitate sau de asociere pe care l reprezint relaia respectiv fiecare atribut are un nume (Ai) si un domeniu de definiie D(Ai) pentru o entitate data, un atribut poate lua o singur valoare (scalar)
Atributele pot fi: simple (un element) sau compuse (o submultime de atribute) Domeniu: o multime de valori D = {di | i = 1,, n }, definit printr-o specificare
de tip, unde: D este numele domeniului di este un element al domeniului care satisface anumite constrangeri Elementele domeniilor sunt atomice (indivizibile) O valoare speciala, null, apartine oricarui domeniu (inseamna lipsa de informatie
sau valoare necunoscuta)
Baze de date, 2008 Prof. Felicia Ionescu 3
Schema relatieiSchema relatiei Schema relaiei: descriere a unei relaii (tipul, intensiunea relaiei) Schema relaiei: R(A1,A2,...Ai,...An), unde:
R este numele schemei relaiei lista ordonat a atributelor sale A1,A2,...Ai,..An fiecare atribut Ai definit pe domeniul su de definiie, D(Ai) Gradul relaiei: numrul de atribute ale schemei acelei relatii (n) Exemplu: STUDENTI (Nume, Prenume, DataNasterii, Adresa, Facultatea)
O relaie r definita prin schema R(A1,A2,...Ai,...An) este: o mulime finita de n-tupluri t tuplul t este o list ordonat de n valori: t = , unde 1 i n vi este o valoare a atributului Ai, vi D(Ai)
Relatia r(R): r este variabila, instanta a schemei (tipului) R Valoarea variabilei: starea sau extensiunea relatiei Numarul de tupluri ale unei relatii: cardinalitatea relatiei Fiecare tuplu este unic intr-o relatie (nu exista tupluri duplicat) Corespondenta: relatiemultime de entitati (sau de asocieri); tuplu entitate
In mod curent: se foloseste R atat pentru schema cat si pentru relatia insasi
Baze de date, 2008 Prof. Felicia Ionescu 4
Reprezentarea relatiilor prin tabeleReprezentarea relatiilor prin tabele Un tabel (table) = reprezentarea grafica a unei relaii; compus din:
Numele tabelului - identic cu numele relaiei Coloanele corespund atributelor relatiei Capul tabelului- contine numele atributelor (coloanelor) schema relatiei O mulime de linii, fiecare linie corespunznd unui tuplu starea relatiei Valori ale atributelor fiecarui tuplu
Exemplu: Tabelul care reprezinta relatia (starea relatiei) STUDENTI
Nume Prenume DataNasterii Adresa Facultatea
Anghelescu Octavian 1999 Bucuresti ETTI
Beldiman Cristina 1998 Bucuresti ETTI
Boeru Marius 1999 null ETTI
Numele Coloane - Atribute
STUDENTI
Linii - tupluri
Tabelul sugereaza ordonarea atributelor (coloanelor) si a tuplurilor (liniilor) ceea ce nu corespunde modelului matematic (relatie = multime de tupluri)
Valori atribute
Capul tabelului
Baze de date, 2008 Prof. Felicia Ionescu 5
Afisarea tabelelorAfisarea tabelelor SGBD-urile ofera instrumnente de proiectare si afisare a tabelelor
De exemplu, afisarea tabelului Employees din baza de date Northwind folosind toolset-ul SQL Query Analyser din Microsoft SQL Server
Baze de date, 2008 Prof. Felicia Ionescu 6
Ordonarea valorilor atributelor in tupluriOrdonarea valorilor atributelor in tupluri Din punct de vedere logic, ordinea valorilor atributelor ntr-un tuplu nu
conteaza; aceast structurare poate fi exprimat prin urmtoarele definiii: Schema relaiei: R = {A1,A2, ...Ai,...An} (o mulime de atribute) Relaia r(R): o mulime de n-tupluri t, unde:
fiecare tuplu t este o mulime de n perechi ordonate , unde 1 i n, t = {,,..., ...} vi este valoarea atributului Ai, vi D(Ai)
Observatii asupra celor doua definitii: A doua definitie a relaiei este mult mai general decat prima definitie Dar prima definitie simplific notaiile i corespunde reprezentrii prin tabel a
relaiei i de aceea va fi folosit n continuare destul de frecvent n implementrile reale, exist o anumit ordine a valorilor atributelor memorate
in fisiere, dar aceasta nu este relevant din punct de vedere logic
Baze de date, 2008 Prof. Felicia Ionescu 7
Limbajul SQLLimbajul SQL Limbajul IBM Sequel dezvoltat ca parte a proiectului System R la IBM San
Jose Research Laboratory (1970) Redenumit Structured Query Language (SQL) Standarde SQL - ANSI si ISO:Anul Denumire Caracteristici1986 SQL-86 Publicat de ANSI (SQL1); ratificat de ISO in 19871989 SQL-89 Revizii minore1992 SQL-92 Revizii majore, redenumit SQL21999 SQL-1999 Redenumit SQL3, adauga unele caracteristici
obiect-relationale2003 SQL-2003 Adauga unele trasaturi referitoare la limbajul XML2006 SQL-2006 Utilizare SQL in conjunctie cu XML
Fiecare SGBDR implementeaz un dialect al limbajului SQL, ceea ce micoreaz gradul de portabilitate a aplicaiilor
n diferitele implementri ale limbajului SQL pot s lipseasc unele comenzi prevzute n standard, dar pot exista extensii specifice
Baze de date, 2008 Prof. Felicia Ionescu 8
Caracteristicile generale ale limbajului SQLCaracteristicile generale ale limbajului SQL
Limbajul SQL foloseste reprezentarea prin tabele a relaiilor, reprezentare care este mai simpl i mai intuitiv (foloseste termenii tabel, linie, coloan)
Limbajul SQL cuprinde: Componenta de descriere a datelor (Limbaj de Descriere a Datelor LDD) Componenta de manipulare a datelor (Limbaj de Manipulare a Datelor LMD) Alte componente: controlul tranzactiilor, controlul securitatii, protectia datelor etc.
Limbajul SQL este un limbaj neprocedural: o instruciune SQL specific ce informaii trebuie s fie setate sau obinute, nu
modul (procedura) n care se opereaz limbajul SQL nu conine instruciuni de control al fluxului execuiei (instruciuni ca
for, while, if, etc)
Pentru aplicaiile de baze de date, s-au dezvoltat extensii procedurale ale limbajului SQL, biblioteci i interfee de programare care integreaz instruciunile SQL
Baze de date, 2008 Prof. Felicia Ionescu 9
Structura lexicala a limbajului SQLStructura lexicala a limbajului SQL O instruciune SQL (statement) este o secven de elemente - de regula
terminat cu semnul punct i virgul (;) Fiecare instruciune SQL conine o comand SQL (command), care specific
ce aciune se efectueaz, urmat de alte elemente, care specific operaii, clauze, parametri etc. Exemplu: SELECT * FROM ANGAJATI;
Elementele (tokens) instruciunilor SQL cuvnte cheie (key words): CREATE, INSERT, SELECT , WHERE, FROM etc. identificatori (identifiers):
simpli - numai caractere alfa-numerice si underscore(_): ANGAJATI, Nume, Prenume etc. delimitati (quoted) - pot contine orice caracter, foloseste ghilimele : Nume, Prenume etc.
constante (literali): 1000, 100.5, Ionescu, NULL caractere speciale: *, ., ;
Spaiile albe (whitespaces) separa elementele: spaiu, linie nou, tab O instructiune se poate scrie pe una sau mai multe linii, iar ntr-o linie se pot
introduce una sau mai multe instructiuni Limbajul SQL este case-insensitive (nu deosebeste literele mici de cele mari)
cu exceptia identificatorilor delimitati (quoted) care sunt case-sensitive
Baze de date, 2008 Prof. Felicia Ionescu 10
Expresii si operatori in limbajul SQLExpresii si operatori in limbajul SQL O expresie SQL const dintr-unul sau mai muli operanzi, operatori i
paranteze. Parantezele se pot folosi pentru a preciza o anumit ordine a operaiilor, dac
aceasta este diferit de ordinea implicit data de precedenta operatorilor. Un operand poate fi:
numele unei coloane in acest caz se foloseste valoarea memorata in acea colona intr-una sau mai multe linii ale tabelului
o constant (literal) valoarea returnat de o functie
Un operator SQL este exprimat prin: unul sau mai mai multe caractere speciale; exemple: +, -, *, /, %, etc. un cuvnt cheie; exemple: AND, OR, NOT, LIKE etc.
Operatori SQL: binari sau unari (dupa numarul de operanzi) Operatori SQL: aritmetici, logici, de comparaie SQL, relationali
Operatori aritmetici de operatii cu numere intregi sau reale: +, -, *, /, %, ^ Operatori aritmetici orientati pe biti: ~, &, |, # Operatori aritmetici de comparatie: , =, (sau !=), = Operatori de comparatie SQL: IS NULL, IS NOT NULL, BETWEEN, IN, LIKE Operatori relationali: UNION, INTERSECT, MINUS
Baze de date, 2008 Prof. Felicia Ionescu 11
Operatori SQLOperatori SQL
Operatorii logici (NOT, AND, OR): se aplic unor variabile logice trivalente (cu 3 valori: true (1), false (0) inull -
lipsa de informatie) returneaz o valoare logic trivalent
A B A and B A or B A not Atrue true true true true
falsenull
true false false truefalsetruenulltrue null null true
false false false falsefalse null false nullnull null null null
Toti operatorii de comparaie returneaza valori logice: true (1), dac condiia este ndeplinit false (0) dac condiia nu este ndeplinit null dac ambii operanzi au valoarea null
Baze de date, 2008 Prof. Felicia Ionescu 12
Functii SQLFunctii SQL Funcii SQL: funcii agregat i funcii scalare. Funciile agregat calculeaz un rezultat din mai multe linii ale unui tabel
Aceste funcii vor fi detaliate ulterior, la descrierea instruciunii SELECT.
Funciile scalare: Primesc unul sau mai multe argumente i returneaz valoarea calculat sau NULL
n caz de eroare Argumentele funciilor pot fi constante (literale) sau valori ale atributelor specificate
prin numele coloanelor corespunzatoare
Tipuri de funcii scalare SQL: Funcii de calcul trigonometric (sin, cos, tan etc.), funcii de calcul al logaritmului
(ln, log), al puterii (power), funcii de rotunjire (floor, ceil), etc. Funcii pentru manipularea irurilor de caractere: concat, replace, upper etc. Funcii pentru data calendaristic i timp: add_months, next_day, last_day etc. Funcii de conversie: to_number, to_char etc.
Funciile scalare se folosesc n expresii, care pot s apar n diferite clauze ale instruciunilor SQL
Baze de date, 2008 Prof. Felicia Ionescu 13
Tipuri de date SQL (1)Tipuri de date SQL (1) Tipuri de date SQL2: numeric, iruri de caractere, iruri de bii, data
(calendaristic), timp Tipul numeric:
numere ntregi: integer sau int (4 octei), smallint (2 octei) numere reale reprezentate n virgul flotanta: float (4 octei), real i double
[precision] (8 octei) numere zecimale reprezentate cu precizia dorit (tipul numeric sau decimal,
memorate ca ir de caractere): numeric[(p,s)] (sau decimal [(p,s)]), unde p (precizia) este numrul total de cifre, iar s (scara) este numrul de cifre dup punctul zecimal
Siruri de caractere: character(n), prescurtat, char(n) - ir de caractere de lungime fix (n) character varying(n), prescurtat varchar(n) - ir de caractere de lungime
variabil, maximum n
Siruri de bii - secvene de cifre binare (care pot lua valoarea 0 sau 1): bit(n)) - sir de biti de lungime fix (n) bit varying(n) sir de biti lungime variabil, maxim n
Baze de date, 2008 Prof. Felicia Ionescu 14
Tipuri de date SQL (2)Tipuri de date SQL (2) Tipurile SQL pentru data calendaristic i timp sunt: date, time, timestamp,
interval: Tipul date: memorarea datelor calendaristice prin utilizarea a trei cmpuri (year,
month, day), n formatul yyyy-mm-dd; se admit numai date valide Tipul time: memorarea timpului, folosind trei cmpuri (hour, minute, second) n
formatul HH:MM:SS; se admit numai valori valide Tipul timestamp(p): memorarea combinat a datei calendaristice i a timpului,
cu precizia p pentru cmpul second. Valoarea implicit a lui p este 6 Tipul interval este utilizat pentru memorarea intervalelor de timp
Variante de tipuri de date SQL specifice n diferite sisteme SGBD; Exemple: SGBD Microsoft SQL Server: tinyint - numr ntreg pe 1 octet SGBD Oracle: varchar2 - ir de caractere de lungime variabil
Standardul SQL2 nu suport tipuri de date i operaii definite de utilizator Standardul SQL3 suport tipuri de date i operaii definite de utilizator, care
sunt caracteristice ale modelului de date obiect-relaional Actualmente, productorii de sisteme de baze de date relaionale introduc
treptat diferite caracteristici ale modelului obiect-relaional cuprinse in SQL3
Baze de date, 2008 Prof. Felicia Ionescu 15
Domenii SQLDomenii SQL
In SQL2 domeniile atributelor se specific pe baza tipurilor de date predefinite ale limbajului SQL, deci nu corespund intru totul cu noiunea de domeniu relaional
Standardul SQL2 prevede comanda CREATE DOMAIN, care defineste undomeniu pe baza unui tip predefinit SQL2 i cu unele constrngeri
Aceast comand nu prea este implementat n sistemele de gestiune actuale, care prefer alte soluii de definire a domeniilor. De exemplu: In SQL Server, se pot crea aa-numitele tipuri definite de utilizator (user-
defined types), echivalente cu domeniile create cu comanda SQL CREATE DOMAIN, folosind o procedur stocat
n Oracle (8i, 9i, 10g) se pot crea tipuri de date noi, folosind comanda CREATE TYPE, care permite gruparea sub un anumit nume a mai multor atribute, de diferite tipuri (predefinite sau definite de utilizator)
In PostgreSQL se pot crea tipuri de date noi, folosind comanda CREATE TYPE
Baze de date, 2008 Prof. Felicia Ionescu 16
Conventii de notatieConventii de notatie Pentru prezentarea limbajului SQL si a altor limbaje, biblioteci si interfete
[ ] (paranteze drepte) Element opional al instruciunii{ } (acolade) Element obligatoriu al instruciunii| (bar vertical) Separ elementele din parantezele drepte sau
acolade; numai unul dintre acestea se poate introduce n instruciunea respectiv
[ , . . . n] Elementul precedent poate fi repetat de n ori; elementele repetate sunt separate prin virgul
element1, . . . . . . .elementn
List de n elemente de acelai tip; elementele repetate sunt separate prin virgul
lista_elemente List de elemente de acelai tip separate prin virgul
Caracterele folosite pentru a specifica o anumit convenie sintactic (paranteze, bara vertical, virgula, etc.) nu apar n instruciunile propriu-zise
Listele de elemente (compuse din mai multe elemente separate prin virgul) vor fi exprimate fie folosind una cele trei din construciile de mai sus, care se potrivete cel mai bine instruciunii respective
Baze de date, 2008 Prof. Felicia Ionescu 17
InstrucInstruciuni SQL iuni SQL Componenta de definire a datelor din SQL (LDD - Limbajul de Definire a
Datelor): Crearea (CREATE), modificarea (ALTER) i distrugerea (DROP) obiectelor bazei de
date Obiectele bazei de date sunt: tabele de baz (TABLE), tabele vedere (VIEW),
indexuri (INDEX), proceduri (PROCEDURE), trigere (TRIGGER), utilizatori (USER) Exemple de comenzi SQL de definire a datelor:
CREATE TABLE, CREATE VIEW, CREATE INDEX, CREATE USERCREATE FUNCTION, CREATE TRIGGER, CREATE PROCEDURE ALTER TABLE, ALTER VIEW, ALTER FUNCTION, ALTER PROCEDUREDROP TABLE, DROP VIEW, DROP INDEX, DROP USERDROP FUNCTION, DROP PROCEDURE, DROP TRIGGER
Componenta de manipulare a datelor din limbajul SQL (Limbajul de Manipulare a Datelor - LMD) conine comenzile: SELECT, INSERT, UPDATE si DELETE
Instructiunile SQL se transmit SGBD-ului: de catre diferite programe client (client grafic, linie de comanda, program executabil) SGBD-ul executa instructiunea SQL si returneaza un raspuns (rezultatul operatiei sau un cod de eroare)
Baze de date, 2008 Prof. Felicia Ionescu 18
Crearea tabelelor Crearea tabelelor
Instruciunea CREATE TABLE are urmtoarea sintax:CREATE TABLE nume_tabel (
col1 domeniu1 [constrangeri_coloana],col2 domeniu2 [constrangeri_coloana],. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . coln domeniun [constrangeri_coloana],
[constrangeri_tabel] );
Constrngerile impuse fiecrei coloane (atribut), ca i constrngerile de tabel, sunt opionale i vor fi discutate n sectiunea urmtoare. Exemplu:
CREATE TABLE ANGAJATI (Nume varchar(20),Prenume varchar(20),DataNasterii date,Adresa varchar(50),Functie varchar(20),Salariu numeric);
Instruciunea CREATE TABLE definete att tipul relaiei ct i o variabil relaie care iniial este vid (nu conine nici un tuplu)
Baze de date, 2008 Prof. Felicia Ionescu 19
Crearea vederilorCrearea vederilor Tabelele create cu instruciunea CREATE TABLE:
se numesc i tabele de baz (base tables) ele sunt memorate n fiierele bazei de date i pot fi accesate pentru
introducerea, modificarea i regsirea (interogarea) datelor
Un tabel vedere (view) este un tabel virtual care: nu este memorat fizic n fiiere reprezint o selecie (dup un anumit criteriu) a datelor memorate n unul sau
mai multe tabele de baz
Un tabel vedere secreeaza cu instruciunea SQL: CREATE VIEW nume_vedere AS (SELECT...);
Formatul comenzii SELECT va fi descris n capitolul urmtor Datele (valorile atributelor) sunt memorate o singur dat, n tabelele de
baz, dar pot fi accesate att prin tabelele de baz ct i prin tabelele vederi
Un tabel vedere este ntotdeauna actualizat ("la zi"), adic orice modificare efectuat n tabelele de baz se regsete imediat n orice tabel vedere creat pe baza acestora
Baze de date, 2008 Prof. Felicia Ionescu 20
Modificarea si stergerea tabelelor si a vederilorModificarea si stergerea tabelelor si a vederilor Comanda de modificare a tabelelor (ALTER TABLE) permite:
adugarea sau tergerea unor atribute modificarea domeniilor unor atribute adugarea, modificarea sau tergerea unor constrngeri ale tabelului
Pentru adaugare unei coloane intr-un tabel se foloseste clauza ADD, urmata de numele coloanei si numele domeniului (tipul SQL) atributului corespunzator. Exemplu:
ALTER TABLE ANGAJATI ADD DataAngajarii date;
Pentru tergerea unei coloane dintr-un tabel se folosete clauzaDROP, urmata de numele coloanei care se va sterge. Exemplu:
ALTER TABLE ANGAJATI DROP DataAngajarii;
Instruciunile de tergere a tabelelor de baz i a vederilor sunt: DROP TABLE nume_tabel; DROP VIEW nume_vedere;
Baze de date, 2008 Prof. Felicia Ionescu 21
Instructiunea SELECTInstructiunea SELECT SELECT - instruciune de interogare, prin care se regsesc informaiile din
unul sau mai multe tabele ale bazei de date dupa un criteriu (conditie) dat Sintaxa general:
SELECT [DISTINCT] lista_coloane [FROM lista_tabele][WHERE conditie][clauze_secundare];
SELECT returneaza un tabel cu coloanele din lista_coloane ale acelor linii (tupluri) ale produsului cartezian al tabelelor din lista_tabele
pentru care expresia logic conditie este adevrat (are valoarea TRUE).
Instructiunea SELECT are urmatoarele seciuni (clauze): Clauza SELECT definete lista de coloane a tabelului rezultat Clauza FROM indic lista de tabele din care se selecteaz rezultatul Clauza WHERE definete condiia pe care trebuie s o ndeplineasc fiecare
linie a tabelului rezultat Clauze secundare (ORDER BY, GROUP BY, HAVING): permit ordonri sau
grupri ale tuplurilor (liniilor) rezultate
Baze de date, 2008 Prof. Felicia Ionescu 22
Clauza SELECTClauza SELECT Clauza SELECT specifica:
lista coloanelor unor tabele (date in lista_tabele) expresii care vor fi calculate i afiate
Exemple:SELECT ID, Name, CountryCode, District from city;SELECT 3*4, cos(45), floor(12.45);
Eliminarea liniilor duplicat cu parametrul DISTINCT. Exemplu:SELECT [DISTINCT] CountryCode FROM city;
Selectarea tuturor coloanelor produsului cartezian al tabelelor date - cu caracterul * ca si lista_coloane. Exemplu:
SELECT * FROM city; n clauza SELECT se pot redenumi coloanele tabelelor sau se pot specifica
nume pentru expresii, folosind urmtoarea sintax:SELECT nume1 [AS] noul_nume1 [,...n] FROM lista_tabele [alte_clauze];SELECT ID, Name Oras, CountryCode Cod Tara FROM city;
Baze de date, 2008 Prof. Felicia Ionescu 23
Functii agregatFunctii agregat n clauza SELECT se pot introduce i funcii agregat (totalizatoare).
Funciile agregat definite n limbajul SQL2 sunt urmtoarele:
Functia Valoarea returnataCOUNT Numarul de linii al tabelului rezultatSUM Suma valorilor din coloana data ca argumentMAX Valoarea maxima din coloana data ca argumentMIN Valoarea minima din coloana data ca argumentAVG Valoarea medie din coloana data ca argument
Exemple: SELECT COUNT(*) FROM city;SELECT MAX(Population) FROM city;SELECT MIN(Population) FROM city;SELECT AVG(Population) FROM city;
Baze de date, 2008 Prof. Felicia Ionescu 24
Clauzele FROM si WHEREClauzele FROM si WHERE
Clauza FROM specifica lista_tabele din care se selecteaza rezultatul Numele coloanelor din lista_coloane (clauza SELECT) trebuie s fie distincte Dac nu sunt distincte, se calific unele coloane cu numele tabelului caruia i
aparin - folosind operatorul punct (.). De exemplu:SELECT ANGAJATI.Nume, SECTII.Nume FROM ANGAJATI, SECTII;
Clauza WHERE specifica conditia pe care trebuie sa o ndeplinesca rezultatul: conditia este o expresie logic compusa din valori logice, operatori logici (NOT, AND,
OR) i paranteze o valoare logic se obtine ca rezultat al comparaiei ntre doi operanzi folosind un
operator de comparaie un operand poate fi un atribut (nume de coloan), o constant, valoarea unei expresii
aritmetice sau o valoare returnat de o funcie operatorii de comparaie pot fi operatori aritmetici sau operatori SQL de comparaie
Exemple:SELECT * FROM city WHERE Population > 1000;SELECT * FROM city
WHERE Population BETWEEN 1000 AND 100000 AND CountryCode='NLD';
Baze de date, 2008 Prof. Felicia Ionescu 25
Clauze secundareClauze secundare
Clauza ORDER BY specifica numele atributului dup care se face ordonarea liniilor tabelului rezultat
SELECT * FROM city order by CountryCode; Ordonarea n ordine cresctoare: parametrul ASC (implicit); in ordine
descrescatoare: DESC. Exemplu:SELECT * FROM city order by CountryCode DESC;
Clauza GROUP BY se folosete pentru gruparea rezultatelor funciilor agregat dupa valoarea uneia sau mai multor coloane. Exemplu:
SELECT CountryCode, AVG(Population) FROM city GROUP BY CountryCode;
Clauza HAVING inlocuieste clauza WHERE atunci cand in conditia care trebuie sa fie indeplinita se folosesc functii agregat. Exemplu:
SELECT CountryCode, AVG(Population) FROM city GROUP BY CountryCode HAVING AVG(Population) >800000;
Baze de date, 2008 Prof. Felicia Ionescu 26
Instructiunea INSERTInstructiunea INSERT Instruciunea INSERT se folosete pentru introducerea datelor n tabele i
are urmtoarea sintax:INSERT INTO nume_tabel(col1,col2,...coln) VALUES(val1,val2,...valn);
ntre valori i numele de coloane trebuie s existe o coresponden pozitionala. De exemplu:
INSERT INTO SECTII (Numar, Nume, Buget) VALUES (1,Productie, 40000);
Lista de coloane poate s lipseasc dac se introduc valori n toate coloanele tabelului si n aceast situatie: ordinea valorilor introduse trebuie s respecte ordinea coloanelor tabelului ordinea coloanelor provine din ordinea de definire a atributelor prin instruciunea
CREATE TABLE, precum i din operaiile ulterioare de alterare a tabelului ordinea coloanelor se poate afla prin instruciunea DESCRIBE nume_tabel.
De exemplu, introducerea unei linii n tabelul ANGAJATI(IdAngajat,Nume,Prenume,DataNasterii,Adresa,Functia,Salariu) se poate face cu instruciunea:
INSERT INTO ANGAJATI VALUES(100,Mihailescu,Mihai,1950-04-05,Craiova,Inginer, 3000);
Baze de date, 2008 Prof. Felicia Ionescu 27
Instructiunile UPDATE si DELETEInstructiunile UPDATE si DELETE Instruciunea UPDATE permite actualizarea valorilor coloanelor (atributelor)
din una sau mai multe linii ale unui tabel si are sintaxa: UPDATE nume_tabel SET col1 = expr1 [, . . . n] [WHERE conditie];
Clauza WHERE: actualizarea valorilor se efectueaza numai asupra acelor linii care ndeplinesc condiia dat. Exemplu:
UPDATE ANGAJATI SET Adresa = Bucuresti WHERE Nume = Popescu;
Dac este omis clauza WHERE, vor fi modificate valorile coloanelor din toate liniile tabelului.
Instruciunea DELETE permite tergerea uneia sau mai multor linii dintr-un tabel i are sintaxa:
DELETE FROM nume_tabel [WHERE conditie];
Din tabel se terg acele linii care ndeplinesc condiia dat n clauza WHERE. Dac este omis clauza WHERE, vor fi sterse toate liniile din tabel.
Exemplu: DELETE FROM ANGAJATI WHERE Nume =Ionescu;
Baze de date, 2008 Prof. Felicia Ionescu 28
Constrangeri de integritate (1)Constrangeri de integritate (1) Constrngerile de integritate (integrity constraints) sunt reguli care:
se definesc la proiectarea bazei de date trebuie s fie respectate de orice stare a acesteia astfel incat datele memorate s corespund cat mai bine celor din realitate
Clasificare dupa locul unde se definesc: constrangeri de coloana si constrangeri de tabel (in instructiunea CREATE TABLE)
Clasificare dupa numarul de relatii implicate: constrngeri intra-relaie i constrngeri inter-relaii.
Constrngerile intra-relaie - reguli care se impun n cadrul unei singure relaii; de trei categorii: Constrngeri de domeniu - condiii ce se impun valorilor domeniilor atributelor Constrngeri de tuplu - condiii ce se impun tuplurilor unei relaii prin chei
(primare sau secundare). Constrngeri impuse prin dependene de date (dependene funcionale,
multivalorice sau de jonciune); acestea sunt constrngeri intre valorile atributelor dintr-o relaie
Constrngerile inter-relaii - reguli care se impun ntre dou sau mai multe relaii; asigura integritarea referenial prin intermediul cheilor strine
Baze de date, 2008 Prof. Felicia Ionescu 29
Constrangeri de integritate (2)Constrangeri de integritate (2) Clasificare din punct de vedere al modului de definire: constrngeri
inerente, implicite i explicite. Constrngerile inerente sunt cele ale modelului de date nsui, care nu
trebuie s fie specificate la definirea relaiilor, dar sunt respectate prin modul n care se construiesc relaiile De exemplu: n modelul relaional constrngerea ca valoarea fiecrui atribut s
fie atomic (indivizibil) este o constrngere inerent
Constrngerile implicite sunt reguli care se definesc odat cu definirea schemelor relaiilor, sunt memorate n baza de date i sistemul de gestiune verific i impune automat respectarea acestora Exemple: connstrngerile de domeniu, constrngerile de tuplu i constrngerile
de integritate referenial sunt constrngeri implicite.
Constrngerile explicite sunt constrngeri suplimentare pe care trebuie s le respecte relaiile unei baze de date i care nu sunt impuse automat de sistemul SGBD, ci necesit proceduri speciale de verificare i impunere Exemple:dependenele de date care nu sunt determinate de cheile relaiilor
Baze de date, 2008 Prof. Felicia Ionescu 30
Constrangeri de domeniu (1)Constrangeri de domeniu (1) Constrngerile de domeniu: constrngerea NOT NULL, constrngerea de
valoare implicit (DEFAULT), constrngerea de verificare (CHECK) Constrngerea NOT NULL nsemna c atributul respectiv nu poate lua
valoarea NULL n nici un tuplu al relaiei. Valoarea NULL a unui atribut ntr-un tuplu semnific faptul c valoarea
acelui atribut nu este cunoscut pentru acel tuplu. Exemple: nu se cunoaste deloc data de nastere a unei personalitati istorice; nu se cunoate valoarea unui atribut in momentul inserarii tuplului, dar aceasta
va fi cunoscuta si completat ulterior La crearea unui tabel opiunea NULL este implicit (nu se specific nimic),
sau se poate introduce explicit; optiunea NOT NULL se introduce explicit. Optiunile NULL si NOT NULL se introduc ca si constrangeri de coloana in
instructiunea SQL CREATE TABLE. Exemplu:CREATE TABLE ANGAJATI (
Nume varchar(20) NOT NULL,Prenume varchar(20) NOT NULL,DataNasterii date NULL,Adresa varchar(50) NOT NULL,Functie varchar(20),Salariu numeric);
Baze de date, 2008 Prof. Felicia Ionescu 31
Constrangeri de domeniu (2)Constrangeri de domeniu (2) Constrangerea de valoare implicita a unui atribut (DEFAULT): daca la
inserarea unui tuplu nu se specific valoarea unui atribut, atunci: atributul primete valoarea implicit (dac a fost definit) sau valoarea NULL
(dac nu a fost definit o valoare implicit, dar sunt admise valori NULL); dac nu a fost definit o valoare implicit i nici nu sunt admise valori NULL, se
genereaz o eroare. Exemplu:CREATE TABLE STUDENTI (
Nume varchar (20) NOT NULL,Prenume varchar (20) NOT NULL,Tara varchar (20) DEFAULT (Romania) NULL ) ;
Constrngerea de verificare (CHECK) pentru verificarea valorilor atributelor printr-o conditie care trebuie sa ia valoarea TRUE.
Se introduce ca o constrangere de tabel in instructiunea CREATE TABLE:[CONSTRAINT nume_constrangere] CHECK (conditie); Exemplu:CREATE TABLE ANGAJATI (
Nume varchar(20) NOT NULL,Prenume varchar(20) NOT NULL,Salariu numeric,CONSTRAINT Verificare_Salariu CHECK (Salariu >= 1500 ));
MySql 5.0 nu face verificarea CHECK, chiar daca admite acest cuvnt cheie
Baze de date, 2008 Prof. Felicia Ionescu 32
Constrangeri de tuplu Constrangeri de tuplu O relaie = mulime de tupluri tuplurile unei relaii trebuie s fie distincte
(nu pot exista dou sau mai multe tupluri identice) O supercheie (superkey) este o submulime SK de atribute ale relaiei care
prezint proprietatea de unicitate (orice combinaie de valori ale atributelor supercheii este unic pentru orice stare a relaiei), adic:
ti[SK] tj[SK] dac i j, unde ti si tj sunt 2 tupuri ale relatiei
Rezulta c, dac se cunoate valoarea (combinaia de valori ale atributelor) supercheii, atunci acel tuplu poate fi identificat n mod unic
O cheie candidat (candidate key) este o supercheie ireductibil: Unicitate: nu exist dou tupluri diferite ale relaiei care s conin aceeai
combinaie de valori ale atributelor cheii CK; Ireductibilitate: nu exist nici o submulime proprie, nevid a cheii CK care s
aib proprietatea de unicitate.
O cheie candidat este o supercheie minimal (ireductibil) si poate fi simpl (un singur atribut), sau compus (mai multe atribute)
Proprietatea de unicitate a cheii (candidate) este o constrngere de integritate a tuplurilor
Baze de date, 2008 Prof. Felicia Ionescu 33
Chei primare si secundare (1)Chei primare si secundare (1) Atunci cnd exist mai multe chei candidate, una dintre ele se alege ca i
cheie primar, celelalte chei candidate fiind numite chei secundare (sau unice) O cheie primar (primary key) este o cheie candidat creia proiectantul i
confer un rol special de identificare a tuplurilor si are urmtoarele restricii: Nici o valoare a atributelor cheii primare nu poate fi modificat prin operaii de
actualizare Nu se admit valori de NULL pentru nici unul dintre atributele cheii primare
O cheie secundar (alternativ, unic) (secondary, alternate, unique key) este o cheie candidat care nu a fost desemnat ca i cheie primar; cheile secundare admit valori NULL pentru unele din atributele lor
Alegerea cheii primare dintre mai multe chei candidate este arbitrar, dar, din motive de eficienta, se alege cheia cu cel mai mic numr de atribute
Cheile primare pot fi naturale sau artificiale: O cheie primar alcatuita din atributele existente ale tipului de entitate se numete
cheie natural; in general, cheile naturale sunt chei compuse O cheie primar artificial este un atribut care se adaug n schema relaiei special
pentru identificarea unic a tuplurilor
Baze de date, 2008 Prof. Felicia Ionescu 34
Chei primare si secundare (2)Chei primare si secundare (2) De exemplu, atributul compus {Nume, Prenume, DataNasterii, Adresa} din
relaia ANGAJATI (IdAngajat, Nume, Prenume, DataNasterii, Adresa, Salariu) poate fi considerat cheie candidata si poate fi desemnat ca si cheie primara
O solutie mai eficienta este adaugarea unei chei primare artificiale, IdAngajat:ANGAJATI (IdAngajat, Nume, Prenume, DataNasterii, Adresa, Salariu)
Cheia primar se introduce prin instructiunea CREATE TABLE In general, cheia primar se defineste ca o constrngere de tabel sub forma:
[CONSTRAINT nume_constr] PRIMARY KEY (lista_atribute) Dac cheia primar este simpl (format dintr-un singur atribut), ea se poate
specifica si ca o constrngere de coloana
Cheile secundare se definesc folosind specificatorul UNIQUE n locul specificatorului PRIMARY KEY.
Exemplu:CREATE TABLE SECTII (
IdSectie int PRIMARY KEY,Nume varchar(50) NOT NULL,Buget numeric);
Baze de date, 2008 Prof. Felicia Ionescu 35
Chei primare si secundare (3)Chei primare si secundare (3) Exemplu:
CREATE TABLE ANGAJATI (IdAngajat int PRIMARY KEY AUTO_INCREMENT,Nume varchar(20) NOT NULL,Prenume varchar(20) NOT NULL,DataNasterii Date,Adresa varchar(50),Salariu numeric,[CONSTRAINT UK] UNIQUE [KEY] (Nume,Prenume,DataNasterii,Adresa));
Modul de asigurare a unicitii valorii cheii primare artificiale depinde de sistemul SGBD folosit. De exemplu: In Microsoft SQL Server se pot obine valori unice ale cheii primare folosind
parametrul IDENTITY, care asigur incrementarea valorii atributului cheii la introducerea fiecrei linii noi.
n sistemele Oracle se pot genera chei artificiale folosind obiecte SEQUENCE; un obiect SEQUENCE geneaza un numar unic la fiecare apel al metodei NEXTVAL
In MySQL, se foloseste parametrul AUTO_INCREMENT pentru generareanumerelor unice pentru cheile primare.
SGBD-urile interzic introducerea liniilor (tuplurilor) care vau valori identice ale cheilor primare sau secundare (daca nu exista valori NULL) (Exemple)
Baze de date, 2008 Prof. Felicia Ionescu 36
Constrangeri interConstrangeri inter--relatiirelatii Asocierile (relationships) 1:N ntre multimile de entiti (din modelul Entitate-
Asociere) se realizeaz n modelul relaional prin chei strine Exemplu: Pentru a realiza asocierea 1:N dintre relaiile SECTII si ANGAJATI,
se adaug n relaia ANGAJATI atributul IdSectie, care reprezint identificatorul (numrul) seciei n care lucreaz angajatul respectiv:
ANGAJATI (IdAngajat, Nume, Prenume, DataNasterii, Adresa, Salariu, IdSectie)
IdSectie Nume Buget
1 Productie 400000
2 Proiectare 300000
3 Cercetare 200000
4 Documentare 100000
SECTII
IdAngajat Nume Prenume DataNasterii Adresa Salariul IdSectie
1 Ionescu Ion 1960.01.05 Bucuresti 4000 1
2 Popescu Petre 1965.02.97 Bucuresti 3200 1
3 Vasilescu Ana 1961.03.06 Bucuresti 2000 2
4 Ionescu Ion 1970.03.98 Bucuresti 2000 3
ANGAJATI
ANGAJATISECTII N1
Diagrama E-A
Baze de date, 2008 Prof. Felicia Ionescu 37
Cheia strainaCheia straina Fie doua relatii R1 si R2, intre care exista o asociere cu raportul 1:N
O cheie strin (foreign key) este o submulime FK de atribute ale relaiei R2 care refer relaia R1 (relatia referita) i satisface urmtoarele condiii: atributele cheii strine FK sunt definite pe domenii compatibile cu cele ale
atributelor unei cheii candidate CK a relaiei R1 valorile atributelor FK ntr-un tuplu din relaia R2, fie sunt identice cu valorile
atributelor CK a unui tuplu oarecare din starea curent a relaiei R1, fie sunt NULL Cheia strin reprezint o constrngere referenial intre cele 2 relatii Dou domenii sunt compatibile dac ele sunt comparabile din punct de
vedere semantic (are sens sa fie comparate) n limbajul SQL verificarea domeniilor se rezum la verificarea tipurilor de
date, iar compatibiltatea semantic trebuie s fie asigurat de proiectant Cheia strin se specific la crearea tabelului printr-o constrngere de tabel:
[CONSTRAINT nume_constr] FOREIGN KEY (cheie_straina) REFERENCES relatia_referita (cheie_candidata)
Exemplu:CREATE TABLE ANGAJATI (
IdAngajat int PRIMARY KEY, Nume varchar(20) NOT NULL, Prenume varchar(20) NOT NULL,IdSecie int,UNIQUE (Nume,Prenume), CONSTRAINT FK FOREIGN KEY (IdSectie) REFERENCES SECTII(IdSectie));
Baze de date, 2008 Prof. Felicia Ionescu 38
Mentinerea integritatii referentiale a relatiilor (1)Mentinerea integritatii referentiale a relatiilor (1) Integritatea referenial (referential integrity) este proprietatea bazei de
date prin care orice cheie strina: fie are o valoare care se regsete printre valorile cheii candidate referite fie are valoarea NULL
Pentru mentinerea integritatii referentiale trebuie sa fie inpuse restrictii operaiilor de modificare a strii relaiilor (INSERT, DELETE, UPDATE)
Restriciile care se impun operaiilor de modificare a relaiilor depind de rolul relaiei (relaie care refer, relaie referit, sau poate avea ambele roluri)
Operaia INSERT: ntr-o relaie referit se poate face fr restricii ntr-o relaie care refer (care conine o cheie strin): trebuie s se verifice c n
relaia referit exist un tuplu care are valorile atributelor cheii referite egale cu valorile atributelor cheii strine a tuplului de introdus; dac aceast condiie nu este satisfcut, operaia de introducere este refuzat.
Operatia DELETE: Intr-o relatie care refera se poate face fara restrictii Intr-o relatie referita se poate face tergere restricionat sau tergere n
cascad.
Baze de date, 2008 Prof. Felicia Ionescu 39
Mentinerea integritatii referentiale a relatiilor (2)Mentinerea integritatii referentiale a relatiilor (2) tergerea restricionat interzice tergerea unui tuplu din relaia referit
dac acesta este referit de un tuplu din relaia care o refer tergerea n cascad permite tergerea unui tuplu din relaia referit; dac
tuplul ters era referit de unul sau mai multe tupluri, atunci se terg i acestea din relaia care o refer; dac tuplurile terse din relaia care refer sunt, la rndul lor referite de alte tupluri, atunci trebuie s fie terse i acestea, .a.m.d.; se execut deci o tegere n cascad
Operaia UPDATE poate fi privit ca o tergere urmat de o introducere, deci restriciile de actualizare reprezint combinaia restriciilor de introducere i de tergere
In limbajul SQL se specifica opiunile ON DELETE si ON UPDATE constrngerii de cheie strin; valorile posibile ale acestor opiuni sunt: RESTRICT - pentru tergerea restricionat (este valoare implicita) CASCADE - pentru tergerea n cascad;
Exemplu:CREATE TABLE ANGAJATI (
IdAngajat int PRIMARY KEY,Nume varchar (20) NOT NULL, . . . . . . . . . . . . . . . . . . . . . . . .
CONSTRAINT FK FOREIGN KEY (IdSectie) REFERENCES SECTII(IdSectie) ,ON DELETE CASCADE );
Baze de date, 2008 Prof. Felicia Ionescu 40
Indexarea relatiilorIndexarea relatiilor Timpul de execuie a operatiilor asupra datelor din relatii depinde de modul
de reprezentare a mulimii de elemente (tupluri) ale relaiilor, memorate ca inregistrari in fisiere pe disc
Operaiile de cutare, inserare i tergere a elementelor ntr-o mulime se execut mai rapid dac elementele mulimii sunt reprezentate printr-o colecie ordonat, ca de exemplu arbori sau tabele de dispersie (hash table)
Dei o relaie nu presupune ordonarea tuplurilor sale, pentru accelerarea operaiilor de cutare, inserare i tergere, se folosesc colecii ordonate
Un index al unei relaii este o structur auxiliar memorat n baza de date care permite accesul rapid la tuplurile relaiei prin ordonarea acestora
Structuri folosite in indexare: arbori binari ordonati, tabele de dispersie (hash-tables) etc.
Exista dou categorii de indexuri: un index primar al relaiei, care determin localizarea tuplurilor n fiierele bazei
de date zero, unul sau mai multe indexuri secundare, care nu modific localizarea
tuplurilor, dar sunt folosii pentru regsirea rapida a tuplurilor dup un criteriu dat
Baze de date, 2008 Prof. Felicia Ionescu 41
Indexul primar si indexuri secundareIndexul primar si indexuri secundare Indexul primar (primary index) se definete pe unul sau mai multe atribute ale
relaiei i reprezint cheia (eticheta) dup care se ordoneaz tuplurile relaiei In general, sistemele SGBD definesc n mod implicit indexul primar pe cheia
primar a relaiei Operaiile de interogare care se fac dupa valoarea atributului index primar se
execut eficient, fiind o cautare intr-o multime ordonata dupa acea valoare Exemplu: Care este numele angajatului cu identificatorul 2?
Operatiile de interogare care se fac dupa valoarea altor atribute (decat indexul primar) se executa mult mai ineficient, fiind o cautare intr-o multime neordonata dupa acea valoare Exemplu: Care este adresa angajatului cu numele Ionescu ?
Pentru rezolvarea mai eficient a unor astfel de interogri se pot defini indexuri secundare pe acele atribute care intervin frecvent n interogri
Un index secundar pe un atribut A al unei relaii (secondary index) este o structur care conine o mulime de perechi (v,L) ordonate dup v; fiecare pereche corespunde unui tuplu al relaiei, v este valoarea atributului A, iar L este adresa tuplului respectiv n structura indexului primar al relaiei
Un index secundar nu modific adresa de memorare a unui tuplu (care este coninut n structura indexului primar), dar conine informaii care permit identificarea rapid a unui tuplu dup valoarea atributului acestui index
Baze de date, 2008 Prof. Felicia Ionescu 42
Definirea indexurilor secundareDefinirea indexurilor secundare Indexurile secundare au avantaje si dezavantaje:
Avantaje: Accelereaza operatiile de interogare care se fac dupa valoarea indexului Dezavantaje: ocupa spatiu de memorie si consuma timp la actualizarea relatiilor
n general, se recomand utilizarea unui numr ct mai mic de indexuri secundare, definite pe atributele care intervin cel mai frecvent n interogari
Indexurile sunt folosite pentru mbuntirea performanelor bazelor de date i nu fac parte din modelul relaional de baz.
Majoritatea sistemelor SGBD conin instruciuni pentru crearea indexurilor:CREATE [optiuni] INDEX nume_index ON tabel (lista_atribute);
Forma exact i opiunile acestei instruciuni variaz de la un sistem SGBD la altul. Una din opiunile care se pot introduce n instruciunea CREATE INDEX este opiunea UNIQUE, care specific faptul c nu pot exista dou tupluri cu aceeai combinaie de valori ale atributelor indexului, deci acele atribute reprezint o cheie unic a relaiei.
Unele sisteme SGBD adaug cte un index secundar pentru fiecare cheie unic, definit prin constrngerea UNIQUE din comanda CREATE TABLE:
ALTER TABLE angajati ADD UNIQUE INDEX Pr (Prenume);
Baze de date, 2008 Prof. Felicia Ionescu 43
Baze de date, 2008 Prof. Felicia Ionescu 1
Capitolul 3: Interogarea bazelor de dateCapitolul 3: Interogarea bazelor de date Limbaje de interogare Algebra relationala si calculul relational Operatiile pe multimi ale algebrei relationale
Reuniunea Intersectia Diferenta Produsul Cartesian
Operatiile speciale ale algebrei relationale Selectia Proiectia Jonctiunea Diviziunea
Interogarea bazelor de date Interogarea intr-o singura relatie Interogarea in doua sau mai multe relatii
Baze de date, 2008 Prof. Felicia Ionescu 2
Limbaje de interogareLimbaje de interogare Interogarea (query): operaia prin care se obin informatiile dorite dintr-o
baz de date, selectate conform unui anumit criteriu (condiie); Limbaje de interogare: abstracte si concrete (reale - implementari in diferite
SGBD-uri) Limbaje de interogare abstracte: algebra relationala si calculul relational Algebra relationala (relational algebra) - const dintr-o mulime de operaii
care au ca operanzi relaii, iar rezultatul este tot o relaie Calculul relaional (relational calculus) - bazat pe calculul predicatelor -
exprim o interogare definind rezultatul dorit ca expresie de calcul relaional Calculul relational al tuplurilor foloseste variabile de tuplu (variabile
definite pe mulimea tuplurilor unei relaii) Calculul relational al domeniilor foloseste variabile de domeniu (variabile
definite pe domenii de definiie ale atributelor) Cele trei limbaje formale sunt echivalente din punct de vedere al interogarilor Limbajele de interogare reale sunt definite pe baza unuia sau altuia din
limbajele de interogare abstracte, sau pe o combinaie a acestora. De exemplu, limbajul SQL2 este n cea mai mare parte bazat pe algebra
relaional, dar mai conine i construcii derivate din calculul relaional.
Baze de date, 2008 Prof. Felicia Ionescu 3
Algebra relationalaAlgebra relationala Algebra relaional (relational algebra) - interogrile sunt expresii compuse
din operatii care au ca operanzi relatii si rezultatul este o relatie Operatiile algebrei relationale: operatii pe multimi si operatii speciale, la care
se adauga operatia de redenumire (rename) a atributelor (E.Codd) Operatiile relationale pe multimi acioneaz asupra relaiilor vzute ca mulimi
(de tupluri), fr a lua n consideraie compoziia fiecrui tuplu; acestea sunt: Reuniunea Intersecia Diferena Produsul cartezian
Operaiile relaionale speciale iau n consideraie compoziia tuplurilor, formate din valori ale atributelor relaiilor; acestea sunt: Restricia Proiecia Jonciunea Diviziunea
Proprietatea de nchidere: operanzii (unul sau doi operanzi) sunt relatii, rezultatul este o relaie; aceast proprietate permite operaii imbricate: proiecia unei jonciuni etc.
Baze de date, 2008 Prof. Felicia Ionescu 4
Operatia de ReuniuneOperatia de Reuniune Reuniunea (union) a dou relaii compatibile r(R) i s(S):
q = r s = { t | t r or t s} Pentru ca r si s sa fie compatibile, trebuie ca:
r si s sa aiba acelasi grad (acelasi numar de atribute) Atributele corespondente (in ordine pozitionala) sa fie compatibile
Tuplurile care aparin ambelor relaii se introduc n relaia rezultat o singur dat (nu se duplic)
Relatia rezultat are un numar de tupluri (cardinalitatea) mai mic sau egal cu suma numerelor de tupluri ale celor doi operanzi
Exemplu:
r s
A B
1
2
1
A B
2
3s
r
A B
1
2
1
3
Baze de date, 2008 Prof. Felicia Ionescu 5
Operatiile de Intersectie si DiferentaOperatiile de Intersectie si Diferenta Intersectia (set-intersection) a dou relaii compatibile r(R) i s(S):
q = r s = { t | t r and t s}Exemplu:
A B
121
A B
11
r
r - s
A B
2r s
Diferenta (set-difference) a dou relaii compatibile r(R) i s(S):q = r - s = { t | t r and t s}
Exemplu:A B
121
A B
23
rs
A B
23
s
Reuniunea si intersectia sunt comutative si asociative (r s = s r ; r (s t) = (r s) t); diferenta nu este nici nici comutativa, nici asociativa
Baze de date, 2008 Prof. Felicia Ionescu 6
Operatia de Produs CartesianOperatia de Produs Cartesian Produsul cartesian (Cartesian-Product) a dou relaii r(R) i s(S):
q = r x s = { tp | t r and p s}, Q = R S Se presupune ca multimile R si S sunt disjuncte, adica R S = Daca atributele din R si S nu sunt disjuncte, atunci (unele):
se pot redenumi (RENAME nume_atribut AS noul_nume_atribut) sau se pot califica cu numele relatiei careia ii apartin (folosind operatorul punct)
Tuplurile relaiei rezultat se obtin prin concatenarea valorilor atributelor fiecrui tuplu din prima relaie cu valorile atributelor tuturor tuplurilor din a doua relaie
Relatia rezultata are numarul de tupluri (cardinalitatea) egal cu produsul numarului de tupluri ale relatiilor operand
Exemplu:A B
1
2r
C D
10102010
E
aabb
s
A B
11112222
C D
1010201010102010
Eaabbaabb
r x s
Baze de date, 2008 Prof. Felicia Ionescu 7
Exprimarea operatiilor pe multimi in SQL (1)Exprimarea operatiilor pe multimi in SQL (1) Reuniunea:
SELECT lista_coloane1 FROM tabel1 [WHERE condiie1]UNIONSELECT lista_coloane2 FROM tabel2 [WHERE condiie2];
Exemplu (MySQL, Intreprindere): SELECT Nume, Prenume, Adresa FROM FURNIZORIUNIONSELECT Nume, Prenume, Adresa FROM CLIENTI;Afiseaza numele tuturor furnizorilor si al clientilor, precum si adresa acestora
Intersectia:SELECT lista_coloane1 FROM tabel1 [WHERE condiie1]INTERSECTSELECT lista_coloane2 FROM tabel2 [WHERE condiie2];
Diferenta:SELECT lista_coloane1 FROM tabel1 [WHERE condiie1]MINUSSELECT lista_coloane2 FROM tabel2 [WHERE condiie2];
Baze de date, 2008 Prof. Felicia Ionescu 8
Exprimarea operatiilor pe multimi in SQL (2)Exprimarea operatiilor pe multimi in SQL (2)
Produsul Cartesian:SELECT * from R, S;SELECT lista_col_R, lista_col_S from R, S;Exemplu (MySQL, Intreprindere): SELECT * FROM ANGAJATI, SECTII;SELECT IdAngajat, Nume, Prenume, DataNasterii, Adresa, Functia,Salariu, ANGAJATI.IdSectie, SECTII.IdSectie, Denumire, BugetFROM ANGAJATI, SECTII;
Produsul Cartesian este implementat in toate SGBD-urile (instructiunea SQL SELECT)
In sistemul Oracle sunt implementate toate operatiile pe multimi In alte SGBD-uri nu sunt implementate toate operaiile pe mulimi;
in SQL Server 2000 si in MySQL 5.0 nu sunt implementate operaiile INTERSECT i MINUS
Baze de date, 2008 Prof. Felicia Ionescu 9
Operatia de Selectie Operatia de Selectie Selectia (sau restrictia select, restriction) intr-o relatie r(R) - definita astfel:
p(r) = {t | t r and p(t)}unde p, predicatul selectiei, este o formula de calcul propozitional compusa din
termeni conectati prin operatorii and (), or (v) not () Fiecare termen este de forma:
op sau op , undeop este un operator de comparatie: =, , >, . 10000000;
Baze de date, 2008 Prof. Felicia Ionescu 10
Operatia de ProiectieOperatia de Proiectie Proiectia (project) pe atributele A1, A2, .. Ak intr-o relatie r(R) se noteaz:
A1, A2, Ak (r), unde A1 R, A2 R, Ak R Rezultatul este o relatie cu k atribute, cele din lista data Daca {A1, A2, Ak} nu contine o supercheie, pot sa apara tupluri duplicat;
teoretic, tuplurile duplicat se elimina, dat fiind ca rezultatul este o multime Exemplu:
A B C
10
20
30
40
1
1
1
2
A C
1
1
1
2
=
A C
1
1
2A,C (r)
r
In limbajul SQL proiectia se exprima astfel:SELECT DISTINCT A1, A2, Ak FROM RDaca nu se introduce parametrul DISTINCT, nu se elimina tuplurile duplicat
Exemplu (MySQL, WORLD): SELECT DISTINCT CountryCode FROM City;
Baze de date, 2008 Prof. Felicia Ionescu 11
Operatia de jonctiune naturala (1)Operatia de jonctiune naturala (1) Jonctiunea naturala (natural join) combina tuplurile din doua relatii Fie multimile de atribute: A = {A1,A2,...Am} , B= {B1,B2,...Bn}, C={C1,C2,Ck}
si doua relatii r(R) si s(S), unde: R ={A, B}, S = {B, C} deci atributele R S = B = {B1, B2,...Bn} sunt comune celor dou relaii
Jonciunea natural este o relatie q = r >< s, care se obine n felul urmtor: se calculeaz produsul cartesian al celor doua relatii: p = r x s, P = {A, R.B, S.B, C}; din tuplurile produsului cartesian se selecteza acele tupluri care au valori egale
pentru atributele comune (B1, B2,...Bn): R.B = S.B, adic R.B1=S.B1, R.B2=S.B2,.. se face proiectia rezultatului pe multimea de atribute R S = {A, B, C}
Schema relatiei rezultat este Q = R S = {A, B, C} q = r >< s = A,B,C (r.B1=s.B1 AND r.B2=s.B2 AND r.Bn = s.Bn) (r x s)
Atributele comune R.B si S.B trebuie s fie compatibile in cele doua relatii; daca sunt compatibile, ele se considera identice chiar dac au denumiri diferite, si n reuniunea atributelor R S se introduc o singur dat
Cazul cel mai frecvent de jonctiune naturala: intre doua relatii asociate (1:N), atributul comun fiind cheia straina cheia primara (candidata) referita
Baze de date, 2008 Prof. Felicia Ionescu 12
Operatia de jonctiune naturala (2)Operatia de jonctiune naturala (2) Exemplul 1: r >< s = A,B,C,D,E (r.D = s.D ) (r x s)
A B
12412
C D
aabab
D
abcde
E
sr
A B
12412
C D
aabab
E
r >< s In SQL trebuie sa fie introduse explicit lista atributelor rezultatului si conditiile
de egalitate ale atributelor comune: SELECT A,B,C,D,E FROM R, S WHERE R.D = S.D;
Exemplul 2: ANGAJATI >< SECTII; cheia straina: ANGAJATI.IdSectie SELECT IdAngajat, Nume, Prenume, DataNasterii, Adresa, Functia, Salariul,
ANGAJATI.IdSectie, Denumire, Buget FROM ANGAJATI, SECTII WHERE ANGAJATI.IdSectie=SECTII.IdSectie;
Exemplul 3: (MySQL - SAKILA) city >< country; cheia straina: city.country_idSELECT city_id, city, city.country_id, city.last_update, country, country.last_update
from city, country where city.country_id=country.country_id order by city;
Baze de date, 2008 Prof. Felicia Ionescu 13
Operatia de diviziuneOperatia de diviziune Fie relatiile r(R) si s(S), unde:
R = {A, B} unde A={A1,A2,..Am}, B={ B1,B2,..Bn} S = {B}
Relaia q = r s are schema Q = R S = {A} si: r s = { t | t R-S (r) u s ( tu r ) }
unde tu inseamna concatenarea tuplurilor t si u n limbajul SQL, diviziunea se exprim printr-o instruciune SELECT,
introducnd explicit toate conditiile impuse valorilor atributelor Exemplu:
A B
1231213
r
B
12
s
A
r s
Baze de date, 2008 Prof. Felicia Ionescu 14
Concluzii: operatiile algebrei relationaleConcluzii: operatiile algebrei relationale Algebra relaional este o colecie de operaii asupra relaiilor Cele opt operaii propuse de E.F.Codd nu constituie o mulime minim de
operaii ale algebrei relaionale Mulimea minim de operaii ale algebrei relaionale consta din cinci operaii
primitive, pe baza crora se poate construi orice expresie de algebra relaionala: Reuniunea Diferena Produsul Cartesian Restricia (selectia) Proiecia
Celelalte operaii se pot exprima prin intermediul acestora: Intersecia se poate exprima prin expresia: R S = R (R S); Jonciunea este o proiecie a unei restricii a produsului cartezian al relaiilor; Diviziunea este o proiecie a unei restricii asupra relaiei demprit
Si celelalte trei operaii sunt deosebit de utile n formularea interogrilor, astfel nct algebra relaional a pstrat toate cele opt operaii propuse de E.F.Codd, la care s-a adugat operaia de redenumire a atributelor
Baze de date, 2008 Prof. Felicia Ionescu 15
Formularea interogarilorFormularea interogarilor Interogarea este operatia prin care se obtin informaiile dorite (care
indeplinesc o anumita conditie) dintr-o baz de date. O interogare: se formuleaza mai intai n limbaj natural, apoi se exprima ntr-un limbaj abstract de interogare (algebra relaional sau
calculul relaional), se transpune n limbajul de interogare al SGBD-ului folosit (ex., limbajul SQL), iar aplicatia client transmite SGBD-ului instructiunea (sau instructiunile) obtinute
Sistemul SGBD prelucreaza programul interogarii n mai multe faze: analiza lexical, sintactic i semantic optimizarea interogarii generarea codului executia si returnarea rezultatului
n algebra relaional o interogare se formuleaz printr-o expresie care defineste urmtoarele elemente: Lista atributelor relaiei rezultat, care se numesc atribute de proiecie; Lista relaiilor din care se extrag informaiile Condiiile pe care trebuie s le ndeplineasc tuplurile relaiei rezultat.
Sunt posibile dou situaii: interogri care se rezolv n cadrul unei singure relaii interogri care se rezolv folosind dou sau mai multe relaii ale bazei de date
Baze de date, 2008 Prof. Felicia Ionescu 16
Interogari intrInterogari intr--o singura relatieo singura relatie Interogare in relatia r(R):
Expresia de algebra relationala: q = lista_atribute p(r) Instructiunea SQL: SELECT lista_atribute FROM R WHERE p = TRUE;
Exemplul 1: Fie relaia ANGAJATI i interogarea: Care sunt numele i prenumele angajailor care au un salariu mai mare sau egal cu 2000?. Expresia de algebr relaional: q = Nume, Prenume Salariul >= 2000 (ANGAJATI) Instruciunea SQL: SELECT Nume, Prenume, Salariul FROM ANGAJATI WHERE Salariul >= 2000;
Exemplul 2: (MySQL - WORLD): Care sunt numele si populatia oraselor din tara cu codul ROM ? Expresia de algebr relaional: q = Name, Population country_id=ROM (city) Instructiunea SQL: SELECT Name, CountryCode, Population FROM city
WHERE CountryCode=ROM'; Exemplul 3: Fie relaia ANGAJATI i interogarea: Care sunt numele,
prenumele si adresa angajailor care lucreaza in sectia numarul 1?. Expresia de algebr relaional: q = Nume, Prenume, Salariul IdSectie = 1 (ANGAJATI) Instructiunea SQL: SELECT Nume, Prenume, Adresa FROM ANGAJATI WHERE IdSectie=1;
Baze de date, 2008 Prof. Felicia Ionescu 17
Interogari in doua sau mai multe relatii Interogari in doua sau mai multe relatii Daca atributele de proiecie i atributele din condiia de interogare nu aparin
unei singure relaii, pentru rezolvarea interogrii trebuie s fie folosite toate acele relaiile care, mpreun, conin aceste atribute
Conceptual, o astfel de interogare se rezolv astfel: se construieste mai nti o relaie care s conin toate atributele implicate prin
combinarea relaiilor necesare, folosind operaii de produs cartezian sau jonciuni; in relatia obtinuta se aplica o selectie (restrictie) (cu condiia de interogare p); apoi se face proiecia (pe atributele de proiecie).
Expresia generala de algebra relationala a interogarii este:q = lista_atribute p(r x s x t...)
Daca intre relatiile din produsul cartesian exista atribute comune care trebuie sa aiba valori egale (de regula, perechile cheie strin - cheie candidata) atunci se vor face operaii de jonciune:q = lista_atribute p AND conditii-join(r >< s >< t...)
In limbajul SQL, o interogare se exprima prin forma generala a instructiunii SELECT, in care clauza WHERE combina atat conditiile impuse valorilor atributelor (predicatul p) cat si conditiile de jonctiune naturala (egalitatea valorilor atributelor comune)
Baze de date, 2008 Prof. Felicia Ionescu 18
Exemplu: interogare in doua relatiiExemplu: interogare in doua relatii Fie interogarea: Care sunt numele, prenumele, funcia, salariul i denumirea
seciei n care lucreaz angajaii? Expresia de algebr relaional este:
q = Nume, Prenume, Functia, Salariul, Denumire (ANGAJATI >< SECTII) Instructiunea SQL corespunzatoare acestei interogri:
SELECT Nume, Prenume, Functia, Salariul FROM ANGAJATI, SECTIIWHERE SECTII.IdSectie = ANGAJATI.IdSectie
Se efectueaza o navigare n baza de date, pe atributul comun (IdSectie)
Denumire
Nume Prenume DataNasterii AdresaIdAngajat
IdSectieBuget
ANGAJATI
SECTIISalariul IdSectie
Fie interogarea: Care sunt numele, prenumele, funcia i salariul angajailor care lucreaz n secia cu denumirea Productie?
q = Nume, Prenume, Functia, Salariul Denumire= Productie (ANGAJATI >< SECTII)SELECT Nume, Prenume, Functia, Salariul FROM ANGAJATI, SECTII
WHERE SECTII.IdSectie = ANGAJATI.IdSectie AND Denumire = Productie;
Baze de date, 2008 Prof. Felicia Ionescu 19
Exemplu: interogare in trei relatii (1)Exemplu: interogare in trei relatii (1) Fie urmatoarele relatii asociate din baza de date SAKILA (MySQL):
film (film_id, title, description, release_year, ....) category (category_id, name, last_update) film_category (film_id, category_id, last_update)
film film_category category1 1NN
Interogarea: Care sunt titlul (film.title) si categoria(category.name) filmelor din baza de date sakila ?q = title,name (film >< film_category >< category)
Instructiunea SQL:SELECT title, name
FROM film, film_category, category WHERE film.film_id=film_category.film_id AND
category.category_id= film_category.category_id;
Baze de date, 2008 Prof. Felicia Ionescu 20
Exemplu: interogare in trei relatii (2)Exemplu: interogare in trei relatii (2) Detalierea interogarii: Care sunt titlurile filmelor, numele categoriei (name) i
anul lansrii (release_year) pentru cele din categoria actiune (Action)? Care sunt filmele (film_id, title, description etc) i category_id acestora?
q1(Q1) = film >< film_category unde Q1 ={film_id, title, description, release_year, ...., category_id, last_update} Atributul comun pe care s-a efectuat jonctiunea este scris ingrosat (bold)
Care sunt filmele si numele categoriei (name) acestora?q2(Q2) = q1 >< category = film >< film_category >< category unde Q2 = {film_id, title, description, release_year, ...., category_id,
film_category.last_update, name, category.last_update} Care sunt titlurile filmelor, numele categoriei i anul lansrii filmelor din
categoria Action?q(Q) = name = Action (q2) = name = Action (film >< film_category >< category )
Instructiunea SQL:SELECT title, name, release_year FROM film, film_category, category
WHERE film.film_id = film_category.film_id ANDfilm_category.category_id = category.category_id ANDname = Action;
Baze de date, 2008 Prof. Felicia Ionescu 21
Baze de date, 2008 Prof. Felicia Ionescu 1
Capitolul 4: Dezvoltarea sistemelor de baze de dateCapitolul 4: Dezvoltarea sistemelor de baze de dateFazele de dezvoltare a bazelor de date Colectarea si analiza cerintelor Proiectarea bazelor de date
Proiectarea conceptuala a bazelor de date Alegerea unui SGBD Proiectarea logica a bazelor de date Proiectarea fizica a bazelor de date
Implementarea bazelor de dateDezvoltarea aplicatiilor de baze de date Limbaje procedurale de extensie a limbajului SQL
Limbajul Transact-SQL Cursoare, proceduri stocate, functii, triggere
Limbajul SQL integrat (Embeded SQL) Interfete de programare a aplicatiilor de baze de date
Interfata ODBC Interfata JDBC
Baze de date, 2008 Prof. Felicia Ionescu 2
Dezvoltarea sistemelor de baze de date (1)Dezvoltarea sistemelor de baze de date (1) Sistemul informatic (information system) al unei organizatii include toate
resursele acelei organizaii care sunt implicate n colectarea, administrarea, utilizarea i diseminarea informaiilor
Sistemele informatice: Pana in anii 1970 erau sisteme de fiiere (pe disc sau band magnetic) Actual se folosesc sisteme de baze de date, care permit gestionarea unor
volume de date mari ntr-un timp redus, cu protecia si securitatea datelor Fazele de dezvoltare a sistemelor de baze de date:
Analiza i definirea sistemului: definirea scopului sistemului de baze de date, a utilizatorilor i a aplicaiilor acestuia
Proiectarea sistemului: n aceast etap se realizeaz proiectul logic i proiectul fizic al sistemului, pentru un anumit SGBD ales
Implementarea: este etapa n care se scriu definiiile obiectelor bazei de date (tabele, vederi, etc.) i se implementeaz aplicaiile software
Testarea i validarea: noul sistem de baze de date este testat i validat ct mai riguros posibil
n mod tipic, dezvoltarea unui sistem de baze de date const din: dezvoltarea structurii si a continutului bazei de date dezvoltarea modulelor de prelucrare a datelor
Baze de date, 2008 Prof. Felicia Ionescu 3
Dezvoltarea sistemelor de baze de date (2)Dezvoltarea sistemelor de baze de date (2) Fazele importante de dezvoltare a sistemelor de baze de date sunt:
Testarea datelor
Faza 1: Colectarea i analiza cerinelor
Cerine de date Cerine de prelucrare
Faza 2: Proiectare conceptual
Proiectarea schemei conceptuale i a schemelor externe (independente de SGBD)
Proiectarea tranzaciilor (independente de SGBD)
Faza 3: Alegerea unui SGBD
Faza 4: Proiectare logic
Proiectarea schemei conceptuale i a schemelor externe (dependente de SGBD)
Faza 5: Proiectare fizic
Proiectarea schemei interne (dependent d