উদাহরণ সহ SQLite প্রাথমিক কী এবং বিদেশী কী

এই টিউটোরিয়ালে আপনি শিখবেন-

SQLite সীমাবদ্ধতা

কলাম সীমাবদ্ধতা সন্নিবেশিত ডেটা যাচাই করার জন্য একটি কলামে সন্নিবেশিত মানগুলিতে সীমাবদ্ধতা এবং নিয়ম প্রয়োগ করে। কলাম সংজ্ঞায় একটি টেবিল তৈরি করার সময় কলাম সীমাবদ্ধতা নির্ধারণ করা হয়।

SQLite প্রাথমিক কী

একটি প্রাথমিক কী কলামের সমস্ত মান অনন্য হওয়া উচিত এবং শূন্য নয়

প্রাথমিক কী শুধুমাত্র একটি কলামে বা কলামের সংমিশ্রণে প্রয়োগ করা যেতে পারে, পরবর্তী ক্ষেত্রে, কলামের মানগুলির সংমিশ্রণ সমস্ত টেবিলের সারির জন্য অনন্য হওয়া উচিত।

একটি টেবিলে একটি প্রাথমিক কী সংজ্ঞায়িত করার বিভিন্ন উপায় রয়েছে:

  • কলাম সংজ্ঞা নিজেই:

    সিনট্যাক্স: | _+_ |

  • একটি পৃথক সংজ্ঞা হিসাবে: | _+_ |
  • প্রাথমিক কী হিসেবে কলামের সংমিশ্রণ তৈরি করতে: | _+_ |

শূন্য সীমাবদ্ধতা নয়

SQLite নাল সীমাবদ্ধতা একটি কলামকে শূন্য মান হতে বাধা দেয়: | _+_ |

ডিফল্ট সীমাবদ্ধতা

SQLite ডিফল্ট সীমাবদ্ধতা যদি আপনি একটি কলামে কোন মান সন্নিবেশ না করেন, তাহলে ডিফল্ট মানটি ertedোকানো হবে।

উদাহরণ স্বরূপ:

ColumnName INTEGER NOT NULL PRIMARY KEY; 

যদি আপনি একটি সন্নিবেশ বিবৃতি লিখেন, এবং আপনি সেই কলামের জন্য কোন মান নির্দিষ্ট করেন নি, কলামের মান 0 হবে।

SQLite অনন্য সীমাবদ্ধতা

এসকিউএলাইট অনন্য সীমাবদ্ধতা এটি কলামের সমস্ত মানগুলির মধ্যে সদৃশ মানগুলিকে প্রতিরোধ করবে।

উদাহরণ স্বরূপ:

PRIMARY KEY(ColumnName); 

এটি প্রয়োগ করবে 'কর্মচারী আইডি' মান অনন্য হতে হবে, কোন সদৃশ মান অনুমোদিত হবে না। লক্ষ্য করুন, এটি কলামের মানগুলির উপর প্রযোজ্য 'কর্মচারী আইডি' কেবল.

SQLite চেক সীমাবদ্ধতা

এসকিউএলাইট একটি সন্নিবেশিত মান পরীক্ষা করার জন্য একটি শর্ত পরীক্ষা করে, যদি মানটি শর্তের সাথে মেলে না, তাহলে এটি সন্নিবেশ করা হবে না। | _+_ |

আপনি 10 এর কম মান সন্নিবেশ করতে পারবেন না 'পরিমাণ' কলাম।

SQLite বৈদেশিক কী কী?

এসকিউএলাইট বিদেশী কী হল একটি সীমাবদ্ধতা যা একটি টেবিলে অন্য টেবিলে উপস্থিত মানটির অস্তিত্ব যাচাই করে যা প্রথম টেবিলের সাথে সম্পর্ক রাখে যেখানে বিদেশী কী সংজ্ঞায়িত করা হয়।

একাধিক টেবিলের সাথে কাজ করার সময়, যখন দুটি টেবিল থাকে যা একে অপরের সাথে সম্পর্কিত একটি কলামের সাথে সাধারণ। এবং যদি আপনি নিশ্চিত করতে চান যে তাদের একটিতে সন্নিবেশিত মান অন্য টেবিলের কলামে বিদ্যমান থাকতে হবে, তাহলে আপনার কলামে 'বিদেশী কী সীমাবদ্ধতা' ব্যবহার করা উচিত।

এই ক্ষেত্রে, যখন আপনি সেই কলামে একটি মান সন্নিবেশ করার চেষ্টা করেন, তখন বিদেশী কী নিশ্চিত করবে যে সন্নিবেশিত মানটি টেবিলের কলামে বিদ্যমান।

লক্ষ্য করুন যে SQLite- এ ডিফল্টভাবে বিদেশী কী সীমাবদ্ধতাগুলি সক্ষম করা হয় না, আপনাকে প্রথমে নিম্নলিখিত কমান্ডটি চালানোর মাধ্যমে তাদের সক্ষম করতে হবে: | _+_ |

3.6.19 সংস্করণ থেকে শুরু করে এসকিউএলাইটে বিদেশী কী সীমাবদ্ধতা চালু করা হয়েছিল।

উদাহরণ

ধরুন যদি আমাদের দুটি টেবিল থাকে; ছাত্র এবং বিভাগ।

ছাত্রদের টেবিলে ছাত্রদের একটি তালিকা আছে, এবং বিভাগের টেবিলে বিভাগগুলির একটি তালিকা রয়েছে। প্রতিটি ছাত্র একটি বিভাগের অন্তর্গত; অর্থাৎ, প্রতিটি শিক্ষার্থীর একটি ডিপার্টমেন্ট আইডি কলাম রয়েছে।

এখন, আমরা দেখব কিভাবে বিদেশী কী সীমাবদ্ধতা সহায়ক হতে পারে তা নিশ্চিত করতে যে শিক্ষার্থীদের টেবিলে বিভাগীয় আইডির মান অবশ্যই বিভাগের টেবিলে থাকতে হবে।

সুতরাং, যদি আমরা শিক্ষার্থীদের টেবিলে ডিপার্টমেন্ট আইডি -তে একটি বিদেশী কী সীমাবদ্ধতা তৈরি করি, তাহলে প্রতিটি সন্নিবেশিত বিভাগকে আইডি বিভাগের টেবিলে উপস্থাপন করতে হবে। | _+_ |

বিদেশী কী সীমাবদ্ধতা অন্য টেবিলের সাথে সম্পর্কযুক্ত একটি টেবিলে অনির্ধারিত উপাদান বা মান সন্নিবেশ করাকে কীভাবে প্রতিরোধ করতে পারে তা পরীক্ষা করার জন্য, আমরা নিম্নলিখিত উদাহরণটি দেখব।

এই উদাহরণে, বিভাগের টেবিলে শিক্ষার্থীদের টেবিলে একটি বিদেশী কী সীমাবদ্ধতা রয়েছে, তাই শিক্ষার্থীদের টেবিলে যে কোনো বিভাগ আইডি মান সন্নিবেশিত করা আবশ্যক। যদি আপনি একটি ডিপার্টমেন্ট আইডি মান সন্নিবেশ করার চেষ্টা করেন যা বিভাগের টেবিলে নেই, বিদেশী কী সীমাবদ্ধতা আপনাকে এটি করতে বাধা দেবে।

আসুন দুটি বিভাগ সন্নিবেশ করাই 'এটা' এবং 'শিল্প' নিম্নরূপ বিভাগ টেবিলে: | _+_ |

দুটি বিবৃতি দুটি বিভাগে বিভাগ সারণীতে সন্নিবেশ করানো উচিত, আপনি নিশ্চিত করতে পারেন যে প্রশ্নটি চালানোর মাধ্যমে দুটি মান সন্নিবেশ করা হয়েছে 'বিভাগ থেকে নির্বাচন করুন' তারপর:

তারপর ডিপার্টমেন্ট আইডি দিয়ে নতুন ছাত্র ertোকানোর চেষ্টা করুন যা বিভাগের টেবিলে নেই: | _+_ |

সারিটি ertedোকানো হবে না, এবং আপনি একটি ত্রুটি পাবেন যা বলছে: বৈদেশিক কী সীমাবদ্ধতা ব্যর্থ হয়েছে।