Bonjour,
J’aimerai avoir votre avis pour savoir si je dois créer 2 ou 3 tables dans ma bd pour la relation suivante :
Un client peut prendre 0 ou n rendez-vous
Un rendez-vous peut être associé à 0 ou 1 client
L’application permet :
. de créer, modifier, supprimer des clients.
. de créer, modifier, supprimer des rendez-vous sans les associer à un client
Il est ensuite possible d’associer un rendez-vous à un client s’il ne l’est pas déjà ou de couper le lien entre le rendez-vous et le client pour rendre le rendez-vous disponible.
Dans un premier temps j’ai créé une table client (client_id, nom, prénom, …) et une table rendez-vous (rdv_id, libellé du rendez vous, date du rendez-vous, heure de rendez-vous, …). La table rendez-vous possède une clef étrangère contenant l’id du client pour les rendez-vous associés à un client ou null pour les rendez-vous qui ne sont pas encore associés à un client.
Cette première solution fonctionne parfaitement mais mon directeur de mémoire m’indique que cette solution ne respecte pas l’intégrité référentiel.
Il me demande de remplacer la clef étrangère par une table client_rdv (client_id, rdv_id). Avec cette deuxième solution il suffit d’ajouter un enregistrement dans client_rdv lorsqu’on associe un client à un rendez-vous ou de supprimer un enregistrement dans cette table lorsque l’on libère un rendez-vous.
La remarque de mon directeur de mémoire est elle justifiée ? Est-il grave d’avoir un clef étrangère qui pointe sur rien ? La deuxième solution fonctionne, mais elle permet d’associer plusieurs clients à un rendez-vous. Or, je ne veux pas associer plusieurs clients à un rendez-vous, mais au maximum un seul.
Personnellement je suis plutôt favorable à la première solution, mais si je veux défendre cette solution il me faut m’appuyer sur des arguments précis.
Théoriquement, quelle est selon vous la meilleure solution ?
En pratique, quelle solution retient-on en général ?
Merci de m’éclairer car je ne sais pas trop ou trouver la réponse.
Partager