2011-10-05 5 views
6

मुझे यकीन नहीं है कि यह पूरी तरह से कैसे शब्द है, लेकिन मुझे इसे आज़माएं। मैं कई अलग-अलग ग्राहकों के साथ वस्तुओं के अपने स्टॉक की जांच करने, कीमतें, ऑर्डर उत्पाद इत्यादि से सबकुछ करने के लिए एक इन्वेंट्री कंट्रोल एप्लिकेशन बनाने के लिए काम कर रहा हूं। फ्रंट एंड फ्लेक्स (फ्लैश बिल्डर) और पीठ में है अंत MySQL और PHP है। तो - मुझे लगता है कि असली सवाल है। जब ग्राहक उत्पाद के लिए ऑर्डर देता है तो मुझे यकीन नहीं है कि वे कितने ऑर्डर कर रहे हैं, लेकिन मुझे सभी वस्तुओं को एक 'टिकट' पर सहेजने की ज़रूरत है। (उदाहरण: एक आदेश 2 सेब, 3 संतरे, केले, और एक कीवी के लिए हो सकता है - अगली बार सिर्फ एक सेब ऑर्डर कर सकती है।) तो मेरे 'टिकट' डेटाबेस में मेरे पास 20 आइटम तक की जगह है (टिकट Item1, टिकट Item2, आदि ...) - यहां स्पष्ट दोष यह है कि यदि ग्राहक केवल एक उत्पाद का आदेश देता है तो मुझे 19 खाली रिक्त स्थान के साथ छोड़ दिया जाता है।क्या यह ठीक है MySQL डेटाबेस में शून्य मानों के बहुत सारे है?

किस प्रकार की समस्याएं, यदि कोई हों, तो आमतौर पर डेटाबेस में बहुत सारे मूल्यों के साथ जुड़े होते हैं? क्या उन्हें होने से रोकने में मदद करने का कोई तरीका है? और क्या इसमें सहायता करने के लिए कोई सुझाव है?

इसके अलावा और अंत में - प्रत्येक आइटम का आदेश दिया गया है (चलो एक सेब का फिर से उपयोग करें) के पास इसके साथ जुड़े अपने अद्वितीय बार कोड हैं। तो एक सेब को 0001 गिना जा सकता है, और दूसरा 4524 हो सकता है ...

आपकी सहायता के लिए धन्यवाद।

-CS

+0

स्टोर ऑर्डर और आदेशित वस्तुओं के लिए 1: n संबंध का उपयोग क्यों नहीं कर सकते? – Maerlyn

+2

[डेटाबेस सामान्यीकरण] पर पढ़ें (http://www.phlonx.com/resources/nf3/)। –

+1

आपको इसे इस तरह से नहीं करना चाहिए। आपको 'ऑर्डर इटम्स' या कुछ नामक एक और टेबल जोड़नी चाहिए, जिसमें ऑर्डर की आईडी है - इस तरह आप प्रति ऑर्डर अनंत उत्पाद प्राप्त कर सकते हैं, इसे प्रबंधित करना बहुत आसान है और यह एक-दूसरे के रिश्ते में है। – Bojangles

उत्तर

7
बजाय 20 कॉलम ticketItem1, ticketItem2, ... होने के

में 10, एक मेज order_item पेश करते हैं, इस तरह:

टेबल आदेश:

id customer 
1 42 
2 23 

टेबल आइटम:

id name 
1 banana 
2 kiwi 
3 apple 
4 oranges 

तालिका order_item:

order_id item_id multiplicity 
1  1  1    # 1 banana 
1  2  1    # 1 kiwi 
1  3  2    # 2 apples 
1  4  3    # 3 oranges 
2  3  1    # 1 apple in the second order 

एक आदेश में फिर, JOIN टेबल पर सभी का आदेश दिया करने के लिए आइटम नहीं है।

1

आप एक मेज है कि आदेश को सूचीबद्ध होना चाहिए, और आदेश तालिका

तो की ओर इशारा करते आप 10 उत्पादों के लिए एक आदेश में चाहते हैं तो किसी OrderID साथ ORDERDETAILS के लिए एक। आप आदेश में 1 पंक्ति होगा, और ORDERDETAILS

+0

इसलिए यदि मैं इसे सही ढंग से समझता हूं - मेरे पास अभी भी बहुत कम मूल्य होंगे, वे केवल एक अलग तालिका में होंगे जो कॉल करता है कि उस 'टिकट' के लिए किस विशिष्ट उत्पाद का अनुरोध किया गया था। दूसरे के विरुद्ध इस तरह से ऐसा करने का क्या फायदा है? - मैं डीबी सामान्यीकरण के बारे में और भी पढ़ूंगा। हालांकि - प्रतिदिन ~ 30-50 ऑर्डर/टिकट होंगे ... मैं मदद की सराहना करता हूं! –

+0

वास्तव में नहीं। आपके पास 1 टेबल है जो टिकट के बिना सभी ऑर्डर सूचीबद्ध करती है। आपको इस तालिका में निम्न कॉलम के लिए उदाहरण हैं: आईडी, ऑर्डरडेट, आईप्रोसेस्ड, और दूसरी तालिका ऑर्डरइटम: आईडी, ऑर्डर आईडी, टिकट, और 1 टिकट के लिए विशिष्ट जानकारी के लिए कोई अन्य कॉलम। यदि आपके पास 20 टिकट के साथ एक आदेश है। आपके पास टेबल ऑर्डर में 1 प्रविष्टि होगी, और ऑर्डर डिस्प्ले में 20 प्रविष्टियां होंगी। और किसी भी कॉलम में कोई शून्य मूल्य नहीं होगा – Frank

0

यदि आप जो स्टोर करते हैं उसमें गतिशील होना चाहते हैं, तो आप एक जेसन सरणी का उपयोग कर सकते हैं। मैं दूसरों से पूरी तरह से सहमत हूं कि डेटाबेस सामान्यीकरण पहली बात है। मैं कोडड के नियमों का पालन करता हूं।

लेकिन अगर आपको पता नहीं है कि आपको जेसन स्टोर करने की ज़रूरत है तो यह एक समाधान हो सकता है। एक प्रमुख दोष हालांकि यह है कि खोज बहुत मुश्किल हो रही है।

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