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 :

Plusieurs schémas identiques ?


Sujet :

Schéma

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2005
    Messages : 136
    Points : 72
    Points
    72
    Par défaut Plusieurs schémas identiques ?
    Salut à tous,

    Je ne suis pas un expert en DB mais depuis quelque temps de travaille beaucoup avec (MySQL en l'occurrence).

    Au début c'était simple, j'ai travaillé sur une DB contenant des données relatives à un seul projet. A présent la DB doit se décliner en plusieurs projet, chacun ayant plusieurs versions.

    Deux solutions me viennent à l'esprit:
    -> ajouter un champ Project_ID/version_ID à chaque table
    -> avoir plusieurs DB dont les schémas seraient identiques et dont le nom contient le nom du projet et le numero de version

    La seconde solution me paraît originale et je voulais savoir si elle est utilisée dans la pratique pour de grandes DB. Pensez vous que c'est une solution viable, en particulier s'il fallait utiliser des trigger pour effectuer des modifications qui impliquent des changements dans plusieurs DB ?

    Merci d'avance pour vos avis

  2. #2
    Membre chevronné Avatar de chaplin
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 215
    Points : 1 819
    Points
    1 819
    Par défaut
    Est ce que les données sont centralisées sur un serveur ?

  3. #3
    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 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Ta notion de 'projet' recouvre quoi ?
    1) Une entreprise réalise des projets et gère des données relatives à ces projets. La base de données doit modéliser la gestion des données relatives aux projets.
    Exemple : une entreprise de bâtiment qui réalise des projets de construction.

    2) Ce sont des projets informatiques totalement indépendants les uns des autres qui ont chacun leurs données indépendantes à gérer par des bases de données indépendantes.
    Exemple : un projet de gestion de location de véhicules et un projet de vente de vin par internet.
    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 !

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2005
    Messages : 136
    Points : 72
    Points
    72
    Par défaut
    Est ce que les données sont centralisées sur un serveur
    Oui c'est un seul serveur qui contient toutles les données

    Ta notion de 'projet' recouvre quoi ?
    1) Une entreprise réalise des projets et gère des données relatives à ces projets. La base de données doit modéliser la gestion des données relatives aux projets.
    Exemple : une entreprise de bâtiment qui réalise des projets de construction.

    2) Ce sont des projets informatiques totalement indépendants les uns des autres qui ont chacun leurs données indépendantes à gérer par des bases de données indépendantes.
    Exemple : un projet de gestion de location de véhicules et un projet de vente de vin par internet.
    C'est le 1) donc plusieurs projets très similaires et parfois inter connectés, qui ont des influences les uns sur les autres.

  5. #5
    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 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Donc 1 seule base de données.

    Tu prendras bien un peu de Merise ?

    Règle de gestion :
    "Un projet peut exister en plusieurs versions et une version n'appartient qu'à un seul projet"

    MCD :
    Projet -1,n----Exister----1,1- Version

    Tables :
    Projets(Pr_Id, ...)
    VersionsProjets(VP_Id, VP_IdProjet, ...)

    Après il faudrait nous en dire plus sur ton modèle pour t'aider à le modifier.
    Tu peux déjà voir qu'il faut associer à la table Projets ce qui concerne les projets et à la table Versions ce qui dépend des versions de projets.

    Par exemple...
    Règle de gestion :
    "Un projet est géré par un et une seule personne en tant que chef de projet et un chef de projet peut gérer plusieurs projets."

    MCD :
    Personne -0,n----Gérer----1,1- Projet

    Tables :
    Personnes(P_Id
    , ...)
    Projets(Pr_Id, Pr_IdChefProjet, ...)


    Etc...
    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 !

  6. #6
    Membre chevronné Avatar de chaplin
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 215
    Points : 1 819
    Points
    1 819
    Par défaut
    Donc j'opterais pour cette option:

    -> ajouter un champ Project_ID/version_ID à chaque table
    Peut être que des tuples de certaines entités seront communs aux projets, donc pour celles ci, il ne sera pas necessaire de le faire si j'ai bien compris le cheminement de pensée de CinéPhil .

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2005
    Messages : 136
    Points : 72
    Points
    72
    Par défaut
    Citation Envoyé par chaplin Voir le message
    Peut être que certaines les tuples de certaines entités seront communs aux projets, donc pour celles ci, il ne sera pas necessaire de le faire si j'ai bien compris le cheminement de pensée de CinéPhil .
    Moi aussi j'ai un peu de mal à comprendre CinéPhil, mais que veux tu, les voies des génies (photo d'Einstein) sont impénétrables

    Je tombe le masque ! Contrairement à ce que j'ai dit plus haut, l'option du Project_ID me semble aussi la plus évidente... J'ai un collègue qui a déja de l'expérience en DB qui pense la même chose que moi. Si je posais cette question sur le forum, c'était juste pour vérifier un truc: mon chef de projet est bien le seul à choisir (m'imposer) l'option de plusieurs schémas similaires sur le serveur

    Enfin, je ne désespère pas (encore) de trouver quelqu'un qui adopte la seconde option sans hésiter

  8. #8
    Membre chevronné
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Août 2007
    Messages
    797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Août 2007
    Messages : 797
    Points : 2 060
    Points
    2 060
    Par défaut
    Bonjour,
    Citation Envoyé par L. Sierra Voir le message
    [...] plusieurs projets très similaires et parfois inter connectés, qui ont des influences les uns sur les autres.
    A mon sens, cette phrase est très importante et influence la décision en faveur d'une base de données unique.

    En effet, si on choisit l'option 1 bdd par projet, immédiatement viennent des questions du genre :
    • Comment garantir la cohérence des données entre les différentes bdd ?
    • Puisque les projets sont influencés les uns par les autres, y a-t-il des données communes ? Si oui, où les stocker ? Dans chaque bdd (--> redondance) ? Dans une autre bdd à part ?
    • Quelles conséquences peuvent avoir la gestion de plusieurs bdd sur les performances de l'application si les données sont fortement interconnectées (problème de va-et-vient entre les bdd) ?
    • La création d'un nouveau projet implique donc la création d'une nouvelle bdd. Est-ce bien raisonnable ?
    • etc.

    Je te suggères de poser ces questions à ton CP, tu verras bien ce qu'il répond.


    JPhi33
    N'oubliez pas de consulter les Cours Merise et la F.A.Q. Merise
    _______________________________________________________

    Les Règles du Club Developpez.com
    Vous avez votre réponse ? Merci de cliquer sur

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2005
    Messages : 136
    Points : 72
    Points
    72
    Par défaut
    Citation Envoyé par JPhi33 Voir le message
    Je te suggères de poser ces questions à ton CP, tu verras bien ce qu'il répond.
    CP = chef programmeur ?

    J'ai évidemment soulevé le problème des inter-connexions, car certains éléments devront être communs à plusieurs BDD. Sa réponse a été très simple: il y a encore des points à analyser mais nous commençons ainsi et nous verrons plus tard pour le reste. Un de mes collègues à pouffé de rire mais ayant déja eu des problèmes avec la susceptibilité du personnage j'ai juste tiré la tête.

    De façon générale, l'attitude de mon leader technique dans ce genre de situation est assez systématique et prévisible: repousser les décisions les plus délicates autant que possible. Lorsqu'il devient impossible de postposer la décision (parfois sous la pression du manager qui lui n'est pas développeur), il prend une décision de bourrin et l'impose au reste de l'équipe.

    Dans ce cas ci, les problèmes les plus importants seront (je pense)
    - la gestion de "fake foreign key" entre les différentes DB
    - la nécessité pour le software de se connecter simultanément et alternativement à plusieurs DB
    - le nombre de projets qui devront être créés. J'évalue plusieurs dizaines de projets qui pourront chacun, selon les décisions des utilisateurs, se décliner en dizaines de versions. Donc au total entre 50 et 1000 DB séparées sur un serveur dans la version de production (finale) du software !

    Enfin des fois je ferais sans doute mieux de suivre les instructions de la hiérarchie sans me poser de questions... Le boulot ne peut apparamment pas être toujours super sympa.

  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 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par L. Sierra Voir le message
    J'évalue plusieurs dizaines de projets qui pourront chacun, selon les décisions des utilisateurs, se décliner en dizaines de versions. Donc au total entre 50 et 1000 DB séparées sur un serveur dans la version de production (finale) du software !
    C'est du suicide !
    A moins qu'il ne cherche des (faux) arguments pour faire changer son serveur ?

    Enfin des fois je ferais sans doute mieux de suivre les instructions de la hiérarchie sans me poser de questions... Le boulot ne peut apparamment pas être toujours super sympa.
    Si tu lui apportes des arguments solides et que tu les proclames suffisamment fort pour que d'autres les entendent également, il ne pourra pas s'aventurer dans une telle ineptie.
    Au besoin, invite le sur Développez.com et notamment sur le blog de SQLPro pour lui apprendre ce que c'est qu'un SGBDR. Notamment cette partie là.
    On sera plusieurs à pourvoir lui expliquer que ce qu'il envisage de faire est une connerie qui pourrait lui coûter son job.

    Au fait, profites-en pour monter un schéma qui tient la route, éventuellement sur ton temps libre à la maison de manière à pouvoir te défendre au cas où... La période de crise actuelle n'est pas en faveur des petits jeunes qui contredisent les vieux de la vieille sans arguments.
    Il faut que ton projet soit en béton.
    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 !

  11. #11
    Membre chevronné
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Août 2007
    Messages
    797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Août 2007
    Messages : 797
    Points : 2 060
    Points
    2 060
    Par défaut
    Citation Envoyé par L. Sierra Voir le message
    CP = chef programmeur ?
    Citation Envoyé par L. Sierra Voir le message
    Si je posais cette question sur le forum, c'était juste pour vérifier un truc: mon chef de projet est bien le seul à choisir [...]
    CP = chef de projet


    JPhi33
    N'oubliez pas de consulter les Cours Merise et la F.A.Q. Merise
    _______________________________________________________

    Les Règles du Club Developpez.com
    Vous avez votre réponse ? Merci de cliquer sur

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2005
    Messages : 136
    Points : 72
    Points
    72
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    C'est du suicide !
    A moins qu'il ne cherche des (faux) arguments pour faire changer son serveur ?
    Apparamment je ne suis pas le seul à trouver ce choix surprenant.

    Citation Envoyé par CinePhil Voir le message
    La période de crise actuelle n'est pas en faveur des petits jeunes qui contredisent les vieux de la vieille sans arguments
    C'est exactement le problème. Je ne pense pas que ce soit une bonne idée de rentrer dans le tas en gueulant au scandale. Crise ou pas, la hiérarchie existe et il est de mise de respecter les décisions lorsqu'elles sont clairement arrêtées. De plus il n'y a personne dans la hiérarchie qui puisse vraiment juger de la faisabilité, car au dessus du leader de projet il n'y a que des managers qui ne sont pas experts en SGDB voire même en développement. Si mon leader technique risque sa place (est-ce vraiment le cas ?), moi je risque aussi de me décrédibiliser.

    Donc si tu (ou n'importe quel forumeur) as des arguments précis à me fournir (genre au dessus de 100 DB sur un seul serveur le temps de réponse devient de l'ordre de plusieurs secondes) je pourrai peut être les soumettre au manager et lui proposer une discussion sur un ou deux points précis.

    Sans argument précis et valable, je risque juste de fâcher encore un peu le leader technique (je crois que le rire et le silence qui ont suivi son annonce l'ont déja incommodé) et me faire rabrouer par les managers. A long terme si le projet part en vrille je ne suis pas officiellement responsable. En fait si je ne regarde que mon intérêt personnel, je fais mieux de me taire

  13. #13
    Membre chevronné Avatar de chaplin
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 215
    Points : 1 819
    Points
    1 819
    Par défaut
    Pour un projet, quelle sera la table qui comportera le plus d'éléments et combien au maximum, à la louche.

    En fonction de ce résulat, on peut arriver à des tables qui peuvent faire plusieurs milions de lignes. La centralisation des données à son lot d'avantages et d'inconvénients, ça se discute comme dirait l'autre. S'il faut faire de la maintenance, tous les utilisateurs seront concernés en cas de problème. Ensuite, des SGBDR capable de tenir des gros volumes de données restreint le choix aux doigts d'une main. Pour résumer, travailler avec des gros volumes de données demande beaucoup de rigueur au détriment de la souplesse à la fois technique et humain.

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2005
    Messages : 136
    Points : 72
    Points
    72
    Par défaut
    Citation Envoyé par chaplin Voir le message
    Pour un projet, quelle sera la table qui comportera le plus d'éléments et combien au maximum, à la louche.
    Je dirais quelques centaines. Ce sont des tables qui contiennent des informations assez simples, souvent des foreign keys ou des string (varchar) assez courtes. Il se peut que plusieurs tables contiennent quelques centaines de lignes. Disons 10 tables contenant entre 50 et 500 lignes, le reste moins de 50 lignes.

    Citation Envoyé par chaplin Voir le message
    S'il faut faire de la maintenance, tous les utilisateurs seront concernés en cas de problème. [...] travailler avec des gros volumes de données demande beaucoup de rigueur au détriment de la souplesse à la fois technique et humain.
    Les utilisateurs sans doute, moi je suis développeur (occasionnellement analyste, testeur etc). Comme je ne programme pas directement la couche qui attaque la DB en SQL, j'aurai au moins un tampon si jamais la DB devient ingérable. A vrai dire j'ai surtout peur pour ceux qui vont utiliser le soft. Au début tout ira bien, puis une fois qu'ils auront plein de projets et plein de versions, là ils tomberont sur les défaillances éventuelles . Ce jour là si ça se trouve je bosserai sur un autre projet

  15. #15
    Membre chevronné Avatar de chaplin
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 215
    Points : 1 819
    Points
    1 819
    Par défaut
    Il y a un adage qui dit "vaut mieux prévenir que guérir". Il est sûr qu'une base de données centralisée serait idéale, mais dans la pratique, si le "responsable" de la BDD ou un DBA va mettre systématiquement son grain de sel sur les décisions, c'est un problème supplémentaire à gérer et parfois même un obstacle .

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

Discussions similaires

  1. mapping EJB3 sur base HSQL avec plusieurs schémas
    Par xv-mnt dans le forum Hibernate
    Réponses: 1
    Dernier message: 26/09/2006, 16h58
  2. [XSD] Utiliser plusieurs schémas pour un XML
    Par baygz dans le forum Valider
    Réponses: 1
    Dernier message: 31/07/2006, 16h03
  3. ouvrir plusieurs formulaires identiques
    Par Australia dans le forum Access
    Réponses: 5
    Dernier message: 21/04/2006, 11h56
  4. [FLASH MX] Gestion de Plusieurs Clips Identiques
    Par Darkdaemons dans le forum Flash
    Réponses: 2
    Dernier message: 18/01/2006, 19h06
  5. plusieurs champs identiques en ligne
    Par viviking dans le forum Langage SQL
    Réponses: 12
    Dernier message: 18/06/2004, 11h25

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