मुझे पूरा यकीन है कि बहुत सारे एप्लिकेशन, महत्वपूर्ण एप्लिकेशन, बैंक और ऐसा दैनिक आधार पर करते हैं।
सब के पीछे विचार है:
- सभी पंक्तियों का एक इतिहास होना चाहिए
- सभी लिंक सुसंगत रहना चाहिए
- "वर्तमान" कॉलम प्राप्त करने के लिए अनुरोध करना आसान होना चाहिए
- जिन ग्राहकों ने अप्रचलित चीजें खरीदी हैं, उन्हें अभी भी यह देखना चाहिए कि उन्होंने क्या खरीदा है भले ही यह उत्पाद कैटलॉग का हिस्सा नहीं है
और इसी तरह।
यहाँ मैं क्या करना चाहता हूँ, और मैं उन समस्याओं की व्याख्या करूँगा जो मैं कर रहा हूँ।
मेरे सभी टेबल में वे कॉलम होंगे:
id
id_origin
date of creation
start date of validity
start end of validity
और यहाँ CRUD संचालन के लिए विचार हैं:
- बनाएँ = के साथ नई पंक्ति डालें
id_origin
=id
,date of creation
= अब,start date of validity
= अब,end date of validity
= शून्य (= इसका मतलब है कि यह वर्तमान सक्रिय रिकॉर्ड है) - अद्यतन =
- read
end date of validity
== सभी रिकॉर्ड्स को == null के साथ पढ़ें - "वर्तमान" रिकॉर्ड
end date of validity
= के साथ nullend date of validity
= अभी अपडेट करें - नए मानों के साथ एक नया बनाएं, और
end date of validity
= null (= इसका मतलब यह वर्तमान सक्रिय रिकॉर्ड है)
- read
- हटाना = "वर्तमान" रिकॉर्ड को अपडेट
end date of validity
= साथ अशक्तend date of validity
अब =
तो यहाँ मेरी समस्या है: कई-से-कई संघों के साथ। मानों के साथ एक उदाहरण लेते हैं:
- तालिका A (id = 1, id_origin = 1, start = now, end = null)
- तालिका A_B (प्रारंभ = अब, अंत = शून्य, id_A = 1, id_B = 48)
- तालिका B (id = 48, id_origin = 48, start = now, end = null)
अब मैं तालिका ए, रिकॉर्ड आईडी = 1 को अपडेट करना चाहता हूं
- मैं रिकॉर्ड आईडी = 1 को अंत के साथ चिह्नित करता हूं
मैं तालिका A और ... में एक नया मान सम्मिलित करता हूं ... धिक्कार है कि मैंने अपना संबंध A_B खो दिया है, जब तक कि मैं संबंध की नकल नहीं करता, तब तक ... यह तालिका में समाप्त हो जाएगा:
तालिका A (id = 1, id_origin = 1, start = now, end = now + 8mn)
- तालिका A (id = 2, id_origin = 1, start = now + 8mn, end = null)
- तालिका A_B (प्रारंभ = अब, अंत = शून्य, id_A = 1, id_B = 48)
- तालिका A_B (प्रारंभ = अब, अंत = शून्य, id_A = 2, id_B = 48)
- तालिका B (id = 48, id_origin = 48, start = now, end = null)
और ... अच्छी तरह से मुझे एक और समस्या है: संबंध A_B: क्या मैं (id_A = 1, id_B = 48) को अप्रचलित के रूप में चिह्नित करूंगा या नहीं (A - id = 1 अप्रचलित है, लेकिन B - 48 नहीं)?
इससे कैसे निपटें?
मुझे इसे बड़े पैमाने पर डिजाइन करना है: उत्पाद, साझेदार, और इसी तरह।
इस पर आपका क्या अनुभव है? आप कैसे करेंगे (आपने कैसे किया है)?
- संपादित करें
मुझे यह बहुत दिलचस्प लेख मिला है , लेकिन यह "कैस्केडिंग किशोरावस्था" के साथ ठीक से व्यवहार नहीं करता है (= जो मैं वास्तव में पूछ रहा हूं)