baze de date cursul spiru haret

Download Baze de Date Cursul Spiru Haret

If you can't read please download the document

Upload: horeth

Post on 23-Jun-2015

205 views

Category:

Documents


2 download

TRANSCRIPT

UNIVERSITATEA SPIRU HARET FACULTATEA DE MATEMATIC - INFORMATIC

CURS:

Baze de DateAnul III, Semestrul I, la toate formele de nvmnt Semestrul I , 2 curs, 2 laborator Lector Dr. FLORENTINA Rodica Niculescu

TIP CURS : Obligatoriu la Secia de matematic Informatic,

DURATA: Titular: E-MAIL:I.

[email protected]

CONINUTUL TEMATIC AL DISCIPLINEI

Notiuni introductive n domeniul bazelor de date (entitate, relatie, atribut, limbaje pentru baze de date, componenete i arhitectura unui sistem de gestiune a bazelor de date (SGBD), evoluia SGBD-urilor) Proiectarea bazelor de date simple Proiectarea bazelor de date relaionale (modelarea Entitate-Relaie, diagrama E/R, modelul relational, regulile lui Codd, caracteristicile modelului relational, normalizare, forme normale, dependene funcionale) Limbaje de manipulare a datelor relaionale Limbajul SQL

MODUL DE

STABILIRE A NOTEI FINALE:

Nota de la testul gril (pe calculator).

SINTEZE ASUPRA PROGRAMEI ANALITICEMaterialul este structurat n 2 pri, astfel:Partea I. Concepte ale bazelor de date relaionale Partea a_II_a. SQL

Partea I. Concepte ale bazelor de date relaionalen aceast parte se face o prezentare general a conceptelor bazelor de date relaionale. O baz de date este o colecie de informaii interrelaionate gestionate ca o singur unitate. A ceast definiie este foarte larg, deoarece exist mari diferene ntre concepiile diferiilor productori care pun la dispoziie sisteme de baze de date. De exemplu, Oracle Corporation definete o baz de date ca fiind o colecie de fiiere fizice gestionate de o singur instan (copie) a produsului software pentru baze de date, n timp ce Microsoft definete o baz de date SQL Server ca fiind o colecie de date i alte obiecte. Un obiect al bazei de date este o structur de date denumit, stocat n baz de date, cum ar fi un tabel, o vizualizare sau un index.

Exist mari diferene ntre implementrile furnizorilor de baze de date. n majoritatea sistemelor de baze de date, datele sunt stocate n mai multe fiiere fizice, dar n Microsoft Access toate obiectele bazei de date, mpreun cu datele care aparin unei baze de date sunt stocate ntr-un singur fiier fizic.(Un fiier este o colecie de nregistrri nrudite stocate ca o singur untiate de sistemul de operare al calculatorului.) Totui, unul dintre principalele avantaje ale bazelor de date relaionale este faptul c detaliile de implementare fizic sunt separate de definiiile logice ale obiectelor bazei de date, astfel nct majoritatea utilizatorilor bazei de date nu au nevoie s tie unde (i cum) sunt stocate obiectele bazei de date n sistemul de fiiere al calculatorului. De fapt , pe msur ce vei nva limbajul SQL , vei vedea c nu este nevoie s specificai numele unui fiier fizic ntr-o instruciune SQL dect atunci cnd definii sau modificai chiar obiectele bazei de date.

Sistem de gestionare a bazei de date (DBMS)Un sistem de gestionare a bazei de date (DBMS database management system) este un produs software furnizat de productorul bazei de date. Produse software precum Microsoft Access, Microsoft SQL Server, Oracle Database,Sybase, DB2,INGRES, MySQL i Postgre SQL fac parte din categoria DBMS sau, mai corect, DBMS relaionale (RDBMS). RDBMS-urile sunt cunoscute i sub numele de SGBD-uri. Ambele prescurtri vor fi folosite n acest expunere. Bazele de date relaionale sunt definite i prezentate n seciunea urmtoare a acestu capitol. Sistemul DBMS pune la dispoziie toate serviciile de baz necesare pentru organizarea i ntreinerea bazei de date, inclusiv urmtoarele: Transferarea datelor n i din fiierele fizice de date, n funcie de cerine. Gestionarea accesului concurenial la date al mai multor utilizatori , inclusiv prevenirea conflictelor care ar putea fi cauzate de actualizrile simultane. Gestionarea tranzaciilor, astfel nct toate modificrile fcute asupra bazei de date printr-o tranzacie s fie executate ca o singur unitate.Cu alte cuvinte, dac tranzacia reuete, toate modificrile efectuate de tranzacie sunt nregistrate n baz de date; dac tranzacia eueaz, nici una dintre modificri nu este nregistrat n baz de date.Totui, reinei ca unele sisteme RDBMS nu asigur suportul pentru tranzacii. Accept un limbaj de interogare, care reprezint sistemul de comenzi folosit de utilizator pentru a obine date din baz de date.SQL este principalul limbaj folosit pentru sistemele DBMS relaionale i subiectul principal al aceste cri. Funcii pentru salvarea bazei de date i pentru refacerea bazei de date n urma erorilor. Mecanisme de securitate pentru mpiedicarea accesului neautorizat la date i modificarea acestora.

Baz de date relaionalO baz de date relaional este o baz de date care respect modelul relaional, dezvoltat de Dr.E.F.Codd. Modelul relaional prezint datele sub forma familiarelor tabele bidimensionale, similar cu o foaie de calcul tabelar. Spre deosebire de o foaie de calcul tabelar, nu este obligatoriu ca datele s fie stocate ntr-o form tabelar, iar

modelul permite i combinarea tabelelor (crearea uniunilor (joining), n terminologia relaional) pentru formarea vizualizarilor, care sunt prezentate tot ca tabele bidimensionale. Flexibilitatea extraordinar a bazelor de date relaionale este dat de posibilitatea de a folosi tabelele independent sau n combinaii, fr nici o ierarhie sau secvena predefinita n care trebuie s se fac accesul la date. Un model este o reprezentare a obiectelor i evenimentelor lumii reale i a asocierilor dintre ele. De fapt, el reprezint o abstracie asupra aspectelor semnificative ale unei ntreprinderi, ale unui sistem real, ignornd proprietile accidentale. Modelul este cel pe care utilizatorii trebuie s-l cunoasc; implementarea unui model este cea pe care utilizatorii nu este necesar s o cunoasc. Diferena dintre model i implementare este, de fapt, un caz special i important al deosebirii uzuale dintre logic i fizic. Modelele se impun prin sintaxa i prin semantica lor i, din acest punct de vedere, exist trei tipuri fundamentale de modele: modele care descriu aspectele statice ale procesului modelat; modele care descriu aspectele dinamice ale procesului modelat; modele care descriu aspectele funcionale ale procesului modelat. Un model de date reprezint o colecie integrat de concepte necesare descrierii: datelor, relaiilor dintre ele, constrngerilor existente asupra datelor sistemului real analizat. Modelarea unei baze de date permite trecerea de la percepia unor fapte din lumea real la reprezentarea lor prin date. Modelul de date trebuie s reflecte fidel fenomene ale lumii reale, s urmreasc evoluia acestei lumi i comunicarea dintre fenomenele lumii reale. Modelul trebuie s asigure conceptele de baz care permit proiectantului bazei de date i utilizatorilor s comunice, fr ambiguiti, cunotinele lor privind funcionarea i organizarea modelului real analizat. Prin urmare, un model de date trebuie s reprezinte datele i s le fac nelese. n esen, modelul de date are trei componente: mulime de reguli conform crora sunt construite bazele de date (partea structural); mulime de operaii permise asupra datelor, care sunt utilizate pentru reactualizarea sau regsirea datelor (partea de prelucrare); mulime de reguli de integritate, care asigur coerena datelor. Abordarea general a problemei modelrii semantice a datelor se face n patru etape. Se identific o mulime de concepte semantice care sunt utile n descrierea lumii reale. Se presupune c lumea real (modelul real analizat) este format din entiti care au anumite proprieti, c fiecare entitate are o identitate, c exist legturi, corelaii ntre entiti. Conceptul de corelaie, ca i cel de entitate, este util, n mod intuitiv, la descrierea modelului. Se caut o mulime de obiecte formale, simbolice care sunt utilizate pentru reprezentarea conceptelor semantice anterioare. Se dau reguli de integritate formale i generale (constrngeri) care s reflecte restriciile la care este supus modelul.

Se definete o mulime de operatori formali prin care pot fi prelucrate i analizate obiectele formale.

Modelul entitate-relaieUna dintre cele mai cunoscute abordri ale modelrii semantice (cu siguran una dintre cele mai utilizate) este cea bazat pe modelul entitate-relaie (E/R). Acesta a fost introdus de ctre P.P. Chen n 1976 i rafinat de atunci n diverse moduri de ctre acesta i de muli ali cercettori, ca un model de date conceptual, pentru a uura proiectarea bazelor de date. Pentru reprezentarea grafic a modelului sunt utilizate diagramele E/R, care sunt modele neformalizate pentru reprezentarea unui model, unui sistem din lumea real. Diagramele E/R constituie o tehnic de reprezentare a structurii logice a bazei de date, ntr-o manier grafic. Aceste diagrame ofer un mijloc simplu i inteligibil de comunicare a caracteristicilor importante ale designului unei anumite baze de date. Diagrama E/R este un model de date conceptual de nivel nalt, independent de platforma hardware utilizat i de tipul SGBD-ului. Modelul este constituit din concepte care descriu structura bazei de date i tranzaciile de regsire sau reactualzare asociate. Popularitatea modelului E/R ca modalitate de abordare a proiectrii bazelor de date poate fi atribuit n principal tehnicii de realizare a diagramelor E/R. Aceast tehnic, ca i modelul E/R nsui, a evoluat de-a lungul timpului datorit noilor problematici care au aprut n proiectarea bazelor de date. Baza de date poate fi definit ca o mulime de date ce modeleaz un sistem real. Acest sistem este format din obiecte legate ntre ele. Modelul E/R mparte elementele unui sistem real n dou categorii: entiti i relaii (legturi, asocieri) ntre aceste entiti. Entitiile i legturile au anumite caracteristici, numite atribute. Nu trebuie confundat conceptul de relaie, n sensul de asociere, care intervine n definirea diagramei E/R cu conceptul de relaie care este specific modelului relaional.

EntitateEntitatea este un obiect sau un concept, care este semnificativ pentru modelul real analizat. O entitate poate fi dependent (slab), existena sa depinznd de alt entitate sau independent (tare), caz n care ea nu depinde de existena altei entiti. Entitatea poate fi persoan, loc, concept, activitate etc. Prin urmare, ea poate fi un obiect cu existen fizic, real sau poate fi un obiect cu existen conceptual, abstract. Cheia primar este un identificator unic n cadrul entitii, fcnd distincie ntre valori diferite ale acesteia.

Cheia primar: trebuie s fie unic i cunoscut la orice moment; trebuie s fie controlat de administratorul bazei; trebuie s nu conin informaii descriptive, s fie simpl, fr ambiguiti; s fie stabil; s fie familiar utilizatorului.

Observaii Entitile devin tabele n modelele relaionale. n general, entitile se scriu cu litere mari. Entitile sunt substantive, dar nu orice substantiv este o entitate. Trebuie ignorate substantivele nerelevante. Pentru fiecare entitate este obligatoriu s se dea o descriere detaliat. Nu pot exista, n aceeai diagram, dou entiti cu acelai nume, sau o aceeai entitate cu nume diferite. DEPARTAMENT SARCINA

lucreaza_in

conduce apartine_la

SALARIAT

atasat_la

PROIECT

RelaieRelaia (asocierea) este o comunicare ntre dou sau mai multe entiti. O valoare a unei relaii este o comunicare ntre valorile entitilor pe care le leag. Relaia exprim un raport care exist ntre aceste entiti. Gradul unei relaii este dat de numrul de entiti participante ntr-o relaie (de exemplu, relaie binar, ternar, cvadrupl, n-ar). Existena unei relaii este subordonat existenei entitilor pe care le leag. ntre dou entiti pot exista mai multe relaii. O relaie n care aceeai entitate particip mai mult dect o dat n diferite roluri definete o relaie recursiv. Uneori, aceste relaii sunt numite unare. Observaii: n modelul relaional, relaiile devin tabele speciale sau coloane speciale care refer chei primare. Relaiile sunt verbe, dar nu orice verb este o relaie. Pentru fiecare relaie este important s se dea o descriere detaliat. n aceeai diagram pot exista relaii diferite cu acelai nume. n acest caz, ele sunt difereniate de ctre entitile care sunt asociate prin relaia respectiv. Pentru fiecare relaie trebuie stabilit cardinalitatea (maxim i minim) relaiei, adic numrul de tupluri ce aparin relaiei. poate (cardinalitate maxim) trebuie (cardinalitate minima) EXEMPLE: Ci salariai pot lucra ntr-un departament? Muli! n cte departamente poate lucra un salariat? In cel mult unul!

Relaia SALARIAT_lucreaza_in_DEPARTAMENT are cardinalitatea maxim many-one (n:1). Exemplu: Ci salariai trebuie s conduc un departament? Cel puin unul! Cte departamente trebuie s conduc un salariat? Zero! Relaia SALARIAT_conduce_DEPARTAMENT are cardinalitatea minim one-zero (1:0). Asupra entitilor participante ntr-o relaie pot fi impuse constrngeri care trebuie s reflecte restriciile care exist n lumea real asupra relaiilor. O clas de constrngeri, numite constrngeri de cardinalitate, este definit de numrul de nregistrri posibile pentru fiecare entitate participant (raport de cardinalitate). Cel mai ntlnit tip de relaii este cel binar, iar n acest caz rapoartele de cardinalitate sunt, n general, one-to-one (1:1), one-to-many (1:n) sau many-to-many (m:n).

AtributAtributul este o proprietate descriptiv a unei entiti sau a unei relaii. De exemplu, numele , genul unei film, sunt atribute al entitii FILM. Atributele pot fi simple (pretul de nchiriere a unui film), compuse (de exemplu, numele filmului), cu valori multiple (de exemplu, limbile n care e tradus un film), derivate (de exemplu, vrsta unei persoane se obine din data naterii). Observaii Trebuie fcut distincia ntre atribut care uzual devine coloan n modelele relaionale i valoarea acestuia, care devine valoare n coloane. Atributele sunt substantive, dar nu orice substantiv este atribut. Fiecrui atribut trebuie s i se dea o descriere complet n specificaiile modelului (exemple, contraexemple, caracteristici). Pentru fiecare atribut trebuie specificat numele, tipul fizic (integer, float, char etc.), valori posibile, valori implicite, reguli de validare, constrngeri, tipuri compuse.

Diagrama entitate- relaiePentru proiectarea diagramei entitate-relaie au fost stabilite anumite reguli entitile sunt reprezentate prin dreptunghiuri; relaiile dintre entiti sunt reprezentate prin arce neorientate; atributele care reprezint chei primare trebuie subliniate sau marcate prin simbolul # sau (pk), plasat la sfritul numelui acestor atribute; cardinalitatea minim este indicat n paranteze, iar cardinalitatea maxim se scrie fr paranteze; nu este necesar s fie specificate, n cadrul diagramei, toate atributele.SALARIAT cod_salariat nume prenume sex salariu atasat_la data_initiala functia PROIECT nr_proiect descriere buget_alocat

M(0)

M(0)

1apartine_la

M(0) 1

conduce

lucreaza_in

M11

1(0)

DEPARTAMENT cod_departament nume nr_cladire

SARCINA nr_proiect nr_sarcina data_inceperii

Diagrama Entitate/relaie

Cazuri speciale de entiti, relaii, atribute i modul lor de reprezentare n cadrul diagramei entitate-relaie.1. Entitate dependent nu poate exista n mod independent (SARCINA

depinde de PROIECT). Cheia primar a unei entiti dependente include cheia primar a sursei (nr_proiect) i cel puin o descriere a entitii (nr_sarcina). Entitatea dependent se deseneaz prin dreptunghiuri cu linii mai subiri.2. Motenirea atributelor. Subentitate (subclas) submulime a unei alte

entiti, numit superentitate (superclas) (SALARIAT < > PROGRAMATOR). Subentitatea se deseneaz prin dreptunghiuri incluse n superentitate. Exist o relaie ntre o subentitate i o superentitate, numit ISA, care are cardinalitatea maxim 1:1 i minim 1:0. Cheile primare, atributele i relaiile unei superentiti sunt valabile pentru orice subentitate. Afirmaia reciproc este fals. 3. ntr-o diagram E/R se pot defini relaii recursive.4. Relaie sau atribut? Dac un atribut al unei entiti reprezint cheia primar a

unei alte entiti, atunci el refer o relaie (cod_departament n tabelul SALARIAT).5. Entitate sau relaie? Se cerceteaz cheia primar. Dac aceasta combin cheile

primare a dou entiti, atunci este vorba de o relaie. (cheia primar a relaiei asociat_la combin cod_salariat cu nr_proiect, prin urmare, SALARIAT_asociat la_PROIECT va defini o relaie i nu o entitate).

Probleme1.S se creeze modelul E/R pentru gestiunea activitilor de mprumut dintr-o bibliotec S-a presupus (restrictiv) c ntr-o zi un cititor nu poate mprumuta, de mai multe ori, aceeai carte. Entitile i relaiile care intervin n acest model sunt urmtoarele: 1. CARTE (entitate independent) orice carte care se gsete n inventarul bibliotecii. Cheia primar este atributul codel. 2. CITITOR (entitate independent) orice cititor care poate mprumuta cri. Cheia primar este atributul codec. 3. DOMENIU (entitate independenta) domeniul cruia i aparine o carte. Cheia primar este atributul coded.

4. 5.

IMPRUMUTA relaie avnd cardinalitatea m:m care leag entitile CITITOR i CARTE. APARTINE relaie care leag atributele CARTE i DOMENIU. Relaia are cardinalitatea maxim m:1, iar cardinalitatea minim 1:1.

M(1)

M(0) imprumuta

CIT ITORcodec# nume dep

CAR TEcodel# titlu autor pret nrex

M(0) apartine

1

DOM ENIUcoded# intdom

2.Evidena colilor de oferi din Romania. Completai relaiile (lucreaza_la, conduce, sustine, asista, instruieste) dintre entiti i specificai cardinalitatea!

SCOALA cod_scoala# INSTRUCTOR cod_instructor#

CLIENT cod_client#

EXAMEN cod_examen#

MASINA cod_masina#

EXAMINATOR cod_examinator#

3. Campionatele de fotbal ale diferitelor ri

ECHIPA Cod_echipa# Nume Oras 2 joaca M(1) MECI Tara# Nr_etapa# Cod_meci# M(1) apartine_de 1 ETAPA Tara Nr_etapa M(1) atasata_la 1 CAMPIONAT Tara#

M(1)

sustine M(1)

SPONSOR M(1) Cod_sponsor# Nume

Modelul relaionalModelul relaional a fost conceput i dezvoltat de E.F. Codd. El este un model formal de organizare conceptual a datelor, destinat reprezentrii legturilor dintre date, bazat pe teoria matematic a relaiilor. Modelul relaional este alctuit numai din relaii i prin urmare, orice interogare asupra bazei de date este tot o relaie. Cercetarea n domeniu 3 mari proiecte (System R, INGRES, PRTV) Caliti: este simplu;

riguros din punct de vedere matematic; nu este orientat spre sistemul de calcul.

Modaliti pentru definirea unui SGBD relaional: prezentarea datelor n tabele supuse anumitor operaii de tip proiecie, selecie, reuniune, compunere, intersecie etc. un sistem de baze de date ce suport un limbaj de tip SQL Structured Query Language; un sistem de baze de date care respect principiile modelului relaional introdus de E.F. Codd. structura relaional a datelor; operatorii modelului relaional; regulile de integritate care guverneaz folosirea cheilor n model.

Caracteristicile unui model relaional:

Aceste trei elemente corespund celor trei componente ale ingineriei software: informaie, proces, integritate. Structura datelor Definirea noiunilor de domeniu, relaie, schem relaional, valoare null i tabel vizualizare (view). Conceptele utilizate pentru a descrie formal, uzual sau fizic elementele de baz ale organizrii datelor sunt date n urmtorul tabel: Formal relaie tuplu atribut domeniu Uzual tablou linie coloan tip de dat Fizic fiier nregistrare cmp tip de dat

Reguli de integritate sunt aseriuni pe care datele coninute n baza de date trebuie s le satisfac. Exist trei tipuri de constrngeri structurale (de cheie, de referin, de entitate) ce constituie mulimea minimal de reguli de integritate pe care trebuie s le respecte un SGBD relaional. Restriciile de integritate minimale sunt definite n raport cu noiunea de cheie a unei relaii. O mulime minimal de atribute ale cror valori identific unic un tuplu ntr-o relaie reprezint o cheie pentru relaia respectiv. Fiecare relaie are cel puin o cheie. Una dintre cheile candidat va fi aleas pentru a identifica efectiv tupluri i ea va primi numele de cheie primar. Cheia primar nu poate fi reactualizat. Atributele care reprezint cheia primar sunt fie subliniate, fie urmate de semnul #.

O cheie identific linii i este diferit de un index care localizeaz liniile. O cheie secundar este folosit ca index pentru a accesa tupluri. Un grup de atribute din cadrul unei relaii care conine o cheie a relaiei poart numele de supercheie. Fie schemele relaionale R1(P1, S1) i R2(S1, S2), unde P1 este cheie primar pentru R1, S1 este cheie secundar pentru R1, iar S1 este cheie primar pentru R2. n acest caz, vom spune c S1 este cheie extern (cheie strin) pentru R1. Modelul relaional respect trei reguli de integritate structural. Regula 1 unicitatea cheii. Cheia primar trebuie s fie unic i minimal. Regula 2 integritatea entitii. Atributele cheii primare trebuie s fie diferite de valoarea null. Regula 3 integritatea referirii. O cheie extern trebuie s fie ori null n ntregime, ori s corespund unei valori a cheii primare asociate. Transformarea entitilor Entitile independente devin tabele independente. Cheia primar nu conine chei externe. Entitile dependente devin tabele dependente. Cheia primar a entitilor dependente conine cheia primar a entitii de care depinde (cheie extern) plus unul sau mai multe atribute adiionale. Subentitile devin subtabele. Cheia extern se refer la supertabel, iar cheia primar este aceast cheie extern (cheia primar a subentitii PROGRAMATOR este cod_salariat care este o cheie extern). Transformarea relaiilor Relaiile 1:1 i 1:n devin chei externe. Relaia conduce devine coloan n tabelul DEPARTAMENT, iar relaia lucreaza_in devine coloan n tabelul SALARIAT. Simbolul indic plasamentul cheii externe, iar simbolul exprim faptul c aceast cheie extern este coninut n cheia primar. Relaia 1:1 plaseaz cheia extern n tabelul cu mai puine linii. Relaia m:n devine un tabel special, numit tabel asociativ, care are dou chei externe pentru cele dou tabele asociate. Cheia primar este compunerea acestor dou chei externe plus eventuale coloane adiionale. Tabelul se deseneaz punctat. Relaiile de tip trei devin tabele asociative. Cheia primar este compunerea a trei chei externe plus eventuale coloane adiionale.

Transformarea atributelor

Un atribut singular devine o coloan.

Atributele multiple devin tabele dependendente ce conin cheia primar a entitii i atributul multiplu. Cheia primar este o cheie extern, plus una sau mai multe coloane adiionale. Entitile devin tabele, iar atributele lor devin coloane n aceste tabele. Ce devin atributele relaiilor? Pentru relaii 1:1 i 1:n, atributele relaiilor vor aparine tabelului care conine cheia extern, iar pentru relaii m:n i de tipul trei, atributele vor fi plasate n tabelele asociative.

SALARIAT cod_salariat# salariu nume sex

job_cod ATASAT_LA cod_salariat# nr_proiect# functie

PROIECT nr_proiect# descriere buget_alocat

AGENT_TERITORIAL zona comision

PROGRAMATOR limbaj nivel

apartine_la

conduce

lucreaza_in

casatorit

SARCINA nr_proiect# nr_sarcina# data_inceperii stare

DEPARTAMENT cod_departament# nume nr_cladire cod_salariat

TELFON cod_salariat# nr_telefon#

Schemele relaionale corespunztoare acestei diagrame conceptuale sunt urmtoarele: SALARIAT(cod_salariat#, forma_plata, nr_depart); nume, prenume, sex, job_cod, cod_sot,

DEPARTAMENT(cod_departament#, nume, numar_cladire, cod_sal); ATASAT_LA(cod_salariat#, nr_proiect#, functia); PROIECT(nr_proiect#, descriere, buget_alocat); SARCINA(nr_proiect#, nr_sarcina, data_inceperii, stare);

AGENT_TERITORIAL(cod_salariat#, zona, comision); PROGRAMATOR(cod_salariat#, limbaj, nivel); TELEFON(cod_salariat#, nr_telefon#). Regulile lui Codd

Caracteristici ale modelului relaional: nu exist tupluri identice; ordinea liniilor i a coloanelor este arbitrar; articolele unui domeniu sunt omogene; fiecare coloan definete un domeniu distinct i nu se poate repeta n cadrul aceleiai relaii; toate valorile unui domeniu corespunztoare tuturor cazurilor nu mai pot fi descompuse n alte valori (sunt atomice). Avantajele modelului relaional: fundamentare matematic riguroas; independen fizic a datelor; posibilitatea filtrrilor; existena unor structuri de date simple; realizarea unei redundane minime; suplee n comunicarea cu utilizatorul neinformatician. Ca limite ale modelului relaional putem meniona: rmne totui redundan, ocup spaiu, apar fenomene de inconsisten, nu exist mecanisme pentru tratarea optim a cererilor recursive, nu lucreaz cu obiecte complexe, nu exist mijloace perfecionate pentru exprimarea constrngerilor de integritate, nu realizeaz gestiunea totala a datelor distribuite, nu realizeaz gestiunea cunotinelor.

n anul 1985, E.F. Codd a publicat un set de 13 reguli n raport cu care un sistem de gestiune a bazelor de date poate fi apreciat ca relaional. Nici un sistem de gestiune a bazelor de date pus n vnzare pe piaa comercial nu respect absolut toate regulile definite de Codd, dar acest lucru nu mpiedic etichetarea acestor sisteme drept relaionale. Nu trebuie apreciat un SGBD ca fiind relaional sau nu, ci msura n care acesta este relaional, deci numrul regulilor lui Codd pe care le respect. Regula 1 regula gestionrii datelor. Un SGBD relaional trebuie s fie capabil s gestioneze o baz de date numai prin posibilitile sale relaionale.

Regula 2 regula reprezentrii informaiei. ntr-o baz de date relaional, informaia este reprezentat la nivel logic sub forma unor tabele ce poart numele de relaii. Regula 3 regula accesului garantat la date. Fiecare valoare dintr-o baz de date relaional trebuie s poat fi adresat n mod logic printr-o combinaie format din numele relaiei, valoarea cheii primare i numele atributului. Regula 4 regula reprezentrii informaiei necunoscute. Un sistem relaional trebuie s permit utilizatorului definirea unui tip de date numit null pentru reprezentarea unei informaii necunoscute la momentul respectiv. Regula 5 regula dicionarelor de date. Asupra descrierii bazelor de date (informaii relative la relaii, vizualizri, indeci etc.) trebuie s se poat aplica aceleai operaii ca i asupra datelor din baza de date. Regula 6 regula limbajului de interogare. Trebuie s existe cel puin un limbaj pentru prelucrarea bazei de date. Regula 7 regula de actualizare a vizualizrii. Un SGBD trebuie s poat determina dac o vizualizare poate fi actualizat i s stocheze rezultatul interogrii ntr-un dicionar de tipul unui catalog de sistem. Regula 8 regula limbajului de nivel nalt. Regulile de prelucrare asupra unei relaii luat ca ntreg sunt valabile att pentru operaiile de regsire a datelor, ct i asupra operaiilor de inserare, actualizare i tergere a datelor. Regula 9 regula independenei fizice a datelor: Programele de aplicaie i activitile utilizatorilor nu depind de modul de depunere a datelor sau de modul de acces la date. Regula 10 regula independenei logice a datelor. Programele de aplicaie trebuie s fie transparente la modificrile de orice tip efectuate asupra datelor. Regula 11 regula independenei datelor din punct de vedere al integritii. Regulile de integritate trebuie s fie definite ntr-un sublimbaj relaional, nu n programul de aplicaie. Regula 12 regula independenei datelor din punct de vedere al distribuirii. Distribuirea datelor pe mai multe calculatoare dintr-o reea de comunicaii de date, nu trebuie s afecteze programele de aplicaie. Regula 13 regula versiunii procedurale a unui SGBD. Orice component procedural a unui SGBD trebuie s respecte aceleai restricii de integritate ca i componenta relaional. Deoarece regulile lui Codd sunt prea severe pentru a fi respectate de un SGBD operaional, s-au formulat criterii minimale de definire a unui sistem de gestiune relaional. Un SGBD este minimal relaional dac: toate datele din cadrul bazei sunt reprezentate prin valori n tabele; nu exist pointeri observabili de ctre utilizator;

sistemul suport operatorii relaionali de proiecie, selecie i compunere natural, fr limitri impuse din considerente interne. Un SGBD este complet relaional dac este minimal relaional i satisface n plus condiiile:

sistemul suport restriciile de integritate de baz (unicitatea cheii primare, constrngerile refereniale, integritatea entitii). sistemul suport toate operaiile de baz ale algebrei relaionale.

Exemplu pentru nsuirea formelor normale i a instruciunilor SQLComponentelor fundamentale ale bazelor de date relaionale sunt utilizate pentru a construi obiectele bazelor de dae pe care le vom folosi . Instruciunile SQL folosite pentru crearea acestor componente ale bazei de date sunt prezentate n parte.

TabeleUnitatea primar de stocare a datelor ntr-o baz de date relaional este tabelul, care este o structur bidimensional compus din rnduri i coloane. Fiecare tabel reprezint o entitate, ceea ce nseamn o persoan, un loc sau un lucru care trebuie s fie reprezentat n baza de date, cum ar fi un client, un cont bancar sau o tranzacie bancar. Fiecare rnd al tabelului reprezint o apariie a entitii. Figura 1-1 reprezint listingul parial al unui tabel numit FILM(filme). Tabelul FILM este parte a unei baze de date pentru un magazin de produse video, folosit ca exemplu n toat aceast curs. Tabelul FILM conine date care descriu filmele disponibile n magazinul de produse video. Fiecare rnd din tabel reprezint un film, iar fiecare coloan reprezint o caracteristic a filmului respectiv, cum ar fi titlul filmului sau categoria MPAA(Motion Picture Associationof America care a fost fondat n 1972 n America ca asociaie a productorilor de film pe lng industria cinematografic)FILM_I D FILM_C OD_GE N Drama ActAv Comedie ActAv ActAv ActAv MPA A_CO DRAT ING R R PG-13 PG-13 R PG-13 FILM_NUME PRET_INCHIR _VHS PRET_INCHIR _DVD AN_P RODU S 2003 2003 2003 2003 2003 2003

1 2 3 4 5 6

7 8 9

Drama ActAv ActAv

PG-13 R PG-13

10 11 12

Drama Romantic Comedie

R PG-13 PG-13

Mystic River The Last Samurai Something`s Gotta Give The Italian Job Kill Bill: Vol 1 Pirates of the Caraibbean: The Curse of the Black Pearl Big Fish Man on Fire Master and Commander: The Far Side of the World Lost in translation Two Weeks Notice 50 First Dates

58.97 15.95 14.95 11.95 24.99 29.99

19.96 19.96 29.99 19.99 29.99 29.99

14.95 50.99 12.98

19.94 29.98 39.99

2003 2004 2003

49.99 6.93 9.95

14.98 14.97 19.94

2003 2002 2004

13 14 15 16 17 18 19 20

Comedie Drama Drama Comedie Romantic Drama ActAv Strain

PG-13 R R PG-13 PG-13 R PG-13 R

Matchstick Men Could Mountain Road to Perdition The School of Rock 13 Going on 30 Monster The Day After Tomorrow Das Boot

6.93 24.99 9.99 11.69 14.94 24.99 12.98 17.99

19.97 29.99 14.99 29.99 28.95 29.99 29.98 19.94

2003 2003 2003 2004 2003 2004 1981

Figura 1-1 Listingul tabelului FILM Se poate observa asemnarea dintre tabelele bazelor de date relaionale i foile de calcul tabelar. Totui, bazele de date relaionale ofer o flexibilitate mult mai mare n organizarea i afiarea informaiilor.

RelaiiRelaiile reprezint asocierile dintre tabelele bazelor de date relaionale. Dei fiecare tabel relaional poate exista independent, esena bazelor de date este tocmai stocarea informaiilor ntre care exist legturi. De exemplu, pe lng filmele propriuzise, putei stoca informaii despre categoriile folosite de magazin pentru organizarea inventarelor de filme. n acelai timp, putei stoca i informaii despre copiile fiecrui film, inclusiv data la care a fost primit copia i formatul acesteia, cum ar fi DVD sau VHS. Prin folosirea realaiilor, putei asocia tabelele nrudite, ntr-un mod formal, uor de folosit astfel nct putei s combinai date din tabele multiple n aceeai interogare a bazei de date, dar pstrnd flexibilitatea de a include numai informaiile care v intereseaz.Posibilitatea de a selecta din baza de date numai informaiile care v intereseaz v permite s ajustai informaiile din baz de date n funcie de cerinele specifice ale persoanelor sau aplicaiilor care au acces la baza de date. Figura 1-2 prezinta patru tabele din baza de date a magazinului de produse video si relaiile dintre acestea, ntr-un format cunoscut sub numele de diagrama de relatii a entitatilor (ERD Entity Relationship Diagram). Fiecare dreptunghi din diagrama reprezint un tabel relaional, cu numele tabelului scris deasupra liniei orizontale si coloanele tabelului enumerate pe verticala , in portiunea principala a dreptunghiului. Relaiile sunt implementate folosind coloane corespondente din cele dou tabele participante. n diagrama ERD coloana sau coloanele subliniate din fiecare tabel. UN tabel poate avea o singur cheie primar. Totui , o cheie primar poate fi compus din mai multe coloane, dac aceasta este calea de formare a unei chei unice. Dac o cheie primar este folosit ntr-un alt tabel pentru stabilirea unei relaii, poart numele de chieie extern. n figur 1-2, observai coloanele cheie extern folosite n tabelul FILM pentru crearea relaiilor cu tabelele FILM_GENRE i MPAA_RATING i marcate cu identificatoarele i n dreapta numelui coloanei cheie extern. i coloana COD_LIMBA este marcat drept cheie extern , dar tabelul LANGUAGE i relaia acestuia cu tabelul FILM au fost omise din figura de mai sus. Cheile primare i cheile externe sunt blocuri de construcie fundamentale ale modelului relaional, deoarece stabilesc relaii i permit crearea legturilor ntre date, atunci cnd este necesar. Trebuie s nelegei acest concept pentru a putea nelege cum funcioneaz bazele de date relaionale.

FILMFILM_ID MPAA_RATING MPAA_COD_RATING MPAA_DESCRIERE_RATING

FILM_COD_GEN MPAA_COD_RATING FILM_NUME RETAIL_PRET_VHS RETAIL_PRET_DVD AN_PRODUS

FILM_GEN FILM_COD_GEN FILM_DESCRIERE_GEN

FILM_COPII FILM_ID > NUMAR_COPIE DATA_CUMPARARE DATA_VANZARE FORMAT_MEDIA

Figura 1-2

Diagrama ERD a bazei de date (prezentare parial)

RestriciiO restricie este o regul specificat pentru un obiect al bazei de date (de obicei un table sau o coloan), avnd rolul de a limita ntr-un mod oarecare domeniul de valori permise pentru obiectul respectiv al bazei de date.Dup ce sunt specificate, restriciile sunt impuse automat de sistemul DBMS i nu pot fi ocolite dect dac o persoan autorizata le dezactiveaz sau le terge(le elimin).Fiecare restricie primete un nume unic, astfel nct s poat fi referit n mesajele de eroare i n comenzile folosite ulterior n baz de date.Este recomandabil ca proiectanii bazei de date s denumeasc restriciile, deoarece numele generate automat de baz de date nu sunt foare descriptive. Totui , nu am denumit restriciile din baza de date folosit ca exemplu n aceast carte, deoarece, din pcate, nu toate produsele RDBMS disponibile n prezent accept restriciile denumite. Exist mai multe tipuri de restricii pentru baze de date: Restricia NOT NULL Poate fi plasat pe o coloan pentru a mpiedica folosirea valorilor nule.O valoare nul (null) este o modalitate special prin care sistemul RDBMS trateaz valoarea unei coloane pentru a indica faptul c valoarea coloanei respective nu este cunoscut. O valoare nul nu este acelai lucru un un spaiu liber, un ir vid sau valoarea zero i este o valoare special care nu este egal cu nimic altceva. Restricia cheie primar (primary key) Definit pe coloana (coloanele) cheie primar ale unui tabel pentru a garanta c valorile cheie primar sunt ntotdeauna unice n ntreg tabelul.Atunci cnd cheia primar este definit pe mai multe coloane, combinaia valorilor acelor coloane trebuie s fie unic n tabel - o coloan care reprezint doar o parte a valorii cheii primare poate conine valori duplicate n tabel. Restriciile cheie primar sunt aproape inttotdeauna implementate de RDBMS prin folosirea unui index.Indexul este un tip special de obiect al unei baze

dedate care permite efectuarea cutrilor rapide n valorile coloanei.Atunci cnd n tabele sunt nserate rnduri noi, sistemul RDBMS verific automat indexul pentru a se asigura c cheia primar a noului rnd nu este deja folosit n tabel i , dac se ntmpl acest lucru , respinge cererea de inserare. Cutarea n indexuri se face mult mai repede dect cutarea n tabel;ca urmare, indexarea cheii primare este esenial pentru orice tabel, indiferent de dimensiunea acestuia, astfel nct cutarea cheilor duplicate la fiecare inserare s nu duc la o reducere semnificativ a performanelor. O caracteristic suplimentar a cheilor primare este faptul c nu pot fi definite dect pe coloane pentru care a fost definit i restricia NOT NULL. Restricia de unicitate (unique) Definit pe o coloan sau un set de coloane care trebuie s conin valori unice ale tabelului. Ca i n cazul cheilor primare, sistemul RDBMS folosete aproape ntotdeauna un index ca modalitate de impunere eficient a restriciei.Totui, spre deosebire de cheile primare, un tabel poate avea definite mai multe restricii de unicitate, iar coloanele care particip la o restricie de unicitate pot conine ( n cele mai multe sisteme RDBMS ) i valori nule. Restricia referenial (numit uneori restricie de integritate referenial) O restricie care impune o relaie ntre dou tabele dintr-o baz de date relaional. Prin impunere se nelege c sistemul RDBMS se asigur ntotdeauna, n mod automat, c fiecrei valori a cheii externe i corespunde o valoarea a cheii primare n tabelul printe.n tabelul FILM, sistemul RDBMS nu-mi permite s inserez o nregistrare cu valoarea M n coloana MPAA_COD_RATING, deoarece M nu este o valoarea MPAA_COD_RATING valid i , ca urmare, nu apare ca valoare a cheii primare din tabelul MPAA_RATING. n sens invers, sistemul RDBMS nu-mi permite s terg din tabelul MPAA_RATING rndul cu cheia primar PG-13 , deoarece valoarea respectiv este folosit ca valoare a cheii externe pentru cel puin una din nregistrrile din tabelul FILM. Pe scurt , restricia referenial garanteaz c relaia dintre cele dou tabele i valorile corespondente ale cheii primare i cheii externe i pstreaz logica n orice moment. Restricia CHECK Folosete o instruciune logic simpl (scris n SQL) pentru a valida valoarea unei coloane.Rezultatul instruciunii trebuie s fie o valoare logic de adevrat (true) sau fals (false), astfel nct un rezultat adevrat s permit nserarea n tabel a valorii coloanei, iar un rezultat fals s duc la rejectarea valorii coloanei , cu mesajul de eroare corespunztor.

IndexUn index reprezint o cale rapid de localizare i sortare a Inregistrarilor dintro tabel prin gruparea tuturor nregistrrilor pentru un anumit atribur sau grup de atribute. Indexarea este utilizat n dou scopuri principale: accelerarea cutrilor n baya de date asigurarea unicitii nregistrrilor De exemplu, dac ne intereay anumite nume dintr-o tabel Studeni, putem crea un index pentru coloana NumeSt, pentru a regsi mai repede studenii cu un anmit nume de familie..

Putem indexa i mai multe coloane, de exemplu creem un index cu numele NUME , pentru coloanele NumeSt i PrenumeSt. Dei accelereaz procesul de regsire a datelor , indecii ngreuneaz actualizarea lor.Dupa fiecare operaie de actualiyare)inserare, modificare, tergere, trebuie verificai i actualiyai indecii.Folosirea lor trebuie bine ntemeiat altfel mresc timpul de rspuns al sistemuluii ocup spaiul suplimentar pe disc . In Partea a-II-aAccess , se prezint modul de creare a indecilor i n Partea III, la DDL, create index. Observaie: Cheia primar a unei tabele este indexaa automat. Nu pot fi indexate coloane de tipul :Memo, Hyperlinksau OLE Cnd o coloan face parte din cheia primar a unei tabele, proprietatea Indexed are valoarea Yes(No Duplicates), i proprietatea Required primete valoarea Yes, deoarece cheia primar nu poate conine valoarea null.

VizualizriO vizualizare (view) este o interogare stocat n baza de date i pune la dispoziia utilizatorului un subset personalizat al datelor din unul sau mai multe tabele ale bazei de date. Cu alte cuvinte, o vizualizare este un tabel virtual, deoarece arat ca un tabel i n cele mai multe privine se comport c un tabel, dar nu stocheaz date ( nu este stocat dect interogarea SQL care definete vizualizarea). Vizualizrile au mai multe funcii utile: Mascheaz radurile pe care utilizatorul nu este nevoie s le vad (sau nu-i este permis s le vad). Mascheaz coloanele pe care utilizatorul nu are nevoie s le vad (sau nu-i este permis s le vad). Mascheaz operaiile complexe efectuate n baza de date, cum ar fi uniunile de tabele (respectiv combinarea coloanelor din tabele multiple ntr-o singur interogare a bazei de date). mbuntete performanele interogrilor (n unele sisteme RDBMS, precum Microsoft SQL Server).

Proiectate bazele de date relaionaleAceast seciune prezint, foarte pe scurt, procesul general de proiectare a bazelor de date. Atunci cnd ai vzut pentru prima dat figur 1-2 , mai devreme n acest lecie probabil v-ai ntrebat de ce coloanele au fost plasate n tabele multiple i de ce o anumit coloan a fost inclus ntr-un anumit tabel i nu n altul. Scopul acestei seciuni este de a v ajuta s rspundei la ntrebrile de mai sus i de a v oferi un punct de plecare, dac decidei s proiectai propriile baze de date pe msur ce nvai limbajul SQL. Totui proiectarea bazelor de date este un domeniu mult mai larg. n 1972, Dr.E.F.Codd, printele bazelor de date relaionale, a pus la punct un set de reguli care trebuie respectate (organizate n trei forme normale) i un poroces numit normalizare, care este o tehinca pentru producerea unui set de relaii (termenul folosit de Dr. Codd pentru tabele) cu proprietile dorite.

Necesitatea normalizriiNormalizarea este procesul reversibil de transformare a unei relaii, n relaii de structur mai simpl. Procesul este reversibil n sensul c nici o informaie nu este pierdut n timpul transformrii. O relaie este ntr-o form normal particular dac ea satisface o mulime specificat de constrngeri. Procesul normalizrii se realizeaz plecnd de la o relaie universal ce conine toate atributele sistemului de modelat, plus o mulime de anomalii. Orice form normal se obine aplicnd o schem de descompunere. Exist dou tipuri de descompuneri. Descompuneri ce conserv dependenele. Aceast descompunere presupune desfacerea relaiei R n proieciile R1, R2, ..., Rk, astfel nct dependenele lui R sunt echivalente (au nchideri pseudo-tranzitive identice) cu reuniunea dependenelor lui R1, R2, ..., Rk. Descompuneri fr pierderi de informaie. Aceast descompunere presupune desfacerea relaiei R ntr-o mulime de proiecii R1, R2, ..., Rj, astfel nct pentru orice realizare a lui R este adevrat relaia: O descompunere fr pierdere de informaie, utilizat n procesul normalizrii, este dat de regula Casey-Delobel: Fie R(A) o schem relaional i fie , , o partiie a lui A. Presupunem c determin funcional pe . Atunci: mulimea atributelor care intervin n dependenele funcionale; reprezint reuniunea determinantului cu restul atributelor lui A.

Tabelul de mai jos prezint tabelul FILM fr normalizare, aa cum ar arta dac toate informaiile despre filme ar fi colectate ntr-un singur tabel.Acest exemplu va fi folosit pentru ilustrarea procesului de normalizare. n general, numele coloanelor din tabelele relaionale folosesc liniue de subliniere pentru separarea cuvintelor. n discuia despre normalizare am eliminat aceste liniue din figuri, pentru a face textul mai uor de citit.

Anomaliile care apar n lucrul cu baza de date se produc datorit dependenelor care exist ntre datele din cadrul relaiilor bazei de date. Dependenele sunt plasate greit n tabele! Exist trei probleme care pot aprea n tabelele fr normalizare i toate trei exist n tabelul de mai jos. Scopul procesului de normalizare este de a elimina aceste probleme (anomalii) din proiectul bazei de date.FILM _ID G E N_ C O D Dr am a GE N_ DE SC RIE RE Dra ma LAN G_ COD E MPAA _COD _RATI NG MPAA_RATIN G_DESC FILM_NUM E AN _P RO DU S 200 3 DATA_CUM PARARE DAT A_VA NZA RE MEDIA _FORM AT PRETINCHI RIERE

1

en, fr

R

Sub 17 ani necesita prezenta parintilor sau a unui adult Sub 17 ani necesita prezenta parintilor sau a unui adult Sub 17 ani necesita prezenta parintilor sau a unui adult Parintii avertizati Parintii avertizati Parintii avertizati sunt

Mystic River

01/01/2005

DVD

19.96

2

Ac lA d

2

Ac tA v

3

3

4

Co me die Co me die Ac tA v

Act Av si ave ntur a Acti une si ave ntur a Co med ie Co med ie Acti une si ave ntur a

en, fr, es

R

The Last Samurai

200 3

01/10/2005

DVD

19.96

en, fr, es

R

The Last Samurai

200 3

01/10/2005

VHS

15.95

en

PG-13

Something's Gotta Give Something's Gotta Give The Job Italian

200 3 200 3 200 3

01/10/2005

1/30/2 005

DVD

29.99

en

PG-13

sunt

2/15/2005

DVD

29.99

en, fr

PG-13

sunt

2/15/2005

DVD

19.99

Figura 1-3 Tabelul FILM far normalizare

Anomalia de inserareAnomalia de inserare se refer la o situaie n care nu putei insera date n baza de date din cauza unei dependene artificiale dintre coloanele unui tabel. S presupunem c vreti s adugai n baza de date a magazinului un nou gen de film care urmeaz a fi folosit pentru clasificarea filmelor.Tabelul de mai sus nu permite acest lucru dect dac avei un film care s fie plasat n categoria respectivasi pe care va trebui s-l adugai n tabelul FILM n acelai timp.Ar fi mult mai bine dac ai putea adauga noile genuri nainte de primirea filmelor n magazin.

Anomalia de tergereAnomalia de tergere este inversul anomaliei de inserare. Se refer la situaia n care tergerea unor date duce la pierderea neintenionat a altor date. De exemplu dac primul film din tabel este singurul rnd din tabelul FILM pentru care coloana GEN_COD are valoarea Drama , i este ters, se pierde informaia c a existat vreodat un gen numit Drama

Anomalia de actualizareAnomalia de actualizare se refer la o situaie n care actualizarea unei singure valori necesit actualizarea mai multor rnduri. De exemplu , dac n tabelul prezentat mai sus trebuie s modificai descrierea codului MPAA_COD_RATING R, trebuie s modificai i toate rndurile din tabel pentru filmele cu codul respectiv. Probleme similare apar i pentru coloana GEN_DESCRIERERIPTION. Chiar i coloana PRET_INCHIR are aceast problem, deoarece toate copiile aceluiai film (cu aceeai valoare FILM_ID ) pe acelai mediu (DVD sau VHS) ar trebui s aib acelai pre. Un alt pericol legat de aceast anomalie este faptul c stocarea unor date redundante poate aduce la posibilitatea de actualiza numai o parte a copiilor respectivelor date, ceea ce ar avea ca rezultat apariia inconsecvenelor n baza de date.

Aplicarea procesului de normalizareDe obicei, normalizarea ncepe de la mijloacele de redare a datelor care sunt (sau vor fi) prezentate utilizatorilor, cum ar fi pagini web, ecrane ale aplicaiilor, rapoarte i aa mai departe. Colectiv, acestea sunt numite vizualizri de utilizator (user views). Poate prea ciudat la prima vedere, dar este ceva obinuit ca proiectarea unui sistem de prelucrare a datelor s nceap de la rezultatele pe care le va vedea utilizatorul, parcurgnd apoi drumul napoi ctre mijloacele folosite pentru obinerea rezultatelor dorite. n timpul proiectrii bazei de date, procesul de normalizare este aplicat fiecrei vizualizri , iar rezultatul este un set de relaii normalizate care pot fi apoi direct implementate ca tabele ale bazei de date relaionale. Stpnirea procesului de normalizare cere timp i exerciiu, n specia deoarece impune prouectantului s se gndeasc ntr-un mod conceptual la datele i relaiile pe care intenioneaz s le foloseasc. n timpul normalizrii , considerai ca fiecare vizualizare este o relaie. Cu alte cuvinte, conceptualizai fiecare vizualizare ca i cum ar fi deja un tabel bidimensional . De asemenea , este nevoie de timp pentru a va obinui cu terminologia folosit n procesul de normalizare. n timpul acestui proces, majoritatea proiectanilor evit folosirea unor termeni fizici, precum tabel, coloan i cheie primar. Dei relaia pe cale de a fi normalizat reprezint o propunere de tabel , nc nu exist ca tabel fizic, aa c termenul nu este foarte exact. Procesul de normalizare este aplicat sistematic fiecrei vizualizri. Cel puin la nceput este mai uor s reprezentai fiecare vizualizare ca un tabel bidimensional, coninnd date repetitive, aa cum am fcut n figura 1-3. Pe msur ce parcurgei procesul de normalizare, vei rescrie relaiile existente i vei crea altele. Rescrierea vizualizrilor n relaii (tabele) cu date reprezentative este un proces obositor i

consumator de timp. Trebuie s fii foarte atent ca exemplele de date folosite pentru luarea deciziilor n procesul de normalizare s fie cu adevrat reprezentative pentru tipurile de valori care vor aprea n datele reale. Aa cum probabil v ateptai, exemple prost alese duc deseori la proiectarea eronat a bazei de date. Scopul procesului de normalizare este eliminarea anomaliilor de inserare, actualizare si tergere. Procesul determin crearea unui numr mai mare de relaii dect ai avea ntr-un model fr normalizare. Relaiile suplimentare sunt necesare pentru eliminarea anomaliilor, dar mprirea datelor n mai multe relaii face ca extragerea datelor stocate s fie puin mai dificil.

Alegerea unui identificator unicPrimul pas al procesului de normalizare const n alegerea unui identificator unic (unique identifier), care este un atribut (o coloan) sau un set de atribute care identific n mod unic fiecare rnd de date dintr-o relaie. Identificatorul unic va deveni ulterior cheia primar a tabelului creat din relaia normalizat. Pentru normalizare, este obligatoriu ca fiecare relaie s aib un identificator unic. In multe cazuri, putei gsi un atribut care identific n mod unic datele din fiecare rnd al relaiei pe care vrei s o normalizai. Atunci cnd nu putei gsi un singur atribut care s poat fi folosit ca identificator unic, este posibil s gsii mai multe atribute care pot fi concatenate (combinate) pentru a forma un identificator unic. Atunci cnd identificatoarele unice sunt formate din atribute multiple, fiecare atribut rmne pe propria lui coloan - nu facei dect s definii un identificator unic format din mai multe coloane, n foarte puine cazuri, ntr-o relaie nu exist un set rezonabil de atribute care s poat fi folosit ca identificator unic. Atunci cnd se ntmpl acest lucru, trebuie s inventai un identificator unic, deseori cu valori atribuite secvenial sau aleatoriu pe msur ce noile rnduri de date sunt adugate n tabelul bazei de date. Aceast tehnic este sursa unor identificatoare unice, precum numrul de asigurri sociale folosit n Statele Unite, numerele de identificare ale angajailor sau numerele de nmatriculare ale mainilor. Relaia FILM din figura 1-3 ne pune o problem n privina gsirii unui identificator unic. La prima vedere, ar prea c atributul FILM_ID este cel mai potrivit n acest scop. Totui, observai c valorile FILM_ID 2" i 3" apar de cte dou ori, aa c, fr nici un dubiu, aceast valoare nu este unic. Problema este c valoarea FILM_ID identific n mod unic fiecare titlu, dar magazinul urmrete separat fiecare copie a filmelor pe care le are n stoc Cauza este faptul c magazinul se ocup i de nchirierea filmelor i vrea s se asigure c fiecare client returneaz exact copia pe care a nchiriat-o. Dup inspectarea datelor folosite ca exemplu i o scurt discuie cu proprietarul magazinului, ajungei la concluzia c n relaia FILM nu exist nici o combinaie de atribute care s identifice n mod unic fiecare copie a unui film, aa c inventai un atribut numit NR_ COPIE i-1 adugai n relaie. Ori de cte ori inventai un identificator unic (sau o parte a unui identificator) este foarte important ca toi s neleag valorile pe care le va lua acest identificator. In acest caz, proprietarul magazinului decide ca valorile NR_ COPIE s renceap de la 1 pentru fiecare valoare FILM_ID, ceea ce nseamn c valorile NR_ COPIE sunt unice numai n combinaie cu valorile FILM_ID. Relaia rezultat este prezentat n figura 1 4

Prima form normal: eliminarea datelor repetateO relaie este n prima form normal atunci cnd nu conine atribute cu valori multiple (atribute muli valoare), adic atribute care au mai multe valori pentru acelai rnd de date. ntr-o relaie, orice intersecie a unui rnd cu o coloan trebuie s conin cel mult o valoare pentru ca relaia s fie n prima form normal. n figura 1-4, atributul pentru limb (COD_LIMBA) conine mai multe valori pentru unele dintre filme, aa c-l putei considera un atribut cu valori multiple. Atributele de acest tip sunt mai greu de ntreinut, deoarece valorile din list trebuie s fie mai nti separate, astfel nct valorile individuale s poat fi modificate far a le afecta pe celelalte. Uneori, un atribut multivaloare este deghizat sub forma atributelor multiple. De exemplu, figura 14 ar putea fi modificat astfel nct s conin atribute (coloane) separate pentru cel mult trei limbi corespunztoare fiecrui film, numite Language 1, Language 2 i Language 3. Totui, si acestea ar fi considerate atribute multivaloare, dar ntr-o forma special, numit grup repetitiv, care nu este acceptat n prima form normal. Din punct de vedere logic, un grup repetitiv nu este diferit de un atribut multivaloare. De fapt, grupurile repetitive prezint deseori chiar mai multe probleme dect atributele multivaloare, deoarece trebuie s adugai o nou coloan n tabel ori de cte ori vrei s adugai mai multe valori dect a prevzut iniial proiectantul bazei de date (cum ar fi o a patra limb pentru un film). Bazele de date relaionale cer ca toate rndurile dintr-un tabel s aib acelai numr de coloane, dar un tabel poate conine orice numr de rnduriFIL M_I D N R _ C O PI E 1 GEN_ COD GEN_ DESC RIERE CO D_L IMB A MPA A_C OD_ RAT ING MPAA_RATING _DESC FILM_NU ME A N_ PR O D US 20 03 DATA_ CUMPA RARE DA TA_ VA NZ AR E MEDI A FORM AT PRET _INC HIR

1

Dram a

Drama

en, fr

R

2

1

AclA d

2

2

ActA v

3

1

Come die Come die ActA v

Actiune si aventur a Actiune si aventur a Comedi e Comedi e Actiune si aventur a

en, fr, es

R

en, fr, es

R

en

PG13 PG13 PG13

Sub 17 ani necesita prezenta parintilor sau a unui adult Sub 17 ani necesita prezenta parintilor sau a unui adult Sub 17 ani necesita prezenta parintilor sau a unui adult Parintii sunt avertizati Parintii avertizati Parintii avertizati sunt

Mystic River

01/01/20 05

DVD

19.96

The Last Samurai

20 03

01/10/20 05

DVD

19.96

The Last Samurai

20 03

01/10/20 05

VHS

15.95

3

2

en

4

1

en, fr

sunt

Something' s Gotta Give Something' s Gotta Give The Italian Job

20 03 20 03 20 03

01/10/20 05 2/15/200 5 2/15/200 5

1/30 /200 5

DVD

29.99

DVD

29.99

DVD

19.99

Figura 1-4 Relaia FILM . Ca urmare, procesul de normalizare pentru obinerea primei forme normale cere s transformai coloanele repetate i valorile repetate din coloane n rnduri repetate ntr-un tabel separat .

Pentru transformarea relaiilor ne-normalizate n prima form normal, trebuie s mutai atributele multivaloare i grupurile repetitive n noi relaii. Deoarece grupurile repetitive reprezint un set de atribute care se repet mpreun, toate atributele dintr-un grup repetitiv ar trebui mutate n aceeai relaie. Pe de alt parte, un atribut multivaloare (un atribut individual care are valori multiple) ar trebui s fie mutat ntr-o nou relaie proprie, nu s fie combinat cu alte atribute multivaloare n noua relaie. Procedura de mutare a unui atribut multivaloare sau a unui grup repetitiv ntr-o nou relaie const n urmtoarele etape: 1. Creai o nou relaie, cu un nume sugestiv. Deseori, este bine s includei numele relaiei originale, parial sau n ntregime, n numele noii relaii. 2. Copiai identificatorul unic din prima relaie n noua relaie. Datele depind de acest identificator n relaia original, aa c trebuie s depind de aceeai cheie i n noua relaie. Identificatorul copiat va deveni cheie extern n noua relaie. 3. Mutai grupul repetitiv sau atributul multivaloare n noua relaie. (Am folosit aici verbul a muta, deoarece aceste atribute sunt terse din relaia original.) 4. Formai un identificator unic n noua relaie, adugnd atribute la identificatorul unic copiat din relaia original. Ca ntotdeauna, asigurai-v c identificatorul unic nou format conine numai numrul minim de atribute necesar pentru a-1 face unic. Dac mutai un atribut multivaloare, care, n esen, este un grup repetitiv cu un singur atribut, este adugat atributul respectiv pentru formarea identificatorului unic. Poate prea ciudat la prima vedere, dar identificatorul unic copiat din relaia original nu este doar o cheie extern, ci, de obicei, i o parte a identificatorului unic (cheia primar) a noii relaii. Acest lucru este absolut normal. De asemenea, este perfect acceptabil s avem o relaie n care toate atributele fac parte din identificatorul unic (adic nu exist atribute care s nu fac parte din cheie). 5. Opional, putei s nlocuii cheia primar cu un singur atribut surogat pentru cheie. Dac facei acest lucru, trebuie s pstrai i atributele care compun cheia primar natural, format la paii 2 i 4. Figura 1-5 prezint rezultatul aducerii relaiei din figura 1-4 la prima form normal. Observai urmtoarele:

FIL M_I D

NR _C OPI E

GEN _CO D

GEN_D ESCRIE RE

MPA A_CO D_RA TING

MPAA_RATING_ DESC

FILM_NUME

1

1

Dram a

Drama

R

Sub 17 ani necesita prezenta parintilor sau a unui adult Sub 17 ani necesita prezenta parintilor sau a unui adult Sub 17 ani necesita prezenta parintilor sau a unui adult Parintii avertizati sunt

Mystic River

2

1

AclA d

Actiune si aventura Actiune si aventura Comedie

R

The Samurai

Last

2

2

ActA v

R

The Samurai

Last

3

1

Come die

PG-13

Something's Gotta Give

3

2

Come die

Comedie

PG-13

Parintii avertizati

sunt

Something's Gotta Give

4

1

ActA v

Actiune si aventura

PG-13

Parintii avertizati

sunt

The Italian Job

A N _ P R O D U S 2 0 0 3 2 0 0 3 2 0 0 3 2 0 0 3 2 0 0 3 2 0 0 3

DATA _CUM PARA RE

DAT A_VA NZAR E

MEDIA FORMAT

PRET _INC HIR

01/01/ 2005

DVD

19.96

01/10/ 2005

DVD

19.96

01/10/ 2005

VHS

15.95

01/10/ 2005

1/30/2 005

DVD

29.99

2/15/2 005

DVD

29.99

2/15/2 005

DVD

19.99

Am folosit o mic scurttur n cazul identificatorului unic n noua relaie FILM Language. Limba n care este disponibil un film se aplic filmului, n general, nu copiilor individuale. Observai n figura 1-4 c lista de limbi disponibile nu se schimb ntre rndurile duplicate ale aceluiai film. Ca urmare, partea NR_ COPIE a identificatorului unic din relaia FILM nu a fost copiat n noua relaie FILM Language. Dac a fi fcut acest lucru, a fi creat n noua relaie o problem specific celei de-a doua forme normale, pe care ar fi trebuit s o rezolv n urmtoarea etap a procesului de normalizare. Vei descoperi c, deseori, proiectanii experimentai de baze de date sintetizeaz cele trei forme normale i rescriu relaiile originale direct n a treia form normal. Exersnd, vei putea i dumneavoastr s facei acelai lucru.FILM_ID 1 1 2 2 2 3 4 4 COD_LIMBA en fr en fr es en en fr

Figura 1-5 Soluia primei forme normale Atributul FILM_ID a fost copiat din relaia original (FILM) n noua relaie (FILM Language). Atributul multivaloare COD_LIMBA a fost mutat din relaia FILM n relaia FILM Language, cu numele Language Code. (Numele abreviate ale atributelor din

figura 1-4 au fost folosite doar pentru ilustrare - este recomandabil s prescurtai numele numai dac este absolut necesar.) Identificatorul unic din relaia FILM Language este format prin combinarea atributelor FILM_ID i Language Code, adic din toate atributele relaiei. Nici FILM, nici FILM Language din figura 1-5 nu conin grupuri repetitive sau atribute multivaloare, aa c ambele relaii sunt n prima form normal.

A doua form normal: eliminarea dependenelor parialenainte de a explora a doua form normal, trebuie definit conceptul de dependen funcional. Pentru aceast definiie, voi folosi dou atribute arbitrare, inteligent denumite A" i B". Atributul B este dependent funcional de atributul A dac n nici un moment nu exist mai mult de o valoare a atributului B asociat cu o valoare dat a atributului A. In primul rnd, a spune c atributul B este funcional dependent de atributul A nseamn i c atributul A determin atributul B sau c A este un determinant (identificator unic) pentru atributul B. n al doilea rnd, s ne mai uitm o dat la relaiile din figura 1-5. n relaia FILM, putei s v dai seama cu uurin c atributul FILM_NUME este dependent funcional de atributul FILM_ID, deoarece, n orice moment, poate exista o singur valoare FILM_NUME pentru o valoare FILM_ID dat. Chiar faptul c valoarea FILM_ID definete n mod unic valoarea FILM_NUME n relaie nseamn c FILM_NUME este dependent funcional de FILM_ID. Se spune c o relaie este n a doua form normal dac ndeplinete urmtoarele criterii: Relaia este n prima form normal. Toate atributele non-cheie sunt dependente funcional de identificatorul unic (cheia primar), luat ca ntreg. Aplicnd aceste criterii relaiei FILM din figura 1 -5, este clar c avem cteva probleme. Identificatorul unic este o combinaie a atributelor FILM_ID i NR_ COPIE. Totui, numai atributele DATA_CUMPARARE, DATA_VANZARE, MEDIA FORMAT i PRET_INCHIR depind de ntregul identificator. i este logic s fie aa. Indiferent cte copii ale unui film avem n baza de date, toate au aceleai valori pentru gen, categorie MPAA, TITLU i AN_PRODUS. Unele atribute descriu filmul n sine, n timp ce altele descriu copiile pe care le deine (sau le-a deinut) magazinul din filmul respectiv. In esen, am amestecat atribute care descriu n aceeai relaie dou lucruri (entiti) diferite (dei nrudite) din lumea real. A doua form normal se aplic numai relaiilor care au identificatoare unice concatenate (adic formate din atribute multiple). ntr-o relaie care are un singur atribut ca identificator unic, este imposibil ca un alt atribut s depind de o parte a identificatorului unic, deoarece acesta, fiind format dintr-un singur atribut, nu are pri componente. Ca urmare, orice relaie n prima form normal care are cheia primar format dintr-un singur atribut este automat n a doua form normal. Dup ce descoperii o nclcare a celei de-a doua forme normale, soluia este s se mute atributele parial dependente ntr-o nou relaie, n care s depind de ntreaga cheie primar. Figura 1-6 prezint aceast soluie. Toate atributele care depind numai de FILM_ID sunt acum ntr-o relaie (numit FILM) n care FILM_ID este identificator unic. Cele care depind de combinaia FILM_ID i NR_ COPIE sunt ntr-o relaie (numit FILM Copy) n care FILM_ID i NR_ COPIE formeaz

identificatorul unic. Relaia FILM Language era deja n a doua form normal, deoarece nu are atribute non-cheie i, ca urmare, a rmas nemodificat.

FILM:FILM _ID GEN_ COD GEN_DESCRIERE MPAA_ COD_R ATING MPAA_DESCRIE RE_RATING FILM_NUME AN_PRO DUS

1

Drama

Drama

R

2

ActAv

Actiune si aventura

R

3 4

Comed ie ActAv

Comedie Actiune si aventura

PG-13 PG-13

Sub 17 ani necesita prezenta parintilor sau a unui adult Sub 17 ani necesita prezenta parintilor sau a unui adult Parintii sunt avertizati Parintii sunt avertizati

Mystic River 2003

The Last Samurai 2003

Something's Gotta Give The Italian Job

2003 2003

FILM LANGUAGE: FILM_ID LANGUAGE_CODE 1 En 1 Fr 2 En 2 Fr 2 Es 3 En 4 En 4 Fr

FILM COPY:FILM ID 1 2 2 3 3 4 NR_ COPIE 1 1 2 1 2 1 DATA_CUMPARARE 01/01/2005 01/10/2005 01/10/2005 01/10/2005 2/15/2005 2/15/2005 DATA_VAN ZARE MEDIA FORMAT DVD DVD VHS DVD DVD DVD PRET_INCHIR 19.96 19.96 15.95 29.99 29.99 19.99

1/30/2005

Figura 1-6. Soluia pentru a doua form normal

A treia form normal: eliminarea dependenelor tranzitivePentru a nelege a treia form normal, trebuie s se definesc conceptul de dependen tranzitiv. Despre un atribut care depinde de un atribut care nu este identificator unic (cheie primar) a relaiei se spune c este dependent tranzitiv.

n relaia FILM din figura 1 -6, observm c atributul GEN_DESCRIERE depinde de atributul GEN_COD, iar MPAA Ratig Description depinde de MPAA_COD_RATING. Pericolul pstrrii acestor descrieri n relaia FILM este faptul c, n final, cele dou atribute ajung s depind de nregistrarea unui film, ceea ce duce la toate cele trei anomalii de date prezentate mai devreme n acest capitol. Se spune c o relaie este n a treia form normal dac ndeplinete urmtoarele dou criterii: Relaia este n a doua form normal. Nu exist dependene tranzitive (cu alte cuvinte, toate atributele non-cheie depind numai de identificatorul unic). Pentru a aduce la a treia form normal o relaie aflat n a doua form normal, se mut atributele dependente tranzitiv n relaii n care depind numai de cheia primar. Se las atributul de care depind acestea n relaia original, cu rolul de cheie extern.Va trebui apoi s reconstruim vizualizarea original printr-o uniune. Ca efect secundar, toate atributele uor de calculat sunt eliminate ca nclcri ale criteriilor celei de-a treia forme normale. De exemplu, ntr-o baz de date pentru vnzri, Suma Total este obinut nmulind Cantitatea Cumprat cu Preul Unitar; aa cum se observ cu uurin, Suma Total este dependent de Cantitatea Cumprat i de Preul Unitar. Presupunnd ci toate cele trei atribute sunt dependente de identificatorul unic al relaiei care le conine, este uor de vzut c Suma Total (rezultatul calculat) este, de fapt, dependent tranzitiv te celelalte dou atribute. Figura 1-7 conine soluia n a treia form normal. S-au creat noi relaii pentru MPAA Rating i FILM Gen, s-a mutat descrierile n noile relaii i am lsat atributele pentru coduri (MPAA_COD_RATING i FILM GEN_COD) n relaia FILM, definite ca fiind chei externe. Muli proiectani de baze de date numesc relaiile MPAA Rating i FILM Genre tabele de cutare" sau tabele de coduri deoarece sunt utilizate, n principal, pentru cutarea codurilor stocate n coloana cheie primar a relaiei. Totui aceste relaii au i alte roluri, cum ar fi controlul codurilor i furnizarea unei surse convenabile pentru lista de coduri valide, care poate fi folosit ntr-o list derulant de pe o pagin web. FILM:FILM_ ID 1 2 3 4 GEN_ COD Drama ActAv Comedie ActAv MPAA_ COD_RA TING R R PG-13 PG-13 The Last Samurai Something's Gotta Give The Italian Job 15.95 14.95 11.95 19.96 2003 29.99 2003 19.99 2003 FILM_NUME Mystic River PRET_ INCHIR VHS 58.97 PRET_ INCHI R DVD 19.96 AN_PRODUS 2003

FILM_ COPII: FILM_ID NR_ COPIE DATA_CUMPAR DATE ARE VINZARE 1 1 01/01/2005 2 1 01/10/2005 2 2 01/10/2005 3 1 01/10/2005 1/30/2005 3 2 2/15/2005 4 1 2/15/2005

_ MEDIA_FORMA T DVD DVD VHS DVD DVD DVD

MPAA Rating : MPAA_COD_RATING MPAA_DESCRIERE_RATING PG-13 Parintii sunt avertizati R Sub 17 ani necesita prezenta parintilor sau a unui adult

FILM GEN : FILM GEN_COD ActAv Comedie Drama

FILM_GEN_DESCRIERE Actiune si aventura Comedie Drama

Figura 1-7. Soluia pentru a treia form normal O alt modificare fcut pentru a ajunge la a treia form normal este legat de atributul PRET_INCHIR (pre cu amnuntul) din relaia Movie Copy, aa cum se poate vedea n figura 1-6. Dup o discuie cu proprietarul magazinului, am stabilit c preul depinde de combinaia dintre Movie ID i Media Format, toate copiile cu aceleai valori pentru FILM_ID i Media Format avnd acelai pre. In mod clar, aceasta este o dependen tranzitiv i, ca urmare, o nclcare a celei de-a treia forme normale. Soluia normal pentru o asemenea problem ar fi crearea unei relaii numite FILM Price, avnd ca identificator unic combinaia dintre FILM_ID i Media Format, i mutarea atributului PRET_INCHIR din FILM Copy n noua relaie. Totui, n timpul discuiei s-a aflat c urmeaz s se renune la furnizarea filmelor n format VHS, deoarece sunt cerute de un numr foarte mic de clieni i c peste cteva luni magazinul va avea numai filme pe DVD. innd seama de aceast informaie, am decis s mut preul n dou coloane din tabelul FILM, una cu preul pentru DVD i una cu preul pentru VHS. Dei se poate spune c aceasta este o nclcare a primei forme normale (i, din punct de vedere tehnic chiar este), mi s-a prut a fi cel mai bun compromis. Proiectarea bazelor de date nu este ntotdeauna o tiin exact, aa c de multe ori exist posibilitatea unor mici ajustri, cu condiia ca proiectantul s ia n calcul consecinele poteniale (msurate n termenii anomaliilor de date) ale fiecrui compromis.

Forma normal Boyce-Codd (BCNF)Dei nu ne propunem s discutm i alte forme normale avansate, consider necesar s le amintim. Dr. E. F. Codd a participat la definirea unei versiuni mai puternice a celei de-a treia forme normale, numit forma normal Boyce-Codd. Determinantul este un atribut sau o mulime de atribute neredundante, care constituie un identificator unic pentru alt atribut sau alt mulime de atribute ale unei relaii date. Intuitiv, o relaie R este n forma normal Boyce-Codd dac i numai dac fiecare determinant este o cheie candidat. Formal, o relaie R este n forma normal Boyce-Codd dac i numai dac pentru orice dependen funcional total X A, X este o cheie (candidat) a lui R.

Exemplu:ADRESA(cod_parsoana#, telefon#, adresa)

cod_persoana

adresa

telefon n dependena adresa telefon se observ c determinantul nu este o cheie candidat. Relaia ADRESA se desface n: ADRESA_1(cod_persoana#, adresa); ADRESA_2(adresa#, telefon). Relaiile sunt n BCNF, se conserv datele, dar nu se conserv dependenele (s-a pierdut cod_persoana, telefon adresa). Diferii ali autori i cercettori au oferit propriile extensii, numite a patra form normal, a cincea form normal, forma normal cu cheie de domeniu i altele. A patra form normal(FN4) elimin redudanele datorit relaiilor de tip m:m. Este nevoie de ceva exerciiu n procesul de normalizare nainte ca aceste extensii s devin logice. In plus, a treia form normal acoper toate anomaliile pe care este posibil s le ntlnii n lucrul cu baze de date obinuite. Prezentarea general a bazei de date pentru un magazin video Majoritatea exemplelor din acest curs folosesc ca model o baz de date pentru un magayin virtual de produse video. Instruciunile SQL pentru creare obiectelor bazei de date i pentru popularea acestora cu date vor fi prezentate n leciile urmtoare. n figura 1-8 se prezint disgrama entitate relaie, ERD (Entity Relationship Diagram) pentru aceast baz de date.

MA _R T G P A A IN M A _C D A IN P A O _R T G M A _D S R R _V R T P A E C IE E A S E

P K

FM IL F M IL _ID F M O _G N IL _C D E M A O _R T G PA _C D A IN FM UE IL _N M R T IL R T H E A _P E _V S R T IL R T V E A _P E _D D A _P O U N RDS

P K F1 K F2 K

FM E IL _G N F M O _G N IL _C D E F M E C IE E E IL _D S R R _G N

P K

F M IM A IL _L B F M IL _ID C D IM A O _L B P ,F 1 KK P ,F 2 KK

F M O II IL _C P F M IL _ID N M R O IE U A _C P D T _C M A A E AA U P R R D T _V N A E AA A Z R F R A _M D O M T E IA

P ,F 1 KK P K

F M C IR R IL _IN H IE E F M IL _ID P ,F 1 KK N M R O IE U A _C P P ,F 1 KK T A Z C IE R N A T _ID P ,F 2 KK D T _IN O R E E AA T A C R C S _IN H IE E O T C IR R C S _IN A Z R _S U IE D R O T T R IE E A _P R E E D T _R T R A E AA E U N R

L B IM A C D IM A O _L B N M _L B U E IM A P K C IE T O T L N _C N C IE T O T L N _C N _ID P K C IE T O D D L N _H L _IN D T _IN C IS AA S R D T _T R IN T AA E M A C IE T E O IT U A L N _D P Z _S M C R _C E IT A O A _IN IC A D R D _L _D S R D C P _IN H IE E E M _IN IC O IL C IR R _P R IS D C IE T R N A T L N _T A Z C IE T A Z C IE R N A T _ID C IE T O T L N _C N _ID A G JA _P R O N _ID NA T ES AA T A Z C IE A A R N A T _D T V N A I_T X AZR AA P K F1 K

C IE T O _P R O N L N _C D E S A A C IE T O T L N _C N _ID P R O N _ID ES AA

P ,F 1 KK P ,F 2 KK

P RO N ES AA P R O N _ID ES AA P R O N _P E U E E S AA RNM P R O N _N M _M O IU E S A A U E IJL C P R O N _N M ES AA U E P R O N _A R S _1 E S A A DEA P R O N _A R S _2 E S A A DEA P R O N _A R S _O A E S A A DEA R S P R O N _A R S _JU E _P O E S A A D EA DT R V P R O N _A R S _C D O T L E S A A D E A O _P S A P R O N _A R S _T R E S A A DEA AA P R O N _T L F N E S A A E EO N S E E AA A T R _D T M A T _D T O R E AA

P K

A G JA NA T P R O N _ID ES AA S P R IS R E S A A U E V O _P R O N _ID A G JA _T X _ID NA T AA A G JA _JO _C T G R N A T B A E O IE A G JA _R T _P _O A N A T AA E R A G JA E A A N A R _D T IN H E E A A C ID R _D T

P ,F 1 KK

Figura 1_8. Diagrama entitate relaie

Probleme:1. S se normalizeze tabelul CURS_SUDENT i PROFESOR Amintim c o tabel este n prima form normal(FN1) dac valorile tuturor atributelor care o compun sunt atomice (indivizibile). n plus, nu trebuie s existe atribute sau grupuri de atribute repetitive. Aceast prim form normal este considerat ca fiind o cerina minimal pentru majoritatea sistemelor relaionale, utilitatea ei fiind evident. Astfel , dac o coloan ar conine o list de valori , regsirea i manipularea informaiilor stocate ar fi foarte anevoioase. Presupunem c tabela Curs_Student conine urmtoarele date: CURS_SUDENT NrMatricol NumeSt PrenumeSt Grupa Cursuri-Nota 458 Predescu Alexandru 114 engleza-7,germana-8 521 Radu George 122 desen-tehnic-10,franceza-7 627 Cristescu Lucian 243 programare-8,engleza-10 746 Irimia Diana 361 analiza numerica-9 782 Tanase Daciela 341 gernana-6,programare-10 982 Bunea Mihaela 114 rezistenta materialelor-8 1204 Dragnea Liviu 412 educatie fizica-10 S1520 Popa Marius 452 analiza numerica-7,engleza-9 Coloana Cursuri conine mult prea multa informaie. S presupunem c am nlocui coloana Cursuri cu dou noi coloane: CURS_SUDENTNrMatricol 458 521 627 746 782 982 1204 1520 NumeSt Predescu Radu Cristescu Irimia Tanase Bunea Dragnea Popa PrenumeSt Alexandru George Lucian Diana Daciela Mihaela Liviu Marius Grupa 114 122 243 361 341 114 412 452 Curs1 engleza desen tehnic programare analiza numerica germana rezistenta materialelor educatie fizica analiza numerica Nota1 7 10 8 9 6 8 10 7 engleza 9 Curs2 germana franceza engleza programare Nota2 8 7 10 10

Nici acum nu am rezolvat toate problemele. De exemplu, pentru a afla ci studenti s-au nscris n total la un anumit curs , va trebui s parcurgem toate cele trei coloane cu cursuri. n plus, ce se ntmpl n cazul n care un student s-a nscris la mai mult de dou cursuri? S zicem c un student nu se poate inscrie la mai mult de cinci cursuri i deci putem introduce zece coloane pentru a stoca informaiile curs-nota. .Evident , aceasta ar presupune o mare risip de spaiu , de vreme ce ar exista i unii studenti care au ales doar dou cursuri. Pentru a aduce tabela Curs_Student la FN1 vom introduce o nou coloan n cheia primar a tabelei, astfel nct aceasta va fi format acum din dou coloane: NrMatricol i IdCurs. Acum putem afla numrul total de studeni nscrii la un anumit curs.

CURS_SUDENT NrMatricol NumeSt 458 Predescu 521 Radu 521 Radu 627 Cristescu 627 Cristescu 746 Irimia

PrenumeSt Alexandru George George Lucian Lucian Diana

Grupa 114 122 122 243 243 361

IdCurs 4 3 5 1 2 8

Denumire germana franceza desen tehnic programare engleza analiza numerica

A doua form normal (FN2) Amintim c o tabel este n a doua form normal dac este n FN1 i fiecare atribut care nu face parte din cheia primar este dependent de ntreaga cheie primar. Tabela Curs_Student este n FN1, dar nu ndeplinete cea de-a doua cerin pentru a fi n FN2. Coloana Denumire care depinde numai de IdCurs, nu i de NrMatricol , care , mpreun cu IdCurs, formeaz cheia primar. Deci avem o coloan care nu face parte din cheia primar i nu depinde de toat cheia, n sensul c , pentru o valoare dat a lui IdCurs, cunoatem denumirea cursului fr a mai trebui s tim i NrMatricol. Putem aduce tabelaCurs_Student n FN2 descompunnd-o n dou tabele, dup urmtoarea regul: pentru fiecare dependen parial se formeaz o nou tabel (pe care o vom numi Curs) coninnd coloanele determinate de aceast dependena (n acest caz, Denumirea) i determinantul lor (IdCurs). Coloanele determinate se elimin din tabela iniial. Cheia primar a noii tabele va fi format din coloanele ce compun determinantul dependenei (IdCurs), ntre cele dou tabele rezultate exist o relaie de tip 1:m asigurat de existena lui IdCurs drept cheie strin n tabela Curs_Student. Analog, deoarece coloanele NumeSt, PrenumeSt i grupa depind numai de NrMatricol, le eliminm din tabela Curs_Student i formm o nou tabel, Student, ce le va conine i va avea drept cheie primar coloana NrMatricol. De asemenea , ntre tabelele Student i Curs_Student exist o relaie de tip 1:m. STUDENT

NrMatricol 458 521 627 746 782 982 1204 1520

NumeSt Predescu Radu Cristescu Irimia Tanase Bunea Dragnea Popa

PrenumeSt Alexandru George Lucian Diana Daciela Mihaela Liviu Marius

Grupa 114 122 243 361 341 114 412 452

CURS_SUDENT

IdCurs 1 1 2 3 4 4 5 5

NrMatricol 782 982 458 521 627 1520 521 1740

Nota 5 10 7 7 8 8 10 6

A treia form normal (FN3) O tabel este n a treia form normal dac este n FN2 i toate coloanele care nu fac parte din cheia primar sunt mutual independente (depind direct de cheia primar i numai de ea) Un exemplu calasic de dependen tranzitiv este cel al coloanelor calculate. Astfel , dac o tabel de produse ar conine Coloanele PretUnitar i Cantitate i , n plus, coloana PretTotal aceast tabel nu ar fi n FN3. Coloanele calculate nu sunt singurul caz de dependena tranzitiv ntr-o tabel. De exemplu n tabela Profesor se poate observ faptul c salariul depinde de titlul profesorului, coloanele Salariu, Titlu i IdTitlu nefcnd parte din cheia primar. Dependenele tranzitiv creeaz probleme la adugarea, actualizarea i tergerea nregistrrilor. De exemplu, dac la tabela Profesor se mai adaug 20 de nregistrri , fiecare cu titlul de preparator (prep), va trebui s introducem de 20 de ori valoarea 5 pentru IdTitlu, descrierea preparaotr pentru Titlu i valoarea 800 pentru Salariu , ceea ce este evident, redundant. De asemenea, dac salariul unui preparator se modific, va trebui s asctualizm toate nregistrrile corespunztoare. Pentru a nltura toate aceste inconveniene, vom aduce tabela Profesor la FN3 prin crearea unei noi tabele, pe care o vom numi Titlu.Tabela Titlu va avea drept cheie primar coloana IdTitlu i va mai conine coloanele Titlu i Salariu, pe care leam eliminat din tabela Profesor. Profesor IdProf 1 2 3 4 5 6 7 Nume Popescu Marin Dragnea Ion Iosif Irina Ilie Daniel Savu Cristina Cristea George Ene Dan Catedra Matematici Limbi straine Educatie fizica Informatica Limbi straine Fizica Matematici IdTitlu 1 4 3 2 5 3 7

IdCurs 1 2 3 4 5 6 7 8

Denumire programare engleza franceza germana desen tehnic Rezistenta materialelor Educatie Fizica analiza numerica

Titlu IdTitlu 1 2 3 4 5 6 Titlu lector dr. asistent lector conferentiar dr. prepartor profesor dr. Salariu 1300 950 1100 1700 680 2150

:

2. Amintim ca regulile de integritate sunt; - unicitatea cheii primare - integritatea entitii valorile cheii primare sa fie diferite de valoarea null(o valoare necunoscuta sau lipsete) - integritatea referenial - o cheie secundar trebuie s fie null n ntregime sau s corespund unei valori a cheii primare asociate.(in tabela asociat nu trebuie s existe valori fr corespondent). Tabelele Titlu i Profesor sunt n relaia 1:m (un Titlu corespunde la mai multe cadre didactice). Tabele de mai sus pstreaz regulile de integritate? Raspuns Nu, deoarece exist cadrul didactic cu IDProf= 7 cu IdTitlu =7 , care nu exist in tabelul Titlu, ca funcie didactic. 3. S se determine anomaliile pentru tabelul Avion A# 1 2 3 4 5 6 nume AIRBUS AIRBUS AIRBUS CAR B707 B707 capacitate 250 250 250 100 150 150 localitate PARIS PARIS LONDRA PARIS LONDRA LONDRA

Constrngere: toate avioanele cu acelai nume au aceeai capacitate.

Datorit dependenei introduse pot exista: anomalii la inserare, modificare sau tergere, redundan n date, probleme de reconexiune.1. 2.

Redundan logic. Cuplul (AIRBUS, 250) apare de trei ori. Anomalie la inserie. S-a cumprat un B727 cu 150 locuri. El poate fi inserat n relaia AVION doar dac se definete o nou valoare pentru cheia primar. Anomalie la tergere. Dac este tears nregistrarea pentru care A# este 4, atunci se pierde informaia c un avion CAR are capacitatea 100. Anomalie la modificare. Dac se modific capacitatea lui B707 de la 150 la 170, atunci costul modificrii este mare pentru a modifica toate nregistrrile, iar dac se modific doar o nregistrare atunci constrngerea nu va mai fi verificat.

3. 4.

4. Exemplu: variante pentru a implementa FN1 pentru tabelul MASINA: Persoana Eu Tu El noi Varianta 1 Persoana Eu Eu Eu Tu El El Noi Noi Noi Noi Varianta 2 Persoana Eu Tu El Prima R25 205 R5 305 Doi W14 Trei R21 Patru Vehicul R25 W14 R21 205 R5 305 BX 305 R12 R25 Vehicul R25 - W14 - R21 205 R5 - 305 BX - 305 - R12 - R25

Noi

BX

305

R12

R25

Varianta 3 (4 tabele) Masina 31 (similar se definesc Masina_32, Masina_33, Masina_34).. Persoana Eu Tu El Noi Masina_34 Persoana Noi Vehicul R25 Vehicul R25 205 R5 BX

5. S se aduca la FN2 O relaie R este n a doua form normal dac i numai dac: relaia R este n FN1; fiecare atribut care nu este cheie (nu particip la cheia primar) este dependent de ntreaga cheie primar. ATASAT_LA

COD_SALARIAT# S1 S1 S1 S3 S5

JOB_COD PROGRAMATOR PROGRAMATOR PROGRAMATOR VANZATOR INGINER

NR_PROIECT# P1 P2 P3 P3 P3

FUNCTIA SUPERVIZOR CERCETATOR AUXILIAR SUPERVIZOR SUPERVIZOR

SUMA 60 25 10 60 60

ATASAT_2ACOD_SALARIAT# S1 S1 S1 S3 S5 NR_PROIECT# P1 P2 P3 P3 P3 FUNCTIA SUPERVIZOR CERCETATOR AUXILIAR SUPERVIZOR SUPERVIZOR SUMA 60 25 10 60 60

ATASAT_2B

COD_SALARIAT# S1 S3 S5

JOB_COD PROGRAMATOR VANZATOR INGINER

A doua condiie exprim necesitatea total dependenei de cheia primar. Aceast form normal interzice manifestarea unor dependene funcionale pariale n cadrul relaiei R! Pentru a obine o relaie FN2 se poate aplica regula Casey-Delobel. mulimea atributelor care intervin n dependenele funcionale; reprezint reuniunea determinantului cu restul atributelor lui A. 7. Tabelul atasat_2a nu este in FN3. De ce? Forma normal 3 (FN3) Intuitiv, o relaie R este n a treia form normal dac i numai dac: relaia R este n FN2; fiecare atribut care nu este cheie (nu particip la o cheie) depinde direct de cheia primar. atasat_3a Cod_salariat# Nr_proiect# S1 P1 S1 P2 S1 P3 S3 P3 S5 P3 atasat_3b Functia Suma Supervizor 60 Cercetator 25 Auxiliar 10

Functia Supervizor Cercetator Auxiliar Supervizor Supervizor

8. Presupunem c un antier poate executa mai multe lucrri de baz i c o lucrare poate fi executat de mai multe antiere. LUCRARE(cod_obiectiv#, cod_lucrare#, nume); SANTIER(nr_santier#, specialitate, sef); EXECUTA(cod_obiectiv#, cod_lucrare#, nr_santier#, descriere, functie, conducator, data_inceput, data_sfarsit). Pentru relaia EXECUTA sunt evidente dependenele: {cod_obiectiv#, cod_lucrare#} {data_inceput, data_sfarsit}, {cod_obiectiv#, cod_lucrare#, nr_santier#} {descriere, functie, conducator}. 9. S se aduca la FN3 tabelel EXECUTA_1 rezultat de la 8

n tabelul EXECUTA_1(cod_obiectiv#, cod_lucrare#, nr_santier#, descriere, functie, conducator) continu s existe redundan n date. Atributul conducator depinde indirect de cheia primar prin intermediul atributului functie. ntre atributele relaiei exist dependenele: {cod_obiectiv#, cod_lucrare#, nr_santier#} {descriere}, {cod_obiectiv#, cod_lucrare#, nr_santier#} {functie} {conducator}. Pentru a aduce relaia EXECUTA_1 n FN3 se aplic regula Casey- Delobel. Relaia se desface, prin eliminarea dependenelor funcionale tranzitive, n proieciile: EXECUTA11(cod_obiectiv#, cod_lucrare#, nr_santier#, descriere, functie) EXECUTA12(functie, conducator).

10 S se aduc la forma BCNF (Forma normal Boyce-Codd ) (Formal, o relaie R este n forma normal Boyce-Codd dac i numai dac pentru orice dependen funcional total X A, X este o cheie (candidat) a lui R.) Relaia INVESTESTE_IN OBIECTIV_INVESTITIE. leag entitile INVESTITOR i

Ea are schema relaional: INVESTESTE_IN(cod_contractant#, cod_obiectiv#, nr_contract, cota_parte). ntre atributele relaiei exist dependenele: {cod_contractant#, cod_obiectiv#} {nr_contract, cota_parte}, {nr_contract} {cod_obiectiv}. Se aplic regula Casey-Delobel i se aduce relaia n BCNF. INVESTESTE_IN_1(cod_obiectiv, nr_contract#); INVESTESTE_IN_2(cod_contractant#, nr_contract, cota_parte).

Partea a II-a. LIMBAJUL SQLn aceast tema se prezint conceptele limbajului SQL n 6 lecii, dup cum urmeaz: LECIA 1. Concepte SQL LECIA 2. Limbajul de definire a datelor - DDL LECIA 3. Limbajul de interogare a datelor - DQL LECIA 4. Combinarea datelor din mai multe tabele - Uniuni (Join) LECIA 5. Limbajul de manipulare a datelor - DML

LECIA 1. Concepte SQLn acest lecie se vor prezenta conceptele de baz ale limbajul SQL. SQL a devenit limbajul universal pentru bazele de date relaionale i este acceptat de aproape toate sistemele SGBD moderne. Fr ndoial, acceptarea pe scar larg este rezultatul timpului i eforturilor depuse pentru dezvoltarea caracteristicilor limbajului i a standardelor, crescnd nivelul de portabilitate a codului SQL ntre diferitele produse RDBMS. Vei avea mai multe succes n nvarea limbajului SQL dac folosii n mod activ SQL i o baz de date relaional pentru a ncerca exemplele prezentate sau dac veti ncerca variante proprii ale exemplelor. Ce este SQL? SQL (Structured Query Language -limbaj structurat de interogare) este un limbaj standard folosit pentru crearea, actualizarea i regsirea informaiilor stocate n baze de date prin intermediul sistemelor de gestionare a bazelor de date ( SGBD-uri). Numele limbajului poate fi pronunat pe litere (es-q-el) sau la fel ca i cuvntul englezesc sequel". O interogare (query) este o simpl cerere transmis ctre baza de date, la care aceasta rspunde ntr-o anumit form. SQL este limbajul folosit cel mai frecvent pentru interogarea bazelor de date. SQL este considerat un limbaj neprocedural sau declarativ, ceea ce nseamn c-i spunei calculatorului ce rezultate vrei, far s-i spunei cum s le obin. De exemplu, dac vrei s obinei media numerelor de pe o coloan, folosii funcia AVG. Nu este nevoie s numrai valorile din coloan i s mprii suma acestora la numrul obinut - procesorul limbajului SQL din SGBDse ocup de toate aceste lucruri n locul dumneavoastr. Este important s nelegi c SQL nu este un limbaj procedural, ca C, Pascal, Basic, FORTRAN, COBOL sau Ada. Un limbaj procedural folosete o serie de instruciuni executate secvenial. De asemenea, limbajele procedurale includ instruciuni care pot modifica secvena de execuie, prin ramificarea la alte poriuni ale procedurii sau prin parcurgerea ciclic a unui set de instruciuni din procedur. Muli productori de sisteme SGBDofer extensii procedurale ale limbajului SQL de baz, cum ar fi Oracle PL/SQL (Procedural Language/SQL) sau Microsoft TransactSQL, dar reinei c acestea sunt extensii SQL care formeaz noi limbaje - codul SQL pe care-1 conin rmne neprocedural. De asemenea, SQL nu trebuie confundat cu limbajele orientate spre obiecte, precum Java i C++. Simplu spus, SQL este un limbaj neprocedural pentru gestionarea i ntreinerea bazelor de date relaionale, nu un limbaj potrivit pentru programarea general a aplicaiilor, cum ar fi sistemele de prelucrare a comenzilor sau a plilor. SQL este deseori folosit n combinaie cu limbajele procedurale sau orientate spre obiecte menionate anterior pentru a manipula stocarea i extragerea datelor, folosind instruciuni din limbajul de programare cu destinaie general pentru alte

sarcini de programare, precum prezentarea datelor pe o pagin web sau furnizarea rspunsurilor la informaiile introduse de utilizatori de la tastatur sau mouse. Atunci cnd este necesar interacionarea cu baza de date, instruciunile din limbajul procedural formeaz instruciunea SQL, o transmit ctre SGBDn vederea prelucrrii, primesc rezultatele returnate de SGBDi le prelucreaz ntr-un mod corespunztor. Folosind SQL putei transforma ntrebri obinuite :Din ce oras sunt studentii notri? n instruciuni pe care le nelege soft-ul pentru baze de date: SELECT oras FROM studenti . Aceste informaii se pot extrage din bazele de date prin utilizarea unui instrument grafic de interogare, dar pe msur ce ce intrebrile devin mai complexe, aceste instrumente devin limitate i greoaie i acesta este momentul cnd intr n aciune limbajul SQL. SQL se poate folosi nu numai pentru interogare, dar i pentru a aduga, a modifica sau a terge nregistrri din bazele de date. Majoritatea SGBD-urilor populare, ca de exemplu Microsoft Accsess, Oracle i MySQL , asigur suport pentru SQL, chiar dac acest nivel de suport difer de la produs la produs.

Conectarea la baza de dateAtunci cnd folosii limbajul SQL pe un calculator personal, cu o copie personal a unui sistem SGBD, precum Microsoft Access sau Oracle Personal Edition, toate componentele bazei de date ruleaz pe acelai sistem de calcul. Totui, acest aranjament nu este potrivit pentru bazele de date care trebuie s fie folosite n comun de mai muli utilizatori. Ca urmare, sunt mult mai frecvent ntlnite situaiile n care baza de date este instalat ntr-un aranjament client/server. ntr-un aranjament client/server: Sistemul ruleaz pe un server, care este un sistem de calcul partajat. Pentru scopurile acestei definiii, un sistem mainframe poate fi considerat un server de dimensiuni mari. Fiierele care compun baza de date din punct de vedere fizic sunt stocate pe