2008-10-29 13 views
5

मैं कुछ सामूहिक अनुभव यहाँ का दोहन करने की उम्मीद कर रही है, इसलिए क्या (यदि हो तो) उपयोगिता टेबल, या सामान्य फ़ील्ड अपने डेटाबेस डिजाइन में आप हमेशा शामिल करते हैं?डेटाबेस तालिकाओं/क्षेत्रों आप हमेशा अपने हत्यारा में उपयोग एप्लिकेशन

एक उदाहरण है कि मैं हमेशा किसी भी न आया हुआ अपवाद जानकारी स्टोर करने के लिए एक App_Errors मेज, और एक App_Audit तालिका जो सभी संपादित जानकारी संग्रहीत करता है शामिल है।

मैंने प्रत्येक डेटा तालिका पर RecordCreatedDate और RecordLastEditedDate सहित लाभ (मेरे अपने दिमाग में) का लाभ उठाया है, लेकिन किसी भी निष्कर्ष पर नहीं आया है कि जानकारी वास्तव में उपयोगी होगी या नहीं।

सवाल थोड़ा अधिक दिशा देने के लिए - मेरे वर्तमान फोकस विश्व स्तर पर सुलभ वेब अनुप्रयोग (लगता है सामाजिक नेटवर्किंग) है।

ता!

उत्तर

9

1 एक तालिका जिसमें संस्करण संख्या है, इसलिए ऐप आसानी से स्कीमा के संस्करण की जांच कर सकता है।

2 तालिका एक विन्यास फाइल की तरह मनमाने ढंग से चर/मान युग्म धारण करने के लिए, है, लेकिन डेटाबेस में। हर तालिका, पूर्णांक (आप संस्करण संख्या यहाँ में डाल सकते हैं ....)

+0

बिंदु 2 के लिए +1। मैं इसे "गुण" कहता हूं। प्वाइंट 1 भी मान्य है। – Draemon

+0

मैं जोड़ता हूं कि मनमानी var/val तालिका एक श्रेणी/var/val तालिका के रूप में भी बेहतर काम करती है। – jmucchiello

+0

मेरे पास "schema_version" नामक एक टेबल है। प्रत्येक डेटाबेस अपग्रेड इस तालिका में संस्करण संख्या, विवरण और सिस्टम दिनांक सहित एक सम्मिलित करता है। –

2

यह क्या करता है की परवाह किए बिना, हमेशा एक "आईडी" क्षेत्र के साथ शुरू होता है,।

मैं भी एक त्रुटियाँ तालिका, जो आईडी, दिनांक, विफल विधि और अधिभार, और एक स्टैक ट्रेस उपलब्ध करता है, तो भी शामिल है को बचाने के।

कभी-कभी मेरे पास सेटिंग्स/आंकड़े तालिका होती है, लेकिन हमेशा नहीं।

6

मैंने डेटा को बदलने और किसके द्वारा ट्रैक किया गया है, इसका ट्रैक रखने के लिए मैंने अक्सर ऑडिट लॉग तालिका का उपयोग किया है।

आप आश्चर्यचकित होंगे कि यह कितना नियमित रूप से लाभान्वित रहा है।

कुछ अन्य जो मॉडल मैं काम करता हूं, उसमें कुछ और है जो स्थिति तालिका पर भिन्नता है, आमतौर पर प्राथमिक इकाई की स्थिति जीवन चक्र से संबंधित है।

+1

आप वास्तव में ऑडिट लॉग में क्या डालते हैं? ऐप से जेनरेट की गई टिप्पणियां, एसक्यूएल प्रश्न, या क्या? – Draemon

+0

@Draemon - मैंने जिन सिस्टमों पर काम किया है, उनमें से अधिकांश के लिए, एक रिकॉर्ड दर्ज किया गया है, जिसने रिकॉर्ड किया है - दूसरे के पास यह आवश्यक है कि डेटा बदलने से पहले डेटा रिकॉर्ड किया गया हो, और अन्य को मूल SQL कथन शामिल होना आवश्यक है दर्ज किया जाना है। – Galwegian

0

एक त्रुटि संदेश तालिका जिसमें त्रुटि कोड, तकनीकी संदेश, उपयोगकर्ता संदेश, गंभीरता और ज्ञापन कॉलम हैं। त्रुटि होने पर संदेश संवाद बनाने के लिए गंभीरता और उपयोगकर्ता संदेश का उपयोग किया जाता है। त्रुटि लॉगिंग करते समय त्रुटि कोड और क्लाइंट, दिनांक, समय, आदि के आईपी के साथ त्रुटि कोड और तकनीकी संदेश शामिल हैं।

1

रिपोर्टिंग के लिए, एक संख्या तालिका (1mil 0 से पूर्णांकों) और (दिनों की कीमत 30 वर्ष) स्थिर तिथियों की एक मेज।

+0

संख्या तालिका क्यों? –

+0

मैं उपरोक्त प्रश्न को प्रतिबिंबित करूंगा, संख्या तालिका क्यों? स्थिर तिथियां तालिका भी प्रदान करती है - यह देखते हुए कि अधिकांश प्रोग्रामिंग भाषाएं और रिपोर्टिंग सिस्टम कई दिनांक कार्य प्रदान करते हैं ... – Ash

+0

एक उपयोग: रिपोर्टिंग अंतराल के लिए - उदा। "पिछले 100 दिनों में तारीखों को सूचीबद्ध करें जहां कोई ऑर्डर प्राप्त नहीं हुआ"। –

0

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

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

एक ऑडिट तालिका एक बहुत अच्छा विचार है। मैं एक मानव-पठनीय कॉलम शामिल करता हूं ताकि गैर-तकनीकी लोगों को यह पता लगाने का मौका मिले कि क्या हो रहा है, साथ ही विभिन्न कुंजी और महत्वपूर्ण मूल्यों को संग्रहित करना भी है।

0

मुझे लगता है यह निम्नलिखित क्षेत्रों को शामिल करने के alway काम है:

  • निष्क्रिय (या दर्शनीय/बंद/आदि)
  • InactiveReason

बस यह वास्तव में 'नरम नष्ट' करने के लिए आसान बनाता है आइटम इसलिए डेटा अखंडता बनाए रखा जाता है और आप उस मूल्यवान ऐतिहासिक जानकारी को खोना नहीं चाहते हैं।

और गैलरी ने ऑडिट लॉग तालिका के लिए +1 का उल्लेख किया।

0

एक सदस्यता तालिका। अमूल्य।

0

कोई भी डेटा धारण करने वाला उपयोगकर्ता डेटा (आपके सिस्टम डेटा के विपरीत) की सृजन तिथि और अंतिम अपडेट की गई तारीख है। यदि कोई 1% मौका है तो आपको कुछ पता होना चाहिए कि कुछ कब हुआ। यह भविष्य में बहुत सारे सिरदर्द बचाएगा। जबकि मुझे ट्रिगर्स पसंद नहीं हैं, इन दोनों क्षेत्रों को बनाए रखने के लिए उनका उपयोग करना इसके लायक है। यदि आप वास्तविक डेटाबेस लॉग इन का उपयोग करते हैं, तो create_user और update_user भी उपयोगी हैं।

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