But does the "one" side of the relationship also mean that student3 can meet teacher7 twice or more?
Questo semplicemente non si riflette nella configurazione attuale. Se rileggi la tua domanda, vedrai che ti stai contraddicendo:
- Ogni studente può incontrare insegnanti 0 o 1
- student3 può incontrare l'insegnante7 due o più ?
Le parti in grassetto si contraddicono a vicenda. Inherentemente, la risposta alla tua domanda è no .
Il problema qui è che stai chiedendo come uno stesso studente possa incontrare lo stesso insegnante più di una volta. Ciò suggerisce che stai cercando di tenere traccia di una cronologia delle riunioni, anziché di uno stato corrente.
Ad esempio, pensa a un'applicazione BlockBuster:
- Ogni video può avere un cliente (= noleggiato) o no cliente (= non in affitto)
- Ogni cliente può noleggiare molti video.
Pertanto, imposti lo schema come zero / un cliente su molti video.
Sembra corretto, finché non ti rendi conto che vuoi sapere quali clienti hanno noleggiato questo particolare video in passato. Pertanto, è necessario tracciare la cronologia degli affitti.
Logicamente, solo un cliente può attualmente noleggiare lo stesso video. Tuttavia, molti clienti possono storicamente aver noleggiato questo stesso video.
La necessità di tenere traccia delle modifiche cronologiche richiede l'estensione del modello dati. Nell'esempio di BlockBuster, ciò di cui hai bisogno è un'entità Rental
che risiede tra il cliente e il video.
Nel tuo caso, è molto simile. Dovrai definire un'entità Meeting
che definisca un incontro singolo tra un insegnante e uno studente.
- Un incontro ha un insegnante (non zero)
- Uno studente può partecipare a molti incontri.
- Una riunione ha uno studente (non zero)
- Un insegnante può avere molti incontri.
Nota: questo schema in realtà non ti impedisce di avere un singolo studente che partecipa alle riunioni tenute da diversi insegnanti. Tuttavia, è qualcosa che imponi attraverso la logica aziendale piuttosto che la logica della struttura dei dati.