Simple vs. Composite
When creating a new relationship, you have the choice between a Simple or Composite relationship. The New Relationship Class dialog in ArcCatalog provides a description of each:
-
Simple relationships are relationships that exist between two or more objects in the database that can exist independent of each other. In this kind of relationship, when the objects in the origin table/feature class are deleted, the related objects in the destination table/feature class are not deleted by default.
-
Composite relationships are relationships where the lifetime of the objects in the destination table/feature class are controlled by the lifetime of their related object in the origin table/feature class. When the object in the origin table/feature class is deleted, the related objects in the destination table/feature class are also deleted.
Imagine a fiber optic cable with 12 buffer tubes, each with 12 fibers. This equates to a 144–count fiber optic cable. When you delete the cable, you would expect the application to delete all the tubes and fibers simultaneously. Similarly, if you delete a patch panel card, you would expect the application to delete the frontside and backside ports on that card too. With this in mind, you might be compelled to choose Composite for all relationships. But not so fast, as there is an important limitation to know:
When you think of the nature of the composite delete, it makes sense. Again, in a composite relationship, when you delete the parent the children are also deleted. So, if the same object is the child in many relationships, we can’t have this automatic delete coming in from multiple angles.
Let’s consider a device this time. A device can be a child of a rack, and a child of a device location, and a child of a shelf, and a child of a patch panel...and many more parent objects too depending on the data model. Since a device has many different kinds of parents, only one of those relationships can be set to composite, and all the rest must be set to simple.
With that in mind, you might be wondering, “Well, how do I get the devices to delete automatically when I delete their parent in a simple relationship?” Next, consider the ArcFM Fiber Object Deleted autoupdater.