|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Inscription : octobre 2005 Messages : 214 ![]() |
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. |
|
|
00
|
|
|
#2 |
|
Provisoirement toléré
Inscription : juin 2003 Messages : 2 622 ![]() |
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
|
|
|
00
|
|
|
#3 |
|
Membre du Club
![]() Inscription : octobre 2005 Messages : 214 ![]() |
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 ? |
|
|
00
|
|
|
#4 | ||
|
Provisoirement toléré
Inscription : juin 2003 Messages : 2 622 ![]() |
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:
Citation:
__________________
Pensez au bouton
|
||
|
|
00
|
|
|
#5 |
|
Membre du Club
![]() Inscription : octobre 2005 Messages : 214 ![]() |
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 ? |
|
|
00
|
|
|
#6 |
|
Provisoirement toléré
Inscription : juin 2003 Messages : 2 622 ![]() |
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
|
|
|
00
|
|
|
#7 |
|
Membre du Club
![]() Inscription : octobre 2005 Messages : 214 ![]() |
Parfait , merci beacoup
J'vais plus pouvoir glander maintenant :p |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com