I_IF.02_Structurarea Bazelor de Date

download I_IF.02_Structurarea Bazelor de Date

of 10

Transcript of I_IF.02_Structurarea Bazelor de Date

  • 7/25/2019 I_IF.02_Structurarea Bazelor de Date

    1/10

    INFORMATIC*I* IF.02. Structurarea bazelor de date

    - 1 -

    Capitolul IF.02. Structurarea bazelor de date

    Cuvinte-cheie:

    Normalizare,prima form normal, a doua formnormal, a treia form normal, cheie candidat,

    relatie 1 la 1, relaie 1 la n, relaie m la n

    IA.02.1. Scurt istoric

    n anii '60, A.F. Codd, cercettor la I.B.M., a studiat posibilitatea ameliorrii modului destocare a datelor n fiiere deoarece existena informaiilor redundante predispunea la erori greu dedepistat. n 1970 a publicat un articol, "A Relational Model of Data for Large Shared Databanks"care a schimbat complet concepiile privind structura bazelor de date. Un programator, LarryEllison, sesiznd importana practic a teoriei lui Codd, a realizat un produs software, Oracle, i ofirm pentru promovarea acestuia, OracleCorporation. L. Ellison a devenit astfel unul dintre ceimai bogai oameni de pe planet.

    IA.02.2. Anomalii rezolvate de modelul raional

    S presupunem c ntr-o bibliotec, bibliotecara pstreaz evidena crilor cu ajutorulcalculatorului, ntr-un fiierpentru cri avnd urmtoarea structur:

    NrInv Autor Titlu Editura Locul Anul apariiei

    Avnd n vedere posibilitile unui calculator legate de parcurgerea fiierelor, s-ar prea cvor putea fi realizate uor o mulime de rapoarte. n timpul exploatrii pe calculator a fiierului s-audepistat ns probleme cauzate de modul de structurare a informaiilor.

    - Anomalia la actualizarea datelor:

    Conducerea bibliotecii a impus ca numele autorului s fie scris n alt mod, conform unuiformat diferit.. Pentru autorii mai puin prolifici problema nu e dificil, dar unii autori se regsescn fiier de zeci de ori. Modificarea n zeci de locuri a aceluiai nume poate conduce la erori greude depistat. Aceast anomalie poart numele de anomalia la actuali zare. Pentru eliminarea ei,modelul relaional propune structurarea informaiilor n dou tabele: un tabel cu numele autorilor iun tabel cu cri:

  • 7/25/2019 I_IF.02_Structurarea Bazelor de Date

    2/10

    INFORMATIC*I* IF.02. Structurarea bazelor de date

    - 2 -

    CodAutor Autor

    NrInv CodAutor Titlu Editura Locul Anul apariiei

    n momentul nregistrrii unei cri, dac autorul exista deja n tabelul de autori, i senoteaz codul care apoi este folosit la nregistrarea crii. Dac autorul nu exist n fiierul deautori, el va fi adugat, n momentul adugrii atribuindu-se un cod. n acest mod, modificareanumelui autorilor se realizeaz simplu, numele fiecrui autor aprnd o singur dat.

    - Anomalia la tergerea datelor:

    Aceast anomalie poate aprea dac se cere tergerea din fiierul de cri a nregistrriicorespunznd unei cri pierdute. Odat cu titlul crii se terge i editura care a publicat-o.

    Ulterior, dac se dorete realizarea unui raport privind editurile cu care biblioteca are relaii, nraport nu va mai figura editura care a realizat cartea suprimat. Acest anomalie poart numele deanomalia la tergerea datelor.

    - Anomalia la adugarea datelor:

    Dac se dorete nregistrarea n baza de date a bibliotecii a datelor unei noi edituri, nmodelul elaborat acest lucru nu este posibil fr adugarea unei prime cri achiziio nate de laaceasta. Se spune atunci c baza prezint o anomalie la adugarea datelor.

    IA.02.3. Normalizarea

    Modelul relaional elaborat de Codd propune soluii pentru eliminarea acestor anomalii.Procesul de structurare a bazei de date n vederea el iminrii anomaliilor sesizate poart numele denormalizare. Normalizarea const n aducerea bazei de date ntr-una dintre formele normale, celemai importante fiind cele trei forme prezentate n continuare.

    -

    Prima form normal(1NF)Prima form normal cere ca tabelele n care sunt pstrate informaiile s satisfac

    urmtoarelor cerine:

    a. Fiecare coloan trebuie s pstreze o informaie elementar (care nu se mai poatedescompune). n exemplul prezentat, dac o carte are mai muli autori coloanaCodAutor ar trebui s conin mai multe coduri, deci acest mod de structurare nurespect aceast cerin.

    b. Fiecare coloan trebuie s aib un nume unic;

    c. Tabelul nu poate avea dou linii coninnd informaii identice. Fiecare tabel din

    componena unei baze de date normalizate conine o cheie primar. O cheie primar esteun cmp care are valori distincte pentru toate liniile tabelului. Uneori, mai rar, cheiaprimar este obinut prin alturarea valorilor dintr-un ansamblu de mai multe cmpuri.

  • 7/25/2019 I_IF.02_Structurarea Bazelor de Date

    3/10

    INFORMATIC*I* IF.02. Structurarea bazelor de date

    - 3 -

    Pot exista n baza de date tabele care nu au o cheie primar. Tabelele pentru care s-adefinit o cheie primar respect, de regul, cerina enunat.

    d. ntr-un tabel nu se admit grupuri de informaii care se repet. n exemplul datEdituraiLocul formeaz un grup care probabil se repet pentru toate crile provenind de laaceeai editur.

    - A doua form normal(2NF)

    A doua form normal se refer la tabele ale bazei de date care respect cerinele primeiforme dar au cmpuri care nu depind funcional de cheia primar. De exemplu urmtorul tabelul decomenzi :

    Comanda Client Pers. de contact Total

    1 Leonida SRL Marcel Bihoreanu 4023.302 Suprem ABC S.A. Ioan Moldovan 2048.503 Transilvania grup S.A. Vasile Pop 1100.054 Rodna Trans S.R.L. Carmen Ionescu 834.00

    n exemplul dat, cheia primar este cmpul Comanda. Acest cmp nu este ntr-o relaie funcionalcuPers. de contact, deoarece n cazul n care o firm a emis mai multe comenzi cmpul Pers. decontactva conine n mod repetat aceeai valoare.

    n acest caz aducerea bazei de date n a doua form normal va conduce la definirea a dou tabele,unul pentru comenzi i unul care asociaz fiecrei firme o persoan de contact.

    Comanda Client Total

    1 Leonida SRL 4023.302 Suprem ABC S.A. 2048.503 Transilvania grup S.A. 1100.054 Rodna Trans S.R.L. 834.00

    Client Pers. de contact

    Leonida SRL Marcel BihoreanuSuprem ABC S.A. Ioan MoldovanTransilvania grup S.A. Vasile PopRodna Trans S.R.L. Carmen Ionescu

    - A treia form normal(3NF)

    Pentru a fi n a treia form normal un tabel trebuie s fie n a doua form normal i, n plus, toatecmpurile care nu depind directde cheia primar trebuie eliminate.

    Exemplu de tabel care nu este n forma a treia normal:

  • 7/25/2019 I_IF.02_Structurarea Bazelor de Date

    4/10

    INFORMATIC*I* IF.02. Structurarea bazelor de date

    - 4 -

    Societate Ora Cod potal Judet

    Leonida SRL Galati 21450 GalatiSuprem ABC S.A. Bacau 11760 Bacau

    Transilvania grup S.A. Sibiu 51280 SibiuRodna Trans S.R.L. Bistrita 23413 Bistrita Nasaud

    n exemplu cmpul Judet depinde de Ora si nu de Societate, deci trebuie eliminat. Pentrumemorarea judeelor va trebui adugat un tabel care s conin lista oraelor i, pentru fiecare ora,

    judeul n care este situat.

    Coloanele unui tabel care satisface a treia form normal conin informaii care depind direct decheia primar.

    IA.02.4. Relaii ntre tabelele bazei de date

    Pentru a satisface cerinele impuse de cele 3 forme normale prezentate, informaiile sunt deregul pstrate ntr-un ansamblu de tabele ntre care exist relaiide diferite tipuri.

    1. Relaii 1 la mai muli(1lan, one to many)

    Dac n exemplul considerat datele privind o editur sunt pstrate ntr-un fiier iar crilesunt nregistrate n alt fiier, ntre cele dou tabele se stabilete o dependen de tip "unul la maimuli".

    CodE Nume Adresa Telefon

    NrInv CodA Titlu CodE Anul

    Acest tip de relaie este cel mai frecvent ntlnit i st la baza modelului relaional elaboratde Codd.

    Cheile primare din cele dou tabele sunt CodEpentru Edituri i NrInvpentru Cri. ntabelul de cri, CodE i CodA (cod autor) sunt chei strine. O cheie strin dintr-un tabel A

    editura

    cod editur

    carte

    cod autor

    Edituri

  • 7/25/2019 I_IF.02_Structurarea Bazelor de Date

    5/10

    INFORMATIC*I* IF.02. Structurarea bazelor de date

    - 5 -

    permite regsirea unei linii dintr-un tabel asociat, B. n tabelul asociat, B, cheia strin din tabelul Aeste de regul cheie primar. n cazul dat, cheia strin CodApermite regsirea n tabelul de autori anumelui acestuia iar cheia strin CodEpermite gsirea numelui editurii care a publicat cartea.

    Observaie: Tabele ca de exempluEdituripot conine cmpuri care au n mod evident valoridistincte pentru toate articolele din tabel. De exempluNumelesau Telefon. n teoria bazelor de dateastfel de cmpuri sunt denumite chei candidate, deoarece ar putea fi chei primare.

    2. Relaii 1 la 1(one to one)

    O relaie detipul 1 la 1 apare n cazul n care unei linii dintr-un tabel i corespunde o singurlinie n tabelul cu care acesta este n legtur.

    n cazul n care fiecrei nregistrri dintr-un tabel i corespunde o nregistrare n al doileatabel nu este necesar nregistrarea informaiilor n dou tabele separate. Tabelele separate suntcreate n cazul n care nu toate liniile primului tabel au corespondent n al doilea tabel.

    Exemplu:

    Se consider perechea de tabele din exemplul de mai jos. Aceasta conine datele angajailorunei companii i numele soilor / soiilor angajailor.

    Cod_ang Nume Prenume

    12 Ionescu Valer

    13 Pop Diana

    14 Popescu Marius

    Se observ c angajatul de la poziia 14 nu are corespondent n tabelul Soti.

    3. Relaii mai muli la mai muli (mla n, many to many)

    O relaie de acest tip apare n exemplul dat ntre tabelul de autori i cel de cri. Astfel unscriitor poate fi autor la mai multe cri iar o carte poate avea mai muli autori (CodA_2respectiv

    NrInv_3n exemplul din schem).

    Nr_pers Nume Prenume Cod_ang

    101 Pop Ioan 13

    103 Ionescu Lucia 12

    Autori Cri

    CodA_1

    CodA_2

    CodA_3

    CodA_4

    CodA_5

    CodA_6

    CodA_7

    NrInv_1

    NrInv_2

    NrInv_3

    NrInv_4

    NrInv_5

    NrInv_6

    NrInv_7

    NrInv_8

    NrInv_9

    Angajati Soti

  • 7/25/2019 I_IF.02_Structurarea Bazelor de Date

    6/10

    INFORMATIC*I* IF.02. Structurarea bazelor de date

    - 6 -

    n astfel de situaii se va proceda la crearea unui tabel suplimentar, de legtur, care vatransforma relaia evideniat (many to many) n relaii one to many. Fiecare articol din tabelul delegtur va conine o pereche de chei strine, una fiind cheie primar n primul tabel i una n aldoilea tabel:

    IA.02.5. Aplicaii

    1. Pornii aplicaia Oracle SQL Developeri creai n schema bibliourmtoarele tabele:

    cititori

    cod_cit number (4, 0)cnp number (13, 0)

    nume varchar2 (30)prenume varchar2 (20)localitatea varchar2 (30)judetul varchar2 (20)adresa varchar2 (80)telefon number (10, 0)e_mail varchar2 (50)

    cheie primar: cod_cit

    Obs.

    e-mail-ul poate fi null data_rest poate fi null

    autcarti imprumut

    cod_carte number (4, 0) cod_carte number (4, 0)cod_autor number (4, 0) cod_cit number (4, 0)

    data_imprumut datedata_rest date

    chei strine: cod_carte, cod_autor chei strine: cod_carte, cod_cit

    CodA_1

    Autori CriTab. de legtur

    CodA_2

    CodA_3

    CodA_4

    CodA_5

    CodA_6

    CodA_7

    CodA_2

    CodA_2

    CodA_2

    CodA_3

    CodA_6

    NrInv _1NrInv_1

    NrInv _2

    NrInv _3

    NrInv _4

    NrInv _5

    NrInv _6

    NrInv _7

    NrInv _8

    NrInv _3

    NrInv _3

    NrInv _3

    NrInv _8

    1 1

  • 7/25/2019 I_IF.02_Structurarea Bazelor de Date

    7/10

    INFORMATIC*I* IF.02. Structurarea bazelor de date

    - 7 -

    formatul datei este ZZ-LLL-AA, de ex. 01-OCT-2006

    2. Introducei n aceste tabele urmtoarele nregistrri:

    - n tabelul cititori:1 ||1246845691231 || Popescu || Marin || Turda || Cluj || str. Mica, nr. 123 || 0264122112 || [email protected]

    2 || 2342356786431 || Maniu || Laura || Dej || Cluj || str. Zambilelor, nr. 321 || 0744123456 || [email protected]

    3 || 2897654356789 || Rotaru || Clin || Sighisoara || Mure || str. Grii, nr. 43 || 0265012021 || [email protected]

    - n tabelul autcarti:

    (1; 1), (2; 2), (3; 3), (4; 4)

    - n tabelul imprumut:

    1; 1; 10 octomrie 2001; 15 octombrie 20011; 2; 10 februarie 2007; -etc.

    3. Realizai o copie a schemei biblio dup modelul urmtor:

    Selectai n Oracle SQL Developer opiunea Tools / Database Export:

    n fereastra afiat (pasul 1) selectai schema i indicai fiierul care va conine

    copia:

  • 7/25/2019 I_IF.02_Structurarea Bazelor de Date

    8/10

    INFORMATIC*I* IF.02. Structurarea bazelor de date

    - 8 -

    n paii urmtori(25) selectai butonul Next fr a modifica opiunile implicite:

  • 7/25/2019 I_IF.02_Structurarea Bazelor de Date

    9/10

    INFORMATIC*I* IF.02. Structurarea bazelor de date

    - 9 -

    Pentru verificarea salvrii schemei tergei fiierele definite anterior.Comanda de

    tergere a unui tabel este DROP i poate fi aceesat pornind de la opiunea Tabledin

    meniul contextual aferent tabelului de suprimat, ca n exemplul urmtor:

    Observaie: Stergerea se va realiza ntr-o ordine permis de integritatea referenial. n exemplul dat

    se ncepe cu tabelul Copiisi apoi se terge tabelulAngajati.

    Deschidei fiierul care conine salvarea realizat (File / Open):

  • 7/25/2019 I_IF.02_Structurarea Bazelor de Date

    10/10

    INFORMATIC*I* IF.02. Structurarea bazelor de date

    - 10 -

    Executai comenzile din fiierul deschis selectnd butonul evideniat n inaginea de

    mai jos:

    Observaie: Aplicaia va cere indicarea conexiuni folosite la restaurarea obiectelor din fiierul de

    comenzi:

    Pentru finalizarea operaiilor se apas butonul evideniat n imaginea urmtoare

    (Commit) . Dup deconectarea la serve i reconectare, tabelele terse anterior reapar.