Oracle
 sql >> Base de données >  >> RDS >> Oracle

Dois-je supprimer ou désactiver une ligne dans une base de données relationnelle ?

Ne pas supprimer créera une nouvelle classe de bogues pour toutes les requêtes futures. N'oubliez pas que l'écriture de requêtes est souvent effectuée par des utilisateurs expérimentés (c'est-à-dire des professionnels non informatiques) et des développeurs juniors. Ainsi, chaque table contenant des données non valides marquées uniquement par un indicateur actif BIT aura besoin d'un ET supplémentaire dans la clause WHERE pour chaque requête à partir de maintenant jusqu'à toujours. Cela aidera les utilisateurs à tomber dans le gouffre de l'échec au lieu du gouffre du succès. Cependant, je vous encourage fortement à implémenter ces systèmes d'indicateurs de toute façon car sans mauvaise conception, il n'est pas nécessaire que les développeurs de maintenance corrigent les nombreux bogues qu'ils créeront.

Quelle est l'utilité d'avoir des données historiques dans le tableau ? Si l'entreprise est tournée vers l'avenir, le fait d'avoir d'anciennes données dans les tables peut être un fardeau - cela cause des problèmes lors de la création de contraintes (toutes les contraintes devront être modifiées pour exclure les données que vous souhaiteriez ne pas voir là). L'assurance qualité des données est compliquée par la nécessité de ré-identifier en permanence ce qui est "de la vieille merde que nous avons peur de supprimer mais que nous ne voulons plus jamais utiliser ou mettre à jour" et les nouvelles choses qui nous intéressent.

Est-il supprimé parce que c'était une erreur ? Si la rangée correspond à une entité dans la vraie vie, peut-être est-il intéressant de conserver et de mettre un drapeau "vaporisé", "mort", "quitté le bâtiment". Si vous avez accidentellement inséré une ligne qui ne correspond à aucune entité dans la vraie vie, un DELETE n'est pas une mauvaise chose. Les clients imaginaires qui n'ont jamais existé sont-ils importants à conserver dans la table des clients ?

Et enfin, la personnalité joue un grand rôle. Les gens peuvent aussi être bourrés de données. Si un administrateur de bases de données conserve tous ses journaux depuis 30 ans et n'aime pas supprimer des données, il devrait peut-être s'assurer qu'il prend ses décisions en matière de conception de données en fonction des mérites et non d'une préférence personnelle non pertinente.