Different ER notations express the same business rules with different symbols. This page aligns three popular styles—IDEF1X, Crow’s Foot (Information Engineering), and Chen—using one shared rule:
AnOFFICEcan have zero or manyEMPLOYEEs; eachEMPLOYEEbelongs to exactly oneOFFICE.
Use the quick-compare, then dive into each notation’s essentials and how they map to relational schema.
OFFICE→EMPLOYEE): (1) IDEF1X emphasizes keys and identifying vs. non-identifying relationships; (2) Crow’s Foot encodes cardinality (one/many) and optionality (mandatory/optional) on line ends; (3) Chen shows entities (rectangles), relationships (diamonds), and can attach attributes to either.
IDEF1X distinguishes identifying (child’s PK includes parent’s PK) and non-identifying (child has its own PK) relationships. It is standards-oriented and explicit about key migration.
OFFICE; Child: EMPLOYEE.OFFICE_ID becomes part of EMPLOYEE’s PK.EMPLOYEE keeps its own PK; OFFICE_ID is an FK only.
Crow’s Foot uses end-markers for maximum (|=one, <=many) and minimum (|=at least one, O=zero allowed). Read the ends nearest each entity.
O< at EMPLOYEE side = zero or many employees per office.|| at OFFICE side = each employee must belong to exactly one office.
Chen shows entities as rectangles, relationships as diamonds (e.g., assign), and attributes as ovals. Cardinality (1/N) and participation (total/partial) appear near lines/ends. Relationship attributes (e.g., “since_date”) are attached to the diamond.
Non-identifying (common in OLTP): child has its own surrogate PK; parent PK migrates as FK.
-- Parent
CREATE TABLE office (
office_id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
office_code VARCHAR2(30) UNIQUE NOT NULL,
name VARCHAR2(100) NOT NULL
);
-- Child
CREATE TABLE employee (
employee_id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
office_id NUMBER NOT NULL,
last_name VARCHAR2(60) NOT NULL,
first_name VARCHAR2(60) NOT NULL,
CONSTRAINT fk_employee_office
FOREIGN KEY (office_id) REFERENCES office(office_id)
);
Identifying (child identity depends on parent): parent PK participates in child PK.
CREATE TABLE employee_ident (
office_id NUMBER NOT NULL,
emp_no NUMBER NOT NULL,
last_name VARCHAR2(60) NOT NULL,
first_name VARCHAR2(60) NOT NULL,
CONSTRAINT pk_employee_ident PRIMARY KEY (office_id, emp_no),
CONSTRAINT fk_employee_ident_office
FOREIGN KEY (office_id) REFERENCES office(office_id)
);
|/< (max), |/O (min). The || next to OFFICE means “exactly one office per employee.”O vs |).UNIQUE constraints when adding surrogate keys.Takeaway: Learn one deeply (Crow’s Foot for practice), then use the compare above to translate the same model across notations.