सबसे अच्छा विकल्प 0 और 1 है (संख्या के रूप में - एक अन्य उत्तर 0 और 1 को CHAR के रूप में बताता है स्पेस-दक्षता के लिए के लेकिन मेरे लिए थोड़ा बहुत मुड़ है), उन मूल्यों पर सामग्री को सीमित करने के लिए NOT NULL और एक चेक बाधा का उपयोग कर रहा है। (यदि आपको स्तंभ को अशक्त होने की आवश्यकता है, तो यह एक बूलियन नहीं है जो आप के साथ काम कर रहे हैं, लेकिन तीन मूल्यों के साथ एक गणना है ...)
0/1 के लाभ:
- भाषा स्वतंत्र। 'Y ’और Y N’ सबको इस्तेमाल करने पर ठीक रहेगा। लेकिन वे नहीं करते। फ्रांस में वे 'ओ' और 'एन' का उपयोग करते हैं (मैंने इसे अपनी आंखों से देखा है)। मैंने फिनलैंड में यह देखने के लिए प्रोग्राम नहीं किया है कि क्या वे 'ई' और 'के' का उपयोग करते हैं - इसमें कोई संदेह नहीं है कि वे इससे ज्यादा चालाक हैं, लेकिन आप सुनिश्चित नहीं हो सकते।
- व्यापक रूप से उपयोग की जाने वाली प्रोग्रामिंग भाषाओं (C, C ++, पर्ल, जावास्क्रिप्ट) में अभ्यास के साथ बधाई
- हाइबरनेट जैसे अनुप्रयोग परत के साथ बेहतर खेलता है
- अधिक संक्षिप्त एसक्यूएल ओर जाता है, उदाहरण के लिए, पता लगाने के लिए कितने केले खाने के लिए तैयार कर रहे हैं
select sum(is_ripe) from bananas
के बजाय select count(*) from bananas where is_ripe = 'Y'
या यहाँ तक कि (युक)select sum(case is_ripe when 'Y' then 1 else 0) from bananas
'Y' / 'N' के लाभ:
- 0/1 से कम जगह लेता है
- यह वही है जो ओरेकल सुझाता है, इसलिए हो सकता है कि कुछ लोग अधिक अभ्यस्त हों
एक अन्य पोस्टर ने प्रदर्शन लाभ के लिए 'Y' / null का सुझाव दिया। यदि आपने यह साबित कर दिया है कि आपको प्रदर्शन की आवश्यकता है, तो पर्याप्त रूप से उचित है, लेकिन अन्यथा इससे बचें क्योंकि यह कम स्वाभाविक बनाता है ( some_column is null
इसके बजाय some_column = 0
) और बाईं ओर शामिल होने पर आप बिना किसी रिकॉर्ड के झूठेपन का सामना करेंगे।
wall
डेटा प्रकार होता, तो मैं बूलियन्स का उपयोग करते समय इसके खिलाफ अपना सिर तोड़ सकता था।