5

मैं निम्नलिखित डेटाबेस स्थिति है:सिद्धांत 2.1 - एकाधिक तालिकाओं के लिए मानचित्र इकाई

wp_users (user table generated by wordpress) 
ID | user_login | ... 

wp_sp_user (extension to the wp_users table) 
ID (FK) | surname | address | ... 

अब मैं पहले से ही घंटे के लिए कोशिश कर रहा है करने के लिए "फ्यूज" एक ही User इकाई, जैसे में उन दो तालिकाओं:

class User { 
    var ID; 
    var user_login; 
    var surname; 
    var address; 
    ... 
} 

वहाँ wp_user तालिका (जो मैं कारणों को अद्यतन करने के लिए नहीं करना चाहते हैं) को संशोधित किए बिना इस तरह के एक मानचित्रण पूरा करने के लिए कोई तरीका है?

+0

http://stackoverflow.com/questions/18213381 संबंधित है –

उत्तर

15

कभी-कभी डेटाबेस पुनर्रचना संभव नहीं है या तालिका अपने ही "किशमिश" है। इन मामलों में आप विरासत का उपयोग कर सकते हैं। आपका उपयोगकर्ता वर्ग खाता बढ़ा सकता है। Wp_users पर मानचित्र खाता और wp_sp_user तालिका के साथ इसे विस्तारित करें। उपयोगकर्ता कक्षा दो तालिकाओं के कॉलम का उपयोग करेगी।

http://docs.doctrine-project.org/en/latest/reference/inheritance-mapping.html#class-table-inheritance

+2

@MrMuh यह सही और सहायक है, जबकि स्वीकृत उत्तर गलत/पुराना है। कृपया इसे स्वीकृत उत्तर देने पर विचार करें। –

-5

यह संभव नहीं है। ऐसा करने के लिए भी यह समझ में नहीं आता है।

आप शारीरिक रूप से MySQL में एक साथ टेबल विलय और उस तालिका के लिए एक सिद्धांत इकाई बनाने की आवश्यकता होगी। यह एकमात्र तरीका है जिससे आप सुनिश्चित कर सकते हैं कि आपका डेटा साफ़ और पूरी तरह सामान्यीकृत है।

एक अन्य संभावित समाधान हर तालिका के लिए एक इकाई बना सकते हैं और प्रत्येक से परिणाम गठबंधन करने के लिए एक व्यापार वस्तु का प्रयोग है। यह बिल्कुल अच्छा समाधान नहीं है, क्योंकि आपको एप्लिकेशन लेयर पर बाधाओं को संभालना होगा, और आप लॉन्च किए गए प्रश्नों की मात्रा दोगुनी कर देंगे।

+1

+1:

यहाँ सिद्धांत प्रलेखन है। साथ ही, यह एक अच्छा विचार नहीं है कि एक वर्ग है जो कई डेटाबेस तालिकाओं से डेटा को समाहित करता है। आप टेबल को एकल में विलय करना चाहते हैं, या दो वर्गों को डिज़ाइन करना चाहते हैं। अपने वर्तमान दृष्टिकोण में यह [ 'डाइवर्जेंट Change'] (http://sourcemaking.com/refactoring/divergent-change) किसी तरह का है। तो, जल्दी या बाद में आपको इसे दोबारा करना होगा। – J0HN

+3

-1 तीसरा सामान्य रूप वास्तव में साइस है कि आप संदर्भ के आधार पर डेटा को अलग कर सकते हैं। आपके पास 2 टेबल उपयोगकर्ता और उपयोगकर्ता विवरण हो सकते हैं। लेकिन तदनुसार तीसरे सामान्य रूप में उपयोगकर्ता विवरण को एड्रेस विवरण (सड़क, शहर, देश), व्यक्तिगत विवरण (लिंग, ऊंचाई, आयु, आय, no_children), contact_details (phone_no, PoBox) और अन्य में विभाजित किया जाना चाहिए। सिद्धांत अभी भी एक कमजोर ओआरएम है, जो कि अन्य परिपक्व भाषाओं ने लागू किया है, उनके पीछे है। उदाहरण के लिए आज भी इसमें डीडीडी मूल्य वस्तुओं (या वीओ के संग्रह) के लिए पूर्ण समर्थन नहीं है। आपका जवाब था '11 :) – Tudor

+1

में "यह संभव नहीं है। यह भी ऐसा करने के लिए कोई मतलब नहीं है।" यह गलत है। (शायद यह सिद्धांत 1 में सच था?) @ Tlmak0 के उत्तर में लिंक स्पष्ट रूप से दर्शाता है कि यह संभव है। और ओपी ने एक परिदृश्य प्रस्तुत किया जिसमें मुझे लगता है कि यह दो तालिकाओं को अलग रखने के लिए सही समझ में आता है क्योंकि वे तार्किक रूप से जानकारी के विभिन्न सेट स्टोर करते हैं (शायद ऐसा कोई मामला होगा जहां आप किसी उपयोगकर्ता को एक अलग WP खाते में असाइन करना चाहते हैं?), और वर्डप्रेस डीबी संरचना को संरक्षित करने के हित में उन्हें मर्ज करना बुद्धिमान होगा। –

संबंधित मुद्दे