इसे छोड़कर कंटेंट पर जाएं

संबंध खींचें

28 अन्य भाषाओं में भी उपलब्ध

English · Español · 日本語 · Português (Brasil) · Français · Deutsch · Italiano · 한국어 · 简体中文 · Português (Portugal) · 繁體中文 · Bahasa Indonesia · Türkçe · Polski · Tiếng Việt · ไทย · Nederlands · العربية · עברית · Українська · Русский · Svenska · Dansk · Norsk bokmål · Suomi · Español (México) · Français (Canada) · Deutsch (Schweiz)

A card model of a region from above: one distribution center joined by red threads to many small stores, and a second center with its own.
AI से बनाई गई इमेज

मॉड्यूल 2 (कुल 6 में से) — अध्याय अर्थ के लिए डेटा मॉडलिंग, Data Architect कोर्स का अध्याय 2। हर मॉड्यूल अपने आप में पूरा है। पिछला: संज्ञाओं को सुनें · अगला: लॉजिकल मॉडल बनाएँ

यह मॉड्यूल किस सवाल का जवाब देता है: संभावित एंटिटी (entities) को मैं कॉन्सेप्चुअल डेटा मॉडल में कैसे बदलूँ?

बोर्ड पर हमारे पास संज्ञाएँ हैं। अब मैं बॉक्स के बीच की रेखाओं के बारे में जानना चाहता हूँ, क्योंकि एंटिटी का ढेर अभी असल में डेटा मॉडल नहीं है। अर्थ का बड़ा हिस्सा संबंधों में ही रहता है। एक रिटेल पार्टनर (Retail Partner) डिस्ट्रिब्यूशन सेंटर चलाता है। एक मैनिफ़ेस्ट (Manifest) में डिलीवरी की सूची होती है। एक डिलीवरी किसी प्राप्तकर्ता (Recipient) के पास जाती है। एक क्रू (Crew) एक ट्रक चलाता है। इनमें से हर बात मुझे बिज़नेस के बारे में कुछ बताती है, और हर बात मुझे पूछने के लिए एक और सवाल देती है।

बिज़नेस की भाषा से शुरू करें

Section titled “बिज़नेस की भाषा से शुरू करें ”

मैं अब भी Salesforce की बात नहीं करना चाहता। मैं यह नहीं पूछ रहा कि यह lookup संबंध होना चाहिए या master-detail संबंध, न Salesforce Junction Object के बारे में सोच रहा हूँ, न यह तय कर रहा हूँ कि पैरेंट रिकॉर्ड डिलीट होने पर क्या होगा। मैं बिज़नेस के संबंध को समझने की कोशिश कर रहा हूँ।

लीजिए “एक रिटेल पार्टनर डिस्ट्रिब्यूशन सेंटर चलाता है।” सुनने में आसान लगता है। लेकिन क्या एक रिटेल पार्टनर के पास एक DC हो सकता है या कई? Steve Trucking में हर रिटेल पार्टनर उन सभी क्षेत्रों में एक क्षेत्रीय डिस्ट्रिब्यूशन सेंटर चलाता है जहाँ Steve Trucking सेवा देती है, तो कई। क्या एक DC एक से ज़्यादा रिटेल पार्टनर का हो सकता है? क्या DC का अपना कोई महत्व है, अपने स्टाफ़ और इतिहास के साथ, या वह बस एक पता है? अगर कोई रिटेल पार्टनर चला जाए, तो क्या हमें उसके DC की परवाह फिर भी है?

ये Salesforce के सवाल नहीं हैं। ये बिज़नेस के सवाल हैं, और इनके जवाब मॉडल को पूरी तरह बदल सकते हैं।

रेखाओं को पढ़ें

Section titled “रेखाओं को पढ़ें ”

आगे बढ़ने से पहले मैं आपको वह भाषा देना चाहता हूँ जो हम यहाँ से हर डायग्राम पर इस्तेमाल करेंगे। यह छोटी-सी भाषा है। दो बॉक्स के बीच की रेखा कहती है कि दोनों चीज़ें आपस में जुड़ी हैं, और उसके सिरों पर बने निशान बताते हैं कितने।

एक सादी रेखा से शुरू करें, बिना किसी निशान के। व्हाइटबोर्ड पर मैं यहीं से शुरू करता हूँ: मुझे पता है कि ये दो संज्ञाएँ जुड़ी हैं, बस अभी पूछा नहीं कि कैसे। फिर सिरों पर निशान आते हैं। रेखा के आर-पार एक छोटी खड़ी लकीर, यानी क्रॉस, का मतलब है एक। क्रोज़ फ़ुट (crow’s foot), वह सिरा जो चिड़िया के पंजे की तरह तीन में बँट जाता है, उसका मतलब है कई। इसी मॉड्यूल में आगे आप पहले निशान के पास एक दूसरा निशान देखेंगे, एक लकीर या एक गोला, और वह एक अलग सवाल का जवाब देता है: क्या एक भी न हो, ऐसा हो सकता है?

याद रखने लायक एक ही नियम: हर निशान को उसी बॉक्स पर पढ़ें जिसे वह छूता है। बॉक्स के सबसे पास वाला निशान बताता है कि ज़्यादा से ज़्यादा कितने हो सकते हैं; उसके बाद वाला निशान बताता है कि कम से कम कितने।

रेखाओं को पढ़ना कोर्स की डायग्राम भाषा की कुंजी। बिना निशान वाली सादी रेखा का मतलब है कि दो चीज़ें जुड़ी हैं, लेकिन कितनी, यह अभी तय नहीं। सिरे पर एक लकीर का मतलब एक; क्रोज़ फ़ुट का मतलब कई। वैकल्पिकता के दूसरे निशान के साथ: दो लकीरों का मतलब ठीक एक; एक गोला और एक लकीर का मतलब शून्य या एक; एक लकीर और क्रोज़ फ़ुट का मतलब एक या कई; एक गोला और क्रोज़ फ़ुट का मतलब शून्य या कई। हर निशान उस बॉक्स पर पढ़ा जाता है जिसे वह छूता है। शुरुआत: एक सादी रेखा एक सादी रेखा ये दोनों जुड़े हैं; कितने, यह अभी तय नहीं फिर: एक या कई एक एक लकीर (क्रॉस): जिस बॉक्स को छूती है, उसका एक कई क्रोज़ फ़ुट: जिस बॉक्स को छूता है, उसके कई फिर: क्या शून्य हो सकता है? ठीक एक दो लकीरें: कम से कम एक, ज़्यादा से ज़्यादा एक शून्य या एक एक गोला, फिर एक लकीर: शायद अभी मौजूद न हो एक या कई एक लकीर, फिर क्रोज़ फ़ुट: कम से कम एक शून्य या कई एक गोला, फिर क्रोज़ फ़ुट: एक भी न हो तो ठीक हर सिरे को उस बॉक्स पर पढ़ें जिसे वह छूता है: बॉक्स के सबसे पास वाला निशान ज़्यादा से ज़्यादा है; उसके बाद वाला निशान कम से कम। © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

बैठो, रुको, मॉडल करो

Section titled “बैठो, रुको, मॉडल करो ”

Steve Trucking से पहले, मॉड्यूल 1 के कुत्तों पर वापस चलते हैं। हमारे पास पाँच बॉक्स थे: मालिक (Owner), ब्रीडर (Breeder), कुत्ता (Dog), नस्ल (Breed) और करतब (Trick)। अब मैं उनके बीच की रेखाओं के बारे में पूछता हूँ।

एक या कई? एक मालिक के पास एक से ज़्यादा कुत्ते हो सकते हैं; Ana के पास दो हैं। एक कुत्ते का एक मालिक होता है, कम से कम हमारे मॉडल में। यह one-to-many है: मालिक की तरफ़ एक लकीर, कुत्ते की तरफ़ क्रोज़ फ़ुट। ब्रीडर का आकार भी यही है: एक ब्रीडर कई कुत्ते ब्रीड करता है।

क्या एक भी न हो, ऐसा हो सकता है? Max आश्रय-घर (pound) से आया था, तो उसका कोई ब्रीडर है ही नहीं। ब्रीडर वाले सिरे पर गोला आता है: एक कुत्ते का शून्य या एक ब्रीडर होता है। लेकिन हर कुत्ते का एक मालिक ज़रूर होता है, इसलिए उस सिरे पर दूसरी लकीर आती है: ठीक एक।

कई से कई? एक कुत्ता कई करतब जानता है, और एक करतब, मान लीजिए बैठो, कई कुत्ते जानते हैं। यह many-to-many है, और ठीक यहीं मैं किसी छिपी अवधारणा को ढूँढने जाता हूँ। क्या इस कुत्ते के इस करतब को जानने के बारे में कुछ है? वह उसे कितनी अच्छी तरह करता है, और उसने कब सीखा। इस संबंध के अपने तथ्य हैं, इसलिए यह अपने आप में एक चीज़ बन जाता है: कुत्ते का करतब (Dog Trick), जिसमें कुत्ते का नाम पहले है, क्योंकि उसे चलाने वाला कुत्ता ही है।

हर रेखा का मतलब क्या है? मालिक कुत्ते का मालिक है। ब्रीडर उसे ब्रीड करता है। कुत्ता अपने करतब जानता है। रेखाओं को नाम दें, और कोई भी मॉडल को आपको वापस पढ़कर सुना सकता है।

अभी, या समय के साथ? क्या किसी को परवाह है कि Bella आज बैठो में कितनी अच्छी है, या वह वहाँ तक कैसे पहुँची? अगर कोई ट्रेनर हर कुछ महीनों में उसे जाँचता है, तो हर जाँच अपना एक रिकॉर्ड है: करतब का मूल्यांकन (Trick Assessment), तारीख, कौशल-स्तर और जाँचने वाले के नाम के साथ, उस कुत्ते के करतब के नीचे जिसका वह हिस्सा है। जो संबंध एक चीज़ बन गया, उसका भी अपना इतिहास हो सकता है।

नस्ल को मैं अभी किसी से नहीं जोड़ रहा। यह अब भी मॉड्यूल 1 वाला सवाल है, अपना अलग बॉक्स या कुत्ते पर लिखा एक शब्द, और मॉड्यूल 4 इसे तय करता है।

संबंधों के साथ कुत्ते का मॉडल सात बॉक्स। एक मालिक के एक या कई कुत्ते हैं, और हर कुत्ते का ठीक एक मालिक है। एक ब्रीडर एक या कई कुत्ते ब्रीड करता है, और एक कुत्ते का शून्य या एक ब्रीडर है। एक कुत्ता शून्य या कई कुत्ते के करतब जानता है, और एक करतब शून्य या कई कुत्ते के करतब में शामिल है; हर कुत्ते का करतब एक कुत्ता और एक करतब है। हर कुत्ते का करतब शून्य या कई करतब के मूल्यांकन में जाँचा जाता है। नस्ल अकेली है, अभी जुड़ी नहीं। रखता है ब्रीड करता है जानता है में शामिल है में जाँचा जाता है मालिक ब्रीडर कुत्ता नस्ल कुत्ते का करतब करतब करतब का मूल्यांकन ठीक एक शून्य या एक एक या कई शून्य या कई © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

इनमें से हर सवाल असली बिज़नेस पर भी ठीक इसी तरह काम करता है। अब ये सवाल Steve Trucking से पूछते हैं।

पूछें “एक या कई?”

Section titled “पूछें “एक या कई?” ”

किसी संबंध के बारे में सबसे पहले मैं उसकी कार्डिनैलिटी (cardinality) समझना चाहता हूँ। यह डेटाबेस का शब्द है; सवाल इससे कहीं आसान है: इनमें से कितने, उनमें से कितनों से जुड़ सकते हैं? कॉन्सेप्चुअल (अवधारणात्मक) स्तर पर तीन बुनियादी पैटर्न हैं।

प्रक्रिया का यह एक अहम कदम है: दो अलग संज्ञाएँ लें और उनका संबंध समझें। ज़्यादातर मामलों में यह one-to-many या many-to-one होता है। one-to-one से आपका सामना बहुत कम ही होगा।

One-to-many हर जगह है। एक रिटेल पार्टनर के कई डिस्ट्रिब्यूशन सेंटर हैं। एक मैनिफ़ेस्ट में कई डिलीवरी हैं। एक रूट में लगभग दस स्टॉप होते हैं। जब मैं ऐसी भाषा सुनता हूँ, तो रेखा खींचना शुरू कर देता हूँ।

और अब रेखा पर निशान आते हैं। हर सिरा बताता है कि जिस बॉक्स को वह छूता है, वह कितना है: एक के लिए लकीर, कई के लिए क्रोज़ फ़ुट। इसे हर बॉक्स से पढ़ें: एक रिटेल पार्टनर के कई डिस्ट्रिब्यूशन सेंटर हैं।

बुनियादी कनेक्टर, एक से कई बॉक्स के दो जोड़े, हर जोड़ा बुनियादी क्रोज़ फ़ुट (crow’s foot) संकेतन वाली एक रेखा से जुड़ा। एक रिटेल पार्टनर कई डिस्ट्रिब्यूशन सेंटर चलाता है: रिटेल पार्टनर वाले सिरे पर एक लकीर, डिस्ट्रिब्यूशन सेंटर वाले सिरे पर क्रोज़ फ़ुट। एक मैनिफ़ेस्ट में कई डिलीवरी दर्ज होती हैं, और उस पर भी यही निशान हैं। हर सिरे का कैप्शन शब्दों में लिखा है। एक रिटेल पार्टनर कई डिस्ट्रिब्यूशन सेंटर चलाता है एक मैनिफ़ेस्ट कई डिलीवरी दर्ज करता है रिटेल पार्टनर डिस्ट्रिब्यूशन सेंटर मैनिफ़ेस्ट डिलीवरी एक लकीर का मतलब एक। क्रोज़ फ़ुट का मतलब कई। हर सिरे को उस बॉक्स से पढ़ें जिसे वह छूता है। © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

One-to-one संबंध होते हैं, लेकिन कम, और जब मुझे कोई मिलता है तो मैं कुछ सवाल पूछता हूँ। क्या ये सच में दो अलग संज्ञाएँ हैं, या एक ही? अगर अलग हैं, तो उनके बीच one-to-one संबंध क्या है? और क्या यह हमेशा one-to-one रहेगा, या सिर्फ़ अभी one-to-one है? डेटा मॉडल डिज़ाइन करने में ये अहम सवाल हैं। किसी भी सुबह एक क्रू और एक ट्रक one-to-one दिखते हैं: दो लोग, एक ट्रक, एक रूट। एक महीने में देखें तो नहीं, और इस मॉडल का सबसे दिलचस्प संबंध वहीं छिपा है।

Many-to-many संबंध ख़ास तौर पर दिलचस्प होते हैं, क्योंकि वे अक्सर बताते हैं कि बिज़नेस में कोई और अवधारणा है। क्या एक क्रू समय के साथ एक से ज़्यादा ट्रक चला सकता है? हाँ। क्या एक ट्रक को एक से ज़्यादा क्रू चला सकते हैं? उसकी पूरी ज़िंदगी में, बिल्कुल। तो क्रू और ट्रक के बीच many-to-many संबंध है। लेकिन अब मैं और जानना चाहता हूँ। क्या बिज़नेस को परवाह है कि किसी क्रू के पास ट्रक कब था? किस रूट के लिए, किस दिन? असाइनमेंट किसने किया? अगर संबंध ख़ुद ऐसी जानकारी रखता है जिसकी हमें परवाह है, तो हमने बिज़नेस की एक और अवधारणा खोज ली है: क्रू असाइनमेंट (Crew Assignment)।

यह मॉडलिंग की एक अहम आदत है। कभी-कभी सबसे दिलचस्प चीज़ वह संज्ञा नहीं होती जो हमने पहले सुनी। वह दो संज्ञाओं के बीच के संबंध में छिपी होती है।

संबंध भी चीज़ें बन सकते हैं

Section titled “संबंध भी चीज़ें बन सकते हैं ”

यह उन जगहों में से है जहाँ मैं चाहता हूँ कि एडमिन अलग तरह से सोचना शुरू करें। Salesforce में हम ऑब्जेक्ट और फ़ील्ड की बात करने के आदी हैं, इसलिए बॉक्स को ज़रूरी हिस्सा और रेखाओं को बस पाइपलाइन मान लेना आसान है। लेकिन संबंध का अपना बिज़नेस अर्थ हो सकता है।

एक डिलीवरी और उस पर रखे प्रोडक्ट को लीजिए। एक डिलीवरी में कई प्रोडक्ट हो सकते हैं, जैसे एक वॉशर और एक ड्रायर। एक प्रोडक्ट, यानी फ़्रिज का एक ही मॉडल, हज़ारों डिलीवरी में आता है। यहाँ तक आसान है। लेकिन अगर मुझे जानना हो कि इस डिलीवरी पर वह प्रोडक्ट कितनी संख्या में है, उसे इंस्टॉल किया जा रहा है या नहीं, या पुराना सामान उठाकर ले जाया जा रहा है या नहीं? तब मेरी दिलचस्पी सिर्फ़ Delivery और Product के बीच के संबंध में नहीं रहती। मेरी दिलचस्पी एक डिलीवरी आइटम (Delivery Item) में है, और वह अवधारणा अपनी अलग एंटिटी की हक़दार है।

अगर आप Salesforce की दुनिया से आ रहे हैं, तो शायद आप सोच रहे होंगे, “यह तो जंक्शन ऑब्जेक्ट (junction object) है।” आप ग़लत नहीं हैं। लेकिन मैं वहाँ से शुरू नहीं करना चाहता। डिलीवरी आइटम पहले एक बिज़नेस अवधारणा है, Salesforce Junction Object बाद में। पहले बिज़नेस, फिर इम्प्लीमेंटेशन।

इन संबंध-एंटिटी के लिए मेरी कुछ आदतें, चाहे आख़िर में वे कहीं भी बनाई जाएँ।

इसे नाम दें। अगर बिज़नेस के पास इसके लिए पहले से कोई शब्द है, तो उन्हीं का शब्द लें। अगर नहीं है, तो दोनों पैरेंट के नाम लेकर उन्हें जोड़ दें। एक ऑर्डर और एक प्रोडक्ट के बारे में सोचें। उनके बीच की चीज़ है Order Item: ऑर्डर, और ऑर्डर पर रखा आइटम। यह दोनों पैरेंट का चाइल्ड है, और Salesforce में यह आख़िर में Salesforce Junction Object बन सकता है। लेकिन कौन-सा नाम पहले आए: Item Order या Order Item? देखें कि हर पैरेंट किस तरह का डेटा है। प्रोडक्ट रेफ़रेंस डेटा है; ऑर्डर ट्रांज़ैक्शनल है, और उसे चलाने वाला ऑर्डर ही है। तो यह Order Item है, या Order Product, ठीक वैसे ही जैसे Salesforce में Opportunity Product है। Steve Trucking में यह डिलीवरी आइटम (Delivery Item) है। चलाने वाला नाम पहले आता है, और फिर आप जो भी सूची देखेंगे, उसमें रिकॉर्ड अपने मालिक के बगल में ही आएगा।

इसे अपनी अलग की दें। यह कहने का मन होता है कि डिलीवरी आइटम का ID Delivery और Product से मिलकर बनता है, और वहीं रुक जाएँ। वह कंपाउंड की (compound key) है, और कंपाउंड की से निपटना कहीं ज़्यादा मुश्किल है: रिकॉर्ड की ओर इशारा करने वाले हर सिस्टम को दोनों हिस्से साथ रखने पड़ते हैं। संबंध-एंटिटी को उसका अपना ID दें, और Delivery और Product के मेल को यूनिक होने के नियम की तरह रखें, रिकॉर्ड ID की तरह नहीं।

दो पैरेंट, एक चाइल्ड: उसे अपनी की दें दो पैरेंट और एक चाइल्ड। एक डिलीवरी (रिकॉर्ड ID Delivery ID; डिलीवरी की तारीख़, स्टेटस) में कई डिलीवरी आइटम होते हैं। एक प्रोडक्ट (रिकॉर्ड ID Product ID; नाम, मॉडल नंबर) कई डिलीवरी आइटम में आता है। डिलीवरी आइटम इनके बीच है: उसका अपना रिकॉर्ड ID, Delivery Item ID, है, और उसमें उसके दोनों पैरेंट के Delivery ID और Product ID, और मात्रा है। नीचे एक नोट: Delivery ID और Product ID का मेल यूनिक होने का एक नियम है, रिकॉर्ड ID नहीं। ट्रांज़ैक्शनल डेटा रेफ़रेंस डेटा में शामिल में आता है डिलीवरी Delivery ID रिकॉर्ड ID डिलीवरी की तारीख़ स्टेटस डिलीवरी आइटम Delivery Item ID रिकॉर्ड ID Delivery ID Product ID मात्रा प्रोडक्ट Product ID रिकॉर्ड ID नाम मॉडल नंबर Delivery ID + Product ID: यूनिक होने का एक नियम, रिकॉर्ड ID नहीं। एक कई © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

ध्यान दें कि इस पर क्या नहीं है: सीरियल नंबर। मात्रा और सीरियल नंबर एक ही रिकॉर्ड पर नहीं रहते। मात्रा किसी चीज़ के कई नग गिनती है; सीरियल नंबर एक ख़ास चीज़ को पहचानता है। अगर बिज़नेस को सीरियल नंबर चाहिए, तो हर नग अपना अलग रिकॉर्ड बन जाता है, और पाँच फ़्रिज पाँच रिकॉर्ड हैं। मुझे ऐसा कोई मामला नहीं दिखता जहाँ डिलीवरी आइटम के नीचे एक Delivery Item Detail हो। या तो एक, या दूसरा: मात्रा वाला एक कुल-जोड़, या हर नग का एक रिकॉर्ड। यहाँ, मात्रा।

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

संबंधों का अर्थ कार्डिनैलिटी से आगे है

Section titled “संबंधों का अर्थ कार्डिनैलिटी से आगे है ”

किसी संबंध को समझने के लिए “one-to-many” काफ़ी नहीं है। मैं यह भी जानना चाहता हूँ कि संबंध का मतलब क्या है।

एक डिलीवरी की एक लोकेशन होती है। कौन-सी? वह डिस्ट्रिब्यूशन सेंटर जहाँ से वह निकलती है? प्राप्तकर्ता का घर जहाँ वह जाती है? ये एक-दूसरे की जगह नहीं ले सकते। दो मॉडल में बिल्कुल वही बॉक्स और वही कार्डिनैलिटी हो सकती है, और रेखाओं के मतलब पूरी तरह अलग हो सकते हैं। इसीलिए अच्छा मॉडल सिर्फ़ रेखाओं से जुड़े बॉक्स नहीं होता। रेखाओं को नाम चाहिए। अगर मैं अपना डायग्राम किसी दूसरे आर्किटेक्ट को दूँ, तो उन्हें अंदाज़ा न लगाना पड़े कि कोई संबंध क्या कहता है, और अगर मैं उसे बिज़नेस को दिखा रहा हूँ, तो उसमें वही भाषा हो जिसे वे पहचानते हैं।

रेखाओं को नाम चाहिए दो पैनल, हर एक में एक डिलीवरी बॉक्स के ऊपर एक लोकेशन बॉक्स, जो दो रेखाओं से जुड़े हैं; हर रेखा पर एक लोकेशन से कई डिलीवरी का निशान है। बाएँ पैनल, “रेखाओं पर कोई नाम नहीं”, में दोनों रेखाओं पर कोई लेबल नहीं और वे एक जैसी दिखती हैं। दाएँ पैनल, “नाम वाली रेखाएँ”, में एक रेखा का नाम “यहाँ से निकलती है” और दूसरी का “यहाँ पहुँचाई जाती है” है। वही बॉक्स, वही कार्डिनैलिटी: सिर्फ़ नाम बताते हैं कि कौन-सी रेखा कौन-सी है। रेखाओं पर कोई नाम नहीं नाम वाली रेखाएँ यहाँ से निकलती है यहाँ पहुँचाई जाती है लोकेशन डिलीवरी लोकेशन डिलीवरी वही बॉक्स, वही कार्डिनैलिटी। सिर्फ़ नाम बताते हैं कि कौन-सी रेखा कौन-सी है। © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

वैकल्पिकता भी मायने रखती है

Section titled “वैकल्पिकता भी मायने रखती है ”

“कितने?” के भीतर एक और सवाल छिपा है: क्या संबंध ज़रूरी है? क्या कोई डिलीवरी रूट पर डाले जाने से पहले मौजूद हो सकती है? उसे होना ही पड़ता है: मैनिफ़ेस्ट डिलीवरी से एक-दो दिन पहले आता है, और रूट पिछली शाम को तय होते हैं। क्या कोई डिलीवरी बिना रिटेल पार्टनर के मौजूद हो सकती है? नहीं; हर डिलीवरी किसी पार्टनर के मैनिफ़ेस्ट से आती है। यही है वैकल्पिकता (optionality)।

फिर से, सीधे Salesforce के Required (अनिवार्य) चेकबॉक्स पर न कूदें। “हर डिलीवरी का एक रिटेल पार्टनर होना ही चाहिए” कहने और “रिकॉर्ड बनाते समय Salesforce को रिटेल पार्टनर फ़ील्ड अनिवार्य करना चाहिए” कहने में फ़र्क है। हो सकता है दोनों का इम्प्लीमेंटेशन आख़िर में एक ही हो, लेकिन ये एक ही बात नहीं हैं। पहला बिज़नेस का नियम है; दूसरा उसे लागू करने का एक तरीका है। आर्किटेक्ट के तौर पर हम दूसरा तय करने से पहले पहला समझना चाहते हैं।

डायग्राम पर वैकल्पिकता हर सिरे का दूसरा निशान है। बॉक्स के सबसे पास वाला निशान बताता है कि ज़्यादा से ज़्यादा कितने हो सकते हैं: एक के लिए लकीर, कई के लिए क्रोज़ फ़ुट। उसके बाद वाला निशान बताता है कम से कम कितने: एक और लकीर का मतलब कम से कम एक, गोले का मतलब शून्य भी हो सकता है। तो हर डिलीवरी ठीक एक मैनिफ़ेस्ट पर है, और एक मैनिफ़ेस्ट में एक या कई डिलीवरी हैं। एक डिलीवरी शून्य या एक स्टॉप पर है, रूट बनने तक किसी पर नहीं, और एक स्टॉप पर शून्य या कई डिलीवरी उतरती हैं।

हर सिरे के दोनों निशान पढ़ना एक पंक्ति में तीन बॉक्स: मैनिफ़ेस्ट, डिलीवरी, स्टॉप। एक मैनिफ़ेस्ट में एक या कई डिलीवरी दर्ज होती हैं, और हर डिलीवरी ठीक एक मैनिफ़ेस्ट पर है: मैनिफ़ेस्ट वाले सिरे पर दो लकीरें, डिलीवरी वाले सिरे पर क्रोज़ फ़ुट और एक लकीर। एक स्टॉप पर शून्य या कई डिलीवरी उतरती हैं, और हर डिलीवरी शून्य या एक स्टॉप पर है: डिलीवरी वाले सिरे पर एक गोला और क्रोज़ फ़ुट, स्टॉप वाले सिरे पर एक गोला और एक लकीर। बॉक्स के सबसे पास वाला निशान ज़्यादा से ज़्यादा है; उसके बाद वाला निशान कम से कम। ठीक एक मैनिफ़ेस्ट एक या कई डिलीवरी दर्ज करता है शून्य या एक स्टॉप शून्य या कई डिलीवरी पर उतरती है मैनिफ़ेस्ट डिलीवरी स्टॉप बॉक्स के सबसे पास: ज़्यादा से ज़्यादा (एक, या कई)। उसके बाद वाला निशान: कम से कम (लकीर यानी कम से कम एक, गोला यानी शून्य)। © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

समय संबंधों को बदल देता है

Section titled “समय संबंधों को बदल देता है ”

यह सवाल मैं बहुत पूछता हूँ: आपका मतलब अभी से है, या समय के साथ से?

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

क्रू असाइनमेंट: किस क्रू के पास कौन-सा ट्रक दो पैरेंट और एक चाइल्ड। एक क्रू (रिकॉर्ड ID Crew ID; नाम, स्टेटस) कई क्रू असाइनमेंट निभाता है। एक ट्रक (रिकॉर्ड ID Truck ID, जो अपने यूनिट नंबर से भी जाना जाता है; मेक, मॉडल, स्टेटस) कई क्रू असाइनमेंट में इस्तेमाल होता है। हर क्रू असाइनमेंट का अपना रिकॉर्ड ID है और उसमें Crew ID और Truck ID हैं, कोई तारीख़ नहीं। नीचे एक नोट: किस क्रू के पास कौन-सा ट्रक है, लेकिन कब से, यह नहीं। निभाता है में इस्तेमाल होता है क्रू Crew ID रिकॉर्ड ID नाम स्टेटस क्रू असाइनमेंट Crew Assignment ID रिकॉर्ड ID Crew ID Truck ID ट्रक Truck ID रिकॉर्ड ID यूनिट नंबर दूसरा नाम मेक मॉडल स्टेटस किस क्रू के पास कौन-सा ट्रक है, लेकिन कब से, यह नहीं। एक कई © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

मॉडलिंग की ग़लतियों का यह एक आम स्रोत है। हम मौजूदा स्थिति का मॉडल बनाते हैं क्योंकि स्क्रीन पर वही दिखता है। फिर, हफ़्तों बाद, कोई रिटेल पार्टनर नुकसान का क्लेम दर्ज करता है और कोई पूछता है, “17 मार्च को ट्रक 117 किस क्रू के पास था?” और हमें पता चलता है कि हर बार असाइनमेंट बदलने पर हम उस जवाब को मिटाकर ऊपर लिखते रहे हैं।

वह इतिहास रखने का एक तरीका है असाइनमेंट को उसका अपना रिकॉर्ड बना देना। जब किसी क्रू को असाइन किया जाता है, तो हम शुरुआत की तारीख़ के साथ एक क्रू असाइनमेंट बनाते हैं। जब असाइनमेंट बदलता है, तो पुराने रिकॉर्ड पर अंत की तारीख़ डालते हैं और अपनी शुरुआत की तारीख़ के साथ एक नया रिकॉर्ड बनाते हैं। अब “छह महीने पहले वह असाइनमेंट किसके पास था?” का जवाब देना आसान है, फ़ील्ड हिस्ट्री या डेटा बदलावों के लॉग में खुदाई करने की ज़रूरत नहीं। और जब किसी क्रू के कई असाइनमेंट हो चुके हों, तो कोई न कोई पूछेगा कि मौजूदा कौन-सा है, इसलिए मैं एक Active फ़्लैग भी जोड़ूँगा।

समय के साथ क्रू असाइनमेंट: तारीख़ें और Active फ़्लैग दो पैरेंट और एक चाइल्ड, तारीख़ों के साथ। एक क्रू (रिकॉर्ड ID Crew ID; नाम, स्टेटस) कई क्रू असाइनमेंट निभाता है। एक ट्रक (रिकॉर्ड ID Truck ID, जो अपने यूनिट नंबर से भी जाना जाता है; मेक, मॉडल, स्टेटस) कई क्रू असाइनमेंट में इस्तेमाल होता है। हर क्रू असाइनमेंट का अपना रिकॉर्ड ID है और उसमें Crew ID, Truck ID, शुरुआत की तारीख़, अंत की तारीख़ और एक Active फ़्लैग है। नीचे एक नोट: हर बदलाव एक असाइनमेंट ख़त्म करके अगला शुरू करता है, और Active मौजूदा वाले को चिह्नित करता है। निभाता है में इस्तेमाल होता है क्रू Crew ID रिकॉर्ड ID नाम स्टेटस क्रू असाइनमेंट Crew Assignment ID रिकॉर्ड ID Crew ID Truck ID शुरुआत की तारीख़ अंत की तारीख़ Active ट्रक Truck ID रिकॉर्ड ID यूनिट नंबर दूसरा नाम मेक मॉडल स्टेटस हर बदलाव एक असाइनमेंट ख़त्म करके अगला शुरू करता है। Active मौजूदा वाले को चिह्नित करता है। एक कई © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

इसलिए जब कोई मुझे किसी संबंध के बारे में बताता है, तो मैं सिर्फ़ यह नहीं पूछता कि चीज़ें कैसे जुड़ी हैं। मैं पूछता हूँ: क्या वह संबंध बदलता है, और क्या हमें उसके इतिहास की परवाह है?

कॉन्फ़िगर करने से पहले खींचें

Section titled “कॉन्फ़िगर करने से पहले खींचें ”

हमारा Steve Trucking मॉडल काम का बनता जा रहा है। हमें पता है कि कौन-से संबंध one-to-many हैं, कहाँ एक many-to-many किसी और अवधारणा को छिपाए हुए है, कौन-से संबंध वैकल्पिक हैं, और कौन-से समय के साथ बदलते हैं। और हमने अब तक एक भी Salesforce ऑब्जेक्ट नहीं बनाया। यह जानबूझकर है।

मॉड्यूल 1 और 2 के बाद कॉन्सेप्चुअल मॉडल Steve Trucking का कॉन्सेप्चुअल मॉडल, ग्राहक डेटा, ट्रांज़ैक्शनल डेटा और रेफ़रेंस डेटा के समूहों में। एक रिटेल पार्टनर मैनिफ़ेस्ट भेजता है जिनमें डिलीवरी दर्ज होती हैं, और डिस्ट्रिब्यूशन सेंटर चलाता है। हर डिलीवरी एक डिस्ट्रिब्यूशन सेंटर से निकलती है, एक प्राप्तकर्ता के पास जाती है और उसमें डिलीवरी आइटम होते हैं। रूट में स्टॉप होते हैं जिन पर डिलीवरी उतरती हैं। एक क्रू असाइनमेंट एक क्रू और एक ट्रक को एक रूट से जोड़ता है, ताकि मॉडल याद रखे कि किसने कौन-सा ट्रक कब चलाया। ग्राहक डेटा ट्रांज़ैक्शनल डेटा रेफ़रेंस डेटा चलाता है भेजता है दर्ज करता है में शामिल यहाँ से निकलती है यहाँ पहुँचाई जाती है में होते हैं पर उतरती है चलाता है निभाता है में इस्तेमाल होता है रिटेल पार्टनर जिस रिटेलर के लिए हम डिलीवर करते हैं प्राप्तकर्ता जिसे डिलीवरी मिलती है मैनिफ़ेस्ट पार्टनर की डिलीवरी सूची डिलीवरी एक प्राप्तकर्ता को एक ऑर्डर डिलीवरी आइटम ट्रक पर लदा सामान रूट एक दिन के स्टॉप का चक्कर स्टॉप रूट पर एक पता क्रू असाइनमेंट किसने कौन-सा ट्रक कब चलाया डिस्ट्रिब्यूशन सेंटर जहाँ से डिलीवरी निकलती हैं क्रू दो लोग ट्रक वाहन ठीक एक शून्य या एक एक या कई शून्य या कई © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

यह डायग्राम ऐसा होना चाहिए जिसे मैं बिज़नेस के सामने रख सकूँ, और उन्हें यह बताने के लिए कि यह सही है या नहीं, Salesforce जानने की ज़रूरत न पड़े। अगर Salesforce की शब्दावली से भरा होने की वजह से वे इसे जाँच नहीं पाते, तो मैं बहुत जल्दी फ़िज़िकल डिज़ाइन में चला गया हूँ।

आर्किटेक्ट यहाँ क्या तय करता है

Section titled “आर्किटेक्ट यहाँ क्या तय करता है ”

कॉन्सेप्चुअल मॉडल में संबंधों पर काम करते हुए मैं यह तय कर रहा होता हूँ:

  • बिज़नेस की मुख्य एंटिटी एक-दूसरे से कैसे जुड़ी हैं।
  • हर संबंध one-to-one, one-to-many या many-to-many है, अभी और समय के साथ।
  • हर संबंध अनिवार्य है या वैकल्पिक।
  • क्या कोई many-to-many संबंध किसी अर्थपूर्ण बिज़नेस अवधारणा को छिपाए हुए है।
  • क्या संबंध समय के साथ बदलता है, और क्या हमें उसका इतिहास चाहिए।

Lookup या master-detail, जंक्शन कॉन्फ़िगरेशन, कैस्केड का व्यवहार और शेयरिंग फ़िज़िकल फ़ैसले हैं; हम वहाँ पहुँचेंगे। अभी हम उससे ज़्यादा अहम सवाल का जवाब दे रहे हैं: यह बिज़नेस असल में चलता कैसे है? एक बार जब हम एंटिटी और उनके बीच के संबंध समझ लेते हैं, तो उनका वर्णन करने वाले ब्योरे जोड़ना शुरू कर सकते हैं। तभी हमारा कॉन्सेप्चुअल मॉडल एक लॉजिकल (तार्किक) डेटा मॉडल बनने लगता है।