7 iunie 2012

SQL. Dialecte DB2, Oracle, PostgreSQL și SQL Server

La FITS, firma în cadrul căreia lucrez cu drag (fără ghilimele) și spor (deși managementul s-ar putea să fie de altă părere), a avut loc de curând o serie de interviuri pentru ocuparea unui post de Oracle DBA. Pentru că prea multă lume nu s-a îngrămădit să vină, ne-am gândit și la varianta cooptării unui "junior", chiar de pe băncile facultății, iar principalul grup țintă pe care l-am avut în colimator a fost dat de studenții din anii terminali ai secției de "Informatică Economică" din cadrul FEAA. Acum, marea dilemă: ce întrebări să le punem la interviu, ținând cont de nivelul lor de pregătire. Dat fiind că eu am terminat aceeași secție, primul lucru la care m-am gândit a fost să mă inspir din una din cărțile de SQL ale domnului profesor Marin Fotache și să validez astfel cât de bine și-a însușit candidatul ceea ce s-a predat la cursul de baze de date. Și uite-așa mi-am cumpărat ediția a II-a a cărții "SQL. Dialecte DB2, Oracle, PostgreSQL și SQL Server".

Cartea a apărut undeva prin 2009 și este publicată la editura Polirom. Unii ar zice: Dom'le, ești nebun? Îți cumperi o carte din domeniul IT veche de trei ani? Păi nu e "expirată"? Ei bine, nu! Am citit cu mare interes cele aproape 900 de pagini și pot afirma cu mâna pe inimă că, dincolo de ce a apărut nou o dată cu noile versiuni de SGBD-uri, informația prezentată e cât se poate de actuală și, oricum, cea mai uzitată în activitatea de zi cu zi a SQL-istului.

Stilul în care noțiunile sunt prezentate te cucerește chiar de la începutul lecturii. În noianul de tehnicități există presărate "glumițe", nedumeriri, dar și mici (sau mari) perplexități ale autorului atunci când baza de date nu se "comportă" așa cum ne-am aștepta. Cartea îndeamnă la a experimenta. E ciudat a o citi fără a avea la îndemână un calculator unde să te poți juca cu SQL-urile prezentate.

Atrage de asemenea concretul și aspectul practic al exemplelor. Mă uitam la un moment dat pe un curs de baze de date predat la "Automatizări și Calculatoare", iar la definiția unei tabele era ceva cu două mulțimi și o funcție bijectivă, formule care mai de care mai dezarmante... Nu, așa ceva nu veți găsi în această carte, deși, tangențial, avem parte și de o descriere ceva mai formalizată a modelului relațional. Găsim, în schimb, tot felul de probleme cât se poate de reale pe care ne dorim a le rezolva prin SQL: "Care este situația încasării facturii 1120?", "Să se calculeze vânzările săptămânale", "Care sunt clienții cu valoarea vânzărilor peste medie?" și câte și mai câte.

Abordarea este, cum era de altfel de așteptat, de la simplu la complicat. Totuși, încă de la început se încearcă a se rezolva probleme relativ complexe, folosindu-se doar cunoștințele acumulate până în acel punct al lecturii. Ca urmare, avem parte de soluții de rezolvare originale, dar, pe alocuri, și fanteziste. Marele risc e acela că, cei care știu deja SQL destul de bine vor zice "da' de ce n-a folosit dom'le nu stiu ce join sau funcție agregat?", iar cei novice s-ar putea să se sperie de acele interogări pe câteva pagini. Asta îmi amintește de un vecin de-al meu care are un băiat prin clasa a IV-a și care m-a rugat într-o zi să-l ajut cu o problemă de matematică pe care fiu-su o avea de rezolvat pentru a doua zi. Zice: "Hai Dom' Tică, că dumneata ai școală..." și îmi arată un exercițiu în care trebuia rezolvată o sumă din-aia "telescopică". Mă uit și mă prind că-i vorba de o progresie aritmetică și-i zic omului că e o formulă pentru asta. Zice, "da' se predă asta într-a IV-a?". Eh, nici vorbă! Omu' vroia o soluție cu aritmetică din-aia pură. Așa și aici, rezolvăm problemele de SQL doar cu ce știm.

Că tot veni vorba de experimentat, o problemă destul de supărătoare mi s-a părut aceea că scripturile care conțin toate aceste interogări nu sunt disponibile. Nu cred că e nimeni dispus să tehnoredacteze un SQL-SELECT scris pe vreo două, trei pagini. Din fericire, scripturile de creare și de populare ale schemelor "cobai" pot fi descărcate de aici.

Deși de ani buni mă "lupt" cu SQL-ul, să nu credeți că nu am găsit și lucruri noi, de care nu știam. Ca să enumăr doar câteva, ar fi vorba de:
  • diviziunea relațională
  • corelarea dublă
  • cursoare FOR UPDATE
În plus, am avut ocazia să pot compara "tovarășul" meu de suferință, Oracle, cu celelalte SGBD-uri abordate: DB2, PostgreSQL și SQL Server.

În concluzie, vă recomand cu căldură să citiți această carte. N-o să vă pară rău! Sau, dacă mai aveți puțintică răbdare, atunci sunt șanse mari să apară și ediția a III-a, care mă aștept să fie și mai interesantă, dar și mai voluminoasă. Mai în glumă, mai în serios, termenul avansat de D-l Prof. Fotache ar fi undeva prin 2015.



4 commentarii:

Daniel spunea...

salut, scripturile mentionte in postul dvs nu mai sunt disponibile pe linkul mentionat. exista posibilitatea sa le mai aveti dvs si sa puteti face un share la ele?

Alexandru Tică spunea...

Salut Daniel,

Multumesc ca mi-ai spus. Am actualizat articolul cu adresa de la care pot fi descarcate scripturile de creare si populare a schemelor folosite in carte. Succes!

Dinu Mihai spunea...

Salut,

Linkul catre scripturile mentionate nu mai functioneaza. Va rog sa refaceti linkul sau sa faceti cumva ca sa sharuiti scripurile.
Multumesc!

Alexandru Tică spunea...

Salut,

Am refacut link-ul. Multumesc pentru comentariu.