जवाबों:
ये डेटा प्रकार पर्यायवाची हैं।
मैं यहां एक अलग दृष्टिकोण लेने जा रहा हूं और सुझाव दूंगा कि यह आपके साथी डेवलपर्स के लिए आपके कोड को समझने के लिए उतना ही महत्वपूर्ण है जितना कि यह कंपाइलर / डेटाबेस के लिए है। बूलियन का उपयोग टिंटिंट का उपयोग करने के रूप में एक ही काम कर सकता है, हालांकि इसका शब्दार्थ यह बताने का लाभ है कि आपका इरादा क्या है, और यह कुछ के लायक है।
यदि आप एक टिंटंट का उपयोग करते हैं, तो यह स्पष्ट नहीं है कि आपके द्वारा देखे जाने वाले एकमात्र मान 0 हैं और 1. एक बूलियन हमेशा सही या गलत है।
boolean
MySQL में एक विशिष्ट डेटा टाइप नहीं है; यह केवल एक पर्यायवाची है tinyint
। इस पृष्ठ को MySQL मैनुअल में देखें ।
व्यक्तिगत रूप से मैं सुझाव दूंगा कि छोटेपन को प्राथमिकता के रूप में इस्तेमाल करें, क्योंकि बूलियन वह नहीं करता है जो आप सोचते हैं कि यह नाम से करता है, इसलिए यह संभावित रूप से भ्रामक कोड के लिए बनाता है। लेकिन एक व्यावहारिक स्तर पर, यह वास्तव में कोई फर्क नहीं पड़ता - वे दोनों एक ही काम करते हैं, इसलिए आप या तो उपयोग करके कुछ भी नहीं खो रहे हैं या खो रहे हैं।
एनम का उपयोग करें अपनी आसान और सबसे तेजी से
मैं एनम या टिनीट (1) की सिफारिश नहीं करूँगा क्योंकि बिटिन (1) को बूलियन मान को संग्रहीत करने के लिए केवल 1 बिट की आवश्यकता है जबकि टिनींट (1) को 8 बिट्स की आवश्यकता है।
संदर्भ
BIT(M) - approximately (M+7)/8 bytes
देखें: dev.mysql.com/doc/refman/8.0/en/storage-requirements.html
हालांकि यह यह सच है bool
और tinyint(1)
कर रहे हैं कार्यात्मक समान, bool
पसंदीदा विकल्प है क्योंकि यह तुम क्या करने की कोशिश कर रहे हैं की अर्थ अर्थ किया जाता है होना चाहिए। इसके अलावा, कई ओआरएम bool
आपकी प्रोग्रामिंग भाषा के मूल बूलियन प्रकार में परिवर्तित हो जाएंगे ।
MySQL से कनेक्ट करने के लिए डैपर का उपयोग करते समय मेरा अनुभव यह है कि इससे कोई फर्क नहीं पड़ता । मैंने निम्नलिखित स्क्रिप्ट का उपयोग करके एक अशक्त बिट (1) को एक अशक्त टॉलिंट (1) में बदल दिया:
ALTER TABLE TableName MODIFY Setting BOOLEAN null;
फिर डैपर ने अपवादों को फेंकना शुरू कर दिया। मैंने स्क्रिप्ट से पहले और बाद के अंतर को देखने की कोशिश की। और देखा कि बिट (1) टिंटिंट (1) में बदल गया था।
मैं फिर भागा:
ALTER TABLE TableName CHANGE COLUMN Setting Setting BIT(1) NULL DEFAULT NULL;
जिससे समस्या हल हो गई।
boolean
रूप से व्यवहार करता हैtinyint(1)
। आप उपयोग कर सकते हैं तोboolean
,true
औरfalse
के रूप में और MySQL व्यवहार करता है उन्हेंtinyint(1)
,1
और0
।