Data Modeling — রোডম্যাপ
দশটি অধ্যায় যা আপনাকে 'primary key জিনিসটা কী' থেকে load-এর নিচে ইচ্ছাকৃত schema design পর্যন্ত নিয়ে যাবে — keys, normalization, denormalization, constraints, multi-tenancy, JSONB, আর zero-downtime evolution।
শেষে গিয়ে আপনি কী করতে পারবেন
আপনি এমন Postgres schema design করতে পারবেন যা বাস্তব query pattern-এর সাথে মেলে, এমন keys বাছতে পারবেন যেগুলো সময়ের সাথে টিকে যায়, যেখানে normalize করলে উপকার সেখানে normalize আর যেখানে denormalize করলে লাভ সেখানে denormalize করতে পারবেন, application check-এর বদলে invariant-গুলোকে constraint হিসেবে encode করতে পারবেন, নিজেকে কোণঠাসা না করে time আর tenancy model করতে পারবেন, কখন JSONB তার জায়গা করে নেয় তা ঠিক করতে পারবেন, আর একটা live system-এ zero-downtime schema migration চালাতে পারবেন।
Prereqs: আগে REST API building শেষ করুন। এই path-এর Databases self-hosted আর Background jobs track এই অধ্যায়টার ওপর নির্ভর করে — বেশিরভাগ schema-ভুল পরে হয় slow query নয়তো অসম্ভব migration হিসেবে সামনে আসে। Postgres এখানে reference; concept যেকোনো relational database-এই খাটে।
১০টি অধ্যায়, ক্রম অনুযায়ী
Foundations
- What data modeling is — schema design-এর সাথে, ORM-এর সাথে, আর “চলো একটা table বানাই”-এর তুলনায়
- Entities, attributes, relationships — SQL-এর আগে ER-চিন্তা
- Keys — natural vs surrogate, ULID/UUID/serial, composite, কোনটা কখন খাপ খায়
- Normalization — 1NF, 2NF, 3NF সহজ ভাষায়, উদাহরণ সহ
বাস্তব দুনিয়ার tradeoff
- Denormalization — কেন, কখন, আর তার bookkeeping খরচ
- Constraints — NOT NULL, FK, CHECK, UNIQUE, exclusion, generated
- Time and soft delete — timestamps, time zones, history tables, soft-delete-এর ফাঁদ
- Multi-tenancy — single-DB, schema-per-tenant, row-level security
Production
- JSONB and the schemaless trap — কখন ব্যবহার করবেন, কখন কামড় দেয়
- Schema evolution — expand/contract, zero-downtime migrations, backfills
এই track কীভাবে ব্যবহার করবেন
ক্রম অনুযায়ী পড়ুন। প্রথম চারটি অধ্যায় conceptual; ৫ নম্বর থেকে আপনি বাস্তব query pattern-এর বিপরীতে tradeoff ওজন করছেন। শেষ দুটি operational। মোট পড়া: ~৩ ঘণ্টা। একটা আসল Postgres database নিয়ে হাতে-কলমে: একটা লম্বা weekend।
আপনার লাগবে Postgres 15+ আর একটা SQL client (psql, DBeaver, TablePlus, নয়তো Postgres extension সহ VS Code)। সবকিছু locally চলে।