2009-07-11 15 views
8

मैं एक उद्यम आवेदन के साथ काम करते हैं और डीबी डिजाइन के लिए कुछ सुझाव दिए गएटिप्स

  1. सभी तालिकाओं निम्नलिखित क्षेत्रों कि लेखापरीक्षा निशान में मदद करता है होना चाहिए उठाया है - LastChangedBy, LastChanged, LastChangedPage
  2. आपके सभी संग्रहीत प्रक्रियाओं जिनमें गतिशील एसक्यूएल है, @bDebug पैरामीटर होना चाहिए। डिफ़ॉल्ट रूप से यह 0 पर सेट हो जाता है। यदि यह 1 पर सेट है, तो गतिशील SQL कथन प्रिंट करें और यह डिबगिंग में वास्तव में सहायक होगा।
  3. सीआरयूडी एसपी के लिए, आंशिक रूप से तालिका को अद्यतन करने का एक तरीका है। यदि आपकी तालिका में 10 फ़ील्ड हैं और एसपी में से एक में, आप केवल 5 फ़ील्ड अपडेट करने की परवाह करते हैं, ऐसा करने के लिए अमूर्तता की एक परत है।

कोई अन्य उपयोगी टिप्स जो आप सोच सकते हैं?

संपादित करें: सभी उत्तरों के लिए धन्यवाद। मैं अभी भी एक ऐसा उत्तर ढूंढ रहा हूं जो डीबी डिजाइन के लिए टिप्स/चाल/रणनीतियों का लिंक प्रदान कर सके।

+1

महान प्रश्न। – JoshJordan

उत्तर

0

मेरी राय में एक CreatedBy और बनाया क्षेत्रों की आवश्यकता होगी।

+0

@rafek - हमारे ऐप में, हम MadebyB को LastChangedBy के रूप में संग्रहीत करते हैं और साथ ही बनाए गए फ़ील्ड के साथ भी। – Nick

+0

फिर, उस रिकॉर्ड पर अपडेट करने के बाद, आपके पास इसके मूल निर्माता के बारे में जानकारी नहीं है। – rafek

4

# 1 के लिए: SQL सर्वर 2008 पर जाएं और केवल डेटा कैप्चर बदलें चालू करें। यदि आपको वास्तव में विस्तृत लेखापरीक्षा ट्रेल्स रखने की आवश्यकता है, तो यह सुविधा अकेले ही लागत को औचित्य देगी।

# 2 के लिए: गतिशील एसक्यूएल के साथ किसी भी संग्रहीत प्रक्रिया को स्वचालित रूप से डबल गुप्त परिवीक्षा पर रखा जाना चाहिए (यानी: इसकी अनुमति है, लेकिन यह सुनिश्चित करने के लिए कोड समीक्षा के कई स्तरों को पार करना होगा ताकि यह करने का कोई बेहतर तरीका न हो) ।

1

जब वेब की शक्ति की बात आती है, तो बेहतर कुछ भी नहीं हटाना बेहतर होता है। इसलिए हटाए गए दिनांक पर आप केवल उन वस्तुओं को बहिष्कृत कर सकते हैं जिन्हें आपकी खोजों से "हटाया गया" है। यह उन्मत्त ग्राहकों को भी मदद करता है जिन्होंने गलती से अपना खाता हटा दिया। जाहिर है यह हर क्षेत्र में इस्तेमाल नहीं किया जाना चाहिए।

+0

डेटाबेस पर इस पंक्ति फ़ील्ड को अनदेखा करने से कई चीजें आसान हो सकती हैं। मैंने पाया है कि अधिकांश समाधानों को "फिर से उपयोग न करें" स्टाइल ध्वज की आवश्यकता होती है ताकि पुराना डेटा खोजा जा सके, लेकिन नई प्रविष्टियां पुरानी आईडी इत्यादि का पुन: उपयोग नहीं कर सकतीं। – Spence

+0

प्रदर्शन कारणों से, बड़े पैमाने पर प्लेटफार्मों पर आप इसे लेना चाहते हैं आपको विभाजित करने और डेटा हटाने के लिए टेबल विभाजन को कार्यान्वित करके और भी आगे। आप एक संग्रह डेटाबेस को लागू करने पर भी विचार कर सकते हैं। –

1

विचार है कि तुरंत जब बहुत बड़ी डेटाबेस (VLDB) के साथ काम दिमाग में वसंत के एक जोड़े:

आप तालिका विभाजन को लागू करना चाहिए?

लाखों रिकॉर्ड के साथ बड़ी डेटाबेस टेबल, तालिका विभाजन से लाभ हो सकती है।

  • इस एसक्यूएल सर्वर फ़ीचर की उपलब्धता एंटरप्राइज़ संस्करण का उपयोग करने के लिए प्रतिबंधित है।
  • प्रयोज्यता आपके प्लेटफ़ॉर्म हार्डवेयर और तालिका डेटा के भीतर उचित विभाजन कुंजी की उपलब्धता पर निर्भर है।

मेरी सबसे अधिक बार उपयोग की जाने वाली टेबल क्या हैं?

फ़ाइल समूह द्वारा पृथक्करण पर विचार करें यानी एक फ़ाइल समूह और लेनदेन तालिका पर ग्राहक तालिका रखें। यह अनुक्रमिक I/O की संभावना बनाने के लिए फ़ाइल एक्सेस के लिए एकाधिक थ्रेड बनाने के लिए SQL सर्वर को अनुमति देता है।

इसके बाद अंतर्निहित भौतिक डिस्क संरचना, यानी प्रत्येक फ़ाइल समूह के लिए एक अलग एलयूएन पर विचार करें।

एक लचीला अनुक्रमण रणनीति

वसीयत आप कोई संदेह नहीं है पहले से ही मन में एक अनुक्रमण रणनीति तथापि VLDB प्लेटफार्मों के लिए यह बार-बार समीक्षा की जानी चाहिए होगा। चूंकि डेटा वॉल्यूम बढ़ता है और डेटा वितरण में परिवर्तन होता है ताकि आपके डेटा एक्सेस क्वेरीज़ के लिए निष्पादन योजना हो। आपको नियमित रूप से अपनी अनुक्रमण रणनीति की समीक्षा करने की आवश्यकता के लिए योजना बनाना चाहिए।

1

LastChangedBy आदि फ़ील्ड बहुत बेकार हैं। यदि आपको वास्तव में ऑडिट ट्रेल की आवश्यकता है, तो आपको अलग-अलग ऑडिट टेबल की आवश्यकता है जो परिवर्तनों का विवरण दें और ऑडिट इतिहास बनाए रखें। यदि आपको ऑडिट ट्रेल की आवश्यकता नहीं है, तो LastChangedBy आदि फ़ील्ड्स को अभी तक कोई व्यावसायिक मूल्य के लिए काम जोड़ा गया है।

0

तिथियां Utc प्रारूप में संग्रहीत की जानी चाहिए और ग्राहक पर स्थानीय समय में परिवर्तित की जानी चाहिए।

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