Curs baze-de-date
of 188
/188
-
Author
manuela-hedlinger -
Category
Education
-
view
1.160 -
download
7
Embed Size (px)
description
Transcript of Curs baze-de-date
- 1. Informaii Curs- Baze de date Anul III-Informatic Disciplin obligatorie; Anul III, Sem. 5, ore sptmnal, nvmnt de zi: 2 curs, 2 laborator, total ore semestru 56; 6 credite; examen. I. 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) Proiectarea bazelor de date relaionale orientate obiect (modelarea orientata pe obiect cu UML, proiectarea diagramelor de clas i de obiecte cu programul Visio) Proiectarea bazelor de date relaionale cu programul ACCESS (tabele, formulare, interogri, rapoarte, comenzi macro, securitate) Limbaje de manipulare a datelor relaionale Concepte de baza ale limbajului SQL Limbajul SQL ACCESS - SQL SINTEZE ASUPRA PROGRAMEI ANALITICE Cursul este structurat n 3 pri, astfel: Partea I. Concepte ale bazelor de date relaionale Partea a_II-a. Access Partea a_III_a. SQL Partea I. Concepte ale bazelor de date relaionale n 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,
- 2. 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 relaional O 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
- 3. 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.
- 4. Modelul entitate-relaie Una 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. Entitate Entitatea 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.
- 5. 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 lucreaza_in SARCINA conduce apartine_la SALARIAT atasat_la PROIECT Relaie Relaia (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!
- 6. 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). Atribut Atributul 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- relaie Pentru 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.
- 7. SALARIAT cod_salariat nume prenume sex salariu atasat_la M(0) M(0) PROIECT nr_proiect descriere buget_alocat data_initiala functia 1 1 M(0) apartine_la conduce 1(0) lucreaza_in 11 DEPARTAMENT cod_departament nume nr_cladire cod_salariat M SARCINA nr_proiect nr_sarcina data_inceperii stare 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
- 8. asociat_la combin cod_salariat cu nr_proiect, prin SALARIAT_asociat la_PROIECT va defini o relaie i nu o entitate). urmare, Probleme 1.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. IMPRUMUTA relaie avnd cardinalitatea m:m care leag entitile CITITOR i CARTE. 5. APARTINE relaie care leag atributele CARTE i DOMENIU. Relaia are cardinalitatea maxim m:1, iar cardinalitatea minim 1:1. CITITOR CARTE M(1) codel# titlu autor pret nrex M(0) imprumuta M(0) 1 apartine codec# nume dep DOMENIU coded# intdom 2.Evidena colilor de oferi din Romania. Completai relaiile (lucreaza_la, conduce, sustine, asista, instruieste) dintre entiti i specificai cardinalitatea! SCOALA cod_scoala# CLIENT cod_client#
- 9. INSTRUCTOR cod_instructor# EXAMEN cod_examen# EXAMINATOR cod_examinator# MASINA cod_masina# 3. Campionatele de fotbal ale diferitelor ri ECHIPA Cod_echipa# Nume Oras M(1) sustine M(1) SPONSOR M(1) Cod_sponsor# Nume 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# Modelul relaional Modelul relaional a fost conceput i dezvoltat de E.F. Codd. El este un model formal de organizare conceptual a datelor, destinat reprezentrii legturilor dintre
- 10. 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. Caracteristicile unui model relaional: structura relaional a datelor; operatorii modelului relaional; regulile de integritate care guverneaz folosirea cheilor n model. 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.
- 11. 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.
- 12. 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 AGENT_TERITORIAL zona comision PROIECT nr_proiect# descriere buget_alocat PROGRAMATOR limbaj nivel apartine_la conduce lucreaza_in DEPARTAMENT cod_departament# nume nr_cladire cod_salariat SARCINA nr_proiect# nr_sarcina# data_inceperii stare casatorit 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, 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); cod_sot,
- 13. 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.
- 14. 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:
- 15. 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 SQL Componentelor 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. Tabele Unitatea 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 1 2 3 Drama ActAv Comedie MPA A_CO DRAT ING R R PG-13 4 5 6 ActAv ActAv ActAv PG-13 R PG-13 7 8 9 Drama ActAv ActAv PG-13 R PG-13 10 11 12 13 14 15 16 17 18 Drama Romantic Comedie Comedie Drama Drama Comedie Romantic Drama R PG-13 PG-13 PG-13 R R PG-13 PG-13 R FILM_NUME PRET_INCHIR _VHS PRET_INCHIR _DVD AN_P RODU S 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 Matchstick Men Could Mountain Road to Perdition The School of Rock 13 Going on 30 Monster 58.97 15.95 14.95 19.96 19.96 29.99 2003 2003 2003 11.95 24.99 29.99 19.99 29.99 29.99 2003 2003 2003 14.95 50.99 12.98 19.94 29.98 39.99 2003 2004 2003 49.99 6.93 9.95 6.93 24.99 9.99 11.69 14.94 24.99 14.98 14.97 19.94 19.97 29.99 14.99 29.99 28.95 29.99 2003 2002 2004 2003 2003 2003 2004 2003
- 16. 19 ActAv Strain 20 PG-13 R The Day Tomorrow Das Boot After 12.98 29.98 2004 17.99 19.94 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. Relaii Relaiile 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.
- 17. FILM FILM_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) Restricii O 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
- 18. 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. Index Un 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..
- 19. 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. Vizualizri O 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).
- 20. Proiectate bazele de date relaionale Aceast 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 normalizrii Normalizarea 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.
- 21. 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 DATA_CUM PARARE en, fr R Sub 17 ani necesita prezenta parintilor sau a unui adult Mystic River 200 3 2 Ac lA d en, fr, es R Sub 17 ani necesita prezenta parintilor sau a unui adult The Last Samurai 2 Ac tA v en, fr, es R Sub 17 ani necesita prezenta parintilor sau a unui adult 3 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 PG-13 Parintii avertizati en PG-13 en, fr PG-13 1 3 4 MEDIA _FORM AT PRETINCHI RIERE 01/01/2005 DVD 19.96 200 3 01/10/2005 DVD 19.96 The Last Samurai 200 3 01/10/2005 VHS 15.95 sunt Something's Gotta Give 200 3 01/10/2005 DVD 29.99 Parintii avertizati sunt Something's Gotta Give 200 3 2/15/2005 DVD 29.99 Parintii avertizati sunt The Job 200 3 2/15/2005 DVD 19.99 Italian DAT A_VA NZA RE 1/30/2 005 Figura 1-3 Tabelul FILM far normalizare Anomalia de inserare Anomalia 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.
- 22. Anomalia de tergere Anomalia 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 actualizare Anomalia 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 normalizare De 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
- 23. 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 unic Primul 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 repetate
- 24. O 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 rnduri FIL M_I D 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 DATA_ CUMPA RARE Dram a Drama en, fr R Mystic River 20 03 en, fr, es R The Last Samurai en, fr, es R en 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 1 N R _ C O PI E 1 2 1 AclA d 2 2 ActA v 3 1 Come die Actiune si aventur a Actiune si aventur a Comedi e 3 2 Come die Comedi e en PG13 Parintii avertizati sunt 4 1 ActA v Actiune si aventur a en, fr PG13 Parintii avertizati sunt DA TA_ VA NZ AR E MEDI A FORM AT PRET _INC HIR 01/01/20 05 DVD 19.96 20 03 01/10/20 05 DVD 19.96 The Last Samurai 20 03 01/10/20 05 VHS 15.95 Something' s Gotta Give Something' s Gotta Give The Italian Job 20 03 01/10/20 05 DVD 29.99 20 03 2/15/200 5 DVD 29.99 20 03 2/15/200 5 DVD 19.99 1/30 /200 5 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
- 25. 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:
- 26. 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 Mystic River 2 1 AclA d Actiune si aventura R Sub 17 ani necesita prezenta parintilor sau a unui adult The Samurai Last 2 2 ActA v Actiune si aventura R Sub 17 ani necesita prezenta parintilor sau a unui adult The Samurai Last 3 1 Come die Comedie PG-13 Parintii avertizati sunt 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 MEDIA FORMAT PRET _INC HIR 01/01/ 2005 DVD 19.96 01/10/ 2005 DVD 19.96 01/10/ 2005 VHS 15.95 DVD 29.99 2/15/2 005 DVD 29.99 2/15/2 005 DVD 19.99 01/10/ 2005 DAT A_VA NZAR E 1/30/2 005 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
- 27. 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 pariale nainte 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
- 28. 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_DESCRIER E MPAA_ COD_R ATING 1 Drama Drama R 2 ActAv Actiune si aventura R 3 Comed ie Comedie PG-13 4 ActAv Actiune si aventura PG-13 MPAA_DESCRIERE _RATING FILM_NUME 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 AN_PRO DUS Mystic River 2003 The Last Samurai Something's Gotta Give The Italian Job 2003 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 NR_ COPIE DATA_CUMPARARE 1 2 2 3 3 4 1 1 2 1 2 1 01/01/2005 01/10/2005 01/10/2005 01/10/2005 2/15/2005 2/15/2005 DATA_VAN ZARE 1/30/2005 MEDIA FORMAT PRET_INCHIR DVD DVD VHS DVD DVD DVD 19.96 19.96 15.95 29.99 29.99 19.99 Figura 1-6. Soluia pentru a doua form normal A treia form normal: eliminarea dependenelor tranzitive Pentru 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_DESCRIEREription depinde de atributul GEN_COD, iar MPAA Ratifig 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.
- 29. 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 GEN_ COD MPAA_ COD_R ATING FILM_NUME PRET_ INCHIR VHS 1 Drama Mystic River 58.97 R 2 ActAv R The Samurai Comedi e PG-13 Something's Gotta Give 14.95 3 The Italian Job 11.95 4 ActAv PG-13 PRET_ INCHIR DVD 19.96 AN_PRODUS 2003 Last 15.95 19.96 2003 29.99 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 19.99 2003 _ MEDIA_FORMA T DVD DVD VHS DVD DVD DVD
- 30. 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.
- 31. 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.
- 32. M PAA_RATING M PAA_COD_RATING MPAA_DESCRIERE_VARSTE PK FILM_LIMBA FILM _ID COD_LIM BA PK,FK1 PK,FK2 FILM FILM _ID FILM_COD_GEN M PAA_COD_RATING FILM_NUM E RETAIL_PRET_VHS RETAIL_PRET_DVD AN_PRODUS FILM_COPII FILM _ID NUM AR_COPIE DATA_CUMPARARE DATA_VANZARE FORMAT_M EDIA PK FK1 FK2 PK,FK1 PK FILM _GEN FILM _COD_GEN FILM_DESCRIERE_GEN FILM_INCHIRIERE FILM _ID NUM AR_COPIE TRANZACTIE_ID DATA_INTOARCERE COST_INCHIRIERE COST_INTARZIERE_SAU_PIERDERE DATA_RETURNARE PK PK,FK1 PK,FK1 PK,FK2 LIM BA COD_LIM BA NUME_LIM BA CLIENT_COD_PERSOANA CLIENT_CONT_ID PERSOANA_ID PERSOANA PERSOANA_ID PERSOANA_PRENUM E PERSOANA_NUME_M IJLOCIU PERSOANA_NUME PERSOANA_ADRESA_1 PERSOANA_ADRESA_2 PERSOANA_ADRESA_ORAS PERSOANA_ADRESA_JUDET_PROV PERSOANA_ADRESA_COD_POSTAL PERSOANA_ADRESA_TARA PERSOANA_TELEFON NASTERE_DATA MOARTE_DATA PK PK,FK1 PK,FK2 CLIENT_CONT CLIENT_CONT_ID PK CLIENT_HOLD_IND DATA_INSCRIS DATA_TERMINAT CLIENT_DEPOZIT_SUM A CARD_CREDIT_LA_DOSAR_INDIC COPIL_INCHIRIERE_PERM IS_INDIC PK CLIENT_TRANZACTIE TRANZACTIE_ID CLIENT_CONT_ID ANGAJAT_PERSOANA_ID TRANZACTIE_DATA VANZARI_TAXA ANGAJAT PERSOANA_ID SUPERVISOR_PERSOANA_ID ANGAJAT_TAXA_ID ANGAJAT_JOB_CATEGORIE ANGAJAT_RATA_PE_ORA ANGAJARE_DATA INCHIDERE_DATA PK FK1 PK,FK1 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:
- 33. CURS_SUDENT NrMatricol NumeSt 458 Predescu 521 Radu 627 Cristescu 746 Irimia 782 Tanase 982 Bunea 1204 Dragnea S1520 Popa PrenumeSt Alexandru George Lucian Diana Daciela Mihaela Liviu Marius Grupa 114 122 243 361 341 114 412 452 Cursuri-Nota engleza-7,germana-8 desen-tehnic-10,franceza-7 programare-8,engleza-10 analiza numerica-9 gernana-6,programare-10 rezistenta materialelor-8 educatie fizica-10 analiza numerica-7,engleza-9 Coloana Cursuri conine mult prea multa informaie. S presupunem c am nlocui coloana Cursuri cu dou noi coloane: CURS_SUDENT NrMatricol 458 521 627 746 782 NumeSt Predescu Radu Cristescu Irimia Tanase PrenumeSt Alexandru George Lucian Diana Daciela Grupa 114 122 243 361 341 982 1204 1520 Bunea Dragnea Popa Mihaela Liviu Marius 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 Curs2 germana franceza engleza Nota2 8 7 10 programare 10 engleza 9 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 Denumire NrMatricol NumeSt PrenumeSt Grupa IdCurs 458 Predescu Alexandru 114 4 germana 521 Radu George 122 3 franceza 521 Radu George 122 5 desen tehnic 627 Cristescu Lucian 243 1 programare 627 Cristescu Lucian 243 2 engleza 746 Irimia Diana 361 8 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.
- 34. 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 NrMatricol 782 982 458 Nota 5 10 7 3 4 4 5 5 521 627 1520 521 1740 7 8 8 10 6 IdCurs 1 2 3 4 5 6 7 8 CURS Denumire programare engleza franceza germana desen tehnic Rezistenta materialelor Educatie Fizica analiza numerica 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)
- 35. 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 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?
- 36. 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. Redundan logic. Cuplul (AIRBUS, 250) apare de trei ori. 2. 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. 3. Anomalie la tergere. Dac este tears nregistrarea pentru care A# este 4, atunci se pierde informaia c un avion CAR are capacitatea 100. 4. 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. 4. Exemplu: variante pentru a implementa FN1 pentru tabelul MASINA: Persoana Vehicul Eu R25 - W14 - R21 Tu 205 El R5 - 305 noi BX - 305 - R12 - R25 Varianta 1 Persoana Eu Eu Vehicul R25 W14
- 37. Eu Tu El El Noi Noi R21 205 R5 305 BX 305 Noi Noi R12 R25 Varianta 2 Persoana Prima Doi Trei Eu R25 W14 R21 Tu 205 El R5 305 Noi BX 305 R12 Patru R25 Varianta 3 (4 tabele) Masina 31 (similar se definesc Masina_32, Masina_33, Masina_34).. Persoana Vehicul Eu R25 Tu 205 El R5 Noi BX Masina_34 Persoana Vehicul Noi R25 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# JOB_COD NR_PROIECT# FUNCTIA SUMA S1 PROGRAMATOR P1 SUPERVIZOR 60 S1 PROGRAMATOR P2 CERCETATOR 25
- 38. S1 PROGRAMATOR P3 AUXILIAR 10 S3 S5 VANZATOR INGINER P3 P3 SUPERVIZOR SUPERVIZOR 60 60 ATASAT_2A COD_SALARIAT# NR_PROIECT# FUNCTIA SUMA S1 P1 SUPERVIZOR 60 S1 P2 CERCETATOR 25 S1 S3 P3 P3 AUXILIAR SUPERVIZOR 10 60 S5 P3 SUPERVIZOR 60 ATASAT_2B COD_SALARIAT# JOB_COD S1 PROGRAMATOR S3 S5 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
- 39. 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).
- 40. PARTEA a_II_a ACCESS n acest parte a cursului de baze de date, se prezint aplicaia Microsoft Access n 7 lecii dup cum urmeaz: LECIA 1. Elemente introductive despre ACCESS LECIA 2. TABELE LECIA 3. Operatori i Funcii LECIA 4. Stabilirea relaiilor tre tabele LECIA 5. INTEROGRI LECIA 6. FORMULARE LECIA7. RAPOARTE LECIA 1. Elemente introductive despre ACCESS n acest lecie se vor prezenta NOIUNILE Conceptul de baz de date Componentele unei baze de date Crearea, Crearea unei baze de date vid Deschiderea unei baze de date existente nchiderea unei baze de date Conversii, Compactri, Reparaii) Ce este o baz de date O baz de date este o colecie de informaii interrelaionate gestionate ca o singur unitate.Aceast definiie este intenionat 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 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. Conceptul de baz de date ACESS O baz de d