2008-11-06 12 views
15

के साथ डेटाबेस में असीमित का प्रतिनिधित्व करना मेरे पास एक सारणी है जो उपयोगकर्ताओं की तरह कुछ खाता सीमाएं बचाती है। अधिकांश पंक्तियों के लिए यह मान एक पूर्णांक होगा। हालांकि मुझे एक मूल्य के रूप में असीमित (अनंत) भंडारण का समर्थन करने की भी आवश्यकता होगी। यह मूर्खतापूर्ण प्रतीत हो सकता है लेकिन क्या एक सामान्य पूर्णांक मान है जो असीमित (अनंत) का प्रतिनिधित्व करता है? मैं मूल्यों को पूर्णांक के रूप में संग्रहीत करना चाहता हूं।पूर्णांक डेटा प्रकार

+0

सीमा एक पूर्णांक होगी। किस सीमा में? सकारात्मक? –

+0

यदि आपको वास्तव में इस अवधारणा को खींचने की आवश्यकता है (जो आप शायद नहीं करते हैं) तो आप एक ईएनएन बना सकते हैं ताकि किसी भी विशेष मूल्य का अर्थ – ldgorman

उत्तर

24
  • उपयोग शून्य
  • उपयोग -1
  • उपयोग अशक्त

मैं, अशक्त पसंद करते हैं जब तक कि क्षेत्र नल नहीं है, तो मैं शून्य पसंद करते हैं, जब तक कि शून्य कोई मान्य सीमा है, तो मैं 1 पसंद करें, जब तक -1 मान्य मान नहीं है, इस मामले में आपको 'असीमित' को इंगित करने के लिए अन्य फ़ील्ड (कहें, थोड़ा फ़ील्ड) चाहिए।

+1

एचएम में आने वाले किसी के लिए स्पष्ट हो। शून्य और -1 पूर्णांक के सेट के सदस्य हैं। और शून्य (कोई डेटा नहीं) पहले से ही वैध मान हो सकता है। नए विशेष अर्थ रखने के लिए जाने-माने मूल्यों को फिर से परिभाषित करना भ्रमित और आम तौर पर बुद्धिमान नहीं है। –

+1

नहीं, यह समझ में आता है। जाहिर है कि वह जिस सामान्य सीमा के बारे में बात कर रही है वह पूर्णांक का सेट नहीं है, यह गैर-ऋणात्मक पूर्णांक का सेट होगा। चूंकि आप स्पष्ट रूप से -1 उपयोगकर्ताओं की सीमा निर्धारित नहीं कर सकते हैं, तो यह स्पष्ट है कि इसका एक विशेष मूल्य है। इस विधि का प्रयोग कई प्रोग्रामिंग भाषाओं में भी किया जाता है। – nickf

+0

@ [fixme.myopenid.com]: सहमत हुए, लेकिन मुझे लगता है कि इस मामले में पूर्णांक मानों की पूरी श्रृंखला का उपयोग नहीं किया जाता है, क्योंकि हम खाता सीमाओं के बारे में बात कर रहे हैं। उस स्थिति में आप एक सेंटीनेल वैल्यू (http://en.wikipedia.org/wiki/Sentinel_value) चाहते हैं, जो ठीक है। जब तक यह दस्तावेज है! –

4

ठीक है, यदि आप .NET से अपने डेटाबेस तक पहुंच रहे हैं, तो पूर्णांक प्रकारों में लगातार सदस्य MaxValue और MinValue हैं। हम कभी-कभी अनंतता का प्रतिनिधित्व करने के लिए उनका उपयोग करते हैं। बेशक, इन मानों का आपके आरडीबीएमएस में कोई विशेष अर्थ नहीं है ...

+0

"अच्छी तरह से परिभाषित करना- नए विशेष अर्थ रखने के लिए ज्ञात मान भ्रमित और आम तौर पर बुद्धिमान नहीं हैं "आपका मतलब है, मिनवैल्यू और मैक्सवैल्यू को फिर से परिभाषित करना? जबरदस्त हंसी! ;-) –

+2

मुझे लगता है कि इसका क्या अर्थ है कि मैक्सवेल्यू वास्तव में व्यावहारिक सीमा है, तो इसका उपयोग क्यों न करें? – tvanfosson

3

एक पूर्णांक के रूप में, अनंतता कठिन होगी। कुछ विकल्प:

1) -1, इसी प्रोग्राम तर्क के साथ जो इसे अनंत के रूप में मानता है (और यह मानते हुए कि नकारात्मक मान वास्तव में मान्य नहीं हैं)।

2) एक अतिरिक्त कॉलम जिसमें एक ध्वज है जो परिमित/अनंत दर्शाता है।

5

आपके पास असीमित संख्या में खाते नहीं हैं क्योंकि असीमित संख्या में लोग नहीं हैं। असल में, आप वास्तव में उन खातों की संख्या में सीमित हैं जो आपके पास हो सकते हैं (यदि आप एक डेटाबेस कॉलम में मान को स्टोर करना चुनते हैं) क्योंकि गणनीय चीजों के लिए किसी भी सीमित स्टोरेज तंत्र की सीमा है। मैं सुझाव देता हूं कि @ टोर हौगेन के साथ, यह करने का सबसे अच्छा तरीका सिस्टम द्वारा लगाई गई सीमा का उपयोग करना है (जो भी अधिकतम पूर्णांक या आपकी भाषा प्रदान करता है)। इस तरह आपको अपनी तुलना के लिए किसी विशेष मामले के बारे में चिंता करने की आवश्यकता नहीं होगी। इसके अतिरिक्त, मैं क्षेत्र में नकारात्मक मानों को संग्रहीत करने के लिए डेटाबेस बाधा का उपयोग करता हूं। एक 64-बिट पूर्णांक निश्चित रूप से आपके आवेदन के लिए व्यावहारिक रूप से असीमित होने के लिए पर्याप्त संख्या में होगा।

0

मुझे नहीं लगता कि एक आदर्श समाधान है। तो यहां मेरा सुझाव दिया गया है:

स्थिरांक बनाएं जो आपके डेटाबेस में संग्रहीत अधिकतम मानों का प्रतिनिधित्व करते हैं और उन्हें "इन्फिनिटी" मानते हैं।

http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html#integer-types

+1

मैं ऐसा करने के बारे में सोच रहा था, लेकिन 2016 है, क्या हमारे पास अभी तक कुछ बेहतर नहीं है: डी –

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