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

Modélisation Discussion :

Conception BDD Mysql


Sujet :

Modélisation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Conception BDD Mysql
    Bonjour,

    J'ai développé un outil en php/mysql. Et je compte faire une 2ème version mieux développé.
    Du coup, je me dis que ce serait quand même dommage de repartir sans faire un point sur la BDD.

    Elle est assez simple, par contre, j'avais posté un bout sur un forum et une personne avait relevé un souci.
    Le reste étant vraiment très simple, je vous donne seulement le bout qui semblerait poser problème.

    Dans mon projet, une facture possède plusieurs projets mais un projet n'a qu'une seule facture. Cela donne :

    FACTURES (id_facture, date_facture, total_net, langue, délai, type_paiement)
    PROJETS (id_projet, date_debut, date_fin, nb_mots, prix_mot, id_facture, id_client)

    Dans Projets, on remarque que j'ai aussi un lien vers la table CLIENTS.

    J'avais eu un problème pour faire un calcul et "on" avait relevé un problème de conception. Normalement, il faudrait une table intermédiaire entre Factures et Projets genre LIGNES_FACT (id_ligne, id_facture, id_projet)

    Je voulais donc avoir votre avis.

    En vous remerciant,
    Orygynz
    Dernière modification par Invité ; 17/06/2014 à 08h43.

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    bonjour,


    vous parlez de projet, de facture mais jamais des clients ni des lignes.

    Commencez par exposer clairement vos besoin fonctionnel et on pourra, alors, comprendre ce que vous voulez modéliser.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Alors c'est un outil de gestion projets (1 projet = 1 client mais 1 client peut avoir plusieurs projets) qui permet ensuite d'éditer des factures (1 facture = plusieurs projets mais 1 projet n'a qu'une seule facture).

    Il y a une table client (id_client, nom, adresse, etc...) qui est lié à la table projets. Il n'y a pour l'instant pas de lignes, je voulais savoir si justement il fallait une table intermédiaire dans la conception.

    En fait, j'avais posté un problème de requête pour avoir le total de la facturation par client. J'étais obligé de passer du coup par la table projets, et ça donnait ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    SUM(F.total_net) AS sum_facture
    FROM
        (
          SELECT DISTINCT P.id_client, F.id_facture
            FROM
                PROJETS P
                    INNER JOIN FACTURES F
                        ON F.id_facture = P.id_facture
        INNER JOIN CLIENTS C
                ON P.id_client = C.id_client
                WHERE F.num_facture LIKE ?           
                        AND date_format(F.date_facture, "%m") LIKE ?
                        AND date_format(F.date_facture, "%Y") LIKE ?
                        AND C.nom_client LIKE ?
             
        ) AS FM
            INNER JOIN CLIENTS C
                ON FM.id_client = C.id_client
            INNER JOIN FACTURES F
                ON FM.id_facture = F.id_facture
    Du coup, la personne qui m'avait aidé, avait soulevé un problème de conception, il disait qu'il fallait une table intermédiaire (que j'ai appelé lignes sur le 1er post mais qui n'existe pour l'instant pas).

    Merci !

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    si vous linkiez l'ancien poste ca serai plus claire.

    Poser une requete sans rien dire de plus ca va pas aider à faire avancer la tembouille.

    C'est pour ça que je vous disais d'exposer clairement votre fonctionnel.

    si vous voulez revoir la modélisation il faut re-partir du début.

    Il y a un forum modélisation sinon : http://www.developpez.net/forums/f62...sation/schema/

  5. #5
    Invité
    Invité(e)
    Par défaut
    Du coup, il faudrait qu'un modérateur transfère ce sujet en modélisation peut-être ?

    En fait, mon outil est fonctionnel depuis 1 an et demi maintenant... Le post n'était pas sur ce forum.

    Après, je ne pense pas que la base a un problème de modélisation, je l'ai modélisé comme on m'a appris durant mes études. Mais vu que je refais une version plus fonctionnel en php/mysql et maintenant javascript. Je souhaitais me poser la question sur la modélisation. Je ne prétends pas tout connaître et une personne m'a alerté.

    Après j'ai l'impression d'être clair. Mon fonctionnel est très simple, il y a seulement cette partie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    FACTURES (id_facture, date_facture, total_net, langue, délai, type_paiement)
    PROJETS (id_projet, date_debut, date_fin, nb_mots, prix_mot, id_facture, id_client)
    CLIENTS (id_client, nom, adresse)
    Avec les phrases pour la conception :
    1 facture a plusieurs projets mais 1 seul client
    1 projet a 1 seul facture et 1 seul client

    La question est juste de savoir si le lien entre ces 3 tables devrait être corrigé avec un table intermédiaire. Pour ne pas avoir une requête imbriqué avec un DISTINCT pour obtenir le total par client pour une période donnée. En gros, est-ce que la requête que j'ai posté prouve que j'ai un problème de modélisation.

    Merci.

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    Votre modélisation n'est pas en accord avec les regles que vous cité.


    Concernant les tables d'associations ce lien vous aidera à comprendre le passage MCD => MPD : http://blog.developpez.com/cinephil/...le_associative



    Pour reprendre votre problème :

    1 facture a plusieurs projets mais 1 seul client
    Client-0,n-------Paie------1,1-Facture-0,n--------Concerne-------1,1-Projet


    1 projet a 1 seul facture et 1 seul client
    Client-0,n----------Associé------1,1-Projet--------Concerne------0,n-Facture

    Lors du passage au MPD la table facture aura une clef étrangère qui pointera sur la table client (non mentionnée dans votre poste).
    Sauf si vous décidez, en toute connaissance, d'omettre la relation "Payer".


    On peut voir ici qu'il y a un cycle entre vos 3 entités. Et du coup sans CIF on peut avoir une disconcordance entre les facture et le couple projet/client.
    => un client peut être associé à une facture qui concerne un projet qu'il n'a pas developpé


    A partir du moment où vous faites une facture globale, qui regroupe n projet, sans donner la possibilité au client de payer par projet ou en plusieurs fois, une notion de ligne de facture ne me semble pas nécessaire.

    Vous perdez en détail par contre vu qu'une facture peut concerner un projet qui a été effectué il y a 10ans comme il y a 2 semaines.

    edit: ah, vu que le poste a été déplacé dans le bon forum, d'autre personne auront surement un avis sur la question

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Conception BDD en MySQL
    Par Milke dans le forum Débuter
    Réponses: 1
    Dernier message: 10/06/2009, 15h24
  2. Réponses: 4
    Dernier message: 18/09/2007, 22h02
  3. Gestion de bdd MySql
    Par carlito dans le forum Débuter
    Réponses: 2
    Dernier message: 30/03/2004, 14h54
  4. Changements de colonnes dans une BDD MySQL
    Par arnaud_verlaine dans le forum Requêtes
    Réponses: 8
    Dernier message: 07/08/2003, 11h33
  5. connection a une BDD MySql
    Par delire8 dans le forum MFC
    Réponses: 7
    Dernier message: 19/06/2002, 18h18

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