Relația leagă entități (ex. Student urmează Curs). Cardinalitatea spune câte instanțe sunt implicate:
- 1:1 — un student are un singur buletin.
- 1:N — un profesor predă mulți studenți.
- M:N — un student urmează multe cursuri, un curs are mulți studenți.
Relațiile M:N se rezolva printr-o tabelă asociativă (ex. Inscriere(student_id, curs_id)).
python.py
# Simulam relatia M:N Student-Curs printr-o tabela asociativa,
# reprezentata ca lista de perechi (student_id, curs_id)
inscrieri = [
(1, "IA"), # studentul 1 e inscris la cursul IA
(1, "BD"), # studentul 1 e inscris si la cursul BD
(2, "BD"), # studentul 2 e inscris la cursul BD
]
def cursuri_ale_studentului(inscrieri, student_id):
return [curs for (sid, curs) in inscrieri if sid == student_id]
print("Cursurile studentului 1:", cursuri_ale_studentului(inscrieri, 1))
Cardinalitatea M:N nu se poate pune direct ca cheie externă într-o singură tabelă — de aia folosim tabela asociativă.
