Avoid logical deletion so as not to get useless and irrelevant data in your database.
Use logical deletion only when necessary! It is a common and safe practice, as the application code takes care of the case correctly (the Laravel framework, for example, takes care of logical exclusions with extreme ease for the developer).
The question that remains is: when it would be necessary to use logical exclusion?
Through logical deletion, you can recover "deleted" data, i.e., you preserve history, and maintain integrity in the database.
An example: a product in a virtual store. To the extent that there are orders made containing this product, it will be convenient to make a logical exclusion of the product. Thus, it is possible to identify the items in past orders, even if the product can be "excluded". That is: with the logical deletion of the product, you preserve the data of these orders.
There are many other cases where logical exclusion is useful, important and valuable. But if it is not useful or necessary, it is best to do the physical deletion even, not to leave the database polluted.
Performing physical deletion in most cases is not recommended, because you will not be able to reactivate such registration. Which is one less feature in your application/system, and there is no reason to physically delete it.
– Paulo Roberto Rosa
@Gabe, curiosity: how did you find the original source?
– bfavaretto
@bfavaretto I was told. Nothing surpasses the power of the masses :D
– Gabe