অধ্যায় ১০.২ — ER ডায়াগ্রাম
১. উদ্দেশ্য
মূল এন্টিটি সম্পর্ক চিত্রণ (Mermaid ফরম্যাটে)। প্রতিটি স্কিমা গ্রুপের জন্য একটি ER ডায়াগ্রাম।
২. কোর গ্রুপ
erDiagram
PARTNER ||--o{ USER : has
PARTNER ||--o{ BRANCH : has
USER ||--o{ USER_ROLE : has
ROLE ||--o{ USER_ROLE : assigned
ROLE ||--o{ ROLE_PERMISSION : has
PERMISSION ||--o{ ROLE_PERMISSION : granted
৩. অপারেশনস গ্রুপ
erDiagram
BOOKING ||--o{ BOOKING_SEGMENT : contains
BOOKING ||--o{ BOOKING_PASSENGER : contains
BOOKING ||--o{ BOOKING_TICKET : produces
BOOKING_TICKET ||--o{ BOOKING_SEGMENT : covers
BOOKING }o--|| CUSTOMER : "made by"
BOOKING }o--|| SUPPLIER : "with"
BOOKING ||--o{ JOURNAL_ENTRY : "generates"
৪. ফিন্যান্সিয়াল গ্রুপ
erDiagram
JOURNAL_ENTRY ||--|{ JOURNAL_ENTRY_LINE : has
JOURNAL_ENTRY_LINE }o--|| ACCOUNT : posts_to
ACCOUNT ||--o{ ACCOUNT : "parent-child"
JOURNAL_ENTRY }o--|| PERIOD : belongs_to
PERIOD ||--o{ PERIOD_SNAPSHOT : snapshots
JOURNAL_ENTRY_LINE }o--o| CUSTOMER : dimension
JOURNAL_ENTRY_LINE }o--o| SUPPLIER : dimension
JOURNAL_ENTRY_LINE }o--o| BRANCH : dimension
৫. পেমেন্ট ও AR গ্রুপ
erDiagram
INVOICE ||--o{ INVOICE_LINE : has
INVOICE }o--|| CUSTOMER : "billed to"
INVOICE }o--o| BOOKING : "for"
PAYMENT ||--o{ INVOICE_PAYMENT : applies_to
INVOICE ||--o{ INVOICE_PAYMENT : receives
PAYMENT }o--|| CUSTOMER : "from"
PAYMENT ||--|{ JOURNAL_ENTRY : generates
৬. BSP/Memo গ্রুপ
erDiagram
BSP_FILE ||--|{ BSP_LINE : contains
BSP_LINE }o--o| BOOKING_TICKET : matches
MEMO }o--|| AIRLINE : "from"
MEMO }o--o| BOOKING : "links to"
MEMO ||--o{ MEMO_DISPUTE : may_have
৭. ইন্টিগ্রেশন গ্রুপ
erDiagram
SUPPLIER ||--o{ SUPPLIER_CREDENTIALS : has
SUPPLIER_REQUEST_LOG }o--|| BOOKING : about
WEBHOOK_SUBSCRIPTION ||--o{ WEBHOOK_DELIVERY : produces
WEBHOOK_DELIVERY }o--|| WEBHOOK_EVENT : "for"
৮. মূল কার্ডিনালিটি
| সম্পর্ক | নোট |
|---|---|
| Booking ↔ Tickets | 1:N — একটি বুকিং একাধিক টিকেট তৈরি করতে পারে |
| Ticket ↔ Segments | 1:N — একটি টিকেট একাধিক সেগমেন্ট কভার করে |
| Booking ↔ JE | 1:N — প্রতিটি স্টেট ট্রানজিশন একটি JE |
| JE ↔ JEL | 1:N — minimum 2 লাইন (debit + credit) |
| Invoice ↔ Payment | M:N — একটি পেমেন্ট একাধিক ইনভয়েস পরিশোধ করতে পারে |
| Memo ↔ Booking | M:N — মেমো একাধিক বুকিং কভার করতে পারে |
৯. ডায়াগ্রাম পদ্ধতি
travoBooks ডকুমেন্টেশনে Mermaid ব্যবহৃত: - চিরন্তন (text-based, version-controllable) - ব্রাউজারে রেন্ডার (no static images) - ব্র্যান্ডেড থিম (green palette)
১০. বাস্তব schema বনাম conceptual ER
ER ডায়াগ্রাম conceptual। বাস্তব schema-এ:
- partner_id সব টেবিলে (RLS)
- audit fields সর্বত্র
- composite FKs
- additional indexes
বিস্তারিত table definitions migrations দেখুন।