Ce este o bază de date? Un ghid pentru cei care construiesc aplicații
O bază de date este un depozit organizat de informații pe care o aplicație le salvează și le citește — utilizatorii, comenzile, rezervările, mesajele sale. Spre deosebire de informațiile ținute doar într-un tab al browserului, datele dintr-o bază de date rămân după o reîmprospătare sau o repornire, iar toți cei care folosesc aplicația văd aceleași înregistrări. Majoritatea bazelor de date organizează datele în tabele, asemănătoare foilor dintr-un tabel de calcul, dar cu reguli stricte care păstrează datele consecvente.
De ce contează când construiești cu AI
Cea mai frecventă surpriză pentru cei care construiesc cu AI este o aplicație care arată terminată, dar uită totul. Adaugi un client, reîmprospătezi pagina și el dispare. De obicei asta înseamnă că aplicația ținea datele în memoria browserului, nu într-o bază de date.
O bază de date este și locul în care stau multe dintre cele mai importante decizii, indiferent dacă îți dai seama sau nu:
- Ce înregistrezi. Dacă nu stochezi starea unei rezervări, nu poți arăta care rezervări au fost anulate.
- Cum se leagă lucrurile. Dacă un client poate avea mai multe rezervări sau o rezervare mai multe servicii, asta modelează întreaga aplicație.
- Cine vede ce. Majoritatea greșelilor de confidențialitate țin de înregistrările pe care le poate citi un utilizator.
Nu trebuie să proiectezi singur baza de date. Dar înțelegerea noțiunilor de bază te ajută să descrii clar datele și să depistezi problemele devreme.
O analogie din viața de zi cu zi
Imaginează-ți un dulap cu dosare bine organizat într-un birou mic.
Fiecare sertar ține un singur fel de lucru: un sertar pentru clienți, unul pentru programări, unul pentru facturi. În interiorul fiecărui sertar, fiecare dosar respectă același format, cu aceleași câmpuri completate. Fiecare dosar are un număr de referință unic, iar atunci când o factură aparține unui client, dosarul facturii notează numărul acelui client în loc să copieze tot dosarul lui.
Acesta este un model relațional de bază de date. Sertarele sunt tabele, dosarele sunt rânduri, câmpurile sunt coloane, numerele de referință sunt chei primare, iar notele care indică alt dosar sunt chei externe. Un bun șef de birou impune și reguli — nicio programare fără dată, niciun doi clienți cu același număr — exact cum face și o bază de date.
Un exemplu practic: o aplicație de rezervări la un salon
Să zicem că ceri unui AI să construiască un site de rezervări pentru un salon de coafură. O bază de date sensibilă ar avea patru tabele.
servicii
| id | nume | durata_minute | preț |
|---|---|---|---|
| 1 | Tuns | 45 | 40.00 |
| 2 | Vopsit | 90 | 95.00 |
personal
| id | nume | |
|---|---|---|
| 1 | Sara | sara@example.com |
| 2 | Omar | omar@example.com |
clienți
| id | nume | telefon | |
|---|---|---|---|
| 101 | Lena Park | lena@example.com | 555-0100 |
rezervări
| id | client_id | serviciu_id | personal_id | începe_la | stare |
|---|---|---|---|---|---|
| 5001 | 101 | 1 | 2 | 2026-10-03 14:00 | confirmată |
Uită-te la tabelul rezervări. El nu copiază numele și numărul de telefon ale Lenei în fiecare rezervare; stochează client_id = 101. Dacă Lena își schimbă numărul de telefon, el se schimbă într-un singur loc, iar fiecare rezervare afișează noul număr. Aceasta este ideea centrală a unei baze de date relaționale: stochezi fiecare fapt o singură dată și faci legătura către el.
Aceeași structură răspunde la întrebări utile:
- „Ce intervale sunt libere pentru Omar vinerea?” — uită-te la rezervările lui Omar din ziua respectivă.
- „Cât au adus vopsirile în luna aceasta?” — leagă rezervările de servicii și adună prețurile.
- „Ce clienți nu au mai făcut o rezervare de 90 de zile?” — compară clienții cu ultima lor rezervare.
Termeni comuni explicați
| Termen | Ce înseamnă |
|---|---|
| Tabel | O colecție de un singur fel de înregistrări, precum clienți sau rezervări. |
| Rând (înregistrare) | Un element dintr-un tabel — un client, o rezervare. |
| Coloană (câmp) | O informație pe care o are fiecare rând, cum ar fi e-mailul sau prețul. |
| Cheie primară | Un ID unic pentru fiecare rând, de obicei un număr sau un șir aleatoriu. |
| Cheie externă | O coloană care indică un rând dintr-un alt tabel, de exemplu client_id din rezervări. |
| Schemă | Designul general: ce tabele există, coloanele lor și cum se leagă între ele. |
| Interogare | O cerere de citire sau modificare a datelor, de exemplu „toate rezervările de mâine”. |
| SQL | Structured Query Language, limbajul standard pentru interogarea bazelor de date relaționale. |
| Migrare | O modificare salvată și repetabilă a schemei, de exemplu adăugarea unei coloane. |
| Index | O structură de căutare care face mai rapide căutările pe o coloană, ca indexul unei cărți. |
| CRUD | Create, Read, Update, Delete — cele patru lucruri de bază pe care le fac aplicațiile cu datele. |
| Backup | O copie a datelor pe care o poți restaura dacă se întâmplă ceva. |
Tipuri de baze de date
| Tip | Cum stochează datele | Exemple | Potrivit pentru |
|---|---|---|---|
| Relațională (SQL) | Tabele cu coloane fixe și legături între ele | Postgres, MySQL, SQLite | Majoritatea aplicațiilor de business: rezervări, magazine, CRM-uri, SaaS |
| Document (NoSQL) | Documente flexibile, asemănătoare JSON | MongoDB, Firestore | Date a căror formă variază mult de la o înregistrare la alta |
| Cheie-valoare | O valoare stocată sub o cheie | Redis | Cache, date de scurtă durată, precum sesiunile |
Pentru aproape orice construiește mai întâi un fondator sau o mică afacere, o bază de date relațională este varianta sigură implicită.
Unde se află baza de date în aplicația ta
Vizitatorii nu vorbesc niciodată direct cu baza de date. Pagina din browserul lor (frontend-ul, vezi frontend vs. backend) cere date de la serverul tău (backend-ul), de obicei printr-un API. Serverul verifică cine cere și dacă are voie, apoi interoghează baza de date și trimite înapoi doar ce are dreptul să vadă acea persoană.
Pasul acesta din mijloc este important. Dacă browserul ar putea interoga direct baza de date cu acces complet, oricine ar putea deschide instrumentele de dezvoltator și ar putea citi tot.
Greșeli frecvente și idei greșite
- Păstrarea datelor doar în browser. Stocarea din browser (cum este localStorage) trăiește pe un singur dispozitiv și într-un singur browser. Este în regulă pentru un filtru reținut, nu pentru comenzi.
- Îngrămădirea totului într-un singur tabel. Un singur tabel „rezervări” cu numele clientului, numărul de telefon și prețul serviciului copiate în fiecare rând se desincronizează repede.
- Stocarea parolelor în text clar. Parolele trebuie transformate prin hash, niciodată stocate citibil. Vezi ce este autentificarea.
- Lipsa regulilor asupra datelor. Fără câmpuri obligatorii și reguli de unicitate, ajungi cu rezervări fără dată și clienți duplicați.
- Uitarea ștergerii. Decide dacă ștergerea unui client șterge și rezervările lui, le păstrează sau este blocată.
- Folosirea datelor de producție pentru experimente. Testează modificările riscante într-un loc sigur și păstrează backup-uri.
- Tratarea tabelului de calcul drept bază de date pentru totdeauna. Tabelele de calcul sunt excelente la început, dar se chinuie cu mulți utilizatori simultan și cu permisiuni. Vezi cum transformi un tabel de calcul într-o aplicație.
Ce să ceri constructorului tău AI
- „Salvează asta într-o bază de date, nu în browser. Spune-mi ce tabele vei crea.”
- „Arată-mi schema ca un tabel simplu: fiecare tabel, coloanele lui și cum se leagă.”
- „Un client poate avea mai multe rezervări; fiecare rezervare are exact un serviciu și exact un membru al personalului.”
- „Fă e-mailul obligatoriu și unic pentru clienți.”
- „Oprește două rezervări la același membru al personalului care se suprapun.”
- „Doar proprietarul autentificat poate citi toate rezervările; clienții pot vedea doar pe ale lor. Aplică asta pe server.”
- „Când șterg un serviciu, nu șterge rezervările trecute — marchează serviciul ca inactiv.”
Baze de date în Mythex
Când aplicația ta trebuie să salveze date, Mythex adaugă proiectului o bază de date Postgres dedicată — poți cere în chat („salvează înscrierile pe lista de așteptare într-o bază de date”) sau folosi comanda /database. Detaliile de conectare sunt transmise automat aplicației, iar agentul creează tabelele. Baza de date adoarme după cinci minute de inactivitate și se trezește la următoarea cerere, iar utilizarea publicată este facturată pentru timpul în care a fost trează, din același sold de credite folosit la construire. Este disponibilă în planurile Free și Pro. Documentația despre baze de date acoperă detaliile, iar șabloanele de aplicații includ puncte de plecare orientate pe date.
Întrebări
Ce este o bază de date, pe scurt?
O bază de date este un depozit organizat de informații în care o aplicație poate salva și din care poate citi, cum ar fi utilizatori, comenzi sau rezervări. Spre deosebire de datele ținute doar într-un tab al browserului, datele dintr-o bază de date rămân după o reîmprospătare, o repornire sau atunci când cineva deschide aplicația de pe alt dispozitiv.
Este un tabel de calcul o bază de date?
Un tabel de calcul poate ține același tip de date, dar nu este construit pentru aplicații. O bază de date reală impune reguli despre ce conține fiecare coloană, leagă sigur tabelele între ele, gestionează mulți oameni care scriu simultan și controlează cine ce poate citi.
Care este diferența dintre bazele de date SQL și NoSQL?
Bazele de date SQL (relaționale), precum Postgres și MySQL, stochează datele în tabele cu coloane definite și relații între ele. Bazele de date NoSQL, precum MongoDB, stochează documente mai flexibile. Majoritatea aplicațiilor de business — rezervări, CRM-uri, magazine — se potrivesc bine cu modelul relațional.
Are nevoie aplicația mea de o bază de date?
Dacă trebuie să rețină orice introduc oamenii — înscrieri, comenzi, mesaje, setări — și să le afișeze mai târziu sau altcuiva, da. Un site pur informativ, fără formulare care salvează date, de obicei nu are nevoie.