Você está na página 1de 50

Universitte Politehnic din Bucureti

Fcultte de Electronic, Telecomunicii i Tehnologi Informiei

Bze de dte pentru telecomunicii


Proiect de cercetre-documentre

Conductor tiinific
Conf. Dr. Ing. Dn GLTCHI

Student
Vld ndreis

Mi 2015

Contents
Introducere ................................................................................................................................................... 3
1. Bze de dte definiie ............................................................................................................................ 3
1.1

Bz de dte relionl ................................................................................................................... 6

1.2 Entitte .................................................................................................................................................. 6


1.3 Tbelele ................................................................................................................................................... 7
1.4 Proiectre conceptul bzelor de dte ............................................................................................ 7
1.5 Proiectre logic bzelor de dte..................................................................................................... 10
1.6 Constrngeri .......................................................................................................................................... 12
1.7 Normlizre Bzelor de Dte .............................................................................................................. 13
1.7.1 Normlizre. Necesitte Normlizrii. ........................................................................................... 13
1.7.2 vntjele Normlizrii ...................................................................................................................... 15
1.7.3 Dezvntje le normlizrii .............................................................................................................. 16
1.7.4 Denormlizre .................................................................................................................................. 16
1.7.5 Procesul de Normlizre .................................................................................................................... 17
2 Crere unei Bze de Dte ....................................................................................................................... 18
2.1 Crere si populre tbelelor ............................................................................................................. 18
2.2 Superchei............................................................................................................................................. 29
2.3 Chei cndidte..................................................................................................................................... 31
2.4 Chei primr ........................................................................................................................................ 34
5.5 Chei strin ......................................................................................................................................... 35
2.6 Crere unei vederi ............................................................................................................................... 44
Bibliogrfie .................................................................................................................................................. 50

Introducere

Tem cestui proiect de cercetre este cercetre i documentre despre modul de creere
bzelor de dte precum i crere unei bze de dte direciont pe o temtic de telecomunicii.
cest bz de dte se v reliz pentru un opertor de telefonie mobil. C personlizre bz
de dte v conine numele studentului trecut in bz de dte cret.
Bz de dte cre v fi creet v ve dou structuri de dte, un pentru boni i un
pentru clieni prepy. Structur pentru boni v conine numele, codul clientului, numrul de
telefon, tipul de bonment, servicii oferite, cost, stri pli i vechime in ree. n timp ce
structur de dte pentru clieni prepy v conine numrul de telefon, servicii oferite, sum
disponibil i vechime in ree.

1. Bze de dte definiie

O bz de dte (dtbse) este o colectie de dte corelte din punct de vedere logic, cre
reflect un numit spect l lumii rel si este destinti unui numit grup de utiliztori. Pote
ve dimensiuni extrem de vrite, de l ctev zeci de inregistrri pote junge l zeci de
milione de inregistrri.
O bz de dte este o colectie de dte cret si mentinut computerizt, cre permite opertii
de introducere, stergere, ctulizre si interogre dtelor.

Bz de dte

Utiliztor

plicie

SGBD

Dte

Dte

Figur 1.1: Structur unui sistem de bze de dte

Sistemul de gestionre bzei de dte (SGBD) este un sistem de progrme cre permite
utiliztorului definire, crere si ntretinere bzei de dte si ccesul controlt l cest.
SGBD const n elemente de softwre cre interctionez cu progrmele de plictie le
utiliztorului pe de o prte si cu bz de dte pe cellt.
3

Un SGBD ofer o serie de fcilitti:


- permite definire BD printr-un limbj de definire dtelor (DDL)
- permite inserre, rectulizre, stergere si extrgere de dte printr-un limbj de mnipulre
dtelor (DML). BD fiind un depozit unic si centrl de dte si descrieri de dte,
DML pote oferi o interogre generl cestor dte, numit limbj de interogre. Un
stfel de limbj de interogre este SQL, cre elimin utilizre unui set fix de interogri
disponibile, c n czul trtrii dtelor prin sisteme de fisiere.
- Ofer ccesul controlt l BD. stfel SGBD pote furniz:
o Un sistem de securitte, pentru mpiedic ccesul utiliztorilor neutorizti
o Un sistem de integritte, cre mentine concordnt dtelor stocte;
o Un sistem de control l utilizrii simultne, cre permite ccesul prtjt l BD;
o Un sistem de control l refcerii, cre resturez BD ntr-o stre precedent
concordnt, c urmre unei defectiuni hrd su soft;
o Un ctlog ccesibil utiliztorilor, cre contine descrieri le dtelor din BD
- Ofer generre de vederi/views numite si moduri de vizulizre BD prin mecnismul de
vizulizre. stfel se vor fis numi cele dte din BD cre sunt utile utiliztorului,
eliminndu-se ncrcre rezulttului unei interogri cu dte existente n BD, dr cre nu
interesez utiliztorul. Modurile de vizulizre ofer si lte vntje:
o Un numit nivel de securitte; se exclud dte cre nu trebuie vzute de numiti
utiliztori;
o O personlizre spectului BD. De exemplu redenumire cmpurilor dup
preferintele utiliztorului;
o O imgine coerent, neschimbt structurii BD, chir dc BD nssi este modifict;
prin modul de vizulizre se v fis n continure structur prestbilit BD.
Un sistem de bze de dte (Dtbse System) este un sistem computerizt de mentinere
evidentei unei numite ctivitti, folosind bze de dte. Componentele unui sistem de bze de
dte sunt: hrdwre, softwre, utiliztori, dte persistente.
Sistemul de gestiune bzei de dte - SGBD - (Dtbse Mngement System - DBMS)
receptionez cererile utiliztorilor de cces l bz de dte (pentru opertii de introducere,
stergere, modificre su interogre), le interpretez, execut opertiile corespunztore si
returnez rezulttul ctre utiliztori.
Sistemul SGBD ofer utiliztorilor o viziune (vedere - view) bzei de dte l un nivel
nlt si i eliberez de necesitte de cunoste orgnizre prticulr sistemului (driverele
de disc, structur nregistrrilor de dte, etc.).
rhitectur intern unui sistem de bze de dte contine trei niveluri functionle: nivelul
extern, nivelul conceptul si nivelul intern. Nivelul extern este o colectie de scheme externe, cre
sunt vederi le diferitelor grupuri de utiliztori, existnd cte o vedere individul dtelor
pentru fiecre grup; nivelul conceptul contine schem conceptul (logic) bzei de dte, ir
nivelul intern contine schem intern (fizic) bzei de dte.
O schem extern (vedere utiliztor) (externl schem, users view) contine o subschem
conceptul bzei de dte, mi precis descriere dtelor cre sunt folosite de cel grup de
utiliztori.
Schem conceptul bzei de dte (conceptul schem) corespunde unei reprezentri
4

unice (pentru toti utiliztorii) si bstrcte dtelor, descriind ce dte sunt stocte n bz de dte
si cre sunt socierile dintre ceste.
Schem intern (fizic) bzei de dte (internl schem) specific modul de reprezentre
dtelor pe suportul fizic.
Un sistem de bze de dte suport o schem intern, o schem conceptul si mi multe
scheme externe; tote ceste scheme sunt descrieri diferite le celeisi colectii de dte, cre
exist dor n nivelul intern.
Un sistem de bze de dte centrlizt (Centrlized Dtbse System) este un sistem de
bze de dte n cre dtele si sistemul de gestiune sunt stocte pe o singur sttie (clcultor).
Un sistem centrlizt pote suport unul su mi multi utiliztori, dr, n orice situtie,
dtele si sistemul de gestiune rezid n ntregime pe o singur sttie.
Un sistem de bze de dte distribuit (Distributed Dtbse System) pote ve tt dtele,
ct si sistemul de gestiune, distribuite n mi multe sttii interconectte printr-o rete de
comunictie.
O bz de dte distribuit este o colectie de dte cre prtin din punct de vedere logic
celuisi sistem, dr cre pot s fie, din punct de vedere fizic, memorte n mi multe sttii de
clcul (loctii - sites) conectte printr-o rete de comunictie. Sistemul softwre cre gestionez
o stfel de bz de dte se numeste Sistem de Gestiune Bzei de Dte Distribuite - SGBDD (Distributed Dtbse Mngement System - DDBMS).
Exist numerose vntje le sistemelor de bze de dte distribuite (crestere cpcittii
de stocre si prelucrre dtelor, crestere disponibilittii si prtjrii dtelor, etc.), dr si o
crestere considerbil complexittii cestor.
Ce mi importnt cerint pe cre trebuie s o ndeplinesc sistemele de gestiune
bzelor de dte distribuite este de sigur dministrre trnsprent dtelor. Trnsprent se
refer l cpcitte unui sistem distribuit de scunde detliile de implementre, stfel nct
utiliztorii s pot cces dtele pe bz unui model de nivel nlt, fr fi necesr cunostere
exct modului de mplsre, replicre su comunicre dtelor.
Un model este o bstrctizre unui sistem, cre cptez cele mi importnte trsturi
crcteristice le sistemului (concepte), relevnte din punct de vedere l scopului pentru cre se
defineste modelul respectiv. Tehnic de identificre trsturilor crcteristice esentile le unui
sistem se numeste bstrctizre.
Un model de dte stbileste regulile de orgnizre si interpretre unei colectii de dte.
n proiectre bzelor de dte se folosesc, de regul, mi multe modele de dte, cre se pot
clsific n dou ctegorii: modele conceptule de nivel nlt si modele specilizte.
Un model conceptul de nivel nlt l dtelor contine o descriere concis colectiilor de
dte cre modelez ctivitte dorit (numit schem conceptul de nivel nlt), fr s
detlieze modul de reprezentre su de prelucrre dtelor.

1.1 Bz de dte relionl

Modelul relionl pentru bzele de dte fost conceput i dezvoltt de E.F. Codd. Este un
model forml de orgnizre conceptul dtelor, destint reprezentrii legturilor dintre dte,
bzt pe teori mtemtic reliilor. Fiind lctuit numi din relii, orice interogre supr
bzei de dte este tot o relie. cest model este simplu, riguros din punct de vedere mtemtic,
i nu este orientt spre sistemul de clcul. Printre limtrile unui semene model putem menion
existent unei redundne, prii unor inconsistene, inexisten unor mecnisme pentru trtre
optim cererilor recursive, fptul c nu se lucrez cu obiecte complexe, inexisten unor
mijloce prefecionte pentru exprimre constrnderilor de intregritte. De semene nu exist o
gestine totl dtelor distribuite. O bz de dte relionl este o bz de dte formt dintr-o
serie de tbele neordonte, ce pot fi mnipulte folosind operii non-procedurle cre returnez
tbele. ceste bze de dte sunt percepute de utiliztori c o colecie de tbele bidimensionle, n
cre fiecre linie corespunde unui tuplu i fiecre colon corespunde unui tribut.

1.2 Entitte

O entitte este un obiect l lumii rele, cu o existen independent i pote reprezent un


obiect fizic, o ctivitte, un concept. O entitte este un obiect cu existen fizic , de exemplu: o
person, un telefon.
Orice entitte re o serie de proprieti numite tribute, ce descriu entitte respectiv. Cu
tote c nu reprezint celi lucru, pentru denumire de entitte se mi folosete i denumire de
tbel l bzei de dte, ir pentru tribute cmpurile tbelului.
Scurte definiii noiunilor pe cre le-m folosit i le vom folosi n continure sunt :
Tbel (entitte) este o colecie de informii logice relionle trtt c o unitte
nregistrre (tuplu). O tbel este compus din nregistrri su rnduri. Fiecre nregistrre este
trtt c o simpl unitte. Fiecre nregistrre este legt de nregistrri le ltei tbele.
Cmpuri (tribute). nregistrrile sunt constituite din cmpuri (colone) . Un cmp este o
prticul tomic bzei de dte ce reprezint ce mi mic cntitte de informie cre pote fi
mnipult. Tote nregistrrile dintr-o tbel u celei cmpuri.
Pentru cre o bz de dte, se folosete instruciune CRETE DTBSE. Bz de
dte este necesr pentru pute cre tbele.

1.3 Tbelele

Tbelele reprezint o entitte. Ele sunt formte din rnduri i colone. Colnele reprezint
tributele fiecrei entiti. n cdrul tbelelor pote pre mbiguitte. cest lucru se pote
rezolv prin sigur pe ct posibil unicitte informiilor. cest lucru se obine prin utilizre
unei chei primre unice pentru fiecre nregistrre.

1.4 Proiectre conceptul bzelor de dte

n fz de proiectre conceptul bzelor de dte se proiectez schem conceptul si


schemele externe le bzei de dte.
Desi nu este obligtoriu, cest fz se pote mentine independent de SGBD si produce
un model de dte de nivel nlt, cre v fi implementt dup trnspunere lui ntr-un model de
dte specific. Chir dc proiectntii pot porni direct cu scheme conceptule specifice unui
numit SGBD (cre se mi numesc si scheme logice), este totusi recomndbil s se relizeze
mi nti schem conceptul de nivel nlt independent de SGBD, deorece cest este o
descriere stbil si invubil bzei de dte. legere unui SGBD si deciziile ulteriore de
proiectre se pot schimb fr c cest s se schimbe.
Proiectul conceptul de nivel nlt se relizez pe bz cerintelor definite n prim etp
de proiectre si se reprezint, n generl printr-o digrm Entitte-sociere (extins).
Modelul Entitte-sociere (Entity-Reltionship Model) este un model conceptul de
nivel nlt l unei bze de dte, cre defineste multimile de entitti si socierile dintre ele, dr nu
impune nici un mod specific de structurre si prelucrre dtelor. Elementele esentile le
modelului Entitte-sociere sunt entittile (entities) si socierile dintre ceste (reltionships).
O entitte (entity) este "orice pote fi identifict n mod distinctiv"; o entitte se refer l
un spect l relittii obiective cre pote fi deosebit de restul universului si pote reprezent un
obiect fizic, o ctivitte, un concept, etc. Orice entitte este descris prin tributele sle. Un
tribut (ttribute ) este o propriette cre descrie un numit spect l unei entitti.
Tote entittile similre, cre pot fi descrise prin celesi tribute, prtin unui celsi tip
de entitte (entity type), ir colecti tuturor entittilor de celsi tip dintr-o bz de dte constitue
o multime de entitti (entities set). n generl, n modelul E- se foloseste ceesi denumire tt
2 pentru un tip de entitte ct si pentru multime entittilor de cel tip.
De exemplu, tipul de entitte bont (l unei compnii telefonice) reprezint orice
person bont l cee compnie, cre plteste pentru numite servicii oferite de cee
compnie de telefonie. cest tip de entitte pote fi descris prin mi multe tribute, dintre cre o
prte sunt tribute de identificre personei (Nume,Prenume,DtNsterii,dres), ir ltele
sunt tribute legte serviciile oferite de compnie (bonment, Numr de telefon).
n proiectre bzelor de dte se consider dou ctegorii de entitti: entitti normle
(puternice, obisnuite -regulr entities) si entitti slbe (dependente -wek entities). Entittile

normle u o existent proprie n cdrul modelului, n timp ce entittile slbe nu pot exist dect
dc exist o entitte norml (puternic) cu cre sunt socite.
O sociere (reltionship ) este o corespondent ntre entitti din dou su mi multe
multimi de entitti. Grdul unei socieri este dt de numrul de multimi de entitti socite.
socierile pot fi binre (de grdul 2, ntre 2 multimi de entitti) su multiple (ntre k multimi de
entitti, k> 2). socierile binre sunt, l rndul lor, de trei ctegorii, dup numrul elementelor
din fiecre dintre cele dou multimi puse n corespondent de sociere respectiv. Fiind dte
dou multimi de entitti, E1 si E2, se definesc urmtorele ctegorii de socieri binre:
sociere unul-l-unul (one-to-one) este sociere prin cre unui element (entitte) din
multime E1 i corespunde un singur element din multime E2, si reciproc; se notez cu 1:1.

Figur 1.4.1: sociere 1:1


sociere unul-l-multe (one-to-mny) este sociere prin cre unui element din
multime E1 i corespund unul su mi multe elemente din multime E2, dr unui element din
E2 i corespunde un singur element n multime E1; se notez cu 1:N.

Figur 1.4.2: sociere one-to-mny

sociere multe-l-multe (mny-to-mny) este sociere prin cre unui element din
multime E1 i corespund unul su mi multe elemente din multime E2, si reciproc; se notez
cu M:N.

Figur 1.4.3: sociere mny-to-mny


O sociere ntre dou su mi multe multimi de entitti este, n celsi timp, o sociere
ntre tipurile de entitti corespunztore.
Digrm Entitte-sociere (Entity-Reltionship Digrm) reprezint modelul Entittesociere prin multimile de entitti si socierile dintre ceste.
Exist numerose vrinte de nottii pentru redre digrmei E-. Un dintre cele mi
folosite nottii reprezint un tip de entitte (precum si multime de entitti de cel tip) printr-un
dreptunghi, ir tributele tipului de entitte prin elipse conectte printr-o linie continu l cest
.Pentru entittile puternice se utilizez un dreptunghi ncdrt cu o linie simpl, ir pentru
entittile slbe se utilizez un dreptunghi ncdrt cu linie dubl. O sociere (tip de sociere)
dintre dou su mi multe tipuri de entitti se reprezint printr-un romb conectt prin link-uri
(linii continue, formte din unul su mi multe segmente) l tipurile de entitti socite. O
sociere pote s ib su nu un nume; dc re un nume, cest pote fi nscris n rombul
respectiv su n vecintte cestui. Ctegori socierii se notez prin nscriere multiplicittii
pe fiecre link cre conduce l un tip de entitte. Este posibil c o sociere s prezinte e nssi
tribute, si ceste tribute se reprezint prin elipse conectte l sociere respectiv.
Modelul Entitte -sociere Extins (Enhnced Entity-Reltionship Model) permite
definire de subtipuri le unui tip de entitti, cre mostenesc tribute de l tipul de entitte pe
cre il extind (si cre, n cest context, se numeste supertip) si u n plus tribute specifice
semnifictiei lor. Prin definire tipurilor si subtipurilor de entitti se pot cre ierrhii de tipuri
de entitti pe mi multe niveluri. Modelul Entitte-sociere Extins se reprezint printr-o
digrm E- extins, n cre legtur ntre un supertip de entitti si subtipurile cestui se
reprezint printr-o linie pe cre se plsez un semicerc ndreptt ctre supertip.

1.5 Proiectre logic bzelor de dte

In fz de proiectre logic unei bze de dte se relizez schem conceptul globl


si schemele conceptule (vederile) externe pentru sistemul SGBD les, pornind de l schem
conceptul si schemele externe de nivel nlt independente de SGBD, proiectte n fz
precedent. cest fz de proiectre logic pote fi relizt n dou sub-fze: trnspunere
schemei conceptule n modelul de dte l sistemului SGBD les, dr independent de sistemul de
gestiune propriu-zis si rfinre schemei conceptule si schemelor externe obtinute nterior,
stfel nct s se utilizeze unele (su ct mi multe) din fcilittile oferite de sistemul SGBD les
(modul de generre cheilor primre, definire constrngerilor, etc.).
ceste dou sub-fze se pot reliz mpreun, folosind unul din instrumentele de
proiectre oferite de sistemul SGBD les. Rezulttul cestei fze de proiectre l constituie,
sdr, schem conceptul si schemele externe le bzei de dte, dependente de sistemul SGBD
les si de modelul de dte l cestui. Pentru trnspunere modelului Entitte-sociere
(reprezentt prin digrm E-) n model reltionl se prcurg n principl dou etpe:
proiectre reltiilor si proiectre socierilor.
Opertorii modelului relionl sunt opertorii din lgebrr elionl i opertorii din
clculul relionl.
lgebr relionl este o colecie de operii formle plictesupr tbelelor (reliilor), i
fost conceput de E.F.Codd. Operiile suntplicte n expresiile lgebrice relionle cre sunt
cereri de regsire.ceste sunt compuse din opertorii relionli i opernzi. Opernzii sunt
ntotdeun tbele (un su mi multe). Rezulttul evlurii unei expresii relionle este formt
dintr-o singur tbel.
lgebr relionl re cel puin putere de regsire clcului relionl. O expresie din
clculul relionl se pote trnsform ntr-unechivlent din lgebr relionl i invers.Codd
introdus se opertori de bz (reuniune, diferen,produsul crtezin, seleci, proieci,
jonciune) i doi opertori derivi(interseci i diviziune). Ulterior u fost introdui i li
opertori derivi(specili). n cest context, opertorii din lgebr relionl pot fi grupi
n dou ctegorii: pe mulimi i specili.
Opertori pe mulimi (R1, R2, R3 sunt relii (tbele)) sunt:
Reuniune. R3 = R1 R2, unde R3 v conine tupluri din R1 su R2 lute o singur
dt;
Diferen. R3 = R1 \ R2, unde R3 v conine tupluri din R1 cre nu se regsesc n R2;
Produsul crtezin. R3 = R1 R2, unde R3 v conine tupluri construite din perechi
(x1x2), cu x1R1 i x2R2;
Interseci. R3 = R1 R2, unde R3 v conine tupluri cre se gsesc n R1 i R2 n
celi timp, etc.Opertori relionli specili sunt:
Seleci. Din R1 se obine o subtbel R2, cre v conine o submulime din tuplurile
iniile din R1 ce stisfc un predict(o condiie). Numrul de tribute din R2 este
egl cu numrul de tribute din R1. Numrul de tupluri din R2 este mi mic
dectnumrul de tupluri din R1.
Proieci. Din R1 se obine o subtbel R2, cre v conine o submulime din
tributele iniile din R1 i fr tupluri duplicte. Numrul de tribute din R2 este mi
mic dect numrul de tribute din R1.
10

Jonciune este o derivie produsului crtezin, ce presupune utilizre unui


clifictor cre s permit comprre vlorilor unor tribute din R1 i R2, ir
rezulttul n R3. R1 i R2 trebuie
s ib unul su mi multe tribute comune cre u vlori comune.
lgebr relionl este prin definiie neprocedurl (descriptiv), ir clculul relionl
permite o mnier de cutre mixt (procedurl/neprocedurl).
Clculul relionl se bzez pe clculul predictelor de ordinul nti (domeniu l
logicii) i fost propus de E.F. Codd. Predictul este o relie cre se stbilete ntre numite
elemente i cre pote fi confirmt su nu. Predictul de ordinul 1 este o relie cre re drept
rgumente vribile cre nu sunt predicte. Vribil pote fi de tip tuplu (vlorile sunt dintr-un
tuplu l unei tbele) su domeniu (vlorile sunt dintr-un domeniu l unei tbele). Cuntifictorii
(opertorii) utilizi n clculul relionl sunt: universl () i existenil ().
Construci de bz n clculul relionl este expresi relionl de clcul tuplu su
domeniu (funcie de tipul vribilei utilizte). Expresi relionl de clcul este formt din:
operi de efectut, vribile (tuplu respectiv domeniu), condiii (de comprie, de existen),
formule bine definite (opernzi-constnte, vribile, funcii, predicte; opertori), cuntifictori.
Pentru implementre cestor opertori exist comenzi specifice n limbjele de
mnipulre dtelor (LMD) din sistemele de gestiune bzelor de dte relionle (SGBDR).
ceste comenzi sunt utilizte n operii de regsire (interogre).

11

1.6 Constrngeri

O constrngere este o regul introdus ntr-un obiect l unei bze de dte cre v
restricion vlorile dtelor permise pentru obiectul respectiv. ceste sunt forte importnte n
cdrul bzelor de dte relionle deorece prin constrngeri se implementez socierile i
regulile de business specifice design-ului logic.
Fiecrei constrngeri i este tribuit un nume unic pentru permite refereniere cestei
n cdrul mesjelor de erore i comenzilor efectute supr bzei de dte.
Constrngere de tip Cheie Primr:
Este o colon su un set de colone cre identific n mod unic fiecre rnd dintr-o
tbel. Cnd definim o cheie primr, SGBD-ul o implementez utomt c o constrngere de
tip cheie primr pentru grnt c oricre dou rnduri din tbel nu vor ve vlori duplicte
n cdrul cheii primre.
Cheile primre sunt prope ntotdeun implementte de SGBD utiliznd unindex, cre
este un obiect specil l bzei de dte ce permite cutre rpid vlorilor unei colone. Pe
msur ce sunt introduse noi dte n tbel, SGBD-ul cut n mod utomt n index pentru
sigur c vlore cheii primre pentru noul rnd nu exist dej. n czul n cre cest se fl
dej n tbel, SGBD-ul v respinge cerere de inserre.
Index-urile pot fi prcurse mult mi repede dect tbelele stndrd, dr crere
cestor este necesr pentru cheile primre pentru nu cre probleme de performn n cdrul
bzei de dte.
Constrngeri referenile
O constrngere referenil este o constrngere cre ntrete o relie ntre dou tbele
ntr-o bz de dte relionl. SGBD-ul verific n mod utomt dc orice vlore cheii
strine ntr-un tbel de tip copil re ntotdeun o coresponden cu o cheie primr din tbel
printe.

Constrngeri de integritte
Sunt constrngeri cre promovez curtee dtelor ntr-o bz de dte. Exemple: NOT
NULL, CHECK.
Constrngere de tipul NOT NULL reprezint fptul c n cdrul cmpului respectiv
trebuie s existe o vlore definit, nu se ccept o vlore nul.

12

1.7 Normlizre Bzelor de Dte

1.7.1 Normlizre. Necesitte Normlizrii.

n momentul proiectrii unei bze de dte relionle, este comun c l nceput s fie
probleme de redundn dtelor i nomlii le cestor. Pentru scde numrul cestor
probleme de redundn i nomlii designerii de bze de dte utilizez un procedeu numit
normlizre.
Normlizre nsemn trecere bzei de dte printr-o serie de etpe cre evluez i
corectez structur tbelelor. Normlizre este procesul esenil de orgnizre dtelor n
cdrul unei bze de dte pentru crete consisten i integritte dtelor.
Dtele redundnte ocup spiu i consum timp. Dc dtele exist ntr-o tbel i este
necesr modificre lor, modificrile trebuie fcute n celi fel n tote tbelele ce conin
dtele respective. Dc modificre cestor dte nu este fcut n mod corect v cuz
inconsisten dtelor din bz de dte, cee ce duce l neconcordne ntre tbele (de exemplu:
un client pote ve mi multe drese, un singur fiind ce corect). Dtele redundnte sunt o
meninre pentru integritte dtelor dintr-o bz de dte.
Pentru se fce normlizre unei bze de dte, este necesr trecere cestei prin mi
multe stgii numite Forme Normle(FN). Primele trei stgii sunt: prim form norml (FN1),
dou form norml (FN2) i trei form norml (FN3). Din punct de vedere structurl FN2
este mi bun dect FN1 ir FN3 este mi bun dect FN2. Pentru mjoritte nevoilor n
design-ul de bze de dte l nivel business FN3 reprezint grdul de normlizre suficient.
ceste trei tipuri de forme normle u fost introduse iniil de ctre E.F. Codd ntr-o
lucrre ce descrie bzele de dte relionle publict n nul 1970, cest definit primele trei
tipuri de forme normle, FN1, FN2, FN3. n nii ce u urmt, Codd lturi de li cercettori u
descoperit lte tipuri de nomlii i u cret forme normle diionle ce rezolv ceste nomlii.
dr u prut FNBC (form norml Boyce-Codd), ptr form norml (FN4), cince
form norml (FN5), fiecre dintre ceste oferind un nivel superior de protecie mpotriv
nomliilor l modificre dtelor.
bi n nul 1981, fost scris o lucrre de ctre Ronld Fgin cre descri form
norml domeniu-cheie (DK/NF). Utiliznd cest ultim form norml se pote grnt c
bz de dte proiectt nu v ve nomlii l modificre dtelor.
O form norml definete o condiie supr unui set de dependene de dte su
constrngeri semntice cre fost specifict c fcnd prte dintr-o schem unei bze de dte.
cest condiie este utilizt pentru verific dc proiectul bzei de dte re proprieti
dezirbile, ins, dc cest nu este czul, tunci se pot utiliz formele normle pentru
trnsform cev proiectt eront ntr-un proiect echivlent, dr de dt cest corect proiectt.

13

fig. 4.1 Progresi formelor normle

Relie
Nenormlizt

Eliminre tributelor ce se repet


su vnd vlori multiple
Prim form
norml

Eliminre tributelor
pril depedente
dou form
norml

Eliminre tributelor
trnzitiv depedente
trei form
norml

plicre formelor
normle diionle

Relie complet
normlizt

fig.4.2 Etpele normlizrii unei bze de dte

O operie de normlizre ce rezolv o problem pote s nu fecteze celellte probleme,


dr este necesr o succesiune de operii de normlizre pentru rezolvre tuturor
problemelor.

14

1.7.2 vntjele Normlizrii

Normlizre prezint numerose vntje cu privire l proiectre bzelor de dte,


proiectre pliciilor i implementre bzei de dte l nivel de producie. Unele dintre
vntjele mjore sunt:

Se obine o orgnizre totl superior.


Cntitte de dte redundnte este redus.
Integritte dtelor este uor de meninut n interiorul bzei de dte.
Procesul de proiectre l bzei de dte i l pliciei este mult mi flexibil.
Securitte bzei de dte devine mi uor de dministrt.

Orgnizre este genert de procesul de normlizre, fcnd, n cest fel munc tuturor
celor implici ntr-un proiect mi uor (de l utiliztorul ce ccesez bz de dte pn l
dministrtorul bzei de dte cre este responsbil cu dministrre fiecrui obiect din cdrul
cestei). Redundn dtelor este redus, cee ce simplific structurile de dte si conserv spiu
pe disc. Deorece informiile duplicte sunt minimizte su eliminte complet, posibilitte
priiei unor inconsistene de dte este redus simitor.
Dc o bz de dte fost normlizt corespunztor i sprt n tbele mi mici, cest
v oferi mi mult felxibilitte din punct de vedere l modificrilor structurle ce pot fi duse.
Este mult mi uor de modifict un tbel de dimensiuni reduse ce conine informii puine dect
un tbel mre ce conine multe informii.
Securitte este, de semene, mbuntit, n sensul c dministrtorul bzei de dte
pote permite cces l un numr limitt de tbele pentru numii utiliztori, securitte fiind mi
uor de controlt dup efecture normlizrii.
vntjul normlizrii v fi o bz de dte relionl proiectt corespunztor, cu tote
entitile identificte, dr i flexibil si uor de modifict din punct de vedere l bzei de dte dr
i l pliciei.
Produsul principl l fiecrui nivel de normlizre este crere de entiti ce ndeplinesc
numite criterii din punct de vedere l stocrii dtelor.
O bz de dte cre nu fost normlizt, tinde s genereze probleme din cuz
redundnei dtelor su dependenelor incorecte dintre dte prin intermediul reliilor de tipul
printe su copil.

15

1.7.3 Dezvntje le normlizrii

Dezvntjele normlizrii sunt cele c, n urm normlizrii, bz de dte v conine o


mulime de tbele de dimensiuni reduse (numr de colone). ceste colone trebuie joncionte
folosind cheile lor primre/secundre pentru c informiile s pot fi intr-o form utilizbil
pentru plicie.
Dei cele mi de succes bze de dte sunt normlizte pn l un numit grd,
normlizre duce un nejuns substnil i nume, reduce performn bzei de dte.
O bz de dte normlizt necesit un consum mi mre de resurse fizice le sistemului
de clcul (Procesor, Memorie, trnzcii I/O) dect o bz de dte nenormlizt.
O bz de dte normlizt trebuie s gsesc tbelele i poi s selecteze dtele din
ceste pentru pute gener informiile cerute su pentru proces dtele necesre.
Descompunere tbelelor re impct supr performnei, tote jonciunile necesre
pentru uni dtele micorez vitez de procesre i supun componentele hrdwre l uzur
diionl, dr i supr progrmtorilor, obligndu-i pe ceti s codeze interogri cre s
returneze informiile necesre fr suferi impctul insistenei bzei de dte relionle supr
returnrii unui rnd pentru fiecre combinie posibil de vlori corespunztore dc tblele nu
sunt joncionte corect.
Costul scrierii de linii suplimentre de cod pentru joncion tbele este ns bine
motivt de meninere integritii dtelor.

1.7.4 Denormlizre

Dei normlizre este un procedeu forte importnt n proiectre bzelor de dte, nu


ntotdeun ce mi nlt form de normlizre este i ce mi potrivit. n generl, cu ct bz
de dte se fl ntr-o form norml de nivel nlt, cu tt sunt necesre mi mult operiile de
joncionre relionl pentru produce un rezultt dorit fiind stfel consumte mi multe resurse
computionle de ctre bz de dte pentru rspunde l interogrile utiliztorilor. Un proiect
potrivit, de succes, ine cont, de semene, i de criteriile de performn, dr, uneori, este
necesr o denormlizre unor poriuni le proiectului bzei de dte pentru mri vitez de
lucru.
Denormlizre reprezint trecere bzei de dte dintr-o form norml de nivel superior
ntr-o form norml de nivel inferior, dr, din FN3 se pote trece n FN2, din FN2 n FN1,
etc. Cu ct se trece ntr-o form norml de nivel inferior, vitez de procesre interogrilor v
fi mrit, dr v exist o redundn din ce n ce mi mre dtelor.

16

1.7.5 Procesul de Normlizre

Obiectivul normlizrii este cel de sigur c fiecre tbel se conformez conceptului de


relii bine formte, cee ce nsemn c tbelele s ib urmtorele crcteristici:

Fiecre tbel s reprezinte un singur subiect.


Nici o informie nu v fi stoct n mi mult de un tbel fr fi necesr cest
stocre. Scopul cestei cerine este cel de sigur c informiile sunt
ctulizte numi ntr-un singur loc.
Tote tributele neprime dintr-un tbel sunt depedente de chei primr ntreg cheie primr i nimic ltcev n fr de chei primr [E.F. Codd].
Scopul cestei cerine este cel de sigur c informiile sunt identificbile n
mod unic printr-o cheie primr.
Nici un tbel nu conine nomlii de inserre, ctulizre su tergere.
sigur integritte i consisten informiilor din tbel.

Pentru tinge ceste obiective, procesul de normlizre fce trecere prin pii necesri
pentru conduce n mod succesiv l forme normle de nivel mi nlt.

17

2 Crere unei Bze de Dte

Prte plictiv cestui proiect ( bz de dte opertorului de telefonie mobile) v fi


implementt cu jutorul mediului Orcle Dtbse 11g Express Edition folosind comenzi de
SQL.
O bz de dte pote ve unul su mi muli dministrtori vnd rolul de gestion
sistemul (inclusiv crere de useri) si mi multi utiliztori fr drepturi de dministrtor ,
utiliztori cre pot indeplini fiecre roluri diferite in gestionre bzei de dte. De exemplu,
fiecre pote fi responsbil cu crere tbelelor, introducere dtelor, etc.

2.1 Crere si populre tbelelor

Un tbel este reprezentre prctic noiunii teoretice de relie (reli este o noiune
bstrct, cu sensul de mulime mtemtic).
Se construiesc dou tbele: unul pentru boni i unul pentru clieni prepy. Numele
tbelului v fi dt n conformitte cu dtele coninute. Totodt, n czul n cre tbelele se fl
n ceei schem, este necesr s ib nume diferite.
Tbelul pentru boni v conine numele, codul clientului, numr telefon, tipul de
bonment, servicii oferite (voce, sms, mms, video cll, internet, roming), cost, stre pli (l zi
su restnier), vechime n ree.
Cmpurile cod_client, numr_telefon, vechime_in_rete sunt de tip number, cmpurile
nume, prenume, tip_bonment, servicii oferite sunt de tipul vrchr2 deorece lungime cestor
tribute difer pentru fiecre client n prte i, n cest fel, spiul ocupt n mediul de stocre v
fi cel strict necesr fiecrui tuplu n prte, ir cmpul cost_suplimentr este de tipul deciml.
In cest sectiune se v exemplific relizre/crere tbelelor BONTI si
CLIENTI_PREPY.
stfel, tbel BONTI v fi lctuit din urmtorele tribute: Nume, Prenume,
Codul_Clientului, Numr_telefon, Tipul_de_bonment, Servicii_oferite, Cost, Stre_plti si
Vechime_in_rete.

18

Dup cum se vede sintx comenzii SQL este formt din cuvintele de bz crete
tble cre denot fptul c operti re c scop crere unei tbele. ceste cuvinte sunt urmte
de numele tbelei pe cre dorim s o crem. poi, intre prnteze urmez tributele (colonele)
tbelei crete, urmte de tipul dtelor inserte pentru cel tribut, ir dup tipul dtelor este
trecut optionl o constrngere, in cest cz cest este constrngere de not null, deorece
ne dorim c dtele introduse s nu ib vlore null.
Tipul de dte vrchr(n) este un sir de crctere de lungime vribil cu lungime
mxim de n bytes su crctere , spiul ocupt efectiv de cmpul corespunztor din tuplul
respectiv este exct numrul de crctere l numelui.S- les cest tip de dte pentru c dtele
introduse nu u o dimensiune stndrd (de ex. : nu toti bontii u numele formt din celsi
numr de litere , su nu tote bonmentele u celsi numr de crctere) si dtorit fptului c
pe lng cifre se pot folosi si litere in denumire obiectului introdus (de ex. : cod_client pote fi
reprezentt de o combintie de cifre si litere ).

19

Pentru popul tbel cre m cret-o mi susse execut instruciuni de tip insert,
specificndu-se tbel, colonele din tbel cre vor fi complette i vlorile pentru colonele
respective.Pentru inser mi multe rnduri n tbel cret nterior, m folosit instruciunile
urmtore:
insert ll
into bonti (nume, prenume, cod_client, numr_telefon, tip_bonment, servicii_oferite,
cost, stre_plti, vechime_rete) vlues ('ndreis', Vld' , '1111', '0760123456', 'XL',
'voce,sms,mms,internet', '10 euro', 'L zi', 60)
into bonti (nume, prenume, cod_client, numr_telefon, tip_bonment, servicii_oferite,
cost, stre_plti, vechime_rete) vlues ('Ion', 'Bogdn' , '1112', '0760151617', 'S',
'voce,sms,mms', '4 euro', 'L zi', 21)
into bonti (nume, prenume, cod_client, numr_telefon, tip_bonment, servicii_oferite,
cost, stre_plti, vechime_rete) vlues ('Popescu', 'ndrei' , '1113', '0768001122', 'XXL',
'voce,sms,mms,internet,roming', '15 euro', 'L zi', 30)
into bonti (nume, prenume, cod_client, numr_telefon, tip_bonment, servicii_oferite,
cost, stre_plti, vechime_rete) vlues ('Ionescu', 'Viorel' , '1114', '0765987654', 'M',
'voce,sms,mms,videocll', '8 euro', 'L zi', 40)
into bonti (nume, prenume, cod_client, numr_telefon, tip_bonment, servicii_oferite,
cost, stre_plti, vechime_rete) vlues ('Mite', 'lexndru' , '1115', '0764983428', 'XL',
'voce,sms,roming,internet', '11 euro', 'Restntier', 13)
into bonti (nume, prenume, cod_client, numr_telefon, tip_bonment, servicii_oferite,
cost, stre_plti, vechime_rete) vlues ('Lzr', 'Vld' , '1116', '0761888222', 'S',
'voce,sms,internet', '6 euro', 'Restntier', 12)
into bonti (nume, prenume, cod_client, numr_telefon, tip_bonment, servicii_oferite,
cost, stre_plti, vechime_rete) vlues ('Comn', 'Ctlin' , '1117', '0767232323', 'XXL',
'voce,sms,mms,internet,roming,video cll', '20 euro', 'L zi', 18)
into bonti (nume, prenume, cod_client, numr_telefon, tip_bonment, servicii_oferite,
cost, stre_plti, vechime_rete) vlues ('Popescu', 'Ionut' , '1116', '0768129341', 'M',
'voce,sms,mms,internet', '7 euro', 'Restntier', 36)
select 1 from dul

20

Pentru vizuliz cele 8 tupluri pe cre le-m dugt mi sus in tbel bonti vom
folosi urmtore instructiune:

21

Deorece structur bzelor de dte trebuie s modeleze relitte, dtele coninute de


ceste trebuie s se ncdreze n numite mulimi de vlori. ceste constrngeri sunt definite c
nite reguli l proiectre bzei de dte i trebuie respectte ntotdeun.
Se pot difereni dou tipuri de constrngeri din punctul de vedere l locului unde sunt
definite : intr-relie i inter-relie. Cele intr-relie se refer l o singur relie (su tbel, n
prctic) i se mprt n constrngeri de domeniu, constrngeri de tuplu etc. Cele inter-relie se
refer l un su mi multe tbele, fiind modelte prin cheile strine i sigurnd sociere
corect reliilor.
L tbelul bonti se pot plic dor constrngeri intr-reltie . Un din constrngerile
plicte cestei tbel este NOT NULL , cre constrnge colon s ib vlori vlide.
Constrngerile gen NOT NULL cre fectez colonele se mi numesc constrngeri de
colone su de domeniu . Ele sunt impuse vlorilor tributelor pentru c ceste s corespund
relitii .
Null este o vlore generl, socit tuturor tipurilor de dte dintr-o bz de dte cre
modelez lips unei vlori cmpului respectiv.
Mi pot fi impuse constrngeri cre s sigure c modelre relitii este ct mi fidel.
De exemplu, pentru tbel boni, se observ c exist un cmp cre modelez codul clientilor.
S presupunem c pentru compni pentru cre relizm cest bz de dte codul de client este
formt dintr-o combintie de litere si cifre de 5 crctere . Pentru evit eventulle erori l
tiprire codului (introducere dor 4 crctere su mi putin in loc de 5) se pote plic o
constrngere de tip check cre s se sigure c orice vlore introdus pentru colon
cod_client este formt din strict 5 crctere.
Pentru relizre cestei constrngeri trebuie introdus urmtore instructiune :

22

Pentru test constrngere introdus vom incerc s dugm o nou inregistrre


in tbel , tuplu cre v ve un cod de client formt dor din ptru crctere . Vom introduce
urmtore comnd :
insert into bonti (nume, prenume, cod_client, numr_telefon, tip_bonment,
servicii_oferite, cost, stre_plti, vechime_rete) vlues ('ndreis', 'Sebstin' , '11115',
'0768946661', 'M', 'voce,sms,roming', '8 euro', 'L zi', 17)

Se observ c inserre euez cu erore fit mi sus. Se specific nclcre


constrngerii impuse supr colonei cod_client.
Bz de dte compniei de telecomunictii , in fr de tbelul pentru bonti mi
trebuie s detin un tbel si pentru clientii prepy. Tbelul nou cret v ve numele
clienti_prepy si v relizt semntor cu tbelul bonti .
23

Pentru crere efectiv tbelului clienti_prepy se introduce in lini de comnd


urmtore instructiune:

Tipurile de dte folosite in tbel clienti_prepy sunt vrchr(n) pentru numr de


telefon , sum disponibil (pentru pute fi specifict sum disponibil pe crtel si cu
zecimle) si pentru serviciile oferite (list de servicii pe cre le re utiliztorului respectivei
crtele) . Tipul de dte number(n) s- folosit pentru vechime in rete , cre , l fel c si in czul
tbelei bonti cest se exprim in luni.
S- folosit , din nou , constrngere de colon not null pentru nu permite c
numite cmpuri s nu ib nicio vlore inregistrt in ele .
Pentru popul tbel clienti_prepy se execut instruciuni de tip insert, specificnduse tbel, colonele din tbel cre vor fi complette i vlorile pentru colonele
24

respective.Pentru inser mi multe rnduri n tbel cret nterior, m folosit instruciunile de


mi jos:

Pentru vizuliz cele 8 tupluri pe cre le-m dugt mi sus in tbel client_prepy
vom folosi urmtore instructiune :
select * from clienti_prepy

25

supr celor 2 tbele pe cre le-m cret putem efectu diferite modificri : de exemplu
se pote dug un su mi multe colone l cele 2 tbele .dugre nu fectez n niciun fel
colonele dej existente le tbelei respective. n czul n cre se specific o vlore implicit
pentru colon nou dugt, tote tuplurile existente n tbel se vor complet cu vlore
implicit pentru colon nou dugt.
Se presupune c l tbel bonti se dorete introducere unor informii suplimentre
legte de dres de coresponden l cre s se trimit fcturile, de exemplu. Pentru cest, se
v dug o colon, dres l tbel bonti. Pentru exemplific, se v set c vlore
implicit Bucuresti i se v dug i constrngere not null.

26

Instructiune cre relizez dugre unei colone cu o vlore implicit este:

Pentru observ ce s- ntmplt cu tuplurile dej existente, se execut:

27

Pentru stergere unei colone dintr-un tbel se execut urmtore instructiune :

Pentru observ modificrile relizte supr tuplurile dej existente, se execut i se


observ c ultim colon dres fost ters cu succes:

28

2.2 Superchei

Un exemplu de supercheie pentru tbelul bonti pote fi o combintie tributelor


Nume , Prenume , Cod_Client si Numr_telefon . cest combintie de tribute
identific un singur tuplu. Dc dorim se pote defini n cest sens o constrngere de unicitte pe
tbel folosindu-se urmtore instructiune:

29

Pentru tbel clienti_prepy se pote lege drept supercheie o combintie intre


urmtorele tribute Numr_telefon , Servicii_oferite si Sum_disponibil :

30

2.3 Chei cndidte

Chei cndidt reprezint o supercheie ireductibil. (nu exist o submulime tributelor


supercheii cre s ib propriette c identific n mod unic un tuplu). Pote fi lctuit din unul
su mi multe tribute , ir condii de unicitte reprezint o constrngere de integritte impus
supr modelului respectiv.
Pentru tbelul bonti dup o nliz tributelor relizm c putem desemn drept
cheie cndidt numr_telefon (numrul de telefon este unic , nu pot exist 2 numere de
telefon identice) . stfel , prin folosire tributului numr_telefon se pote determin in mod
unic un tuplu din tbelul bonti . m pute fi tentti s spunem c si tributulul cod_client
r determin in mod unic un tuplu si r pute fi o lt cheie cndidt pentru cest tbel. Ins ,
cest tribut determin in mod unic un client , dr un bont pote s ib dou bonmente si un
singur cod de client . stfel , dup o cutre in bz de dte dup tributul cod_client r
rezult nu dor un singur tuplu , ci dou tupluri cu celsi nume si celsi cod client ins cu
diferite tipuri de bonmente (su pote celsi tip de bonment) si diferite tipuri de servicii ,
dr cu sigurnt cu diferite numere de telefon.
Se pote implement , in czul in cre compni de telefonie mobil pentru cre se
relizez bz de dte doreste cest lucru , c tributul cod_client s fie unic pentru fiecre
inregistrre : dc un client r ve mi multe bonmente s i coduri client diferite pentru
fiecre numr de telefon pe cre il foloseste . Totul este l ltitudine compniei de telefonie
mobil si cretorului bzei de dte .
Pentru czul nostru , se v consider c tributul cod_client pote determin nu dor
un singur tuplu , stfel singur cheie cndidt pentru tbelul bonti rmne tributul
numr_telefon . Pentru plic cest constrngere tbelei nostre se utilzez urmtore
instructiune :
lter tble bonti dd constrint unique_numr_telefon unique(numr_telefon)

31

Pentru tbelul clienti_prepy singur cheie cndidt este tributul numr_telefon.


Pentru plicre cestei chei cndidt tbelei se execut urmtoreinstructiune SQL:
lter tble clienti_prepy dd constrint unique_telefon unique(numr_telefon)

Pentru observ functionlitte introducerii cestei constrngeri vom incerc s


dugm in tbelul clienti_prepy unui numr de telefon dej existent . cest lucru se v
fce prin urmtore comnd :
insert into clienti_prepy (numr_telefon, servicii_oferite, sum_disponibil,vechime_rete)
vlues ('0765878787', 'voce', '14.72 Euro',63)
Chir dc tote cellte tribute ,fr numrul de telefon , le comenzii introduse difer
ft de cele dej introduse in tbel se primeste un mesj de erore vertizndu-ne c cest
numr de telefon dej exist in tbel nostr .

32

33

2.4 Chei primr

Chei primr re rolul de identific n mod unic un tuplu i totodt i se impune c


tributele sle s nu ccepte vlori de NULL. Dintre cele dou chei cndidte identificte, se
lege c fiind cheie primr ce cu cele mi putine tribute, din riuni de eficien. stfel chei
primr pentru tbelul bonti este numr_telefon , ir pentru tbel clienti_prepy este
tributul numr_telefon .
Cheile primre pot fi nturle (formte din unul su mi multe tribute existente n
relie) su rtificile (construite specil pentru identificre unic tuplurilor; de obicei, cheile
rtificile sunt formte dintr-un singur tribut l reliei).
Chei primr nturl pentru tbelul bonti este numr_telefon deorece
tributul exist dej in reltie . Implementre ei se relizez cum s- evidentit in sectiunile
precedente.
Pentru dugre cheii primre nturle se execut comnd :
lter tble bonti dd constrint pk_telefon_bonti primry key(numr_telefon)

Pentru tbelul clienti_prepy cheie prim nturl este numr_telefon si se dug


prin executre comenzii SQL :
lter tble clienti_prepy dd constrint pk_telefon_prepy primry key(numr_telefon)

34

5.5 Chei strin

O cheie strin reprezint o constrngere referenil cre sigur modelre corect


socierilor 1:N ntre dou su mi multe relii. Considernd dou relii, R1 i R2, se numete
cheie strin o submulime de tribute le lui R2 cre refer R1 respectnd dou condiii :
tributele cheii strine sunt definite pe domenii comptibile cu cele le tributelor
unei chei cndidte din R1;
Vlorile tributelor cheii strine ntr-un tuplu din reli R2 sunt identice cu vlorile
cheii tributelor cheii cndidte din R1 le unui tuplu din R1 su iu vlore
NULL (cest este propriette de integritte referenil).
Pentru pute exemplific crere unei chei strine, este necesr s se mi creeze cel puin
nc o tbel.
Se v cre o tbel cre s modeleze tipul de bonment (se v folosi un model simplifict,
specificndu-se dor o colon pentru preul n euro, un pentru descriere bonmentului i un
pentru defini o cheie primr rtificil).
Creere noii tbel se relizez cu comnd:

35

Pentru cest tbel se plic drept cheie primr tributul tip_bonment :

36

Se observ c tributele servicii_oferite si cost se gsesc si in tbel bonti.


stfel, pentru evit slvre unor dte de dou ori se v sterge din tbelul bonti colonele
mentionte mi sus .
Vom sterge colonele cu urmtore comnd:
lter tble bonti drop column servicii_oferite
lter tble bonti drop column cost
stfel, dup folosire comenzilor tbelul v rt stfel:

37

Revenind l tbelul bonmente se vor defini o secven i un trigger ninte de


inserre pentru simul utoincrementre cheii primre. Instructiunile folosite sunt :
crete sequence seq_id_bonmente strt with 21 increment by 1 nomxvlue;

crete or replce trigger trig_bi_bonmente


before insert on bonmente
for ech row
begin
select seq_id_bonmente.nextvl into :new.id from dul;
end;

38

Dup creere trigger-ului si stbilire cheii primre trebuie s populm tbel


bonmente . Vom introduce tipurile de bonmente pe cre le detine compni de telefonie
mobil , precum si costul fiecrui bonment si ce servicii ofer fiecre . stfel , se vor folosi
urmtorele instructiune pentru dugre tuplurilor in tbelul bonmente :
insert ll
into bonmente(tip_bonment, servicii_oferite, cost) vlues('S', '500 sms, 500 min rete', '5
euro')
into bonmente(tip_bonment, servicii_oferite, cost) vlues('L', '700 sms, 700 min rete', '7
euro')
into bonmente(tip_bonment, servicii_oferite, cost) vlues('M', '1000 sms, 1000 min rete,
1000 mms, internet 1000 mb', '11 euro')
into bonmente(tip_bonment, servicii_oferite, cost) vlues('XL', '1500 sms, 1500 min rete,
1500 mms, internet 1500 mb, video cll 500 min, roming', '15 euro')
into bonmente(tip_bonment, servicii_oferite, cost) vlues('XXL', '2000 sms, 2000 min rete
, 2000 mms, internet nelimitt , video cll 2000 min, roming', '25 euro')
select 1 from dul;

39

Tbel rtnd stfel:

40

Se dorete definire cheii strine n tbel bonti cre s refere colon


tip_bonment din tbel bonmente. Pentru cest este necesr c tote vlorile din
colon tip_bonment din tbel bonti s conin strict vlori regsite n colon
tip_bonment din tbel bonmente l cre se v fce referin su vlori NULL.
Pentru definire cheii strine se foloseste urmtore instructiune SQL:

stfel tributul "tip_bonment" devine chei strin tbelei "bonti" cre refer tbel
"bonmente" prin tributul "tip_bonment" .L inserre unui nou tuplu n tbel bonti
(su l execui unui updte supr vlorii colonei tip_bonment unui tuplu din tbel
bonti ), se v verific dc vlore furnizt pentru tip_bonment este NULL su dc
se regsete printre vlorile colonei tip_bonment din tbel bonmente. n czul n cre
vlore furnizt nu este NULL (in czul nostru nu se pote introduce o vlore NULL pentru
c fost impus l inceput constrngere NOT NULL) i nici nu este regsit n vlorile
existente n colon tip_bonment din tbel bonmente, se v gener o erore i operi
de inserre v eu :

41

Se pote modific tipul bonmentului unui bont prin specificre unei vlori pentru
colon tip_bonment din tuplul corespunztor din tbel bonti . cest operie se
pote fce cu o instruciune de tip updte c mi jos :
updte bonti set tip_bonment='XXL' where numr_telefon=0760123456;

42

cest operie setez tipul de bonment XXL pentru bontul cu numrul de


telefon 0760123456. Operi reuete pentru c XXL este o vlore cre se regsete n
colon tip_bonment din tbel bonmente.

43

2.6 Crere unei vederi

O vedere este rezulttul dinmic l unei su mi multor opertii reltionle cre


ctionez supr reltiilor de bz, pentru obtine o lt reltie. O vedere este o reltie virtul,
cre n relitte nu exist n bz de dte, ci este produs n momentul respectiv, l cerere unui
utiliztor.
Continutul unei vederi este definit c o interogre supr unei su mi multor reltii de
bz.Vederile sunt dinmice, dic modificrile n reltiile de bz sunt reflectte imedit n
vederi. Si invers, modificrile permise operte supr vederii se trnsmit reltiilor de bz.
O vedere este deseori numit si o tbel virtul. Vederile sunt crete utiliznd
instructiune CRETE VIEW. Dup ce vedere fost cret, se pot folosi urmtorele comenzi
SQL pentru ne referi l ce vedere:
-

SELECT
INSERT
INPUT
UPDTE
DELETE

Vederile sunt socite cu o tbel in bz de dte curent.Desi sociere fiecrui obiect


cu o tbel este unic, vederile pot mri tbel .
Se pot folosi vederi su tbele virtule pentru incpsul query-uri complexe. Dup
crere unei vederi supr unui set de dte, ce vedere pote fi trtt c orice lt tbel. Ins,
sunt plicte restrictii specile in cee ce priveste modificre dtelor din cele vederi. Cnd
dtele dintr-o tbel se modific, cee ce se obtine interognd o vedere de semene se modific.
Vederile nu ocup sptiu in memori fizic, stfel diferentiindu-se de tbele.
vntjle vederilor sunt urmtorele :
- furnizez un mecnism de securitte puternic;
- permite utiliztorilor ccesre dtelor n mod personlizt; celesi dte pot fi
vizulizte simultn, n moduri diferite, de ctre diversi utiliztori;
- pote simplific opertiile complexe supr reltiilor de bz.
Ins , exist restrictii referitor l modificrile cre pot fi efectute prin intermediul
vederilor. Conditiile de cre depinde rectulizre dtelor prin intermediul vederilor sunt:
- sunt permise rectulizrile prin intermediul unor vederi definite prin utilizre
unei interogri simple unei singure reltii de bz, si cre interogre contine fie
chei primr, fie chei cndidt cestei;
- nu sunt permise rectulizrile prin vederi cre implic reltii de bz multiple;
- nu sunt permise rectulizrile prin vederi cre implic operti de cumulre su
de grupre.
Sintx pentru o vedere este instructiune :
CRETE VIEW <numele_vederii> [(colon1, colon2...)] S
SELECT <numele_tbelei numele_colonei>
FROM <numele_tbelei>
44

Desi sintx pote pre dificil de inteles, e v fi exemplifict in numerose rnduri in


cele ce urmez tocmi pentru ilustr diferitele situtii de utilizre dr si vntjele vederilor.
Setul de instructiuni prezentte mi sus u c efect crere unei vederi l crui nume v fi
specifict in cmpul numele_vederii si cre cuprinde mi multe colone l cror nume pote fi
de semene specifict. O instructiune SELECT v determin cmpurile si tipurile de dte.
Deorece tbelul bonti fost modifict de- lungul diferitelor opertii cre le-m
relizt in sectiunile precedente vom recre tbelul , vom introduce tuplurile din nou si ii vom
stbili drept cheie primr tributul numr_telefon .
Pentru creere unei vederi cre s cuprind toti bontii/numerele de telefon cre u
roming vom proced in felul urmtor : pentru fiecre tbel ( bonti si clienti_prepy ) se
v cre cte o vedere pentru se extrge numerele de telefon cre u roming .
Instructiune SQL folosit este urmtore :

45

crete view roming_prepy (numr_telefon, servicii_oferite, sum_disponiobil,


vechime_rete)
s select clienti_prepy.numr_telefon, clienti_prepy.servicii_oferite,
clienti_prepy.sum_disponibil, clienti_prepy.vechime_rete
from clienti_prepy
where clienti_prepy.servicii_oferite like '%roming%' ;

Opertorul LIKE cut intr-un sir de crctere (deorece tributul servicii_oferite este
de tip vrchr) . Opertorul LIKE folosit impreun cu %% v cut in sirul de crctere tote
cuvintele cre contin crcterele cuprinse intre semnele de procent ( % ) .
Vedere pentru tbelul bonti denumit roming_bonti2 se pote vizuliz
utiliznd instructiune :
select * from roming_bonti2

46

47

Pentru creere unei vederi cre s cuprind toti bontii/numerele pltesc peste o numit
sum vom proced in felul urmtor: pentru tbelul bonti se v cre o vedere pentru se
extrge numerele de telefon cre u un cost mi mre de 9 euro.
Instructiune SQL folosit este urmtore:

Vedere pentru tbelul bonti denumit cost_superior se pote vizuliz utiliznd


instructiune :
select * from cost_superior

48

49

Bibliogrfie
1. Lbortor Bze de dte, Conf. Dr. Ing. Dn Gltchi
2. Curs Bze de dte, Conf. Dr. Ing. Dn Gltchi
3. Tutoril Tech_Yourself_SQL_in_21_dys_FULL
4. http://www.scritub.com/stiint/informtic/bze-de-dte/Construire-dedigrme-entit33387.php

50

Você também pode gostar