एक परियोजना के लिए जिस पर मैं काम कर रहा हूं, मुझे रिकॉर्ड में किए गए सभी परिवर्तनों का ऑडिट ट्रेल बनाने के लिए कहा गया है। यह पहली बार है जब मुझे ऑडिट ट्रेल बनाना पड़ा, इसलिए मैं इस विषय पर बहुत सारे शोध कर रहा हूं।मैं किन फ़ील्ड कभी संपादित किए जाने के लिए ऑडिट ट्रेल का उपयोग कैसे करूं?
एप्लिकेशन PHP/MSSQL में विकसित किया जाएगा, और कम यातायात होगा।
मेरे पढ़ने से, मैंने ऑडिट तालिका रखने और तालिका में बदलावों को रिकॉर्ड करने के लिए ट्रिगर्स का उपयोग करने का काफी निर्णय लिया है।
आवेदन में प्रदर्शन के लिए दो आवश्यकताओं इस प्रकार हैं:
एक क्षेत्र में किए गए परिवर्तनों का एक लॉग देखने के लिए सक्षम होना चाहिए (मैं काफी ऐसा करने के तरीके जानते हैं)
एप्लिकेशन में रिकॉर्ड देखने पर, देखने में सक्षम रहें, रिकॉर्ड में किसी भी फ़ील्ड के बगल में एक संकेतक जो कभी भी बदला गया है (और संभावित रूप से अंतिम जानकारी की तारीख जैसी अन्य जानकारी)।
आइटम # 2 वह है जो वर्तमान में मुझे दुःख दे रहा है। प्रत्येक फ़ील्ड के लिए एक अलग क्वेरी करने के बिना (या एक बहुत लंबी घोंसला वाली क्वेरी जो निष्पादित करने में आयु लेती है), क्या किसी को ऐसा करने के लिए इष्टतम तरीके के लिए सुझाव हैं? (मैंने तालिका में प्रत्येक फ़ील्ड के लिए एक अतिरिक्त "संशोधित फ्लैग" फ़ील्ड जोड़ने का विचार किया है, जो कि क्षेत्र को कभी भी संपादित किया गया है, लेकिन यह बहुत अधिक ओवरहेड की तरह लगता है।
किस फ़ील्ड के 'आसान पुनर्प्राप्ति' के लिए बदल दिया गया है, शायद मैं एक ट्रिगर बना सकता हूं जो मुख्य तालिका में और अलग 'मूल' तालिका में सृजन पर प्रारंभिक रिकॉर्ड संग्रहीत करता है? फिर प्रदर्शन के लिए मैं केवल दोनों तालिकाओं ('मुख्य' और 'मूल') से रिकॉर्ड पुनर्प्राप्त कर सकता हूं और उचित फ़ील्ड को ध्वजांकित करने के लिए कोड में उनकी तुलना कर सकता हूं? – Kirsehn
संभव है, लेकिन फिर आपके पास स्टोर करने के लिए प्रत्येक चीज के लिए दो टेबल होंगे, और आप केवल यह देख सकते हैं कि रिकॉर्ड बनाए जाने के बाद से कई फ़ील्ड बदल गए हैं। मेरे उत्तर में उल्लिखित समाधान आपको विस्तृत ऑडिट ट्रेल बनाने की अनुमति देता है जो दिखा सकता है कि समय के साथ कौन से फ़ील्ड बदल गए हैं और उन फ़ील्ड के मूल्य क्या हैं। दूसरे शब्दों में आप एक इतिहास बनाते हैं। साथ ही, आपको सबकुछ के लिए दो टेबल बनाने की ज़रूरत नहीं है, केवल आपकी 'मुख्य' टेबल और आपके ऑडिट ट्रेल हेडर और आइटम टेबल – dwergkees
समझ में आता है। मैंने शायद अपनी पहली टिप्पणी में खुद को स्पष्ट नहीं किया। मेरा मतलब था कि ऊपर दिए गए तरीके के अलावा (जिसे मैं सहमत हूं), मूल रिकॉर्ड को स्टोर करने के लिए एक अलग तालिका भी बनाते हैं। यह मुझे लगता है कि ऑडिट ट्रेल से पुनर्प्राप्त करने की कोशिश करने के बजाय, फ़ील्ड की एक साधारण सूची (फ़ील्ड को चिह्नित करने के लिए चिह्नित करने के लिए) की एक आसान सूची की बहुत आसान पुनर्प्राप्ति होगी। मैं अभी भी सभी परिवर्तनों के विवरण प्रदर्शित करने के लिए निशान का उपयोग करूंगा। – Kirsehn