एक सॉफ्टवेयर प्रोजेक्ट विकसित करते समय सबसे महत्वपूर्ण, मूलभूत और आंतरिक पहलुओं में से एक एक ठीक से संरचित डेटाबेस स्कीमा है। घर बनाते समय यह बराबर है कि आपको यह सुनिश्चित करने की आवश्यकता है कि नींव ठीक से रखी गई है, अन्यथा एक गुणवत्ता वाले घर के निर्माण की संभावना काफी कम हो जाती है।
आश्चर्यजनक रूप से एक की तुलना में आसान होगा, आइए जानें कि एक अच्छी तरह से तैयार किए गए डेटाबेस स्कीमा को लिखने के लिए उपयोग किए जाने वाले विभिन्न पहलू।
रचना सिंटैक्स
शुरू करने के लिए, अपना पसंदीदा खोलें पाठ संपादक. डेटाबेस स्कीमा बनाने के लिए एक सादे पाठ फ़ाइल से ज्यादा कुछ नहीं चाहिए। एक डेटाबेस में कई टेबल होते हैं, जिनमें से प्रत्येक में कॉलम होते हैं, और एक टेबल बनाने के लिए क्रिएट टेबल सिंटैक्स का उपयोग किया जाता है। यहाँ एक मूल उदाहरण दिया गया है:
बनाएँ उपयोगकर्ताओं (
आईडी INT नहीं,
__ सक्रिय टिन इंट नॉट,
full_name VAR CHAR (100) पूर्ण नहीं,
ईमेल VARCHAR (100) पूर्ण नहीं
);
जैसा कि आप देख सकते हैं यह एक डेटाबेस तालिका बनाएगा जिसका नाम होगा उपयोगकर्ताओं जिसमें चार कॉलम होते हैं। यह एक बिल्कुल सीधा आगे का एसक्यूएल स्टेटमेंट होना चाहिए जिसकी शुरुआत हो
तालिका बनाएं, इसके बाद डेटाबेस तालिकाओं के नाम से, फिर कोष्ठक के भीतर तालिका के स्तंभ एक अल्पविराम द्वारा अलग किए जाते हैं।सही कॉलम प्रकारों का उपयोग करें
जैसा कि ऊपर दिखाया गया है, तालिका में शामिल कॉलम कॉलम को कॉमा द्वारा अलग किए जाएंगे। प्रत्येक स्तंभ परिभाषा में तीन समान भाग शामिल हैं:
COL_NAME TYPE [विकल्प]
कॉलम का नाम, उसके बाद कॉलम का प्रकार, फिर कोई वैकल्पिक पैरामीटर। हम बाद में वैकल्पिक मापदंडों में शामिल होंगे, लेकिन स्तंभ प्रकार पर ध्यान केंद्रित करते हुए, नीचे उपलब्ध सबसे सामान्य रूप से उपयोग किए जाने वाले स्तंभ प्रकारों की सूची दी गई है:
सभी इरादों के लिए, उपरोक्त कॉलम प्रकार वे सभी हैं जिन्हें आपको अच्छी तरह से निर्मित mySQL डेटाबेस स्कीमा लिखने की आवश्यकता है।
कॉलम विकल्पों को परिभाषित करें
कॉलम को परिभाषित करते समय आपके द्वारा निर्दिष्ट किए जा सकने वाले विभिन्न विकल्प भी होते हैं। नीचे का एक और उदाहरण है तालिका बनाएं बयान:
बनाएँ उपयोगकर्ताओं (
आईडी पूर्ण प्राथमिक कुंजी नहीं है AUTO_INCREMENT,
उपयोगकर्ता नाम VARCHAR (100) पूर्ण नहीं,
स्थिति ENUM ('सक्रिय', 'निष्क्रिय') नहीं पूरी तरह से निष्क्रिय 'सक्रिय',
संतुलन DECIMAL (8,2) पूर्ण विचलन 0 नहीं,
date_of_birth DATETIME,
create_at TIMESTAMP नहीं पूरा DEFAULT CURRENT_TIMESTAMP
);
ऊपर थोड़ा कठिन लग सकता है, लेकिन झल्लाहट नहीं, यह काफी सरल है। टूट गया, यहाँ ऊपर बयान में क्या हो रहा है:
- तालिका की गति और प्रदर्शन में सहायता के लिए आपको हमेशा सभी स्तंभों पर NULL का उपयोग नहीं करना चाहिए। यह केवल निर्दिष्ट करता है कि जब एक पंक्ति डाली जाती है तो कॉलम को खाली / रिक्त नहीं छोड़ा जा सकता है।
- हमेशा स्तंभ के आकार को वास्तविक रूप से छोटा रखने की कोशिश करें, क्योंकि यह गति और प्रदर्शन को बेहतर बनाने में मदद करता है।
- ईद स्तंभ एक पूर्णांक है, यह तालिका की प्राथमिक कुंजी भी है जिसका अर्थ है कि यह अद्वितीय है, और हर बार एक रिकॉर्ड डाले जाने के बाद वृद्धि होगी। यह आम तौर पर आपके द्वारा बनाई गई सभी तालिकाओं पर उपयोग किया जाना चाहिए ताकि आप तालिका के भीतर किसी एक पंक्ति को आसानी से संदर्भित कर सकें।
- स्थिति कॉलम एक ENUM है और इसमें "सक्रिय" या "निष्क्रिय" का मान होना चाहिए। यदि कोई मूल्य निर्दिष्ट नहीं है, तो एक नई पंक्ति "सक्रिय" की स्थिति से शुरू होगी।
- संतुलन स्तंभ हर नई पंक्ति के लिए 0 से शुरू होता है, और एक राशि है जो दो दो दशमलव बिंदुओं पर स्वरूपित होती है।
- जन्म की तारीख स्तंभ केवल एक DATE है, लेकिन एक शून्य मान के लिए भी अनुमति देता है क्योंकि जन्म की तारीख को निर्माण पर नहीं जाना जा सकता है।
- अंतिम, द पर बनाया गया स्तंभ TIMESTAMP है और वर्तमान समय में जब पंक्ति सम्मिलित की गई थी तब डिफॉल्ट करता है।
ऊपर एक अच्छी तरह से संरचित डेटाबेस तालिका का एक उदाहरण है, और आगे जाने वाले उदाहरण के रूप में उपयोग किया जाना चाहिए।
संबंधपरक डेटाबेस का उपयोग करने का सबसे बड़ा लाभ जैसे कि माई एसक्यूएल विदेशी प्रमुख बाधाओं और कैस्केडिंग के लिए इसका उत्कृष्ट समर्थन है। यह तब होता है जब आप एक स्तंभ द्वारा दो तालिकाओं को एक साथ जोड़ते हैं, जिससे माता-पिता बच्चे के संबंध बनाते हैं, इसलिए जब मूल पंक्ति को हटा दिया जाता है तो आवश्यक चाइल्ड रो भी स्वचालित रूप से हटा दिए जाते हैं।
यहाँ एक उदाहरण है:
बनाएँ उपयोगकर्ताओं (
आईडी पूर्ण प्राथमिक कुंजी नहीं है AUTO_INCREMENT,
उपयोगकर्ता नाम VARCHAR (100) पूर्ण नहीं,
पूर्ण_नाम वर्चस् (100) पूर्ण नहीं,
create_at TIMESTAMP नहीं पूरा DEFAULT CURRENT_TIMESTAMP
) इंजन = InnoDB;
निर्माण आदेश (
आईडी पूर्ण प्राथमिक कुंजी नहीं है AUTO_INCREMENT,
उपयोगकर्ता पहचान नहीं है,
राशि निर्धारित (8,2) पूर्ण नहीं है,
product_name वर्कर (200) पूर्ण नहीं,
विदेश का प्रमुख (उपयोगकर्ता नाम) संदर्भ उपयोगकर्ता (आईडी) DELETE CASCADE पर
) इंजन = InnoDB;
आप अंतिम पंक्ति के रूप में FOREIGN कुंजी खंड को नोटिस करेंगे। इस लाइन में केवल यह बताया गया है कि इसमें चाइल्ड रो हैं, जो इससे जुड़े हुए हैं यूज़र आईडी उनकी मूल पंक्ति के लिए स्तंभ, जो है ईद का कॉलम उपयोगकर्ताओं तालिका। इसका क्या मतलब है, किसी भी समय एक पंक्ति को हटा दिया जाता है उपयोगकर्ताओं तालिका, mySQL स्वचालित रूप से सभी संबंधित पंक्तियों को हटा देगा आदेश तालिका आपके डेटाबेस में संरचनात्मक अखंडता सुनिश्चित करने में मदद करती है।
ध्यान भी दें इंजन = InnoDB उपरोक्त कथन के अंत में। हालाँकि InnoDB अब डिफ़ॉल्ट mySQL तालिका प्रकार है, यह हमेशा नहीं था, इसलिए इसे केवल सुरक्षित पक्ष पर रहने के लिए जोड़ा जाना चाहिए, क्योंकि कैस्केडिंग केवल InnoDB तालिकाओं के साथ काम करता है।
आत्मविश्वास के साथ डिजाइन
अब आप ठोस, अच्छी तरह से संरचित mySQL डेटाबेस स्कीमा को तैयार करने के अपने रास्ते पर अच्छी तरह से हैं। उपरोक्त ज्ञान का उपयोग करके आप अब अच्छी तरह से व्यवस्थित स्कीमा लिख सकते हैं जो प्रदर्शन और संरचनात्मक अखंडता दोनों प्रदान करते हैं।
जगह में अपने स्कीमा के साथ, आप यह सुनिश्चित करना जानते हैं कि इनका उपयोग कैसे करें आवश्यक एसक्यूएल आदेश.
क्वेरी को स्ट्रीमलाइन करने, समय बचाने और SQL पावर उपयोगकर्ता की तरह महसूस करने के लिए SQL जॉइन का उपयोग करना सीखें।
- अनिर्दिष्ट
हमारे न्यूज़लेटर की सदस्यता लें
टेक टिप्स, समीक्षा, मुफ्त ईबुक और विशेष सौदों के लिए हमारे न्यूज़लेटर में शामिल हों!
एक और कदम…!
कृपया हमें आपके द्वारा भेजे गए ईमेल में अपने ईमेल पते की पुष्टि करें।