Entity Relationship Modeling (ER modeling) is by far the most common way to express the analytical result of an early stage in the construction of a new database. In this ebook, Alf Pedersen describes the principles for ER modeling, as well as the most important terms used in modeling a new database.
Involuted, or recursive, relationships, are self-relationships; relationships from and to the same entity. This is a special construction normally used to represent a hierarchical tree structure. This kind of relationship alone has just as many possibilities as the ones discussed above have together. However; most of the combinations just theoretically usable: For all practical reasons they are impossible since they relate back to themselves; you cannot relate to something that do not exist yet. Constraints will be broken in the database. We will therefore concentrate on the three forms of involuted relationships that may be of any use to you:
One-to-one relationship, optional-optional
This may be a useful relationship. The relationship makes it possible for you, if you wish, to be married to one person (at the time). However, if you want historical data as to who you were married to earlier (as it happens too often today), you need more analysis.
If you substitute PERSON with PRODUCT, this relationship may also be used for suggesting an alternative product, if the original is sold out, or is no longer manufactured.
One-to-many, optional-optional
This is a classical hierarchy, or tree structure. Note however that any one person MAY work for ZERO OR ONE AND ONLY ONE manager, while a given person MAY be manager for zero or more persons.
Many-to-many, optional-optional
This is a network structure. In a project-organized environment, any one person MAY have ZERO or more managers, while any person MAY be manager for ZERO OR MORE persons. This construction is also good for decomposition of products: If you swap PERSON with PRODUCT, we may read it as: A product MAY contain zero or more (sub)products, while a given (sub)product MAY be a part of zero or more products.