2008-10-26 11 views
6

अपने आवेदन के लिए वहाँ कई इकाई कक्षाएं, उपयोगकर्ता, ग्राहक, डाक, और इतने पर कर रहे हैंएसक्यूएल - टेबल डिजाइन - DateCreated और DateUpdated कॉलम

मैं के बारे में डेटाबेस डिजाइन करने के लिए कर रहा हूँ और मैं तारीख जब संग्रहीत करना चाहते हैं संस्थाओं को बनाया और अद्यतन किया गया था। यहीं पर वो मुश्किल हो जाता है। निश्चित रूप से एक विकल्प है कि प्रत्येक इकाई टेबल के लिए create_timestamp और update_timestamp कॉलम जोड़ना है, लेकिन यह वह अनावश्यक नहीं है?

एक और संभावना लॉग फ़ाइल बनाने के लिए हो सकती है जो इस जानकारी को संग्रहीत करता है, और इसे किसी भी इकाई के लिए अद्यतनों का ट्रैक रखने के लिए बनाया जा सकता है।

किसी भी विचार? मैं उत्तरार्द्ध को लागू करने पर झुका रहा हूँ।

उत्तर

6

एकल लॉग-तालिका के लिए सभी तालिकाओं दृष्टिकोण दो मुख्य समस्याओं में है कि मैं के बारे में सोच सकते हैं:

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

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

0

आपको अपनी प्रस्तुति परत में बनाए गए/अपडेट किए गए टाइमस्टैम्प को कितनी बार शामिल करने की आवश्यकता होगी? अगर उत्तर "एक महान महान समय में" से अधिक कुछ है, तो मुझे लगता है कि आप प्रत्येक तालिका में उन स्तंभों को बेहतर ढंग से सेवा देंगे।

5

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

0

एक परियोजना पर मैंने कुछ साल पहले काम किया था, हमने ट्रिगर्स को लागू किया था जिसे हमने ऑडिट टेबल कहा था (यह परिवर्तन किए जाने वाले परिवर्तनों के बारे में मूलभूत जानकारी संग्रहीत करता था, प्रति तालिका एक ऑडिट तालिका)। इसमें संशोधित दिनांक (और अंतिम संशोधित) शामिल था।

वे केवल कुंजी तालिकाओं पर लागू होते थे (डेटा तालिकाओं में शामिल नहीं होते या संदर्भित नहीं होते)।

इसने LastCreated & LastModified फ़ील्ड के लिए खाते होने की सामान्य सामान्य निराशा को हटा दिया, लेकिन ट्रिगर्स को अद्यतित रखने की परेशानी पेश की।

अंत में ट्रिगर/ऑडिट टेबल डिज़ाइन अच्छी तरह से काम करता था और हमें याद रखना था कि ईटीएल (!) से पहले ट्रिगर्स को हटाना और पुनः लागू करना था।

0

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

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