Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Soll ich eine Zeile in einer relationalen Datenbank löschen oder deaktivieren?

Wenn Sie nicht löschen, wird eine neue Klasse von Fehlern für alle zukünftigen Abfragen erstellt. Vergessen Sie nicht, dass das Schreiben von Abfragen oft von Power-Usern (d. h. Nicht-IT-Experten) und Junior-Entwicklern durchgeführt wird. Daher benötigt jetzt jede Tabelle, die ungültige Daten enthält, die nur durch ein BIT-Aktiv-Flag gekennzeichnet sind, ein zusätzliches AND in der WHERE-Klausel für jede Abfrage von jetzt an bis in alle Ewigkeit. Dies wird den Benutzern helfen, in die Grube des Scheiterns statt in die Grube des Erfolgs zu fallen. Ich ermutige Sie jedoch dringend, diese Flag-Systeme trotzdem zu implementieren, da es ohne schlechtes Design keine Notwendigkeit für Wartungsentwickler gibt, die zahlreichen Fehler zu beheben, die dadurch entstehen.

Wie wertvoll ist es, historische Daten in der Tabelle zu haben? Wenn das Unternehmen zukunftsorientiert ist, kann es nur eine Belastung sein, alte Daten in den Tabellen zu haben – es verursacht Probleme beim Erstellen von Einschränkungen (alle Einschränkungen müssen geändert werden, um Daten auszuschließen, von denen Sie möchten, dass sie nicht vorhanden sind). Die Datenqualitätssicherung wird dadurch erschwert, dass ständig neu identifiziert werden muss, was „alter Mist ist, den wir nicht löschen möchten, aber nie wieder verwenden oder aktualisieren möchten“ und was uns wichtig ist.

Wird es gelöscht, weil es ein Fehler war? Wenn die Zeile einer Entität im wirklichen Leben entspricht, ist es vielleicht interessant, ein Flag "verdampft", "tot", "das Gebäude verlassen" zu behalten und zu setzen. Wenn Sie versehentlich eine Zeile eingefügt haben, die keiner Entität im wirklichen Leben entspricht, ist ein DELETE keine schlechte Sache. Ist es wichtig, imaginäre Kunden, die nie existiert haben, in der Kundentabelle zu behalten?

Und schließlich spielt die Persönlichkeit eine große Rolle. Auch Menschen können Packratten mit Daten sein. Wenn ein DBA alle seine Zeitungen vor 30 Jahren aufbewahrt und es nicht mag, Daten zu löschen, sollte er vielleicht sicherstellen, dass er Datendesign-Entscheidungen auf der Grundlage der Vorzüge und nicht einer irrelevanten persönlichen Vorliebe trifft.