मेरे व्यवसाय तर्क में, मेरे पास एक उपयोगकर्ता है, एक कंपनी (उपयोगकर्ता कंपनी के रूप में कंपनी का हिस्सा हो सकते हैं, मैं उन्हें "एजेंट" कहूंगा) और उत्पाद।मालिक को ट्रैक करने के लिए डेटाबेस को डिज़ाइन करें
किसी उत्पाद का उपयोग किसी उपयोगकर्ता या कंपनी द्वारा किया जा सकता है, कंपनी इसे बाद में उपयोगकर्ता (एजेंट) को असाइन कर सकती है, लेकिन कंपनी के स्वामित्व में कंपनी (यदि कंपनी एजेंट को आग लगती है) तो इसका स्वामित्व होगा।
मेरे सोचा उपयोगकर्ता तालिका, कंपनी की मेज और उत्पाद की मेज और एक मेज जो उत्पाद के मालिक को ट्रैक करने के लिए है:
--------------
| users |
--------------
| user_id |
| name |
--------------
--------------
| products |
--------------
| product_id |
| title |
--------------
--------------
| company |
--------------
| company_id |
| name |
--------------
--------------
| agents |
--------------
| agent_id |
| user_id |
| company_id |
--------------
----------------
|product_owner |
----------------
| id |
| product_id |
| user_id |
| company_id |
|agent_assigned|
----------------
उत्पाद एक उपयोगकर्ता के स्वामित्व में है तो केवल product_id और user_id भर जाएगा। यदि यह किसी कंपनी के स्वामित्व में है, तो product_id, company_id और agent_assigned भर जाएगा।
बाद में, मैं एक उत्पाद खींचना चाहता हूं, और जानता हूं कि मालिक कौन है: उपयोगकर्ता की जानकारी, या एजेंट और कंपनी की जानकारी।
क्या यह करने का सबसे अच्छा तरीका है? यह मेरे लिए अच्छा प्रतीत नहीं होता है।
हमारे पास एक संपर्क डेटाबेस है। प्रत्येक संपर्क (कम से कम) एक संगठन से संबंधित है, लेकिन उनमें से कुछ संगठन थोड़ा सार हैं - उदा। 'प्रोजेक्ट एक्स क्लाइंट समूह'। तो आपके परिदृश्य में, प्रत्येक उत्पाद का स्वामित्व किसी संगठन द्वारा किया जाएगा, भले ही उनमें से कुछ संगठन एक कल्पित तौर पर कल्पना कर रहे हों। यह प्रश्न सख्ती से एसओ की आवश्यकताओं के अनुरूप नहीं है, लेकिन मैं वैसे भी 1-अपिंग कर रहा हूं, 'मुझे यह पसंद है। – Strawberry
product_owner में company_id को स्टोर करना आवश्यक नहीं है - यह जानकारी एजेंट तालिका में पहले से ही आयोजित की गई है। एक और संभावना है कि हमेशा एक ही क्षेत्र में owner_id को स्टोर करें और एक और फ़ील्ड जोड़ें जो मालिक प्रकार – niyou
को परिभाषित करता है क्यों नहीं: Owner_type, Owner_ID, slave_type, slave_ID। और बस वहां हर संभावित संबंध राम। इस तरह सब कुछ एक ही तरीके से संभाला जा सकता है और आप वस्तुओं को कई मालिकों को भी असाइन करने की अनुमति देते हैं। ओटी = 'कंपनी', ओआई = company_id_2, एसटी = 'उत्पाद', एसआई = product_id_25 – Viridis