Watch for the removal of the cascade! the user accidentally clicks on the application icon the trash can icon and deletes the client, and then all cascades delete all traces of this client, orders, invoices, payments, history, etc. from your database. After the user calls you to tell you about their small error, you will have to restore the backup and try to return the information back to the database.
I would look at "soft deletes" where you change the client status only from "active" to "inactive". rows are not deleted, retaining all foreign key data. This allows reports to run data because it still exists, and is also easy to undo.
Soft deletion is not all that is needed, it is a business decision on how to handle it, clear data or mark it inactive. This is only what you can solve, because I do not know your application or business logic. I just thought I was offering this as an alternative.
source share