IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Schéma Discussion :

Modéliser une interface de POO en SQL ?


Sujet :

Schéma

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur réseaux / télécoms
    Inscrit en
    Avril 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur réseaux / télécoms

    Informations forums :
    Inscription : Avril 2018
    Messages : 12
    Par défaut Modéliser une interface de POO en SQL ?
    Bonjour à tous,

    Je développe en PHP sous le framework Symfony et son ORM attitré Doctrine, mais pour un projet je tombe sur un os pour penser en tables de bdd ce que j'ai conçu en classes. Je viens donc quérir quelques conseils auprès de vous. J'explique le contexte en quelques mots :

    Je fais une application de gestion d'évènements (Jeux Olympiques, séminaire de médecine, marathon, salon de l'auto, festival de musique, compétition de judo, soirée bière/pizza avec des amis, ...), et ces évènements ont lieu à une date et un emplacement; C'est sur le "où" que je travaille.

    Un évènement peut avoir lieu :
    _A une adresse postale précise (par exemple 5 rue de bidule à Triffouilli, France),
    _Dans une salle remarquable (par exemple le parc des expositions de Versailles, qui lui même a une adresse postale bien sûr),
    _Dans une zone moins précise (par exemple les jeux olympiques de Tokyo auront lieu dans tout Tokyo, tandis que la coupe du monde au Qatar aura lieu dans tout le pays),
    _Online (une url généralement),
    _A des coordonnées précises en latitude/longitude GPS (par exemple au milieu d'une forêt... Je vous déconseille d'aller à cet évènement !).

    Pour réaliser ceci, ma classe Event possède un attribut de type LocationInterface, et chacun des 5 cas de figure ci-dessus est modélisé par une classe implémentant cette interface.


    Mais coté SQL, comment modéliser une telle relation ? Doit on avoir une table event avec 5 Clés étrangères nullables, pour représenter potentiellement l'une de ces relations ?
    Ou bien feriez vous ceci à l'aide d'une table d'association, comme une relation Many to many ?
    Est-ce un cas de figure commun dont la solution est triviale ? Existe-t-il un pattern connu pour régler cela en base de données ?
    Peut être qu'une base non relationnelle (mongoDB etc) serait plus adaptée pour un tel interfaçage ?

    Qu'en pensez-vous ?

    Merci d'avance,
    Cordialement,
    Julien

  2. #2
    Membre averti
    Homme Profil pro
    Ingénieur réseaux / télécoms
    Inscrit en
    Avril 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur réseaux / télécoms

    Informations forums :
    Inscription : Avril 2018
    Messages : 12
    Par défaut
    Après réflexion, je crois qu'on peut simplifier ma question avec un exemple plus trivial :

    Un évènement peut être créé soit par un utilisateur, soit par une organisation (que les utilisateurs créent et rejoignent). On a donc une relation entre un évènement et un utilisateur OU entre un évènement et une organisation, mais pas les 2.

    Comment refléter une telle relation de "choix" lors de la conception de sa base de données ?
    1. Ajoute-t-on les champs "user_id" et "organisation_id" en tant que clées étrangères dans la table Event ?
    2. Crée-t-on une table d'association comme pour un many to many, même si un évènement ne peut avoir qu'un seul créateur ?
    3. Fait-on vivre la relation de l'autre coté, avec la FK chez user et organisation ?


    Que serait le plus juste ?

  3. #3
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 599
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Selon le cas, on peut opter pour l'héritage ou un méta-modèle

    cf. ce sujet : https://merise.developpez.com/faq/?p...eVariablePptes

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieur réseaux / télécoms
    Inscrit en
    Avril 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur réseaux / télécoms

    Informations forums :
    Inscription : Avril 2018
    Messages : 12
    Par défaut
    Bonjour et merci beaucoup pour votre réponse,

    Le lien que vous avez fourni est très intéressant; Le style d'écriture est très formel ce qui me prend du temps à lire et peut être que je passe à coté de choses importantes, mais il me semble que le chapitre "Comment indiquer qu'une entité participe conditionnellement à plusieurs relations ?" met un nom sur mon problème, en détaillant même avec :

    l'exclusivité, notée X: la participation aux relations impliquées est mutuellement exclusive
    la totalité, notée T: la participation à au moins une des relations impliquées est obligatoire
    la partition, notée XT; combinaison des 2 précédente
    Qui me fait penser que mes cas de figure sont des XT.

    On retrouve mention de ce problème dans "Comment exprimer que des caractéristiques ne puissent être pertinentes que pour certaines occurrences d'une entité ?", où il semble que mon problème se nomme "liste variable de propriétés" (je peux me tromper dans le détail mais en tout cas ça y ressemble).

    Il semble que la méta-modélisation soit ce dont j'ai besoin; Il me semble pertinent que les informations concernant l'entité qui créée mon évènement n'empiète pas sur mon évènement.

    Comment traduire une telle relation en MLD ? Je ne crois pas que l'article (ou les pages suivantes) ne réponde à cela, quelqu'un saurait il m'aiguiller ?

    Merci d'avance,

  5. #5
    Membre Expert
    Avatar de Paprick
    Homme Profil pro
    Professeur des Universités
    Inscrit en
    Juin 2019
    Messages
    762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Professeur des Universités
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2019
    Messages : 762
    Par défaut
    Bonjour,
    Citation Envoyé par Nayte Voir le message
    Comment traduire une telle relation en MLD ? Je ne crois pas que l'article (ou les pages suivantes) ne réponde à cela, quelqu'un saurait il m'aiguiller ?
    Au début, ne vous préoccupez pas de la traduction en MLD : si vous concevez correctement votre MCD, le MLD correspondant, ainsi que les requêtes SQL de création des tables de la BD, seront générés automatiquement par votre outil de modélisation conceptuelle.
    Donc, première étage : réalisez un beau MCD reflétant parfaitement la structure de votre système d'information, et tout le reste se déduira alors très simplement.

  6. #6
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 599
    Billets dans le blog
    10
    Par défaut
    Je ne peux qu'approuver les propos de Paprick : commencez par le MCD

    Si vous avez besoin d'aide pour construire votre MCD, vous pouvez poser vos questions ici :
    https://www.developpez.net/forums/f6...sation/schema/

Discussions similaires

  1. Réponses: 0
    Dernier message: 22/08/2019, 17h24
  2. [POO] réaliser une 'interface' avec PHP4
    Par TabrisLeFol dans le forum Langage
    Réponses: 3
    Dernier message: 27/12/2008, 21h00
  3. [POO] Implémenter partiellement une interface
    Par A&Z dans le forum Langage
    Réponses: 8
    Dernier message: 14/10/2008, 21h25
  4. [POO] POO PHP5 porté d'une interface
    Par berceker united dans le forum Langage
    Réponses: 7
    Dernier message: 20/06/2006, 19h36
  5. [DC] Modéliser une classe interface + une autre classe
    Par sangei dans le forum Diagrammes de Classes
    Réponses: 11
    Dernier message: 21/12/2005, 22h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo