বুলিয়ান বা টিনিন্ট বিভ্রান্তি


94

আমি এমন একটি সাইটের জন্য একটি ডেটাবেস ডিজাইন করছিলাম যেখানে সত্যিকারের বা মিথ্যা মাত্র 2 টি স্টেট সংরক্ষণ করতে আমাকে বুলিয়ান ডেটটাইপ ব্যবহার করতে হবে। আমি মাইএসকিউএল ব্যবহার করছি।
পিএইচপিএমআইএডমিন ব্যবহার করে ডেটাবেস ডিজাইন করার সময় আমি দেখতে পেলাম যে আমার কাছে বুলিয়ান ডেটাটাইপ এবং টিআইএনআইএনটি ডেটাটাইপ উভয়ই রয়েছে।
আমি বিভিন্ন নিবন্ধ দিয়ে গিয়েছিলাম, কেউ কেউ বলেছিলেন যে টিনআইএনটিই বুলিয়ান হিসাবে একই, কোনও পার্থক্য নেই। কেউ কেউ বলেন যে বুলিয়ান মাইএসকিউএলে TINYINT এ রূপান্তরিত হয়।

আমার প্রশ্নটি হল, যদি তারা উভয়ই এক হয় তবে সেখানে দুটি কেন বিদ্যমান? তাদের মধ্যে একটি মাত্র হওয়া উচিত।

এখানে নিবন্ধ আমি পড়তে রেফারেন্স হল:
http://www.careerride.com/MySQL-BOOL-TINYINT-BIT.aspx
http://dev.mysql.com/doc/refman/5.5/en/numeric-type -অরূপ দেখুন html

উত্তর:


138

মাইএসকিউএলের অভ্যন্তরীণ বুলেট ডেটা টাইপ নেই। এটি ক্ষুদ্রতম পূর্ণসংখ্যার ডেটা টাইপ ব্যবহার করে - TINYINT।

বুলিয়ান এবং বোল TINYINT (1) এর সমতুল্য, কারণ এগুলি প্রতিশব্দ।

এই টেবিলটি তৈরি করার চেষ্টা করুন -

CREATE TABLE table1 (
  column1 BOOLEAN DEFAULT NULL
);

তারপরে শো ক্রেটিট টেবিল চালান, আপনি এই আউটপুটটি পাবেন -

CREATE TABLE `table1` (
  `column1` tinyint(1) DEFAULT NULL
)

4
তবে আপনার উত্তরটি অন্য সমস্ত দিক থেকে সঠিক। ওপিকে যা বিভ্রান্ত করছে বলে মনে হচ্ছে তা প্রতিশব্দগুলির অস্তিত্ব।
ypercubeᵀᴹ

4
মনে হচ্ছে এটি পশ্চাদপদ সামঞ্জস্যের জন্য করা হয়েছে। বুলিয়ান ডেটা টাইপটি মাইএসকিউএল 5 এর আগে ছিল এবং বিআইটি প্রকারটি অনুকূলিত করা হয়নি, এটি টিআইএনআইএনটিও ছিল। ডকুমেন্টেশন থেকে - নতুন বৈশিষ্ট্যগুলি 5.1 এর জন্য পরিকল্পনা করা হয়েছে: কিছুটা নিতে বিআইটি টাইপটিকে অপ্টিমাইজ করুন। (বিআইটি এখন একটি বাইট নেয়; এটি TINYINT এর প্রতিশব্দ হিসাবে বিবেচনা করা হয়।)
ডিভার্ট

5
হ্যাঁ, আপনি কি জানেন পারেন BIT(1)বা BIT(17)বা এমনকিBIT(64)
ypercubeᵀᴹ

4
@ দেবার্ট - যেখানে আপনার উত্তরে সর্বাধিক ভোট রয়েছে এবং এটি প্রথম প্রদর্শিত হবে (যাইহোক আমার তালিকায়) এবং কিছুটা সময় অতিবাহিত হয়েছে, সেখানে মাইএসকিউএল 5.1 এবং বিআইটি টাইপের কিছু আলোচনা অন্তর্ভুক্ত করার জন্য আপনার উত্তরটিতে যুক্ত হওয়ার কোনও সম্ভাবনা আছে কি? পরে?
জোনাথন

4
@ জোনাথন সম্ভবত এটি মূল্যবান বলে উল্লেখ করা হয়েছে, তবে বিআইটি (1) আসলে টিআইএনআইএনটি (1) এর চেয়ে কম স্থান ব্যবহার করে না এবং স্ট্যান্ডার্ড মাইএসকিএল কনসোল ব্যবহার করার সময় বেশিরভাগ লোকেরা যেমন প্রত্যাশা করত তেমনটি প্রদর্শন করে না। এই খারাপ দিকের কারণে এবং কোনও স্টোরেজ সুবিধার কারণে, কেবলমাত্র TINYINT (1) বা বুলিয়ান ব্যবহার করা আমার অভিজ্ঞতাকে সবচেয়ে সাধারণ বলে মনে হচ্ছে।
টাইলার স্মিথ

31

পিএইচপি বিকাশকারীদের জন্য কেবল একটি নোট (এটি একটি মন্তব্য হিসাবে পোস্ট করার জন্য আমার প্রয়োজনীয় স্ট্যাকওভারফ্লো পয়েন্টের অভাব রয়েছে) ... স্বয়ংক্রিয় (এবং নিঃশব্দ) টিআইএনআইএনটিতে রূপান্তর অর্থ পিএইচপি একটি "বুলিয়ান" কলাম থেকে "0" হিসাবে মান অর্জন করে বা "1", প্রত্যাশিত নয় (আমার দ্বারা) সত্য / মিথ্যা।

একজন বিকাশকারী যিনি এসকিউএলটির দিকে তাকিয়ে একটি টেবিল তৈরি করতেন এবং এমন কিছু দেখেন: "কিছু_বুলিয়ান বুলিয়ান নন ডিফল্ট মিথ্যা," যথাযথভাবে সত্য / মিথ্যা ফলাফল দেখার আশা করতে পারে যখন column কলামটি থাকা সারিটি পুনরুদ্ধার করা হবে। পরিবর্তে (কমপক্ষে আমার পিএইচপি-র সংস্করণে), ফলাফলটি "0" বা "1" (হ্যাঁ, একটি স্ট্রিং "0" বা স্ট্রিং "1" হবে, কোনও আন্তঃ 0/1 নয়, আপনাকে পিএইচপি ধন্যবাদ)।

এটি নিট, তবে ইউনিট পরীক্ষাগুলি ব্যর্থ করার পক্ষে যথেষ্ট।


4
অতিরিক্ত নোট হিসাবে, পিএইচপি এর মাইএসকিএল ড্রাইভাররা সমস্ত পূর্ণসংখ্যার প্রকারকে স্ট্রিং হিসাবে টান দেয়।
kojow7

24

সর্বাধিক মাইএসকিউএল ভার্সনগুলিতে নতুন BITডেটা টাইপ রয়েছে যাতে আপনি ক্ষেত্রের বিটের সংখ্যা নির্দিষ্ট করতে পারেন, উদাহরণস্বরূপ টাইপ BIT(1)হিসাবে ব্যবহার করার জন্য Boolean, কারণ এটি কেবল 0বা হতে পারে 1


7

মাইএসকিএল 5.1 সংস্করণ রেফারেন্স হিসাবে

BIT(M) =  approximately (M+7)/8 bytes, 
BIT(1) =  (1+7)/8 = 1 bytes (8 bits)

=================================================== ========================

TINYINT(1) take 8 bits.

https://dev.mysql.com/doc/refman/5.7/en/stores-requirements.html#data-tyype-stores-reqs-numeric


4
আপনার রেফারেন্স বলছে প্রয়োজনীয় স্টোরেজটি আসলে "আনুমানিক (এম + 7) / 8 বাইট"। অর্থাত্‍, এটি পরবর্তী পূর্ণ বাইট পর্যন্ত গোল হয়। সুতরাং এটি 1 বিট লাগে না
এমপেন

3

মাইএসকিউএল-র সংখ্যার ধরণের ওভারভিউতে বলা হয়েছে: বোল, বুলিয়ান: এই ধরণেরগুলি TINYINT (1) এর প্রতিশব্দ। শূন্যের মানকে মিথ্যা বলে বিবেচনা করা হয়। ননজারো মানগুলি সত্য বলে বিবেচিত হয়।

এখানে দেখুন: https://dev.mysql.com/doc/refman/5.7/en/numeric-type-overview.html

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.