Un elev studiază la o școală, un client plasează comenzi, un autor scrie cărți. Aceste legături sunt relațiile. Ca să le desenezi corect, trebuie să răspunzi la două întrebări: câte (cardinalitate) și e obligatoriu? (opționalitate).
O relație e o legătură cu sens între două entități, exprimată de obicei printr-un verb: ELEV studiază la ȘCOALĂ, CLIENT plasează COMANDĂ.
Cardinalitatea spune CÂTE instanțe dintr-o parte se pot lega de o instanță din cealaltă. Apasă și vezi exemplul, notația și cum se implementează.
Pe lângă „câte", întrebi „TREBUIE?". O participare e obligatorie dacă fiecare instanță trebuie să aibă legătura, opțională dacă poate exista și fără.
Fiecare COMANDĂ trebuie să aparțină unui CLIENT — o comandă fără client n-are sens.
Un CLIENT poate exista fără să fi plasat vreo COMANDĂ (tocmai s-a înregistrat).
Un ELEV se înscrie la mai multe CURSURI, iar un curs are mai mulți elevi. O bază de date relațională nu poate lega direct M:M — o „spargem" în două relații 1:M printr-o entitate nouă, de legătură.
✗ direct — imposibil
✓ rezolvat — cu entitatea de legătură ÎNSCRIERE
Câteva tipare care apar des în programă.
O entitate se leagă de ea însăși: un ANGAJAT are ca șef un alt ANGAJAT. Cheia externă pointează spre aceeași tabelă.
Caz de relație recursivă „părinte-copil": o CATEGORIE are subcategorii. Formează un arbore (IX–XI).
O instanță se leagă cu UNA din mai multe entități, dar nu cu ambele: o PLATĂ e făcută prin card SAU prin transfer, nu ambele.
Când vrei să păstrezi valorile în timp (prețul unui produs de-a lungul lunilor), adaugi o entitate cu data — nu suprascrii.
Șase întrebări despre relații, cardinalitate și opționalitate.
Relațiile, condensat.