bd_msr

50
  1 Universit аteа “Politehnicа” din București F аcult аteа de Electronică, Telecomunicаții și Tehnologiа Informаț iei Bаze de dаte pentru telecomunicаții Proiect de cercetаre-documentаre Conducător științific Student Conf. Dr. Ing. Dаn G  АL  АTCHI Vl аd Аndrei аs Mаi 2015

Upload: vlad-andreias

Post on 02-Nov-2015

3 views

Category:

Documents


0 download

DESCRIPTION

School

TRANSCRIPT

  • 1

    Universitte Politehnic din Bucureti Fcultte de Electronic, Telecomunicii i Tehnologi Informiei

    Bze de dte pentru telecomunicii Proiect de cercetre-documentre

    Conductor tiinific Student Conf. Dr. Ing. Dn GLTCHI Vld ndreis

    Mi 2015

  • 2

    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

  • 3

    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.

    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.

    Utiliztor plicie SGBD

    Bz de dte

    Dte Dte

  • 4

    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

  • 5

    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.

  • 6

    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.

  • 7

    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

  • 8

    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

  • 9

    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 Entitte-sociere 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.

  • 10

    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.

  • 11

    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).

  • 12

    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.

  • 13

    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.

  • 14

    fig. 4.1 Progresi formelor normle

    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.

    Relie Nenormlizt

    Prim form norml

    dou form norml

    trei form norml

    Relie complet normlizt

    Eliminre tributelor ce se repet su vnd vlori multiple

    Eliminre tributelor pril depedente

    Eliminre tributelor trnzitiv depedente

    plicre formelor normle diionle

  • 15

    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.

  • 16

    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.

  • 17

    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.

  • 18

    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.

  • 19

    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 ).

  • 20

    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

  • 21

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

  • 22

    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 :

  • 23

    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 .

  • 24

    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, specificndu-se tbel, colonele din tbel cre vor fi complette i vlorile pentru colonele

  • 25

    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

  • 26

    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.

  • 27

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

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

  • 28

    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:

  • 29

    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:

  • 30

    Pentru tbel clienti_prepy se pote lege drept supercheie o combintie intre urmtorele tribute Numr_telefon , Servicii_oferite si Sum_disponibil :

  • 31

    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)

  • 32

    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 .

  • 33

  • 34

    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)

  • 35

    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:

  • 36

    Pentru cest tbel se plic drept cheie primr tributul tip_bonment :

  • 37

    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:

  • 38

    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;

  • 39

    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;

  • 40

    Tbel rtnd stfel:

  • 41

    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 :

  • 42

    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;

  • 43

    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.

  • 44

    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 [(colon1, colon2...)] S SELECT FROM

  • 45

    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 :

  • 46

    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

  • 47

  • 48

    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

  • 49

  • 50

    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-de-digrme-entit33387.php

    Introducere1. Bze de dte definiie1.1 Bz de dte relionl1.2 Entitte1.3 Tbelele1.4 Proiectre conceptul bzelor de dte1.5 Proiectre logic bzelor de dte1.6 Constrngeri1.7 Normlizre Bzelor de Dte1.7.1 Normlizre. Necesitte Normlizrii.1.7.2 vntjele Normlizrii1.7.3 Dezvntje le normlizrii1.7.4 Denormlizre1.7.5 Procesul de Normlizre2 Crere unei Bze de Dte2.1 Crere si populre tbelelor2.2 Superchei2.3 Chei cndidte2.4 Chei primr5.5 Chei strin2.6 Crere unei vederiBibliogrfie