Data Modeling Best Practices


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.