Crow’s Foot Notation — ER Diagram Cardinality Explained
Crow’s foot notation is the most widely used system for showing cardinality in entity relationship diagrams. The symbols drawn at each end of a relationship line tell you exactly how many records on one side can relate to records on the other. This guide explains every symbol, how to read a crow’s foot diagram, and how the notation maps to actual foreign key relationships in MySQL and PostgreSQL.
What Is Crow’s Foot Notation?
Crow’s foot notation (also called chicken foot notation or IE notation) is a graphical convention for representing the cardinality and optionality of relationships in an ER diagram. It was introduced by Gordon Everest in 1976 and named after the distinctive three-pronged symbol that represents the "many" side of a relationship — which resembles a crow’s foot.
It is the dominant notation used in modern database design tools, documentation, and textbooks. When you open SQL Designer and draw a relationship between two tables, crow’s foot notation is applied automatically.
The Crow’s Foot Symbols
Each end of a relationship line carries two pieces of information: the maximum cardinality (one or many) and the minimum cardinality (zero or one, i.e. optional or mandatory). These are shown by combining symbols at the line end:
| Symbol at line end | Meaning |
|---|---|
| Single vertical bar ( | ) | Exactly one (mandatory) |
| Circle ( ○ ) | Zero (optional) |
| Crow’s foot ( 〈〈 ) | Many |
These are combined in pairs. The symbol closest to the entity shows the maximum cardinality; the next symbol shows the minimum:
| Combined symbol | Reads as |
|---|---|
| One and only one | Exactly one — mandatory, cannot be zero |
| Zero or one | Optional — at most one |
| One or many | At least one — mandatory many |
| Zero or many | Optional many — zero or more |
Relationship Types in Crow’s Foot Notation
One-to-One (1:1)
A single bar on both ends of the line. Each record in table A relates to exactly one record in table B, and vice versa.
Example: A users table and a user_profiles table,
where each user has exactly one profile and each profile belongs to exactly one user. The foreign
key (user_profiles.user_id) references users.id with a UNIQUE
constraint to enforce the one-to-one cardinality.
One-to-Many (1:N)
A single bar on one end, a crow’s foot on the other. One record in table A relates to many records in table B, but each record in table B relates to exactly one record in table A.
Example: A users table and an orders table. One user
can place many orders, but each order belongs to exactly one user. The foreign key
(orders.user_id) references users.id. This is the most common
relationship type in relational databases.
Many-to-Many (N:M)
A crow’s foot on both ends. Many records in table A relate to many records in table B.
Example: A products table and a tags table. One
product can have many tags, and one tag can apply to many products. Many-to-many relationships
cannot be represented by a single foreign key — they require a junction table (also called a
join table or associative entity), such as product_tags, with foreign keys to
both products and tags.
Optionality: Mandatory vs. Optional
The minimum cardinality symbol tells you whether the relationship is required:
- Mandatory (|) — a record must exist on that side. In SQL, this is enforced
by a
NOT NULLconstraint on the foreign key column. - Optional (○) — a record may or may not exist. The foreign key column
allows
NULL, meaning the relationship is optional.
For example, an orders table might have an optional coupon_id foreign
key — an order can exist without a coupon, so coupon_id is nullable. In crow’s
foot notation, the coupons end of the line would show a circle (zero-or-one) rather
than a bar (exactly one).
How SQL Designer Uses Crow’s Foot Notation
When you draw a relationship line in SQL Designer between a foreign key column and the primary key it references, crow’s foot notation is applied automatically based on the column constraints:
- The referenced (parent) side always shows a single bar — one record is referenced
- The referencing (child) side shows a crow’s foot — many records can hold the same FK value
- If the FK column is
NOT NULL, the child end shows a mandatory crow’s foot (one-or-many) - If the FK column allows
NULL, the child end shows an optional crow’s foot (zero-or-many)
The result is a complete, readable ER diagram using standard crow’s foot notation — ready to share with your team or embed in documentation.
Draw ER diagrams with crow’s foot notation — free
SQL Designer applies crow's foot notation automatically when you draw relationships between tables. No install, no subscription — just open the canvas and start designing.
Create a Free Account