Documente Academic
Documente Profesional
Documente Cultură
• Captează trăsăturile principale ale unui sistem (concepte) - tehnica de identi care a acestor trăsături se
numește abstractizare.
• Conceptele trebuie sa e relevante din punct de vedere al scopului pentru care se de nește modelul respectiv
• Un model de date stabile te regulile de organizare i interpretare a unei colec ii de date i se reprezint prin:
• Modele conceptuale de nivel înalt (modelul Entitate-Asociere, modelul Entitate-Asociere Extins)– descriu
concis mul imile de entit i i asocierile dintre acestea, f r s speci ce modul de structurare sau de prelucrare
a datelor; se reprezint printr-o - schem conceptual de nivel înalt.
• Modele de structurare a datelor (modelul ierarhic, modelul re ea, modelul rela ional, etc.) - descriu
reprezentarea mul imilor de entit i i asocierile dintre acestea prin anumite structuri de date (arbori, grafuri,
tabele) - se reprezint printr-o schem conceptual (logic ).
10
ț
ţ
ă
ț
ț
ţ
ă
ă
fi
ă
ţ
ş
ş
ă
ț
ă
ţ
ş
ă
ă
ă
ş
ă
ă
ă
ă
ă
fi
ţ
ţ
fi
fi
ţ
ș
ă
Modelul entitate-asociere
• Modelul Entitate-Asociere (Entity-Relationship Model) de neste multimile de entit i i asocierile
dintre ele, dar nu impune nici un mod speci c de structurare i prelucrare (gestiune) a datelor
(introdus în 1976 de P.S. Chen).
• O entitate (entity) este „orice există în realitatea obiectivă și poate identi cat î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 entit i - exemple:
persoanele au nume, prenume, adresa etc.
• Tip de entitate (entity type): se referă la entit țile similare, care pot descrise prin aceleași atribute -
exemple: tipul persoana, tipul planta.
• Multime de entități (entities set): colec ia tuturor entit ilor de acela i tip dintr-o baz de date
constituie o mul ime de entit i - exemple: mulțimea tuturor persoanelor, mulțimea tuturor plantelor.
• O entitate este o instanță a unui tip de entitate și un element al mulțimii de entități de acel tip. În
exprimarea curentă, adeseori nu se face diferențierea dintre entitate, tip de entitate și mulțime de
entități, dar diferența este evidentă. A se vedea asemănarea cu modelul obiect: tip de entitate -
clasă; entitate - obiect.
11
ţ
ă
ţ
ţ
ă
fi
ă
ţ
fi
ş
fi
fi
ş
fi
ă
ă
ţ
ţ
ş
ă
Asocieri
• O asociere (relationship) este o leg tur (coresponden ) între entit i din dou sau mai multe mul imi de entit i; asocierile
pot avea atribute.
• Tipul asocierii (relationship type) – se referă la asocierile similare, care pot de nite între entități din dou sau mai multe
mulțimi de entități.
• O asociere este o instanță a unui tip de asociere și un element al mulțimii de asocieri de acel tip.
• În exprimarea curentă, adeseori nu se face diferențierea dintre asociere, tip de asociere si mulțime de asocieri, dar diferența
este evidentă.
• Gradul unui (tip de) asociere (degree): num rul de mul imi de entit i asociate; dupa grad, asocierile pot :
• Categorii (tipuri) de asocieri binare - dup num rul elementelor din ecare dintre cele dou mul imi puse în coresponden :
12
ţ
ţ
ă
ţ
ă
ă
ă
ă
ţ
ă
ă
fi
fi
ţ
ţ
ă
fi
ă
ă
ţ
ţ
fi
ă
fi
ă
ţ
ţ
fi
ă
ă
ţ
ţ
ă
Cardinalitatea asocierilor
• Cardinalitatea (multiplicitatea) unei asocieri fa de o mul ime de entit i
(cardinality, multiplicity) este num rul maxim de elemente din acea mul ime
care pot asociate cu un element din alt mul ime a asocierii.
15
fi
fi
ă
ţ
ţ
ă
ţ
ă
ţ
ţ
ţ
ţ
ă
ă
ă
ţ
ş
ă
ă
ă
ţ
ţ
ţ
ă
ţ
ă
ă
ţ
ţ
ş
ţ
ţ
ă
ţ
ă
Diagrama entitate-asociere
• Diagrama Entitate-Asociere (Entity-Relationship Diagram) reprezint gra c
modelul Entitate-Asociere prin mul imile de entit i i asocierile dintre acestea.
• Notații:
Diagrama E-A
16
ș
ţ
ă
ţ
ş
ă
fi
Exemplu de diagramă entitate-asociere (1)
• Mulțimi de entități puternice:
17
Exemplu de diagramă entitate-asociere (2)
• Asocieri:
• Asocierea SECTII - ANGAJATI - 1:N;
• Raportul de cardinalitate al unei asocieri este stabilit de proiectant astfel încât s re ecte
cât mai corect modul de organizare a activit ii modelate
• Modul de stabilire a tipurilor de entit i i a asocierilor nu este unic: aceea i func ionalitate
se poate ob ine printr-o varietate de diagrame E-A.
• O mul ime de entit i se denumește printr-un substantiv, iar o asociere se denumeste (de
regul ) printr-un verb, deoarece o asociere reprezint o interac iune între entit i.
• Modelul E-A nu precizeaz modul în care sunt realizate asocierile între mul imile de entit i:
acest aspect depinde de modelul de structurare a datelor utilizat pentru baza de date:
• în modelul rela ional asocierile se realizeaz prin egalitatea valorilor unor atribute
comune ale mulțimilor de entit i (chei);
18
ă
ă
ţ
ţ
fi
ţ
ţ
ă
ţ
ș
ț
ț
ă
ă
ţ
ă
ţ
ş
ă
ţ
ă
ă
ă
ţ
ț
ţ
ş
ă
ţ
ţ
ă
fl
ă
ţ
Modelul entitate-asociere extins
• Modelul Entitate-Asociere Extins (Enhanced Entity-Relationship Model) permite de nirea
de subtipuri ale unui tip de entit i, care mo tenesc atribute de la tipul de entitate respectiv.
19
ş
ă
ţ
ş
ă
ţ
fi
Definiții - relații, atribute și domenii de definiție
• Modelul rela ional a fost propus de E.F.Codd în anul 1970 – IBM.
• ecare relație reprezintă o mul ime (tip) de entităti sau o mul ime (tip) de asocieri
• Atributele unei relații corespund atributelor tipului de entitate sau de asociere pe care îl
reprezint relația respectiv
• Atributele pot : simple (un element) sau compuse (o submul ime de atribute)
• Domeniu: o mul ime de valori D = {di | i = 1,..., n }, de nit printr-o speci care de tip, unde:
• O valoare specială, null, poate aparține oricărui domeniu (înseamna lipsa de informație
sau valoare necunoscută)
3
fi
fi
fi
ț
ă
ă
ț
ț
fi
fi
ț
ă
ă
ț
ș
ă
ă
fi
fi
fi
ț
ț
ă
fi
Schema relației
• Schema relației: descriere a unei relații (tipul, intensiunea relației)
• Gradul relației: num rul de atribute ale schemei acelei rela ii (n)
• Fiecare tuplu este unic într-o rela ie (nu există tupluri duplicat)
• Corespondența: rela ie -> mul ime de entități (sau de asocieri); tuplu -> entitate
• În mod curent: se foloseste R atât pentru schema cat i pentru rela ia însăși
4
fi
ț
fi
ă
fi
ă
fi
ă
ț
ă
ț
ț
ț
ă
ț
fi
ț
ș
ț
ț
Afișarea tabelelor
• SGBD-urile ofer instrumnente de proiectare i a sare a tabelelor
• De exemplu, a area tabelului CURSE din baza de date zboruri folosind utilizarul MySql Workbench:
6
fi
ș
ă
ș
fi
Ordonarea valorilor atributelor în tupluri
• Din punct de vedere logic, ordinea valorilor atributelor într-un tuplu nu contează. Aceast structurare poate
exprimat prin urm toarele de niții:
• t = {<A1,v1>,<A2,v2>,...<Ai,vi>, …<An,vn>},
• Prima de ni ie simpli c notațiile și corespunde reprezent rii prin tabel a relației și de aceea va folosit în
continuare destul de frecvent
• În implement rile reale, exist o anumit ordine a valorilor atributelor memorate în iere, dar aceasta nu este
relevant din punct de vedere logic
7
fi
ă
ț
ă
fi
fi
ț
ă
ț
ă
fi
ă
ă
ă
fi
fi
ț
ă
ă
ă
fi
fi
ș
ă
fi
ă
fi
Convenții de notație
• Pentru prezentarea limbajului SQL i a altor limbaje, biblioteci i interfețe se folosesc urm toarele conven ii:
Conveții de notație
• Caracterele folosite pentru a speci ca o anumit convenție sintactic (paranteze, bara vertical , virgula, etc.) nu
apar în instrucțiunile propriu-zise.
• Listele de elemente (compuse din elemente separate prin virgul ) vor reprezentate folosind una cele trei din
construc iile de mai sus.
17
ț
ș
fi
ă
ș
ă
ă
fi
ă
ă
ț
Instucțiuni SQL
• Componenta de de nire a datelor din SQL (LDD - Limbajul de De nire a Datelor):
• Crearea (CREATE), modi carea (ALTER) și distrugerea (DROP) obiectelor bazei de date;
• Obiectele bazei de date sunt: tabele de baz (TABLE), tabele vedere (VIEW), indecși (INDEX),
proceduri (PROCEDURE), triggere (TRIGGER), utilizatori (USER).
• CREATE TABLE, CREATE VIEW, CREATE INDEX, CREATE USER CREATE FUNCTION,
CREATE TRIGGER, CREATE PROCEDURE
• ALTER TABLE, ALTER VIEW, ALTER FUNCTION, ALTER PROCEDURE DROP TABLE, DROP
VIEW, DROP INDEX, DROP USER, DROP FUNCTION, DROP PROCEDURE, DROP TRIGGER
• Componenta de manipulare a datelor din limbajul SQL (Limbajul de Manipulare a Datelor - LMD)
conține comenzile: SELECT, INSERT, UPDATE i DELETE.
• de c tre diferite programe client (client gra c, linie de comandă, program executabil);
• Clauza ORDER BY speci c numele atributului dup care se face ordonarea liniilor tabelului rezultat
25
ș
ă
fi
ă
ă
ă
ț
fi
Instrucțiunea INSERT
• Instruc iunea INSERT se folosește pentru introducerea datelor în tabele și are urm toarea sintax :
• ordinea coloanelor provine din ordinea de de nire a atributelor prin instrucțiunea CREATE TABLE,
precum i din opera iile ulterioare de alterare a tabelului
• De exemplu, introducerea unei linii cu toate valorile în tabelul ANGAJATI(IdAngajat, Nume, Prenume,
DataNasterii, Adresa, Functia, Salariu)
• Dac nu se speci c valori pentru toate atributele, cele nespeci cate primesc valoare implicit
(DEFAULT), dac a fost speci cat sau NULL (dac este acceptat ); altfel se returnează eroare:
• Dac este omis clauza WHERE, vor modi cate valorile coloanelor din toate liniile tabelului.
• Instrucțiunea DELETE permite ștergerea uneia sau mai multor linii dintr-un tabel și are sintaxa:
• Din tabel se șterg acele linii care îndeplinesc condiția dat în clauza WHERE.
• Dac este omis clauza WHERE, vor șterse toate liniile din tabel
• Exemplu:
• Constrângerile inerente sunt cele ale modelului de date însuși, care nu trebuie s e
de nite deoarece sunt incluse în sistemul de gestiune.
• Fiecare SGBD poate are propriile constrângeri implicite, dar, în general constrângerile de
domeniu, constrângerile de tuplu și constrângerile de integritate referențial sunt
constrângeri implicite în orice SGBD.
• Constrângerea NOT NULL însemnă c atributul respectiv nu poate lua valoarea NULL în nici un tuplu al relației.
• Valoarea NULL a unui atribut într-un tuplu semni c faptul c valoarea acelui atribut nu este cunoscut pentru acel
tuplu. Exemple:
• nu se cunoaște valoarea unui atribut în momentul inserării tuplului, dar aceasta va cunoscuta i completat
ulterior.
• La crearea unui tabel opțiunea NULL este implicit (dac nu se speci c nimic), sau se poate introduce explicit
NULL sau NOT NULL; opțiunea NOT NULL se introduce numai explicit.
• Opțiunile NULL i NOT NULL se introduc ca i constrângeri de coloana în instrucțiunea SQL CREATE TABLE.
Exemplu:
31
ș
fi
ă
ș
fi
ă
ă
ă
ă
fi
ă
fi
ș
ă
ă
ă
Constrângeri de domeniu (2)
• Constrangerea de valoare implicit a unui atribut (DEFAULT): dac la inserarea unui tuplu nu se speci c valoarea unui
atribut, atunci:
• atributul primește valoarea implicit (DEFAULT), dac a fost de nit ; ex. Tara
• atributul primește valoarea NULL, dac nu a fost de nit valoare implicit , dar sunt admise valori NULL; ex. DataNasterii
• se genereaz o eroare, dac nu a fost de nit o valoare implicit i nici nu sunt admise valori NULL; ex: Nume
DataNasterii date,
);
• Constrângerea de veri care (CHECK) – pentru veri carea valorilor atributelor printr-o condiție care trebuie sa ia valoarea
TRUE.
32
ă
fi
fi
fi
ă
ă
ă
ă
fi
ă
fi
ă
fi
ă
fi
ă
ş
ă
ă
ă
fi
ă
Constrângeri de tuplu
• O relație este o mulțime de tupluri -> tuplurile unei relații trebuie s e distincte (nu pot exista dou sau
mai multe tupluri identice).
• Pentru ca tuplurile unei rela ii s e distincte se folose te câte o cheie primar (primary key) în ecare
rela ie.
• O cheie primar PK a unei rela ii este un atribut (simplu sau compus) al acelei rela ii care are proprietatea
de unicitate, adic ecare valoare a cheii primare este unic în acea rela ie. Aceasta înseamn c :
• Nu exist dou tupluri distincte (diferite) care s aib aceea i valoare a cheii primare (sau
combina ie de valori) pentru orice stare a rela iei, adic :
ti[PK] tj[PK] dac i j, unde ti i tj sunt 2 tupuri diferite ale rela iei.
• Proprietatea de unicitate a cheii primare este o constrângere de integritate a tuplurilor: ecare tuplu poate
identi cat în mod precis.
• S e ireductibil : s nu existe o submul ime proprie nevid a cheii PK care s aib proprietatea de
unicitate.
• S e de nit (cunoscut ) pentru orice tuplu din rela ie; de aceea nu se admit valori de NULL
pentru nici unul dintre atributele cheii primare.
• Cheia primar este o constrângere implicit : se de ne te de proiectant la crearea tabelului, iar SGBD-ul
veri c respectarea i men inerea integrit ii tuplurilor:
• La INSERT, tuplul trebuie s aib cheia primar de nit i unic (s nu existe alte tupluri în rela ie cu
aceea i valoare a cheii primare).
• Principial, la UPDATE, se interzice modi carea valorii cheii primare (dar unele SGBD-uri pot să
admit modi carea, cu condi ia ca valoarea cheii modi cate s e unică)
33
fi
ă
ă
fi
fi
ț
fi
ă
ă
≠
ș
fi
ț
ă
fi
fi
ă
ă
ă
ă
ă
ă
ă
ă
fi
ș
≠
ă
ă
ț
ă
ă
ț
ț
ș
ă
ț
ă
fi
ă
ă
ț
fi
ț
ă
ț
ă
fi
fi
ț
ă
ă
ă
fi
ș
ș
ș
ț
ă
ă
ă
ă
ă
fi
ț
ă
ș
ă
fi
ț
ă
ă
ț
ă
fi
ă
ț
ă
fi
ă
Chei primare naturale și artificiale (1)
• Se pot de ni e chei primare naturale, e chei primare arti ciale, cu condi ia ca acestea s
îndeplineasc condi iile de unicitate i ireductibilitate.
• O cheie primar natural este un atribut (simplu sau compus) al rela iei:
• are în mod natural valori unice: nu exist dou tupluri cu aceea i valoare a cheii primare,
deoarece nu exist dou entit i cu aceea i valoare a propriet ii respective; de ex. CNP-ul
persoanelor (din relatii precum ANGAJATI, STUDENTI etc.) din Romania.
• O cheie primar arti cial este un atribut (de obicei simplu) care nu reprezint o proprietate a
tipului de entitate sau asociere reprezentat de rela ie, ci se adaugă în schema relației special pentru
identi carea unic a tuplurilor.
• Ireductibilitatea cheii primare arti ciale este asigurat dac este atribut simplu.
• IdAngajat este o cheie primar arti cial (de regulă, în MySql se folosește opțiunea
AUTO_INCREMENT)
• Ar putea de nite i chei primare naturale prin atribute simple sau compuse care au
proprietatea de unicitate în anumite condi ii:
• atributul compus {Nume, Prenume, DataNasterii, Adresa} – are prea multe atribute
• Din motive de e cien a opera iilor de identi care a tuplurilor, se prefer chei primare cu un num r
cât mai mic de atribute (atribut simplu).
34
fi
ă
fi
fi
ă
fi
fi
ă
fi
ă
ă
ă
ț
ț
ș
ă
fi
ă
ă
ă
fi
ă
ț
ț
fi
ă
ș
fi
ț
ă
ă
fi
ș
ă
fi
fi
ă
ț
ă
ă
ă
ă
fi
ț
ș
ț
ș
ă
ț
ț
ă
ă
ă
Definirea cheii primare în SQL
• În SQL cheia primar se de nește prin instrucțiunea CREATE TABLE, ca o constrângere de tabel
sau ca o constrângere de coloan .
Exemplu:
CREATE TABLE SECTII(
IdSectie BIGINT NOT NULL UNSIGNED AUTO_INCREMENT,
Nume VARCHAR(45) NOT NULL,
Buget numeric,
CONSTRAINT PK PRIMARY KEY(IdSectie));
• Dac cheia primar este simpl (format dintr-un singur atribut), ea se poate speci ca i ca o
constrângere de coloan ; exemplu:
36
fi
ă
ă
ă
ă
fi
ă
ă
ă
fi
ș
Menținerea integrității referențiale a relațiilor (2)
• Ștergerea în cascad permite ștergerea unui tuplu din relația referită; dac tuplul șters era referit de
unul sau mai multe tupluri, atunci se șterg și acestea din relația care o refer ; dac tuplurile șterse din
relația care refer sunt, la rândul lor referite de alte tupluri din alte rela ii, atunci trebuie s e șterse și
acestea, etc.; se execut deci o ștegere în cascad .
• Operația UPDATE este o ștergere urmat de o introducere, deci restricțiile de actualizare reprezint
combinația restricțiilor de introducere și de ștergere.
• SET NULL – setare valoare NULL a cheilor str ine care refereau tuplul ters
• Exemplu:
42
ă
ă
ă
fi
ă
ă
ă
ă
ă
ă
ă
ș
ț
ș
ă
ă
ă
ă
fi
ă
ă
ă
Proiectarea relațiilor
• Mulțimile de entități din diagrama E-A devin relații:
• e ca o cheie primara naturală (combinație de atribute care de nesc în mod unic un tuplu)
• Mulțimile de entități slabe din diagrama E-A devin relații a ate în asociere N:1 cu relația
corespunzătoare mulțimii de entități de care acestea depind
• Pentru realizarea acestei asocieri, în relația dependentă se adaugă o cheie străină care referă cheia
primară a relației puternice referite; de exemplu: cheia straină IdAngajat introdusă in relația
DEPENDENTI . De ex: DEPENDENTI( IdAngajat, Nume, Prenume, DataNasterii, GradRudenie)
• o combinație formată din atributul cheie străină și alte atribute care asigură posibilitatea de
identi care unică a unui tuplu sau poate o cheie arti cială. De ex: (IdAngajat, Nume, Prenume)
• Asocierea N:1 între relațiile ANGAJATI - SECTII se realizează prin cheia străină
IdSectie din relația ANGAJATI care referă cheia primară IdSectie din relația SECTII
11
Proiectarea asocierilor binare N:1 (2)
• Asocierea binară N:1 dintre o mulțime de entități slabe și mulțimea de entități
puternice de care depinde se realizează printr-o cheie străină în relația
mulțimii de entități slabe care referă cheia primară a relației mulțimii de entități
puternice.
12
Proiectarea asocierilor binare M:N (1)
• O asociere binară M:N dintre două mulțimi de entități se realizează cu o nouă relație, numită relație
de asociere.
• Aceasta are rapoartele de cardinalitate M :1, respectiv N :1 cu ecare din cele două relații date, prin
intermediul a două chei străine care referă cheile primare din ecare din cele două relații asociate.
• sau poate compusă din cheile străine, eventual împreună cu alte atribute ale relației
• Relatia COMPOZITII conține cheile străine IdComponenta și IdProdus care referă cheile primare
IdComponenta, IdProdus ale relațiilor Componente, respectiv Produse.
• Cheia primară a relației COMPOZITII este o cheie primară arti cială (IdCompozitii).
13
fi
fi
fi
fi
fi
fi
Proiectarea asocierilor multiple de tip M:N:P
• Asocierea multiplă M:N:P se realizează la fel ca asocierea binară M:N, prin intermediul unei relații de asociere
care se a ă în asociere M:1, N:1, P:1, etc., cu ecare din relațiile date, prin câte o chei străină care referă
cheia primară corespunzătoare.
• O cheie primară arti cială; ex.(a): în relația Vanzari, este de nită cheia primară arti cială idVanzari
• Cheia primară poate compusă din toate cheile străine, eventual împreună cu alte atribute; ex. (b); in
relația de asociere Achizitii cheia primară este formată din toate cheile străine plus atributul DataAchizitiei.
14
fl
fi
fi
fi
fi
fi
fi
Proiectarea asocierilor binare 1:1 (1)
• Asocierea binară 1:1 între două mulțimi de entități puternice se poate transpune în modelul relațional în două
moduri:
• e prin intermediul constrângerii UNIQUE selectată pe cheia străină din cadrul asocierii 1:N.
• Exemplu: între relațiile SOTI, SOTII, se realizează o asociere 1:1 cu o cheie străină introdusă într-una dintre relații:
• Realizarea asocierii 1:1 între două relații folosind o relație de asociere. De exemplu: CASATORII(idSOTI, idSOTII,
DataCasatoriei).
• În ambele soluții, SGBD-ul nu limitează raportul de cardinalitate strict la 1:1, ci acceptă asocieri 1:N, respectiv M:N;
limitarea trebuie asigurată de aplicație.
15
fi
fi
fi
Proiectarea asocierilor binare 1:1 (2)
• Asocierea binară 1:1 dintre o mulțime de entități de subtip și mulțimea de entități supertip se poate
transpune în modelul relațional prin de nirea în relația corespunzătoare subtipului a unei chei străine,
care referă cheia primară din relația se supertip și este în același timp și cheie primară.
• De exemplu: asocierea 1:1 între relația de subtip INGINERI și relația supertipului corespunzător
(ANGAJATI) se realizează prin cheia primară IdAngajati din INGINERI care este și cheie străină și
referă cheia primară IdAngajati din relația ANGAJATI.
• În acest caz, o entitate de subtip este reprezentată prin două tupluri: un tuplu în relația de subtip
(INGINERI) care conține valoarea atributului Specializarea și tuplul referit din relația de supertip
(ANGAJATI) care conține valorile tuturor celorlalte atribute (Nume, Prenume, DataNasterii, Adresa etc.)
• Asocierea este în mod real 1:1, veri cată de SGBD prin veri carea cheilor.
16
fi
fi
fi
Rezumat - proiectarea logică a bazelor de date
• O mulțime de entități se reprezintă printr-o relație.
• Asocierea N:1 se reprezintă corect, cu respectarea raportului de cardinalitate, printr-o cheie străină
introdusă în relația cu multiplicitatea N (care referă)
• Asocierea N:1 se poate reprezenta și printr-o relație de asociere, dar, în acest caz, se și poate să
nu e respectat raportul de cardinalitate N:1 dacă nu se prevăd funcții speciale în programul de
aplicație, ceea ce este costisitor ca efort de programare și timp de execuție.
• Asocierea 1:1 între două mulțimi de entități puternice se reprezintă e printr-o cheie străină, (ca un
caz particular al asocierii N:1) e printr-o relație de asociere (ca un caz particular al asocierii M:N)
• Asocierea 1:1 între o mulțime de subtip și o mulțime de supertip se reprezintă corect printr-o cheie
străină în relația de subtip (care referă cheia primară din relația supertip) și este și cheie primară.
• În orice altă reprezentare (printr-o cheie străină în relația de subtip, dar care să nu e și cheie
primară, sau printr-o relație de asociere) se poate să nu e respectat strict raportul de cardinalitate
1:1, dacă nu se prevăd funcții speciale în programele de aplicație.
17
fi
fi
fi
fi
fi
fi
Proiectarea fizică a bazelor de date
• Fiecare SGBD oferă o mai multe de opţiuni de organizare a șierelor și a
modului de acces la datele stocate:
• Indecși
• Tipuri de șiere
4
Operaţia de reuniune
Reuniunea (union) a două relaţii 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 să aiba acelasi grad (acelasi numar de atribute).
• Atributele corespondente (în ordine pozitională) să fie compatibile.
Tuplurile care aparţin ambelor relaţii se introduc în relaţia 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:
5
Operaţia de intersecţie şi diferenţă
* Intersecţia (set-intersection) a două relaţii compatibile r(R) şi s(S):
q = r ∩ s = { t | t ∈ r and t ∈ s}
Exemplu:
6
Operaţia de produs cartezian
Produsul Cartesian (Cartesian-Product) a două relaţii r(R) şi s(S):
q = r x s = { tp | t ∈ r and p ∈ s}, Q = R ∪ S
Se presupune că 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 relaţiei rezultat se obtin prin concatenarea valorilor atributelor fiecărui tuplu din
prima relaţie cu valorile atributelor tuturor tuplurilor din a doua relaţie.
Relaţia rezultată are numărul de tupluri (cardinalitatea) egal cu produsul numărului de
tupluri ale relaţiilor operand.
Exemplu:
7
Exprimarea operaţiilor pe mulţimi în SQL (1)
Reuniunea:
SELECT lista_coloane1 FROM tabel1 [WHERE condiţie1]
UNION
SELECT lista_coloane2 FROM tabel2 [WHERE condiţie2];
Exemplu (MySQL, Intreprindere):
SELECT Nume, Prenume, Adresa FROM FURNIZORI
UNION
SELECT Nume, Prenume, Adresa FROM CLIENTI;
Afiseaza numele tuturor furnizorilor si al clientilor, precum si adresa acestora
Intersectia:
SELECT lista_coloane1 FROM tabel1 [WHERE condiţie1]
INTERSECT
SELECT lista_coloane2 FROM tabel2 [WHERE condiţie2];
Diferenta:
SELECT lista_coloane1 FROM tabel1 [WHERE condiţie1]
MINUS
SELECT lista_coloane2 FROM tabel2 [WHERE condiţie2];
8
Exprimarea operaţiilor pe mulţimi în 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, Buget
FROM ANGAJATI, SECTII;
Produsul Cartesian este implementat in toate SGBD-urile
(instructiunea SQL SELECT).
În sistemul Oracle sunt implementate toate operatiile pe multimi.
În alte SGBD-uri nu sunt implementate toate operaţiile pe mulţimi; în
SQL Server 2000 si in MySQL 5.0 nu sunt implementate operaţiile
INTERSECT şi MINUS.
9
Exprimarea operaţiilor pe mulţimi în SQL (3)
10
Operaţia de selecţie
Selecţia (sau restricţia – select, restriction) într-o relaţie r(R) - definită astfel:
σ p (r) = {t | t ∈ r and p(t)}
unde p, predicatul selecţiei, este o expresie logică compusă din termeni conectaţi prin
operatorii and, or‚ not (şi, eventual, paranteze).
Fiecare termen este o valoare logică obţinută ca rezultat al unei operaţii de comparaţie
de forma:
<atribut> op <atribut> sau
<atribut> op <constanta>, unde
op este un operator de comparatie aritmetic (=, ≠, >, ≥. <. ≤) sau special(IS NULL etc.).
Tuplul t este selectat (introdus în rezultat) dacă p(t) = TRUE.
În limbajul SQL:
SELECT * FROM tabel WHERE p;
În termenii folosiţi în limbajul SQL, restricţia selectează o parte din liniile tabelului
operand.
Exemple (MySQL - WORLD):
SELECT * FROM city where CountryCode=‘ROM’;
SELECT * FROM country WHERE Continent='Europe';
SELECT * FROM country WHERE Continent='Europe' and Population > 10000000;
11
Operaţia de proiecţie
Proiecţia (project) pe atributele A1, A2, .. Ak într-o relaţie 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 dată.
Daca {A1, A2, ...Ak} nu contine o supercheie, pot sa apară tupluri duplicat;
teoretic, tuplurile duplicat se elimină, dat fiind ca rezultatul este o mulţime.
Exemplu:
•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 proiecţia rezultatului pe multimea de atribute R ∪ S = {A, B, C}.
13
Operaţia de joncţiune naturală (2)
Exemplul 1: r >< s = Π A,B,C,D,E σ (r.D = s.D) (r x s)
În SQL trebuie să fie introduse explicit lista atributelor rezultatului şi condiţiile de egalitate
ale atributelor comune:
SELECT A,B,C,R.D,E FROM R, S WHERE R.D = S.D;
Exemplul 2: ANGAJATI >< SECTII; cheia straină: ANGAJATI.IdSectie
SELECT IdAngajat, ANGAJATI.Nume, Prenume, DataNasterii, Adresa, Salariu,
ANGAJATI.IdSectie, SECTII.Nume, Buget FROM ANGAJATI, SECTII WHERE
ANGAJATI.IdSectie=SECTII.IdSectie;
Exemplul 3:(MySQL-WORLD) city >< country; cheia straină: city.countryCode
SELECT ID, city.Name Oras, CountryCode 'Cod Tara', city.Population, country.Name
Tara, Continent from city, country where city.countryCode=country.CODE order by
country.Name;
Dacă nu se afişează toate atributele joncţiunii, înseamna ca s-a combinat cu o proiecţie.
14
Joncţiuni interne şi externe
Joncţiunea naturală se mai numeşte şi joncţiune internă şi se mai poate exprima in SQL
cu cuvintele cheie INNER JOIN
Exemplu de joncţiune (combinată cu o proiecţie si o selectie)(MySQL – world)
SELECT city.Name Oras, Code 'Cod Tara', country.Name Tara, Continent FROM city
INNER JOIN country ON CountryCode=Code WHERE Continent='Antarctica' OR
Continent = 'Europe' ORDER BY Continent;
Joncţiunea externă introduce în plus toate liniile care există în prima relaţie (pentru LEFT
OUTER JOIN) sau în cea de-a doua relaţie (pentru RIGHT OUTER JOIN) şi pentru care
nu există linii în cealălaltă relaţie care să îndeplinească condiţia de join; exemplu:
SELECT city.Name Oras, Code 'Cod Tara', country.Name Tara, Continent FROM city
RIGHT OUTER JOIN country ON CountryCode=Code WHERE Continent='Antarctica'
OR Continent = 'Europe' ORDER BY Continent;
Se vor afişa si ţările care nu au nici un oras înscris în tabelul city.
15
Concluzii: operațiile algebrei relaționale
m Algebra relaţională este o colecţie de operaţii care aplică asupra relaţiilor
m Cele opt operaţii propuse de E.F.Codd nu constituie o mulţime minimă de
operaţii ale algebrei relaţionale
m Mulţimea minimă de operaţii ale algebrei relaţionale consta din cinci operaţii
primitive, pe baza cărora se poate construi orice expresie de algebra
relaţionala:
• Reuniunea
• Diferenţa
• Produsul Cartesian
• Restricţia (selecția)
• Proiecţia
m Celelalte operaţii se pot exprima prin intermediul acestora:
m Intersecţia se poate exprima prin expresia: R ∩ S = R – (R – S);
m Joncţiunea este o proiecţie a unei restricţii a produsului cartezian al relaţiilor;
m Diviziunea este o proiecţie a unei restricţii asupra relaţiei deîmpărţit
m Si celelalte trei operaţii sunt deosebit de utile în formularea interogărilor,
astfel încât algebra relaţională a păstrat toate cele opt operaţii propuse de
E.F.Codd, la care s-a adăugat operaţia de redenumire a atributelor
17
Formularea interogărilor
m Interogarea este operația prin care se obțin informaţiile dorite (care îndeplinesc
o anumită condiție) dintr-o bază de date. O interogare:
• se formulează mai întâi în limbaj natural,
• apoi se exprimă într-un limbaj abstract de interogare (algebra relaţională
sau calculul relaţional),
• se transpune în limbajul de interogare al SGBD-ului folosit (ex., limbajul
SQL), iar aplicația client transmite SGBD-ului instrucțiunea (sau
instrucțiunile) obtinuțe
m Sistemul SGBD prelucrează programul interogarii în mai multe faze:
• analiza lexicală, sintactică şi semantică
• optimizarea interogării
• generarea codului
• execuția și returnarea rezultatului
m În algebra relaţională o interogare se exprimă printr-o expresie care definește
următoarele elemente:
• lista atributelor relaţiei rezultat, care se numesc atribute de proiecţie;
• lista relaţiilor din care se extrag informaţiile
• condiţiile pe care trebuie să le îndeplinească tuplurile relaţiei rezultat.
m Sunt posibile diferite situaţii:
• interogări care se rezolvă în cadrul unei singure relaţii
• interogări care se rezolvă folosind două sau mai multe relaţii ale bazei
18
de date
Interogări într-o singură relație
19
Interogări în doua sau mai multe relații
20
Interogare în două relații în asociere N:1
21
Interogare în trei relații asociate
22
Interogare în trei relații asociate (2)
23
Subinterogări
24