१. परिचय
MySQL एक खुला स्रोतको RDBMS हो जसले डाटाबेस व्यवस्थापनमा धेरै विकासकर्ताहरूको प्रमुख विकल्प बनिसकेको छ। यसको डेटा प्रकारहरू मध्ये, BOOLEAN सत्य/असत्य मानहरू प्रतिनिधित्व गर्न व्यापक रूपमा प्रयोग हुन्छ। तर, MySQL मा BOOLEAN को ह्यान्डलिङ अन्य डाटाबेस प्रणालीहरू भन्दा फरक हुन्छ, जसले सावधानीपूर्वक ध्यान आवश्यक बनाउँछ। यस लेखमा, हामी MySQL मा BOOLEAN को आधारभूत कुराहरू, यसको सीमाहरू, र वैकल्पिक दृष्टिकोणहरू विस्तृत रूपमा व्याख्या गर्नेछौं।
२. BOOLEAN प्रकारको आधारभूत जानकारी
२.१ MySQL मा BOOLEAN को परिभाषा र कार्यान्वयन
MySQL मा, BOOLEAN अलग डेटा प्रकारको रूपमा अस्तित्वमा छैन; यसको सट्टा यो TINYINT(1) प्रयोग गरेर कार्यान्वित हुन्छ। BOOLEAN केवल TINYINT(1) को उपनाम हो, जहाँ 0 लाई आन्तरिक रूपमा FALSE र 1 लाई TRUE मानिन्छ। यसको अर्थ, BOOLEAN को रूपमा परिभाषित स्तम्भले 0‑255 बीचको कुनै पनि पूर्णांक सङ्ख्या भण्डारण गर्न सक्छ, यद्यपि केवल 0 र 1 लाई मात्र बूलियन मानको रूपमा मानिन्छ।
२.२ MySQL ले TINYINT(1) किन प्रयोग गर्छ
MySQL ले वास्तविक BOOLEAN प्रकारको सट्टा TINYINT(1) प्रयोग गर्ने कारण प्रणाली‑व्यापी प्रदर्शन र अनुकूलता कायम राख्नु हो। TINYINT 1‑बाइटको पूर्णांक हो, जसले डाटाबेसमा कुशल भण्डारण र मेमोरी प्रयोग सुनिश्चित गर्दछ। साथै, यसले MySQL को संख्यात्मक डेटा प्रकारहरूमा स्थिरता प्रदान गर्दछ।
२.३ 0 र 1 को म्यापिङ
MySQL आन्तरिक रूपमा 0 र 1 लाई क्रमशः FALSE र TRUE मा म्याप गरेर बूलियन मानहरू प्रतिनिधित्व गर्छ। यो व्यवहार धेरै प्रोग्रामिङ भाषाहरूमा तार्किक मानहरू कसरी ह्यान्डल गरिन्छ त्यससँग समान छ, जसले विकासकर्ताहरूलाई डेटाबेस अपरेसनहरू गर्दा TRUE र FALSE को सट्टा 0 र 1 प्रयोग गर्न अनुमति दिन्छ। तथापि, अन्य पूर्णांकहरू पनि BOOLEAN स्तम्भमा प्रविष्ट गर्न सकिन्छ भन्ने कुरा ध्यानमा राख्नुपर्छ।

३. BOOLEAN को प्रयोगका उदाहरणहरू
३.१ तालिकामा BOOLEAN स्तम्भ परिभाषित गर्ने
तालिकामा BOOLEAN स्तम्भ परिभाषित गर्न, तपाईं स्तम्भको प्रकारलाई BOOLEAN वा TINYINT(1) रूपमा निर्दिष्ट गर्न सक्नुहुन्छ। तलको उदाहरणले is_active स्तम्भलाई BOOLEAN रूपमा परिभाषित गर्दछ:
CREATE TABLE example_table (
id INT AUTO_INCREMENT PRIMARY KEY,
is_active BOOLEAN
);
यद्यपि स्तम्भलाई BOOLEAN रूपमा परिभाषित गरिएको छ, MySQL आन्तरिक रूपमा यसलाई TINYINT(1) मान्दछ।
३.२ TRUE र FALSE सँग डेटा इन्सर्ट गर्ने
BOOLEAN स्तम्भमा डेटा इन्सर्ट गर्दा तपाईं TRUE र FALSE कुञ्जीशब्दहरू प्रयोग गर्न सक्नुहुन्छ। MySQL स्वचालित रूपमा तीलाई क्रमशः 1 र 0 मा म्याप गर्दछ।
INSERT INTO example_table (is_active) VALUES (TRUE);
INSERT INTO example_table (is_active) VALUES (FALSE);
३.३ SELECT सँग BOOLEAN स्तम्भहरू क्वेरी गर्ने
SELECT कथनहरूमा, BOOLEAN स्तम्भहरूलाई सर्तको रूपमा प्रयोग गर्न सकिन्छ। = अपरेटर र IS अपरेटर बीचको भिन्नतामा ध्यान दिनुहोस्:
-- Using the = operator
SELECT * FROM example_table WHERE is_active = TRUE;
-- Using the IS operator
SELECT * FROM example_table WHERE is_active IS TRUE;
= अपरेटरको साथमा, केवल 0 र 1 लाई क्रमशः FALSE र TRUE मानिन्छ। तर IS अपरेटरको साथमा, शून्य‑नभएको कुनै पनि पूर्णांकलाई TRUE मानिन्छ, जसले अनपेक्षित परिणामहरू उत्पन्न गर्न सक्छ।
४. BOOLEAN को सीमाहरू र विचारहरू
४.१ TINYINT(1) को उपनामको रूपमा BOOLEAN को सीमाहरू
BOOLEAN केवल TINYINT(1) को उपनाम भएकाले, यसले 0‑255 बीचको कुनै पनि पूर्णांक मान भण्डारण गर्न सक्छ। यसको अर्थ, 0 र 1 बाहेकका मानहरू पनि BOOLEAN स्तम्भमा इन्सर्ट गर्न सकिन्छ, जसले डेटा अखण्डतामा जोखिम ल्याउन सक्छ। अनुप्रयोग वा डाटाबेस स्तरमा मान्यकरण गर्नु सिफारिस गरिन्छ।
४.२ NOT NULL सँग NULL मानहरू ह्यान्डल गर्ने
डिफल्ट रूपमा, MySQL मा BOOLEAN स्तम्भहरूले NULL मानहरूलाई अनुमति दिन्छ। यदि तपाईं NULL मानहरूलाई अनुमति दिन चाहनुहुन्न भने, स्पष्ट रूपमा स्तम्भलाई NOT NULL संग परिभाषित गर्नुहोस्:
CREATE TABLE example_table (
id INT AUTO_INCREMENT PRIMARY KEY,
is_active BOOLEAN NOT NULL
);
यस अवस्थामा, is_active स्तम्भमा NULL इन्सर्ट गर्न सकिँदैन।
४.३ मानक SQL बाट भिन्नताहरू
MySQL मा BOOLEAN को ह्यान्डलिङ मानक SQL र अन्य डाटाबेसहरूबाट फरक हुन्छ। धेरै प्रणालीहरूमा, BOOLEAN एक समर्पित प्रकार हो जसले केवल TRUE र FALSE मानहरूलाई अनुमति दिन्छ। MySQL ले BOOLEAN लाई TINYINT(1) द्वारा अनुकरण गर्ने कारण, अन्य डाटाबेसहरूबाट माइग्रेट गर्दा वा तिनीहरूमा माइग्रेट गर्दा विशेष सावधानी आवश्यक पर्छ।

५. BOOLEAN को विकल्पहरू
5.1 बलियो प्रकार जाँचको लागि ENUM प्रयोग गर्दै
यदि कडा प्रकारको लागू आवश्यक छ भने, ENUM प्रयोग गर्ने विचार गर्नुहोस्। यसले स्तम्भका मानहरूलाई पूर्वनिर्धारित विकल्पहरूमा सीमित गर्दछ:
CREATE TABLE example_table (
id INT AUTO_INCREMENT PRIMARY KEY,
is_active ENUM('FALSE', 'TRUE') NOT NULL
);
यस दृष्टिको साथ, केवल ‘TRUE’ वा ‘FALSE’ मात्र संग्रह गर्न सकिन्छ, जसले अन्य मानहरूलाई रोक्छ।
5.2 BOOLEAN को सट्टा ENUM को व्यावहारिक प्रयोग
ENUM प्रयोग गर्दा बलियो डेटा अखण्डता प्रदान हुन्छ जबकि बूलियन व्यवहारको नक्कल गर्दछ। तर, ENUM मानहरूलाई स्ट्रिङको रूपमा संग्रह गर्ने कारणले TINYINT(1) सँग तुलना गर्दा कम भण्डारण‑प्रभावी हुन सक्छ। BOOLEAN र ENUM बीचको चयन अनुप्रयोगको विशिष्ट आवश्यकताहरूमा आधारित हुनु चाहिए।
6. प्रयोग केसहरू र उत्तम अभ्यासहरू
6.1 BOOLEAN को लागि उपयुक्त परिदृश्यहरू
BOOLEAN (वा TINYINT(1)) झण्डा र स्विचहरू व्यवस्थापन गर्न उत्तम हुन्छ, जस्तै प्रयोगकर्ता सक्रिय छ कि छैन, वा उत्पादन स्टकमा छ कि छैन। यी परिदृश्यहरू स्वाभाविक रूपमा सत्य/असत्य प्रतिनिधित्वसँग मेल खान्छ।
6.2 BOOLEAN स्तम्भहरूमा अनुक्रमणिका बनाउने
BOOLEAN स्तम्भहरूमा अनुक्रमणिका थप्दा क्वेरी प्रदर्शन सुधार्न सक्छ। तर, अनुक्रमणिकाको प्रभावकारिता डेटा वितरणमा निर्भर गर्दछ। उदाहरणका लागि, यदि धेरै पङ्क्तिहरूमा एउटै मान (जस्तै, TRUE) छ भने, अनुक्रमणिकाले सीमित लाभ दिन सक्छ।
6.3 डेटा अखण्डता कायम राख्नका लागि उत्तम अभ्यासहरू
MySQL मा BOOLEAN प्रयोग गर्दा डेटा स्थिरता कायम राख्नका लागि तलका उत्तम अभ्यासहरू विचार गर्नुहोस्:
- NULL मानहरू स्वीकार्य नहुनु भएमा NOT NULL प्रयोग गर्नुहोस्।
- इनपुट प्रमाणित गर्नुहोस् ताकि केवल 0 र 1 मात्र प्रविष्ट गरियोस्।
- कडा प्रकारको लागूका लागि ENUM विचार गर्नुहोस्।
7. निष्कर्ष
MySQL मा BOOLEAN कसरी काम गर्छ बुझ्नु उचित डेटाबेस डिजाइन र अनुप्रयोग विकासका लागि अत्यावश्यक छ। BOOLEAN लाई TINYINT(1) द्वारा अनुकरण गरिन्छ, त्यसैले 0 र 1 बाहेकका मानहरू पनि संग्रह हुन सक्छ भन्ने कुरा ध्यानमा राख्नुहोस्। यदि बलियो प्रकार सुरक्षा आवश्यक छ भने, ENUM उपयुक्त विकल्प हुन सक्छ।


