curs 3 2010/2011rf-opto.etti.tuiasi.ro/docs/files/tmpaw_2011_3.pdfuniversitatea nu e pentru mase...
Post on 18-Jan-2020
0 Views
Preview:
TRANSCRIPT
Curs 3
2010/2011
Tema de nota 8 (>6) Tema unica pentru fiecare student
Tema de nota 10 (>5) Conditiile de la tema de nota 8 si in plus Necesitatea conlucrarii intre 2 studenti cu doua teme “pereche” Necesitatea investigarii posibilitatilor de imbunatatire
Tema de nota 10+ (>5) Conditiile de la tema de nota 10 si in plus Tema care face apel la controlul sesiunii client/server Necesitatea utilizarii Javascript in aplicatie Tema se preda/trimite cu macar 1 zi inaintea sustinerii ei Facilitati in ceea ce priveste prezenta la laborator (DACA toate
celelalte conditii sunt indeplinite – P = 66%, L = 0%, E = 33%)
“Universitatea nu e pentru mase locul de unde emana cunoasterea, ci un obstacol intre individ si diploma pe care i-a harazit-o destinul”
“Universitatea fiind ceva care se interpune in mod imoral intre individ si dreptul lui natural de a fi diplomat, individul are obligatia morala satriumfe asupra universitatii prin orice mijloace”
Sursa citat: Internet, user: ”un student batran siplesuv”
“Am mai facut odata ceva asemanator” Internet
www.php.net
www.mysql.com
www.w3c.org
www.google.com
Capitolul I+II
I. HTML si XHTML (recapitulare) 1 oră
II CSS 2 ore
III Baze de date, punct de vedere practic 1 oră
IV Limbajul de interogare SQL 4 ore
V PHP - HyperText Preprocessor 8 ore
VI XML - Extended Mark-up Language si aplicatii 4 ore
VII Conlucrare intre PHP/MySql, PHP/XML, Javascript/HTML 2 ore
VIII Exemple de aplicatii 6 ore
Total 28 ore
exemple utile pentru a verifica capabilitatileCSS
exagerarea artei in aplicatii nu e recomandabila
nu “reinventam roata” doar pentru a o face “patrata”
“Don't Make Me Think”
View Source (sau echivalent) ofera acces TOTALla surse: HTML
CSS
Javascript numai pentru observatorul “avizat” Firefox beneficiaza de cateva extensii extrem de
utile pentru web designer Web Developper
Firebug
Dom Inspector (implicit pana la 3.0)
Nu e valabil pentru sursele PHP/MySql care nu ajung pe calculatorul client decat in caz de eroare
Flash si Java ajung de asemenea in forma binara, compilata
cateodata apar artificii de “ascundere” a codului: se ingreuneaza citirea de un utilizator uman
Web Server
Apache
PHP Interpreter
• HTML• Imagini• documente
Fisiere PHP
cerere HTTP, date
raspuns HTTP,HTML, CSS, Javascript
Web Browser
JVM
JavaScript
Server MySql
Flash Player
HTML, CSS, Javascript
SQL
PHP
HTML, CSS
presupune prelucrarea unor date si oferireaunui document personalizat (rezultat al datelor respective)
datele pot fi obtinute:
de la utilizator
o sursa externa (baze de date)
combinatie utilizator/baze de date
necesare pentru ca utilizatorul sa poatetrimite date server-ului
<form>…</form> Atribute specifice:
action: adresa documentului care preia datele
▪ <form action="<?php echo $_SERVER['PHP_SELF'];?>">
method: modalitatea de transmitere a datelor: post sau get
▪ <form method="post" action= … >
post datele sunt transmise in bloc get datele sunt atasate adresei documentului
de procesare : results.php?prob=81&an=2009 get trebuie folosit numai cand datele sunt
“idempotente”,
nu cauzeaza efecte colaterale
nu modifica starea server-ului (baze date, etc)
se poate simula realizarea unei forme (get) prin scrierea corespunzatoare a link-urilor
in interiorul etichetei <form>…</form> toate elementele vor avea un nume
atribut: name=“”
numele va fi intalnit in uri-ul generat prin get, sauin numele variabilei trimisa prin post
trimiterea datelor se face prin intermediulunui buton cu tipul type="submit"
<input …/> Atribute:
type: text | password | checkbox | radio | submit | reset | file | hidden | image | button
name: numele variabilei
value: valoarea trimisa server-ului la selectie(valoarea initiala in anumite cazuri)
checked/src/size/maxlength in functie de tip
<input name="textfield" type="text" value="ceva" />
<input name="Ok" type="submit" value="Trimite" />
<label><input name="check" type="checkbox" value="5" checked />check1</label>
<label><input name="RG1" type="radio" value="a" checked="checked" />but1</label><label><input type="radio" name="RG1" value="b" />but2</label>
<input name="hid" type="hidden" value="6" />
<textarea name="textarea" cols="20" rows="5">Un text initial</textarea><br /><br />
<select name="select." size="3"><option value="1" selected="selected">opt1</option><option value="2">opt2</option><option value="3">opt3</option>
</select><br /><br /><select name="select..."><option value="1" selected="selected">opt1</option><option value="2">opt2</option><option value="3">opt3</option>
</select>
MySql – Recapitulare rapida
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
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
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 informatie
Normalizarea asigura:
stocarea eficienta a datelor
prelucrarea eficienta a datelor
integritatea datelor
Trei nivele de normalizare Eliminarea datelor redundante
toate valorile sunt scalare
nu toate rezolvarile sunt eficiente
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
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
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
Se recomanda utilizarea utilitarului MySqlQuery Browser sau un altul echivalent pentrucrearea scheletului de baza de date (detalii –laborator 1)
Se initializeaza aplicatia cu drepturi depline(“root” si parola) se creaza o noua baza de date:
▪ in lista “Schemata” – Right click – Create New Schema
se activeaza ca baza de date curenta noua“schema” – Dublu click pe numele ales
Introducere tabel – Click dreapta pe numele bazei de date aleasa – Create New Table
se defineste structura tabelului nume coloane tip de date NOT NULL – daca se accepta ca acea coloana sa ramana
fara date (NULL) sau nu AUTOINC – daca acea coloana va fi de tip intreg si va fi
incrementata automat de server (util pentru creareacheilor primare)
Default value – valoarea implicita care va fi inserata dacala introducerea unei linii noi nu se mentioneaza valoarepentru acea coloana (legat de optiunea NOT NULL)
Dublu click pe tabel – In zona “SQL Query Area” se completeaza interogarea de selectie totala SELECT * FROM produse p;
Executia interogarii SQL MeniuQuery Execute
Bara de butoane Lista rezultata initial vida
poate fi editata – butoanele “Edit”, “Apply Changes”, “Discard Changes” din partea de jos a listei
Se recomanda utilizarea utilitarului MySqlAdministrator sau un altul echivalent (detalii– laborator 1)
Se initializeaza aplicatia cu drepturi depline(“root” si parola)
Se creaza un utilizator limitat (detalii –laborator 1)
Se aloca drepturile “SELECT” + “INSERT” + “UPDATE” asupra bazei de date create (saumai multe daca aplicatia o cere)
Din MySql Administrator Sectiunea Restore “Open Backup File”
Din MySql Query Browser Meniu File Open Script
Executie script SQL▪ Meniu Script Execute
▪ Bara de butoane
Scriptul SQL rezultat continecomenzile/interogarile SQL necesare pentrucrearea bazei de date si popularea ei cu date
Poate fi folosit ca un model extrem de bun pentrucomenzile necesare pentru crearea programatica (din PHP de exemplu) a bazei de date
CREATE DATABASE IF NOT EXISTS tmpaw;USE tmpaw;
DROP TABLE IF EXISTS `categorii`;CREATE TABLE `categorii` (`id_categ` int(10) unsigned NOT NULL auto_increment,`nume` varchar(45) NOT NULL,`detalii` varchar(150) default NULL,PRIMARY KEY (`id_categ`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `categorii` (`id_categ`,`nume`,`detalii`) VALUES (1,'papetarie',NULL),(2,'instrumente',NULL),(3,'audio-video',NULL);
I. HTML si XHTML (recapitulare) 1 oră
II CSS 2 ore
III Baze de date, punct de vedere practic 1 oră
IV Limbajul de interogare SQL 4 ore
V PHP - HyperText Preprocessor 8 ore
VI XML - Extended Mark-up Language si aplicatii 4 ore
VII Conlucrare intre PHP/MySql, PHP/XML, Javascript/HTML 2 ore
VIII Exemple de aplicatii 6 ore
Total 28 ore
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
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
Legaturile intre tabele pot fi
One to One
One to Many
Many to Many
▪ Unare (auto referinta)
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
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
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
de obicei aceste legaturi se implementeazaprin introducerea cheii primare din tabelulOne in calitate de coloana in tabelul Many(cheie externa – foreign key)
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
de obicei aceste legaturi se implementeazaprin introducerea unui tabel suplimentar(numit tabel asociat sau de legatura) care samemoreze legaturile
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
Laboratorul de microunde si optoelectronica http://rf-opto.etti.tuiasi.ro rdamian@etti.tuiasi.ro
top related