मैं जल्द ही एक परियोजना पर काम शुरू कर दूंगा (spec से) मुझे थोड़ा सा स्टैक ओवरफ्लो याद दिलाता है। असल में, यह एक वेब ऐप है जिसमें उपयोगकर्ता द्वारा नियंत्रित सामग्री है।डीबी ऑब्जेक्ट्स का संस्करण नियंत्रण कार्यान्वित करना
मेरे दिमाग में मंडलियों में घूमने वाली सुविधाओं में से एक संस्करण नियंत्रण है। यहां StackOverflow पर, प्रत्येक प्रश्न और उत्तर में कई संशोधन हो सकते हैं। यह लागू करने के लिए बहुत आसान है जब आपके पास केवल एक प्रकार का ऑब्जेक्ट होता है (और, इस मामले में, इसका टेक्स्ट)।
तो, मेरे सरल पृष्ठों के लिए, मैं सेट हूं।
समस्या तब आती है जब मुझे लगता है कि कुछ ऑब्जेक्ट्स जिन्हें संस्करण नियंत्रण में होना आवश्यक है, संबंध हैं। एक ठोस उदाहरण प्रदान करने के लिए, मुझे एक यादृच्छिक अनुरूप डोमेन चुनने दें:
आइए कहें कि मैं पुस्तक/लेखक की जानकारी का ट्रैक रखने के लिए विकी जैसी साइट को कार्यान्वित कर रहा था। साइट का प्राथमिक फोकस "लेखक" पृष्ठों को बनाना और अपडेट करना होगा, जो पाठ के रूप में, बहुत सरल (ऊपर के रूप में) है। हालांकि, आइए लेखकों और पुस्तकों के बीच एक से अधिक सहयोग जोड़ें (दूसरे शब्दों में, पुस्तकें अलग-अलग वस्तुएं होंगी, क्योंकि स्पष्ट रूप से एक व्यक्ति कई पुस्तकों को लेखक बना सकता है)। प्रत्येक पुस्तक में लेखक पृष्ठ से उस पुस्तक के बारे में एक सूचनात्मक पृष्ठ पर एक लिंक होगा।
उपयोगकर्ता के लिए, लेखक का वर्णन करने वाले पाठ-आधारित "सारांश" और उस लेखक & के बीच के लिंक के बीच थोड़ा अंतर है। इस प्रकार, हमें लेखकों और पुस्तकों के बीच संबंध लेखक पृष्ठों, पुस्तक पृष्ठों, और के लिए "संशोधन"/संपादन सुविधा को लागू करने की आवश्यकता है। दूसरे शब्दों में, उपयोगकर्ता को संपादित करने, इतिहास देखने, और रोलबैक लेखक पृष्ठों, पुस्तक पृष्ठों और दोनों के बीच संबंधों को सक्षम करने में सक्षम होना चाहिए।
यह तब भी जटिल हो जाता है जब यह रिश्ता कई से अधिक हो जाता है, जहां एक पुस्तक में योगदान के रूप में कई लेखकों को सूचीबद्ध किया जा सकता है।
मेरे पास कई समाधान हैं, लेकिन उनमें से कोई भी उतना स्वच्छ नहीं है जितना मैं चाहता हूं (और कम से कम दोहराए गए कोड/अनावश्यक डेटा स्टोरेज को शामिल करता हूं), और, हालांकि मुझे जगह पर समानता दिखाई देती है यहां, मुझे लगता है कि मैं वास्तव में इसे सर्वोत्तम रूप से निकालने में सक्षम नहीं हूं, खासकर डेटाबेस स्तर पर। मैं दिए गए उत्तरों को पूर्वाग्रह नहीं करना चाहता हूं इसलिए मैं उन्हें तुरंत नहीं दे रहा हूं।
तो, आप इस सिस्टम को डेटाबेस स्तर पर कैसे डिजाइन करेंगे? मैं यहां टेबल विनिर्देशों की तलाश कर रहा हूं, और संभावित रूप से यह वर्णन करता हूं कि आप उनका उपयोग कैसे करेंगे, अगर यह तुरंत स्पष्ट नहीं है। उन उत्तरों के लिए जिनके लिए यह प्रासंगिक हो सकता है, मैं एएसपी.नेट का उपयोग करने जा रहा हूं और या तो लिंक-टू-एसक्यूएल (मैं एलटीएस में कई से अधिक आरामदायक हूं) या इकाई फ्रेमवर्क।
संपादित करें: स्पष्ट करने के लिए, मैं मूल डीबी डिज़ाइन, सामान्यीकरण, कई मैपिंग टेबल आदि को समझता हूं। मैं इस विशिष्ट स्थिति के लिए एक साफ समाधान की तलाश में हूं।
संपादित 2: मैं एक सामान्य समाधान की तलाश में हूं, क्योंकि किताबों की तुलना में सिस्टम में अधिक उप-वस्तुएं हो सकती हैं। लेखक अन्य लेखकों, पत्रिकाओं, घटनाओं, आदि इत्यादि से संबंधित हो सकता है। मुझे लगता है कि अगर मैं प्रत्येक के लिए व्यक्तिगत रूप से इतिहास लागू करता हूं तो मैं बहुत सारे काम दोहरा रहा हूं।
@ जोश जोर्डन: क्षमा न करें। बिंदु पर और अधिक होने के लिए प्रश्न को ठीक करें। –