レコードの削除のセオリー

MySQLのdeleteは、削除を実行した後インデックスを再構成するので、コストが高い処理といわれています。
そのため、deleteを行うより、削除フラグを作って、それをupdateすることが推奨されています。
その後、物理的にデータを消す必要があるときは、システムがあまり使われない時間帯にまとめてフラグが立ったレコードを削除します。
誤ってデータを消したときの復旧や、履歴がわかるなどのメリットもあります。
一方で、毎回フラグの条件をWHEREに書く必要があるためSQLが複雑になる、UNIQUEキーが使いにくくなる、といったようなデメリットもあります。
特に前者は開発時にミスをしてしまいそうですね。
保存するデータの量やDBのデータが多少消えても問題ないようなものの場合は、普通にdeleteをしたほうがよさそうです。
逆に、パフォーマンスが必要な場合やあとから情報の追跡をする場合は削除フラグを使ったほうがよさそうです。