introd in bd[1].ppt

92
Introducere in Introducere in Baze de date Baze de date

Upload: jeorjette-dizzy

Post on 09-Nov-2015

258 views

Category:

Documents


1 download

TRANSCRIPT

  • Introducere in Baze de date

  • Modele de dateO problema fundamentala a unui SGBD este modul in care datele sunt organizate in vederea stocarii si exploatarii lor de catre aplicatii. Din punct de vedere istoric, in anii 60 au existat doua modele de organizare a datelor care au fost apoi abandonate din cauza problemelor pe care le generau:

    Modelul ierarhicModelul retea

  • MODELUL IERARHIC folosit de IBM in sistemul IMS (care inca este unul dintre produsele furnizate de aceasta firma), in care organizarea este sub forma arborescentanodurile contin date si legaturi (pointeri) catre nodurile fiuhttp://www-306.ibm.com/software/data/ims/

  • MODELUL RETEAinregistrarile sunt structurate sub forma unui graf orientat, fiecare nod putand avea mai multe inregistrari tata si mai multi fii. au existat mai multe sisteme de gestiune si limbaje de programare dezvoltate pe baza acestui model (de exemplu limbajul COBOL).

  • DEZAVANTAJEDezavantajul principal al acestor doua modele este ca accesul la o inregistrare necesita navigarea prin arbore sau graf pentru a o localiza.

    Din acest motiv apar o serie de probleme mai ales legate timpul necesar scrierii de noi programme si a detectarii anomaliilor care pot sa apara in proiectarea bazei de date.

  • Modelul de date relationalOfera cadrul specificarii unor structuri de date particulare, constrangeri aplicate asupra seturilor de date asociate structurilor si instrumente pentru manipularea datelor:Istoric (Codd (1970), bazat pe teoria matematica a relatiilor introduce relatiile ca structuri de date si algebra/calcul relational pentru specificarea interogarilorRelatiile = STRUCTURI de DATE, incorporeaza constrangeri de integritate, permit interogari si capabilitati de actualizare Argumente Concept unic de modelare a datelor : relatia = tabele 2D, permite utilizarea de limbaje de manipulare a datelor , simple, puterniceLarg raspandit : IBM, Informix, Microsoft, Oracle, SybaseModele recente competitoare : OO, XML, sintetice ( OO-relational, BD-XML)

  • Modelul de date relationalDatele sunt stocate doar ca valori; nu exista pointeri sau navigare prin date;Face posibila dezvoltarea de limbaje de cereri de nivel inalt in care utilizatorul specifica ce date doreste si nu cum se ajunge la rezultat, modul in care este calculat acesta fiind in sarcina sistemului de gestiune (exemplu de astfel de limbaj: SQL)Furnizeaza o baza solida pentru problemele de corectitudine a datelor (redundanta, anomalii, etc)Permite tratarea problemelor de independenta a datelorEste extensibil, putand fi utilizat si pentru modelarea si manipularea de date complexe

  • Terminologie, definitiiFie domeniile D1, D2, . Dn , o relatie r este un subset al produsului D1 x D2 x x Dn si este reprezentata de un set de n-tuple (A1, A2, , An) , unde Ai DiDomeniul Ai notat dom(Ai).Gradul relatiei R este determinat de numarul de atribute din R.Schema relatiei = numele relatiei + (numele fiecarui camp: domeniul fiecarui camp)

    Relatia constructia de baza, ea se constituie in: Instanta relatiei TABELASchema relatiei antetul coloanelor tabeleiNumele relatiei , domenii pentru campuri (atribute)

  • Baza de date si atributeBaza de date set de relatiiStocarea informatiei ca o singura relatie ar conduce la :Redundanta informatiei Necesitatea utilizarii de valori de atribute de tip null Informatia este organizata - impartita, fiecare relatie detine doar o parte Teoria normalizarii proiectarea schemelor relationale optimale

  • Baza de date si atributeAtributeFiecare atribut al unei relatii poseda un nume (un atribut este un domeniu cu nume)

    Valorile atributelor sunt atomice (indivizibile, nonmultivaloare,noncompozite) =>setul valorilor permise pentru atribut domeniul atributului, domeniul este atomic daca membrii sunt atomici

    Valoarea speciala null e membra a fiecarui domeniu

    Domeniile sunt restrictive in modelul relational , in OO sunt permise liste, clase.. In XML structuri ierarhice

  • Schema relatieiSchema relatieiFie A1, A2, , An atribute

    R = (A1, A2, , An ) reprezinta schema relatieiSchema stabileste structura relatiei, reprezinta definitia relatieiIntegreaza si informatia referitoare la chei, constrangeriContinutul unei relatii (vazuta ca o tabela) poate varia in timp: se pot adauga sau sterge linii sau se pot modifica unele dintre valorile din liniile existente.Ceea ce ramane constant, este structura relatiei: numele relatiei, numarul si tipul atributelor salleAtributele unei relatii formeaza un set , nu o lista

  • Instanta relatieiInstanta unei relatii reprezinta valorile curente ale datelor pentru o relatie,sunt specificate prin tabela

    Un element t al relatiei r este o tupla (reprezentat printr-o linie in tabela relatiei)

    Ordinea tuplelor (randurilor, inregistrarilor ) nu e relevanta

    Ordinea coloanelor nu e relevanta, cardinalitatea unei relatii = numarul de linii din instanta curenta

  • CheiCheie a unei relatii - un subset al atributelor relatiei ce satisface proprietatile : identificare unica pentru fiecare tupla a relatiei prin valorile atributelor ce compun cheia , neredondanta astfel incat subsetul atributelor este minimalCheia unei relatii este o caracteristica a schemei acesteia si nu este determinata prin inspectarea valorilor aflate la un moment dat in relatie.Observatie: Orice relatie are cel putin o cheie: deoarece intr-o relatie nu pot exista doua elemente identice, rezulta ca multimea tuturor atributelor relatiei este cheie sau contine cel putin o cheie.In literatura de specialitate si in sistemele de gestiune a bazelor de date exista trei alte concepte legate de cheie Cheie primara (eng. Primary key)Cheie straina (eng. Foreign key)Supercheie (eng. Superkey)

  • CheiSuper - cheie este reprezentat de un set ce contine unul sau mai multe atribute ale caror valori determina unic fiecare entitate din set (cheie compozita creata de un grup de atribute). In orice relatie exista cu certitudine o cheie, gasirea unei chei = determinarea setului minimal de atribute ce ofera identificare unica

    Cheie candidat - este o super cheie minimala (pentru aceeasi entitate pot exista mai multe atribute cu rol de cheie|)Pentru orice relatie se desemneaza dupa anumite criterii o cheie privilegiata din setul cheilor candidat ca si cheie primara (distinctia este doar operationala)Cheia primara este cea utilizata din setul de chei candidate pentru identificarea unica a tuplelor relatiei

  • Cheie strainaIn modelul relational legaturile se realizeaza prin mecanismul de propagare a cheilor => cheia straina

    O schema relationala poate poseda un atribut ce corespunde unei chei primare a unei alte relatii, atribut numit cheie straina astfel incat :

    pentru fiecare valoare a lui FK( cheie straina) din relatia R2 (referita) exista o valoare identica a cheii K din relatia R1 ( de referinta) => cheia straina este rezultatul propagarii unei chei primareIntegritate referentiala - toate valorile unei chei straine trebuie sa se regasesca printre valorile cheii corespunzatoare din relatia referita

  • VALORI NULEUneori, unele elemente ale unei relatii (celule ale tabelei) nu au nici o valoare concreta. Se spune ca in acel loc exista o valoare nula.

    Definitie: Valoare nula (eng. Null value) = o valoare diferita de oricare alta si care modeleaza o informatie necunoscuta sau o informatie inaplicabila.Modelarea unei informatii necunoscute - la un moment ulterior aceste valori nule vor fi inlocuite cu valori nenule care specifica informatia respectiva

  • CORECTITUDINEA DATELORIn cadrul teoriei bazelor de date relationale, o relatie contine date corecte daca acestea verifica setul de dependente functionale (sau de alt tip) atasat relatiei respective Sistemele de gestiune a bazelor de date existente , pun la dispozitie mecanisme de verificare numite constrangeri de integritate. Constrangerile de integritate se definesc fie la crearea tabelei , fie ulterior.

    SGBD-ul va rejecta orice operatie care violeaza vreuna dintre constrangerile definite pe tabela respectiva.

  • Constrangeri in BD relationaleDe domeniuDe cheiDe integritate a entitatilorIntegritate referentialaGenerale

  • Constrangeri

    Constrangeri de domeniu specifica faptul ca fiecare atribut A trebuie sa fie atomic si din domeniul de date dom(A).

    Constrangeri de cheiElementele unui set sunt distincte = > tuplele relatiei sunt distincte => doua tuple nu poseda acelasi set de valori pentru atributele lor : t1[SK] t2[SK]

  • ConstrangeriConstrangeri de integritate a entitatilorDatele incorecte nu pot fi stocate in baza de datevalorile cheii primare nu pot fi nuleAtributele ce nu contin valori NULL pot fi specificate prin intermediul constrangerii NOT NULL

    Constrangeri de integritate referentialaSpecificate intre doua relatii, utilizate pentru a mentine consistenta intre tuplele relatiilorConstrangerea integritatii referentiale o tupla dintr-o relatie ce refera o tupla din alta relatie ( sau din aceeasi) trebuie sa refere o tupla existentaCheia straina asigura integritatea referentiala

  • CONSTRANGERINOT NULLPRIMARY KEYUNIQUEFOREIGN KEYCHECKConstrangerile enuntate sunt constrangeri FUNDAMENTALE , parte a modelului relational, sunt suportate de cele mai multe SGBD

    Alte tipuri de constrangeri pot fi specificate distinct prin alte constructii de limbaj triggere, proceduri stocate

  • NOT NULLEste o constrangere la nivelul unei coloane dintr-o tabelaSpecifica faptul ca pe coloana respectiva nu pot sa apara valori nule.Orice incercare de a adauga o linie care contine valori nule pe acea coloana sau de a modifica o valoare nenula intr-una nula va fi respinsa de sistem.

  • PRIMARY KEYO relatie poate avea mai multe cheiIn momentul creerii tabelei corespunzatoare relatiei intr-un sistem de gestiune a bazelor de date, una dintre ele poate fi aleasa ca si cheie primara (principala) a tabelei respective.O tabela nu poate avea decat o singura cheie primara, formata din una sau mai multe atribute (coloane) ale acesteia.SGBD-ul creaza automat structuri de cautare rapida (index) pentru cheia primara a tabelei.O caracteristica a cheii primare a unei tabele este (in majoritatea SGBD-urilor) cerinta ca pe coloanele componente nu pot sa apara valori nule

  • UNIQUEPe coloanele unei chei definita cu UNIQUE pot sa apara valori nule, unicitatea fiind verificata doar pentru valorile nenule de pe coloanele cheii respective.

  • FOREIGN KEY Cheie straina

    Studenti(IdS, NumeStud, CodFacultate, IdTutor, Medie)Facultati (CodFacult, NumeFacultate, Adresa)

    Coloana CodFacultate din tabela Studenti nu este cheie in aceasta tabela (pot exista mai multi studenti cu aceeasi valoare pe aceasta coloana, fiind studenti ai aceleiasi facultati) ,dar in mod normal ,contine valori care pot fi doar dintre cele existente pe cheia primara CodFacult din tabela Facultati.

    O constrangere activa de acest tip (numita si constrangere referentiala) va avea ca efect respingerea inserarilor/modificarilor in tabelaStudenti care ar face ca pe coloana CodFacultate sa apara o valoare care nu este deja in tabela Facultati

  • FOREIGN KEY Cheie straina

    Studenti(IdS, NumeStud, CodFacultate, IdTutor, Medie)Facultati(CodFacult, NumeFacultate, Adresa)

    Rezulta implicit ca in momentul incarcarii cu date este necesar sa fie completata intai tabela Facultati si apoi tabela Studenti, altfel operatia de incarcare cu date va esua din cauza violarii acestei constrangeri.

    In cazul multor SGBD-uri se poate specifica in constrangere si stergerea automata a inregistrarilor fiu in cazul stergerii inregistrarii tata: la stergerea liniei corespunzatoare unei facultati se vor sterge automat si liniile din tabela Studenti continand studentii acelei facultati.

  • CHECKAcest tip de constrangere specifica faptul ca valorile unei linii din tabela trebuie sa verifice o conditie (expresie logica).

  • Sisteme total relationale

    Principii de integritate pentru un SGBD relationalIntegritatea domeniului SGBD verifica sintactic si semantic orice valoare din BD sau operatie folosind definitia domeniuluiIntegritatea entitatii relatiei - refera conditiile impuse cheilor primare de a avea valori unice si nenuleIntegritatea referintei : daca A e cheie primara in relatia R1 si B este componenta unei chei primare multiatribut in relatia R, B fiind definita pe acelasi domeniu ca si A, multimea valorilor lui B in R2 trebuie inclusa in multimea valorilor lui A in R1 Un sistem SGBD este total relational dacaasigura principiile enuntate + furnizeaza un LMD echivalent algebrei relationale

  • Algebra si calcul relationalPartea esentiala a unui LMD este cea prin care se formuleaza interogarile limbajul de interogare

    Limbaje de interogare formale (tip Query- QBE) limbaje specializate pentru interogari, prin intermediul carora utilizatorul solicita informatie din BD

    Limbaje de interogare pentru modelul relational (bazat pe formalisme) : algebra relationala, calcul relational pe tuple, calcul relational de domeniu, etc.ALGEBRA Relationala colectie de operatori specializati aplicati asupra relatiilor , fiecare query descrie procedura pas cu pas pentru a calcula raspunsul, specificare operationala (procedural)

    Calculul relational query descrie raspunsul solicitat (multimea tuplelor rezultat ) prin specificarea unui predicat ce trebuie satisfacut, fara a specifica modul de calcul (declarativ) (Ex. QBE calcul relational al domeniilor)

  • Algebra si calcul relational

    Propuse ca referential pentru orice limbaj de interogare relational = Limbajul este relational COMPLET, limbajele reale cuprind mult mai multe facilitati (inserare, stergere, modificare, calcule, tiparire de relatii ,atribuire la var., agregare)

    servesc ca referinta pentru crearea de limbaje derivate ( LMD, LDD) integrate SGBD

    Cele doua formalisme sunt echivalente ca putere de expresie

  • Elemente de algebra relationalaInterogarile sunt create folosind o colectie de operatorifiecare operator accepta instante de relatii ca argumente si returneaza tot o instanta de relatie ca rezultat operatorii pot fi compusi pentru a forma interogari complexe

    Expresia algebrica este asimilata unui plan pentru evaluarea interogarii

    Sistemele relationale utilizeaza algebra relationala pentru a reprezenta aceste planuri de evaluare

  • Elemente de algebra relationala

    Operatori (unari/binari) utilizati pentru construirea interogarilor

    Operatorii pe multimi Operatorii pe multimi :reuniunea, intersectia, diferenta, produs cartezian

    Operatori relationali specialiOperatori ce elimina parti dintr-o relatie : selectia, proiectiaOperatii ce combina tuple din doua relatii : produs cartezian , Join, reuniunea, diferenta

    Operatori aditionali

  • Definitii formaleE - expresia de baza in algebra relationala poate fi : o relatie din BDFie E1 and E2 expresii relationale ,urmatoarele reprezinta expresii algebrice relationale

    E1 E2, reuniuneaE1 E2 diferentaE1 x E2 produs cartezian

    s(E1), selectia - S este o lista de atribute din E1p (E1), proiectia - P predicat peste atributele din E1 x (E1), redenumirea - x noul nume pentru E1

  • ReuniuneaRelatiile r , s:r s:rNotatie : r sDefinitie: r s = {t | t r sau t s}

    r s este valid daca1. r, s au aceeasi aritate (acelasi numar de atribute)2. Domeniile de atribute sunt compatibile ( cea de a doua coloana a lui r contine atribute de acelasi tip ca si a doua coloana a lui s)

  • DiferentaRelatiile r, s:r s:Notatie r sDefinitie : r s = {t | t r and t s}

    Diferenta se efectueaza intre relatii compatibile.r si s poseda aceeasi aritateAtributele domeniilor relatiilor r si s sunt compatibile

  • Produs CartezianRelatiile r, s:r x s:Notatie r x sDefinitie: r x s = {tq | t r si q s} Se presupune ca atributele relatiilor r(R) si s(S) sunt disjuncte. (R S = ).Daca nu este indeplinita aceasta cerinta , se va utiliza redenumirea.Produsul cartezian operatie de combinare a tuplelor celor doua relatiiSchema rezultat : se preia in relatia rezultat cate un camp pentru fiecare camp din cele doua relatii sursa

  • SelectiaNotatie: p(r), p(r) = {t | t r si p(t)} unde p este predicatul de selectiepredicatul reprezinta termeni conectati prin operatorii : (and), (or), (not)Fiecare termen poate fi : op or iar op poate fi : =, , >, .
  • ProiectiaRelatia rNotatie: unde A1, A2 An sunt atribute , iar r e relatiaRezultatul e definit ca o relatie de k
  • Compunerea operatiilorExpresii bazate pe operatori multipliiEx.: A=C(r x s)

    r x s

    A=C(r x s)

  • RedenumireaPermite referirea unui rezultat ca expresie relationala algebrica.Permite referirea unei relatii prin mai multe numeEx. x (E) returneaza expresia E sub numele X

    Daca expresia E are aritatea n, atunci

    va returna rezultatul expresiei E sub numele X, si cu atributele A1 , A2 , ., An .

  • Operatii aditionaleOperatii aditionale nu complementeaza puterea de expresie a operatiilor de baza, DAR simplifica interogarile

    Cuplare (join)IntersectiaImpartireaAsignarea

  • Notatie: r s , operatorul e utilizat pentru a combina tuple din doua relatii diferite pe baza unor informatii comune

    Joinfie r si s relatii in schemele R si S . r s este o relatie pe schema R S , obtinuta astfel:Se considera fiecare pereche de tuple tr din r si ts din s. daca tr si ts poseda aceeasi valoare pentru fiecare din atribute in R S, se va adauga tupla t la rezultat astfel:t are aceeasi valoare ca si tr in rt are aceeasi valoare ca si ts in sEx.:R = (A, B, C, D)S = (E, B, D)Schema rezultat = (A, B, C, D, E) relatia rezultata ca urmare a operatiei join r s poate fi definita astfel: r.A, r.B, r.C, r.D, s.E (r.B = s.B r.D = s.D (r x s))

  • Natural JoinRelatiile r, s:Cuplarea a doua relatii se obtine astfel :Se calculeaza produsul cartezian rxs se selecteaza tuplele din rxs pentru care valoarea corespunzatoare atributului din r este egala cu valoarea corespunzatoare a atributului din sSe efectueaza o proiectie a rezultatului pentru elimina coloana dublataAstfel ,relatia de cuplare este echivalentul aplicarii a doi operatori : produsul cartezian al relatiilor urmat de selectia dupa un anumit predicat

  • Intersectia (Set-Intersection)Relatiile r, s:

    Notatie: r sDefinitie : r s = { t | t r si t s }Ipoteza: r, s au aceeasi aritate atributele r si s sunt compatibile

    Nota: r s = r (r s)

  • ImpartireaNotatie: Potrivita interogarilor ce contin fraza for all.fie r si s relatiile in schemele R si S R = (A1, , Am , B1, , Bn )S = (B1, , Bn)

    Rezultatul operatiei r s este o relatie, iar schemaR S = (A1, , Am)r s = { t | t R-S (r) u s ( tu r ) }

    unde tu semnifica concatenarea tuplelor t si u atfel incat este generata o singura tupla

    r s

  • ExempluABaaaaaaaaCDaabababbE11113111Relatiile r, s:r s:DabE11ABaaCrs

  • fie q = r s q este relatia ce satisface q x s r

    Definitie prin operatorul de proiectiefie r(R) si s(S) relatii astfel incat S R r s = R-S (r ) R-S ( ( R-S (r ) x s ) R-S,S(r )) undeR-S,S (r) reordoneaza atributele relatiei r R-S (R-S (r ) x s ) R-S,S(r) ) ofera tuplele t R-S (r ) astfel incat pentru anumite tuple u s, tu r.

    Impartirea - exprimare prin operatori de baza

  • Asignareasignare () permite exprimarea de interogari complexe.

    Interogarea complexa se va scrie ca o secventa de asignari , expresii ale caror valori sunt afisate ca rezultat al interogarii .

    Asignari intermediare la variabile temporare

    Ex.: astfel operatia de impartire: r s devine temp1 R-S (r ) temp2 R-S ((temp1 x s ) R-S,S (r )) result = temp1 temp2

  • Algebra relationala extinsaProiectie generalizataFunctii agregatInner/Outer Join

  • Proiectie generalizataExtinde proiectia prin specificarea de functii aritmetice acceptate in lista de proiectie

    E expresie relationala algebrica F1, F2, , Fn sunt expresii aritmetice pe constante si atribute din schema E.

    Ex :Fie relatia credit_info(customer_name, limit, credit_balance) sa sa afiseze cat poate cheltui fiecare persoana: customer_name, limit credit_balance (credit_info)

  • Functii si operatii de agregareFunctii de agregare preiau o colectie de valori si returneaza o valoare unica drept rezultatavg: average value min: minimum value max: maximum value sum: sum of values count: number of values

    Operatii de agregare in algebra relationala : E expresie relationalaG1, G2 , Gn lista de atribute ce pot fi grupateFi functie agregatAi nume atribut

  • ExempluRelatia r:g sum(c) (r)

  • Outer JoinRelatia loanRelatia borrowerJoin loan borrowerExtensia operatiei join pentru a elimina pierderea de infoCalculeaza join si adauga tuplele ce nu au corespondent in cealalta relatie

  • Outer Join

  • SQL

  • SQL istoric

  • Componente SQL

  • Constructia Create table

  • Drop si Alter table

  • Structuri de interogare de baza

  • Strategia de evaluare

  • Clauza select

  • Clauza select

  • Clauza from

  • Clauza where

  • Operatia Rename

  • Operatii pe stringuri

  • Ordonarea afisarii tuplelor

  • Operatii Set

  • Functii agregat

  • Functii agregat

  • Functii agregat Group by

  • Functii agregat- Having

  • Valori Null

  • Imbricarea interogarilor

  • Operatorul IN

  • Comparatii pe seturi

  • Exemplu

  • Testare tuple duplicat

  • Exemplu

  • Relatii derivate

  • Clauza with

  • Modificari in baza de date

  • Inserarea

  • Actualizarea

  • Relatii Join

  • Relatii Join

  • Constrangeri de domeniu

  • Constrangeri de integritate

  • Clauza check

  • Asertiuni

  • Integritate referentiala

    ****************************