OK, here we go - first sweep through on a basic install with just the photo album, ecommerce module and payment gateways installed.
I am assuming that the key values user_id, person_id, object_id and party_id are the same numeric key and therefore relatable between tables.
I created a user whose user_id was 4740, then deleted him as a member of the acs then after deleting him I searched for all references to this key in the acs. Results as follows :
Appears as party_id in:
- parties
- party_approved_member_map
- party_element_map
- party_member_map
- party_names
Appears as person_id in:
Appears as user_id in:
- users
- user_portraits
- user_preferences
- cc_users
Appears as object_id in:
- acs_objects
- acs_object_context
- acs_object_context_index
- acs_object_grantee_priv_map
- acs_object_party_privilege_map
- acs_object_paths
- acs_permissions
- acs_permissions_all
- acs_rels
- all_object_party_privilege_map
I think that this list takes care of most of it except where an object (user) is the parent of content in the content repository. I think that someone really familiar with the content repository data model would be needed to create the required queries to remove content. Presumably requires a self join to work down the hierarchy. Maybe each package owner could create a query to drop all content by object_id which someone else could then collate into a global drop script.
Richard