You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Data-Science-For-Beginners/translations/ro/2-Working-With-Data/05-relational-databases
leestott 7373a19c39
🌐 Update translations via Co-op Translator
2 weeks ago
..
README.md 🌐 Update translations via Co-op Translator 2 weeks ago
assignment.md 🌐 Update translations via Co-op Translator 4 weeks ago

README.md

Lucrul cu Date: Baze de Date Relaționale

 Sketchnote de (@sketchthedocs)
Lucrul cu Date: Baze de Date Relaționale - Sketchnote de @nitya

Probabil ai folosit un tabel în trecut pentru a stoca informații. Aveai un set de rânduri și coloane, unde rândurile conțineau informațiile (sau datele), iar coloanele descriau informațiile (uneori numite metadate). O bază de date relațională se bazează pe acest principiu de bază al coloanelor și rândurilor din tabele, permițându-ți să ai informații distribuite pe mai multe tabele. Acest lucru îți permite să lucrezi cu date mai complexe, să eviți duplicarea și să ai flexibilitate în modul în care explorezi datele. Haide să explorăm conceptele unei baze de date relaționale.

Chestionar înainte de lecție

Totul începe cu tabele

O bază de date relațională are la bază tabele. La fel ca în cazul unui tabel, un tabel este o colecție de coloane și rânduri. Rândul conține datele sau informațiile cu care dorim să lucrăm, cum ar fi numele unui oraș sau cantitatea de precipitații. Coloanele descriu datele pe care le stochează.

Să începem explorarea noastră prin crearea unui tabel pentru a stoca informații despre orașe. Am putea începe cu numele și țara lor. Ai putea stoca aceste informații într-un tabel astfel:

Oraș Țară
Tokyo Japonia
Atlanta Statele Unite
Auckland Noua Zeelandă

Observă că numele coloanelor oraș, țară și populație descriu datele stocate, iar fiecare rând conține informații despre un oraș.

Limitările abordării cu un singur tabel

Probabil, tabelul de mai sus îți pare destul de familiar. Să începem să adăugăm date suplimentare în baza noastră de date în formare - precipitațiile anuale (în milimetri). Ne vom concentra pe anii 2018, 2019 și 2020. Dacă ar fi să le adăugăm pentru Tokyo, ar putea arăta astfel:

Oraș Țară An Cantitate
Tokyo Japonia 2020 1690
Tokyo Japonia 2019 1874
Tokyo Japonia 2018 1445

Ce observi la tabelul nostru? Poți observa că duplicăm numele și țara orașului de mai multe ori. Acest lucru ar putea ocupa destul de mult spațiu de stocare și este în mare parte inutil să avem mai multe copii. La urma urmei, Tokyo are doar un singur nume care ne interesează.

OK, să încercăm altceva. Să adăugăm noi coloane pentru fiecare an:

Oraș Țară 2018 2019 2020
Tokyo Japonia 1445 1874 1690
Atlanta Statele Unite 1779 1111 1683
Auckland Noua Zeelandă 1386 942 1176

Deși acest lucru evită duplicarea rândurilor, adaugă alte provocări. Ar trebui să modificăm structura tabelului de fiecare dată când apare un nou an. În plus, pe măsură ce datele noastre cresc, având anii ca și coloane va face mai dificilă recuperarea și calcularea valorilor.

De aceea avem nevoie de mai multe tabele și relații. Prin divizarea datelor noastre putem evita duplicarea și avem mai multă flexibilitate în modul în care lucrăm cu datele.

Conceptele relațiilor

Să revenim la datele noastre și să determinăm cum dorim să le împărțim. Știm că dorim să stocăm numele și țara orașelor noastre, așa că acest lucru va funcționa probabil cel mai bine într-un tabel.

Oraș Țară
Tokyo Japonia
Atlanta Statele Unite
Auckland Noua Zeelandă

Dar înainte de a crea următorul tabel, trebuie să ne dăm seama cum să facem referire la fiecare oraș. Avem nevoie de o formă de identificator, ID sau (în termeni tehnici de baze de date) o cheie primară. O cheie primară este o valoare utilizată pentru a identifica un rând specific într-un tabel. Deși aceasta ar putea fi bazată pe o valoare în sine (am putea folosi numele orașului, de exemplu), ar trebui să fie aproape întotdeauna un număr sau alt identificator. Nu dorim ca ID-ul să se schimbe vreodată, deoarece ar rupe relația. Vei observa că, în cele mai multe cazuri, cheia primară sau ID-ul va fi un număr generat automat.

Cheia primară este frecvent abreviată ca PK

orașe

city_id Oraș Țară
1 Tokyo Japonia
2 Atlanta Statele Unite
3 Auckland Noua Zeelandă

Vei observa că folosim termenii "id" și "cheie primară" interschimbabil în timpul acestei lecții. Conceptele de aici se aplică și la DataFrames, pe care le vei explora mai târziu. DataFrames nu folosesc terminologia de "cheie primară", însă vei observa că se comportă în mod similar.

Cu tabelul nostru de orașe creat, să stocăm precipitațiile. În loc să duplicăm informațiile complete despre oraș, putem folosi ID-ul. De asemenea, ar trebui să ne asigurăm că tabelul nou creat are o coloană id, deoarece toate tabelele ar trebui să aibă un ID sau o cheie primară.

precipitații

rainfall_id city_id An Cantitate
1 1 2018 1445
2 1 2019 1874
3 1 2020 1690
4 2 2018 1779
5 2 2019 1111
6 2 2020 1683
7 3 2018 1386
8 3 2019 942
9 3 2020 1176

Observă coloana city_id din tabelul nou creat precipitații. Această coloană conține valori care fac referire la ID-urile din tabelul orașe. În termeni tehnici de date relaționale, aceasta se numește cheie externă; este o cheie primară dintr-un alt tabel. Poți să o consideri pur și simplu ca o referință sau un indicator. city_id 1 face referire la Tokyo.

[!NOTE] Cheia externă este frecvent abreviată ca FK

Recuperarea datelor

Cu datele noastre separate în două tabele, te-ai putea întreba cum le recuperăm. Dacă folosim o bază de date relațională precum MySQL, SQL Server sau Oracle, putem folosi un limbaj numit Structured Query Language sau SQL. SQL (uneori pronunțat "sequel") este un limbaj standard utilizat pentru a recupera și modifica datele dintr-o bază de date relațională.

Pentru a recupera datele, folosești comanda SELECT. În esență, selectezi coloanele pe care vrei să le vezi din tabelul în care se află. Dacă ai dori să afișezi doar numele orașelor, ai putea folosi următorul:

SELECT city
FROM cities;

-- Output:
-- Tokyo
-- Atlanta
-- Auckland

SELECT este locul unde listezi coloanele, iar FROM este locul unde listezi tabelele.

[NOTE] Sintaxa SQL nu este sensibilă la majuscule, ceea ce înseamnă că select și SELECT înseamnă același lucru. Totuși, în funcție de tipul de bază de date pe care o folosești, coloanele și tabelele ar putea fi sensibile la majuscule. Ca rezultat, este o bună practică să tratezi întotdeauna totul în programare ca fiind sensibil la majuscule. Când scrii interogări SQL, convenția comună este să pui cuvintele cheie cu litere mari.

Interogarea de mai sus va afișa toate orașele. Să ne imaginăm că dorim să afișăm doar orașele din Noua Zeelandă. Avem nevoie de o formă de filtru. Cuvântul cheie SQL pentru aceasta este WHERE, sau "unde ceva este adevărat".

SELECT city
FROM cities
WHERE country = 'New Zealand';

-- Output:
-- Auckland

Îmbinarea datelor

Până acum am recuperat date dintr-un singur tabel. Acum dorim să aducem datele împreună din orașe și precipitații. Acest lucru se face prin îmbinarea lor. Practic vei crea o legătură între cele două tabele și vei potrivi valorile dintr-o coloană din fiecare tabel.

În exemplul nostru, vom potrivi coloana city_id din precipitații cu coloana city_id din orașe. Acest lucru va potrivi valoarea precipitațiilor cu orașul său respectiv. Tipul de îmbinare pe care îl vom efectua se numește îmbinare internă, ceea ce înseamnă că, dacă vreun rând nu se potrivește cu nimic din celălalt tabel, nu va fi afișat. În cazul nostru, fiecare oraș are precipitații, deci totul va fi afișat.

Să recuperăm precipitațiile din 2019 pentru toate orașele noastre.

Vom face acest lucru în pași. Primul pas este să îmbinăm datele împreună indicând coloanele pentru legătură - city_id, așa cum am evidențiat mai devreme.

SELECT cities.city
    rainfall.amount
FROM cities
    INNER JOIN rainfall ON cities.city_id = rainfall.city_id

Am evidențiat cele două coloane pe care le dorim și faptul că dorim să îmbinăm tabelele împreună prin city_id. Acum putem adăuga declarația WHERE pentru a filtra doar anul 2019.

SELECT cities.city
    rainfall.amount
FROM cities
    INNER JOIN rainfall ON cities.city_id = rainfall.city_id
WHERE rainfall.year = 2019

-- Output

-- city     | amount
-- -------- | ------
-- Tokyo    | 1874
-- Atlanta  | 1111
-- Auckland |  942

Rezumat

Baze de date relaționale sunt centrate pe divizarea informațiilor între mai multe tabele, care sunt apoi reunite pentru afișare și analiză. Acest lucru oferă un grad ridicat de flexibilitate pentru a efectua calcule și pentru a manipula datele. Ai văzut conceptele de bază ale unei baze de date relaționale și cum să efectuezi o îmbinare între două tabele.

🚀 Provocare

Există numeroase baze de date relaționale disponibile pe internet. Poți explora datele folosind abilitățile pe care le-ai învățat mai sus.

Chestionar după lecție

Chestionar după lecție

Recapitulare & Studiu Individual

Există mai multe resurse disponibile pe Microsoft Learn pentru a-ți continua explorarea conceptelor SQL și de baze de date relaționale:

Temă

Titlul temei


Declinare de responsabilitate:
Acest document a fost tradus folosind serviciul de traducere AI Co-op Translator. Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri.