Object LifeCycles: Value Objects, Composed Objects and Associated Objects
Value objects don't have an independent lifecycle. They are composed within the same record as their parent, so if you delete an Order, the BillingAddress composed within the BillAdd1, BillAdd2 and BillCity fields of the Order table will obviously be deleted by that operation - no cascading delete required.
I use the term "composed objects" to mean objects which have an independent identity (a separate record in a separate table with its own ID field) but whose lifecycle is controlled by the object in which they are composed. So if an Order has-many OrderItems, the OrderItems would be deleted using a cascading delete if the user deleted the Order as without an Order the OrderItems would be orphaned and of no value.
I use the term "associated objects" to mean object that have an independent lifecycle to the objects they are associated to. In a security system, deleting a User would not usually call for the deletion of the Roles they were associated to (although it would require clean up of any joining records in a UsertoRole table).
Thoughts?


If there's any chance of an ambiguous situation, I'll just build a delete query manually, using joins to specify how it should cascade. Obviously not ideal, but an unintended result when using cascading delete can be rather severe.