Sari la conținut
Academia PythonAcademiaPython

4.2 Modelul entitate-relație: relații și cardinalitate

Concept nou și exemplu

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ă.