Tidak menghapus akan membuat kelas bug baru untuk semua kueri di masa mendatang. Jangan lupa bahwa penulisan kueri sering dilakukan oleh pengguna yang kuat (yaitu profesional non-IT), dan pengembang junior. Jadi sekarang setiap tabel yang memiliki data tidak valid yang hanya ditandai dengan flag aktif BIT akan membutuhkan tambahan AND dalam klausa WHERE untuk setiap kueri dari sekarang hingga selamanya. Ini akan membantu pengguna jatuh ke dalam lubang kegagalan alih-alih lubang kesuksesan. Namun, saya sangat menganjurkan Anda untuk menerapkan sistem tanda ini karena tanpa desain yang buruk, pengembang pemeliharaan tidak perlu memperbaiki banyak bug yang akan dibuatnya.
Seberapa berharganya memiliki data historis dalam tabel? Jika bisnis jika melihat ke depan, memiliki data lama dalam tabel hanya dapat menjadi beban-- menyebabkan masalah saat membuat kendala (semua kendala harus dimodifikasi untuk mengecualikan data yang Anda inginkan tidak ada). Jaminan kualitas data menjadi rumit karena harus terus-menerus mengidentifikasi ulang apa yang "omong kosong lama yang takut kami hapus tetapi tidak pernah ingin digunakan atau diperbarui lagi" dan hal-hal baru yang kami pedulikan.
Apakah itu dihapus karena itu kesalahan? Jika baris tersebut sesuai dengan entitas dalam kehidupan nyata, mungkin menarik untuk menyimpan dan memasang bendera "menguap", "mati", "meninggalkan gedung". Jika Anda secara tidak sengaja menyisipkan baris yang tidak sesuai dengan entitas apa pun dalam kehidupan nyata, DELETE bukanlah hal yang buruk. Apakah pelanggan imajiner yang tidak pernah ada penting untuk disimpan di tabel pelanggan?
Dan akhirnya, kepribadian memainkan peran besar. Orang juga bisa menjadi paketrat dengan data. Jika DBA menyimpan semua surat kabarnya dari 30 tahun yang lalu dan tidak suka menghapus data, mungkin dia harus memastikan bahwa dia membuat keputusan desain data berdasarkan keunggulan dan bukan preferensi pribadi yang tidak relevan.