Exclusive Arcs¶
An exclusive arc visually represents the constraint that only one of multiple relationships can be active at a time. This is an important modeling pattern for ensuring data integrity.
Concept¶
When an entity must be connected to exactly one of several other entities, use an exclusive arc.
In this example, Payment is connected to only one of Credit Card or Bank Transfer. Both relationships cannot exist simultaneously.
Practical Use Cases¶
Exclusive arcs are used in various business scenarios:
Payment entity connects to only one of Credit Card or Bank Transfer
- Payment ↔ Credit Card (card number, expiration)
- Payment ↔ Bank Transfer (bank code, account number)
Contact entity belongs to only one of Individual or Corporate
- Contact ↔ Individual Customer (SSN)
- Contact ↔ Corporate Customer (business registration number)
Address entity connects to only one of Customer, Vendor, or Employee
- Address ↔ Customer
- Address ↔ Vendor
- Address ↔ Employee
Creating Exclusive Arcs¶
- Activate the Arc Mode (Exclusive Arc) icon in the top toolbar
- On the canvas, sweep your mouse across the two relationship lines that should be mutually exclusive
- Upon successful sweep, an arc symbol appears between the two relationship lines
Sweep Direction
The sweep must cross both relationship lines to succeed. If only one is crossed, it won't be recognized. Position the entities so the relationship lines are close together for easier creation.
Visual Representation¶
In Barker's Notation, exclusive arcs are shown as an arc (curve) symbol between the relationship lines. This arc signifies "only one of the related relationships is possible."
Data Integrity¶
FK columns for entities with exclusive arcs must have exactly one value:
| PaymentID | CreditCardID | BankTransferID | Status |
|---|---|---|---|
| P001 | C001 | NULL | ✅ Valid — only credit card connected |
| P002 | NULL | B001 | ✅ Valid — only bank transfer connected |
| P003 | C002 | B002 | ❌ Violation — both present |
| P004 | NULL | NULL | ❌ Violation — neither present |
DDL-Level Constraint
Exclusive arcs are an ERD-level modeling expression. To enforce this constraint in an actual database, add a CHECK constraint:
Deletion¶
To remove an exclusive arc:
- Right-click the arc itself → Delete
- Or right-click one of the related relationship lines → Remove Exclusive Arc
Exclusive Arcs vs Subtypes¶
If you're unsure which to use:
| Question | Choose |
|---|---|
| "What type is this entity?" | → Subtypes |
| "Where does this entity connect?" | → Exclusive Arc |
- Subtypes: One entity has multiple types (Employee → Permanent/Contract)
- Exclusive Arcs: One entity connects to only one of multiple targets (Payment → Card/Transfer)