Loading learning content...
The concepts of specialization—supertypes, subtypes, inheritance, local attributes, discriminators, and constraints—need a visual language to communicate effectively with stakeholders. Just as architects use blueprints and musicians use sheet music, database designers use ER diagrams with specialized notation to express complex data structures.
Different notational systems exist, each with strengths and contexts where they're preferred. Mastery of notation enables you to read any EER diagram you encounter, write diagrams that others can understand, and translate between notational styles when working across different organizations or tools.
By the end of this page, you will master the major notational systems for representing specialization: Chen notation, IE (Crow's Foot) notation, and UML class diagram notation. You'll understand how to represent supertypes, subtypes, inheritance relationships, constraints (disjoint/overlapping, total/partial), discriminators, and complete hierarchies in each system.
Several notational systems are widely used for ER and EER diagrams. Each has its origins, strengths, and typical usage contexts.
Major Notational Systems:
| System | Origin | Key Characteristics | Common Usage |
|---|---|---|---|
| Chen Notation | Peter Chen (1976) | Diamonds for relationships, explicit lines for cardinality, circle/semicircle for specialization constraints | Academic settings, foundational teaching, formal specification |
| IE/Crow's Foot | Clive Finkelstein (1980s) | Crow's feet for cardinality, compact notation, arrows for inheritance | Industry practice, ER modeling tools, practical design |
| UML Class Diagrams | OMG (1990s) | Object-oriented inheritance notation, multiplicity notation, stereotypes | Software engineering, OO databases, modern tools |
| IDEF1X | US Dept of Defense (1985) | Formal, box-based notation with rounded corners for dependent entities | Government, defense, legacy enterprise systems |
| Barker Notation | Richard Barker (1980s) | Oracle's notation, boxes with rounded corners for subtypes | Oracle environments, CASE tools |
Which to Learn?
For comprehensive understanding, focus on:
This page covers all three in detail, with specific focus on how each represents specialization constructs.
Notation is about representation, not meaning. The same semantic concept (e.g., disjoint specialization) can be drawn differently in each system, but the meaning remains identical. Your goal is to map between notations fluently while keeping the underlying semantics clear.
Chen notation, developed by Peter Chen in his seminal 1976 paper, uses explicit geometric shapes for each construct. For specialization (added in EER extensions), the notation is precise and unambiguous.
Core Symbols:
Chen Notation Elements Explained:
The Circle (Specialization Symbol):
The Lines (Participation Constraint):
The Direction:
Complete Chen Notation Example:
EMPLOYEE
|
══════╪══════ (double line = total)
|
(d) (circle with 'd' = disjoint)
/ | \
/ | \
MANAGER ENGINEER SALESPERSON
This diagram says: Every employee is EXACTLY ONE of Manager, Engineer, or Salesperson (total and disjoint).
'd' for distinct — an entity is in distinctly ONE subtype. 'o' for overlap — an entity can overlap into multiple subtypes. Double line for total — EVERY entity must total out to at least one subtype. Single line for partial — some entities may be partial (not in any subtype).
Information Engineering (IE) notation, often called Crow's Foot due to its cardinality symbols, is widely used in industry and supported by most database design tools. It represents specialization more compactly than Chen notation.
Key IE Notation Symbols for Specialization:
| Element | Symbol | Meaning |
|---|---|---|
| Inheritance Line | Line with triangle/half-circle pointing to supertype | IS-A relationship (subtype inherits from supertype) |
| Disjoint | Circle with 'X' or 'D' | Subtypes are mutually exclusive |
| Overlapping | Circle without 'X' (or 'O') | Entity can belong to multiple subtypes |
| Total | Filled circle or indicator on supertype side | Every supertype entity must be in a subtype |
| Partial | Unfilled circle/no indicator | Supertype entity may not be in any subtype |
| Discriminator | Attribute name near inheritance symbol | Attribute determining subtype membership |
IE Notation Variations:
Different tools implement IE notation slightly differently:
Variant 1: Triangle Symbol (Common)
EMPLOYEE
▽
/|\
/ | \
MANAGER ENGINEER SALES
Variant 2: Half-Circle with Constraint (ERwin/PowerDesigner)
EMPLOYEE
⌒ (d)
/|\
/ | \
MANAGER ENGINEER SALES
Variant 3: Exclusive Arc (Some Tools)
EMPLOYEE ────○───┐
├─── MANAGER
├─── ENGINEER
└─── SALES
(The '○' or arc indicates exclusive subtypes)
Discriminator Notation in IE:
The discriminator attribute is often shown near the specialization symbol:
EMPLOYEE
▽ [job_type]
/|\
/ | \
MANAGER ENGINEER SALES
This indicates job_type is the discriminator that determines subtype membership.
IE notation varies across tools (ERwin, PowerDesigner, Lucidchart, draw.io). When using a specific tool, consult its documentation for exact symbols. When reading diagrams from unfamiliar sources, look for legends or ask the author about conventions used.
Unified Modeling Language (UML) is the standard modeling language for object-oriented systems. Its class diagram notation adapts naturally to EER specialization because object-oriented inheritance and database specialization share fundamental concepts.
UML Specialization Symbols:
12345678910111213141516171819202122232425262728293031323334353637
UML Class Diagram for Specialization═══════════════════════════════════════ ┌─────────────────────┐ │ EMPLOYEE │ ├─────────────────────┤ │ -emp_id: int │ │ -name: string │ │ -salary: decimal │ │ -hire_date: date │ ├─────────────────────┤ │ +getSalary(): decimal│ │ +getYearsEmployed() │ └─────────┬───────────┘ │ │ {complete, disjoint} │ ┌─────────────┼─────────────┐ │ │ │ ▽ ▽ ▽ ┌────────────────┐ ┌────────────────┐ ┌────────────────┐ │ MANAGER │ │ ENGINEER │ │ SALESPERSON │ ├────────────────┤ ├────────────────┤ ├────────────────┤ │ -department │ │ -tech_stack[] │ │ -territory │ │ -budget │ │ -certifications│ │ -quota │ │ -team_size │ │ -github_handle │ │ -commission_rate│ ├────────────────┤ ├────────────────┤ ├────────────────┤ │ +approveBudget │ │ +codeReview() │ │ +closeDeal() │ │ +hireEmployee()│ │ +deployCode() │ │ +generateLead()│ └────────────────┘ └────────────────┘ └────────────────┘ Legend: ─────▷ Generalization (hollow triangle at superclass) {complete, disjoint} = Total, Disjoint specialization {incomplete, overlapping} = Partial, Overlapping specialization - (minus) = private attribute + (plus) = public operationUML Constraint Notation:
UML uses constraint labels in curly braces to specify specialization constraints:
| Constraint | Meaning |
|---|---|
{complete} | Total participation — every superclass object is in some subclass |
{incomplete} | Partial participation — some superclass objects may not be in any subclass |
{disjoint} | Mutually exclusive — object can be in at most one subclass |
{overlapping} | Not exclusive — object can be in multiple subclasses |
Combined constraints:
{complete, disjoint} — Every object is in exactly one subclass{complete, overlapping} — Every object is in at least one subclass{incomplete, disjoint} — Object is in at most one subclass, possibly none{incomplete, overlapping} — Object can be in any number of subclasses (0 to all)UML notation is particularly valuable when database design is part of a larger software system design. It allows seamless integration between data models and application models, with consistent notation across both. If your organization uses UML for software, use it for data modeling too.
Specialization constraints—disjoint vs. overlapping, total vs. partial—are critical semantic information. Each notation system has specific ways to express these constraints.
The Four Constraint Combinations:
| Combination | Meaning | Chen | IE | UML |
|---|---|---|---|---|
| Disjoint + Total | Every entity in exactly ONE subtype | (d) with double line | Triangle with X, filled | {complete, disjoint} |
| Disjoint + Partial | Entity in AT MOST ONE subtype | (d) with single line | Triangle with X, unfilled | {incomplete, disjoint} |
| Overlapping + Total | Entity in AT LEAST ONE subtype | (o) with double line | Triangle without X, filled | {complete, overlapping} |
| Overlapping + Partial | Entity in ANY NUMBER of subtypes (0+) | (o) with single line | Triangle without X, unfilled | {incomplete, overlapping} |
Visual Reference for All Four Combinations:
Semantics: Every supertype entity belongs to exactly one subtype.
Real-world example: ACCOUNT → {SAVINGS, CHECKING, INVESTMENT} Every account is exactly one type.
Chen Notation:
ACCOUNT
║
(d) ← circle with 'd'
/|\
S C I
(Double line indicates total; 'd' indicates disjoint)
UML: {complete, disjoint}
Common in: Role assignment, type categorization, state-based models where state is exclusive.
The discriminator (also called defining attribute or type indicator) specifies which attribute determines subtype membership. Different notations represent this with varying degrees of explicitness.
Chen Notation: The discriminator is typically shown as a label near the specialization circle:
EMPLOYEE
|
(d)
|←── job_type [discriminator label]
/|\
/ | \
MANAGER ENGINEER SALES
↓ ↓ ↓
'MGR' 'ENG' 'SALES' [discriminator values]
IE Notation: Shown in brackets near the inheritance symbol:
VEHICLE
▽ [vehicle_type]
/|\
CAR TRUCK MOTORCYCLE
UML Notation: Added as a constraint or note:
┌──────────┐
│ VEHICLE │
├──────────┤ {discriminator = vehicle_type}
│ vehicle_ │───────────────────┐
│ type │ │
└────┬─────┘ │
│ │
├────────────────────────────────┐
▽ ▽ ▽
┌───────┐ ┌───────┐ ┌──────────┐
│ CAR │ │ TRUCK │ │MOTORCYCLE│
└───────┘ └───────┘ └──────────┘
Not all diagrams explicitly show discriminators. When the discriminator is implicit (derived from entity semantics rather than an attribute value), it may be omitted from the diagram. When it's explicit (a specific attribute), best practice is to show it. When reviewing diagrams without discriminators, clarify with the modeler whether it's implicit or simply undocumented.
Discriminator Values:
Some notation styles also show which discriminator value maps to which subtype:
ACCOUNT
│
(d) [account_type]
│
├── SAVINGS ← 'SAV'
├── CHECKING ← 'CHK'
└── INVESTMENT ← 'INV'
This clarifies both:
account_type)Real-world models often have multi-level specialization hierarchies. Notation must clearly convey multiple inheritance levels, potentially with different constraints at each level.
Key Observations:
Each level can have different constraints:
Each level has its own specialization symbol:
Attributes accumulate:
Reading Multi-Level Diagrams:
When reading complex hierarchies:
This page has provided comprehensive coverage of notational systems for specialization. Let's consolidate the essential knowledge:
{complete/incomplete, disjoint/overlapping} in UML.Module Complete:
With this page on notation, you've completed the Specialization module. You now understand:
You're now prepared to design, read, and implement specialization hierarchies in any EER modeling context.
Congratulations! You've mastered specialization in Enhanced ER modeling. You can now conceptualize, design, notate, and implement specialization hierarchies—one of the most powerful semantic constructs in data modeling. The next module covers Generalization, the bottom-up counterpart to specialization.