में डेटाबेस शैली तालिका लागू करने के लिए मैं एक वर्ग कि एक विशिष्ट डेटाबेस तालिका से मिलता-जुलता को लागू कर रहा हूँ:कैसे अजगर
- नाम दिया कॉलम और अनाम पंक्तियों
- एक प्राथमिक कुंजी जिसके द्वारा मैं का उल्लेख कर सकते है पंक्तियां
- प्राथमिक कुंजी और कॉलम शीर्षक
- द्वारा पुनर्प्राप्ति और असाइनमेंट का समर्थन करता है, किसी भी कॉलम के लिए अद्वितीय या गैर-अद्वितीय इंडेक्स जोड़ने के लिए कहा जा सकता है, जिससे किसी पंक्ति के तेज़ पुनर्प्राप्ति (या पंक्तियों का सेट) उस कॉलम में मान
- एक पंक्ति को हटाने के लिए तेज़ है और इसे "सॉफ्ट-डिलीट" के रूप में कार्यान्वित किया जाता है: पंक्ति को शारीरिक रूप से रखा जाता है, लेकिन इसे हटाने के लिए चिह्नित किया जाता है और किसी भी बाद के पुनर्प्राप्ति संचालन में दिखाई नहीं देगा
- कॉलम के अतिरिक्त तेज़ है
- पंक्तियों शायद ही कभी जुड़ जाते हैं
- कॉलम शायद ही कभी नष्ट हो जाती हैं
मैं वर्ग को लागू करने के लिए सीधे बजाय SQLite के चारों ओर एक आवरण का उपयोग का निर्णय लिया।
उपयोग करने के लिए एक अच्छी डेटा संरचना क्या होगी?
बस एक उदाहरण के रूप में, एक दृष्टिकोण के बारे में मैं सोच रहा था एक शब्दकोश है। इसकी कुंजी तालिका के प्राथमिक कुंजी कॉलम में मान हैं; इसके मूल्य इन तरीकों में से एक में लागू पंक्तियां हैं:
सूचियों के रूप में। स्तंभ संख्या कॉलम शीर्षक में मैप की जाती है (एक दिशा के लिए एक सूची का उपयोग करके और दूसरे के लिए एक मानचित्र का उपयोग कर)। यहां, एक पुनर्प्राप्ति ऑपरेशन पहले कॉलम शीर्षक को कॉलम नंबर में परिवर्तित करेगा, और फिर सूची में संबंधित तत्व ढूंढें।
शब्दकोश के रूप में। कॉलम शीर्षक इस शब्दकोश की कुंजी हैं।
दोनों के पेशेवरों/विपक्ष के बारे में निश्चित नहीं है।
कारणों मैं अपने खुद के कोड लिखना चाहते हैं:
- मैं पंक्ति विलोपन को ट्रैक करने की जरूरत है। यही है, किसी भी समय मैं यह रिपोर्ट करने में सक्षम होना चाहता हूं कि किस पंक्तियों को हटाया गया है और किस कारण से (कारण "मेरी हटा विधि को" कारण "पास किया गया है)।
- मैं अनुक्रमण के दौरान कुछ रिपोर्टिंग की जरूरत है (उदाहरण के लिए, जबकि एक गैर-अद्वितीय सूचकांक बनाया जा रहा है, मैं कुछ शर्तों की जाँच करें और रिपोर्ट यदि वे का उल्लंघन होता है करना चाहते हैं)
मौजूदा डीबीएमएस का उपयोग करने के बजाय ऐसा क्यों करें? – delnan
विशेष रूप से, 'sqlite' के आस-पास एक रैपर का उपयोग क्यों न करें? – katrielalex
@delnan @ katrielalex: कुछ कारण देने के लिए बस मेरे प्रश्न को संपादित किया। शायद स्क्लाइट रैपर के साथ ऐसा करने का कोई तरीका है? – max