एक एंटिटी रिलेशनशिप डायग्राम (ईआरडी) क्या है?
एक एंटिटी रिलेशनशिप डायग्राम (ईआरडी) एक संरचनात्मक ब्लूप्रिंट है जिसका उपयोग रिलेशनल डेटाबेस स्कीमा के डिज़ाइन, दस्तावेज़ीकरण और विश्लेषण के लिए किया जाता है। यह एक एप्लिकेशन के भीतर विशिष्ट डेटा टेबल (एंटिटी) को, उन टेबलों के भीतर निर्मित कॉलम (गुण) को और उन्हें एक साथ बांधने वाले रेफरेंशियल इंटीग्रिटी नियमों को चिह्नित करता है। मानक इनफॉर्मेशन इंजीनियरिंग (आईई) नोटेशन, इसमें स्पष्ट क्राउ के फुट नोटेशन सिरों का उपयोग डेटा सीमाओं और मल्टी-टेबल निर्भरता को दिखाने के लिए किया जाता है।
साथ में मेरमाइड.जीएस, आप एक साफ, डिक्लेरेटिव टेक्स्ट ब्लॉक का उपयोग करके अपने प्रोडक्शन टेबल इंडेक्स, डेटा प्रकार और फॉरेन की कनेक्शन को परिभाषित कर सकते हैं। इंजन बहु-कॉलम लेआउट कंटेनर के लिए साइज़िंग को स्वचालित रूप से संभालता है और टेक्स्ट लेबल के ओवरलैप होने के बिना कनेक्शन लाइन को रूट करता है।
कोर सिंटैक्स गाइड: तत्व और निर्माण
मेरमाइड में एक वैध, पूरी तरह से चलने वाला डेटाबेस स्कीमा बनाने के लिए संरचनात्मक एंटिटी ब्लॉक, डेटा प्रकार मैपिंग, इंडेक्स टैग और कार्डिनैलिटी ऑपरेटर पर निर्भरता होती है।
1. एंटिटी और टेबल कॉलम की घोषणा
आप पहली पंक्ति पर ईआरडीआयाम कीवर्ड का उपयोग करके ईआरडी कैनवास को इनिशियलाइज़ करते हैं। एक टेबल को परिभाषित करने के लिए, एंटिटी के नाम के बाद एक खुला कर्ली ब्रेस लिखें, और अलग-अलग पंक्तियों पर अपने कॉलम कॉन्फ़िगरेशन को क्रमानुसार सूचीबद्ध करें:
ईआरडीआयाम
यूज़र्स {
इंट आईडी
स्ट्रिंग ईमेल
टाइमस्टैम्प क्रिएटेड_एट
} 
2. प्राइमरी की, फॉरेन की और कमेंट्स को चिह्नित करना
मेरमाइड के ईआरडी इंजन आपको कॉलम के नाम और डेटा प्रकार परिभाषा के तुरंत बाद संरचनात्मक इंडेक्सिंग टैग निर्धारित करने की अनुमति देता है। आप दोहरे उद्धरणों में लपेटकर किसी कॉलम के लिए एक वैकल्पिक टेक्स्ट कमेंट भी जोड़ सकते हैं:
पीके— एक कॉलम को टेबल की प्राइमरी की के रूप में स्पष्ट रूप से चिह्नित करता है।एफके— एक कॉलम को एक मातृ टेबल से जुड़े फॉरेन की के रूप में चिह्नित करता है।
erDiagram
ORDERS {
int id PK
int user_id FK "USERS.id" से जुड़ता है"
string coupon_code
} 
3. क्राउ के पैर कार्डिनैलिटी संशोधकों को समझें
ताबलों को जोड़ने और संदर्भात्मक अखंडता नियमों को लागू करने के लिए, विशेष रेखा ऑपरेटरों का उपयोग करके उनके संबंधों को नक्शा बनाएं। अक्षरों के सिर दृश्य क्राउ के पैर के आकार बनाते हैं जो डेटा बहुलता सीमाओं को निर्धारित करते हैं:
||--||**बिल्कुल एक से बिल्कुल एक:** एक कठोर, अनिवार्य 1:1 मैपिंग।||--o|**बिल्कुल एक से शून्य या एक:** एक वैकल्पिक 1:1 निर्भरता।||--|{**बिल्कुल एक से एक या बहुत सारे:** एक अनिवार्य 1:N मातृक लिंक।||--o{**बिल्कुल एक से शून्य, एक या बहुत सारे:** एक मानक, वैकल्पिक 1:N संबंध।
erDiagram
USERS ||--o{ ORDERS : "स्थानों को रखता है" 
संबंधात्मक डेटा स्कीमा के लिए सर्वोत्तम प्रथाएं
- स्थिर ताबला केसिंग बनाए रखें: संस्था नामों को पूर्वानुमानित रखें। उच्चक्षर तार (उदाहरण के लिए,
USER_ACCOUNTS) या सख्त निचले केस स्नेक_केस (उदाहरण के लिए,user_accounts) अपने वास्तविक दुनिया के SQL इंफ्रास्ट्रक्चर कोड के अनुरूप रखें। - हमेशा डेटा प्रकार शामिल करें: प्रकार के बिना कच्चे कॉलम पाठ की घोषणा करने से बचें। जैसे परिभाषाओं को स्पष्ट रूप से सूचीबद्ध करें
int,varchar, याbooleanआपके आर्किटेक्चर चार्ट्स को एक सटीक तकनीकी संदर्भ के रूप में सेवा करने में सुनिश्चित करता है। - रिलेशनशिप लेबल्स को क्रिया रूप में रखें: तत्वों को जोड़ते समय, अपने रिलेशनशिप निर्देशन के भीतर एक संक्षिप्त, छोटे अक्षरों वाला सक्रिय क्रिया वाक्यांश प्रदान करें (उदाहरण के लिए,
||--o{ : "समावेश करता है") व्यापार तर्क मैपिंग को दस्तावेज़ीकृत करने के लिए।
वास्तविक दुनिया के मेरमाइड.जीएस ईआरडी उदाहरण
उदाहरण 1: मुख्य ई-कॉमर्स लेनदेन मॉडल (कीज़ और मैपिंग)
यह कार्यात्मक ब्लूप्रिंट एक मुख्य ई-कॉमर्स डेटाबेस लेनदेन लूप का मॉडल बनाता है, जो उपयोगकर्ताओं, आदेशों और भुगतान ट्रैकिंग प्रणालियों के बीच कैसे जुड़ते हैं, सख्त क्राउ के फुट प्रतिबंधों के उपयोग से दिखाता है।
erDiagram
CUSTOMERS {
int id PK
string email
string password_hash
}
ORDERS {
int id PK
int customer_id FK
decimal total_amount
string status
}
TRANSACTION_LEDGERS {
int id PK
int order_id FK
string reference_token
string gateway
}
CUSTOMERS ||--o{ ORDERS : "रखता है"
ORDERS ||--|| TRANSACTION_LEDGERS : "उत्पन्न करता है" 
सिंटैक्स विश्लेषण: यह स्कीमा लेनदेन सीमाओं को स्पष्ट रूप से मैप करता है। मैपिंग नियम निर्धारित करते हैं कि एक ग्राहक समय के साथ शून्य या बहुत सारे आदेश रख सकता है (||--o{), जबकि एक व्यक्तिगत आदेश रिकॉर्ड को बिल्कुल एक मेल खाने वाला लेनदेन लेजर प्रविष्टि उत्पन्न करनी चाहिए (||--||).
उदाहरण 2: एंटरप्राइज कंटेंट मैनेजमेंट सिस्टम स्कीमा (बहु-से-बहु अंतर्सेक्शन)
यह उन्नत डेटाबेस ब्लूप्रिंट कंटेंट मैनेजमेंट प्लेटफॉर्म आर्किटेक्चर को नक्शा बनाता है। यह एक स्पष्ट ब्रिज मैपिंग एंटिटी के परिचय द्वारा जटिल बहु-से-बहु कॉन्फ़िगरेशन को हल करने के तरीके का विवरण देता है।
erDiagram
POSTS {
int id PK
string title
string slug
text body_content
}
CATEGORIES {
int id PK
string name
string description
}
POST_CATEGORY_MAPPINGS {
int post_id PK, FK
int category_id PK, FK
timestamp assigned_at
}
COMMENTS {
int id PK
int post_id FK
string author_name
text comment_body
}
POSTS ||--o{ POST_CATEGORY_MAPPINGS : "समावेश करता है"
CATEGORIES ||--o{ POST_CATEGORY_MAPPINGS : "वर्गीकृत करता है"
POSTS ||--o{ COMMENTS : "जोड़ता है" 
सिंटैक्स विश्लेषण: `POSTS` और `CATEGORIES` के बीच बहु-से-बहु संबंध को संभालने के लिए, स्क्रिप्ट एक अंतर्सेक्शन तालिका (`POST_CATEGORY_MAPPINGS`) का परिचय देती है। इस मैपिंग बॉक्स का उपयोग संयुक्त कुंजियों के रूप में किया जाता है, जो एक साथ मुख्य और विदेशी कुंजियों के रूप में कार्य करती हैं (PK FK), मानक एक-से-बहु क्राउ के फुट कनेक्शन के उपयोग से बाहरी नोड्स को एक साथ जोड़ता है।