Download - Curs Baze Date
-
8/14/2019 Curs Baze Date
1/188
Informaii Curs- Baze de date Anul III-Informatic
Disciplin obligatorie; Anul III, Sem. 5, ore sptmnal, nvmnt de zi: 2curs, 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 degestiune 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 luiCodd, caracteristicile modelului relational, normalizare, forme normale,dependene funcionale)
Proiectarea bazelor de date relaionale orientate obiect (modelarea orientatape obiect cu UML, proiectarea diagramelor de clas i de obiecte cuprogramul 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 ANALITICECursul 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 daterelaionale.O baz de date este o colecie de informaii interrelaionate gestionate ca o
singur unitate. A ceast definiie este foarte larg, deoarece exist mari diferenentre 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 defiiere 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 ocolecie de date i alte obiecte.
Un obiectal bazei de date este o structur de date denumit, stocat n baz dedate, cum ar fi un tabel, o vizualizare sau un index.
Exist mari diferene ntre implementrile furnizorilor de baze de date. nmajoritatea sistemelor de baze de date, datele sunt stocate n mai multe fiiere fizice,
-
8/14/2019 Curs Baze Date
2/188
dar nMicrosoft Access toate obiectele bazei de date, mpreun cu datele care aparinunei baze de date sunt stocate ntr-un singur fiier fizic.(Un fiier este o colecie denregistrri nrudite stocate ca o singur untiate de sistemul de operare alcalculatorului.) Totui, unul dintre principalele avantaje ale bazelor de date relaionaleeste faptul c detaliile de implementare fizic sunt separate de definiiile logice ale
obiectelor bazei de date, astfel nct majoritatea utilizatorilor bazei de date nu aunevoie s tie unde (i cum) sunt stocate obiectele bazei de date n sistemul de fiiereal calculatorului. De fapt , pe msur ce vei nva limbajul SQL , vei vedea c nueste nevoie s specificai numele unui fiier fizic ntr-o instruciune SQL dect atuncicnd 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 prescurtrivor fi folosite n acest expunere.
Bazele de date relaionale sunt definite i prezentate n seciunea urmtoare aacestu capitol.
Sistemul DBMS pune la dispoziie toate serviciile de baz necesare pentruorganizarea 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, dactranzacia reuete, toate modificrile efectuate de tranzacie sunt nregistrate n bazde date; dac tranzacia eueaz, nici una dintre modificri nu este nregistrat n bazde date.Totui, reinei ca unele sisteme RDBMS nu asigur suportul pentru tranzacii.
Accept un limbaj de interogare, care reprezint sistemul de comenzi folositde 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 imodificarea 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 familiarelortabele bidimensionale, similar cu o foaie de calcul tabelar. Spre deosebire de o foaiede calcul tabelar, nu este obligatoriu ca datele s fie stocate ntr-o form tabelar, iarmodelul permite i combinarea tabelelor (crearea uniunilor (joining), n terminologiarelaional) pentru formarea vizualizarilor, care sunt prezentate tot ca tabele
bidimensionale. Flexibilitatea extraordinar a bazelor de date relaionale este dat de
-
8/14/2019 Curs Baze Date
3/188
posibilitatea de a folosi tabelele independent sau n combinaii, fr nici o ierarhie sausecvena predefinita n care trebuie s se fac accesul la date.
Un model este o reprezentare a obiectelor i evenimentelor lumii reale i aasocierilor dintre ele. De fapt, el reprezint o abstracie asupra aspectelor
semnificative ale unei ntreprinderi, ale unui sistem real, ignornd proprietileaccidentale. Modelul este cel pe care utilizatorii trebuie s-l cunoasc; implementareaunui model este cea pe care utilizatorii nu este necesar s o cunoasc. Diferena dintremodel i implementare este, de fapt, un caz special i important al deosebirii uzualedintre logic i fizic.
Modelele se impun prin sintaxa i prin semantica lor i, din acest punct devedere, 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 fidelfenomene ale lumii reale, s urmreasc evoluia acestei lumi i comunicarea dintrefenomenele lumii reale.
Modelul trebuie s asigure conceptele de baz care permit proiectantului bazeide date i utilizatorilor s comunice, fr ambiguiti, cunotinele lor privind
funcionarea i organizarea modelului real analizat. Prin urmare, un model de datetrebuie 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) esteformat din entiti care au anumite proprieti, c fiecare entitate are oidentitate, 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 pentrureprezentarea conceptelor semantice anterioare.
Se dau reguli de integritate formale i generale (constrngeri) care sreflecte restriciile la care este supus modelul.
Se definete o mulime de operatori formali prin care pot fi prelucrate ianalizate obiectele formale.
-
8/14/2019 Curs Baze Date
4/188
Modelul entitate-relaie
Una dintre cele mai cunoscute abordri ale modelrii semantice (cu siguranuna 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 moduride ctre acesta i de muli ali cercettori, ca un model de date conceptual, pentru auura proiectarea bazelor de date. Pentru reprezentarea grafic a modelului suntutilizate diagramele E/R, care sunt modele neformalizate pentru reprezentarea unuimodel, unui sistem din lumea real.
Diagramele E/Rconstituie o tehnic de reprezentare a structurii logice a bazeide date, ntr-o manier grafic. Aceste diagrame ofer un mijloc simplu i inteligibilde comunicare a caracteristicilor importante ale designului unei anumite baze de date.
Diagrama E/R este un model de date conceptual de nivel nalt, independent deplatforma hardware utilizat i de tipul SGBD-ului. Modelul este constituit dinconcepte care descriu structura bazei de date i tranzaciile de regsire sau
reactualzare asociate.Popularitatea modelului E/R ca modalitate de abordare a proiectrii bazelor dedate poate fi atribuit n principal tehnicii de realizare a diagramelor E/R. Aceasttehnic, 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 mparteelementele 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 ndefinirea 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 altentitate 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 fiun obiect cu existen fizic, real sau poate fi un obiect cu existen conceptual,abstract.
Cheia primar este un identificator unic n cadrul entitii, fcnd distincientre 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.
-
8/14/2019 Curs Baze Date
5/188
Entitile sunt substantive, dar nu orice substantiv este o entitate. Trebuieignorate 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.
lucreaza_in conduceapartine_la
atasat_la
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!
DEPARTAMENT
SALARIAT
SARCINA
PROIECT
-
8/14/2019 Curs Baze Date
6/188
Relaia SALARIAT_lucreaza_in_DEPARTAMENT are cardinalitateamaxim 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 minimone-zero (1:0).
Asupra entitilor participante ntr-o relaie pot fi impuse constrngeri caretrebuie s reflecte restriciile care exist n lumea real asupra relaiilor. O clas deconstrngeri, numite constrngeri de cardinalitate, este definit de numrul denregistrri posibile pentru fiecare entitate participant (raport de cardinalitate). Celmai 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 unfilm), 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 specificaiilemodelului (exemple, contraexemple, caracteristici). Pentru fiecare atribut trebuie specificat numele, tipul fizic (integer, float,
charetc.), valori posibile, valori implicite, reguli de validare, constrngeri,tipuri compuse.
Diagrama entitate- relaiePentru proiectarea diagramei entitate-relaieau 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.
-
8/14/2019 Curs Baze Date
7/188
1
11 M
Diagrama Entitate/relaie
Cazuri speciale de entiti, relaii, atribute i modul lor de reprezentare ncadrul diagramei entitate-relaie.
1. Entitate dependent nu poate exista n mod independent (SARCINAdepinde 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 nsuperentitate. Exist o relaie ntre o subentitate i o superentitate, numitISA, 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 aunei alte entiti, atunci el refer o relaie (cod_departament n tabelulSALARIAT).
5. Entitate sau relaie? Se cerceteaz cheia primar. Dac aceasta combin cheileprimare a dou entiti, atunci este vorba de o relaie. (cheia primar a relaiei
conduce lucreaza_inapartine_la
SALARIATcod_salariatnume
prenumesexsalariu
PROIECTnr_proiectdescriere
buget_alocat
DEPARTAMENTcod_departamentnumenr_cladirecod_salariat
SARCINAnr_proiectnr_sarcinadata_inceperiistare
atasat_la
data_initialafunctia
1 M(0)
1(0)
M(0) M(0)
-
8/14/2019 Curs Baze Date
8/188
asociat_la combin cod_salariat cu nr_proiect, prin urmare,SALARIAT_asociat la_PROIECTva defini o relaie i nu o entitate).
Probleme1.S se creeze modelul E/R pentru gestiunea activitilor de mprumut dintr-obibliotec
S-a presupus (restrictiv) c ntr-o zi un cititor nu poate mprumuta, demai 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 mprumutacri. 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 entitileCITITOR i CARTE.
5. APARTINE relaie care leag atributele CARTE i DOMENIU. Relaiaare cardinalitatea maxim m:1, iar cardinalitatea minim 1:1.
2.Evidena colilor de oferi din Romania. Completai relaiile (lucreaza_la,conduce, sustine, asista, instruieste) dintre entiti i specificai cardinalitatea!
CITITORcodec#
numedep
CARTEcodel#titluautor
pretnrex
DOMENIUcoded#intdom
imprumuta
apartine
M(1) M(0)
M(0) 1
SCOALAcod_scoala#
CLIENTcod_client#
-
8/14/2019 Curs Baze Date
9/188
3. Campionatele de fotbal ale diferitelor ri
M(1) sustine M(1) M(1)
2
joacaM(1)
M(1)
apartine_de1
M(1)atasata_la1
Modelul relaional
Modelul relaional a fost conceput i dezvoltat de E.F. Codd. El este un modelformal de organizare conceptual a datelor, destinat reprezentrii legturilor dintre
INSTRUCTORcod_instructor#
MASINAcod_masina#
EXAMENcod_examen#
EXAMINATORcod_examinator#
ECHIPA
Cod_echipa#NumeOras
SPONSOR
Cod_sponsor#Nume
MECITara#
Nr_etapa#
Cod meci#
ETAPATara
Nr_etapa
CAMPIONATTara#
-
8/14/2019 Curs Baze Date
10/188
date, bazat pe teoria matematic a relaiilor. Modelul relaional este alctuit numai dinrelaii 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 StructuredQuery Language;
un sistem de baze de date care respect principiile modelului relaionalintrodus 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 inginerieisoftware:informaie, proces, integritate.
Structura datelorDefinirea noiunilor de domeniu, relaie, schem relaional, valoare null i
tabel vizualizare (view).
Conceptele utilizate pentru a descrie formal, uzual sau fizic elementele de bazale organizrii datelor sunt date n urmtorul tabel:
Formal Uzual Fizic
relaietupluatribut
domeniu
tablouliniecoloan
tip de dat
fiiernregistrarecmp
tip de dat
Reguli de integritate sunt aseriuni pe care datele coninute n baza de datetrebuie 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 respecteun SGBD relaional. Restriciile de integritate minimale sunt definite n raport cunoiunea 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.
-
8/14/2019 Curs Baze Date
11/188
Fiecare relaie are cel puin o cheie. Una dintre cheile candidat va fialeas 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 fiesubliniate, 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 dincadrul unei relaii care conine o cheie a relaiei poart numele de supercheie.
Fie schemele relaionaleR1(P1, S1) iR2(S1, S2), undeP1 este cheie primarpentruR1, S1 este cheie secundar pentruR1, iarS1 este cheie primar pentruR2. nacest caz, vom spune c S1 este cheie extern (cheie strin) pentruR1.
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 nuconine chei externe.
Entitile dependente devin tabele dependente. Cheia primar aentitilor 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, iarcheia primar este aceast cheie extern (cheia primar a subentitiiPROGRAMATOR este cod_salariatcare este o cheie extern).
Transformarea relaiilor
Relaiile 1:1 i 1:n devin chei externe. Relaia conduce devine coloan ntabelul DEPARTAMENT, iar relaia lucreaza_in devine coloan n tabelulSALARIAT. 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 douchei externe pentru cele dou tabele asociate. Cheia primar estecompunerea acestor dou chei externe plus eventuale coloane adiionale.Tabelul se deseneaz punctat.
Relaiile de tip trei devin tabele asociative. Cheia primar estecompunerea a trei chei externe plus eventuale coloane adiionale.
Transformarea atributelor
Un atribut singular devine o coloan.
-
8/14/2019 Curs Baze Date
12/188
Atributele multiple devin tabele dependendente ce conin cheia primar aentitii i atributul multiplu. Cheia primar este o cheie extern, plus unasau mai multe coloane adiionale.
Entitile devin tabele, iar atributele lor devin coloane n aceste tabele. Cedevin atributele relaiilor? Pentru relaii 1:1 i 1:n, atributele relaiilor vor aparinetabelului care conine cheia extern, iar pentru relaii m:n i de tipul trei, atributele vorfi plasate n tabelele asociative.
Schemele relaionale corespunztoare acestei diagrame conceptuale sunturmtoarele:
SALARIAT(cod_salariat#, nume, prenume, sex, job_cod, cod_sot,forma_plata, nr_depart);
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);
PROIECTnr_proiect#descriere
buget_alocat
SARCINAnr_proiect#nr_sarcina#data_inceperiistare
DEPARTAMENTcod_departament#numenr_cladirecod_salariat
AGENT_TERITORIALzona
comision
PROGRAMATORlimbajnivel
SALARIATcod_salariat#salariunumesex
job_cod
conduce lucreaza_in
apartine_la
ATASAT_LAcod_salariat#nr_proiect#functie
TELFONcod_salariat#nr_telefon#
casatorit
-
8/14/2019 Curs Baze Date
13/188
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 cadrulaceleiai 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 deintegritate,
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 unsistem de gestiune a bazelor de date poate fi apreciat ca relaional. Nici un sistem degestiune a bazelor de date pus n vnzare pe piaa comercial nu respect absolut toateregulile definite de Codd, dar acest lucru nu mpiedic etichetarea acestor sistemedrept relaionale.
Nu trebuie apreciat un SGBD ca fiind relaional sau nu, ci msura n careacesta este relaional, deci numrul regulilor lui Codd pe care le respect.
Regula 1 regula gestionrii datelor. Un SGBD relaional trebuie s fiecapabil s gestioneze o baz de date numai prin posibilitile sale relaionale.
-
8/14/2019 Curs Baze Date
14/188
Regula 2 regula reprezentrii informaiei. ntr-o baz de date relaional,informaia este reprezentat la nivel logic sub forma unor tabele ce poart numele derelaii.
Regula 3 regula accesului garantat la date. Fiecare valoare dintr-o baz dedate 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 pentrureprezentarea 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 aplicaaceleai operaii ca i asupra datelor din baza de date.
Regula 6 regula limbajului de interogare. Trebuie s existe cel puin unlimbaj pentru prelucrarea bazei de date.
Regula 7 regula de actualizare a vizualizrii. Un SGBD trebuie s poatdetermina dac o vizualizare poate fi actualizat i s stocheze rezultatul interogriintr-un dicionar de tipul unui catalog de sistem.
Regula 8 regula limbajului de nivel nalt. Regulile de prelucrare asupraunei 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 iactivitile utilizatorilor nu depind de modul de depunere a datelor sau de modul deacces 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 nprogramul 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 componentprocedural a unui SGBD trebuie s respecte aceleai restricii de integritate ca icomponenta relaional.
Deoarece regulile lui Codd sunt prea severe pentru a fi respectate de unSGBD operaional, s-au formulat criterii minimale de definire a unui sistem degestiune 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 compunerenatural, fr limitri impuse din considerente interne.
Un SGBD este complet relaional dac este minimal relaional i satisface nplus condiiile:
-
8/14/2019 Curs Baze Date
15/188
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 utilizatepentru a construi obiectele bazelor de dae pe care le vom folosi .
Instruciunile SQL folosite pentru crearea acestor componente ale bazei dedate 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. Fiecaretabel reprezint o entitate, ceea ce nseamn o persoan, un loc sau un lucru caretrebuie s fie reprezentat n baza de date, cum ar fi un client, un cont bancar sau otranzacie bancar. Fiecare rnd al tabelului reprezint o apariie a entitii. Figura 1-1reprezint listingul parial al unui tabel numit FILM(filme).
Tabelul FILM este parte a unei baze de date pentru un magazin de produsevideo, folosit ca exemplu n toat aceast curs. Tabelul FILM conine date care descriufilmele disponibile n magazinul de produse video. Fiecare rnd din tabel reprezintun film, iar fiecare coloan reprezint o caracteristic a filmului respectiv, cum ar fititlul filmului sau categoria MPAA(Motion Picture Associationof America care a fostfondat n 1972 n America ca asociaie a productorilor de film pe lng industriacinematografic)
FILM_ID FILM_COD_GEN
MPAA_CODRATING
FILM_NUME PRET_INCHIR_VHS PRET_INCHIR_DVD AN_PRODUS
1 Drama R Mystic River 58.97 19.96 20032 ActAv R The Last Samurai 15.95 19.96 20033 Comedie PG-13 Something`s Gotta
Give14.95 29.99 2003
4 ActAv PG-13 The Italian Job 11.95 19.99 20035 ActAv R Kill Bill: Vol 1 24.99 29.99 20036 ActAv PG-13 Pirates of the
Caraibbean: TheCurse of the Black
Pearl
29.99 29.99 2003
7 Drama PG-13 Big Fish 14.95 19.94 20038 ActAv R Man on Fire 50.99 29.98 20049 ActAv PG-13 Master and
Commander: The FarSide of the World
12.98 39.99 2003
10 Drama R Lost in translation 49.99 14.98 200311 Romantic PG-13 Two Weeks Notice 6.93 14.97 200212 Comedie PG-13 50 First Dates 9.95 19.94 200413 Comedie PG-13 Matchstick Men 6.93 19.97 200314 Drama R Could Mountain 24.99 29.99 200315 Drama R Road to Perdition 9.99 14.99
16 Comedie PG-13 The School of Rock 11.69 29.99 200317 Romantic PG-13 13 Going on 30 14.94 28.95 200418 Drama R Monster 24.99 29.99 2003
-
8/14/2019 Curs Baze Date
16/188
19 ActAv PG-13 The Day AfterTomorrow
12.98 29.98 2004
20 Strain R Das Boot 17.99 19.94 1981Figura 1-1 Listingul tabelului FILM
Se poate observa asemnarea dintre tabelele bazelor de date relaionale i foilede calcul tabelar. Totui, bazele de date relaionale ofer o flexibilitate mult mai maren 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 tocmaistocarea informaiilor ntre care exist legturi. De exemplu, pe lng filmele propriu-zise, putei stoca informaii despre categoriile folosite de magazin pentru organizareainventarelor de filme. n acelai timp, putei stoca i informaii despre copiile fiecruifilm, 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 aceeaiinterogare a bazei de date, dar pstrnd flexibilitatea de a include numai informaiilecare v intereseaz.Posibilitatea de a selecta din baza de date numai informaiile carev intereseaz v permite s ajustai informaiile din baz de date n funcie decerinele 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 produsevideo si relaiile dintre acestea, ntr-un format cunoscut sub numele de diagrama derelatii a entitatilor (ERD Entity Relationship Diagram). Fiecare dreptunghi dindiagrama reprezint un tabel relaional, cu numele tabelului scris deasupra linieiorizontale 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 fiecaretabel. UN tabel poate avea o singur cheie primar. Totui , o cheie primar poate ficompus 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, poartnumele de chieie extern. n figur 1-2, observai coloanele cheie extern folosite ntabelul FILM pentru crearea relaiilor cu tabelele FILM_GENRE i MPAA_RATINGi marcate cu identificatoarele i n dreapta numelui coloanei cheieextern. i coloana COD_LIMBA este marcat drept cheie extern , dar tabelulLANGUAGE i relaia acestuia cu tabelul FILM au fost omise din figura de mai sus.
Cheile primare i cheile externe sunt blocuri de construcie fundamentale alemodelului relaional, deoarece stabilesc relaii i permit crearea legturilor ntre date,atunci cnd este necesar. Trebuie s nelegei acest concept pentru a putea nelegecum funcioneaz bazele de date relaionale.
-
8/14/2019 Curs Baze Date
17/188
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 domeniulde 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 primeteun 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 sdenumeasc restriciile, deoarece numele generate automat de baz de date nu suntfoare descriptive. Totui , nu am denumit restriciile din baza de date folosit caexemplu n aceast carte, deoarece, din pcate, nu toate produsele RDBMSdisponibile 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 caresistemul RDBMS trateaz valoarea unei coloane pentru a indica faptul c valoareacoloanei respective nu este cunoscut. O valoare nul nu este acelai lucru un unspaiu 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 suntntotdeauna unice n ntreg tabelul.Atunci cnd cheia primar este definit pe maimulte coloane, combinaia valorilor acelor coloane trebuie s fie unic n tabel - ocoloan care reprezint doar o parte a valorii cheii primare poate conine valoriduplicate n tabel. Restriciile cheie primar sunt aproape inttotdeauna implementatede RDBMS prin folosirea unui index.Indexul este un tip special de obiect al unei bazededate care permite efectuarea cutrilor rapide n valorile coloanei.Atunci cnd ntabele sunt nserate rnduri noi, sistemul RDBMS verific automat indexul pentru a seasigura c cheia primar a noului rnd nu este deja folosit n tabel i , dac sentmpl acest lucru , respinge cererea de inserare. Cutarea n indexuri se face multmai repede dect cutarea n tabel;ca urmare, indexarea cheii primare este esenial
FILMFILM_ID
MPAA_RATING FILM_COD_GEN FILM_GENMPAA_COD_RATING MPAA_COD_RATING FILM_COD_GEN MPAA_DESCRIERE_RATING FILM_NUME FILM_DESCRIERE_GEN
RETAIL_PRET_VHSRETAIL_PRET_DVDAN_PRODUS
FILM_COPIIFILM_ID >NUMAR_COPIE DATA_CUMPARAREDATA_VANZAREFORMAT_MEDIA
-
8/14/2019 Curs Baze Date
18/188
pentru orice tabel, indiferent de dimensiunea acestuia, astfel nct cutarea cheilorduplicate 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 cheilorprimare, sistemul RDBMS folosete aproape ntotdeauna un index ca modalitate deimpunere eficient a restriciei.Totui, spre deosebire de cheile primare, un tabel poateavea definite mai multe restricii de unicitate, iar coloanele care particip la orestricie de unicitate pot conine ( n cele mai multe sisteme RDBMS ) i valori nule.
Restricia referenial (numit uneori restricie de integritatereferenial) O restricie care impune o relaie ntre dou tabele dintr-o baz de daterelaional. 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 inserezo 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 acheii 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 puinuna din nregistrrile din tabelul FILM. Pe scurt , restricia referenial garanteaz crelaia dintre cele dou tabele i valorile corespondente ale cheii primare i cheiiexterne 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 valoarelogic de adevrat (true) sau fals (false), astfel nct un rezultat adevrat s permitnserarea n tabel a valorii coloanei, iar un rezultat fals s duc la rejectarea valoriicoloanei , cu mesajul de eroare corespunztor.
IndexUn index reprezint o cale rapid de localizarei sortare a Inregistrarilor dintr-
o tabel prin gruparea tuturor nregistrrilor pentru un anumit atribur sau grup deatribute. 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 unanmit nume de familie..
-
8/14/2019 Curs Baze Date
19/188
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 ngreuneazactualizarea lor.Dupa fiecare operaie de actualiyare)inserare, modificare, tergere,trebuie verificai i actualiyai indecii.Folosirea lor trebuie bine ntemeiat altfelmresc timpul de rspuns al sistemuluii ocup spaiul suplimentar pe disc .
In Partea a-II-aAccess , se prezint modul de creare a indecilor i n ParteaIII, 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 valoareanull.
Vizualizri
O vizualizare (view) este o interogare stocat n baza de date i pune ladispoziia utilizatorului un subset personalizat al datelor din unul sau mai multe tabeleale bazei de date. Cu alte cuvinte, o vizualizare este un tabel virtual, deoarece arat caun 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-ieste permis s le vad).
Mascheaz coloanele pe care utilizatorul nu are nevoie s le vad (sau nu-ieste permis s le vad).
Mascheaz operaiile complexe efectuate n baza de date, cum ar fiuniunile de tabele (respectiv combinarea coloanelor din tabele multiplentr-o singur interogare a bazei de date).
mbuntete performanele interogrilor (n unele sisteme RDBMS,precum Microsoft SQL Server).
-
8/14/2019 Curs Baze Date
20/188
-
8/14/2019 Curs Baze Date
21/188
Anomaliile care apar n lucrul cu baza de date se produc datoritdependenelor 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 acesteprobleme (anomalii) din proiectul bazei de date.
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 nupermite acest lucru dect dac avei un film care s fie plasat n categoria respectivasipe care va trebui s-l adugai n tabelul FILM n acelai timp.Ar fi mult mai binedac ai putea adauga noile genuri nainte de primirea filmelor n magazin.
FILM_ID
GEN_COD
GEN_DESCRIERE
LANG_CODE
MPAA_COD_RATING
MPAA_RATING_DESC
FILM_NUME
AN_PRODUS
DATA_CUMPARARE
DATA_VANZARE
MEDIA_FORMAT
PRET-INCHIRIERE
1 Drama
Drama
en, fr R Sub 17 aninecesitaprezentaparintilor sau aunui adult
Mystic River 2003
01/01/2005 DVD 19.96
2 AclAd
ActAvsiaventura
en, fr,es
R Sub 17 aninecesitaprezentaparintilor sau aunui adult
The LastSamurai
2003
01/10/2005 DVD 19.96
2 ActAv
Actiunesiaventura
en, fr,es
R Sub 17 aninecesitaprezentaparintilor sau aunui adult
The LastSamurai
2003
01/10/2005 VHS 15.95
3 Comedie
Comedie
en PG-13 Parintii suntavertizati
Something'sGotta Give
2003
01/10/2005 1/30/2005
DVD 29.99
3 Comedie
Comedie
en PG-13 Parintii suntavertizati Something'sGotta Give 2003 2/15/2005 DVD 29.99
4 ActAv
Actiunesiaventura
en, fr PG-13 Parintii suntavertizati
The ItalianJob
2003
2/15/2005 DVD 19.99
-
8/14/2019 Curs Baze Date
22/188
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 exempludac primul film din tabel este singurul rnd din tabelul FILM pentru care coloanaGEN_COD are valoarea Drama , i este ters, se pierdeinformaia c a existatvreodat un gen numit Drama
Anomalia de actualizare
Anomalia de actualizare se refer la o situaie n care actualizarea unei singurevalori necesit actualizarea mai multor rnduri. De exemplu , dac n tabelul prezentatmai sus trebuie s modificai descrierea codului MPAA_COD_RATING R, trebuies modificai i toate rndurile din tabel pentru filmele cu codul respectiv. Problemesimilare apar i pentru coloana GEN_DESCRIERERIPTION. Chiar i coloana
PRET_INCHIR are aceast problem, deoarece toate copiile aceluiai film (cu aceeaivaloare 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 proiectareaunui sistem de prelucrare a datelor s nceap de la rezultatele pe care le va vedeautilizatorul, parcurgnd apoi drumul napoi ctre mijloacele folosite pentru obinerearezultatelor dorite. n timpul proiectrii bazei de date, procesul de normalizare esteaplicat fiecrei vizualizri , iar rezultatul este un set de relaii normalizate care pot fiapoi direct implementate ca tabele ale bazei de date relaionale.
Stpnirea procesului de normalizare cere timp i exerciiu, n specia deoareceimpune prouectantului s se gndeasc ntr-un mod conceptual la datele i relaiile pecare 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 evitfolosirea unor termeni fizici, precum tabel, coloan i cheie primar.
Dei relaia pe cale de a fi normalizat reprezint o propunere de tabel , ncnu exist ca tabel fizic, aa c termenul nu este foarte exact.
Procesul de normalizare este aplicat sistematic fiecrei vizualizri. Cel puinla 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. Rescriereavizualizrilor n relaii (tabele) cu date reprezentative este un proces obositor i
-
8/14/2019 Curs Baze Date
23/188
consumator de timp. Trebuie s fii foarte atent ca exemplele de date folosite pentruluarea deciziilor n procesul de normalizare s fie cu adevrat reprezentative pentrutipurile 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 relaiidect ai avea ntr-un model fr normalizare. Relaiile suplimentare sunt necesarepentru eliminarea anomaliilor, dar mprirea datelor n mai multe relaii face caextragerea datelor stocate s fie puin mai dificil.
Alegerea unui identificator unic
Primul pas al procesului de normalizare const n alegerea unui identificatorunic (unique identifier), care este un atribut (o coloan) sau un set de atribute careidentific n mod unic fiecare rnd de date dintr-o relaie.
Identificatorul unic va deveni ulterior cheia primar a tabelului creat dinrelaia normalizat. Pentru normalizare, este obligatoriu ca fiecare relaie s aib unidentificator unic. In multe cazuri, putei gsi un atribut care identific n mod unicdatele din fiecare rnd al relaiei pe care vrei s o normalizai. Atunci cnd nu puteigsi un singur atribut care s poat fi folosit ca identificator unic, este posibil s gsiimai multe atribute care pot fi concatenate (combinate) pentru a forma un identificatorunic. Atunci cnd identificatoarele unice sunt formate din atribute multiple, fiecareatribut rmne pe propria lui coloan - nu facei dect s definii un identificator unicformat din mai multe coloane, n foarte puine cazuri, ntr-o relaie nu exist un setrezonabil de atribute care s poat fi folosit ca identificator unic. Atunci cnd sentmpl acest lucru, trebuie s inventai un identificator unic, deseori cu valori
atribuite secvenial sau aleatoriu pe msur ce noile rnduri de date sunt adugate ntabelul bazei de date. Aceast tehnic este sursa unor identificatoare unice, precumnumrul de asigurri sociale folosit n Statele Unite, numerele de identificare aleangajailor sau numerele de nmatriculare ale mainilor.
Relaia FILM din figura 1-3 ne pune o problem n privina gsirii unuiidentificator 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 ctedou ori, aa c, fr nici un dubiu, aceast valoare nu este unic. Problema este cvaloarea FILM_ID identific n mod unic fiecare titlu, dar magazinul urmreteseparat fiecare copie a filmelor pe care le are n stoc Cauza este faptul c magazinul seocup 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 scurtdiscuie cu proprietarul magazinului, ajungei la concluzia c n relaia FILM nuexist nici o combinaie de atribute care s identifice n mod unic fiecare copie a unuifilm, aa c inventai un atribut numit NR_ COPIE i-1 adugai n relaie. Ori de cteori inventai un identificator unic (sau o parte a unui identificator) este foarteimportant 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 pentrufiecare valoare FILM_ID, ceea ce nseamn c valorile NR_ COPIE sunt unice numain combinaie cu valorile FILM_ID. Relaia rezultat este prezentat n figura 1 4
Prima form normal: eliminarea datelor repetate
-
8/14/2019 Curs Baze Date
24/188
O relaie este n prima form normal atunci cnd nu conine atribute cuvalori 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 coloantrebuie 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 deacest tip sunt mai greu de ntreinut, deoarece valorile din list trebuie s fie mai ntiseparate, astfel nct valorile individuale s poat fi modificate far a le afecta pecelelalte.
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 formnormal. Din punct de vedere logic, un grup repetitiv nu este diferit de un atributmultivaloare. De fapt, grupurile repetitive prezint deseori chiar mai multe probleme
dect atributele multivaloare, deoarece trebuie s adugai o nou coloan n tabel oride cte ori vrei s adugai mai multe valori dect a prevzut iniial proiectantul bazeide date (cum ar fi o a patra limb pentru un film). Bazele de date relaionale cer catoate rndurile dintr-un tabel s aib acelai numr de coloane, dar un tabel poateconine orice numr de rnduri
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 rndurirepetate ntr-un tabel separat .
Pentru transformarea relaiilor ne-normalizate n prima form normal, trebuie
s mutai atributele multivaloare i grupurile repetitive n noi relaii. Deoarecegrupurile repetitive reprezint un set de atribute care se repet mpreun, toate
FILM_ID
NR_COPI
E
GEN_COD
GEN_DESCRIERE
COD_LIMBA
MPAA_COD_RATING
MPAA_RATING_DESC
FILM_NUME
AN_PRODUS
DATA_CUMPARARE
DATA_VANZARE
MEDIAFORMAT
PRET_INCHIR
1 1 Drama
Drama en,fr
R Sub 17 aninecesita prezentaparintilor sau aunui adult
MysticRiver
2003
01/01/2005
DVD 19.96
2 1 AclAd
Actiunesiaventura
en,fr, es
R Sub 17 aninecesita prezentaparintilor sau aunui adult
The LastSamurai
2003
01/10/2005
DVD 19.96
2 2 ActAv
Actiunesiaventura
en,fr, es
R Sub 17 aninecesita prezentaparintilor sau aunui adult
The LastSamurai
2003
01/10/2005
VHS 15.95
3 1 Comedie
Comedie
en PG-13
Parintii suntavertizati
Something's GottaGive
2003
01/10/2005
1/30/2005
DVD 29.99
3 2 Comedie Comedie en PG-13 Parintii suntavertizati Something's GottaGive
2003 2/15/2005 DVD 29.99
4 1 ActAv
Actiunesiaventura
en,fr
PG-13
Parintii suntavertizati
The ItalianJob
2003
2/15/2005
DVD 19.99
-
8/14/2019 Curs Baze Date
25/188
atributele dintr-un grup repetitiv ar trebui mutate n aceeai relaie. Pe de alt parte, unatribut multivaloare (un atribut individual care are valori multiple) ar trebui s fiemutat ntr-o nou relaie proprie, nu s fie combinat cu alte atribute multivaloare nnoua 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 includeinumele relaiei originale, parial sau n ntregime, n numele noii relaii.
2. Copiai identificatorul unic din prima relaie n noua relaie. Datele depindde acest identificator n relaia original, aa c trebuie s depind de aceeai cheie in noua relaie. Identificatorul copiat va deveni cheie extern n noua relaie.
3. Mutai grupul repetitiv sau atributul multivaloare n noua relaie. (Amfolosit aici verbul a muta, deoarece aceste atribute sunt terse din relaia original.)
4. Formai un identificator unic n noua relaie, adugnd atribute laidentificatorul unic copiat din relaia original. Ca ntotdeauna, asigurai-v cidentificatorul 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 gruprepetitiv cu un singur atribut, este adugat atributul respectiv pentru formareaidentificatorului unic. Poate prea ciudat la prima vedere, dar identificatorul uniccopiat din relaia original nu este doar o cheie extern, ci, de obicei, i o parte aidentificatorului 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 partedin identificatorul unic (adic nu exist atribute care s nu fac parte din cheie).
5. Opional, putei s nlocuii cheia primar cu un singur atribut surogatpentru cheie. Dac facei acest lucru, trebuie s pstrai i atributele care compuncheia primar natural, format la paii 2 i 4.
Figura 1-5 prezint rezultatul aducerii relaiei din figura 1-4 la prima formnormal. Observai urmtoarele:
-
8/14/2019 Curs Baze Date
26/188
Am folosit o mic scurttur n cazul identificatorului unic n noua relaieFILM 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 seschimb ntre rndurile duplicate ale aceluiai film. Ca urmare, partea NR_ COPIE aidentificatorului unic din relaia FILM nu a fost copiat n noua relaie FILMLanguage. Dac a fi fcut acest lucru, a fi creat n noua relaie o problem specificcelei 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 debaze de date sintetizeaz cele trei forme normale i rescriu relaiile originale direct na treia form normal. Exersnd, vei putea i dumneavoastr s facei acelai lucru.
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 relaiaFILM Language, cu numele Language Code. (Numele abreviate ale atributelor din
FILM_ID
NR_COPIE
GEN_COD
GEN_DESCRIERE
MPAA_COD_RATING
MPAA_RATING_DESC
FILM_NUME AN_PR
ODUS
DATA_CUMPARARE
DATA_VANZARE
MEDIAFORMAT
PRET_INCHIR
1 1 Drama
Drama R Sub 17 ani necesitaprezenta parintilorsau a unui adult
Mystic River 2003
01/01/2005
DVD 19.96
2 1 AclAd
Actiunesiaventura
R Sub 17 ani necesitaprezenta parintilorsau a unui adult
The LastSamurai
2003
01/10/2005
DVD 19.96
2 2 ActAv
Actiunesiaventura
R Sub 17 ani necesitaprezenta parintilorsau a unui adult
The LastSamurai
2003
01/10/2005
VHS 15.95
3 1 Comedie Comedie PG-13 Parintii suntavertizati Something'sGotta Give 2003
01/10/2005 1/30/2005 DVD 29.99
3 2 Comedie
Comedie PG-13 Parintii suntavertizati
Something'sGotta Give
2003
2/15/2005
DVD 29.99
4 1 ActAv
Actiunesiaventura
PG-13 Parintii suntavertizati
The Italian Job 2003
2/15/2005
DVD 19.99
FILM_ID COD_LIMBA1 en
1 fr2 en2 fr2 es3 en4 en4 fr
-
8/14/2019 Curs Baze Date
27/188
figura 1-4 au fost folosite doar pentru ilustrare - este recomandabil s prescurtainumele numai dac este absolut necesar.)
Identificatorul unic din relaia FILM Language este format prin combinareaatributelor 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 dedependen funcional. Pentru aceast definiie, voi folosi dou atribute arbitrare,inteligent denumite A" i B". Atributul B este dependent funcional de atributul Adac n nici un moment nu exist mai mult de o valoare a atributului B asociat cu ovaloare dat a atributului A. In primul rnd, a spune c atributul B este funcionaldependent de atributul A nseamn i c atributul A determin atributul B sau c Aeste 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, poateexista o singur valoare FILM_NUME pentru o valoare FILM_ID dat. Chiar faptulc valoarea FILM_ID definete n mod unic valoarea FILM_NUME n relaienseamn c FILM_NUME este dependent funcional de FILM_ID.
Se spune c o relaie este n a doua form normal dac ndeplineteurmtoarele 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 sfie aa. Indiferent cte copii ale unui film avem n baza de date, toate au aceleaivalori pentru gen, categorie MPAA, TITLU i AN_PRODUS.
Unele atribute descriu filmul n sine, n timp ce altele descriu copiile pe care ledeine (sau le-a deinut) magazinul din filmul respectiv. In esen, am amestecatatribute 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 uniceconcatenate (adic formate din atribute multiple). ntr-o relaie care are un singuratribut ca identificator unic, este imposibil ca un alt atribut s depind de o parte aidentificatorului unic, deoarece acesta, fiind format dintr-un singur atribut, nu are pricomponente. Ca urmare, orice relaie n prima form normal care are cheia primarformat dintr-un singur atribut este automat n a doua form normal.
Dup ce descoperii o nclcare a celei de-a doua forme normale, soluia estes se mute atributele parial dependente ntr-o nou relaie, n care s depind dentreaga cheie primar. Figura 1-6 prezint aceast soluie. Toate atributele caredepind 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 suntntr-o relaie (numit FILM Copy) n care FILM_ID i NR_ COPIE formeaz
-
8/14/2019 Curs Baze Date
28/188
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_RATING
MPAA_DESCRIERE_RATING
FILM_NUMEAN_PRODUS
1 Drama Drama RSub 17 ani necesitaprezenta parintilorsau a unui adult
Mystic River2003
2 ActAvActiune siaventura
RSub 17 ani necesitaprezenta parintilorsau a unui adult
The LastSamurai 2003
3Comedie
Comedie PG-13Parintii suntavertizati
Something'sGotta Give 2003
4 ActAvActiune siaventura
PG-13Parintii suntavertizati
The ItalianJob 2003
FILM LANGUAGE:FILM_ID LANGUAGE_CODE1 En1 Fr2 En2 Fr2 Es3 En4 En4 Fr
FILM COPY:FILM ID NR_ COPIE DATA_CUMPARARE
DATA_VANZARE
MEDIA FORMAT PRET_INCHIR
1 1 01/01/2005 DVD 19.962 1 01/10/2005 DVD 19.962 2 01/10/2005 VHS 15.953 1 01/10/2005 1/30/2005 DVD 29.993 2 2/15/2005 DVD 29.994 1 2/15/2005 DVD 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 dedependen tranzitiv. Despre un atribut care depinde de un atribut care nu esteidentificator unic (cheie primar) a relaiei se spune c este dependent tranzitiv.
n relaia FILM din figura 1 -6, observm c atributulGEN_DESCRIEREription depinde de atributul GEN_COD, iar MPAA RatifigDescription depinde de MPAA_COD_RATING. Pericolul pstrrii acestor descrierin relaia FILM este faptul c, n final, cele dou atribute ajung s depind denregistrarea unui film, ceea ce duce la toate cele trei anomalii de date prezentate mai
devreme n acest capitol.
-
8/14/2019 Curs Baze Date
29/188
Se spune c o relaie este n a treia form normal dac ndeplineteurmtoarele 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 formnormal, se mut atributele dependente tranzitiv n relaii n care depind numai decheia primar. Se las atributul de care depind acestea n relaia original, cu rolul decheie extern.Va trebui apoi s reconstruim vizualizarea original printr-o uniune.
Ca efect secundar, toate atributele uor de calculat sunt eliminate ca nclcriale criteriilor celei de-a treia forme normale. De exemplu, ntr-o baz de date pentruvnzri, Suma Total este obinut nmulind Cantitatea Cumprat cu Preul Unitar;aa cum se observ cu uurin, Suma Total este dependent de CantitateaCumprat i de Preul Unitar. Presupunnd ci toate cele trei atribute sunt dependentede 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 relaiipentru MPAA Rating i FILM Gen, s-a mutat descrierile n noile relaii i am lsatatributele pentru coduri (MPAA_COD_RATING i FILM GEN_COD) n relaiaFILM, definite ca fiind chei externe. Muli proiectani de baze de date numesc relaiileMPAA Rating i FILM Genre tabele de cutare" sau tabele de coduri deoarecesunt utilizate, n principal, pentru cutarea codurilor stocate n coloana cheie primar arelaiei. Totui aceste relaii au i alte roluri, cum ar fi controlul codurilor i furnizareaunei surse convenabile pentru lista de coduri valide, care poate fi folosit ntr-o listderulant de pe o pagin web.
FILM:FILM_ID
GEN_COD
MPAA_COD_RATING
FILM_NUMEPRET_INCHIR VHS
PRET_INCHIRDVD
AN_PRODUS
1 Drama RMystic River 58.97 19.96
2003
2 ActAv RThe LastSamurai
15.95 19.962003
3Comedie
PG-13Something'sGotta Give
14.95 29.992003
4 ActAv PG-13
The Italian Job 11.95 19.99
2003
FILM_ COPII:FILM_ID NR_ COPIE DATA_CUMPAR
AREDATE _VINZARE
MEDIA_FORMAT
1 1 01/01/2005 DVD2 1 01/10/2005 DVD2 2 01/10/2005 VHS3 1 01/10/2005 1/30/2005 DVD3 2 2/15/2005 DVD
4 1 2/15/2005 DVD
-
8/14/2019 Curs Baze Date
30/188
MPAA Rating :MPAA_COD_RATING MPAA_DESCRIERE_RATINGPG-13 Parintii sunt avertizatiR Sub 17 ani necesita prezenta parintilor sau a unui adult
FILM GEN :FILM GEN_COD FILM_GEN_DESCRIEREActAv Actiune si aventuraComedie ComedieDrama Drama
Figura 1-7. Soluia pentru a treia form normal
O alt modificare fcut pentru a ajunge la a treia form normal este legat deatributul 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 cpreul depinde de combinaia dintre Movie ID i Media Format, toate copiile cuaceleai 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 formenormale.
Soluia normal pentru o asemenea problem ar fi crearea unei relaii numiteFILM Price, avnd ca identificator unic combinaia dintre FILM_ID i Media Format,i mutarea atributului PRET_INCHIR din FILM Copy n noua relaie. Totui, ntimpul discuiei s-a aflat c urmeaz s se renune la furnizarea filmelor n formatVHS, 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 coloanedin 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 devedere 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 demulte ori exist posibilitatea unor mici ajustri, cu condiia ca proiectantul s ia ncalcul consecinele poteniale (msurate n termenii anomaliilor de date) ale fiecruicompromis.
Forma normal Boyce-Codd (BCNF)
Dei nu ne propunem s discutm i alte forme normale avansate, considernecesar s le amintim.
Dr. E. F. Codd a participat la definirea unei versiuni mai puternice a celei de-atreia forme normale, numit forma normal Boyce-Codd.
Determinantul este un atribut sau o mulime de atribute neredundante, careconstituie un identificator unic pentru alt atribut sau alt mulime de atribute ale uneirelaii date.
Intuitiv, o relaie R este n forma normal Boyce-Codd dac i numai dacfiecare determinant este o cheie candidat.
Formal, o relaie R este n forma normal Boyce-Codd dac i numai dacpentru orice dependen funcional total X A, X este o cheie (candidat) a lui R.
-
8/14/2019 Curs Baze Date
31/188
Exemplu:ADRESA(cod_parsoana#, telefon#, adresa)
cod_persoana
adresa
telefon
n dependena adresa telefon se observ c determinantul nu este o cheiecandidat. 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 sdevin logice.
In plus, a treia form normal acoper toate anomaliile pe care este posibil sle 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 pentruun magayin virtual de produse video.
Instruciunile SQL pentru creare obiectelor bazei de date i pentru populareaacestora cu date vor fi prezentate n leciile urmtoare.
n figura 1-8 se prezint disgrama entitate relaie, ERD (Entity RelationshipDiagram) pentru aceast baz de date.
-
8/14/2019 Curs Baze Date
32/188
FILM_ID PK FILM_COD_GEN FK1
MPAA_COD_RATING PK MPAA_COD_RATING FK2 FILM_COD_GEN PK MPAA_DESCRIERE_VARSTE FILM_NUME FILM_DESCRIERE_GEN
RETAIL_PRET_VHSRETAIL_PRET_DVDAN_PRODUS
FILM_ID PK,FK1 FILM_ID PK,FK FILM_ID PK,FK1 NUMAR_COPIE PK NUMAR_COPIE PK,FK COD_LIMBA PK,FK2 DATA_CUMPARARE TRANZACTIE_ID PK,FK
DATA_VANZARE DATA_INTOARCEREFORMAT_MEDIA COST_INCHIRIERE
COST_INTARZIERE_SAU_PIERDEREDATA_RETURNARE
COD_LIMBA PK NUME_LIMBA CLIENT_CONT_ID PK TRANZACTIE_ID PK
CLIENT_HOLD_IND CLIENT_CONT_ID FK1
DATA_INSCRIS ANGAJAT_PERSOANA_IDDATA_TERMINAT TRANZACTIE_DATACLIENT_DEPOZIT_SUMA VANZARI_TAXA
CLIENT_CONT_ID PK,FK1 CARD_CREDIT_LA_DOSAR_INDICPERSOANA_ID PK,FK2 COPIL_INCHIRIERE_PERMIS_INDIC
PERSOANA_ID PK PERSOANA_ID PK,FK PERSOANA_PRENUME SUPERVISOR_PERSOANA_IDPERSOANA_NUME_MIJLOCIU ANGAJAT_TAXA_IDPERSOANA_NUME ANGAJAT_JOB_CATEGORIEPERSOANA_ADRESA_1 ANGAJAT_RATA_PE_ORAPERSOANA_ADRESA_2 ANGAJARE_DATAPERSOANA_ADRESA_ORAS INCHIDERE_DATA
PERSOANA_ADRESA_JUDET_PROVPERSOANA_ADRESA_COD_POSTALPERSOANA_ADRESA_TARAPERSOANA_TELEFONNASTERE_DATAMOARTE_DATA
CLIENT_COD_PERSOANA
PERSOANA
CLIENT_TRANZACTIE
FILM_GEN
FILM_COPII
ANGAJAT
FILM_INCHIRIERE
CLIENT_CONT
FILM_LIMBA
LIMBA
FILM
MPAA_RATING
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 tuturoratributelor care o compun sunt atomice (indivizibile). n plus, nu trebuie s existeatribute sau grupuri de atribute repetitive.
Aceast prim form normal este considerat ca fiind o cerina minimalpentru majoritatea sistemelor relaionale, utilitatea ei fiind evident. Astfel , dac ocoloan ar conine o list de valori , regsirea i manipularea informaiilor stocate ar fi
foarte anevoioase.Presupunem c tabela Curs_Student conine urmtoarele date:
-
8/14/2019 Curs Baze Date
33/188
CURS_SUDENTNrMatricol NumeSt PrenumeSt Grupa Cursuri-Nota458 Predescu Alexandru 114 engleza-7,germana-8521 Radu George 122 desen-tehnic-10,franceza-7627 Cristescu Lucian 243 programare-8,engleza-10746 Irimia Diana 361 analiza numerica-9782 Tanase Daciela 341 gernana-6,programare-10982 Bunea Mihaela 114 rezistenta materialelor-81204 Dragnea Liviu 412 educatie fizica-10S1520 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_SUDENT
NrMatricol NumeSt PrenumeSt Grupa Curs1 Nota1 Curs2 Nota2
458 Predescu Alexandru 114 engleza 7 germana 8521 Radu George 122 desen tehnic 10 franceza 7627 Cristescu Lucian 243 programare 8 engleza 10746 Irimia Diana 361 analiza numerica 9782 Tanase Daciela 341 germana 6 programare 10
982 Bunea Mihaela 114rezistentamaterialelor 8
1204 Dragnea Liviu 412 educatie fizica 101520 Popa Marius 452 analiza numerica 7 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 treicoloane cu cursuri. n plus, ce se ntmpl n cazul n care un student s-a nscris la maimult de dou cursuri? S zicem c un student nu se poate inscrie la mai mult de cincicursuri 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 uniistudenti care au ales doar dou cursuri.
Pentru a aduce tabela Curs_Student la FN1 vom introduce o nou coloan ncheia 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 unanumit curs.
CURS_SUDENT
NrMatricol NumeSt PrenumeSt Grupa IdCurs Denumire458 Predescu Alexandru 114 4 germana521 Radu George 122 3 franceza521 Radu George 122 5 desen tehnic627 Cristescu Lucian 243 1 programare627 Cristescu Lucian 243 2 engleza746 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 fiecareatribut care nu face parte din cheia primar este dependent de ntreaga cheie primar.
-
8/14/2019 Curs Baze Date
34/188
Tabela Curs_Student este n FN1, dar nu ndeplinete cea de-a doua cerinpentru a fi n FN2. Coloana Denumire care depinde numai de IdCurs, nu i deNrMatricol , care , mpreun cu IdCurs, formeaz cheia primar. Deci avem ocoloan 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 ndou tabele, dup urmtoarea regul: pentru fiecare dependen parial se formeaz onou tabel (pe care o vom numi Curs) coninnd coloanele determinate de aceastdependena (n acest caz, Denumirea) i determinantul lor (IdCurs). Coloaneledeterminate se elimin din tabela iniial.
Cheia primar a noii tabele va fi format din coloanele ce compundeterminantul dependenei (IdCurs), ntre cele dou tabele rezultate exist o relaie detip 1:m asigurat de existena lui IdCurs drept cheie strin n tabela Curs_Student.
Analog, deoarece coloanele NumeSt, PrenumeSt i grupa depind numai deNrMatricol, 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 tip1:m.
STUDENT
CURS_SUDENT CURS
A treia form normal (FN3)
O tabel este n a treia form normal dac este n FN2 i toate coloanele carenu fac parte din cheia primar sunt mutual independente (depind direct de cheia
primar i numai de ea)
NrMatricol NumeSt PrenumeSt Grupa458 Predescu Alexandru 114521 Radu George 122627 Cristescu Lucian 243746 Irimia Diana 361782 Tanase Daciela 341982 Bunea Mihaela 1141204 Dragnea Liviu 412
1520 Popa Marius 452
IdCurs NrMatricol Nota
1 782 5
1 982 10
2 458 7
3 521 7
4 627 8
4 1520 8
5 521 10
5 1740 6
IdCurs Denumire1 programare2 engleza3 franceza4 germana5 desen tehnic6 Rezistenta materialelor
7 Educatie Fizica8 analiza numerica
-
8/14/2019 Curs Baze Date
35/188
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 cheiaprimar.Dependenele tranzitiv creeaz probleme la adugarea, actualizarea i
tergerea nregistrrilor. De exemplu, dac la tabela Profesor se mai adaug 20 denregistrri , fiecare cu titlul de preparator (prep), va trebui s introducem de 20 de orivaloarea 5 pentru IdTitlu, descrierea preparaotr pentru Titlu i valoarea 800 pentruSalariu , ceea ce este evident, redundant. De asemenea, dac salariul unui preparatorse modific, va trebui s asctualizm toate nregistrrile corespunztoare.
Pentru a nltura toate aceste inconveniene, vom aduce tabela Profesor laFN3 prin crearea unei noi tabele, pe care o vom numi Titlu.Tabela Titlu va avea dreptcheie primar coloana IdTitlu i va mai conine coloanele Titlu i Salariu, pe care le-
am eliminat din tabela Profesor.Profesor
Titlu
:
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 tabelaasociat 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?
IdProf Nume Catedra IdTitlu1 Popescu Marin Matematici 12 Dragnea Ion Limbi straine 43 Iosif Irina Educatie fizica 34 Ilie Daniel Informatica 25 Savu Cristina Limbi straine 56 Cristea George Fizica 3
7 Ene Dan Matematici 7
IdTitlu Titlu Salariu1 lector dr. 13002 asistent 9503 lector 11004 conferentiar dr. 17005 prepartor 6806 profesor dr. 2150
-
8/14/2019 Curs Baze Date
36/188
Raspuns Nu, deoarece exist cadrul didactic cu IDProf= 7 cu IdTitlu =7 , carenu exist in tabelul Titlu, ca funcie didactic.3. S se determine anomaliile pentru tabelul
AvionA# nume capacitate localitate
1 AIRBUS 250 PARIS
2 AIRBUS 250 PARIS3 AIRBUS 250 LONDRA
4 CAR 100 PARIS
5 B707 150 LONDRA
6 B707 150 LONDRA
Constrngere:toate avioanele cu acelai nume au aceeai capacitate.
Datorit dependenei introduse pot exista: anomalii la inserare, modificare sautergere, 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 fiinserat n relaia AVION doar dac se definete o nou valoare pentrucheia 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 toatenregistrrile, iar dac se modific doar o nregistrare atunci constrngereanu va mai fi verificat.
4. Exemplu: variante pentru a implementa FN1 pentru tabelulMASINA:
Persoana Vehicul
Eu R25 - W14 - R21Tu 205
El R5 - 305
noi BX - 305 - R12 - R25
Varianta 1
Persoana Vehicul
Eu R25
Eu W14
-
8/14/2019 Curs Baze Date
37/188
Eu R21
Tu 205
El R5
El 305
Noi BX
Noi 305
Noi R12
Noi R25
Varianta 2
Persoana Prima Doi Trei Patru
Eu R25 W14 R21
Tu 205
El R5 305
Noi BX 305 R12 R25
Varianta 3 (4 tabele)
Masina 31 (similar se definesc Masina_32, Masina_33, Masina_34)..
Persoana Vehicul
Eu R25
Tu 205
El R5Noi 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) estedependent de ntreaga cheie primar.
ATASAT_LA
COD_SALARIAT# JOB_COD NR_PROIECT# FUNCTIA SUMA
S1 PROGRAMATOR P1 SUPERVIZOR 60
S1 PROGRAMATOR P2 CERCETATOR 25
-
8/14/2019 Curs Baze Date
38/188
S1 PROGRAMATOR P3 AUXILIAR 10
S3 VANZATOR P3 SUPERVIZOR 60S5 INGINER P3 SUPERVIZOR 60
ATASAT_2A
COD_SALARIAT# NR_PROIECT# FUNCTIA SUMA
S1 P1 SUPERVIZOR 60
S1 P2 CERCETATOR 25
S1 P3 AUXILIAR 10S3 P3 SUPERVIZOR 60
S5 P3 SUPERVIZOR 60
ATASAT_2BCOD_SALARIAT# JOB_COD
S1 PROGRAMATOR
S3 VANZATORS5 INGINER
A doua condiie exprim necesitatea total dependenei de cheiaprimar. Aceast form normal interzice manifestarea unor dependene funcionalepariale 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_3aCod_salariat# Nr_proiect# FunctiaS1 P1 SupervizorS1 P2 CercetatorS1 P3 AuxiliarS3 P3 SupervizorS5 P3 Supervizor
atasat_3bFunctia SumaSupervizor 60
Cercetator 25Auxiliar 10
-
8/14/2019 Curs Baze Date
39/188
8. Presupunem c un antier poate executa mai multe lucrri de baz i co 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 intermediulatributului 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 dacpentru orice dependen funcional total X A, X este o cheie (candidat) alui R.)
Relaia INVESTESTE_IN leag entitile INVESTITOR iOBIECTIV_INVESTITIE.
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).
-
8/14/2019 Curs Baze Date
40/188
PARTEA a_II_a ACCESS
n acest parte a cursului de baze de date, se prezint aplicaia MicrosoftAccess 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 osingur unitate.Aceast definiie este intenionat foarte larg, deoarece exist maridiferene ntre concepiile diferiilor productori care pun la dispoziie sisteme de bazede date. De exemplu, Oracle Corporation definete o baz de date ca fiind o coleciede 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 datei 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 ACESSO baz de date (n acest context) este un document Microsoft Access, folosit
pentru a organiza i accesa informaiile.O baz de date este organizat n nregistrri (record-uri), elemente
individuale de informaie (d.e. datele despre o persoan intr-o agend) i cmpuri,fragmente de informaii (d.e. numele unei anumite persoane).
O baz de dateeste, de asemenea, o colecie de informaii n legtur cu unanumit subiect sau scop, de exemplu, urmrirea comenzilor clienilor sau ntreinereaunei colecii de muzic. Dac baza de date nu este stocat pe un computer, sau numai
pri din ea sunt, se va urmri informaia dintr-o varietate de surse ce trebuie
coordonate i organizate chiar de ctre utilizator.
-
8/14/2019 Curs Baze Date
41/188
Componentele unei baze de date ACESS
Folosind aplicaiaMicrosoft Access, se poate administra toata informaia ntr-osingur baz de date (Database). n interiorul acestui fiier de tipMicrosoft Access, sempart datele n structuri separate numite tabele (Tables); se vizualizeaz, adaug i
actualizeaz datele dintr-o tabel folosind formele (Forms); se gsesc i extrag datelefolosind interogri (Queries); i se analizeaz sau se tipresc datele ntr-un formatspecial folosind rapoartele (Reports).
Tables, Queries, Forms i Reports sunt cele mai importante entiti care secreay ntr+o bay de date Access.
Datele se stocheaz ntr-o singur locaie (n tabel), dar se pot vizualiza subdiferite forme: interogare, raport sau form. n momentul n care se modific isalveaz informaia n tabel atunci aceasta se va vedea i n celelalte forme.
Pentru stocarea datelor, se creeaz o tabel pentru fiecare tip de informaie pecare dorii s o urmrii. Pentru utilizarea n diverse forme a informaiilor din tabelediferite se pot defini relaii ntre tabele. Astfel, se definete o relaie ntre un
identificator unic din tabela de Furnizori i comenzile ctre acest furnizor din tabelaComenziFurnizori. Prin aceasta pentru fiecare furnizor definit n mod unic n tabelaFurnizori se pot extrage din tabela ComenziFurnizori toate comenzile ctre acesta.
Pentru a gsi i extrage numai informaiile ce ndeplinesc anumite condiiispecificate de utilizator i care includ informaii din mai multe tabele, se poate crea ointerogare. O interogare poate de asemenea s actualizeze sau s tearg mai multenregistrri n acelai timp, s execute calcule asupra datelor, etc
Pentru a vizualiza, introduce sau schimba uor datele direct ntr-un tabel, secreeaz o form. Atunci cnd se deschide o form, Microsoft Access extrage datedintr-unul sau mai multe tabele i le afieaz pe ecran folosind modalitatea de afiarealeas/creat de utilizator (prin forma respectiv).
Pentru analiza datelor sau pentru prezentarea lor ntr-o anumit structur latiprire, este necesar s se creeze un raport. Astfel, se poate tipri un raport caregrupeaz datele i calculeaz sumele totale i alt raport n care se afieaz datele
pentru diferite nregistrri din tabel, etc.Pentru a lucra cu toate obiectele dintr-o baz de date se utilizeaz fereastra
Database, cea care permite selectarea Tab-urilor se apas Tab-ul dorit i n fereastraafiat se pot vizualiza toate obiectele (de acel tip) disponibile n baza de dateaccesat.
Folosindu-se butoanele din dreapta acestei liste, se pot deschide (Open),modifica (Design) i crea (New) obiecte noi.
Cerinele sistemului i posibilitile aplicaiei
Pentru a folosi Microsoft Access 2003