Dans une de nos bases de données, nous avons distingué entre transactional
et dictionary
enregistrements.
En quelques mots, transactional
les enregistrements sont des choses que vous ne pouvez pas annuler dans la vraie vie, comme un appel d'un client. Vous pouvez modifier le nom, le statut, etc. de l'appelant, mais vous ne pouvez pas rejeter l'appel lui-même.
Dictionary
les enregistrements sont des éléments que vous pouvez modifier, comme l'attribution d'une city
à un client.
Transactional
les enregistrements et les éléments qui y mènent n'ont jamais été supprimés, alors que dictionary
ceux-ci pourraient être supprimés sans problème.
Par "choses qui y mènent", je veux dire que dès que l'enregistrement apparaît dans les règles métier, cela peut conduire à un transactional
record, cet enregistrement devient également transactional
.
Comme, une city
peuvent être supprimés de la base de données. Mais lorsqu'une règle est apparue disant "envoyer un SMS
à tous les clients de Moscou ", les villes sont devenues transactional
enregistre également, sinon nous ne serions pas en mesure de répondre à la question "pourquoi ce SMS
être envoyé".
Une règle empirique pour faire la distinction était la suivante :est-ce uniquement l'activité de mon entreprise ?
Si l'un de mes employés a pris une décision basée sur les données de la base de données (par exemple, il a fait un rapport sur la base duquel une décision de gestion a été prise, puis le rapport de données était basé sur la disparition), il a été considéré comme correct de supprimer ces données.
Mais si la décision a affecté certaines actions immédiates avec les clients (comme appeler, modifier le solde du client, etc.), tout ce qui a conduit à ces décisions a été conservé pour toujours.
Cela peut varier d'un modèle commercial à l'autre :parfois, il peut être nécessaire d'enregistrer même des données internes, parfois il est acceptable de supprimer des données qui affectent le monde extérieur.
Mais pour notre modèle d'entreprise, la règle d'en haut a bien fonctionné.