एक विरासत डेटाबेस स्कीमा से फंसे हुए जो अब आपके डेटा मॉडल को प्रतिबिंबित नहीं करता है हर डेवलपर का दुःस्वप्न है। फिर भी रखरखाव के लिए कोड को रिफैक्टरिंग की सभी बातों के साथ मैंने पुरानी डेटाबेस स्कीमा को पुन: सक्रिय करने के बारे में बहुत कुछ नहीं सुना है।पुरानी डेटाबेस स्कीमा को रीफैक्टर करने पर युक्तियाँ
पुरानी पर निर्भर सभी कोड तोड़ने के बिना बेहतर स्कीमा में संक्रमण कैसे करें, इस पर कुछ सुझाव क्या हैं? मैं एक विशिष्ट समस्या का प्रस्ताव दूंगा जो मुझे अपने बिंदु को स्पष्ट करने के लिए है, लेकिन अन्य तकनीकों पर सलाह देने के लिए स्वतंत्र महसूस करें जो उपयोगी साबित हुए हैं - वे शायद काम में भी आ जाएंगे।
मेरे उदाहरण:
मेरी कंपनी प्राप्त करता है और जहाजों उत्पादों। अब एक उत्पाद रसीद और उत्पाद शिपमेंट में उनके साथ जुड़े कुछ बहुत ही अलग डेटा हैं, इसलिए मूल डेटाबेस डिजाइनरों ने रसीदों और शिपमेंट के लिए एक अलग तालिका बनाई है।
मेरे एक वर्ष में इस प्रणाली के साथ काम करने में मुझे यह अहसास हुआ है कि वर्तमान स्कीमा समझ में नहीं आती है। आखिरकार, एक रसीद और शिपमेंट दोनों मूल रूप से एक लेनदेन होते हैं, उनमें से प्रत्येक में उत्पाद की मात्रा बदलना शामिल होता है, दिल में केवल +/- संकेत अलग होता है। दरअसल, हमें अक्सर उस समय की कुल राशि को खोजने की ज़रूरत होती है जो उत्पाद समय के साथ बदल गया है, एक समस्या जिसके लिए यह डिज़ाइन कमजोर है।
जाहिर है कि उपयुक्त डिज़ाइन एक ही लेनदेन तालिका होगी जिसमें आईडी एक रसीदइन्फो या शिपमेंटइन्फो तालिका की विदेशी कुंजी होगी। दुर्भाग्यवश, गलत स्कीमा पहले से ही कुछ वर्षों से उत्पादन में रही है और इसमें सैकड़ों संग्रहित प्रक्रियाएं हैं, और इसके बारे में हजारों लाइनों को लिखा गया है। फिर मैं स्कीमा को सही ढंग से काम करने के लिए कैसे बदल सकता हूं?
उदाहरण के लिए, MySQL के लिए कुछ विशिष्ट है। मैं देखता हूं कि चार्ट हैं ... उदाहरण के लिए, एक लुकअप टेबल को खत्म करने के लिए कोई वास्तविक निर्देश नहीं है। –
यह ज्यादातर आरडीबीएमएस-अज्ञेयवादी है। पुस्तक में स्वयं ही वास्तविक निर्देश हैं। * एक लुकअप टेबल * जोड़ने के लिए एक रिफैक्टरिंग है, इसे हटाने के लिए कोई नहीं देख सकता :) http://databaserefactoring.com/AddLookupTable.html –