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 :

Question modélisation : Table avec index ou champs ?


Sujet :

Modélisation

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 56
    Points : 23
    Points
    23
    Par défaut Question modélisation : Table avec index ou champs ?
    Bonjour,
    J'essaie de créer une base de gestion de projets.
    je me pose la question quant à savoir dans mon cas, s'il est préférable de créer une autre table ou d'ajouter des champs dans la table générale de projets.
    J'explique :
    Chaque projet doit posséder une répartition par service concerné sur les couts à venir.
    un projet peut être supporté soit par 1 service qui paiera l'intégralité du projet (100% du forfait), ou au maximum 5 services concernés (exemple 5 services=> 20% chacun),
    ou 3 services => service1 : 50% service2 :25%, service3 :25%

    est-il préférable de créer au maxmum 5 champs d'imputation dans la table des projets ? ou de créer une autre table avec comme relation l'ID du projet ?

    Sachant que par la suite, je dois contrôler que la saisie n’excède pas 5 services, n’excède pas 100%, pour ensuite en fonction du cout, imputer sur chaque service concerné...

    Merci de votre expérience et aide sur ce point.

  2. #2
    Membre émérite Avatar de curt
    Homme Profil pro
    Ingénieur Etudes
    Inscrit en
    Mars 2006
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Etudes
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 564
    Points : 2 523
    Points
    2 523
    Par défaut
    Bonjour Audeo,

    je serai partisan de créer une nouvelle table, ce qui ne fera ajouter qu'un nouveau champ dans la table existante (clé étrangère)
    Et puis, on ne sait pas de quoi sera fait demain, mais imagine qu'un nouveau service se créé et là... il faut remettre les mains dans la base.
    Pour "verrouiller" la création d'un service, tu peux mettre un popup qui demandera un mot de passe... ça évitera les bourdes des utilisateurs

    Le fait d'avoir à contrôler le nombre de services (maxi 5) et que le tout n'excède pas 100 peut facilement de résoudre dans les 2 cas.

    Curt
    Pas de demande par MP, sinon j'correctionne plus, j'dynamite, j'disperse, j'ventile !!!
    ---------------------------------------------------------------------
    Vous avez un talent insoupçonné... Faites-en profitez les autres. Un p'tit CLIC pour une grande cause.
    Et si vous faisiez un bon geste en 2024 ? Soyez utile, ça vous changera ! Moi, ça m’a changé !

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 56
    Points : 23
    Points
    23
    Par défaut
    Merci Curt de ton interet.
    ok pour une nouvelle table liée par le code projet mais comment contrôler pour le même projet que la saisie du service ne soit pas en double ou n'excède pas 5 et que le tout, 1 ou plusieurs services renseignés ne soit pas différent de 100% ?
    là je sèche, je ne vois pas comment procéder
    Exemple des champs
    Table projet : ID projet (clé) / Nom projet / etc...
    Table Service : ID projet (clé) / Service / Pourcentage

  4. #4
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    736
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 736
    Points : 1 038
    Points
    1 038
    Par défaut
    tu peux automatiser le comptage du nombre de services et le pourcentage par une data macro dans la table projet
    cette data macro est declenchee a chaque creation/suppression/mise a jour de la table des relations entre projet et service (note: cette table est differente de la table des "Service", elle a les champs Service et Projet en clef unique "comment contrôler pour le même projet que la saisie du service ne soit pas en double")



    Nom : CaptureService.GIF
Affichages : 122
Taille : 34,8 Ko

    voir la maquette ci jointe, si tu rajoutes un service ou modifie un pourcentage, la table projet se met automatiquement a jour
    Projet_Service.zip

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 56
    Points : 23
    Points
    23
    Par défaut
    Merci pour ton aide Accessisgood.
    Super exemple que j'essaie de m'inspirer (voir PJ TEST2.zip)
    Cependant, 2 questions :
    1) je ne trouve pas dans ta Db, la/les macros dont tu parles pour le comptage
    2) Quel est l’intérêt de définir un ID en numérotation auto. Dans mon cas, le code projet est unique donc la clé. Y a t il un réel intérêt pour la numérotation auto ?
    Fichiers attachés Fichiers attachés

  6. #6
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    736
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 736
    Points : 1 038
    Points
    1 038
    Par défaut
    Bonjour Audeo

    1) les macro de donnees sont dans les tables projet et projet_service , a ouvrir en mode design, "create data macro", "edit data macro" (mon editeur est en anglais)
    2) si ta numerotation est unique alors tu n'as pas besoin de l'auto increment. Moi je l'utilise systematiquement pour des questions de portabilite

  7. #7
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 56
    Points : 23
    Points
    23
    Par défaut
    Merci accessisgood.
    J'avance à petit pas, j'essaie de comprendre et d'adapter ta Macro selon mes ID (TEST2.zip)...
    doit manquer qqchose dissimulé qqpart, car cela ne fonctionne pas ;-))
    te ferai un retour...

  8. #8
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 56
    Points : 23
    Points
    23
    Par défaut
    Bon ben , j'y arrive pas... Grrrr
    J'ai essayé d'adapter ta méthode selon selon mes ID (TEST3.zip) mais pas de comptage Percent dans ma table projet...
    Si à l'occaz, tu peux jeter un coup d'oeil et me dire car là je ne vois pas...
    En te remerciant...(encore)
    Fichiers attachés Fichiers attachés

  9. #9
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 56
    Points : 23
    Points
    23
    Par défaut
    bon... je viens de voir qu'il me manquait les macros insertion/maj/suppression
    Par contre, celle de "Apres suppression" ne fonctionne pas, je cherche à savoir à quoi fait référence "[Ancien]."

  10. #10
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 56
    Points : 23
    Points
    23
    Par défaut
    viens de trouver : un ) à la place de ]

    Mille mercis Accessisgood pour ton aide
    Au plaisir...

  11. #11
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 56
    Points : 23
    Points
    23
    Par défaut
    Hello Accessisgood
    J'ai besoin sur le même principe, d'ajouter une 2e table de distribution en plus de "service" à chaque projet, exemple "service2"
    j'ai recrée une 2e table, ajouter les mêmes macros que la 1ere en changeant les noms de variables. je m'embrouille...
    cela ne fonctionne pas le champ de comptage dans la table projet ne s'update pas.
    je me perds, m'embrouille... et ne comprend pas tout de tes macros.
    Pourrais-tu m'aider, stp ?
    je te remets ta maquette...
    D'avance merci
    Fichiers attachés Fichiers attachés

  12. #12
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    736
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 736
    Points : 1 038
    Points
    1 038
    Par défaut
    la base est la meme que precedemment, qu'est ce que tu veux faire exactement: une table service2 + une table de relation entre projet set service2 + 2 champs dans la table projet (compte le nombre de service2 + le pourcentage)?

    pour ce qui est de s'embrouiller, c'est normal au debut, car les macro de donnees sont vraiment qqch de nouveau, assez contraignant dans la syntaxe, avec des possibilites de debuggage reduites, mais c'est hyper efficace. Je rappelle le principe:

    la table projet comprend une macro de donnees qui compte, a partir de la table projet_Service, le nombre de service et la somme du champ pourcentage pour un projet donne: ce projet donne est un parametre de la macro de donnees
    Cette macro est "inerte", elle ne peut pas se declencher toute seule, elle n'est pas liee a un evenement de la table projet, mais a un evenement exterieur.

    C'est donc a partir de 3 evenements de la table Projet_Service: [Apres creation], [après suppression] et [après mise a jour] que le systeme detecte qu'il faut mettre a jour la table projet pour prendre en compte les nouvelles donnees. Lorsque la table projet recoit la demande, il active la macro "inerte" et les donnees de la table projet se mettent a jour automatiquement.

    ci joint un doc explicatif
    MacroDeDonnees.pdf

  13. #13
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 56
    Points : 23
    Points
    23
    Par défaut
    Merci pour tes explications... je vais travailler tout ça...(tu auras compris que je débute, desolé)
    questions sur tes macros de données :"Mysource" et "MyTarget" sont des variables système ou elles auraient aussi pu s'appeler "toto" titi" ?
    si je veux executer d'autres macros de données à la même table, il vaut mieux créer plusieurs macros ou imbriquer ou enchainer parametres et actions dans une seule ?

  14. #14
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    736
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 736
    Points : 1 038
    Points
    1 038
    Par défaut
    oui, MySource et MyTarget sont des variable de declaration temporaires et locales

    Le principe est en general de creer une macro de donnees "separee" pour chaque besoin (dans ton cas: compter les services et sommer les pourcentages, pour ensuite l'appeller a partir des macro de donnees evenementielles "Apres creation", "Apres suppression", "Apres mise a jour"

    Dans une macro evenementielle on peut rajouter des conditions avant de lancer la macro "separee"

Discussions similaires

  1. Copie de table avec modification des champs
    Par ordipaco dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/03/2007, 20h38
  2. Insertion,update dans une BD à table avec beaucoup de champs
    Par randriano dans le forum C++Builder
    Réponses: 29
    Dernier message: 13/03/2007, 20h11
  3. Réponses: 4
    Dernier message: 13/10/2005, 15h44
  4. Reconstruction d'une table avec index
    Par Ry_Yo dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 22/04/2005, 10h12
  5. Création de table avec index
    Par Seb7 dans le forum Requêtes
    Réponses: 2
    Dernier message: 10/04/2003, 17h11

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