আমি কি বুলিয়ান ডাটাবেস ক্ষেত্রে নাল হিসাবে মিথ্যা সঞ্চয় করব?


20

আসুন ধরা যাক আপনার কাছে এমন একটি অ্যাপ্লিকেশন রয়েছে যার নামটির Userটেবিলে একটি বুলিয়ান ক্ষেত্র রয়েছে Inactive

কেবল নাল হিসাবে মিথ্যা সঞ্চয় করে সহজাতভাবে কিছু আছে? যদি তা হয় তবে দয়া করে নীচের দিকটি কী হওয়া উচিত তা ব্যাখ্যা করতে পারেন? আমি কয়েক মাস আগে কারও সাথে এটি নিয়ে আলোচনা করেছি এবং আমরা দুজনেই একমত হয়েছি যতক্ষণ আপনি অ্যাপ / ডাটাবেস জুড়ে ধারাবাহিকভাবে এটি করেন ততক্ষণ তা বিবেচনা করা উচিত না। সম্প্রতি, আমার পরিচিত কেউ জোরালো ছিলেন যে "সত্য" trueবা falseব্যবহার করা উচিত, তবে তারা সত্যিকার অর্থে কেন তা ব্যাখ্যা দেয়নি।


25
উইকিপিডিয়া বলছে Null is a special marker used in Structured Query Language (SQL) to indicate that a data value does not exist in the database এটি স্বীকৃত বুদ্ধি এবং আপনার আবেদনে নুল কী বোঝায় তা আপনার নতুন করে ব্যাখ্যা করা উচিত নয়। এটি আপনার কোড নিয়ে কাজ করা প্রত্যেকের জন্য বিভ্রান্তিকর হবে।
পার্সোনালনেক্সাস

10
আপনি কেন এটি করতে চান? ত্রি-রাষ্ট্রীয় ক্ষেত্রের সাথে সমস্যাটিকে বিভ্রান্ত করার পরিবর্তে আপনি যে আচরণটি চান তা যদি কেবল একটি নন-বিহীন বিট ফিল্ডটি ব্যবহার করে এবং ডিফল্টটিকে মিথ্যাতে সেট করে না কেন?
জনএফএক্স

5
এটি কেন খুব খারাপ ধারণা এর বাস্তব-বিশ্বের উদাহরণ: SELECT * FROM foo WHERE bar = FALSEআপনার প্রত্যাশিত ফলাফল দেয় না।
blrfl

2
বুলিয়ানের পরিবর্তে 0 এর ডিফল্ট সহ কোনও ইন্টি কলাম ব্যবহার করা বিবেচনা করুন। এইভাবে যদি নতুন অবস্থার উদ্ভব হয় (সম্ভবত একটি 'মুলতুবি' রাষ্ট্র, উদাহরণস্বরূপ), আপনাকে ডাটাবেস কাঠামো পরিবর্তন করতে হবে না।
গ্র্যান্ডমাস্টারবি

4
তবে আপনি যদি নকল হিসাবে মিথ্যা সঞ্চয় করেন তবে আপনি কীভাবে FILE_NOT_FOUND সঞ্চয় করবেন ?! ( thedailywtf.com/Articles/What_Is_Truth_0x3f_.aspx )
এড জেমস

উত্তর:


50

কেবল নাল হিসাবে মিথ্যা সঞ্চয় করে সহজাতভাবে কিছু আছে?

হ্যাঁ.

যদি তা হয় তবে দয়া করে নীচের দিকটি কী হওয়া উচিত তা ব্যাখ্যা করতে পারেন?

নুয়াল মিথ্যা হিসাবে একই নয়।

সংজ্ঞা অনুসারে, তুলনা (এবং যুক্তি) যা NULL জড়িত তাদের NULL এর মানগুলি প্রত্যাবর্তন করবে (মিথ্যা নয়)। তবে এসকিউএল বাস্তবায়ন বিভিন্ন রকম হতে পারে।

True and NULL হ'ল নাল (মিথ্যা নয়)

True and NULL or False হ'ল নাল (মিথ্যা নয়)

http://en.wikipedia.org/wiki/Null_(SQL)#Three-valued_logic_.283VL.29

http://technet.microsoft.com/en-us/library/cc966426.aspx


3
NULL কেন মান অনুপস্থিতিকে প্রতিনিধিত্ব করে এমন মান কেন সে সম্পর্কে সুসিন্ট ব্যাখ্যা।
maple_shaft

2
আমার প্রথম ডেভলপমেন্ট
জবসের

1
মনে রাখবেন যে আপনি যে নিবন্ধটি সংযুক্ত করেছেন nullসেটিতে বলা হয়েছে যে এটি যদি যুক্তিটির সাথে অপ্রাসঙ্গিক হয় (যেমন ক্ষেত্রে whatever OR TRUEবা তেমন whatever AND FALSEকোনও মান whateverশর্ত পরিবর্তন করতে পারে না) তবে অভিব্যক্তিটি একটি মান দেয়। এটি কোনও অপ্টিমাইজেশন নয়; এটি 3-মূল্যবান যুক্তি কীভাবে কাজ করে । যে সমস্ত ডিবিএমএস প্রত্যাবর্তন UNKNOWN/ NULLসেই অভিব্যক্তির জন্য জোর দিয়েছিল সেগুলি মূলত ভেঙে গেছে।
সিএওও

1
@ এস.লট, তবে মিথ্যা জায়গায় কিছু স্থান সংরক্ষণ করে নাল সংরক্ষণ করছে না ??
আজেফেরতি

2
@ ব্লুড্রাইম: বুলিয়ানদের জন্য, ডিবিএমএসের উপর নির্ভর করে একটি বর্ধনযোগ্য ক্ষেত্রটি আরও বেশি জায়গা নিতে পারে । (এটা যদিও, প্রায় সব ক্ষেত্রেই একটি তুচ্ছ পরিমাণ।) একটি বুলিয়ান একটি একক কিছুক্ষনের মধ্যে প্রতিনিধিত্ব করা যাবে ... কিন্তু একটি nullable বুলিয়ান তিন সম্ভাব্য মান (সত্য, মিথ্যা, এবং নাল) আছে, এবং এইভাবে এক বিট চেয়ে বেশি দরকার।
সিএওও

15

বুলিয়ান ক্ষেত্রটিতে নালগুলি মঞ্জুরি দেওয়ার মাধ্যমে আপনি একটি বাইনারি প্রতিনিধিত্ব (সত্য / মিথ্যা) একটি ত্রি-রাষ্ট্রীয় উপস্থাপনায় পরিণত করছেন (সত্য, মিথ্যা, নাল) যেখানে আপনার 'নাল' এন্ট্রি অনির্দিষ্ট রয়েছে। 'নাল' মান যথাযথভাবে 'সত্য' বা 'মিথ্যা' নয়। আপনার প্রতিনিধিত্বকে ভুল হওয়ার পক্ষে আপনার কী কারণ বাড়তে হবে?

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


5

অন্যরা যা বলেছে। 3 সম্ভাব্য মানগুলি বুলিয়ান নয়।

তবে আপনার 3 টি মানের বৈধ প্রয়োজন থাকতে পারে। যেমন (সত্য, মিথ্যা, অজানা)। এমনকি যদি এটি হয় তবে আপনি অতি-স্বাভাবিকায়নের মধ্যে থাকলে আপনি কোনও নাল মানকে একেবারেই অনুমতি দেবেন না। পরিবর্তে আপনি 1 থেকে 1 টি সম্পর্ক রেখে অন্য টেবিলে একটি সত্য বুলিয়ান সংরক্ষণ করবেন। একটি "ব্যর্থ" বহিরাগত যোগ দিয়ে একটি নাল মান উত্পাদিত হতে পারে, শারীরিকভাবে সঞ্চিত নাল মান দ্বারা নয়।


আমার বুলিয়ান প্রশ্নের ক্ষেত্রের বাইরে যদি আপনি এটি করতে শূন্য ব্যবহার করেন তবে সত্য মিথ্যা অজানা কেন খারাপ হবে? আমার প্রশ্নের বাইরে কি নালগুলি এড়ানো যায়? কেন?
ওমিনাস

3
@ ওমিনিস: আপনি যদি বিশুদ্ধবাদী হন তবে সাধারণত নালগুলি এড়ানো যায়। যদি সেগুলি ব্যবহার করার উদ্দেশ্যে বোঝানো হত (ভুয়া-নকল হিসাবে "" এখানে কোনও মূল্য নেই " false) হিসাবে ব্যবহার করা হয়, তবে তাদের জায়গা রয়েছে। তারা না থাকলে তাদের অস্তিত্ব থাকত না। উল্লিখিত হিসাবে বিকল্পটি মূলত আপনার সারির প্রাথমিক কী এবং একটি একক বুলিয়ান (বা ইনট, বা বার্চার, বা আপনার কী আছে) সহ একটি সম্পূর্ণ অন্যান্য টেবিল রয়েছে। প্রতিটি ক্ষেত্রের জন্য যা আপনি অন্যথায় কমাতে চাইবেন। আপেক্ষিকভাবে বিশুদ্ধ থাকাকালীন, বেশিরভাগ কারণে এটি অত্যন্ত সংশ্লেষিত।
সিএইচও

-3

কি bool?একটি বুলিয়ান ধরনের? না। এটি বুুলিয়ান Nullable<T>যেখানে প্রকারের T। একটি অবিচ্ছিন্ন বুলিয়ানটির 3 টি মান থাকতে পারে: সত্য, মিথ্যা এবং নাল। আপনার প্রয়োজন boolবা ব্যবহারের bool?উপর নির্ভর করে। বৈধ কারণ থাকতে পারে যেখানে আপনাকে নাল ব্যবহার করার প্রয়োজন হতে পারে তবে এটি এমন এক ধরণের যা বাইনারি জাতীয় গন্ধযুক্ত তবে আপনি উত্তরটি জানেন না। উপরের উদাহরণে,User.IsActiveপরিষ্কার কাটা মনে হচ্ছে। ব্যবহারকারী সক্রিয় বা না। সিস্টেম হিসাবে এটি কোনও ব্যবহারকারী সক্রিয় কিনা তা জানতে চাইতে পারে। 'হয়তো' হওয়া উচিত নয়। তবে বৈশিষ্ট্য পতাকার মতো কিছু সম্পর্কে ভাবেন। বৈশিষ্ট্যটি কি চালু আছে? উত্তরগুলি হ্যাঁ, না, বা নিশ্চিত নয়। আপনার ব্যবসায়ের নিয়ম থাকতে পারে যা পতাকাটি সত্য হিসাবে সেট করা থাকে কেবল তখন বোতামটি প্রদর্শন করে। কেউ তর্ক করতে পারে যে ডিফল্টরূপে মিথ্যা মিথ্যা তাই কেন নুলযোগ্য বুল তৈরি করা যায়? প্রয়োজনীয়তা বিপরীত: আপনি কি ডেটাসোর্সের সমস্ত মানকে সত্যে সেট করতে যাচ্ছেন?


2
এই পোস্টটি পড়ার চেয়ে শক্ত (পাঠ্যের প্রাচীর)। আপনি এটিকে আরও ভাল আকারে সম্পাদনা করতে আপত্তি করবেন ?
gnat
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.