Implementing soft deletes properly - is_deleted flag vs deleted_at vs separate archive table?