tutorial scris de mihai.mitroi 22 aprilie 2011 / 650 afisari
Daca ai creat un site web si vrei sa salvezi date pe care sa le utilizezi mai tarziu, ai la dispozitie doua metode:
Fisierele plate, adica fisiere de text simplu
Baze de date
Pentru volumele mari de informatii, cel mai bine este sa folosesti o baza de date.
Mai jos iti prezint avantajele folosirii unei baze de date in detrimentul folosirii unui fisier text:
Ofera acces mai rapid la date decat fisierele text
Ofera un acces aleatoriu la datele stocate
Poti interoga cu usurinta tabelele pentru a extarge orice date ai nevoie
Au sisteme de privilegii pentru fiecare operatie in parte
Acum hai sa vorbim putin despre bazele de date relationale, cel mai raspandit tip de baze de date. Se numesc baze de date relationale pentru ca se bazeaza pe algebra relationala.
O baza de date relationala consta din mai mult de o tabela. Astfel, nu trebuie doar sa definesti fiecare tabela ci si relatiile care apar intre ele pentru a le lega intr-un mod cat mai corect.
O tabela este practic un tabel de date. Tabela are un nume, mai multe coloane, fiecare de un anumit tip de date si randuri care corespund inregistrarilor.
In figura de mai jos ti-am desenat o tabela formata din 3 coloane si 3 inregistrari, numita clienti:
Randurile din tabela corespund fiecare unei inregistrari. Fiecare linie are acelasi atribute. In algebra relationala, se mai numesc si tupluri.
Pentru a face referire la o anumita inregistrare, aproape fiecare tabela are o cheie. Ea este o coloana care identifica intr-un anumit fel fiecare inregistrare. Se mai numeste si cheie primara.
In cazul tabelei naostre de mai sus, cheia primara este ID. O cheie primara poate fi compusa si din mai multe coloane, daca una singura nu contine valori unice pentru o inregistrare.
Cheile primare se folosesc si ca referinta intre tabelele bazei de date. Relatia care se stabileste intre doua tabele poarta denumirea de cheie externa.
Iti voi mai desena o tabela, comenzi, si iti voi arata relatia care se naste intre cele doua:
ClientId este cheie primara in tabela clienti si cheie externa in tabela comenzi.
Intr-o baza de date relationala exista trei tipuri de relatii:
Unu la unu - un rand dintr-o tabela se afla intr-o relatie cu un alt rand dintr-o alta tabela
Unu la mai multi - un rand dintr-o tabela se afla intr-o relatie cu mai multe randuri dintr-o alta tabela
Mai multi la mai multi - mai multe randuri dintr-o tabela se afla in relatie cu mai multe randuri dintr-o alta tabela
Ultima notiune pe care ti-o voi defini este schema bazei de date. Ea este ca un fel de plan al bazei de date si prezinta tabelele, coloanele, tipurile de date ale coloanelor si cheile primare ale acestora. Ea nu contine inregistrari.
O schema arata in felul urmator:
Termenii subliniati cu linie continua sunt chei primare si cei subliniati cu linie punctata sunt chei externe.
Proiectarea unei baze de date pentru Web
Pentru a proiecta o baza de date, vei folosi un procedeu numit modelare entitate-relatie. Adica, entitatile reprezinta tabele si relatiile sunt legaturile care se stabilesc intre tabele. Un model entitate-relatie poate fi cu usurinta modelat si iti va genera o structura a unei baze de date.
Etapele acestui procedeu sunt urmatoarele:
identifici coloanele
grupezi coloanele in tabele
identifici cheile primare
identifici cheile externe
Identificarea coloanelor
Pentru a identifica coloanele, trebuie sa-ti pui intrebarea: "care sunt datele pe care le voi stoca?". Pe masura ce identifici coloanele, le pui pe o lista, astfel iti va fi usor sa le modifici pe parcursul operatiunii. Cand ai terminat de identificat coloanele incepi sa le grupezi in tabele.
Gruparea coloanelor in tabele
Probabil ca ti-ai dat seama ca majoritatea coloanelor sunt corelate intre ele. Aceste corelatii te ajuta sa le grupezi in tabele. De exemplu, daca avem coloane ca nume client, adresa, telefon, acestea se pot corela si forma tabela clienti. O coloana insa poate aparea de mai multe ori pe lista, deci se poate corela cu mai multe entitati.
Dupa ce ai determinat si tabele, trebuie sa le denumesti. Ai grija atunci cand faci acest lcuru, deoarece limbajul SQL impune anumite restrictii la denumirile tabelelor si a coloanelor. Acestea sunt:
primul caracter trebuie sa fie o litera
sa aiba in componenta numai litere, cifre si caracterul _
lungimea sa fie de maxim 64 de caractere
sunt case-insensitive
Identificarea cheilor primare
Fiecare tabela va trebui sa aiba o cheie primara. Cheia primara o alegi uitandu-te cu atentie la fiecare coloana si determinand daca contine sau nu valori unice. S-ar putea sa fii nevoit sa aloci mai multe coloane unei chei primare, daca nicio coloana nu indeplineste aceasta conditie.
Daca nu ai gasit nicio coloana si nicio combinatie de coloane care sa poate fi trecuta drept cheie primara, atunci vei crea tu o coloana care sa indeplineasca acest rol. La un clicnet, daca ai nume, adresa, telefon, poti crea tu o coloana clientid care va identifica fiecare client dupa un numar unic.
Identificarea cheilor externe
Aceasta este etapa cea mai dificla pe care va trebui s-o parcurgi. Comapri coloanele cu cheile primare si pentru fiecare combinatie posibila verifici daca exista o relatie intre valoarea acestei coloane si valoarea cheii primare.
Te poti folosi pentru asta de o diagrama, diagrama entitate-relatie. Aceasta prezinta tabelele sub forma de dreptunghiuri si relatiile dintre ele sub forma de romburi. Relatia apare oriunde ai gasit o cheie externa.
Dar aceasta etapa nu presupune numai identificarea cheii externe ci si claaificarea relatiei gasite in relatie unu la unu, unu la mai multi sau mai multi la mai multi.
De exemplu, un client poate avea mai multe comenzi, deci apare o relatie de unul la mai multi, o comanda poate avea mai multe produse si fiecare produs poate apartine mai multor comenzi, deci apare o realatie de mai multi la mai multi.
Uneori la relatiile mai multi la mai multi, lipseste o tabela care sa faca legatura intre combinatii si va trebui s-o creezi.
De exemplu, fiecare client comanda mai multe produse. Fieacre produs poate fi comandat de mai multi clienti. Vei crea tabela comezni care va face legatura intre tabelele clienti si produse-comandate. In ea vei plasa coloana comandaid care va fi cheie primara in tabela comenzi si va fi cheie externa in tabela produse-comandate. De asemenea, coloana clientid este cheie primara in tabela clienti si cheie externa in tabela comenzi.
Mai jos ti-am desenat cum arata o diagrama entitate-relatie:
Normalizarea bazei de date
Exista o serie de reguli care descriu ce inseamna o structura corecta a unei tabele si care
definesc asa numitele forme normale. Normalizarea bazei de date inseamna ca vei transforma baza de date astfel incat sa satisfaca niste reguli. Regulile de normalizare sunt attribute pe care o baza de date le are, pentru a respecta aceste reguli.
Regulile cele mai importante pentru o baza de date normalizata sunt si ep care nu trebuie sa le omiti sunt:
nu ai voie decat sa utilizezi valori atomice - adica nici o coloana nu trebuie sa aiba valori compuse si nici sa reprezinte o repetitie. Daca ai coloana nume, ea trebuie impartita in nume, prenume si initiala. Aceasta regula este deseori incalcata si asta duce la o ingreunare a SQL la datele tabelei.
Bazeaza-te pe cheia primara in totalitatea ei - un exemplu: daca comandaid si clientid sunt o cheie primara compusa, numele este asociat unui client si nu si unei comenzi.
Arhitectura bazelor de date pentru Web
Hai sa-ti arat cum functioneaza un server web. Un browser face o cerere catre un server web si acesta ii trimite inapoi un raspuns ca in figura de mai jos:
Daca avem si o baza de date, deci un server de baze de date, vom adauga si un server de baze de date, astfel:
Cum sa cream un fisier utilizand PHP Pentru a crea un fisier vom utiliza comanda fopen. Aceasta comanda este de obicei utilizata pentru a deschide un fisier, insa cu ea ...
Cum sa folosesti un cookie cu PHP Un cookie este un fisier special, deseori codificat, pe care un server il trimite unui browser. Pentru a crea un cookie folosind PHP, ...
0 comentarii
Adauga comentariu
Pentru a adauga comentarii trebuie sa fii membru eCursuri.ro
Intra in contul tau sau inregistreaza-te GRATUIT (dreapta sus)