Se un User (Usuario) può avere Appointment (Citas) con uno specifico Doctor (Medico) o con uno specifico Establishment (Establecimiento), allora hai bisogno avere una relazione opzionale da 1 a molti tra Appointment e Establishment AND e facoltativo da 1 a molti relazione tra Appointment e Doctor .
La nave relazione opzionale è rappresentata sul diagramma sostituendo il piede di porco con un | con O su il lato di Establishment e Doctor .
Per la tabella Appointment , significa avere un campo che è una chiave esterna per entrambi. E questi campi devono essere nulli. Questo ti darà la massima flessibilità: puoi aggiungere l'appuntamento senza nulla, puoi impostare il medico o lo stabilimento o entrambi.
Per l'occasione, vorrei attirare la tua attenzione su altri due punti (non correlati alla tua domanda):
- Il tuo diagramma dice che un
Doctor ha solo un User (ecco perché viene generata una usario_id nella tabella Doctor ). Penso che sia sbagliato (a meno che il tuo sistema non gestisca una clinica per milionari che possono assumere il proprio medico privato a tempo pieno): devi cambiare questa relazione con una relazione molte a molte.
- Mi chiedo se questa relazione diretta sia necessaria, dal momento che il
Appointment sarà di fatto una relazione indiretta tra molti medici e pazienti.