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 :

Probleme de conception sur quelques tables


Sujet :

Schéma

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 11
    Points : 4
    Points
    4
    Par défaut Probleme de conception sur quelques tables
    Bonjour à tous les zéros,

    je vous expose mon problème, j'ai une base de donnée à réaliser et je coince sur une ou deux tables.

    J'ai une table rendez-vous dans laquelle je contient plusieurs champs(clé primaire: id_rdv, clé étrangére: id_entreprise).
    J'ai une table mission dans laquelle je contient plusieurs champs(clé primaire: id_mission, clé étrangére: id_entreprise, id_rdv,id_suivi_client).
    J'ai une table suivi client dans laquelle je contient plusieurs champs(clé primaire: id_suivi_client, clé étrangére: id_entreprise)


    Un rendez -vous peut m'ammener à créer de 0 à 4 missions.
    Un suivi client peut m'ammener à créer de 0 à 4 missions.
    Un rendez vous et un suivi client est attribué à une entreprise.

    Quelqu'un aurait une pist s'il vous plait car je seche sur ce problème. Sachant que je ne veut pas mettre de clé étrangére null car ca ammenerait à démontrer que la BDD à été mal analysé.

    Lorsque je veut ajouter un suivi_client je ne peut pas mettre la clé étrangére id_rdv à null et vice et versa.

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Bonjour,


    Pouvez-vous présenter votre MCD actuel ?

    De plus, qui prend le rdv / suivi client et avec qui ?

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Le rdv et le suivi client sont saisie par l'utilisateur et il correspondent a une entreprise créer prélablement par le meme utilisateur ou bien existante.

    entreprise (id_entreprise,nom_entreprise,...champs supplémentaire qualifiant l'entreprise)

    rdv(id_rdv,id_entreprise, date_rdv,visite_effectuer_par,.. champs supplementaire qualifiant le rdv)

    suivi client(id_suivi_client,id_entreprise,date_contact .. champs supplémentaire qualifiant le suivi client)

    mission(id_mission,id_entreprise,id_rdv,..champs supplémentaire qualifiant la mission)


    Le suivi client est un rdv pris plusieurs mois afin de savoir si l'entreprise se comporte bien et si celle-ci désire d'autres missions.

    Le rdv est le premier contact avec l'entreprise qui va ammener a créer la ficher entreprise.

    Dans les deux cas 0 à 4 missions peuvent être ajouter à la table mission.

    Il faut que je puissent retracer via ces tables , quels missions a était créer grâce à quel rdv et de même pour le suivi_client.

    Je propose une deuxième solution :

    Créer des tables intermédiaire.

    entreprise (id_entreprise,nom_entreprise,...champs supplémentaire qualifiant l'entreprise)

    rdv(id_rdv,id_entreprise, date_rdv,visite_effectuer_par,.. champs supplementaire qualifiant le rdv)

    suivi client(id_suivi_client,id_entreprise,date_contact .. champs supplémentaire qualifiant le suivi client)

    mission(id_mission,id_entreprise,..champs supplémentaire qualifiant la mission)

    rdv_mission(id_mission,id_rdv)

    suivi_client_mission(id_suivi_client,id_mission)

    Ces deux tables ne contiendrait donc que des clé primaires étrangéres.
    Est-ce possible?

  4. #4
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Si je met :


    rdv(id_rdv,id_entreprise,id_mission...)
    suivi_client(id_suivi_client,,id_entreprise,id_mission...)
    mission(id_mission,_id_entreprise..)

    Cette solution va m'ammené à des créations d'enregistements pour le rendez-vous, je m'explique.

    Je vais avoir des enregistrements avec un id différents des champs avec des même données et un id_mission différents.

    Ou j'ai pensé a autre chose. Sachant que le rdv et le suivi client ont 3 champs qui différent le reste est pareil.
    Je peut peut-etre fusionner ces deux tables? Mais comment reconnaitre un rdv d'un suivi client?

    Je ne pense pas que ce soit une solutions optimisé.

  5. #5
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Le problème c'est que vous ne pensez que MPD, mais là il faudrait déjà développer la phase de conception de votre projet.

    Et ceci passe par un MCD.

    Personnellement je ne comprend pas votre fonctionnel vu vos explications éparpillés.

    Donc dans l'ordre :
    - déterminer toutes les entités (chose apparemment faites)
    - exprimer de manière claire chaque relation entre chaque entité (vous aviez commencez à le faire dans votre 1er poste)



    Reprenons une des règles énoncée :
    Une mission est affecté à une seule entreprise
    Une entreprise peut être affectée par 0 ou plusieurs missions


    ce qui se transforme en :
    Mission-0,1--------Affecte-------0,n-Entreprise


    Il faut développer cette approche à toutes vos règles de gestion.

    Ensuite on pourra avancer !

  6. #6
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Très bien.

    Une mission est affecté à une seule entreprise
    Une entreprise peut être affectée par 0 ou plusieurs missions

    ce qui se transforme en :
    Mission-0,1--------Affecte-------0,n-Entreprise

    Un rdv est affecté à une seule entreprise
    Une entreprise peut être affectée par 0 ou plusieurs rdv

    ce qui se transforme en :
    Rdv-0,1--------Affecte-------0,n-Entreprise


    Un suivi client est affecté à une seule entreprise
    Une entreprise peut être affectée par 0 ou plusieurs suivi client

    ce qui se transforme en :
    Suivi client-0,1--------Affecte-------0,n-Entreprise


    Une mission est affecté à un seul rdv
    Un rdv peut contenir 0 ou plusieurs mission

    ce qui se transforme en :
    Rdv-0,1--------Affecte-------0,n-Mission

    Une mission est affecté à un seul suivi client
    Un suivi client peut contenir 0 ou plusieurs mission

    ce qui se transforme en :
    Suivi client-0,1--------Affecte-------0,n-Mission

    Ce qui donne au final


    Mission-0,1--------Affecte-------0,n-Entreprise
    Rdv-0,1--------Affecte-------0,n-Entreprise
    Suivi client-0,1--------Affecte-------0,n-Entreprise
    Rdv-0,1--------Contient-------0,4-Mission
    Suivi client-0,1--------Contient-------0,4-Mission

    Ou bien puis-je simplifier le probleme en faisant cela:
    Mission-0,1--------Affecte-------0,n-Entreprise
    Rdv-0,1--------Contient-------0,4-Mission
    Suivi client-0,1--------Contient-------0,4-Mission

    Puisque la mission affecte une entreprie et que le rdv et le suivi client sont liés alors le rdv et le suivi client affecte automatiquement une seul entreprise?

    Voila le resultat au niveau graphique:
    http://www.developpez.net/forums/att...1&d=1334329358
    Je pense qu'il y a déja un probleme a ce niveau la car le mcd est un peu caffouillit.
    Suis-je sur la bonne voie?
    Images attachées Images attachées  

  7. #7
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Oui,

    Passons au coeur du problème, si je comprend bien, qui est de pouvoir gérer la relation entre les missions et les rdv/suivi_client.

    Personnellement je pensais un peu comme votre seconde idée, regrouper certaines informations.

    Votre entité rendez-vous je la voie plus comme une démarche commerciale.

    Du coup... un rendez-vous est soit un suivi soit une démarche et va être affecté à une entreprise.

    Je le verrai bien comme une début d'héritage.

    => Le cas des missions :

    Une mission ne peut être affectée qu'après un rdv (démarche ou suivit)

    Donc, en reprenant tout ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
              Rendez_vous
                      |
                      |
    Demarche----------------Suivit
    Table mere : RDV
    Tables filles : Demarche / Suivit



    Parti Démarche commercial :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Demarche-0,1-------Concerne--------0,n-entreprise
    Parti suivit client :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Suivit-0,1-------Concerne--------0,n-entreprise

    Partie mission :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Rendez_vous-0,4-----Engendre----1,1-Mission-1,1------Effectue-----0,4-Entreprise

    Une autre personne du forum pourra vous présenter une solution différente.

  8. #8
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Je n'avait pas du tout pensé a l'heritage pour ce problème.
    Le fait est que je ne l'ai jamais mis en application avec phpmyadmin, je vais donc me renseigné sur le sujet.

    Voila la version final que j'ai implémenter:
    Images attachées Images attachées  

  9. #9
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Hmm en y réfléchissant un peu plus je ne suis pas sur que l'heritage soit le mieux.

    On pourrai le remplacer par un "type", ce qui donnerai le même résultat.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Rendez_vous-1,1------Appartient-------0,n-Type_rdv

    Donc pour conclure, si vos deux entités demarche / suivit ont les même attribut
    => prenez la solution avec le "type"

    Sinon solution avec heritage.

  10. #10
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 032
    Points
    34 032
    Billets dans le blog
    14
    Par défaut
    J'arrive un peu tard mais, vite fait, petite erreur Punkoff :
    Citation Envoyé par Punkoff
    Reprenons une des règles énoncée :
    Une mission est affecté à une seule entreprise
    Une entreprise peut être affectée par 0 ou plusieurs missions


    ce qui se transforme en :
    Mission-0,1--------Affecte-------0,n-Entreprise
    Non, le MCD correspondant à la règle de gestion est celui-ci :
    Mission -1,1----Affecter----0,n- Entreprise

    Maintenant, il semble qu'il y ait une transitivité entre rendez-vous et mission :
    Citation Envoyé par sasuke51100
    Une mission est affecté à une seule entreprise
    Une entreprise peut être affectée par 0 ou plusieurs missions

    Un rdv est affecté à une seule entreprise
    Une entreprise peut être affectée par 0 ou plusieurs rdv

    Une mission est affecté à un seul rdv
    Un rdv peut contenir 0 ou plusieurs mission
    Du coup, on aurait directement ce MCD, si j'interprète correctement ces règles :
    mission -1,1----affecter----0,n- rdv -1,1----affecter----0,n- entreprise

    => La règle de gestion entre mission et entreprise passe au rasoir d'Okham et l'association disparaît du MCD.

    À voir aussi pour le suivi client, pas le temps d'analyser davantage.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

Discussions similaires

  1. [MySQL] Probleme de recherche sur ma table
    Par SnowStyle dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 12/10/2006, 13h56
  2. Probleme de requete sur plusieurs tables
    Par Hitmaaan dans le forum Requêtes
    Réponses: 3
    Dernier message: 20/08/2006, 22h20
  3. probleme de requetes sur des tables volumineuses
    Par abdoracle dans le forum Oracle
    Réponses: 6
    Dernier message: 14/06/2006, 15h41
  4. Réponses: 8
    Dernier message: 17/05/2006, 14h32
  5. Probleme heritage : References sur la table parente
    Par Belgar dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 03/05/2005, 22h11

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