Sunteți pe pagina 1din 133

BAZE DE DATE

CURS
.l. dr. ing. ec. Mirela Danubianu
mdanub@eed.usv.ro
C209

Scopul cursului


Prezentarea conceptelor fundamentale


de baze de date
Utilizarea SGBD-ului Visual FoxPro
9.0

Necesitatea studierii bazelor de date...




Trecerea de la stadiul efecturii de calcule ctre nevoia de informaii


(ex. sisteme suport pentru decizii);

Creterea volumului i a diversitii datelor de prelucrat;

Limitele posibilitilor de analiz ale factorului uman;

Evoluia tehnologiilor informatice;

Extinderea domeniilor de utilizare a aplicaiilor de baze de date

Extinderea cercetrilor fundamentate pe domeniul bazelor de date


ctre depozite de date (Data Warehousing), analiza datelor (OLAP) ,
explorarea datelor (Data Mining) i descoperirea cunotinelor din
bazele de date (KDD)

Scurt istoric al organizrii i prelucrrii datelor






Sisteme tradiionale bazate pe fiiere (1950-1960)


SGBD bazate pe modelul de date ierarhic sau reea (1970)
SGBD relaionale
 Apariia modelului relaional (1970)
 Dezvoltarea SGBD relaionale (1970)
 Apariia SGBDR comerciale (1980)
 Maturizarea tehnolohgiei relationale pentru SGBD (1990)
Sisteme de baze de date obiect-relaionale
 Sisteme de baze de date deductive i sisteme de baze de date orientate
obiect.
Sisteme de baze de date orientate spre aplicaii
 Baze de date spaiale, temporale, multimedia, Web...
Sisteme de depozitare a datelor (Data warehousing), sisteme de analiz a
datelor i sisteme de explorare a datelor (data mining)

Evolutia activitii de organizare i prelucrare a datelor


Sisteme tradiionale bazate pe fiiere
Colecie de programe aplicaie, care efectueaz servicii pentru utilizatorii
finali, cum ar fi producerea de rapoarte. Fiecare program definete i
gestioneaz propriile sale date.

Fiierul = principalul tip de organizare a datelor.
- fiecare dat este descris independent n toate fiierele n care apare
- ntre fiiere nu exist o relaie definit explicit


Data1
Data2

Fiier 1

Prelucrare 1

Raport 1

Data 3

Data1
Data 3

Fiier 2
Data 4

Prelucrare2

Raport 1
Raport 1
Raport 1
Raport n

Ce probleme apar la sistemele bazate pe fiiere?




Caracteristicile sistemelor de prelucrare bazate pe fiiere




Rspunsul la o nou problem implic scrierea unei noi aplicaii care


creeaz fiierele de date corespunztoare
Pentru o organizaie fiierele de date au formate diferite iar aplicaiile pot
fi scrise n limbaje diferite

Probleme







Redundan i inconsisten a datelor (cum pot fi actualizate datele din


toate fiierele?)
Dificulti n accesarea datelor (necesitatea unor noi programe de
aplicaie?)
Izolarea datelor (diferite formate, diferite fiiere)
Imposibilitatea controlului concurenei (utilizatori multipli)
Probleme de securitate
Probleme de integritate a datelor (satisfacerea constrngerilor?)

Evolutia activitatii de organizare si prelucrare a datelor


Tratarea prin baze de date


Cauze ale limitrii tratarii anterioare:



Definitia datelor este ncorporata n
programele aplicatie

Nu exista controlul accesului si
manipularii datelor
Baza de date


Colectie partajata de date, ntre care exista


relatii logice si o descriere a acestor date,
proiectata pentru a satisface necesitatile
informationale ale unei organizatii.
Colectie autodescrisa de nregistrari
integrate.
Acumulri de date aflate n interdependen,
cu o anumit organizare, n vederea obinerii
operative a unor informaii utile despre un
anumit subiect.
Ansamblu de date interconectate, mpreun
cu descrierea lor, care rspunde calitilor
de centralizare, coordonare, integrare i
difuzie a informaiilor i care asigur
satisfacerea tuturor necesitilor de
prelucrare ale utilizatorilor din sistem.

Fisier 1
Fisier 2

Catalog de
date

Fisier n

Aplic. 1

Utiliz1

Aplic n

Utiliz n

Concluzie: este un depozit de date


unic, de volum mare care este definit
o singura data si este utilizat simultan
de mai multe departamente i
utilizatori.


Tratarea prin baze de date




Schema bazei de date consta in descrierea generala a bazei de date.




Este specificat n procesul de proiectare i se modific foarte rar

Instanta bazei de date este data de setul de date operationale din baza
la orice moment dat
 se modifica frecvent
Natura autodescriptiva a datelor duce la independenta programdate
analiza necesitatilor informationale ale unei organizatii --> identificarea
entitatilor, a atributelor si a legaturilor dintre ele
Exemplu

baza de date Universitate

entitati : Studenti, Profesori, Cursuri, Sectii,

atribute (proprietati): Nr. Matricol, Nume, Prenume, Data de nastere, adresa,
etc.

legturi: Studentii asist la cursuri



Profesorii susin cursuri


Cursurile se bazeaz pe cunotinele altor cursuri, etc
M. Danubianu - Baze de date

Tratarea prin baze de date




separarea definiiei datelor de programele de aplicaie presupune existena


unei definiii interne si a unei definiii externe a datelor => abstractizare a
datelor
 avantaj: permite modificarea definiiei interne a unui obiect fr a afecta
utilizatorii acestuia dac definiia extern rmne aceeai
modelul extern - descrierile care se refer strict la datele unei aplicaii
avantaje:
 reducerea redundanei
 evitarea inconsistenei
 posibilitatea partajrii datelor
 ncurajarea introducerii standardelor
 posibilitatea aplicrii restriciilor de securitate
 meninerea integrittii datelor

Aplicaii de baze de date









Tranzacii bancare
Linii aeriene: rezervri, planificri
Universiti: evidena studenilor, situaia
colar
Vnzri: eviden clieni, produse, cumprri
Urmrirea produciei: producie, inventar,
comenzi, lanul de furnizori
Resurse umane: nregistrarea angajailor,
salarizare, etc

Arhitectura bazelor de date


Arhitectura ANSI/SPARC cu trei niveluri ()

1971 grupul DBTG (Data Base Task


Group) propune o terminologie
standard si o arhitectur pe doua
niveluri:
schema - abordare d.p.d.v. al
sistemului si
subschema - abordare d.p.d.v. al
utilizatorului
1975 comitetul ANSI/SPaRC abordare pe trei niveluri, cu un catalog
de sistem.
Scop: separarea fiecrei vederi a
utilizatorilor bazei de date de modul n
care aceasta este reprezentat fizic
Presupune: necesitatea unei zone
independente de implementare care s
izoleze programele de consideraiile
de reprezentare de baz

Nivelul
extern
Vedere1

Vedere 2

Vedere n

Schema
conceptual
Schema fizic

Nivelul
conceptual
Nivelul
intern

Baza de date
Organizarea fizic
a datelor

Arhitectura bazelor de date


Arhitectura ANSI/SPARC cu trei niveluri


Nivelul intern - (baza de date fizic) = colecie de fiiere care conin


datele fizice, la care se adaug structuri auxiliare menite s asigure
accesul operativ la aceste date (directoare, indeci, tabele de
dispersie)
 probleme tratate:
 alocarea spaiului de stocare pentru date i indeci
 descrierile nregistrrilor pentru stocare (cu dimensiunile
articolelor de date)
 plasarea nregistrrilor
 tehnici de comprimare a datelor i de codificare a acestora


concluzie: schimbarea sistemului de operare sau modificri n

configuraia echipamentelor hardware pot atrage modificri ale


bazei de date fizice, dar acestea nu vor afecta celelalte nivele

Arhitectura bazelor de date


Arhitectura ANSI/SPARC cu trei niveluri


Nivelul conceptual - abstractizare a unei pri din lumea real, i


descrie structura logica a datelor (ce date sunt stocate ntr-o baz de
date i relaiile dintre acestea, prin specificarea unor constrngeri)
 constrngeri: proprieti ale datelor ce nu pot fi exprimate prin
descrieri de structur ( restricii asupra valorilor pe care le pot lua
datele sau restrictii privind legturile dintre diferite uniti logice)
 probleme tratate:
 specificarea entitilor , a atributelor i a relaiilor dintre ele
 constrngeri asupra datelor
 informaii de securitate i integritate a datelor
 realizeaz independena fizic a datelor


concluzie: integreaz viziunile tuturor utilizatorilor asupra bazei


de date

Arhitectura bazelor de date


Arhitectura ANSI/SPARC cu trei niveluri

Nivelul extern - vederea utilizatorului asupra bazei de date







descrie acea parte a bazei de date care este relevant pentru fiecare
utilizator
cuprinde: unitati logice din modelul conceptual i unitati logice care
nu exista in modelul conceptual si care nu au corespondent direct in
baza de date fizica - uniti logice virtuale
fiecrui utilizator i corespunde un model extern propriu,
individualizat in raport cu cerinele specifice
termenul folosit pentru modelul extern este VEDERE
avantaje:
 asigurarea securitatii bazei de date prin limitarea accesului la date
a anumitor categorii de utilizatori, sau prin acordarea de drepturi
de acces diferite pentru un utilizator n cadrul mai multor vederi
 viziune individualizat i simplificat asupra bazei de date
realizeaz independena logic a datelor

Vedere 1
nrmatr

Vedere 2

Nume Prenume

Nivel
Conceptual

nrmatr

Vrsta adresa
Nume

nrmatr
Prenume

Nume grupa

DDN

adresa

grupa

struct STUDENT {
int nrmatr;
int grupa;
Nivel
char nume [15];
Intern
char prenume [15];
struct date DDN;
char adresa [20];
struct STUDENT *next; /* pointer ctre urmtoarea nregistrare */
};
index nrmatr; index grupa; /* definete indecii for staff */

Independena datelor

unei delimitri nete ntre reprezentarea fizic a datelor i imaginea pe care


o are utilizatorul despre aceste date
Independena datelor este de dou feluri:
 fizic
 logic
Independena fizic d msura imunitii aplicaiilor fa de modificrile
n structura fizic de memorare a datelor
 presupune c aplicaiile nu conin nici o referire explicit la tipul
fiierelor n care sunt memorate datele, la tipul dispozitivului de
memorare sau la strategia de acces la date

Independena datelor


Independena logic a datelor se refer la imunitatea modelului propriu al


fiecrui utilizator fa de modificrile n structura logic global a bazei de
date.
 Se refer n special la problema adugrii de noi uniti logice (cmpuri)
la structura bazei de date i/sau la modificarea acestora i a relaiilor dintre
ele.
 Permite:
 dezvoltarea bazei de date fr a afecta utilizatorii care nu au nevoie de
noile date

reorganizarea bazei de date - regruparea cmpurilor n nregistrri, i
definirea de noi cmpuri pe baza celor existente
 problema delicat - eliminarea unei entiti logice din baza de date afecteaz utilizatorii care fac referire la entitatea eliminat
d.p.d.v. al utilizatorului, problema independenei logice se manifest legat de
operaiile pe care sistemul i permite s le efectueze asupra datelor din modelul
propriu astfel inct s nu afecteze modelul altor utilizatori care folosesc parial
sau total aceleai date.

Avantajele utilizrii bazelor de date




Memorarea convenabil i eficient a datelor i posibilitatea generrii


de informaii din volume mari de date
Beneficii majore:











Eficien i scalabilitate n ceea ce privete accesul la date i regsirea


acestora
Independena datelor
Redundan controlat
Posibilitatea de a asigura integritatea i securitatea datelor
Faciliti de acces concurent asupra datelor i posibilitatea recuperrii
acestora n cazul unui defect
ncurajarea introducerii standardelor
Administrarea uniform a datelor
Analiza datelor ( tehnici OLAP i Data Mining)

Sisteme de gestiune a bazelor de


date

Bazele de date





sunt colecii de date, cu organizare specific,

din punct de vedere logic, sunt considerate depozite centralizate, la


care au acces mai muli utilizatori,
permit oparaii asupra unui volum nsemnat de date,
necesi spaii i medii corespunztoare pentru stocare,


 Solicit sisteme de gestiune care s corespund acestor


caracteristici

SISTEME DE GESTIUNE A BAZELOR DE DATE (SGBD)

Un SGBD reprezint un sistem de programe care permit utilizatorului


definirea, crearea, ntreinerea bazei de date si accesul controlat la aceasta.
Ofer:
 faciliti de descriere a datelor - prin intermediul limbajului de descriere
a datelor(DDL)
 specificarea tipurilor de date si a structurilor
 specificarea constrngerilor asupra datelor
 faciliti de manipulare a datelor - prin limbajul de manipulare a datelor
(DML)
 inserare de date
 tergerea de date
 extragerea i interogarea datelor
 dou tipuri de limbaje de manipulare a datelor:
 limbaje procedurale - trateaz bazele de date nregistrare cu
nregistrare si specific cum se va obtine rezultatul dorit
 limbaje neprocedurale - opereaz asupra unor seturi de nregistrri si
descriu numai ce date vor fi obtinute (SQL)

SISTEME DE GESTIUNE A BAZELOR DE DATE (SGBD)




... mai ofer:


 accesul controlat la baza de date - presupune existena:
 unui sistem de securitate - previne accesarea bazei de date de
ctre utilizatori neautorizai




unui sistem de integritate - menine concordana datelor stocate


unui sistem de control al concurenei - permite accesul partajat la

baza de date


unui sistem de control al refacerii - restaureaz baza de date ntr-o


stare precedent concordant, n cazul unei defeciuni hard sau soft
unui catalog accesibil utilizatorilor - care conine descrierea
datelor din baz

un mecanism de vizualizare - permite fiecrui utilizator s-i


defineasc propriul mod de vizualizare a bazei de date;
o colecie de utilitare: editoare de rapoarte, generatoare de
aplicaii, programe asistent, module de proiectare, posibiliti de
dezvoltare a unor aplicatii de tip CASE, etc.

DDL i DML


Limbajul de definire a datelor (Data Definition Language - DDL)


 Specific schema unei baze de date ca un set de definiii
 Specific structurile de memorare i metodele de acces
 Instruciunile DDL sunt compilate, rezultnd un set de tabele
despre care sunt memorate date (metadate) ntr-un fiier special :
dicionarul de date
Limbajul de manipulare a datelor (Data Manipulation Language DML)
 Regsirea informaiilor din bazele de date ( QL Query language)
 Inserarea/tergerea/actualizarea informaiilor in bazele de date
Un limbaj de interogare este o parte a DML care implic numai
regsirea de informaii.
Limbajul de definire a vederilor ( VDL View Definition Language )

Mediul SGBD
Hardware

Software

Proiectanii
bazei de date
Pr. b.d. logice

Pr. b.d. fizice

Date

Proceduri

Administratorul
de baze de date
Programatorii
de aplicaii
Specialiti

Persoane

Utilizatorii
bazei de date
Utilizatorii
finali
Nespecialiti

SGBD
Funciile unui SGBD

1982 -Codd a enumerat 8 servicii care trebuie realizate de ctre un


SGBD complet:
1. stocarea, regsirea i reactualizarea datelor
2. un catalog accesibil utilizatorului care s conin descrierile
articolelor de date (caracteristic a arhitecturii ANSI/SPARC)
 conine meta-date (date despre date)

3. asigurarea tranzaciilor
 tranzacia const ntr-o serie de aciuni realizate de un singur utilizator
sau un program aplicaie prin care se acceseaz sau se schimb coninutul
bazei de date.
 SGBD furnizeaz un mecanism care garanteaz ca sunt efectuate toate
reactualizrile corespunztoare unei anumite tranzacii sau c nu se
efectueaz nici una

4. servicii de control concurente


 mecanism care garanteaz c baza de date este corect reactualizat
atunci cnd mai muli utilizatori efectueaz simultan astfel de operaii

SGBD
Funciile unui SGBD
5.

servicii de reconstituire


6.

servicii de autorizare


7.
8.

se garanteaz accesul la date numai pentru utilizatorii autorizai =>


securitatea datelor

suport pentru comunicarea datelor


servicii de integritate


mecanism de reconstituire a unei baze de date n cazul n care


aceasta este deteriorat ntr-un fel oarecare

mijloace care asigur c att datele din baza de date ct i


modificrile acestora respect anumite reguli

servicii suplimentare:



servicii pentru promovarea independenei de date


servicii utilitare

Avantajele si dezavantajele utilizarii SGBD-urilor

Avantaje













controlul redundanei datelor


asigurarea coerenei datelor
mai multe informaii obinute din
aceeai cantitate de date
posibilitatea partajrii datelor
integritate crescut a datelor
securitate crescut
concuren imbuntit
posibilitatea aplicrii standardelor
economie de scal
productivitate crescut
servicii de salvare de siguran i
refacere

Dezavantaje:









complexitate
dimensiune
costul sistemelor SGBD
costuri adiionale pentru elemente
hardware
costul conversiei
performana
impactul crescut al unei
defeciuni

BAZE DE DATE
CURS 2
Modelul relaional

M. Danubianu - Baze de date

De ce se studiaz modelul relaional




Cel mai utilizat model de date


 IBM (DB2), Microsoft (ACESS, FoxPro i SQLServer),
Oracle (9i, 10g), Sybase, MySQL, etc.
Sisteme superioare celor implementate pe baza modelelor mai
vechi
 IMS de la IBM (modelul ierarhic) i CODASYL (modelul
reea)
Competitori actuali: modelul orientat pe obiecte i modelul
obiect relaional
 ObjectStore, Versant, Ontos
 Informix Universal Server, UniSQL, O2
M. Danubianu - Baze de date

Modelul de date relaional




1970 F.E.Codd - Un model relational de date pentru bnci de


date partajate de dimensiuni mari
Obiective:
 s permit un grad nalt de independen a datelor
 s furnizeze baze solide pentru tratarea coerenei i a
problemelor de redundan a datelor --> este introdus conceptul
de relaii normalizate = relaii care nu conin grupuri ce se
repet
 s permit expansiunea limbajelor de manipulare a datelor
orientate spre seturi
Datele se prezint sub forma de tabele ( fie c se refer la entiti,
fie c se refer la legturile dintre acestea)
Caracteristici :




este orientat spre multimi


a permis introducerea unor limbaje neprocedurale de manipulare a datelor
nu este orientat spre sistemul de calcul.
M. Danubianu - Baze de date

Orice tabel este o mulime ale crei elemente sunt linii sau coloane
 numrul liniilor din tabel la un moment dat = cardinalitate

numarul de coloane din tabel = n = gradul (aritatea )
Domeniul reprezint ansamblul de valori admisibile pentru o component a unui
tabel

domeniul numelor de orae, domeniul numelor de persoane, domeniul
numerelor ntregi, etc
Dou domenii sunt compatibile dac ele sunt comparabile din punct de vedere
semantic (dac mulimile de valori care le definesc nu sunt disjuncte)

noiunea de domeniu interpretat restricioneaz problema compatibilitii
domeniilor chiar n cazul n care, conform definiiei, dou domenii ar fi
compatibile

proprieti:
 ntr-un tabel nu exist dou linii identice (st la baza definirii
conceptului de cheie a unui tabel)
 ordinea liniilor intr-un tabel este arbitrar

M. Danubianu - Baze de date

Terminologie
Nume

Pre

Tabel sau relaie Produse:


Atribute sau cmpuri
Categorie

Editura

Visual FoxPro 1999

tehnic

TEORA

Office 2000

299

tehnic

Microsoft

Informatica

149

tiinific

ALL

economic

Polirom

Contabilitate 203

Tupluri sau rnduri sau nregistrri


M. Danubianu - Baze de date

Structuri de reprezentare


Baza de date relaional = un set de tabele normalizate.

M. Danubianu - Baze de date

Structuri de reprezentare




o singur form de structurare a datelor relatiile - se utilizeaz att pentru


reprezentarea tipurilor de entitti ct si a legturilor dintre acestea.
Descrierea unei baze de date relaionale - printr-o schem relational, care
const din una sau mai multe scheme de relaie
Schema de relatie este format din denumirea unei relaii urmat de un set de
atribute:
 Facultate (Codf, Nume, Adresa)
 Personal (Codpers, Nume, Funcie,Salariu, Codf)
 Profesori (Codp, Nume, Funcie, Disciplin, Codf)
 Student (Matr, Nume, Incadrare, Sit_scolar, An, Sex)
 Nota (Matr, Codp, Nota)
reprezentarea legturilor dintre tipurile de entitti folosete doua tehnici:
 propagarea cheilor dintr-o schem de relatie in alta - pentru reprezentarea
legturilor de tip 1: 1 sau 1: N
 crearea unei scheme de relatie separate - de jonctiune- pentru reprezentarea
oricrui tip de legtur, inclusiv a celor de tip N:M
instana unei baze de date = totalitatea datelor operaionale coninute n baza
de date la orice moment de timp. (un tabel coninnd valorile curente pentru
atribute)
M. Danubianu - Baze de date

Exemplu de instan a relaiei STUDENT


sid

nume

login

specializare adresa

53666

Axinte

ax@cs

cs

SV

53688

Drgan

dr@ee

ee

NT

53650

Croitoru cr@mat

mat

BT

 Cardinalitate = 3, grad = 5 , toate rndurile


sunt distincte

M. Danubianu - Baze de date

Chei relaionale
Supercheie - un atribut sau un set de atribute care identific n mod unic un tuplu al
unei relaii.
 Poate conine atribute adiionale care nu sunt strict necesare identificrii
unui tuplu

Cheie candidat (K) a unei relatii R - o supercheie pentru care nici o submulime
nu este supercheie in cadrul relaiei respective.
Proprietile cheii candidat K: unicitate - valorile cheii identifica in mod unic
orice tuplu al unei relatii
 ireductibilitate
Tipuri de chei candidat:
 simple
 compuse - atributele care o compun sunt atribute prime ( celelalte
atribute sunt neprime)

Cheie primar este cheia candidat care este selectat pentru a identifica n mod
unic tuplurile unei relaii.
 Restricii:
 nu sunt admise valori nedefinite pentru nici un atribut al cheii primare
 nici o valoare a unui atribut dintr-o cheie primara nu poate fi modificat
printr-o operatie de actualizare

M. Danubianu - Baze de date

Chei alternative sunt cheile candidat care nu sunt selectate drept chei
primare.
Cheia strin este un atribut sau o multime de atribute din cadrul unei
relaii provenite prin propagarea unei chei candidat a unei alte relaii.
 Valoarea unei chei strine = o referin la tuplul a crei valoare
este identic cu cea a cheii strine.
 Relaia care conine cheia strin - relaie de referin
 relaia care conine cheia care s-a propagat ca i cheie strain relaie referit

M. Danubianu - Baze de date

10

Integritatea relaional


Integritatea relaional set de reguli cu rolul de a garanta c datele sunt


corecte.
1. Constrngeri de domeniu
2. Integritatea entitilor
3. Integritatea referenial
4. Constrngeri de ntreprindere

Constrngerile de integritate se bazeaz pe semantica realitii


descrise prin relaiile bazei de date.
Se poate verifica dac o instan a bazei de date violeaz o
constrngere de integritate, dar nu se poate NICIODAT afirma c o
constrngere este adevrat prin verificarea unei instane.
O constrngere de integritate este o stare referitoare la toate
instanele posibile ale unei baze de date!
Integritatea entitilor (constrngere de cheie primar) i integritatea
referenial (constrngere de chei strine) sunt cele mai generale
constrngeri de integritate.


M. Danubianu - Baze de date

11

Integritatea entitatilor
(constrngeri asupra cheii primare)

Se aplic cheilor primare ale relaiilor de baz.


Relaie de baza = relaie ce corespunde unei entiti n schema conceptual,
i ale crei tupluri sunt stocate fizic n baza de date

ntr-o relaie de baz nici un atribut al unei chei primare nu poate fi null.

Null - valoare a unui atribut care este n mod curent necunoscut sau care
nu este aplicabil unui anumit tuplu.
 modalitate de tratare a datelor incomplete sau deosebite
 nu trebuie confundat cu o valoare numeric egal cu zero sau cu un ir de
caractere completat cu spatii.
 este tratat diferit fa de alte valori=> pot s apara probleme de
implementare, ca urmare a faptului c trebuie renunat la logica boolean
(specific calculului predictiv de ordinul nti) i trebuie lucrat cu o
logic polivalent ( tri sau cvadrivalenta)

M. Danubianu - Baze de date

12

Integritatea referenial
(constrngeri de cheie strin)

Principiul integritii referinei - enunat de Codd n 1979 sub


urmtoarea form:
Dac A este o cheie primar monoatribut n relaia R1 i B este
o component a unei chei primare multiatribut n relaia R2, B fiind
definit pe acelai domeniu cu atributul A, atunci mulimea valorilor
lui B n R2 trebuie s fie inclus n mulimea valorilor lui A n R1.

Dac B este o cheie strin n R2 rezultat prin propagarea unei


chei primare A din R1, atunci orice valoare a lui B din R2 trebuie
s se regseasc printre valorile lui A din R1.
Dac ntr-o relaie exist o cheie strin, valoarea acesteia
trebuie ori s coincid cu valoarea unei chei candidat a unui
tuplu n relaia sa de baz, ori s fie n ntregime null.
M. Danubianu - Baze de date

13

=> constrngeri refereniale -> pot fi reprezentate prin diagrame


refereniale = grafuri ale cror noduri reprezint relaii, iar arcele
reprezint constrngeri refereniale. Sensul arcului este de la relaia de
referin ctre relaia referit.
pot exista cicluri, numite cicluri refereniale i chiar cicluri de
lungime unitar, caz n care relaia referit este una i aceeai cu
cea de referin. => relaie autoreferit.

M. Danubianu - Baze de date

14

Exemple: Facultate (Codf, Nume, Adresa)

Profesori (Codp, Nume, Funcie, Disciplin, Codf)

Student (Matr, Nume, Incadrare, Sit_scolar, An, Sex)

Nota (Matr, Codp, Nota)

FACULTATE  PROFESORI  NOTA  STUDENT

M. Danubianu - Baze de date

15

Integritatea referential - continuare

Poate fi afectat de operaiile de adugare, tergere i actualizare.

Operaia de adugare - valorile tutoror atributelor care fac parte dintr-o cheie strin trebuie s se
regseasc printre valorile atributelor pe care le refer n relaiile referite.
Operaia de tergere - fr nici un fel de restricii d.p.d.v. al condiiilor de integritate referenial.
Operaia de actualizare = o operaie de tergere urmat de una de adugare..

Relaii de referin

Relaiile referite

Operaia de adugare - fr restricii


Operaia de tergere - posibil ca n relaiile de referin s existe tuple care fac referire la tuplul
care se terge. => una dintre urmtoarele dou opiuni: tergerea restricionat sau tergerea
cascadat.

tergerea restricionat- nu se accept tergerea unui tuplu din relaia referit dac acesta
este referit de cel puin un tuplu din relaia de referin.

tergerea cascadat - tergerea unui tuplu din relaia referit va fi urma de tergerea tuturor
tuplelor din relaiile de referin care fac referire la tuplul ters. Dac tuplurile terse din relaia
de referin sunt, la rndul lor referite de alte tuple, atunci tergerea se propag, n cascad,
asupra tuplurilor care fac referire la cele din urm .a.m.d.
Operaia de actualizare Actualizarea unei chei dintr-o relaie referit se poate face n dou moduri:

actualizare restricionat

actualizare cascadat problema integritii - abordat n dou variante: declarativ sau procedural.
M. Danubianu - Baze de date

16

Proprietile, avantajele i limitele modelului


relaional


Proprieti:





nu exista tupluri identice


ordinea liniilor si a coloanelor este arbitrar
articolele unui domeniu sunt omogene
fiecare atribut definete un domeniu i nu se poate repeta n cadrul
aceleiai relaii
toate valorile unui domeniu sunt considerate atomice

Avantaje
independena datelor
redundan minim
suplee in
comunicarea cu
utilizatorul

Limite:
necesita volum mare de spaiu
nu lucreaz cu obiecte
complexe
nu realizeaz gestiunea
datelor distribuite
nu realizeaz gestiunea
cunotinelor
pot s apar fenomene de
inconsisten
M. Danubianu - Baze de date

17

Concluzii


Reprezentare tabelar a datelor

Simplu i intuitiv

Cel mai utilizat pentru implementarea SGBD-urilor comerciale

Constrngerile de integritate pot fi specificate de DBA pe


baza semnificaiilor aplicaiilor. SGBD-ul verific violarea
acestor constrngeri

A permis dezvoltarea limbajelor de interogare neprocedurale


M. Danubianu - Baze de date

18

BAZE DE DATE
CURS 3
Limbaje relaionale

M. Danubianu - Baze de date

Limbaje relaionale formale


Limbajele de interogare: permit manipularea i regsirea datelor dintr-o
baz de date.
Modelul relaional accept limbaje de interogare simple care:
au fundamente formale puternice, bazate pe logic
permit optimizri multiple
Limbaj de interogare limbaj de programare!
nu sunt limbaje complete - nu permit instruciuni de control al fluxului
programului.
nu sunt destinate pentru calcule complexe.
permit accesul uor i eficient la mulimi de date de dimensiuni mari.
Se bazeaz pe dou tipuri de mecanisme:
algebric noile relaii se obin aplicnd operatori specializai asupra
uneia sau mai multor relaii din baza de date
logic filtrele se obin cu ajutorul unor formule logice pe care
tuplurile rezultatului trebuie s le satisfac

M. Danubianu - Baze de date

La baza limbajelor de interogare reale (SQL, QBE) stau dou formalisme


matematice:
Algebra Relaional: are caracter operaional (procedural)
 util pentru reprezentarea planurilor de execuie.
Calcul relaional: permite descrierea rezultatului ateptat (Non-operational,
neprocedural, declarativ)


Sunt limbaje formale, neprietenoase

nelegerea algebrei i a calculului relaional este cheia


nelegerii SQL!

M. Danubianu - Baze de date

Caracteristici


Interogrile sunt aplicate instanelor unei relaii. Intrrile i


ieirile unei interogri sunt relaii.
 Interogarea este evaluat utiliznd instane ale fiecrei
relaii de intrare i produce o instan a relaiei de ieire.
De regul numele cmpurilor din relaiile rezultat sunt motenite din
relaiile originale.
Personal

Cnp
056
456
872
659

Nume
Lupu
Marinescu
Ilea
Stoica

Funcie
Prof
Assist
Conf
asist

Salar
6000000
4000000
5500000
3500000

M. Danubianu - Baze de date

ALGEBRA RELAIONAL

formalism propus de Codd


colecie de operatori care permit manipularea relaiilor.
utilizai pentru a specifica solicitrile de regsire a datelor
(principala operaie care se execut asupra datelor din bazele
de date= consultarea)
rezultatul aplicrii acestor operatori este tot o relaie
ieirea unei operaii poate fi intrare pentru o alt operaie
proprietatea de nchidere
permite combinarea expresiilor

M. Danubianu - Baze de date

Operatorii algebrei relaionale




D.p.d.v. al numrului de operatori asupra crora acioneaz





d.p.d.v al tipului operatorilor:





operatori pe mulimi: reuniunea, intersecia, diferena i produsul cartezian


operatori relaionali specifici (iau n considrare caracterul de tuplu al
elementelor componente ale relaiilor) selecia, proiecia

d.p.d.v. al modului de implementare:





operatori unari: selecia, proiecia


operatori binari: reuniune, intersecie, diferen, diviziune, produs
cartezian, jonciune

operatori fundamentali
operatori derivai

Redenumirea relaiilor i atributelor: redenumirea

M. Danubianu - Baze de date

Algebra Relaional



Proiecia ( ) terge coloanele nedorite din relaie.


Selecia ( ) Selecteaz o submulime a nregistrrilor dintr-o
relaie.

Produs cartezian ( x ) Permite combinarea a dou relaii.


 Diferen ( ) Tuplele din relaia 1, care nu sunt n relaia 2.
 Reuniune (
) Tuplele din relaia 1 i din relaia 2.
Operaiile:intersecie , join, diviziune i redenumire


nu sunt eseniale dar sunt foarte utile.

, ><, / ,
Deoarece fiecare operaie ntoarce o relaie, operaiile pot fi compuse.

M. Danubianu - Baze de date

Selecia( p)
Selecteaz rndurile care
satisfac o condiie (predicat)
de selecie.

Nu exist duplicate n instana
relaiei de ieire. (De ce?)

Schema rezultatului este
identic cu schema relaiei de
intrare.

Relaia rezultat poate fi
intrare pentru o alt operaie
algebric.
condiie de selecie (predicatul selectiv) - expresie care conine: nume
de cmpuri, constante i operatori relaionali sau logici
Evaluarea predicatului ntoarce o valoare logic de tipul TRUE sau
FALSE.


M. Danubianu - Baze de date

Exemplu
PERSONAL (cnp, nume, pren, funcie, loc_m, salar)
Cnp
056
456
872
659

Nume
Lupu
Marinescu
Ilea
Stoica

Pren
Adriana
Dana
Dan
Ileana

Funcie
Prof
Assist
Conf
asist

Loc_m
FIE
FSE
FS
FIE

Salar
600
400
550
350

Care sunt persoanele cu salarii mai mari de 500 lei?

salar>500 ( Personal )
Cnp Nume Pren Funcie Loc_m
056 Lupu Adriana Prof
FIE
872 Ilea
Dan
Conf
FS
M. Danubianu - Baze de date

Salar
600
550
9

Proiecia(


list cmpuri

Genereaz o relaie care conine


doar acele cmpuri din lista de
proiecie
 terge cmpurile care nu apar n
list.
Schema relaiei rezultat conine
exact cmpurile din lista de
proiecie, (au aceleai nume din
relaia original)

Operatorul de proiecie elimin duplicatele! (De ce????)


este o operaie costisitoare
SGBD-urile reale omit adesea eliminarea tuplelor duplicat

M. Danubianu - Baze de date

10

Exempu
S se realizeze o list cu salariile ntregului personal care
s conin numai detaliile: Cnp, Nume, Funcie, Salar.

cnp,nume,functie,salar,.( Personal )
Cnp
056
456
872
659

Nume
Lupu
Marinescu
Ilea
Stoica

Funcie
Prof
Assist
Conf
asist

Salar
600
400
550
350

M. Danubianu - Baze de date

11

Reuniunea (R S)
(Selecia tuplurilor distincte a dou relaii)





Reuniunea a dou relaii R i S cu i respectiv j tupluri


este obinut prin concatenarea lor ntr-o relaie cu
maxim (i+j) tupluri, tuplurile duble fiind eliminate.
Relaiile R i S trebuie s fie compatibile la reuniune.
 acelai numr de cmpuri
 cmpurile corespunztoare au acelai domeniu.
Ce schem va avea relaia rezultat?
Se poate utiliza i pentru adugarea de noi tuple ntr-o
relaie,
 unul din operanzi va fi constituit din valorile
atributelor care se adaug, n ordinea n care apar ele
n relaia respectiv
posibilitatea compatibilizrii la reuniune a unor scheme
de relaie care nu sunt compatibile, dar n care exist
cmpuri comune?
M. Danubianu - Baze de date

12

Exemplu
StudC

StudAII

Care sunt toi studenii specializrii Calculatoare i automatizri?

StudC StudAII

M. Danubianu - Baze de date

13

Intersecia(R S)


definete o relaie ce const n mulimea tuturor


tuplurilor care se afl att n relaia R ct i n relaia S.





cele dou relaii trebuie s fie compatibile la reuniune.

operator binar, comutativ , derivat.


poate fi exprimat ca o diferen, astfel:
RS =R-(R-S) = S-(S-R)

M. Danubianu - Baze de date

14

Exemplu 1
Ce produse care sunt n stoc
au mai fost comandate?

M. Danubianu - Baze de date

15

Exemplu 2
Client_X1

Client_X2

CUI

Denumire

CUI

Denumire

Localitate

Strada

Telefon

1034567

OLPO SRL

1034567

OLPO SRL

Suceava

N.Balcescu

532567

2439873

MICROPIC

2394560

IUPS

Suceava

1198034

ELIANA

2935467

AVERSA SA

Bucuresti

Primaverii

021345627

2935467

AVERSA SA

5683456

ATAC SRL

Galati

Client_X1 cui,denumire Client_X2


Care sunt clientii comuni?

CUI

Denumire

1034567

OLPO SRL

2935467

AVERSA SA

M. Danubianu - Baze de date

16

Diferena R-S
(Selecia tuplelor carte apar numai ntr-o relaie)






Definete o relaie ce const n tuplurile care sunt n


relaia R, dar nu i n relaia S.
Relaiile R i S trebuie s fie compatibile la reuniune.
Operaie binar, necomutativ
Se poate utiliza pentru tergerea tuplurilor dintr-o
relaie.

M. Danubianu - Baze de date

17

Produsul cartezian





definete o relaie care reprezint o concatenare a fiecrui tuplu din


relaia R cu fiecare tuplu din relaia S.

Shema relaiei rezultat conine cte un cmp pentru fiecare cmp


din S1 i din R1,
Dac R i S sunt de grad m, respectiv n , i de cardinalitate i, respectiv j,
produsul cartezian al celor dou relaii RxS este o relaie de grad m+n i de
cardinalitate i*j.
Dac este posibil numele cmpurilor sunt motenite din relaiile originale
Dac cele dou relaii conin cmpuri cu acelai nume, denumirile acestora
conin ca prefix denumirea relaiei, pentru a menine unicitatea denumirilor
n cadrul unei relaii.

M. Danubianu - Baze de date

18

Exemplu

S se gseasc toate
combinaiile posibile de
produse i depozite.

PRODUSE x DEPOZITE

M. Danubianu - Baze de date

19

Jonciunea (JOIN, uniunea)







operaie binar care are ca rezultat o nou relaie n


care fiecare tuplu este o combinaie a unui tuplu din
prima relaie cu un tuplu din a doua relaie.
derivat a produsului cartezian
Exist diferite forme :
- theta- JOIN
- echi- JOIN
- natural JOIN (uniunea natural);
- outer JOIN (uniunea extern);
- semi JOIN (semi-uniunea).




Schema relaiei rezultat - aceeai ca la produsul cartezian


conine mai puine tupluri dect produsul cartezian- poate
fi calculat mai eficient
M. Danubianu - Baze de date

20

Theta JOIN


R
p S

definete o relaie care conine tuplurile ce satisfac


predicatul p din produsul cartezian al relaiilor R i S.
este echivalent cu efectuarea unei selecii asupra
produsului cartezian al celor dou relaii operand.
Predicatul p este de forma : R.a S.b
 operator de comparare ( <,<=,>,>=, =)
Gradul operaiei de theta-uniune este suma gradelor
relaiilor operand R i S.
In cazul n care predicatul p conine numai egalitatea (=),
se folosete termenul de echi-uniune(echi-jonciune).
R
p S=p (RxS)
M. Danubianu - Baze de date

21

Exemplu
-FACTURI( numar, codp, cantitate, data) i
-COMENZI (numar, data, cod_ben), cu urmtoarele instane:

Care sunt comenzile care au fost


onorate? (pentru care s-au emis facturi)

Facturi

facturi.numar=comenzi.numar

Comenzi

M. Danubianu - Baze de date

22

Natural Join

R
S

echi-uniune a dou relaii R i S pe toate atributele comune. O apariie a


fiecrui atribut comun este eliminat din rezultat.
Gradul este dat de suma gradelor relaiilor R i S, minus numrul atributelor
comune
COMENZI (numar, data, cod_ben),
BENEFICIARI (cod_ben, nume, adresa), cu urmtoarele instane

M. Danubianu - Baze de date

23

OUTER JOIN (Uniunea extern)


R 3 S (stnga) ; R 8 S (dreapta)






Uneori, la uniunea a dou relaii nu exist o valoare similar n


coloanele comune. Chiar n aceste condiii rndul respectiv poate s
apar n relaia rezultat, dac se utilizeaz operatorul de uniune
extern.
Uniunea extern stnga este o uniune n care tuplurile din relaia
R, care nu au valori similare n coloanele comune ale relaiei S,
sunt de asemenea incluse n relaia rezultant.
Uniunea extern dreapta pstreaz n relaia rezultant tuplurile din
relaia S care nu au valori similare n coloanele comune cu R.
Exist i operaia de uniune extern complet.
Valorile lips din relaie sunt stabilite la valoarea null.
Avantaj: pstreaz informaii care n alt tip de uniune ar fi fost
pierdute.

M. Danubianu - Baze de date

24

Fie relaiile din exemplul anterior . Prin aplicarea operatorului de uniune


extern (dreapta) se obine:
OJOIN COMENZI AND BENEFICIARI

M. Danubianu - Baze de date

25

Diviziunea


Nu este un operator primar, dar este util n exprimarea unor


interogri de tipul:
Gsii beneficiarii care au contractat toate serviciile
furnizate de o societate.
Fie 2 relaii: A cu 2 cmpuri, x i y;
B cu un singur cmp y:
x | x, y A y B
 A/B =

A/B conine toate tuplele x (beneficiarii) a..
pentru fiecare tuplu y (serviciu) din B, exist un
tuplu xy n A.
In general, x i y poate fi orice mulime de cmpuri; y
reprezint cmpurile din B, i x y reprezint mulimea
cmpurilor din A.


M. Danubianu - Baze de date

26

Exemple A/B
x
s1
s1
s1
s1
s2
s2
s3
s4
s4

y
p1
p2
p3
p4
p1
p2
p2
p2
p4
A

y
p2
B1

y
p2
p4
B2

y
p1
p2
p4
B3

x
s1
s2
s3
s4

x
s1
s4

x
s1

A/B1

A/B2

A/B3

M. Danubianu - Baze de date

27

Exprimarea diviziunii cu ajutorul


operatorilor fundamentali


Ideea: A/B, calculeaz toate valorile x care


nu sunt descalificate de valori y din B.
 O valoare x este descalificat dac prin
ataarea unei valori y din B, se obine
un tuplu xy care nu se gsete n A.

Valorile x descalificate sunt:


A/B:
A/B:

x (( x ( A ) B ) A )

x ( A) toate tuplele descalificate


x ( A) x (( x ( A) B) A)
M. Danubianu - Baze de date

28

Formularea interogrilor n algebra


relaional

Schema bazei de date folosit pentru exemplificare

Ageni (zona, cod, nume, adresa, telefon, manager, tip_ag)


Contracte (cod, tip_pr, tip_m, cant, index_v, index_n, act_idx)
Facturi ( cod, numr, data, tip_pr, pret, cant, val)
Tipuri (tip_pr, den)

M. Danubianu - Baze de date

29

Numele i adresa agenilor din zona ZAMCA?


Soluia 1:
V= zona="ZAMCA" ( Agenti )
R= nume,adresa (V)
Soluia 2
R=nume,adresa ( zona="ZAMCA" ( Agenti ))

M. Danubianu - Baze de date

30

Care sunt agenii din zona central care au ncheiat


contracte?
V1= cod (AGENTI)
V2= cod (CONTRACTE)
V3= V1 V2 (codurile agenilor care au contracte)
V4= V3 AGENTI
V5= zona="CENTRALA" (V4 )

zona="CENTRALA" (cod (AGENTI) cod (CONTRACTE)


AGENTI)
M. Danubianu - Baze de date

31

BAZE DE DATE
Curs 4
SQL

M. Danubianu - Baze de date

LIMBAJUL SQL - Obiective i caracteristici


-

crearea bazelor de date i a structurilor pentru relaii;


efectuarea de operaii elementare de gestiune a datelor, precum
inserarea, modificarea i tergerea acestora din cadrul relaiilor;
efectuarea interogrilor ncepnd cu cele simple pn la cele complexe, n
scopul transformrii datelor brute n informaii.
operaiile se realizeaz cu un efort minim din partea utilizatorului,
structura comenzilor i sintaxa acestora este relativ uor de nvat.
limbajul este portabil, - respect un standard recunoscut astfel nct s se
poat utiliza aceeai structur i sintax a comenzilor la trecerea de la un
SGBD la altul
SQL prezint dou componente principale:
- un limbaj de definire a datelor (DDL) utilizat pentru definirea
structurii bazei de date i
- un limbaj de manipulare a datelor (DML) pentru regsirea i
reactualizarea datelor.
M. Danubianu - Baze de date

standardul SQL nu conine comenzi de control (nu exist


instruciuni de tipul IF..THEN..ELSE,
GO
TO,
DO..WHILE sau alte comenzi care s genereze un flux de
control) poate fi utilizat n dou moduri:
- interactiv prin introducerea instruciunilor de la un
terminal;
- prin integrarea instruciunilor SQL ntr-un limbaj
procedural.
Are urmtoarele caracteristici:
- limbaj neprocedural.
- are un format liber;
- comenzile sunt structurate pe baza unor cuvinte
standard din limba englez ( Create, Select, Insert..)
M. Danubianu - Baze de date

Principalele comenzi SQL


Pentru manipularea datelor

Pentru definirea bazei de


date

Pentru controlul accesului


la baza de date
Pentru controlul
tranzaciilor

SELECT
INSERT
DELETE
UPDATE
CREATE TABLE
DROP TABLE
ALTER TABLE
CREATE VIEW
DROP VIEW
GRANT
REVOKE
COMMIT
ROLLBACK

Extragerea datelor din baza de date


Adugarea de noi linii ntr-un tabel
Stergerea de linii dintr-un tabel
Modificarea valorilor unor atribute
Adugarea unui nou tabel la baza de date
Stergerea unui tabel din baza de date
Modificarea structurii unei baze de date
Crearea unuitabel virtual (vedere)
Stergerea unui tabel virtual
Acordarea unor drepturi pentru utilizatori
Revocarea unor drepturi pentru utilizatori
Marcheaz sfritul unei tranzacii
Abandoneaz tranzacia n curs.

M. Danubianu - Baze de date

Terminologie i convenii de scriere


a comenzilor SQL


In limbajul SQL standardizat se utilizeaz termenii de tabele , coloane


i rnduri.
O instruciune SQL este format din cuvinte rezervate i cuvinte
definite de utilizator.
Cuvintele rezervate :
- au un neles fix, trebuie scrise exact cum este necesar i nu
pot fi mprite n mai multe rnduri.
Cuvintele definite de utilizator :
- sunt formate de ctre acesta, conform unor anumite reguli de
sintax i reprezint denumirile diverselor obiecte din baza de
date, cum ar fi relaiile, coloanele , vederile, indexurile etc.
Majoritatea compnentelor unei instruciuni SQL nu sunt sensibile la
tipul de litere.
excepie important - faptul c datele de tip caracter literal trebuie
s fie scrise exact cum apar n baza de date.
M. Danubianu - Baze de date

Consultarea datelor n SQL




Operaia fundamental n SQL este consultarea


fraza SELECT - prezint trei clauze principale : SELECT, FROM i
WHERE.
SELECT
corespunde operatorului de proiecie din algebra
relaional, i este utilizat pentru desemnarea listei de atribute
(coloane, cmpuri) din tabelul rezultat;
FROM permite enumerarea tabelelor din care vor fi extrase
datele aferente consultrii;
WHERE
desemneaz predicatul selectiv al
algebrei
relaionale, relativ la atributele relaiilor care apar n clauza
FROM.
comand extrem de puternic echivalentul operaiilor de selecie,
proiecie i uniune din algebra relaional

M. Danubianu - Baze de date

Forma general a instruciunii SELECT este:


-

Alias reprezint aliasul atribuit relaiei


cmp este numele cmpului selectat
nume_nou numele cmpului selectat n noul tabel
local_alias aliasul local atribuit de utilizator;
cond_leg condiia de legtur ntre tabelele n care se manipuleaz datele;
cond_filtru condiia de filtrare a nregistrrilor;
list _cmpuri list a cmpurilor n funcie de care se face gruparea
nregistrrilor
- cmp_ord cmpul dup care se face ordonarea nregistrrilor

SELECT
[ALL | DISTINCT] [*]
[<alias>.]<camp>
[AS <nume_nou>]
[, [<alias>.]<camp>
[AS <nume_nou>] ...]
FROM <tabel>
[<local_alias>]
[, <tabel> [<local_alias>] ...]
[WHERE <cond_leg> [AND <cond_leg> ...]
[AND | OR <cond_filtru> [AND | OR <cond_filtru> ...]]]
[GROUP BY <lista_campuri>]
[HAVING <cond_filtru>]
[ORDER BY <camp_ord> [ASC | DESC] [, <camp_ord> [ASC |
DESC] ...]]

M. Danubianu - Baze de date

Secvena de prelucrare a unei fraze SELECT...




...este urmtoarea:
- FROM - specific tabelul sau tabelele care vor fi utilizate;
- WHERE - filtreaz rndurile supuse unei anumite condiii
sau conine condiia de jonciune ntre mai multe tabele
- GROUP BY - formeaz grupuri de rnduri cu aceleai
valori ale coloanelor din lista de parametri;
- HAVING - filtreaz grupurile supuse unei anumite condiii;
- SELECT - specific ce coloane vor aprea n tabelul
rezultat;
- ORDER BY - specific ordinea ieirii.
Operaia SELECT este nchis: rezultatul unei interogri unui tabel
este un alt tabel.
rezultatul poate fi un tabel "normal" (tabel salvat pe disc), un tabel
temporar (cursor - tabel care se terge automat la nchiderea unei
sesiuni de lucru) sau chiar o variabil-tablou (matrice).
M. Danubianu - Baze de date

Interogri n SQL


Ageni1 (zona, cod, nume, adresa, telefon, manager, tip_ag)

Ageni2 (zona, cod, nume, adresa, telefon, manager, tip_ag)

Contracte (cod, tip_pr, tip_m, cant, index_v, index_n, act_idx)

Facturi ( cod, numr, data, tip_pr, pret, cant, val)

Nrsp (seria, nrs, numr, data, pag, anulat, ult_pag)

Tipuri (tip_pr, den)




Ageni1 - agentii economici mari


Ageni2 - ceilali ageni economici

M. Danubianu - Baze de date

Selecia
Ce agenti economici mari au sediul n zona BURDUJENI?

intervine un singur tabel i anume Agenti1. In clauza WHERE apare
predicatul de selecie (conditia) : zona="BURDUJENI"
SELECT *
FROM AGENTI1
WHERE zona="BURDUJENI"


Care sunt facturile emise n data de 29.01.1999, cu valoare mai mare


de 2000000 corespunztor apei potabile?
SELECT *
FROM FACTURI
WHERE DATA={29.01.1999} AND TIP=12 AND VAL >2000000


M. Danubianu - Baze de date

10

Operatorul BETWEEN


Se poate reformula ultima interogare astfel: Care sunt facturile


pentru care valoarea consumului de ap potabil este mai mare de
1500000 i mai mic de 4000000?
 Se poate folosi urmtoarea instruciune:
SELECT *
FROM FACTURI
WHERE Tip=12 AND Val>1500000 AND val <4000000
Aceeai interogare se poate scrie astfel:
SELECT *
FROM FACTURI
WHERE Tip=12 AND Val BETWEEN 1500000 AND 4000000

M. Danubianu - Baze de date

11

Operatorul LIKE


Se folosete pentru a compara un atribut de tip ir de caractere


cu un literal (constant de tip ir de caractere).

%, "_" este un specificator multiplu, joker sau masc.

Care sunt agenii al cror nume

ncepe cu "S" i sunt

societi pe aciuni?
SELECT *
FROM Agenti1
WHERE Nume LIKE "S%SA"

M. Danubianu - Baze de date

12

Operatorul IN


Are urmtorul format general:


 expresie1 IN (expresie2, expresie3,..)
Rezultatul evalurii unui predicat care conine acest operator va fi
"adevrat" dac valoarea expresiei1 este egal cu cel puin una din
valorile: expresie2, expresie3, .. i este util atunci cnd condiiile de
selecie sunt mai complexe.
Care sunt agenii din zonele: CENTRAL i ZAMCA?
SELECT *
FROM AGENTI1
WHERE Zona = "CENTRAL" OR Zona="ZAMCA"
Sau
SELECT *
FROM AGENTI1
WHERE Zona IN (CENTRAL, ZAMCA)

M. Danubianu - Baze de date

13

Operatorul IS NULL


Care sunt agenii pentru care nu s-a introdus numele managerului?


SELECT *
FROM AGENTI1
WHERE manger IS NULL
Not: Operatorul NULL se utilizeaz cu IS i nu cu semnul "=".
Utilizarea unei expresii de forma =NULL ar conduce la un rezultat
care va fi ntotdeauna fals, chiar dac expresia nu este nul.

M. Danubianu - Baze de date

14

Proiecia


In ce zone ale oraului i au sediul agenii comerciali, clieni ai


firmei?
SELECT DISTINCT Zona
FROM Agenti
Care este numele fiecrui agent comercial i adresa sa?
SELECT Nume, Adresa
FROM Agenti
prezentarea ordonat a agenilor - ORDER BY.
SELECT *
FROM AGENTI
ORDER BY Nume
dac se dorerte ordonarea descresctoare se folosete urmtoarea
formulare:
SELECT *
FROM Ageni
ORDER BY Zona ASCENDING, Nume DESCENDING
M. Danubianu - Baze de date

15

Reflectarea operatorilor asambliti (pe mulimi)


Reuniunea


Pornind de la tabelele Agenti1 i Agenti2 , tabelul reuniune care


reprezint tabelul AGENTI va fi obinut n SQL prin fraza:
SELECT *
FROM AGENTI1
UNION
SELECT *
FROM AGENTI2
SQL elimin automat dublurile, deci nu este necesar utilizarea
clauzei DISTINCT.

M. Danubianu - Baze de date

16

Diferena

Fie dou tabele cu date de identificare pentru clienii a dou

societi: Clieni1 i Clieni2.


S se gseasc care sunt clienii societii 1 care nu sunt i clieni ai
societii2.
SELECT *
FROM Clieni1
MINUS
SELECT *
FROM Clieni2

M. Danubianu - Baze de date

17

Intersecia


S se gseasc codurile agenilor economici care au contract de


furnizare servicii.
SELECT cod

FROM Ageni
INTERSECT
SELECT cod
FROM Contracte
sau , innd cont de faptul c este un operator drivat:
SELECT cod
FROM Ageni
MINUS
(SELECT cod
FROM Ageni
MINUS
SELECT cod
FROM Contracte)
M. Danubianu - Baze de date

18

Produsul cartezian

SELECT *
FROM Ageni, Contracte

M. Danubianu - Baze de date

19

Jonciunea n SQL


trebuie inut cont de faptul c


jonciunea este o
combinaie de produs cartezian i selecie.
Cror ageni le-au fost listate facturile i care sunt seriile
i numerele speciale alocate acestora?

SELECT DISTINCT Agenti.cod, nume, Adresa, NRSP.seria, NRSP.nrs


FROM Agenti, Facturi, NRSP
WHERE Ageni.cod=facturi.cod AND facturi.numar=NRSP.numar
AND facturi.data=NRSP.data

M. Danubianu - Baze de date

20

Dac s-ar fi dorit ca relaia rezultat s conin toate atributele celor dou
tabele, fraza SELECT ar fi avut una din urmtoarele forme:
SELECT Agenti.* , NRSP.*
FROM Agenti,facturi, NRSP
WHERE Ageni.cod=facturi.cod and facturi.numar=NRSP.numar and
facturi.data=NRSP.data

sau
SELECT *
FROM Agenti,facturi, NRSP
WHERE Ageni.cod=facturi.cod and facturi.numar=NRSP.numar and
facturi.data=NRSP.data

M. Danubianu - Baze de date

21

In ce zone ale oraului se gsesc agentii economici crora li s-a


facturat o sum mai mare de 1.000.000 lei pentru apa potabil?
SELECT DISTINCT Zona
FROM Agenti, Facturi
WHERE Tip=12 AND Val>1000000 AND Agenti.cod=Facturi.cod


In ce zone ale oraului se gsesc agentii economici ale cror facturi


sunt listaste pe mai mult de un formular tip i care au consumat mai
mult de 1000 mc ap potabil? (condiia care se va impune este ca n
cmpul ULTPAG s se gseasc o valoare mai mare de 1).
SELECT DISTINCT Zona
FROM Agenti, Facturi, NRSP
WHERE NRSP.ULTPAG>1 AND
NRSP.numar=FACTURI.numar AND
NRSP.data=FACTURI.data AND Facturi.tip=12 and
Facturi.cant>1000 AND
Facturi.cod=Agenti.cod
M. Danubianu - Baze de date

22

Subconsultri
posibilitatea imbricrii a dou sau mai multe fraze SELECT astfel
nct pot fi formulate interogri cu mare grad de complexitate

Forma general a unei subconsultri:
SELECT list_cmpuri1
FROM List_tabele1
WHERE cmp1 operator
(SELECT list_cmpuri2
FROM List_tabele2
WHERE condiii)
unde operator poate fi:
IN sau NOT IN
EXIST sau NOT EXIST
ALL, ANY etc.

Subconsultri : corelate sau necorelate


M. Danubianu - Baze de date

23

Operatorul IN (NOT IN)


Care sunt facturile emise n aceeai
zi cu cele pentru agentul
economic cu codul 16?

Rezultatul subconsultrii
(SELECT Data
FROM Facturi
WHERE Cod=16)

SELECT *
FROM Facturi
WHERE Data IN
(SELECT Data
FROM Facturi
WHERE Cod=16)

esteun tabel cu o coloan (Data)

Data
27-Ian- 1999
27-Ian- 1999
Clauza WHERE Data IN determin
cutarea n tabelul Facturi a tuturor
tuplurilor (liniilor) care au valoarea
atributului Data egal cu una din
valorile tuplurilor din tabelul obinut
prin subconsultare
M. Danubianu - Baze de date

24

Care sunt facturile emise n alte zile dect cea n care a fost ntocmit
factura 10013?
SELECT *
FROM Facturi
WHERE Data NOT IN
(SELECT Data
FROM Facturi
WHERE Numr=10013)


S se gseasc codurile agenilor economici care au contract de


furnizare servicii.
SELECT cod
FROM Ageni
WHERE cod IN
(SELECT cod
FROM Contracte)
M. Danubianu - Baze de date

25

Fie dou tabele cu date de identificare pentru clienii a dou


societi: Clieni1 i Clieni2. Cele dou relaii au structuri identice:
cod, nume, adresa, localitate.


S se gseasc care sunt clienii societii 1 care nu sunt i


clieni ai societii2.

Acelai rezultat ca cel obinut prin folosirea operatorului MINUS se


va obine n urma utilizrii frazei:

SELECT *
FROM Clieni1
WHERE (cod, nume, adresa, localitate) NOT IN
(SELECT cod, nume, adresa, localitate
FROM Clieni2)
M. Danubianu - Baze de date

26

Operatorii ALL, SOME i ANY




ALL, SOME i ANY permit utilizarea unui predicat de comparaie


care este aplicat rezultatului unei subconsultri.
predicat de comparaie -un predicat care conine unul din operatorii:
=,>=,<=,<,> sau .
Care sunt numerele facturilor emise ale cror valori corespunztoare
pentru apa potabil sunt superioare oricrei valori corespunztoare
apei potabile din facturile emise pe 27.01.1999?
SELECT numr
FROM FACTURI
WHERE Tip=12 AND val>ALL
(SELECT val
FROM FACTURI
WHERE Tip=12 AND Data={27.01.1999})
M. Danubianu - Baze de date

27

Care sunt numerele facturilor primite care au valoarea mai mare


dect valoarea,cel puin a uneia dintre facturile care au fost emise
pe 27.01.1999 pentru apa potabil?

SELECT numr
FROM Facturi
WHERE Val>ANY
(SELECT val
FROM Facturi
WHERE tip=12 AND Data={27.01.1999})

M. Danubianu - Baze de date

28

Funciile predefinite: COUNT, SUM, AVG,


MAX, MIN

Formatul general al unei fraze SELECT ce conine funcii predefinite:

SELECT fc_pred1, fc_pred2,..fc_predn


FROM list de tabele
WHERE condiii


In lipsa opiunii GROUP BY, dac n clauza SELECT este prezent o


funcie predefinit, tabelul rezultat va conine o singur linie.

M. Danubianu - Baze de date

29

Funcia COUNT


Contorizeaz valorile unei coloane - numr, ntr-o relaie cte valori


diferite de null are coloana specificat.
Ci clieni are firma?
SELECT COUNT (cod) AS nr_clienti
FROM Agenti
Cte formulare de facturi au fost anulate?
SELECT COUNT (anulat)
FROM NRSP
WHERE anulat="Da
Cte facturi s-au emis n data de 29.01.1999
SELECT COUNT (DISTINCT numar)
FROM FACTURI
WHERE Data={29.01.1999}
se poate utiliza ca argument n locul numelui unei coloane semnul *;


se va determina cte linii are tabelul la care se aplic funcia respectiv


M. Danubianu - Baze de date

30

Funcia SUM



Calculeaz suma valorilor unei coloane.


Care este valoarea total a facturilor emise?
SELECT SUM(Val) AS Total_fe
FROM Facturi
Care este valoarea apei potabile facturate?
SELECT SUM(Val) AS Total_fe
FROM Facturi
WHERE tip=12
Care este valoarea facturii emise pentru AKROM AKAL?
SELECT SUM(val) AS Total_ELCO
FROM FACTURI
WHERE cod IN
(SELECT cod
FROM AGENTI
WHERE nume="AKROM AKAL" )
M. Danubianu - Baze de date

31

Funcia AVG



Calculeaz media aritmetic a unei coloane ntr-un tabel oarecare


Care este valoarea medie a prestaiilor facturate n factura cu
numrul 10589?
SELECT AVG (Pret*Cant) AS Medie_10589
FROM FACTURI
WHERE Numar=10589
Valoarea medie a tuturor facturilor nu poate fi calculat cu funcia
AVG. In acest caz este necesar utilizarea opiunii GROUP BY.
Care este valoarea medie facturat pentru serviciile de canal n
zonele Burdujeni i Icani?
SELECT AVG (Pret*Cant) AS Medie_canal
FROM FACTURI
WHERE tip=22 AND cod IN
(SELECT cod
FROM AGENTI
WHERE Zona IN ("BURDUJENI","Icani"))

M. Danubianu - Baze de date

32

Gruparea tuplurilor.
Clauzele GROUP BY i HAVING


GROUP BY permite formarea grupurilor de tupluri ntr-o relaie pe


baza valorilor comune ale unei coloane.
asocierea unei clauze HAVING la o clauz GROUP BY face posibil
selectarea anumitor grupe de tupluri care ndeplinesc un criteriu.
Formatul general al clauzei GROUP BY este:
SELECT col1, col2,..coln
FROM tabel
GROUP BY coloan de grupare
Care este totalul valorilor facturate pentru fiecare serviciu prestat?
SELECT Tip, Produs, SUM(val)
FROM FACTURI
GROUP BY Tip
tabelul rezultat va aveaun numr de linii egal cu numrul tipurilor de
prestaii distincte din tabelul Facturi. Pentru toate poziiile din facturi
care se refer la un anumit produs se va calcula suma valorilor
deoarece se folosete funcia SUM.
M. Danubianu - Baze de date

33

Succesiunea fazelor de rezolvare a interogrii este


urmtoarea:
 se ordoneaz liniile tabelului Facturi n funcie de
valoarea atributului Tip
 se formeaz cte un grup pentru fiecare valoare
distinct a atributului Tip
 Pentru fiecare grup se calculeaz suma valorilor
atributului valoare. Tabelul rezultat va avea dou linii.

M. Danubianu - Baze de date

34

Care este numrul facturilor trimise n fiecare zon a


orasului?
SELECT Zona, COUNT(numar)
FROM AGENTI, NRSP
WHERE AGENTI.cod=NRSP.cod
GROUP BY AGENTI.Zona
Care este valoarea total a facturilor emise, pe zile,
pentru fiecare zona ?
SELECT Zona, Data, SUM (val)
FROM Facturi, Agenti
WHERE Facturi.cod=Ageni.cod
GROUP BY Zona, Data

M. Danubianu - Baze de date

35

Clauza HAVING


Permite introducerea unor restricii care sunt aplicate grupurilor de


tupluri, deci nu tuplurilor individuale, aa cum acioneaz clauza
WHERE. Din tabelul rezultat sunt eliminate toate tuplurile care nu
satisfac condiia dat.

Clauza HAVING lucreaz mpreun cu o clauz GROUP BY, fiind


practic o clauz WHERE aplicat acesteia. Formatul general este:
SELECT col1, col2,..coln
FROM tabel
GROUP BY coloan de regrupare
HAVING caract eristic de grup
M. Danubianu - Baze de date

36

Pentru facturile emise, intereseaz valoarea zilnic, dar numai dac


aceast valoare este mai mare de 5.000.000 lei.
SELECT Data, SUM(val)
FROM Facturi
GROUP BY Data
HAVING SUM(val)>5000000

Care sunt agenii pentru care, n facturi, exist mai mult de dou
poziii pentru un produs furnizat?

SELECT nume
FROM Agenti
WHERE cod IN
(SELECT cod
FROM FACTURI
GROUP BY tip, cod
HAVING COUNT(*)>2)
M. Danubianu - Baze de date

37

Actualizarea datelor n SQL

implic trei aciuni posibile :






adugarea de noi linii la cele existente ntr-un tabel


tergerea unor linii din tabel
modificarea valorii unor atribute.

M. Danubianu - Baze de date

38

Adugarea datelor n SQL - INSERT


INSERT INTO NumeTab [(NumeCmp1 [, NumeCmp2, ...])]
VALUES (eExpr1 [, eExpr2, ...])
INSERT INTO NumeTab FROM ARRAY Nume | FROM MEMVAR


Comanda INSERT poate fi asociat cu o subinterogare, care s furnizeze valorile


care trebuie adugate
INSERT INTO NumeTab1 [(NumeCmp1 [, NumeCmp2, ...])]
SELECT [(NumeCmp1 [, NumeCmp2, ...])]
FROM NumeTab2
WHERE conditii
Subinterogarea se poate utiliza n locul unui nume de tabel n clauza INTO a
comenzii INSERT:
INSERT INTO
(SELECT [(NumeCmp1 [, NumeCmp2, ...])]
FROM NumeTab2)
VALUES (eExpr1 [, eExpr2, ...])
M. Danubianu - Baze de date

39

Adugarea datelor n SQL - Exemple


1. INSERT INTO agenti (cod, zona, nume, adresa, telefon, manager, tip_ag)
VALUES ("2349","ZAMCA","SONIC", "Visinilor 7", "0787964321","0")
2. INSERT INTO agenti
VALUES ("2349","ZAMCA","SONIC", "Visinilor 7", "0787964321","0")
3. INSERT INTO agenti1 (cod, zona, nume, adresa, telefon, manager,
tip_ag)
SELECT cod, zona, nume, adresa, telefon, manager, tip_ag
FROM agenti2
WHERE zona ="OBCINI"
4. INSERT INTO
(SELECT cod, zona, nume, adresa, telefon, manager, tip_ag
FROM agenti)
VALUES ("2349","ZAMCA","SONIC", "Visinilor 7", "0787964321","0")
M. Danubianu - Baze de date

40

Stergerea de linii din tabel - DELETE


DELETE FROM [NumeBD!]NumeTab
[WHERE CondFiltru1 [AND | OR CondFiltru2 ...]]
Sau n combinaie cu subinterogari
DELETE FROM [NumeBD!]NumeTab
[WHERE cmp operator
(SELECT cmp
FROM NumeTabel
WHERE condiii)]
Sunt variante SQL care, la crearea unui tabel, permit descrierea aciunii care se
va derula la tergerea unei linii ( restricionare sau stergere cascadat). DE
CE???

DELETE FROM facturi


WHERE cod =
(SELECT cod
FROM agenti
WHERE nume = "ELCO S.A.");
M. Danubianu - Baze de date

41

Actualizarea valorilor cmpurilor - UPDATE


UPDATE [NumeBD1!]NumeTabe1
SET NumeCmp1 = Expr1
[, NumeCmp2 = Expr2 ...]
WHERE CondFiltru1 [AND | OR CondFiltru2 ...]]
Sau folosind subinterogrile
UPDATE NumeTabe1
SET NumeCmp1 = (SELECT NumeCmp1
FROM NumeTabe1
WHERE condiii),
[NumeCmp2 = (SELECT NumeCmp2
FROM NumeTabe1
WHERE condiii),]
WHERE conditii
M. Danubianu - Baze de date

42

Actualizarea valorilor cmpurilor - UPDATE


1. UPDATE angajati
SET tip_ag = (SELECT tip_ag
FROM angajati
WHERE cod ="205"),
telefon = (SELECT telefon
FROM angajati
WHERE cod ="205")
WHERE cod= "114"
2. UPDATE agenti
SET tip_ag= (SELECT tip_ag
FROM angajati
WHERE cod ="205"),
WHERE cod=
(SELECT cod
FROM agenti
WHERE nume ="ELCO SA")
M. Danubianu - Baze de date

43

Vederi


vedere este o relaie virtual- o relaie care nu este de fapt de sine


stttoare, ci este derivat, n mod dinamic din una sau mai multe
relaii de baz
n realitate, nu exist n baza de date - este produs la un moment dat la
cererea unui anumit utilizator
relaia de baz este o relaie cu o anumit denumire, corespunztoare
unei entiti din schema conceptual, ale crei tupluri sunt stocate fizic
n baza de date.
vederea este rezultatul dinamic al uneia sau mai multor operaii
relaionale, care acioneaz asupra relaiilor de baz pentru a realiza o
alt relaie

M. Danubianu - Baze de date

44

Vederile



sunt dinamice
furnizeaz un mecanism de securitate puternic i flexibil
 ascunderea unor pri ale bazei de date fa de anumii
utilizatori,
permit utilizatorilor accesarea datelor ntr-un mod personalizat,
conform cerinelor lor i
pot simplifica operaiile complexe asupra relaiilor de baz.

M. Danubianu - Baze de date

45

Crearea vederilor
CREATE SQL VIEW [NumeVedere ] [REMOTE]
[CONNECTION NumeConexiune ][SHARE]
| CONNECTION NumeSursaDate]
[AS SQL SELECT Statement]
Vedere orizontal
CREATE VIEW ag_zamca
AS SELECT *
FROM agenti
WHERE zona="Zamca"
Vedere vertical
CREATE VIEW date_ag_zamca
AS SELECT cod, nume, adresa
FROM agenti
WHERE zona="Zamca"

CREATE VIEW tot_ag_zamca AS


SELECT nume, zona
FROM agenti1
WHERE zona="Zamca"
UNION
SELECT nume, zona
FROM agenti2
WHERE zona="Zamca"

M. Danubianu - Baze de date

46

Definirea unei vederi pe baza altor vederi


o vedere poate fi utilizat n expresia de definire a altei vederi

o vedere V1 este direct dependent de o alt vedere V2 dac V2 este
utilizat n expresia de definire a vederii V1

o vedere V1 este dependent de V2 dac:
 V1 depinde direct de V2 sau
 Exist o cale de dependene de la V1 la V2

o vedere este recursiv dac depinde de ea nsi

Expansiunea unei vederi este procesul de nlocuire a definiiei unei
vederi n expresia de definire a altei vederi

Const n urmtoarea succcesiune de pai:
Fie E expresia de definire a vederii curente
repet
gsete orice nume de vedere Vi din E
nlocuiete Vi prin expresia sa de definiie
pn cnd nu mai exist nume de vederi n E


Atta timp ct definiia vederii curente nu este recursiv, bucla este finit
M. Danubianu - Baze de date

47

Eliminarea unei vederi


DROP VIEW NumeVedere [RESTRICT|CASCADE]

M. Danubianu - Baze de date

48

Definirea datelor n SQL




instruciunile SQL din limbajul de definire a


datelor permit:






crearea bazelor de date


crearea structurii conceptuale pentru tabele
eliminarea tabelelor din baza de date
crearea indecilor
actualizarea structurii tabelelor

M. Danubianu - Baze de date

49

Crearea structurii conceptuale a tabelelor CREATE TABLE




Definirea tabelelor se face prin comanda CREATE TABLE a crei form


general este:

CREATE TABLE | DBF NumeTabel [NAME Nume_LungTabel] [FREE]


(NumeCmp1 TipCmp [(n[,d])]
[NULL | NOT NULL] [PRIMARY KEY | UNIQUE]
[CHECK Expr1 [ERROR Mesaj1]]
[DEFAULT Expr2]
[REFERENCES NumeTabel2 [TAG NumeTag1]]
[NOCPTRANS]
[, FieldName2 ]
[, PRIMARY KEY Expr3 TAG NumeTag2
|, UNIQUE Expr4 TAG NumeTag3]
[, FOREIGN KEY Expr5 TAG NumeTag4
REFERENCES NumeTabel3 [TAG NumeTag5]]
[, CHECK Expr6 [ERROR Mesaj2]])
| FROM ARRAY NumeMatrice
M. Danubianu - Baze de date

50

Tipurile de date permise n standardul SQL

NUMBER (n ,d )
FLOAT
INTEGER
DOUBLE PRECISION
CHAR
VARCHAR
DATE
TIME
LOGICAL

Numere reale cu n poziii, din care d zecimale


Numere reale, virgul mobil
Numere ntregi (32 bii)
Reale, virgul mobil, dubl precizie
Caractere
Sir de caractere de lungime variabil (max 255)
Dat calendaristic
Ora
logic

M. Danubianu - Baze de date

51

Exemplu 1


Ageni1 (cod, zona, nume, adresa, telefon, manager, tip_ag)

CREATE TABLE agenti


(cod char(4) not null primary key,
zona varchar(15),
nume varchar(15),
adresa varchar(20),
telefon char(10),
manager varchar(20),
tip_ag char(1))
Nota: dac un cmp se declar primary key n SQL-89 este necesar s se specifice
n clar condiia de not null

M. Danubianu - Baze de date

52

Exemplu 2


Ageni1 (cod, zona, nume, adresa, telefon, manager, tip_ag)

CREATE TABLE agenti


(cod char(4),
zona varchar(15),
nume varchar(15),
adresa varchar(20),
telefon char(10),
manager varchar(20),
tip_ag char(1),
primary key (cod))
Nota: dac un cmp se declar primary key SQL-92 asigur automat condiia de not
null
- aceast form este n general folosit pentru tabelele care au chei compuse

M. Danubianu - Baze de date

53

Modificarea structurii conceptuale a


bazei de date- ALTER TABLE.


Se refer la modificarea ulterioar a schemei de relaie (a structurii


conceptuale) pentru un tabel (adugare sau tergere de cmpuri sau
modificarea caracteristicilor unui cmp)

ALTER TABLE NumeTabe1


ADD | ALTER [COLUMN] NumeCmp1
TipCmp [(n[, d])]
[NULL | NOT NULL]
[CHECK Expr1 [ERROR cMesaj1]]
[DEFAULT Expr2]
[PRIMARY KEY | UNIQUE]
[REFERENCES NumeTabel2 [TAG NumeTag1]]
* Determin adugarea unei coloane sau modificarea caracteristicilor
unei coloane din tabel
M. Danubianu - Baze de date

54

sau
ALTER TABLE NumeTabel1
ALTER [COLUMN] NumeCmp
[NULL | NOT NULL]
[SET DEFAULT Expr1]
[SET CHECK Expr2 [ERROR Mesaj2]]

M. Danubianu - Baze de date

55

sau
ALTER TABLE NumeTabe1
[DROP [COLUMN] NumeCmp]
[SET CHECK Expr1 [ERROR Mesaj1]]
[DROP CHECK]
[ADD PRIMARY KEY Expr2 TAG NumeTag1]
[DROP PRIMARY KEY]
[ADD UNIQUE Expr3 [TAG NumeTag2 ]]
[DROP UNIQUE TAG NumeTag3]
[ADD FOREIGN KEY [Expr4] TAG NumeTag4
REFERENCES NumeTab2 [TAG NumeTag5]]
[DROP FOREIGN KEY TAG NumeTag6 [SAVE]]
[RENAME COLUMN NumeCmp TO NumeCmp_nou]
[NOVALIDATE]
* Se elimin o coloan sau se adaug, respectiv se elimin constrngeri
n tabel
M. Danubianu - Baze de date

56

Inlturarea unui tabel


DROP TABLE NumeTabel | NumeFiier | ? [RECYCLE]


are ca efect nlturarea unui tabel din baza de date


curent i tergerea acestuia de pe disc

M. Danubianu - Baze de date

57

S-ar putea să vă placă și