How relationships become tables

The translation depends on the type of relationship and its cardinalities. A relationship is either absorbed by one of its participating entities, which receives the relationship’s attributes and the other entity’s identifier as foreign keys, or it becomes a standalone relation.

RelationshipCardinalitiesTranslationChoice
Many-to-many(*,N) – (*,N)New relation with the same name. Its key is formed by the identifiers of the entities involved.Automatic
Ternary(*,N) on all threeAs many-to-many: new relation keyed on the three identifiers.Automatic
One-to-many, mandatory(1,1) – (*,N)Absorbed by the (1,1) entity.Automatic
One-to-many, optional(0,1) – (*,N)Absorbed by the (0,1) entity, with nullable references; or a new relation keyed on the (0,1) side.Two options
One-to-one, one optional(1,1) – (0,1)Absorbed by the (1,1) entity.Automatic
One-to-one, both mandatory(1,1) – (1,1)Absorbed by either entity.Two options
One-to-one, both optional(0,1) – (0,1)Absorbed by either entity, with nullable references; or a new relation keyed on either side.Four options

An asterisk stands for any minimum cardinality. Reference columns are named TABLE_column, followed by the role when one is set, so recursive relationships produce distinct names. Optional attributes become nullable columns.