Mai mult decât o foaie de calcul
Să începem cu un exemplu simplu. Să presupunem că dorim să colectăm informații despre oameni – numele lor, locul nașterii și alte elemente. La început ne-am putea gândi să colectăm aceste date într-o simplă foaie de calcul. Dar dacă ajungem o companie de succes și trebuie să gestionăm milioane de articole de date? O foaie de calcul ar putea gestiona această cantitate imensă de informații? Ar putea mai mulți angajați sau programe să introducă simultan date noi, să le șteargă sau să le modifice? Desigur că nu. Și acesta este unul dintre avantajele remarcabile ale unui sistem de gestionare a bazelor de date (SGBD) față de un program de foaie de calcul: ne putem imagina structura unui tabel ca o foaie de calcul simplă – dar accesul la acesta este organizat intern într-un mod în care cantități uriașe de date pot fi accesate de mulți utilizatori în același timp.
Pe scurt, se poate spune că se poate imagina un tabel ca o foaie de calcul optimizată pentru date în masă și acces simultan.
Conceperea structurii
Pentru a menține controlul și pentru a asigura performanțe bune, tabelele sunt supuse unor reguli stricte. Fiecare coloană de tabel are un nume fixat, iar valorile fiecărei coloane trebuie să fie de același tip de date. În plus, este foarte recomandat – deși nu este obligatoriu – ca fiecare rând să poată fi identificat printr-o valoare unică. Coloana în care se află această valoare de identificare se numește Cheia primară (Primary Key). Aici, îl numim întotdeauna id. Dar toată lumea este liberă să aleagă un nume diferit. Mai mult, putem folosi concatenarea mai multor coloane ca Primary Key.
La început trebuie să decidem următoarele întrebări:
- Ce date despre persoane (în acest prim exemplu) vrem să salvăm? Desigur, există o mulțime de informații despre persoane (de exemplu, culoarea ochilor, semnul zodiacal, …), dar fiecare aplicație are nevoie doar de unele dintre ele. Trebuie să decidem care dintre ele sunt de interes în contextul nostru concret.
- Ce nume atribuim datelor selectate? Fiecare referință identificată intră într-o coloană a tabelului, care trebuie să aibă un nume.
- De ce tip sunt datele? Toate valorile datelor dintr-o coloană trebuie să fie de același tip. Nu putem pune un șir arbitrar într-o coloană de tipul de date
DATE
.
În exemplul nostru, decidem să salvăm prenumele, numele, data și locul nașterii, numărul asigurării sociale și greutatea persoanei. Evident, data nașterii este de tip DATE
, greutatea este un număr, iar toate celelalte sunt un fel de șiruri. Pentru șiruri, există o distincție între cele care au o lungime fixă și cele în care lungimea variază de obicei foarte mult de la rând la rând. Primul se numește CHAR (<n>), unde <n> este lungimea fixă, iar celelalte VARCHAR (<n>), unde <n> este lungimea maximă.
Stabilește deciziile
Deciziile luate anterior trebuie exprimate într-un limbaj ușor de înțeles. Acest limbaj este SQL, care acționează ca interfață între utilizatorii finali – sau programe speciale – și SGBD.
-- liniile de comentarii încep cu două semne minus consecutive '--'
CREATE TABLE person (
-- definește coloane (nume / tip / valoare implicită / anulabil)
id DECIMAL NOT NULL,
firstname VARCHAR(50) NOT NULL,
lastname VARCHAR(50) NOT NULL,
date_of_birth DATE,
place_of_birth VARCHAR(50),
ssn CHAR(11),
weight DECIMAL DEFAULT 0 NOT NULL,
-- selectați una dintre coloanele definite ca cheie primară și
-- găsiți un nume semnificativ pentru constrângerea cheii primare: „person_pk” poate fi o alegere bună
CONSTRAINT person_pk PRIMARY KEY (id)
);
Alegem person ca nume al tabelului, care este format din șapte coloane. Coloanei id i se atribuie rolul cheii primare. Putem stoca exclusiv cifre în coloanele id și weight, șiruri cu o lungime de până la 50 de caractere în firstname, lastname și place_of_birth, datele în date_of_birth și un șir de exact unsprezece caractere în ssn. Expresia NOT NULL face parte din definiția id, firstname, lastname și weight. Aceasta înseamnă că, în fiecare rând, trebuie să existe o valoare pentru aceste patru coloane. Nu este posibilă stocarea niciunei valori în niciuna dintre acele coloane – dar șirul de 8 caractere „fără valoare” sau cifra „0” sunt permise deoarece sunt valori. Sau să o spunem invers: este posibil să omitem valorile date_of_birth, place_of_birth și ssn.
Definiția unei chei primare se numește „constrângere” (mai târziu, vom cunoaște mai multe tipuri de constrângeri). Fiecare constrângere ar trebui să aibă un nume – este person_pk în acest exemplu.
Rezultatul
După executarea comenzii „CREATE TABLE” de mai sus, SGBD a creat un obiect pe care îl putem imagina similar cu următorul tabel:
-
-
id firstname lastname date_of_birth place_of_birth ssn weight
-
Acest tabel prezintă 4 rânduri. Prima linie reprezintă numele coloanelor – nu valorile! Următoarele 3 linii au doar scop demonstrativ. Dar în tabelul bazei de date, în prezent nu există un singur rând! Este complet gol, fără rânduri deloc, fără valori deloc! Singurul lucru care există în baza de date este structura tabelului.
Înapoi la Start
Poate că vrem să ștergem tabelul într-o zi. Pentru a face acest lucru, putem folosi comanda DROP. Elimină tabelul în totalitate: toate datele și structura completă sunt elininate
DROP TABLE person;
Nu confundați comanda DROP cu comanda DELETE. Comanda DELETE șterge doar rândurile – eventual pe toate. Cu toate acestea, tabelul în sine, care deține definiția structurii, este păstrat.
Include texte traduse din Wikibooks
Lasă un răspuns