Skip to content

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.

         ┌─── Credit Card
Payment ──┤ (XOR)
         └─── Bank Transfer

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

  1. Activate the Arc Mode (Exclusive Arc) icon in the top toolbar
  2. On the canvas, sweep your mouse across the two relationship lines that should be mutually exclusive
  3. 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:

ALTER TABLE PAYMENT ADD CONSTRAINT CHK_PAYMENT_XOR
CHECK (
  (CREDIT_CARD_ID IS NOT NULL AND BANK_TRANSFER_ID IS NULL)
  OR
  (CREDIT_CARD_ID IS NULL AND BANK_TRANSFER_ID IS NOT NULL)
);

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)