मैंने अब तक कई डेटाबेस (MySQL) वेब ऐप्स लिखे हैं लेकिन मुझे हमेशा लगता है कि मेरी संरचना थोड़े अनाड़ी है। मैं यहाँ प्रोग्रामिंग / डिज़ाइन पैटर्न का उपयोग करना चाहता हूँ, यहाँ कुछ सलाह की उम्मीद है। विशेष रूप से, मुझे एक संरचना नहीं मिल सकती है जो एक OOP दृष्टिकोण को पूरक करता है जो डेटाबेस (स्कीमा) के कार्यान्वयन को बाधित करता है। मैं
लगता है कि मेरे प्रश्न को उदाहरण द्वारा समझाया जा सकता है। 2 दृष्टिकोण हैं जिनका मैं अब उपयोग करता हूं मेरे पास एक इनवॉइस ऑब्जेक्ट / वर्ग है:
पहले स्थैतिक सदस्य कार्यों का उपयोग करना है
class Invoice
{
int id;
string ref;
int customer_id;
date created;
date due;
static id create();
static bool update(id, field1, field2, ...);
static bool delete(id);
static bool get(id);
};
दूसरी बात यह है कि हर वस्तु को डेटाबेस ऑब्जेक्ट में रखा जाए:
class Database extends ProprietaryDBConnecter, Singleton
{
id createInvoice();
bool updateInvoice(id, field1, field2, ...);
bool deleteInvoice(id);
bool getInvoice(id);
id createCustomer();
bool updateCustomer(id, field1, field2, ...);
bool deleteCustomer(id);
bool getCustomer(id);
// etc...
}
मुझे लगता है कि दोनों तरीके (SQL) सदस्य कार्य "दृश्य" से बहुत अधिक अप्राप्य हैं, इसमें "दृश्य" निर्धारित करता है कि कक्षाओं के लिए क्या आवश्यक है और इसलिए दस्तावेज़ / दृश्य वास्तुकला को तोड़ने के लिए लगता है।
इसके अलावा, ऐसा लगता है कि उदाहरण के लिए यह अक्षम है कि एक सेलेक्ट स्टेटमेंट का चयन केवल वही होना चाहिए जो आवश्यक हो, लेकिन इनवॉइस में सदस्य चर की उपस्थिति का अर्थ "गारंटीकृत डेटा" है।
पता नहीं अगर मैंने स्पष्ट रूप से प्रश्न समझाया, तो इस वास्तुकला / डिजाइन पैटर्न / व्हाट्स-इट-इज़-ए-ज्ञात के रूप में कुछ अन्य सर्वोत्तम दृष्टिकोण क्या हैं?
सलाह के लिए धन्यवाद