Proiectarea Bazelor de Date : Aplicații

📌 Ghid de lucru: Acest material este format exclusiv din probleme practice și aplicații de proiectare. Fiecare solutie trebuie modelată pentru a asigura o structură optimă, fără redundanță.

1.

Determină în ce tabel sau în ce configurare de chei trebuie plasat fiecare atribut:

1. Într-un sistem de închiriere auto cu CLIENTI, AUTOMOBILE și INCHIRIERI, în ce tabel plasăm câmpul Kilometri_La_Restituire?
2. Între SPITALE (1) și SECTII_MEDICALE (M), unde adăugăm Cheia Externă (FK) pentru a lega cele două tabele?
3. Într-o platformă cu INSTRUCTORI, CURSURI și INSCRIERI, unde adăugăm câmpul Data_Finalizare_Curs a unui cursant?
4. Într-o sală de fitness avem MEMBRI, ABONAMENTE și CONTRACTE. Unde plasăm Pret_Standard_Lunar al unui tip de abonament?
5. În tabelul PRODUSE avem ID_Produs, Nume_Produs, ID_Furnizor (FK) și Telefon_Furnizor. Ce problemă apare dacă lăsăm Telefon_Furnizor în PRODUSE?
6. Într-un restaurant cu MASI, PREPARATE, COMENZI și DETALII_COMANDA, unde se stochează Numar_Masa?
7. La un cinematograf avem FILME (1) și PROIECȚII (M). O proiecție reprezintă rularea unui film la o anumită oră într-o sală. Unde punem Ora_Start?
8. Într-un hotel avem CLIENTI, CAMERE și REZERVARI. Unde adăugăm Numar_Nopti_Cazare?
9. Pentru o clinică veterinară cu STAPANI (1) și ANIMALE_PACIENTI (M), unde adăugăm câmpul Rasa_Animal?
10. Cum rezolvăm relația M:M dintre EDITURI și AUTORI dacă o editură lucrează cu mai mulți autori, iar un autor publică la mai multe edituri?

2.

Rezolvă scenariile interactive de mai jos. Selectează tabelele necesare (Etapa 1), apoi configurează câmpurile și cheile pentru fiecare tabel (Etapa 2).

🚗 Aplicația 1: Centru de Închirieri Auto Maxim 3 Tabele

Cerință: Evidența clienților înregistrați, a autoturismelor disponibile și a contractelor de închiriere încheiate.

Etapa 1: Selectează cele 3 tabele necesare din oferta de mai jos:
Etapa 2: Selectează câmpurile corecte pentru cele 3 tabele:

Tabelul CLIENTI:

Tabelul AUTOMOBILE:

Tabelul INCHIRIERI (Legătură M:M):

🎬 Aplicația 2: Cinema Multi-Sală & Bilete Maxim 4 Tabele

Cerință: Evidența sălilor de cinema, a filmelor din program, a proiecțiilor (rulărilor) programate și a biletelor vândute.

Etapa 1: Selectează cele 4 tabele necesare din oferta de mai jos:
Etapa 2: Selectează câmpurile corecte pentru cele 4 tabele:

Tabelul SALI_CINEMA:

Tabelul FILME:

Tabelul PROIECȚII (Legătură între Film și Sală):

Tabelul BILETE (Locuri rezervate):

💻 Aplicația 3: Platformă E-Learning Maxim 4 Tabele

Cerință: Gestiunea instructorilor, a cursurilor predate, a cursanților înregistrați și a înscrierilor la cursuri.

Etapa 1: Selectează cele 4 tabele necesare din oferta de mai jos:
Etapa 2: Selectează câmpurile corecte pentru cele 4 tabele:

Tabelul INSTRUCTORI:

Tabelul CURSURI:

Tabelul CURSANTI:

Tabelul INSCRIERI (M:M între Cursant și Curs):

🏋️ Aplicația 4: Club de Fitness & Personal Trainer Maxim 4 Tabele

Cerință: Gestiunea membrilor, a antrenorilor personali, a abonamentelor și a sesiunilor de antrenament programate.

Etapa 1: Selectează cele 4 tabele necesare din oferta de mai jos:
Etapa 2: Selectează câmpurile corecte pentru cele 4 tabele:

Tabelul ABONAMENTE:

Tabelul MEMBRI:

Tabelul ANTRENORI:

Tabelul SESIUNI_ANTRENAMENT (M:M între Membru și Antrenor):

🍕 Aplicația 5: Restaurant & Comenzi la Masă Maxim 4 Tabele

Cerință: Evidența consumației într-un restaurant: mesele, preparatele din meniu, comenzile și detaliile comenzi (linii comandă).

Etapa 1: Selectează cele 4 tabele necesare din oferta de mai jos:
Etapa 2: Selectează câmpurile corecte pentru cele 4 tabele:

Tabelul MASI:

Tabelul PREPARATE_MENIU:

Tabelul COMENZI_MASA:

Tabelul DETALII_COMANDA (Legătură M:M):

Scor Atelier Interactiv: 0 / 10 etape finalizate
Rezolvă cele 5 probleme de mai sus!

3. Aplicații Complexe: Proiectare & Schemă Relațională

Citește cerințele fiecărui scenariu real, elaborează schema relațională în căsuța de lucru (precizând tabelele, cheile PK, FK și tipurile de date) și apoi compară soluția ta cu arhitectura optimă (max. 4 tabele per aplicație).

🐾 Aplicația 1: Clinică Veterinară „PetCare” 4 Tabele

Cerințe de Sistem:
  • Fiecare proprietar de animale este înregistrat cu date de contact (Nume, Telefon, Adresă).
  • Un proprietar poate deține mai multe animale (Pacienți): Nume, Specie, Rasă.
  • Clinica are angajați mai mulți medici veterinari (Nume, Specializare, Telefon).
  • Fiecare consultație medicală are loc la o dată specifică, este efectuată de un medic pentru un pacient animal și înregistrează Diagnosticul și Costul.
✍️ Spațiu de Proiectare (Scrie schema ta aici): Format: TABEL (PK, FK, Câmpuri)

✅ Schema Relațională Corectă (4 Tabele):

1. PROPRIETARI Tabel 1
  • ID_Proprietar (PK) INT
  • Nume_Complet VARCHAR(60)
  • Telefon VARCHAR(15)
  • Adresa VARCHAR(100)
2. PACIENTI 1:M cu PROPRIETARI
  • ID_Pacient (PK) INT
  • Nume_Animal VARCHAR(40)
  • Specie VARCHAR(30)
  • Rasa VARCHAR(30)
  • ID_Proprietar (FK) INT
3. MEDICI Catalog Medici
  • ID_Medic (PK) INT
  • Nume_Medic VARCHAR(60)
  • Specializare VARCHAR(50)
  • Telefon VARCHAR(15)
4. CONSULTATII Legătură M:M
  • ID_Consultatie (PK) INT
  • ID_Pacient (FK) INT
  • ID_Medic (FK) INT
  • Data_Consultatie DATETIME
  • Diagnostic VARCHAR(200)
  • Cost_RON DECIMAL(8,2)

🏨 Aplicația 2: Gestiune Hotel & Rezervări Camere 4 Tabele

Cerințe de Sistem:
  • Hotelul oferă tipuri de camere (Single, Double, Suite) cu denumire, capacitate persoane și preț/noapte.
  • Sunt înregistrate camerele fizice ale hotelului (Număr Cameră, Etaj, FK Tip Camera).
  • Baza de date stochează datele clienților (Nume, CNP/Pașaport, Email, Telefon).
  • Clienții efectuează rezervări pentru camere (Data Sosirii, Data Plecării, Starea Rezervării).
✍️ Spațiu de Proiectare: Format: TABEL (PK, FK, Câmpuri)

✅ Schema Relațională Corectă (4 Tabele):

1. TIPURI_CAMERE Catalog Tipuri
  • ID_Tip (PK) INT
  • Denumire_Tip VARCHAR(30)
  • Capacitate_Persoane INT
  • Pret_Noapte_RON DECIMAL(8,2)
2. CAMERE 1:M cu TIPURI
  • ID_Camera (PK) INT
  • Numar_Camera VARCHAR(10)
  • Etaj INT
  • ID_Tip (FK) INT
3. CLIENTI Catalog Clienți
  • ID_Client (PK) INT
  • Nume_Complet VARCHAR(60)
  • CNP_Pasaport VARCHAR(20)
  • Telefon VARCHAR(15)
4. REZERVARI Legătură M:M
  • ID_Rezervare (PK) INT
  • ID_Client (FK) INT
  • ID_Camera (FK) INT
  • Data_CheckIn DATE
  • Data_CheckOut DATE
  • Status_Rezervare VARCHAR(20)

📚 Aplicația 3: Editură & Vânzare de Cărți 4 Tabele

Cerințe de Sistem:
  • Editura gestionează autorii cărților (Nume, Naționalitate).
  • Sunt păstrate cărțile publicate (Titlu, ISBN, Preț Unitari, FK Autor). Un autor poate scrie mai multe cărți.
  • Clienții plasează comenzi (Data Comandă, Nume Client, Adresă Livrare).
  • O comandă conține mai multe cărți în cantități specifice (`DETALII_COMANDA`).
✍️ Spațiu de Proiectare: Format: TABEL (PK, FK, Câmpuri)

✅ Schema Relațională Corectă (4 Tabele):

1. AUTORI Tabel 1
  • ID_Autor (PK) INT
  • Nume_Autor VARCHAR(60)
  • Nationalitate VARCHAR(30)
2. CARTI 1:M cu AUTORI
  • ID_Carte (PK) INT
  • Titlu VARCHAR(100)
  • ISBN VARCHAR(20)
  • Pret_Unitar DECIMAL(7,2)
  • ID_Autor (FK) INT
3. COMENZI Comenzi Clienți
  • ID_Comanda (PK) INT
  • Nume_Client VARCHAR(60)
  • Data_Comanda DATE
  • Adresa_Livrare VARCHAR(100)
4. DETALII_COMANDA Legătură M:M
  • ID_Detaliu (PK) INT
  • ID_Comanda (FK) INT
  • ID_Carte (FK) INT
  • Cantitate INT

✈️ Aplicația 4: Rezervare Bilete de Avion 4 Tabele

Cerințe de Sistem:
  • Compania operează zboruri între aeroporturi (Cod IATA, Oraș, Țară).
  • Sunt stocate zborurile (Număr Zbor, Data Plecării, Ora Plecării, FK Decolare, FK Aterizare).
  • Este menținută lista de pasageri (Nume, Pașaport, Email, Telefon).
  • Sunt eliberate bilete de avion care leagă un pasager de un zbor (Loc, Clasă, Preț).
✍️ Spațiu de Proiectare: Format: TABEL (PK, FK, Câmpuri)

✅ Schema Relațională Corectă (4 Tabele):

1. AEROPORTURI Catalog Locații
  • ID_Aeroport (PK) INT
  • Cod_IATA VARCHAR(3)
  • Oras VARCHAR(50)
  • Tara VARCHAR(40)
2. ZBORURI Legături Aeroporturi
  • ID_Zbor (PK) INT
  • Nr_Zbor VARCHAR(10)
  • ID_Aeroport_Plecare (FK) INT
  • ID_Aeroport_Sosire (FK) INT
  • Data_Ora_Plecare DATETIME
3. PASAGERI Catalog Pasageri
  • ID_Pasager (PK) INT
  • Nume_Complet VARCHAR(60)
  • Serie_Pasaport VARCHAR(20)
  • Email VARCHAR(60)
4. BILETE_AVION Legătură M:M
  • ID_Bilet (PK) INT
  • ID_Zbor (FK) INT
  • ID_Pasager (FK) INT
  • Cod_Loc VARCHAR(5)
  • Clasa VARCHAR(15)
  • Pret_Achitat DECIMAL(8,2)

🏠 Aplicația 5: Agenție Imobiliară (Vizionări) 4 Tabele

Cerințe de Sistem:
  • Sunt înregistrați proprietarii de imobile (Nume, Telefon).
  • Sunt gestionate proprietățile (Adresă, Suprafață, Preț, FK Proprietar).
  • Sunt înregistrați agenții imobiliari din firmă (Nume, Procent Comision, Telefon).
  • Se ține evidența vizionărilor (Data, Nume Client Potențial, Feedback, FK Agent, FK Proprietate).
✍️ Spațiu de Proiectare: Format: TABEL (PK, FK, Câmpuri)

✅ Schema Relațională Corectă (4 Tabele):

1. PROPRIETARI Tabel 1
  • ID_Proprietar (PK) INT
  • Nume_Proprietar VARCHAR(60)
  • Telefon VARCHAR(15)
2. PROPRIETATI 1:M cu PROPRIETARI
  • ID_Proprietate (PK) INT
  • Adresa_Completa VARCHAR(100)
  • Suprafata_MP INT
  • Pret_Cerut_EUR DECIMAL(10,2)
  • ID_Proprietar (FK) INT
3. AGENTI Catalog Agenți
  • ID_Agent (PK) INT
  • Nume_Agent VARCHAR(60)
  • Procent_Comision DECIMAL(4,2)
4. VIZIONARI Legătură M:M
  • ID_Vizionare (PK) INT
  • ID_Proprietate (FK) INT
  • ID_Agent (FK) INT
  • Nume_Client_Potential VARCHAR(60)
  • Data_Ora_Vizionare DATETIME
  • Nota_Feedback VARCHAR(150)

🎸 Aplicația 6: Festival de Muzică & Recitaluri 4 Tabele

Cerințe de Sistem:
  • Festivalul dispune de mai multe scene (Nume Scenă, Capacitate Public).
  • Sunt înregistrați artiștii / trupele (Nume Trupă, Gen Muzical).
  • Sunt programate recitalurile / concertele (FK Scenă, FK Artist, Ora Start, Ora Final).
  • Sunt vândute bilete de acces participanților (Nume Participant, Tip Bilet, Preț, Cod Bare).
✍️ Spațiu de Proiectare: Format: TABEL (PK, FK, Câmpuri)

✅ Schema Relațională Corectă (4 Tabele):

1. SCENE Locații Festival
  • ID_Scena (PK) INT
  • Nume_Scena VARCHAR(40)
  • Capacitate_Public INT
2. ARTISTI Catalog Artiști
  • ID_Artist (PK) INT
  • Nume_Trupa VARCHAR(60)
  • Gen_Muzical VARCHAR(30)
3. CONCERTE_RECITALURI Legătură Scene-Artiști
  • ID_Concert (PK) INT
  • ID_Scena (FK) INT
  • ID_Artist (FK) INT
  • Ora_Start DATETIME
  • Ora_Final DATETIME
4. BILETE_ACCES Vânzări Bilete
  • ID_Bilet (PK) INT
  • Cod_Bare VARCHAR(30)
  • Nume_Participant VARCHAR(60)
  • Tip_Bilet VARCHAR(20)
  • Pret_RON DECIMAL(7,2)

4. Test Final Grilă: Evaluare Arhitectură BD

Alege răspunsul corect la fiecare dintre cele 10 întrebări de sinteză:

1. De ce într-o relație de tip 1:M (ex: O editură publică mai multe Cărți) Cheia Externă se plasează ÎNTOTDEAUNA în tabelul de pe partea „M” (CĂRȚI)?

A. Pentru că fiecare carte are o singură editură, stocând o valoare unică fără repetare de căsuțe.
B. Pentru că SQL nu permite chei externe în tabele cu mai puțin de 5 coloane.
C. Pentru a evita transformarea cheii în VARCHAR.

2. Dacă dorim să proiectăm o bază de date cu maximum 4 tabele pentru o clinică stomatologică (`PACIENTI`, `MEDICI`, `CABINETE`, `PROGRAMARI`), unde se plasează câmpul `Motiv_Consultatie`?

A. În tabelul PACIENTI
B. În tabelul PROGRAMARI
C. În tabelul MEDICI

3. Care este scopul principal al adăugării unei Chei Primare Artificiale de tip `INT` (ex: `ID_Client`) în locul utilizării `CNP` ca și Cheie Primară?

A. Deoarece CNP-ul își schimbă valoarea în fiecare an.
B. Pentru că operațiile de JOIN pe numere întregi sunt mai rapide și mai sigure decât pe șiruri lungi de cifre.
C. Pentru că CNP-ul nu poate fi unic în baza de date.

4. Ce se întâmplă dacă într-un tabel `REZERVARI` punem o coloană `Nume_Client` și `Telefon_Client` alături de `ID_Client (FK)`?

A. Apare redundanță de date și risc de neconcordanță la actualizarea telefonului.
B. Baza de date devine mai rapidă și mai ușor de actualizat.
C. Este o practică obligatorie în proiectarea profesională.

5. Într-un sistem cu `CURSURI` și `STUDENTI`, un student poate fi înscris la mai multe cursuri, iar un curs are mai mulți studenți. De câte tabele avem nevoie MINIM?

A. 2 tabele
B. 3 tabele (incluzând tabelul de legătură M:M)
C. 5 tabele

6. Ce tip de date este cel mai adecvat pentru câmpul `Data_Ora_Start` a unui eveniment?

A. VARCHAR(50)
B. DATETIME sau TIMESTAMP
C. INT

7. Într-o bază de date cu `AUTOMOBILE` și `INCHIRIERI`, ce reprezintă o Cheie Externă (Foreign Key)?

A. O parolă care protejează tabelul de modificări neautorizate.
B. O coloană dintr-un tabel care face referință la Cheia Primară din alt tabel pentru a asigura integritatea referențială.
C. Un câmp care identifică unic fiecare rând din propriul tabel.

8. Într-un magazin online cu tabelele `CLIENTI`, `PRODUSE`, `COMENZI` și `DETALII_COMANDA`, unde adăugăm câmpul `Stoc_Disponibil`?

A. În tabelul PRODUSE
B. În tabelul DETALII_COMANDA
C. În tabelul COMENZI

9. Ce regulă este încălcată dacă în tabelul `ANGAJATI` creăm o coloană `Copii_In_Intretinere` cu valoarea `"Ion, Maria, Andrei"`?

A. Regula atomicității datelor (1NF - Prima Formă Normală).
B. Restricția de integritate referențială.
C. Unicitatea Cheii Primare.

10. Câte Chei Externe (FK) va conține în mod obișnuit un tabel de legătură conceput pentru a descompune o relație Mulți-la-Mulți (M:M) între 2 entități?

A. Nicio Cheie Externă.
B. Cel puțin 2 Chei Externe.
C. Exact 4 Chei Externe.
Scor Evaluare Finală: 0 / 10 puncte
Răspunde la toate cele 10 întrebări ale testului grilă!