मैं एक आवेदन के लिए एक डेटाबेस डिजाइन करते समय कुछ सामान्य सर्वोत्तम प्रथाओं से अवगत हूं, लेकिन क्या नया स्वरूप देना है?
मैं एक टीम के साथ एक आंतरिक व्यापार एप्लिकेशन को फिर से डिजाइन करने का काम कर रहा हूं, हालांकि मेरे "आंतरिक" कहने के बावजूद, मैं दुर्भाग्य से कई, सिस्टम के वास्तविक उपयोगकर्ताओं के संपर्क से दूर कई लोगों की परतें हूं।
वर्तमान कार्यक्रम ओरेकल फॉर्म्स में है, जो गैर-सामान्यीकृत तालिकाओं के एक समूह में बिखरा हुआ है, कभी-कभी कई पास-डुप्लिकेट तालिकाओं के साथ एक-दूसरे के डेटा पर मामूली वेरिएंट रखते हैं। अड़चनें अक्सर खराब-कार्यान्वित संग्रहीत प्रक्रियाओं के रूप में होती हैं। यहां तक कि प्रकार भी सही नहीं लग रहे हैं। मैंने खराब डेटा के सभी प्रकारों का सामना किया है जो कि ओरेकल को लगता है लेकिन SQL सर्वर के आयात / निर्यात विज़ार्ड में फिट (और ठीक है) दिया गया है। (उदाहरण के लिए, दो अंकों के पूर्णांक पूर्ण डेटाइम का गठन नहीं करते हैं!)
मूल कार्यक्रम शायद बीस साल पीछे चला जाता है, और सभी मूल डेवलपर्स इतने लंबे समय पहले सेवानिवृत्त हो गए हैं कि यहां के पुराने लोगों को भी पता नहीं है कि वे कौन थे। नतीजतन, वहाँ भी जाने के लिए वास्तव में कोई साफ आवश्यकताएं नहीं हैं - हम केवल मौजूदा एप्लिकेशन की कार्यक्षमता की नकल करते हैं और इसके मौजूदा डेटा को रखने के लिए हैं।
रीराइट का अंतिम परिणाम एक वेब-आधारित संस्करण होने जा रहा है, जो ASP.NET पर MS SQL सर्वर के साथ बैक एंड के लिए चल रहा है।
मेरे अन्य दो डेवलपर टीममेट मेरे से बहुत बड़े हैं, दोनों व्यवसाय / एमआईएस पृष्ठभूमि के साथ हैं जबकि मेरा सीएस है। वरिष्ठ सदस्य का अनुभव लगभग विशेष रूप से ओरेकल के रूप में रहा है और अन्य सदस्य ने विजुअल बेसिक में ज्यादातर व्यावसायिक अनुप्रयोगों में काम किया है। हालाँकि मेरा डेटाबेस बैकग्राउंड MySQL या SQLite में प्रोजेक्ट्स के लिए नए डेटाबेस डिजाइन करने तक सीमित रहा है, ज्यादातर मेरे अंडरग्रेजुएट क्लासेस के लिए, मैं अनुभव के साथ केवल एक ही प्रतीत होता हूं जो वास्तव में डेटाबेस को डिजाइन कर रहा है।
मैंने पहले ही C # में एक छोटा सा प्रोग्राम लिखा है जो सभी मौजूदा डेटा को एक तटस्थ प्रारूप में पढ़ता है, फिर से कास्ट करने और एक नए डेटाबेस में रखने के लिए तैयार है। मैं डेस्टिनेशन डेटाबेस के डिज़ाइन के बाद लोड-इन कोड लिखने की योजना बनाता हूं, ताकि डेटा को नई सामान्यीकृत तालिकाओं में ठीक से विभाजित किया जा सके, नई बाधाओं का पालन करने के लिए सही क्रम में जोड़ा जाए, आदि। उसी प्रोग्राम को बाद में फिर से चलाया जा सकता है। वास्तविक नव तैनात समाप्त रीडिज़ाइन के लिए उत्पादन डेटा को कॉपी करने के लिए। यह पता लगाने के लिए मुख्य बात के रूप में डेटाबेस के वास्तविक रीडिज़ाइन को छोड़ देता है।
तो मेरे सवाल का दिल: मौजूदा एप्लिकेशन के डेटाबेस स्तर से रीडिज़ाइन करने के लिए कुछ सर्वोत्तम अभ्यास क्या हैं?