कई डेटाबेस में मैं इन दिनों काम कर रहा हूं, मैं किसी भी कारणों से सिर्फ एक रिकॉर्ड को हटा नहीं सकता, जिसमें बाद में उन्हें बाद में प्रदर्शित किया जा सकता है (एक ऐसा उत्पाद कहें जो अब मौजूद नहीं है) या बस रखते हुए क्या इतिहास था।डेटाबेस के भीतर रिकॉर्ड समाप्त करने के लिए सबसे अच्छी विधि/विकल्प क्या है?
तो मेरा सवाल यह है कि रिकॉर्ड की अवधि समाप्त करने के लिए सबसे अच्छा तरीका है।
मैं अक्सर एक date_expired
स्तंभ जो datetime क्षेत्र है जोड़ लिया है। आम तौर पर मैं क्वेरी करता हूं कि date_expired = 0
या date_expired = 0 OR date_expired > NOW()
पर निर्भर करता है कि डेटा भविष्य में समाप्त होने जा रहा है या नहीं। इसी तरह, मैंने फ़ील्ड कॉल expired_flag
भी जोड़ा है। जब यह सत्य/1 पर सेट होता है, तो रिकॉर्ड समाप्त हो जाता है। यह शायद सबसे आसान तरीका है, हालांकि आपको किसी भी समय केवल मौजूदा आइटम चाहिए, जब आप समाप्ति खंड को शामिल करना याद रखना चाहते हैं।
एक अन्य विधि मैंने देखा है एक संग्रह तालिका में रिकॉर्ड बढ़ रहा है, लेकिन यह काफी गंदा हो सकता है जब वहाँ तालिकाओं कि इतिहास तालिकाओं की आवश्यकता होती है की एक बड़ी संख्या है। यह मूल्य (पुनर्प्राप्ति देश) को भी अधिक कठिन बनाता है क्योंकि आपको पहले बाएं शामिल करना होता है (उदाहरण के लिए) और फिर वास्तविक मान खोजने के लिए दूसरी क्वेरी करें (या एक संशोधित बाएं शामिल के साथ क्वेरी को फिर से करें)।
एक अन्य विकल्प है, जो मैं नहीं किया देखा है और न ही मैं पूरी तरह से प्रयास किया है अपने आप को एक मेज है कि या तो समाप्त हो रिकॉर्ड या यह किसी न किसी रूप से सभी डेटा के सभी शामिल है - इतिहास तालिका किसी तरह का । इस मामले में, पुनर्प्राप्ति और भी कठिन होगी क्योंकि आपको संभावित रूप से एक विशाल तालिका खोजना होगा और फिर डेटा को पार्स करना होगा।
क्या इनमें से अन्य समाधान या संशोधन बेहतर हैं?
मैं MySQL (PHP) के साथ उपयोग कर रहा हूँ, इसलिए मैं अगर अन्य डेटाबेस इस मुद्दे से निपटने के लिए बेहतर तरीकों पता नहीं है।
रिकॉर्ड चलती वास्तव में FKS साथ रेफेरेंन्शिअल सत्यनिष्ठा के साथ गंदा हो सकता है, मुझे लगता है कि जब – Sam
अच्छा सवाल की जरूरत है, जिस तरह से ध्वज का उपयोग कर रिकॉर्ड फिल्टर करने के लिए बेहतर है! – Sam