1. Conceptual Data Model
Capture the business view first — just entities and relationships, no attributes.
What is a Conceptual Data Model?
A Conceptual Data Model (CDM) is the simplest, highest-level view of a database design. It contains only:
- Entities — the major things the business cares about (Customer, Order, Product)
- Relationships — how those things connect ("a Customer places an Order")
No attributes. No keys. No data types. No technical detail of any kind. The audience is business stakeholders — product managers, business analysts, domain experts — who need to confirm "yes, that's how our business works."
Our example: a small e-commerce system
We'll model an e-commerce platform. After interviewing the business, we've identified five core entities:
- Customer — people who buy things
- Order — a customer's purchase
- Product — items for sale
- Category — how products are grouped (Electronics, Apparel, etc.)
- Address — shipping destinations
And the relationships:
- A Customer places many Orders
- An Order contains many Products (and a Product can be in many Orders)
- A Product belongs to one Category
- A Customer has many Addresses
- An Order ships to one Address
Building it in ERWIN — step by step
Create a new model in Logical mode
In the New Model dialog:
- Model Type: Logical (we'll switch back and forth later)
- Database: leave empty for now (we'll set it in the Physical lesson)
- Notation: IE (Information Engineering) — the default, used by most enterprises
Click OK. You'll see a blank canvas.
Place your first entity
In the toolbox, click the Entity icon (looks like a rounded rectangle). Then click anywhere on the canvas to drop one. A new entity called "E/1" appears.
Press F2 (or just type) and rename it to Customer. Click anywhere to deselect.
Place the rest of the entities
Repeat for the other four entities: Order, Product, Category, Address. Position them on the canvas so they're not overlapping.
Don't worry about layout aesthetics — ERWIN has auto-layout (Diagram → Layout → Auto Layout) that you can run later.
At this point your canvas should look something like:
Add your first relationship
In the toolbox, click the Identifying Relationship icon (solid line) — this represents a strong dependency. (We'll discuss non-identifying soon.)
Then:
- Click on Customer (the parent — the "one" side)
- Then click on Order (the child — the "many" side)
A line appears connecting them, with a dot on the Order side. The dot represents "many" — so this reads as "one Customer places many Orders."
Set cardinality on the relationship
Right-click the relationship line and choose Relationship Properties (or double-click it).
You'll see a dialog with options for Cardinality:
- One or many (default) — parent has zero or many children. Most common.
- One or zero — parent has zero or exactly one child (1:1 optional)
- Exactly one — parent has exactly one child (1:1 mandatory — rare)
- Many (P) — parent has one or many (NOT zero) children
For Customer → Order, "One or many" is correct: a customer can have zero orders (just signed up) or many.
Also set the Verb Phrase — this is the human-readable description of the relationship. From Customer's side, type "places". From Order's side, type "is placed by".
Identifying vs Non-identifying relationships
ERWIN has two styles for parent-child relationships:
Identifying (solid line)
The child cannot exist without the parent. The parent's PK becomes part of the child's PK. Example: an OrderLine can't exist without an Order.
Non-identifying (dashed line)
The child can exist independently but references the parent. The parent's PK becomes a regular FK in the child, not part of its PK. Most foreign keys are non-identifying.
For Customer → Order, use a non-identifying relationship (dashed line). An Order has its own OrderID and could conceptually exist without being tied to a specific Customer (e.g., guest checkouts).
To convert: right-click the line → Relationship Properties → Type → Non-identifying.
Add the remaining relationships
Add these one by one (non-identifying for all):
- Customer → Address ("has" / "belongs to") — one customer, many addresses
- Order → Address ("ships to" / "is shipping address for") — one order, one address
- Category → Product ("contains" / "belongs to") — one category, many products
Handle the many-to-many: Order ↔ Product
An order can contain many products, and a product can appear in many orders. This is a many-to-many (M:N) relationship.
In the toolbox, click the Many-to-Many relationship icon, then click Order, then Product. You'll see a line with a dot at both ends.
Right now this is allowed in the CDM. But when we move to logical/physical, ERWIN will force us to resolve it by inserting a bridge entity (we'll call it OrderLine).
Document the entities
Even though a CDM has no attributes, you can still document what each entity means — and you absolutely should.
Double-click any entity (e.g., Customer). In the Property Editor:
- Click the Definition tab
- Type a clear description: "A person or business that has placed an order or has a registered account. Includes prospects who registered but haven't yet placed an order."
- Click OK
This definition will travel with the model into Logical and Physical, and gets included when you generate documentation. It's how you settle "what counts as a Customer" debates years from now.
Auto-layout and save
Run auto-layout to clean up the diagram:
Save your model:
Take a screenshot or export as image — you've completed your first Conceptual Data Model.
What's in our CDM now
Review checklist
- ✅ Every entity has a clear, business-friendly name
- ✅ Every entity has a definition
- ✅ Every relationship has a verb phrase ("places", "contains", "ships to")
- ✅ Cardinality is set correctly (one-to-many, many-to-many, etc.)
- ✅ No attributes shown (that's the next stage)