PlantUML और VPasCode के साथ होटल प्रबंधन ERD बनाना

A YouTube thumbnail-style graphic featuring the bold text "BUILD PROFESSIONAL DATABASE DIAGRAMS" in large uppercase letters, with a pointing finger icon on the right and a rendered Entity Relationship Diagram displayed in the background.

जब आप आतिथ्य जैसे जटिल क्षेत्रों के लिए विश्वसनीय डेटाबेस आर्किटेक्चर डिज़ाइन करते हैं, तो संबंधों को स्पष्ट रूप से दिखाना महत्वपूर्ण है। चाहे आप ग्राहक प्रोफाइल को मैप कर रहे हों, कमरे के स्टॉक को ट्रैक कर रहे हों, या बिलिंग का प्रबंधन कर रहे हों, एक अच्छी तरह से संरचित एंटिटी रिलेशनशिप डायग्राम (ERD) विकास के दौरान अनगिनत घंटे बचाता है। इस मास्टरक्लास में, मैं आपके साथ चलूंगा कि मैंने PlantUML का उपयोग करके शुरू से ही एक व्यापक होटल प्रबंधन ERD कैसे बनाया, जो VPasCode के अंदर हैमुफ्त PlantUML संपादक, VPasCode.

1. PlantUML पर्यावरण को प्रारंभ करना

मैं स्क्रिप्ट की आधारभूत संरचना सेट करके शुरू करता हूं। जब आप बहुत सारे विशेषताओं वाले जटिल स्कीमा के साथ काम करते हैं, तो लेआउट पठनीयता अत्यंत महत्वपूर्ण होती है। मैं PlantUML को अनावश्यक भार को छिपाने और डायग्राम लेआउट दिशा को अनुकूलित करने के लिए कॉन्फ़िगर करता हूं:


@startuml 
title होटल प्रबंधन ERD

circle छिपाएं
बाएं से दाएं दिशा
    

इस दृष्टिकोण का क्या कारण है?डिफ़ॉल्ट विशेषता वृत्तों को छिपाने से एंटिटी बॉक्स साफ और आधुनिक रहते हैं। दिशा को सेट करना बाएं से दाएं दिशाविस्तृत ERD को ऊर्ध्वाधर रूप से अनियंत्रित होने से रोकता है, बहु-तालिका संबंधों को तार्किक रूप से फैलाता है।

2. मुख्य एंटिटी और विशेषताओं को परिभाषित करना

अगला, मुझे अपने व्यवसाय क्षेत्र का प्रतिनिधित्व करने वाली मुख्य एंटिटी को परिभाषित करने की आवश्यकता है। मैं प्रत्येक एंटिटी को उसके प्राथमिक कुंजियों, अद्वितीय सीमाओं और प्रकार वाली विशेषताओं के साथ संरचित करता हूं। आइए देखें कि मैंने मुख्य ग्राहक और कमरा प्रकारएंटिटी को कैसे सेट किया:


entity "ग्राहक" as ग्राहक {
  * ग्राहक_id : UUID <<PK>>
  --
  प्रथम_नाम : VARCHAR(50)
  अंतिम_नाम : VARCHAR(50)
  ईमेल : VARCHAR(100) <<UK>>
  फ़ोन : VARCHAR(20)
  पता : TEXT
  लॉयल्टी_पॉइंट्स : INTEGER
  कुल_ठहराव : INTEGER
  पंजीकृत_तिथि : TIMESTAMP
  जन्म_तिथि : DATE
  राष्ट्रीयता : VARCHAR(50)
}

entity "कमरा प्रकार" as कमरा_प्रकार {
  * कमरा_प्रकार_id : UUID <<PK>>
  --
  प्रकार_नाम : VARCHAR(50) <<UK>>
  विवरण : TEXT
  मानक_क्षमता : INTEGER
  आधार_मूल्य : DECIMAL(10,2)
  अतिरिक्त_बिस्तर_शुल्क : DECIMAL(10,2)
  रसोई_छोटा_कमरा_है : BOOLEAN
  बालकनी_है : BOOLEAN
}
    

स्पष्ट चिह्नों जैसे <<PK>> और <<UK>>, कोई भी कोड को देखते समय डेटाबेस माइग्रेशन स्क्रिप्ट लिखे जाने से पहले ही इंडेक्सिंग और अद्वितीयता नियमों को समझ जाता है।

3. संचालन एंटिटी का मैपिंग (कमरे, बुकिंग और कर्मचारी)

हमारे संदर्भ डेटा के स्थापित होने के बाद, मैं होटल प्रबंधन प्रणाली के लेनदेन के केंद्र में जाता हूं: कमरे, बुकिंग और कर्मचारी के कार्यप्रवाह। प्रत्येक एंटिटी विदेशी कुंजियों के उपयोग से हमारी आधारभूत तालिकाओं से जुड़ती है:


entity "कमरा" as कमरा {
  * कमरा_id : UUID <<PK>>
  --
  कमरा_संख्या : VARCHAR(10) <<UK>>
  मंजिल_संख्या : INTEGER
  कमरा_प्रकार_id : UUID <<FK>>
  क्षमता : INTEGER
  आधार_मूल्य : DECIMAL(10,2)
  उपलब्ध_है : BOOLEAN
  दृश्य_है : BOOLEAN
  वर्ग_फुट : INTEGER
  अंतिम_आधुनिकीकरण : DATE
}

entity "बुकिंग" as बुकिंग {
  * बुकिंग_id : UUID <<PK>>
  --
  ग्राहक_id : UUID <<FK>>
  कमरा_id : UUID <<FK>>
  आगमन_तिथि : DATE
  निर्गमन_तिथि : DATE
  अतिथि_संख्या : INTEGER
  कुल_राशि : DECIMAL(10,2)
  स्थिति : VARCHAR(20)
  विशेष_अनुरोध : TEXT
  निर्मित_तिथि : TIMESTAMP
  अद्यतनित_तिथि : TIMESTAMP
  पुष्टि_कोड : VARCHAR(20) <<UK>>
}
    

4. वित्तीय और सेवा संबंधों को स्थापित करना

आर्किटेक्चर को पूरा करने के लिए, मैं बिलिंग रिकॉर्ड (भुगतान और बिल) के साथ-साथ होटल कर्मचारियों द्वारा संचालित कमरा सेवा जैसी सहायक सेवाओं को मैप करता हूं। सब कुछ एक साथ जोड़ने के लिए, मैं मानक PlantUML नोटेशन का उपयोग करके कार्डिनैलिटी को स्पष्ट रूप से परिभाषित करता हूं:


' संबंध
customer ||--o{ reservation : "बनाता है"
room ||--o{ reservation : "आवंटित है"
reservation ||--|| payment : "के लिए है"
reservation ||--|| invoice : "उत्पन्न करता है"
reservation ||--o{ roomservice : "मांगता है"
staff ||--o{ roomservice : "पूरा करता है"
roomtype ||--o{ room : "वर्गीकृत करता है"

@enduml
    

डिज़ाइन चयन: सटीक क्राउ स्कॉट नोटेशन का उपयोग करना (जैसे ||--o{ अनिवार्य-से-वैकल्पिक एक-से-बहुत के संबंधों के लिए) व्यापार तर्क नियमों—जैसे एक बुकिंग के लिए ग्राहक की आवश्यकता होती है, लेकिन एक ग्राहक के एक या शून्य सक्रिय बुकिंग हो सकती है—को सटीक ढंग से मॉडल करने में सुनिश्चित करता है।

 

पूर्ण PlantUML स्क्रिप्ट

यहाँ हमारे होटल प्रबंधन ERD के लिए पूर्ण, संयुक्त स्रोत कोड है। आप इस कोड को अपने पसंदीदा मुफ्त PlantUML संपादक में संपादित या वेक्टर ग्राफिक्स रेंडर करने के लिए:

@startuml 

title होटल प्रबंधन ERD

hide circle
बाएं से दाएं दिशा

' एककों को विशेषताओं के साथ परिभाषित करें
entity "ग्राहक" as customer {
  * customer_id : UUID <>
  --
  first_name : VARCHAR(50)
  last_name : VARCHAR(50)
  email : VARCHAR(100) <>
  phone : VARCHAR(20)
  address : TEXT
  loyalty_points : INTEGER
  total_stays : INTEGER
  date_registered : TIMESTAMP
  date_of_birth : DATE
  nationality : VARCHAR(50)
}

entity "कमरा" as room {
  * room_id : UUID <>
  --
  room_number : VARCHAR(10) <>
  floor_number : INTEGER
  room_type_id : UUID <>
  capacity : INTEGER
  base_price : DECIMAL(10,2)
  is_available : BOOLEAN
  has_view : BOOLEAN
  square_feet : INTEGER
  last_renovated : DATE
}

entity "कमरा प्रकार" as roomtype {
  * room_type_id : UUID <>
  --
  type_name : VARCHAR(50) <>
  description : TEXT
  standard_capacity : INTEGER
  base_price : DECIMAL(10,2)
  extra_bed_charge : DECIMAL(10,2)
  has_kitchenette : BOOLEAN
  has_balcony : BOOLEAN
}

entity "बुकिंग" as reservation {
  * reservation_id : UUID <>
  --
  customer_id : UUID <>
  room_id : UUID <>
  check_in_date : DATE
  check_out_date : DATE
  number_of_guests : INTEGER
  total_amount : DECIMAL(10,2)
  status : VARCHAR(20)
  special_requests : TEXT
  created_at : TIMESTAMP
  updated_at : TIMESTAMP
  confirmation_code : VARCHAR(20) <>
}

entity "भुगतान" as payment {
  * payment_id : UUID <>
  --
  reservation_id : UUID <>
  amount : DECIMAL(10,2)
  payment_date : TIMESTAMP
  payment_method : VARCHAR(30)
  transaction_id : VARCHAR(50) <>
  status : VARCHAR(20)
  receipt_url : TEXT
  refund_amount : DECIMAL(10,2)
}

entity "बिल" as invoice {
  * invoice_id : UUID <>
  --
  reservation_id : UUID <>
  invoice_number : VARCHAR(20) <>
  issued_date : DATE
  due_date : DATE
  subtotal : DECIMAL(10,2)
  tax : DECIMAL(10,2)
  service_charge : DECIMAL(10,2)
  total_amount : DECIMAL(10,2)
  status : VARCHAR(20)
}

entity "कर्मचारी" as staff {
  * staff_id : UUID <>
  --
  first_name : VARCHAR(50)
  last_name : VARCHAR(50)
  email : VARCHAR(100) <>
  phone : VARCHAR(20)
  role : VARCHAR(30)
  hire_date : DATE
  salary : DECIMAL(10,2)
  shift_schedule : VARCHAR(50)
  is_active : BOOLEAN
}

entity "कमरा सेवा" as roomservice {
  * service_id : UUID <>
  --
  reservation_id : UUID <>
  staff_id : UUID <>
  service_type : VARCHAR(50)
  description : TEXT
  request_time : TIMESTAMP
  completion_time : TIMESTAMP
  status : VARCHAR(20)
  price : DECIMAL(10,2)
}

' संबंध
customer ||--o{ reservation : "बनाता है"
room ||--o{ reservation : "आवंटित है"
reservation ||--|| payment : "के लिए है"
reservation ||--|| invoice : "उत्पन्न करता है"
reservation ||--o{ roomservice : "मांगता है"
staff ||--o{ roomservice : "पूरा करता है"
roomtype ||--o{ room : "वर्गीकृत करता है"

@enduml

Editing a ERD in Visual Paradigm VPasCode


VPasCode के साथ अपने डेटाबेस डिज़ाइनों को जीवंत बनाएं

जटिल डेटाबेस मॉडल बनाने के लिए असंगत ड्रैग-एंड-ड्रॉप उपयोगकर्ता इंटरफेस के साथ लड़ने की आवश्यकता नहीं है। डायग्राम-एज-कोड दृष्टिकोण का उपयोग करके, आपकी आर्किटेक्चर संस्करण नियंत्रित, साफ और आसानी से बनाए रखी जा सकती है।

अपनी स्वयं की सिस्टम आर्किटेक्चर बनाने की कोशिश करने के लिए तैयार हैं? जाएं VPasCode आज ही अपनी तकनीकी दस्तावेज़ीकरण के लिए रियल-टाइम रेंडरिंग, स्वचालित फॉर्मेट डिटेक्शन और बिना किसी दिक्कत के निर्यात का अनुभव करें!

Scroll to Top