curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/tmpaw_2013_7.pdfsa se continue magazinul virtual...

60
Curs 7 2012/2013 1

Upload: others

Post on 16-Jan-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

Curs 7

2012/2013

1

Page 2: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

Laborator asincron!

recomandat – 4 = OptimL3 L4 L5 L6

L3 L4 L5 L6

L3 L4 L5 L6

L3 L4 L5 L6

L3 L4 L5 L6

1. I

2. P

3. R

4. O

5. T 2

Page 3: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

3

Page 4: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

in lista_categ.php

<a href="lista_prod.php?categ=<?php echo $cat;?>"> <?php echo $cat;?> </a>

are efect in lista_prod.php

$_GET['categ']="valoarea $cat corespunzatoare"

4

lista_categ.phpCATEGORII PRODUSE

formular.phpPRODUSE, PRET,

COMANDA

rezultat.phpPRELUCRARE

COMANDA

$cat

Page 5: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

5

Page 6: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

Sa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse

sa prezinte utilizatorului o lista de grupe de produsepentru a alege

sa prezinte utilizatorului o lista de produse si preturi in grupa aleasa

lista de produse si preturi se citeste dintr-un fisier

se preia comanda si se calculeaza suma totala Optional se creaza o pagina prin care vanzatorul poate

modifica preturile si produsele6

Page 7: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

exemplu de grupare

produse

papetarie

carti

caiete

hartie de scris

instrumente

creioane

stilouri

marker

audio video

CD

DVD

Blue Ray 7

Page 8: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

8

Page 9: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

9

Page 10: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

<element1 atribut1 = "valoare" ... >

<element2 atribut2 = "valoare">

▪ <element3>...</element3>

▪ ...

</element2>

...

</element1> ... <element1> </element1> 10

Page 11: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

Biblioteci PHP de acces la XML

DOM XML

XML Parser (Reader, Writer)

Simple XML

11

Page 12: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

structura tip “arbore”

produse

papetarie

carti

caiete

hartie de scris

instrumente

creioane

stilouri

x

y

z

marker

audio video

CD

DVD

Blue Ray

1

2

3 etc.

12

Page 13: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

structura tip “arbore”

element1

element2

element3

element3

element3

element2

element3

element3

x

y

z

…element3

element2

element3

element3

element3

1

2

3 etc.

13

Page 14: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

<?xml version="1.0" encoding="utf-8"?><gallery titlu="Photomagic" thumbDir="./fotografii/thumbnails/" imageDir="./fotografii/”>

<category nume="VIATA"><image>

<desc>curiozitate</desc><img>foto33.jpg</img><thumb>foto33TH.jpg</thumb>

</image></category><category nume="NUNTA">

<image><desc>asteptare</desc><img>foto132.jpg</img><thumb>foto132TH.jpg</thumb>

</image></category>

</gallery>

14

Page 15: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

15

Page 16: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

Citirea si scrierea unui fisier XML Curs 6

fiecare produs e caracterizat de:

▪ nume, pret, (eventual) descriere, cantitate comandata

matricea asociata: $produse[“produs”] = [“caracteristici”]

Gruparea elementelor pe categorii

▪ $produse[“produs”] = [“caracteristici”]

▪ $produse[“categorie”][“produs”] = [“caracteristici”]

16

Page 17: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

Codul aplicatiei ramane in mare parte acelasi Se modifica doar citirea valorilor pentru popularea matricii

$produse (“antet.php”)

<?xml version="1.0" encoding="utf-8"?><produse user="magazin" password="parola">

<categorie nume="papetarie"><produs>

<desc>mai multe pagini scrise legate</desc><nume>carte</nume><pret>100</pret><cant>0</cant>

</produs></categorie><categorie nume="instrumente">

<produs><desc>loc de depozitat instrumente de scris</desc><nume>penar</nume><pret>150</pret><cant>0</cant>

</produs></categorie>

17

Page 18: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

$xml = simplexml_load_file("lista.xml");if ($xml) {foreach ($xml->categorie as $categorie)

{$produse[(string)$categorie["nume"]]=array();foreach ($categorie->produs as $prod_cur)

{$produse[(string)$categorie["nume"]][(string)$prod_cur->nume]=array ("descr" => (string)$prod_cur->desc, "pret" => (string)$prod_cur->pret, "cant" => (string)$prod_cur->cant);}

}}

$matr=file("produse.txt");foreach ($matr as $linie)

{$valori=explode("\t",$linie,5);$produse[$valori[0]] [$valori[1]]=array ("descr" => $valori[2], "pret" => $valori[3], "cant" =>

$valori[4]);}

18

Page 19: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

Sa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse

sa prezinte utilizatorului o lista de grupe de produsepentru a alege

sa prezinte utilizatorului o lista de produse si preturi in grupa aleasa

lista de produse si preturi se citeste dintr-un fisierXML

se preia comanda si se calculeaza suma totala

se creaza o pagina prin care vanzatorul poatemodifica preturile si produsele

19

Page 20: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

sectiunilerepetabile pot fimutate intr-un fisier separat siintroduse cu require()

se identificazonele comune

<html><head><title>Magazin online Firma X SRL</title></head><body bgcolor="#CCFFFF"><table width="600" border="0" align="center"><tr><td><img src="images/antet.gif" width="600" height="100" /></td></tr><tr><td height="600" valign="top" bgcolor="#FFFFCC">Continut</td></tr></table></body></html>

20

Page 21: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

<html><head><title>Magazin online Firma X SRL</title></head><body bgcolor="#CCFFFF"><?phpdefine('PRET_CARTE',100);

//orice cod comun PHP

?><table width="600" border="0" align="center"><tr><td><img src="images/antet.gif" width="600" height="100" /></td></tr><tr><td height="600" valign="top" bgcolor="#FFFFCC"><h1>Magazin online Firma X SRL</h1>

</td></tr></table></body></html>

<?php require('antet.php');?><h2>Lista Produse</h2><table border="1">…</table><?php require('subsol.php');?>

antet.php subsol.php

21

Page 22: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

antet.php orice cod de structura (HTML) comun

orice cod de aplicatie comun (PHP) – aproape toatepaginile dintr-o aplicatie au nevoie de: ▪ acces la date

▪ verificare drepturi de acces

▪ definitii constante

▪ definire/incarcare date din sesiunea de lucru ($_SESSION)

subsol.php orice cod de structura (HTML) comun

orice cod de aplicatie comun (PHP) – de obicei mai redus:▪ salvare date in sesiunea de lucru ($_SESSION)

22

Page 23: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

Pe masura ce aplicatia paraseste un fir liniarde executie este necesara introducerea unuiplan (graf) al aplicatiei

Cumparator

citirea fisierului XML se realizeaza in antet.php, comun pentru toate fisierele

lista_categ.phpCATEGORII PRODUSE

formular.phpPRODUSE, PRET,

COMANDA

rezultat.phpPRELUCRARE

COMANDA

23

Page 24: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

Aparitia aplicatiei pentru vanzator introduce un fir paralel de executie cu necesitatea

alegerii initiale: cumparator/vanzator

aduce posibilitatea scrierii fisierului XML

diverse operatii de scriere▪ introducere categorie de produse

▪ introducere produs nou intr-o categorie existenta

▪ modificare produs existent

modificarea fisierului implica 2 actiuni:▪ colectare date

▪ prelucrare

24

Page 25: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

De multe ori se prefera aceasta varianta Permite pastrarea unitara a tuturor

operatiilor pentru indeplinirea unei actiuni

acces mai simplu

usurinta la programare

evitarea erorilor: File does not exist: D:/Server/…

Acelasi fisier e folosit initial pentru a colectadate si apoi, daca se detecteaza prezentaacestora, pentru prelucrarea lor

25

Page 26: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

Fisierul de receptie pentru <form> va fifisierul curent

se recomanda utilizarea variabilei globale$_SERVER['PHP_SELF']

flexibilitate la redenumirea fisierelor

Sectiunea de colectare date se afiseazanumai in absenta datelor

<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post"><p><input name=“date_ok" type="submit" value="Trimite" /></p></form>

26

Page 27: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

Detectia existentei datelor se face prin verificareaexistentei ( isset($variabila) ) valorilor introduse

eventual pentru un plus de protectie se poate verifica sicontinutul lor

if (isset($_POST[" date_ok "])){ //date trimiseif ($_POST[" date_ok "]=="Trimite" )

{ //date trimise de fisierul curent//prelucrare}

}else

{//colectare date

<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post"><p><input name=“date_ok" type="submit" value="Trimite" /></p></form>

} 27

Page 28: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

SelectieC/V

index.php

Alegerecategorie

lista_categ.php

Introduceredate

formular.php

Prelucrarecomanda

rezultat.php

Alegere / introducere

categorie

admin_categ.php

Alegereprodus

admin_lista.php

Modificare / Introducere

produs

admin_formular.php

postget

C

V

lista.xmlantet.phpsubsol.php 28

Page 29: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

29

Page 30: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

post

get 30

Page 31: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

Sa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse

sa prezinte utilizatorului o lista de grupe de produsepentru a alege

sa prezinte utilizatorului o lista de produse si preturi in grupa aleasa

lista de produse si preturi se citeste dintr-un fisierXML

se preia comanda si se calculeaza suma totala

se creaza paginile prin care vanzatorul poatemodifica preturile, produsele, categoriile

31

Page 32: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

MySql

32

Page 33: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

XML - eXtensible Markup Language XML isi atinge limitarile atunci cand: cantitatea de date este mare

prelucrarile datelor sunt complexe In general XML citeste in intregime fisierul care

contine datele memoria necesara script-urilor PHP poate creste pana

in punctul atingerii ineficientei Prelucrarile trebuie facute in PHP PHP este limbaj interpretat deci ineficient pentru

prelucrari masive de date33

Page 34: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

Baza de date – instrument pentru stocarea simanipularea informatiei eficient si efectiv datele sunt protejate de corupere sau pierderi

accidentale

nu se utilizeaza mai multe resurse decat minimulnecesar

datele pot fi accesate cu performanta acceptabila Baze de date relationale model relational (matematic eficient) – Codd

~1970

34

Page 35: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

DBMS – database management system aplicatii incluse in baza de date pentruaccesul la informatii

RDBMS – Relational DBMS. Majoritateasistemelor de baze de date tind la aceastatitulatura

~300 de reguli trebuie respectate

nici un sistem actual nu implementeaza total aceste reguli

35

Page 36: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

Toate sistemele de baze de date suntcaracterizate de: toate informatiile sunt reprezentate intr-o aranjare

ordonata bidimensionala numita relatie toate valorile (atribute) stocate sunt scalare (in orice

celula din tabel se stocheaza o singura valoare) toate operatiile se aplica asupra unei intregi relatii si

rezulta o intreaga relatie Terminologii (MySql) tabel – table / recordset / result set linie – record / row coloana – field / column

36

Page 37: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

toate informatiile sunt reprezentate intr-o aranjare bidimensionala numita relatie

aranjarile bidimensionale nu sunt ordonate implicit

datele trebuie stocate pentru a implementa o relatiein asa fel incat fiecare linie sa fie unica

cheie candidata

exista cel putin o combinatie de atribute (coloane) care pot identifica in mod unic o linie

aceste combinatii de atribute se numesc cheicandidate

37

Page 38: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

Din toate combinatiile de coloane care pot fi utilizatepentru identificarea unica a unei linii se alege macar unautilizata intern de RDBMS pentru ordonarea datelor –cheie primara Celelelte chei candidate devin chei alternative si pot fi folosite

pentru eficientizarea prelucrarilor (crearea de “index” dupaaceste chei)

In cazul in care nu exista o combinatie de coloaneutilizabila ca si cheie cu utilitate practica se introduce artificial o cheie, cu numere intregi incrementate automat de DBMS (autoincrement) de multe ori este recomandata o astfel de actiune, numerele

intregi fiind mult mai usor de controlat, ordonat, cautat decatalte tipuri de date

cheile de tip autoincrement nu e nevoie sa contina informatie38

Page 39: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

Normalizarea asigura:

stocarea eficienta a datelor

prelucrarea eficienta a datelor

integritatea datelor

Trei nivele de normalizare Eliminarea datelor redundante

39

Page 40: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

40

Page 41: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

41

Page 42: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

toate valorile sunt scalare

nu toate rezolvarile sunt eficiente

42

Page 43: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

O relatie este in a doua forma normala candeste in prima forma normala si suplimentaratributele (valorile de pe coloana) depind de intreaga cheie candidata aleasa

43

Page 44: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

44

Page 45: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

O relatie este in a treia forma normala candeste in a doua forma normala si suplimentaratributele (valorile de pe coloana) care nu facparte din cheie sunt mutual independente

45

Page 46: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

46

Page 47: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

Se tine cont si de eliminarea datelor redundante. Anumite redundante pot fi eliminate prinintroducerea de relatii suplimentare

Forma normala Boyce/Codd cere sa nu existedependenta functionala intre cheile candidate

47

Page 48: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

48

Page 49: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

MySql – Recapitulare rapida

49

Page 50: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

Respectarea formelor normale ale bazelor de date aduce nenumarate avantaje

Efectul secundar este dat de necesitateasepararii datelor intre mai multe tabele

In exemplul utilizat avem doua conceptediferite din punct de vedere logic

produs

categorie de produs

50

Page 51: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

Normalizarea bazei de date impune crearea a cel putin doua tabele

produse

categorii

Cele doua tabele nu sunt independente Intre ele exista o legatura data de

functionalitatea dorita pentru aplicatie: un produs va apartine unei anumite categoriide produse

51

Page 52: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

Legaturile intre tabele pot fi

One to One

One to Many

Many to Many

▪ Unare (auto referinta)

52

Page 53: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

Fiecare tabel poate avea corespondenta o singura linie (row) sau nici una de cealalta parte a relatiei

echivalent cu o relatie “bijectiva” analogie cu casatorie: o persoana poate fi casatorita sau nu

daca este casatorita va fi casatorita cu o singurapersoana din tabelul cu persoane de sex opus

persoana respectiva va fi caracterizata de aceeasirelatie “one to one” – primeste simultan un singurcorespondent in tabelul initial

53

Page 54: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

de multe ori legaturile “one to one” se bazeaza pe reguli externe

de obicei se poate realiza usor si eficientgruparea ambelor tabele in unul singur

54

Page 55: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

O linie dintr-un tabel (row), identificata princheia primara, poate avea: nici una, una saumai multe linii corespondente in celalalttabel. In acesta o linie poate fi legata cu o singura linie din tabelul primar.

Analogie cu relatii parinte/copil:

fiecare om are o singura mama

fiecare femeie poate avea nici unul, unul sau maimulti copii

55

Page 56: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

de obicei aceste legaturi se implementeazaprin introducerea cheii primare din tabelulOne in calitate de coloana in tabelul Many(cheie externa – foreign key)

56

Page 57: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

Fiecare linie (row) din ambele tabeleimplicate in legatura poate fi legat cu oricate(niciuna, una sau mai multe) linii din tabelulcorespondent.

Analogie cu relatii de rudenie (veri de exemplu), tabel 1 – barbati, tabel 2 – femei : fiecare barbat poate fi ruda cu una sau mai multe

femei

la randul ei fiecare femeie poate fi ruda cu unulsau mai multi barbati

57

Page 58: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

de obicei aceste legaturi se implementeazaprin introducerea unui tabel suplimentar(numit tabel asociat sau de legatura) care samemoreze legaturile

58

Page 59: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

Un caz particular de legatura “one to many” in care legatura e in interiorul aceluiasi tabel

rezolvarea este similara, introducerea uneicoloane suplimentara, cu referinta la cheiaprimara din tabel

analogie cu relatii parinte copil cand ambelepersoane se regasesc in acelasi tabel

59

Page 60: Curs 7 2012/2013rf-opto.etc.tuiasi.ro/docs/files/TMPAW_2013_7.pdfSa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse sa prezinte utilizatorului o lista

Laboratorul de microunde si optoelectronica http://rf-opto.etti.tuiasi.ro [email protected]

60