खैर, यह उन क्षेत्रों में से एक है जिस पर अभी भी काफी चर्चा हो रही है। जैसा कि कुछ कहते हैं [कौन? - लगता है कि यह Atwood था अन्य लोगों के बीच, लेकिन एक लिंक मुझसे बच जाता है], एक आवेदन जो सब कुछ कर सकता है वह पहले ही बनाया जा चुका है; इसे सी कहा जाता है। आप जो करना चाहते हैं वह लगभग 'बहुत सामान्यीकृत' क्षेत्र की सीमाएं हैं, हालांकि जब भी कोई व्यवसाय नियम बदलता है तो मुझे प्रोग्रामर की आवश्यकता नहीं होने में मूल्य दिखाई देता है।
अगर मुझे ऐसी प्रणाली को लागू करना है, तो मुझे लगता है कि मैं कोशिश करूँगा और इसे डोमेन में तोड़ दूंगा। आपने पहले से ही दूसरी तालिका के साथ इसका अपेक्षाकृत अच्छा काम किया है। बस इसे अलग-अलग डोमेन में सामान्यीकृत करें जिनका उपयोग व्यावसायिक नियमों को संयोजित करने के लिए किया जाता है। आप एक व्यवसाय नियम बनाते हैं जिसमें 1 या कई बाधाएं OR-ed एक साथ होती हैं। प्रत्येक बाधा को एक ऐसी संपत्ति की आवश्यकता होती है जो एक ऑपरेटर के साथ एक शब्द के खिलाफ प्रतिबंधित हो। शर्तें मुश्किल हो सकती हैं, क्योंकि वे किसी संपत्ति से लेकर किसी फ़ंक्शन तक, एक कंपाउंड फ़ंक्शन तक कुछ भी हो सकती हैं। आपको क्या चाहिए यह देखने के लिए अपने व्यावसायिक नियमों की जांच करना शायद सबसे आसान है। शुरू करें, कहें, गुण, बूलियन और 'नाउ' जैसी सामान्य चीजें।
तो स्कीमा स्वयं, उदाहरण के लिए, rules
. से मिलकर बनेगी , जिसमें कई constraints
हैं (स्पष्ट लाभ यह है कि आप इन्हें किसी भी [उपयोगकर्ता समूह/प्रस्ताव/समय/अन्य डोमेन] से जोड़ सकते हैं)। बदले में, ये properties
. से बने होते हैं , जिसकी तुलना operators
. में से किसी एक से की जाएगी (संदर्भ तालिका ज्यादातर ताकि आप गैर-प्रोग्रामर के लिए कस्टम वर्णनात्मक नाम दर्ज कर सकें, लेकिन आप किसी बिंदु पर इसमें एक कस्टम फ़ंक्शन दर्ज करना चुन सकते हैं) और निश्चित रूप से terms
में से एक . अंतिम भाग सबसे जटिल है, इसलिए आपको शायद इसे term_types
में एक आईडी के साथ अर्हता प्राप्त करनी होगी ताकि आप जान सकें कि आप किसी अन्य प्रॉपर्टी या फ़ंक्शन से तुलना कर रहे हैं या नहीं। आप बस VARCHAR
. भी कर सकते हैं इसे और PHP के साथ फ़ील्ड बनाएं, जो बहुत कठिन नहीं होना चाहिए, यह देखते हुए कि आपके पास properties
में सभी विकल्प कैसे हैं और/या functions
।
यह एक बहुत ही ओपन-एंडेड सिस्टम है (और इसमें जाने के शायद बेहतर तरीके हैं), इसलिए शायद यह तब तक करने लायक नहीं है जब तक आप यह नहीं जानते कि आपको व्यावसायिक नियमों में उच्च स्तर की गतिशीलता की आवश्यकता होगी।