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

SQL Procédural MySQL Discussion :

[pb]Modéliser en Merise


Sujet :

SQL Procédural MySQL

  1. #1
    Membre régulier Avatar de Jimmy_S
    Inscrit en
    Octobre 2005
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 214
    Points : 85
    Points
    85
    Par défaut [pb]Modéliser en Merise
    Bonjour,

    Je pense être face à un cas de schéma qui ne trouve pas sa place dans les SGBD Relationnels , mais plutot dans les fichiers XML. Bref, j'ai besoin de faire un truc sur MySQL , et je ne vois pas comment modéliser ça.

    Je vous explique :

    J'ai cré une appli en Delphi , qui permet de référencer des documents, c'est à dire générer une référence unique en fonction de plusieurs critères , et de stocker ces infos sur une table dans MySQL.

    Après une réunion de travail , il s'est avéré qu'on devait mettre en place un système de "relecteur".

    Je m'explique :

    Lorsqu'une personne cré une référence , il devra indiquer une liste de relecteurs , c'est à dire une liste de users qui devront valider ou non l'ajout de son document.

    Je dois donc d'un côté stocker une liste d'utilisateur , et lier chaque utilisateur aux documents qu'il doit relire.

    Ma solution

    Créer une BDD nommé USER.
    Créer une table par USER , avec deux champs "Id" (Id du document qu'il doit relire) , et "Status" (Accepté , Non relu , Refusé).

    Ensuite je pourrai lancer un trigger dans la BDD pour changer le statut du document de la table DOCUMENT en fonction des "Status" de la table USER.
    Exemple : Si tout le monde a mis "Accepté" dans la table USER , le champ "Status" de la table DOCUMENT s'update et devient "ACCEPTE".



    J'ai un peu de mal à conceptualiser le truc , donc si vous avez une autre idée pour faire fonctionner ça , je vous écoute.

  2. #2
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Bonjour,

    L'implémentation d'un workflow de relecture relève plus de la logique applicative que d'un travail au niveau SGBD.
    Pourquoi ne pas vérifier dans le code, à chaque fois qu'un relecteur valide un document, si tous les relecteurs ont validé et donc si l'état du document doit passer à "Validé" ? Ca éviterait la création d'un trigger complexe et qui grèverait les performances (vérification à chaque fois qu'on fait un UPDATE alors que la modification se fait dans des cas beaucoup plus rares).

    Un trigger est un outil adapté pour implémenter des contraintes d'intégrité fortes liées au modèle de données et qui doivent se vérifier à chaque insertion, modification ou suppression, mais pas nécessairement pour des règles de gestion aussi précises et dépendantes du contexte applicatif.
    Pensez au bouton

  3. #3
    Membre régulier Avatar de Jimmy_S
    Inscrit en
    Octobre 2005
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 214
    Points : 85
    Points
    85
    Par défaut
    Oui , mais où stocker la variable ? (sachant que je suis sur PHP) , je dois bien faire à un moment ou à un autre une entrée BDD pour grouper toutes les demandes.

    Et comment ressortir à un user , la liste des documents qu'il a à relire ?

    J'ai du mal à saisir ton explication, comment gérer ça au niveau technique ?

  4. #4
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Je suis passé un peu vite sur ta modélisation, il vaudrait mieux un truc du genre :

    user (id_user, ...)
    validation (id_user, id_document, status)
    document (id_document, status, ...)

    Citation Envoyé par Jimmy_S
    Oui , mais où stocker la variable ? (sachant que je suis sur PHP) , je dois bien faire à un moment ou à un autre une entrée BDD pour grouper toutes les demandes.
    La variable qui indique si un document est validé ? Tu peux très bien avoir une colonne "status" dans la table document. C'est une redondance calculée (on peut avoir la même donnée en passant en revue tous les relecteurs et en regardant s'ils ont tous validé) mais effectivement il vaut mieux la stocker dans la table pour éviter trop de calculs.

    Citation Envoyé par Jimmy_S
    J'ai du mal à saisir ton explication, comment gérer ça au niveau technique ?
    En gros je voulais juste dire qu'un trigger n'est peut-être pas la meilleure solution (surtout en l'état des fonctionnalités des triggers sous MySQL), tu peux préférer une gestion entièrement au niveau de ton application. Du genre : à chaque fois qu'un relecteur vient de valider un document, tu regardes si toutes les validations de ce document sont a l'état "validé", et si c'est le cas, tu passes le document lui-même à l'état "validé".
    Pensez au bouton

  5. #5
    Membre régulier Avatar de Jimmy_S
    Inscrit en
    Octobre 2005
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 214
    Points : 85
    Points
    85
    Par défaut
    Ok parfait .

    Je voulais à tout prix éviter la redondance , mais je pense qu'au final , c'est le plus simple à mettre en place.

    Merci pour ta réponse , je vais suivre ce raisonnement .

    Encore une chose, tous les avis n'ont pas été récolté , normalement le document doit passer en "validé" au bout de 15 jours.

    Comment gérer ça ?

  6. #6
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Avec un job planifié (script PHP, batch...) qui va vérifier régulièrement ce délai de 15 jours.

    Ou alors par une action utilisateur qui va déclencher cette vérification à un moment particulier.
    Pensez au bouton

  7. #7
    Membre régulier Avatar de Jimmy_S
    Inscrit en
    Octobre 2005
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 214
    Points : 85
    Points
    85
    Par défaut
    Parfait , merci beacoup

    J'vais plus pouvoir glander maintenant :p

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

Discussions similaires

  1. Modéliser avec Merise 'Orientation'
    Par Phatiza dans le forum Autres Logiciels
    Réponses: 0
    Dernier message: 21/07/2013, 15h58
  2. Nouvel outil de modélisation pour Merise
    Par rabDev dans le forum Merise
    Réponses: 10
    Dernier message: 20/12/2011, 12h12
  3. Réponses: 1
    Dernier message: 18/10/2011, 13h02
  4. Petit souci de modélisation ( mcd merise)
    Par Anthoto dans le forum Schéma
    Réponses: 0
    Dernier message: 04/01/2011, 10h01
  5. Réponses: 1
    Dernier message: 30/11/2007, 09h08

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