Question de modélisation - SQL/NoSQL - Programmation
Marsh Posté le 20-09-2011 à 17:01:46
Par experience je te conseillerais plutot de faire 3 tables de log <TableName>_Log avec 2 colonnes en plus que la table originale (UserID et LogDate).
Chaques fois qu'une operation est faite sur la table originale, tu ajoutes une ligne a ta table de log.
L'idée c'est de ne pas avoir de lien direct, comme ca si une ligne disparait tu sais la retrouver dans tes logs. Ca te donne aussi la possibilité de logger plusieurs modification en une fois.
Le defaut etant evidement la taille de la table _log, donc a voir si il ne faut pas modifier le nombre de colonne en fonction de l'activité et de ce qu'on veut logger.
Marsh Posté le 20-09-2011 à 17:46:22
Pour le pb de suppression d'un enregistrement, pas de pb, je trace dans des champs texte (pas mentionnés ici, car c'était pas le sujet) une partie de son contenu (référence, sujet...).
Cette table de log sert de console d'admin et aussi pour générer des contenus de flux RSS. Une simple requête dessus me permet en un coup de lister des opérations ayant eu lieu sur des tables différentes.
Cela dit, ma question ne porte pas sur la façon d'implémenter un système de log mais sur le nom qu'on donne usuellement à ce type de modélisation et sa représentation graphique en OMT ou UML. J'ai pris l'exemple d'une table de log, mais j'aurais pu prendre l'exemple de champs personnalisés qu'on rajoute à certaines tables pour étendre leurs fonctionnalités...
Marsh Posté le 27-09-2011 à 13:24:13
Bon, j'ai toujours pas eu ma réponse concernant le nom qu'on donnait à ma modélisation
Marsh Posté le 13-10-2011 à 11:40:50
un petit up...
Marsh Posté le 20-09-2011 à 15:42:20
Petite question de modélisation graphique (OMT ou UML) du système suivant :
- j'ai des tables, mettons "Document", "Ticket", "User"...
- je veux logger dans une table toutes les opérations de création/maj/suppr qui ont lieux sur les tables précédentes.
J'ai implémenté la table suivante pour les logs : LogEvent (table MySQL, en MyIsam)
LogID : integer
LogDate : datetime
ItemID : integer -> clé étrangère qui pointe sur la clé primaire d'une des tables précédentes
Type : varchar(30) -> donnée permettant de typer le log, indique, grosso-modo dans quelle table pointe ItemID
Action : varchar(30) -> le type d'action réalisée : create, update, delete...
Level : tinyint -> le niveau du log (détermine le niveau de détail du log)
UserID : integer -> clé étrangère sur l'ID de User, pour indiquer qui a fait l'action
Ma question, en gros, c'est comment s'appelle la relation qui existe entre ma table LogEvent et mes autres tables via les champs ItemID et Type? Et comment on la représente graphiquement?
Merci.
---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta