2008-09-22 15 views
9

मैंने हाल ही में एक डेटाबेस को बनाए रखने का काम विरासत में मिला है जिसे बहुत अच्छी तरह से डिजाइन नहीं किया गया था और डिजाइनर किसी भी प्रश्न पूछने के लिए उपलब्ध नहीं हैं। और मेरे पास निकट भविष्य में कुछ और रास्ता आ रहा है।Decipher डेटाबेस स्कीमा

किसी भी तरह की दृश्य सहायता या डेटाबेस आरेख के बिना तालिकाओं के बीच संबंधों को समझने की कोशिश करना कठिन रहा है।

मैं सोच रहा था कि इसके लिए कौन से टूल्स की सिफारिश की जाती है। मुझे Visio के बारे में पता है, लेकिन मैं उम्मीद कर रहा था कि वहां कुछ अच्छे ओपन सोर्स/फ्रीवेयर एप्लिकेशन थे। मुझे डेटाबेस को बदलने के लिए इसकी आवश्यकता नहीं है। बस इसे पढ़ें और मुझे समझने में मदद करने के लिए कुछ प्रकार की दृश्य सहायता बनाएं कि चीजों को कैसे रखा जाता है और यह पता लगाने की कोशिश करें कि डिजाइनर क्या सोच रहा था कि डेटा कैसे संबंधित होना चाहिए।


अतिरिक्त जवाब डेटा: SchemaSpy बात मैं के लिए देख रहा था, लेकिन उम्र में कमांड लाइन के साथ एक बहुत नहीं किया होने की तरह था, मैं SchemaSpyGUI उपयोग करने के लिए चुना। उपयोग करने के लिए कुछ विन्यास भी थे क्योंकि मैं जावा के साथ ज्यादा काम नहीं करता था, लेकिन अंतिम परिणाम वह था जो मैं खोज रहा था (Visio के ईआर आरेखों के लिए ओपन-सोर्स प्रतिस्थापन पर)।

+0

आप किस डेटाबेस का उपयोग कर रहे हैं? –

+0

यह भी देखें http://stackoverflow.com/questions/7031203/tools-for-discovering-de-facto-foreign-keys-in- डेटाबेस – reinierpost

उत्तर

15

SchemaSpy आज़माएं। मैंने इसे एक जटिल डेटाबेस के खिलाफ भाग लिया और मैं अनुकूलन पर सलाह के साथ, परिणाम से काफी खुश था।

+0

क्या यह वास्तव में प्रश्न का उत्तर देता है? यह टूल अनुमानित कुंजी नहीं दिखता है, जो मुझे लगता है कि सवाल का हिस्सा है। – reinierpost

+0

@reinierpost मुझे मूल प्रश्न में "कुंजी" दिखाई नहीं दे रहा है, इसलिए मुझे यकीन नहीं है कि आप ऐसा क्यों सोचते हैं ... :-) (दरअसल, मैं यह भी समझ नहीं पा रहा हूं कि "निडर कुंजी" से आपका क्या मतलब है।) वैसे भी, कई उत्तरों का ब्याज कई टूल प्रस्तावित करना है, ताकि आप अपने उपयोग के लिए सबसे अच्छा चुन सकें। – PhiLho

+1

यदि कोई डेटाबेस बहुत अच्छी तरह से डिज़ाइन नहीं किया गया था (और कई अन्य मामलों में), अक्सर विदेशी कुंजी या यहां तक ​​कि प्राथमिक कुंजी को स्पष्ट रूप से घोषित नहीं किया गया है। इसलिए डेटाबेस को समझने की कोशिश करने के लिए यह पता लगाने की आवश्यकता है कि वास्तव में विदेशी कुंजी (तालिकाओं के बीच संबंध) क्या हैं। एक उपकरण जो डेटाबेस स्कीमा को चित्रित करेगा, ऐसा नहीं करेगा, इसलिए ऐसे मामलों में यह केवल तालिकाओं का डंप उत्पन्न करेगा और उनके बीच कोई संबंध नहीं दिखाएगा। – reinierpost

1

क्या डीबीएमएस (डाटाबेस प्रबंधन प्रणाली) आप उपयोग कर रहे हैं? कई आधुनिक डीबीएमएस जैसे SQL सर्वर और एक्सेस आपके लिए ई-आर आरेख बना सकते हैं।

माइक्रोसॉफ्ट विसियो एक उत्कृष्ट उपकरण है और किसी भी डेटासोर्स से इंजीनियर एसक्यूएल को उलट सकता है।

DDT (Database Design Tool) विंडोज़ पर कच्चे एसक्यूएल से इंजीनियर को उलट सकता है और बहुत हल्का (बहुत छोटा मुफ्त डाउनलोड) है।

MySQL वर्कबेंच अधिक लोकप्रिय MySQL टूल में से एक है और इसमें एक स्वतंत्र रूप से डाउनलोड करने योग्य संस्करण है।

SQLFairy लिनक्स पर MySQL के लिए भी ऐसा ही कर सकता है।

0

मैं mysql डेटाबेस के लिए mysql वर्कबेंच (http://www.mysql.com/products/workbench/) का उपयोग करता हूं। आप वर्कबेंच को अपने डेटाबेस में संलग्न कर सकते हैं और यह आपके लिए ईआर digram आकर्षित करेगा।

0

pgsql/win32 का उपयोग करके मैंने पाया कि सबसे आसान समाधान एक पर्ल स्क्रिप्ट लिखना था जिसने ग्राफ :: आसान से सीपीएएन का उपयोग किया था। विदेशी कुंजी संबंधों के लिए डेटाबेस क्वेरी करें, निर्देशों के साथ निर्देशित ग्राफ को नोड्स और एफके रिश्तों को लिंक के रूप में बनाएं। यदि यह आपका सेटअप है, तो मैं कोड पोस्ट कर सकता हूं।

1

वहां कुछ ओपन-सोर्स सॉफ़्टवेयर है लेकिन रिवर्स-इंजीनियरिंग डेटाबेस स्कीमा के लिए Visio Professional का टूल काफी अच्छा है क्योंकि यह रिवर्स-इंजीनियरिंग और आरेखण की प्रक्रिया को जोड़ता है। मैं इसका बहुत उपयोग करता हूं क्योंकि यह ज्यादातर साइटों पर आसानी से उपलब्ध होता है।

विसियो की एक अच्छी विशेषता यह है कि आप इंजीनियर को उलट सकते हैं और फिर रिवर्स-इंजीनियर स्कीमा से अपने स्वयं के आरेख बना सकते हैं। ऐसा करना स्कीमा का पता लगाने और इसे समझने का एक बहुत अच्छा तरीका है क्योंकि आप इस काम को स्कीमा के लिए संदर्भ दस्तावेज़ बनाने के एक हिस्से के रूप में कर रहे हैं। मैं इस तकनीक का उपयोग किया है Activity Based Costing Systems से Insurance Underwriting Systems के लिए सब कुछ इंजीनियर, आम तौर पर विक्रेता से ज्यादा मदद के बिना उल्टा करने के लिए। Visio आरेखों के बारे में tinkering काफी आराम है।

इस और एक छोटे से परिकल्पना FK संबंधों के बारे में परीक्षण आप काफी जटिल स्कीमा का मतलब कर सकते हैं (FK मेज पर शारीरिक रूप से मौजूद नहीं है) के बीच

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

यह कुछ हद तक एक व्यक्तिपरक दृष्टिकोण है लेकिन अन्तरक्रियाशीलता मेरे लिए एक सीखने की प्रक्रिया के रूप में बहुत अच्छी तरह से काम करता है और यह अब तक मेरी पसंदीदा दृष्टिकोण से है। अधिकतर साइटें आपको लाइसेंस के लिए £ 300 या उससे भी ज्यादा परेशान नहीं करेंगे - अगर उनके पास पहले से ही उपलब्ध नहीं है। एकमात्र ऐसी साइट जिसे मैंने कभी भी काम किया था, जहां उन्हें इसे प्राप्त करना था क्योंकि प्रो के बजाए उनके पास Visio Standard था। मैंने अच्छी तरह से पूछा और पीएचबी ने इसे बंद कर दिया।

0

मैं कोशिश करें और देखें कि अनुप्रयोग जो डेटाबेस का उपयोग एसक्यूएल वे का उपयोग लॉग इन करने के तौर-तरीकों को लेना पसंद (या डीबी बैकएंड ही है, लेकिन यह है कि कम विनयशील हो जाता है)। डेटाबेस पर किए गए अनुरोधों के लिए एक महसूस करना आपको महत्वपूर्ण तालिकाओं पर ध्यान केंद्रित करने में मदद करता है।

सबसे चीजों के साथ के रूप में, 80/20 नियम यहाँ लागू होता है: टेबल के 20% रोचक सामग्री के 80% कर सकते हैं। एक बार जब आप उन्हें समझ लेंगे, तो एक चित्र शायद ही कभी जरूरी है।

+0

ओह वास्तव में? 40 टेबल का 20% प्रबंधनीय है। 2000 टेबल का 20%, इतना –

+0

हां वास्तव में नहीं। मेरे पास 1200+ टेबल के साथ कुछ सिस्टम हैं। एक में, आपको वास्तव में केवल यह जानने की आवश्यकता है कि कैसे 12 या उससे अधिक संबंध हैं। दूसरे में, लगभग 25. पूरे स्कीमा का एक आरेख बेकार है, लेकिन इन "कोर" टेबल का नक्शा उचित स्तर पर सिस्टम को समझने के लिए पर्याप्त है। – dland

+1

ठीक है ... 1200 = 240 का 20%। 25 2% के करीब है इसलिए आप मेरा मुद्दा साबित कर रहे हैं। –

2

कोशिश DBVis - http://www.minq.se/products/dbvis/ पर डाउनलोड - वहाँ एक समर्थक संस्करण (आवश्यक नहीं) और एक खुला संस्करण है कि पर्याप्त होना चाहिए है।

आपको बस सही जेडीबीसी - डेटाबेस ड्राइवर प्राप्त करने के लिए करना है, टूल एक सर्कल में ऑब्जेक्टोनल, हिरार्किकल, संदर्भों को सारणी और संदर्भों को दिखाता है ;-) आदि बस एक बटन दबाकर। का आनंद लें!

1

dbdesc मुक्त नहीं है, लेकिन मैं इसके बारे में बहुत अच्छी बातें सुना है। यह वहां के कई प्रमुख डेटाबेस के साथ काम करता है।

मैं भाग्यशाली रहा हूं कि मुझे अभी तक अन्य लोगों के डेटाबेस स्कीमा को समझना नहीं है। मैंने टेम्पलेट्स का एक सेट उपयोग किया है जो CodeSmith के साथ आता है। प्राथमिक कुंजी विदेशी कुंजी relationshsips कि एक प्रारंभिक जगह के रूप में स्थापित किए गए हैं पर

0

देखो।

मौजूदा आरेखों के बिना डेटाबेस के बाद से, औपचारिक रूप से संबंध स्थापित नहीं हो सकते हैं, मैं तालिका संरचनाओं और नामों को देखता हूं और मेरे सर्वोत्तम अनुमानों को देखता हूं कि क्या हो सकता है, फिर संरचनाओं में खोदने के लिए वहां देखें स्पष्ट (लेकिन अपरिभाषित) विदेशी कुंजी हैं। मैं संग्रहीत प्रोसेस को देखता हूं कि यह समझने के लिए कि टेबल कैसे जुड़ते हैं और किन क्षेत्रों पर पूछताछ की जा रही है।

जबकि डाटाबेस को समझने के लिए स्वचालित उपकरण स्पिफी हो सकते हैं, मुझे लगता है कि जब मैं वास्तव में डेटाबेस के विवरण में खुदाई करता हूं, तो मैं स्वचालित रूप से बनाई गई किसी भी तस्वीर से प्राप्त होने से बेहतर समझ के साथ समाप्त होता हूं।

1

सबसे पहले, क्या मैं कह सकता हूं कि मुझे आपका दर्द महसूस होता है!
यहाँ मेरी कुछ युक्तियां दी गई हैं:

  1. सामान्य तौर पर, एक उपकरण केवल तभी डिजाइनरों सही ढंग से सभी प्राथमिक और विदेशी कुंजी को परिभाषित किया है उपयोगी होगा, तो ध्यान रखें कि एक उपकरण लेने के नहीं हो सकता है सब महत्वपूर्ण संबंध
  2. सबसे उपयोगी बात यह है कि क्लाइंट कोड द्वारा कौन से प्रश्न किए जा रहे हैं। यह आपको न केवल बताएगा कि संबंध क्या हैं, लेकिन कौन सी तालिकाओं और रिश्तों का सबसे अधिक उपयोग किया जाता है - यही वह जगह है जहां आप अपने प्रयास पर ध्यान केंद्रित करना चाहते हैं।
+0

कुछ टूल रिश्तों का अनुमान लगा सकते हैं यदि नाम सुसंगत हैं। –

+0

धन्यवाद, @Stephanie। यह जानना उपयोगी है। क्या आप कुछ नाम दे सकते हैं? –

+0

पावर डिज़ाइनर ऐसा कर सकता है। मैं यही उपयोग करता हूं। यह सस्ता नहीं है लेकिन 15-दिन, समय-बमबारी, पूर्ण संस्करण है। –

0

मेरे पास रिवर्स इंजीनियरिंग एक डीबी स्कीमा के लिए Aqua Data Studio के साथ कुछ बहुत अच्छा अनुभव है। यह बहुत ही समृद्ध है और इनफॉर्मिक्स या साइबेस जैसे अधिक विदेशी डेटाबेस का भी समर्थन करता है।

0

यह मैं एमएस एसक्यूएल सर्वर 2012 को ईआर आरेख पैदा करने के साथ मदद:

एमएस एसक्यूएल सर्वर प्रबंधन स्टूडियो फ़ाइल मेनू>> "ऑब्जेक्ट एक्सप्लोरर कनेक्ट" अपने डेटाबेस नोड को चुनें और इसे विस्तार। इस नोड के तहत आपको "डेटाबेस आरेख" नामक एक उप-नोड मिलेगा "डेटाबेस आरेख"> "नया डेटाबेस आरेख"> राइट क्लिक करें, जिन्हें आप अपने कॉलम, रिश्तों, ...

0

पर राइट क्लिक करें Visio का प्रयोग करें। यदि विजन 2010 का उपयोग करते हैं, तो आपको यह सुनिश्चित करने के लिए जेएसईसी ओएलडीडीबी प्रदाता का उपयोग SQL सर्वर के लिए करना होगा ताकि Visio ड्राइवर से कनेक्ट करने में कोई समस्या न हो।

+0

यह काम नहीं करेगा। Visio तालिकाओं के बीच संबंधों का अनुमान नहीं है। – reinierpost

संबंधित मुद्दे