CRM data is hierarchical, but RDBMSes are not. In a hierarchical system, deleting is as easy as deleting a single node. In an RDBMS, especially one with CRM data, this can be extremely difficult because there is a dense hierarchy of polymorphic relationships standing between you and the records you want to delete (or access!).
We need flat models!! This means that if there is a hierarchy of records, for example an Account has many Users, which each have many tasks, which in turn can have custom field values, then every single custom value record should have a task_id, a user_id, and an account_id ON THE RECORD. Even if custom field values are used on non-task tables, then the custom field values should simply have id's associated with those tables as well. For example if Projects can have custom field values,