ডাটাবেস সীমাবদ্ধতা কি? [বন্ধ]


94

ডাটাবেস সীমাবদ্ধতার একটি পরিষ্কার সংজ্ঞা কী? কেন একটি ডাটাবেসের জন্য সীমাবদ্ধতা গুরুত্বপূর্ণ? বাধার ধরণগুলি কী কী?


12
এই প্রশ্নের একটি স্পষ্ট উত্তর আছে। এটি "খুব বিস্তৃত" নয়। এটির প্রচুর সংখ্যক উপস্থাপনা এবং পছন্দগুলি প্রকাশ করে যে এটি অনেক লোকের পক্ষে কতটা কার্যকর। আমি শব্দটি পরিষ্কার করে আবার খোলার জন্য মনোনীত করেছি।
লা-কোমড্রেজা

এই প্রশ্নের @BasilBourque একটি হল খুব প্রোগ্রামাররা জন্য দরিদ্র হইয়া - এটি দ্রুত হতে নিচে ভোট এবং ওইখানে বন্ধ দেখতে চাই meta.programmers.stackexchange.com/questions/6483/... প্রস্তাবিত পাঠ: Programmers.SE কি যায়? স্ট্যাক ওভারফ্লো জন্য একটি নির্দেশিকা
মশা

4
@ জাগান্ট যখন পৃষ্ঠাটি আমাকে প্রোগ্রামারস স্ট্যাক এক্সচেঞ্জের বিষয়বস্তুতে কী আছে বা কী নয় তা নিয়ে এখনও অস্পষ্ট-মাথা ছাড়ছে, তবে আমি পোস্টিং লেখকের সর্বনিম্ন প্রান্তিকের সাথে প্রথমে সরাসরি প্রাসঙ্গিক উইকিপিডিয়া নিবন্ধটি পড়তে পেরে বুঝতে এবং সম্মত হতে পারি স্ট্যাক এক্সচেঞ্জে অনুরূপ সংক্ষিপ্ত বা সংক্ষিপ্তসার পর্যালোচনা অনুরোধ করা হচ্ছে।
বাসিল বাউর্কে

4
শিরোনামটি বিস্তৃত, এবং সাব প্রশ্নগুলি একবারে একাধিক প্রশ্ন জিজ্ঞাসা করছে-_ টমটম, পি ரதீப், গ্রেগ -৪৪৯, বমি এবং নিত কীভাবে এটি চায়? দয়া করে ব্যাখ্যা করুন. যাইহোক আপনি কি কিছুতেই বাধা সম্পর্কে জিজ্ঞাসা করতে পারেন ...?
লেওলো

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

উত্তর:


118

সীমাবদ্ধতা একটি ডাটাবেস স্কিমা সংজ্ঞা অংশ।

একটি সীমাবদ্ধতা সাধারণত একটি টেবিলের সাথে যুক্ত হয় এবং এটি একটি CREATE CONSTRAINTবা CREATE ASSERTIONএসকিউএল বিবৃতি দিয়ে তৈরি করা হয় ।

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

সাধারণ ধরণের বাধা হ'ল:

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

4
পিকে অন্তর্ভুক্ত করার জন্য +1, নাল নয়, নাল
gbn

+1, তবুও আপনি বিদেশী কী পরিস্থিতিতে প্রসারিত করতে পারেন এবং কয়েকটি লিঙ্ক সরবরাহ করতে পারেন।
অবাস্তব

4
চেক সীমাবদ্ধতাগুলি অবশ্যই মিথ্যা হিসাবে মূল্যায়ন করতে হবে না। তাদের সত্য হতে হবে না। অজানা পাশাপাশি ভাল।
মার্টিন স্মিথ

4
একটি ধরণের বাধাও কি সাধারণ ধরণের হবে না?
মার্টিন

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

36

আমাদের কেন বাধা দরকার তা বোঝার জন্য আপনাকে প্রথমে ডেটা অখণ্ডতার মান বুঝতে হবে।

ডেটা ইন্টিগ্রিটি ডেটার বৈধতা বোঝায়। আপনার তথ্য বৈধ? আপনার ডেটা আপনি কি সেগুলি ডিজাইন করেছেন তা উপস্থাপন করছে?

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

এই সমস্ত আবর্জনা আপনার কর্মক্ষমতা হ্রাস করার একা নয়, তবে এটি আপনার প্রয়োগ যুক্তির অধীনে একটি সময়-বোমা যা অবশেষে এমন ডেটা পুনরুদ্ধার করবে যা এটি বোঝার জন্য ডিজাইন করা হয়নি।

সীমাবদ্ধতাগুলি এমন নিয়ম যা আপনি ডিজাইন-সময়ে তৈরি করেন যা আপনার ডেটাটিকে দূষিত হওয়ার হাত থেকে রক্ষা করে। এটি একটি ডাটাবেস সমাধান আপনার হৃদয় সন্তানের দীর্ঘ সময় বেঁচে থাকার জন্য প্রয়োজনীয়। কোনও বাধা ছাড়াই আপনার সমাধান সময় এবং ভারী ব্যবহারের সাথে অবশ্যই পচে যাবে।

আপনাকে স্বীকার করতে হবে যে আপনার ডাটাবেস ডিজাইন করা আপনার সমাধানের জন্ম মাত্র। এখানে অবশ্যই এটি দীর্ঘ সময়ের জন্য বেঁচে থাকতে হবে এবং এর শেষ ব্যবহারকারীরা (যেমন ক্লায়েন্ট অ্যাপ্লিকেশন) দ্বারা সমস্ত ধরণের (অদ্ভুত) আচরণ সহ্য করতে হবে। তবে উন্নয়নের এই নকশা-পর্যায়টি আপনার সমাধানের দীর্ঘ সময়ের সাফল্যের জন্য গুরুত্বপূর্ণ! এটিকে সম্মান করুন এবং এটি প্রয়োজনীয় সময় এবং মনোযোগ দিন।

একজন জ্ঞানী ব্যক্তি একবার বলেছিলেন: "ডেটা অবশ্যই নিজেকে রক্ষা করবে!" । এবং এটিই সীমাবদ্ধতাগুলি করে। এটি এমন নিয়ম যা আপনার ডাটাবেসে ডেটা যতটা সম্ভব বৈধ রাখে।

এটি করার অনেকগুলি উপায় রয়েছে তবে মূলত তারা এগুলিতে সিদ্ধ হয়:

  • বিদেশী কী বাধা সম্ভবত সবচেয়ে সীমাবদ্ধ এবং এটি নিশ্চিত করে যে অন্য টেবিলের রেফারেন্স কেবলমাত্র রেফারেন্সের জন্য যদি একটি লক্ষ্য সারি উপস্থিত থাকে তবেই তা অনুমোদিত হয়। এটি একটি মৃত লিঙ্ক তৈরি করে রেফারেন্সযুক্ত সারিটি মোছার মাধ্যমে এ জাতীয় সম্পর্ক ভাঙাও অসম্ভব করে তোলে।
  • চেক সীমাবদ্ধতাগুলি নিশ্চিত করতে পারে যে নির্দিষ্ট কলামে কেবল নির্দিষ্ট মান অনুমোদিত allowed আপনি কেবল কোনও Vर्चার কলামে 'হলুদ' বা 'নীল' শব্দের অনুমতি দিয়ে একটি সীমাবদ্ধতা তৈরি করতে পারেন। অন্যান্য সমস্ত মান একটি ত্রুটি উত্পন্ন করবে। sys.check_constraintsঅ্যাডভেঞ্চার ওয়ার্কসের নমুনা ডাটাবেসে চেক সীমাবদ্ধতার ব্যবহারের জন্য ধারণা পান
  • এসকিউএল সার্ভারের বিধিগুলি কেবল পুনরায় ব্যবহারযোগ্য চেক সীমাবদ্ধতাগুলি (আপনাকে কোনও একক জায়গা থেকে সিনট্যাক্স বজায় রাখতে সহায়তা করে এবং আপনার সীমাবদ্ধতাগুলি অন্য ডেটাবেজে স্থাপন করা সহজ করে তোলে)

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

বিদেশী কী বাধা - মাইক্রোসফ্ট

বিদেশী কী সীমাবদ্ধতা - ডাব্লু 3 স্কুল

সীমাবদ্ধতাগুলি পরীক্ষা করুন

শুভকামনা! ;)


একটি নেক্রো-মন্তব্য হিসাবে, মনে হচ্ছে মাইক্রোসফ্ট দ্বারা নিয়মগুলি এখন মলত্যাগ করা হচ্ছে।
গ্যারি

6

সীমাবদ্ধতাগুলি ডেটার নিয়ম ছাড়া কিছুই নয়। কোন ডেটা বৈধ এবং কোনটি অবৈধ তা সীমাবদ্ধতা ব্যবহার করে সংজ্ঞায়িত করা যায়। সুতরাং, ডেটা যে অখণ্ডতা বজায় রাখা যেতে পারে। নিম্নলিখিত ব্যবহৃত হয় ব্যাপকভাবে ব্যবহৃত প্রতিবন্ধকতা:

  1. প্রাথমিক কী : যা অনন্যভাবে ডেটা সনাক্ত করে। যদি এই সীমাবদ্ধতা নির্দিষ্ট কলামের জন্য নির্দিষ্ট করা থাকে তবে আমরা সেই কলামে সদৃশ ডেটা প্রবেশ করতে পারি না
  2. চেক করুন : যেমন NOT NULL। এখানে আমরা নির্দিষ্ট কলামের জন্য আমরা কী ডেটা প্রবেশ করতে পারি এবং সেই কলামটির জন্য কী প্রত্যাশা করা যায় তা নির্দিষ্ট করতে পারি।
  3. বিদেশী কী : অন্যান্য সারণির সারিতে বিদেশী কী উল্লেখ। সুতরাং অন্য টেবিল থেকে এক টেবিলের মধ্যে উল্লেখ করা ডেটা রেফারেন্সিং সারণীর জন্য সর্বদা উপলভ্য।

3

সীমাবদ্ধতা ডেটা নির্দিষ্ট বৈশিষ্ট্য প্রয়োগ করতে ব্যবহার করা যেতে পারে। একটি সাধারণ উদাহরণ হ'ল একটি মান কলাম [0-100000] এর মধ্যে সীমাবদ্ধ করা। এই ভূমিকা ভাল লাগছে।


3

সীমাবদ্ধতাগুলি নির্ধারণ করে যে ডাটাবেসের ডেটাগুলির জন্য কোন মানগুলি বৈধ। উদাহরণস্বরূপ, আপনি মানটি নাল নয় ( NOT NULLবাধ্যবাধকতা) প্রয়োগ করতে পারেন , বা অন্য সারণিতে এটি একটি অনন্য বাধা হিসাবে উপস্থিত রয়েছে ( FOREIGN KEYসীমাবদ্ধতা), বা এই টেবিলের মধ্যে এটি অনন্য (কোনও UNIQUEবাধা বা সম্ভবত PRIMARY KEYআপনার প্রয়োজনের উপর নির্ভর করে বাধা) depending )। সীমাবদ্ধতা ব্যবহার করে আরও সাধারণ বাধা প্রয়োগ করা যেতে পারে CHECK

এসকিউএল সার্ভার 2008 সীমাবদ্ধতার জন্য MSDN ডকুমেন্টেশন সম্ভবত আপনার সেরা শুরুর স্থান।


2
  1. UNIQUEসীমাবদ্ধতা (যার মধ্যে একটি PRIMARY KEYপ্রতিবন্ধকতা বৈকল্পিক)। প্রদত্ত ক্ষেত্রের সমস্ত মান সারণী জুড়ে অনন্য। এটি X-অ্যাক্সিস সীমাবদ্ধতা (রেকর্ডস)

  2. CHECKসীমাবদ্ধতা (যার মধ্যে একটি NOT NULLপ্রতিবন্ধকতা বৈকল্পিক)। একটি নির্দিষ্ট শর্ত একই রেকর্ডের ক্ষেত্রগুলিতে প্রকাশের জন্য ধারণ করে holds এটি Y-অ্যাক্সিস সীমাবদ্ধতা (ক্ষেত্র)

  3. FOREIGN KEYবাধা অন্য সারণীতে ক্ষেত্রের মানগুলির মধ্যে ক্ষেত্রের মান পাওয়া যায় তা পরীক্ষা করে। এটি Z-অ্যাক্সিস সীমাবদ্ধতা (সারণী)।


অনন্য বাধা এবং বিদেশী কী সীমাবদ্ধতাগুলি CHECKসীমাবদ্ধতা ব্যবহার করে লেখা যেতে পারে তবে কেন এটি আলাদাভাবে শ্রেণিবদ্ধ করুন? অর্থাত্ " Y-axis" (যার অর্থ যাই হোক না কেন)।
onedaywhen

4
@ মাওনদয়াহেন: সীমাবদ্ধতা FOREIGN KEYব্যবহার করে আপনি কীভাবে প্রয়োগ করবেন CHECK?
কাসনসুই

4
@ অধিবেল: এই সীমাবদ্ধতা দিয়ে একটি টেবিল তৈরি করার চেষ্টা করুন।
কাসনসুই

4
@ ওনাডেউইন: চেষ্টা করা এত কঠিন? ইঙ্গিত: এটি কাজ করবে না।
কাসনসুই

4
@ এমনেদয়াহেন: আপনার লেখা ক্যোয়ারী চেক সীমাবদ্ধতা তৈরি করে না। এটি নিছক SELECTপ্রশ্ন query CHECKসীমাবদ্ধতায় আপনি সাবকুইরিগুলি (বা অন্য কোনও নির্মাণ বা বর্তমান রেকর্ডের বাইরে মানগুলি উল্লেখ করে) ব্যবহার করতে পারবেন না SQL Server
কাসনসুই

2

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

দ্রষ্টব্য: ডিবিএমএস- "বোঝা" অর্থ - অখণ্ডতার সীমাবদ্ধতা - ব্যবহারকারী-বোঝা অর্থ - ব্যবসায়িক বিধিগুলির সাথে এক নয় - তবে কিছু অর্থ হ্রাস সত্ত্বেও, আমরা ডেটা থেকে যৌক্তিক সূত্রগুলি যান্ত্রিক করার ক্ষমতা অর্জন করি।

ফ্যাবিয়ান প্যাসকালের লেখা "একটি পুরানো ক্লাসের ত্রুটি"


2

এসকিউএলটিতে মূলত 4 ধরণের মূল সীমাবদ্ধতা রয়েছে:

  • ডোমেন সীমাবদ্ধতা: নতুন টিপলের জন্য সরবরাহ করা বিশিষ্ট মানগুলির মধ্যে যদি কোনও নির্দিষ্ট অ্যাট্রিবিউট ডোমেন না হয়

  • কী বাধা: যদি কোনও নতুন টিপলে একটি মূল বৈশিষ্ট্যের মান ইতিমধ্যে সম্পর্কের অন্য টিপলে উপস্থিত থাকে

  • রেফারেন্সিয়াল ইন্টিগ্রিটি: যদি কোনও নতুন টিপলে কোনও বিদেশী কী মান একটি প্রাথমিক কী মানকে উল্লেখ করে যা রেফারেন্সযুক্ত সম্পর্কের মধ্যে নেই

  • সত্তার সংখণ্ডতা: যদি প্রাথমিক কী মানটি একটি নতুন টিপলে নাল হয়


-1

সীমাবদ্ধতা শর্তাদি, যা নির্দিষ্ট শর্তটি বৈধ করতে পারে। ডাটাবেসের সাথে সম্পর্কিত সীমাবদ্ধতাগুলি হ'ল ডোমেন অখণ্ডতা, সত্তা অখণ্ডতা, রেফারেনশিয়াল ইন্টিগ্রিটি, ব্যবহারকারীর সংজ্ঞায়িত সংহততা বাধা ইত্যাদি etc.

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