Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Nunca excluir entradas? Boa ideia? De costume?


Em um de nossos bancos de dados, distinguimos entre transactional e dictionary registros.

Em poucas palavras, transactional registros são coisas que você não pode reverter na vida real, como uma chamada de um cliente. Você pode alterar o nome do chamador, status, etc., mas não pode descartar a chamada em si.

Dictionary registros são coisas que você pode alterar, como atribuir uma city a um cliente.

Transactional registros e coisas que levam a eles nunca foram excluídos, enquanto dictionary aqueles podem ser excluídos tudo bem.

Por "coisas que levam a eles" quero dizer que assim que o registro aparece nas regras de negócios que pode levar a um transactional registro, este registro também se torna transactional .

Tipo, uma city pode ser deletado do banco de dados. Mas quando apareceu uma regra que dizia "enviar um SMS para todos os clientes em Moscou ", as cidades se tornaram transactional registros também, ou não seríamos capazes de responder à pergunta "por que este SMS seja enviado".

Uma regra geral para distinguir era esta:é apenas o negócio da minha empresa?

Se um dos meus funcionários tomou uma decisão com base em dados do banco de dados (como, ele fez um relatório com base em que alguma decisão de gerenciamento foi tomada e, em seguida, o relatório de dados foi baseado em desaparecido), foi considerado OK excluir esses dados.

Mas se a decisão afetou algumas ações imediatas com os clientes (como ligar, mexer no saldo do cliente etc.), tudo o que levou a essas decisões foi guardado para sempre.

Pode variar de um modelo de negócios para outro:às vezes, pode ser necessário registrar até mesmo dados internos, às vezes não há problema em excluir dados que afetam o mundo exterior.

Mas para o nosso modelo de negócios, a regra acima funcionou bem.