बिट बनाम बूलियन कॉलम


12

यह देखते हुए कि बिट फ़ील्ड डेटा के केवल द्विआधारी प्रतिनिधित्व हैं और इसे थोड़ा "अजीब" तरीके से क्वेर करने की आवश्यकता है।

क्या यह वास्तव में बूलियन मूल्य के लिए एक बिट फ़ील्ड का उपयोग करके कोई लाभ प्रदान करता है? मैं जो देख सकता हूं उससे लगता है कि अंतरिक्ष ही एकमात्र वास्तविक लाभ है।

जवाबों:


14

निजी तौर पर, मैं BOOLEANएक बूलियन मूल्य के लिए उपयोग करेगा । लेकिन ध्यान रखें कि MySQL में कैविटी, [src]BOOLEAN का केवल एक पर्याय है ।TINYINT(1)

यह, ज़ाहिर है, अगर आप सावधान नहीं हैं, तो इसका मतलब है कि आपके पास 0 या 1 के अलावा अन्य मूल्य हो सकते हैं। इससे बचने के लिए, आप उपनामों का उपयोग कर सकते TRUEहैं और FALSEजब क्रमशः 1 और 0 के लिए डालने और अद्यतन करने के डेटा, उन नक्शे के रूप में।

पूर्ण होने के लिए, 5.0.3 से पहले, BITएक पर्यायवाची भी था TINYINT(1)


1

अगर मैं इसे सही ढंग से समझता हूं, तो BOOLEAN हमेशा प्रति कॉलम 1 बाइट का उपयोग करता है, लेकिन BIT (n) कुछ बाइट्स का उपयोग करेगा, जो दी गई संख्या को रखने के लिए आवश्यक हैं।

तो बीआईटी कुछ जगह बचा सकता है, लेकिन बोओलेन को काम करना आसान है अगर आपको उन्हें एसक्यूएल के साथ क्वेरी करने की आवश्यकता है।

अगर मेरे पास एक आवेदन द्वारा समझे गए झंडे का एक सेट था, और आवेदन में एक ही क्षेत्र में संग्रहीत किया गया था, तो मैं बीआईटी (एन) का उपयोग करना चाहूंगा। हालाँकि अगर मेरे पास ऐसे कॉलम हैं जो SQL से क्वेर करने की आवश्यकता है, तो मैं BOOLEAN का उपयोग करूंगा।

एक उदाहरण एक ऐसा एप्लिकेशन होगा जो झंडे का उपयोग करता था जो रिकॉर्ड करता था कि किसी घटना को किस सप्ताह चलना चाहिए, प्रति सप्ताह एक बिट के साथ, यदि 1 दिए गए सप्ताह पर चलता है। यदि डेटा को डेटाबेस में क्वेरी के लिए आसान बनाया जा रहा था, तो यह दो तालिकाओं में "सामान्यीकृत" होगा, लेकिन यदि डेटा को केवल डेटाबेस में संग्रहीत करने की आवश्यकता होती है, तो यह उस एप्लिकेशन के उपयोग के रूप में सबसे अच्छा रखा जाता है। में।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.