कई वेब एप्लिकेशन प्रोजेक्ट्स में मैं एक हिस्सा रहा हूं, क्लाइंट अपने स्वयं के फॉर्म बनाने में सक्षम होने के लिए कहता है। सवाल उठता है कि उनकी फॉर्म परिभाषाओं को कैसे स्टोर किया जाए, और फिर उपयोगकर्ता इनपुट मानों को उन कस्टम रूपों में कैसे स्टोर किया जाए।एक संबंधपरक डेटाबेस में क्लाइंट रचनात्मक और संशोधित वेब फ़ॉर्म का सबसे अच्छा कार्यान्वयन क्या है?
मैं इसे दो तरीके से किया देखा है:
यह मानते हुए कि ग्राहक केवल क्या लेबल उन क्षेत्रों के साथ जुड़े रहे हैं कि कितने क्षेत्र, और परिभाषित करता है; हम चार तालिकाओं से जुड़े समाधान में आ सकते हैं।
FormDefinition
,FormFieldDefinition
,FormInstances
,FormFieldValues
। ग्राहकFormDefinition
औरFormFieldDefinition
में परिवर्तन करता है, और वेब ऐप उस जानकारी का उपयोग HTML वेब फ़ॉर्म प्रस्तुत करने के लिए करता है, जिस पर वेबसाइट विज़िटर (अंतिम उपयोगकर्ता) फॉर्म सबमिट करेगा, जिसमेंFormInstances
में एक नई पंक्ति बनाई गई है और मान हैंFormFieldValues
तालिका में सहेजा गया।FormDefinition
मेंपंक्तियाँ रूप है, अर्थात
form definition ID = 2, form title = 'Car Registration Form'
परिभाषित करता है।FormFieldDefinition
FormDefinition
, यानीfield definition ID = 7, field label = 'Car Model', field type = 'varchar(50)'
में किसी फ़ॉर्म के फ़ील्ड को परिभाषित करता है।FormInstance
में पंक्तियां उपयोगकर्ता द्वारा भरे प्रत्येक फॉर्म का उदाहरण है, यानीdefinition id = 2, date_entered = '2008-09-24'
। औरFormFieldValues
में पंक्तियां उपयोगकर्ता द्वारा प्रविष्टियां हैं, यानीfield definition = 7, value = 'Tiburon'
।दुर्भाग्य से, इसका मतलब है
FormFieldValues
में मूल्य स्तंभ सबसे बड़ा संभव आकार है कि आपके ग्राहक वेब फ़ॉर्म में निर्दिष्ट कर सकता है की एक चार प्रकार होना चाहिए ... और जब प्रपत्र परिभाषाएँ बदलने से पुराना डेटा के प्रबंधन iffy हो जाता है। लेकिन उपयोगकर्ता प्रविष्टियां क्वेरी करने योग्य हैं (मैंने quick query लिखा है जो एक उपयोगकर्ता आईडी प्रविष्टियों को सूचीबद्ध करता है जो another pivot question के समान है)।चार टेबल का उपयोग करने का एक विकल्प फॉर्म परिभाषाओं और उपयोगकर्ता की फॉर्म प्रविष्टियों को एक्सएमएल (या वाईएएमएल या कुछ समान) में क्रमबद्ध करना होगा और टेक्स्ट के रूप में स्टोर करना होगा। उल्टा यह है कि रूप डेटाबेस में मानव पठनीय हैं। नकारात्मकता यह है कि एक्सएमएल पार्सिंग के साथ अधिक एप्लिकेशन ओवरहेड होगा, और डेटाबेस एसक्यूएल स्टैंडपॉइंट से बहुत कम पूछताछ योग्य हो जाता है।
मेरा असली सवाल यह है कि, इस डेटाबेस मॉडल को क्या कहा जाता है? (इसलिए मैं इस समस्या को Google पर डाल सकता हूं।) लेकिन मैं इसका जवाब दूंगा: कौन सा बेहतर कार्यान्वयन है या वहां बेहतर (या उतना ही अच्छा) कार्यान्वयन है?
मुझे इस तरह के कुछ के लिए सर्वोत्तम प्रथाओं में दिलचस्पी है। साथ ही मौजूदा फॉर्म/रिकॉर्ड्स में कस्टम (मेटा) डेटा जोड़ना। मैं अतीत में अपने स्वयं के समाधान के साथ आया हूं लेकिन यह सुनकर अच्छा लगा कि दूसरों ने क्या किया है। – mattlant