|
2 weeks ago | |
---|---|---|
.. | ||
README.md | 2 weeks ago | |
assignment.md | 4 weeks ago |
README.md
Lucrul cu Date: Baze de Date Relaționale
![]() |
---|
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
șiSELECT
î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:
- Descrie conceptele datelor relaționale
- Începe să interoghezi cu Transact-SQL (Transact-SQL este o versiune de SQL)
- Conținut SQL pe Microsoft Learn
Temă
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.