Data Modeling Fundamentals

Data modeling defines and organizes data structures to represent real-world entities and their relationships.
Entity-Relationship Diagrams
ER diagrams map entities (nouns) and relationships (verbs). Key cardinalities: one-to-one, one-to-many, many-to-many.
Customer:
attributes: id, email, name, created_at
relationships: has_many Order
Order:
attributes: id, customer_id, status, total, created_at
relationships: belongs_to Customer, has_many OrderItem
Normalization
Aim for third normal form (3NF) in transactional systems:
-
1NF: Atomic columns, unique rows
-
2NF: Full PK dependency
-
3NF: No transitive dependencies
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\-- 3NF design
CREATE TABLE customers (id SERIAL PRIMARY KEY, name TEXT);
CREATE TABLE orders (id SERIAL PRIMARY KEY, customer_id INT REFERENCES customers(id));
CREATE TABLE order_items (id SERIAL PRIMARY KEY, order_id INT REFERENCES orders(id), product_id INT, quantity INT);
Denormalization
Denormalize selectively for read performance. Common cases: reporting tables, cached aggregates, distributed databases avoiding joins.
NoSQL Modeling
Model for access patterns first:
// Embed for co-accessed data
{
_id: "...",
customer: { id: "c123", name: "Alice" },
items: [{ product_id: "p1", qty: 2 }]
}
Conclusion
Start with 3NF for data integrity. Denormalize for performance when needed. For NoSQL, design your schema around your query patterns. Document all denormalization decisions with rationale.
Enjoy this article? Share your thoughts, questions, or experiences in the comments below — your insights help other readers too.
Join the discussion ↓