उत्पादों के बंडलों के साथ उत्पादों के लिए डेटाबेस डिजाइन


14

मैं अपने खुदरा व्यापार के लिए एक डेटाबेस प्रणाली का निर्माण कर रहा हूं। मैंने कुछ तालिकाएँ निर्धारित की हैं:

  • उत्पाद
  • खरीद फरोख्त
  • बिक्री
  • संतुलन

सभी एक दूसरे से जुड़े हुए हैं और मेरी इन्वेंट्री स्तर दिखाने में सक्षम हैं।

मेरे पास जो समस्या है वह यह है कि मैं उत्पादों के बंडल भी बेचता हूं - जो कि उनके व्यक्तिगत मूल्यों की तुलना में अलग-अलग कीमतें हैं।
उदाहरण: मैं $ 1 के लिए एक नारंगी बेचता हूं, $ 1.2 के लिए एक सेब; मैं $ 7 के लिए $ 3.8, पैकेज 2 (4 संतरे और 4 सेब) के लिए फल पैकेज 1 (2 संतरे और 2 सेब) बेचता हूं।

क्या इन उत्पाद बंडलों के लिए संबंध बनाने का एक सही तरीका है?

पुनश्च: मैं इसे बनाने के FileMaker प्रो का उपयोग कर रहा हूँ।

जवाबों:


16

जिस पैटर्न का आप वर्णन कर रहे हैं, उसे अक्सर " भागों में विस्फोट " या " सामग्री का बिल " कहा जाता है । यह डेटा संरचनाओं के अध्ययन में ग्राफ़ और पेड़ों के हिस्से का हिस्सा है। समाधान का सार यह महसूस करना है कि किसी भी दिए गए "उत्पाद" को अन्य "उत्पादों" से बनाया जा सकता है। डिज़ाइन तब एक नेटवर्क संरचना है जहां एक Productतालिका होती है जिसमें प्रत्येक उत्पाद के लिए एक पंक्ति होती है - चाहे वह अन्य उत्पादों से बनी हो या नहीं और फिर एक Product Componentतालिका जिसमें प्रत्येक उत्पाद के लिए एक पंक्ति होती है जो अन्य उत्पादों से बनी होती है प्रत्येक संबंधित उत्पाद जो उस उत्पाद का एक घटक है। आपके मामले में, प्रत्येक उत्पाद की एक कीमत है। तो आपके पास ऐसा कुछ होगा

Product
-----------------------------------
|Name             |Price          |
-----------------------------------
|Orange           |1             |
|Apple            |1.20          |
|Fruit Package    |3.80          |
-----------------------------------

Product Component
----------------------------------------------------------
|Product               |Contains                |Quantity|
----------------------------------------------------------
|Fruit Package         |Orange                  |2       |
|Fruit Package         |Apple                   |2       |
----------------------------------------------------------

एक पुनरावर्ती संघ के साथ यह डिजाइन एक एकल तालिका के लिए बेहतर है क्योंकि यह साफ तौर पर अलग हो जाता है कि वास्तव में दो इकाई प्रकार क्या हैं - नोड्स और लिंक। हमारे मामले में, उत्पाद नोड हैं, और उत्पाद घटक लिंक हैं।

जबकि नेटवर्क डिज़ाइन एक सामान्य संरचना है, इसे क्वेरी करना समस्याग्रस्त है जब पूरी तरह से भरा हुआ यह अलग-अलग गहराई की पुनरावर्ती संरचना है। ओरेकल और एसक्यूएल सर्वर जैसे औद्योगिक शक्ति DBMS में विशेष भाषा तत्व (Oracle CONNECT BY और SQL सर्वर के पुनरावर्ती CTE) को क्वेरी को घोषणा योग्य बनाने में सहायता करने के लिए है। यह देखते हुए कि आप फ़ाइल मेकर प्रो का उपयोग कर रहे हैं, जिसके बारे में मुझे कम जानकारी है, हो सकता है कि आपके पास मदद के लिए इस तरह के भाषा निर्माण न हों और नेटवर्क को आगे बढ़ाने के लिए प्रक्रिया कोड लिखना पड़े। हालाँकि यह समस्या आसान हो सकती है लेकिन अगर नेटवर्क निश्चित गहराई का हो जाता है - तो कहें कि हर उत्पाद में या तो कोई घटक नहीं है, या कोई एक घटक है। डेटाबेस डिज़ाइन में नेटवर्क संरचनाओं के संबंध में कुछ संदर्भ इस प्रकार हैं:

  1. डेटाबेस प्रबंधन में व्यावहारिक मुद्दे - फैबियन पास्कल । अध्याय 7 मुझे मिला सबसे अच्छा और सबसे समझदार विवरण प्रदान करता है।
  2. जो सेल्को के पेड़ और स्मार्ट के लिए SQL में पदानुक्रम, दूसरा संस्करण । यह SQL मानक के लिए विशिष्ट विषय पर एक संपूर्ण पुस्तक है।
  3. एंटरप्राइज मॉडल पैटर्न - डेविड हे । सभी संगठनों के लिए सामान्य पैटर्न के बारे में एक पुस्तक (दुर्भाग्य से ईआर डायग्राम को यूएमएल में प्रस्तुत किया गया है लेकिन इसे दूर किया जा सकता है) नेटवर्क संरचनाओं के कई उदाहरण हैं।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.