मैं एक MVC आवेदन Zend फ्रेमवर्क है कि एक Oracle 10g डेटाबेस और प्रदर्शित करता है टेबल्स और सूचियों में इस डेटा से डेटा खींचती है और नेत्रहीन रंग और चार्ट के माध्यम से इस डेटा समृद्ध के साथ लिखा मिल गया है। कोई ओआरएम नहीं है और कोई भी बनाएँ, अपडेट या हटाएं, केवल शुद्ध पठन। डेटा किसी अन्य एप्लिकेशन से डाला गया है। डीबी में डेटा अवधारणाओं वे प्रतिनिधित्व के बाद मॉडलिंग की और करके डीबी विचार है कि विभिन्न अन्य तालिकाओं से इस डेटा को समेकित (विरासत, बदल नहीं सकते), उदा एक्सेस किया जाता हैआप इस एप्लिकेशन को कैसे मॉडल करेंगे?
| Event ID | Start | End | Status | Created_By |
-----------------------------------------------------------------------------
| 12345678 | 2009-10-01 12:00:00 | 2009-10-01 12:15:00 | booked | John Doe |
| 12345679 | 2009-11-01 13:00:00 | 2009-12-01 12:00:00 | booked | John Doe |
| 12345680 | 2009-11-01 13:00:00 | 2009-12-01 12:00:00 | tba | Jane Doe |
उपयोगकर्ता दृश्य से कॉलम प्रदर्शन, ऑर्डरिंग और सॉर्टिंग को प्रभावित कर सकते हैं। ग्राहक कॉलम तक पहुंच से इनकार कर सकते हैं और कॉलम सामग्री को कुछ मानों तक सीमित कर सकते हैं। उपयोगकर्ता क्लाइंट सेटिंग्स को ओवरराइड नहीं कर सकते हैं। उपयोगकर्ता एक अभिनेता है, जबकि क्लाइंट मूल रूप से केवल एक फ़िल्टर है जो क्लाइंट से संबंधित उपयोगकर्ता को उपलब्ध डेटा का सबसेट बनाता है। उपयोगकर्ता और ग्राहक सेटिंग्स जारी हैं।
मेरे वर्तमान दृष्टिकोण इस तरह मोटे तौर पर काम करता है:
Request --> Controller
| <--> sanitizes and returns Request params
| ---> Facade (capsules steps to fetch View Data)
| | <--> Table Data Gateway builds Query for requested View
| | <--> Query Decorator¹ applies User/Client settings
| | <--> DB Adapter fetches RecordSet from decorated Query
| <----returns Recordset
| <--> applies RecordSet to View
| <--> Data-Aware ViewHelper render RecordSet (and View)
Response <--returns rendered View
¹
क्वेरी डेकोरेटर मौजूदा उपयोगकर्ता/ग्राहक सेटिंग्स में पढ़ सकते हैं और मक्खी पर TDG द्वारा दिया बुनियादी क्वेरी वस्तु में जोड़ सकते हैं।
हालांकि, हाल ही में मैं इस दृष्टिकोण पर शक किया गया है और यह सुधार करना चाहते हैं। मुझे लगता है कि मैं पूरी तरह से टीडीजी को हटा सकता हूं और यूआई से पूरी तरह जेनेरिक व्यू बिल्डिंग कर सकता हूं; अकेले डीबी संरचना के आधार पर। उपयोगकर्ता निश्चित रूप से यह पसंद करेंगे। बात यह है कि दृश्य को डेटा के बारे में बहुत कुछ पता होना चाहिए। व्यूहेल्पर को आंकड़ों को समृद्ध करने के लिए कॉलम नामों को जानना होता है और अक्सर वे रिकॉर्ड्स में एकाधिक कॉलम के संबंध में ऐसा करते हैं। वे सामान्य नहीं हो सकते हैं और कुछ मुझे बताता है कि यह वैसे भी परेशानी है। यह मिशमाश की तरह लगता है। मैं बस क्यों तय नहीं कर सकता।
किसी भी पैटर्न, विचारों - और राय - बहुत सराहना कर रहे हैं। मुझे पता है कि सवाल कुछ अस्पष्ट है, लेकिन जैसा कि मैंने कहा, मैं यह तय नहीं कर सकता कि मुझे इस दृष्टिकोण पर संदेह क्यों है। तो मुझे लगता है कि मैं उपयोगकर्ता और क्लाइंट अनुकूलन योग्य डेटाबेस केंद्रित अनुप्रयोगों को एक बनाए रखने योग्य तरीके से बनाने के लिए किसी भी अच्छे अभ्यास दृष्टिकोण की तलाश में हूं। मैं निश्चित रूप से एक समाधान है, सिर्फ कुछ विचारों और हो सकता है कुछ लिंक को देखने के लिए कैसे अन्य लोगों को इस समस्या के दृष्टिकोण की जरूरत नहीं है, इसलिए मैं अगले रिफैक्टरिंग पर खाते में ले जा सकते हैं।
नोट
मैं एक जवाब स्वीकार करने से पहले पूरी अवधि के लिए खुला प्रश्न छोड़ देंगे। किसी भी इनपुट की सराहना की है।
मेरी संदेह माफ करें, लेकिन: दृश्य डेटा बारे में बहुत कुछ पता है की जरूरत है? ViewHelpers कॉलम नामों को जानना है? * क्यों? * यह लगभग एक आंतरिक-प्लेटफ़ॉर्म प्रभाव की तरह लगता है, जो माइक्रोसॉफ्ट एक्सेस या कॉग्नोस का पुनर्विचार है। एक निश्चित दहलीज से परे अनुकूलन बुरा है; यह * आवश्यकताएं * हो सकती है जिसे रीफैक्टरिंग की आवश्यकता होती है। – Aaronaught
@ एरोशॉट संदेहवाद ठीक है। यही कारण है कि मैंने इस सवाल से पूछा :) तुम्हारा जवाब देने के लिए: कल्पना करें कि एक व्यूहेल्पर है जो एक स्टार्ट *, * एंड * और * स्टेटस * के आधार पर एक टाइमलाइन बार प्रस्तुत करता है जो एक संपूर्ण रिकॉर्ड्स को एक व्यूहेल्पर के अतिरिक्त प्रस्तुत करता है जो * Made_By * के आधार पर एक पाइचार्ट प्रस्तुत करता है। – Gordon