Proiectare Baze de date.pdf

download Proiectare Baze de date.pdf

of 194

description

Proiectare Baze de date

Transcript of Proiectare Baze de date.pdf

  • 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