কম্পিউটার

যখন দুটি টেবিল MySQL FOREIGN KEY এর সাথে সংযুক্ত থাকে তখন আমরা কীভাবে বলতে পারি যে শিশু টেবিলে ডেটার অখণ্ডতা বজায় থাকে?


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

mysql> Select * from Customer;
+----+--------+
| id | name   |
+----+--------+
| 1  | Gaurav |
| 2  | Raman  |
| 3  | Harshit|
| 4  | Aarav  |
+----+--------+
4 rows in set (0.00 sec)
mysql> Select * from orders;
+-----------+-------------+------+
| order_id  | product     | id   |
+-----------+-------------+------+
| 100       | Notebook    | 1    |
| 110       | Pen         | 1    |
| 120       | Book        | 2    |
| 130       | Charts      | 2    |
+-----------+-------------+------+
4 rows in set (0.00 sec)

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

mysql> insert into orders values(400, 'Notebook',10);
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`query`.`orders`, CONSTRAINT `orders_ibfk_1` FOREIGN KEY (`id`) REFERENCES `customer` (`id`))

  1. কিভাবে আমরা দুটি MySQL টেবিলে ডেটা তুলনা করতে পারি?

  2. আমি কিভাবে দুটি MySQL টেবিল একত্রিত করতে পারি?

  3. কিভাবে বিভিন্ন MySQL ডাটাবেসে কলাম সহ দুটি টেবিলের মধ্যে ডেটা সরানো যায়?

  4. একটি মাইএসকিউএল টেবিলে সর্বোচ্চ আইডির সাথে যুক্ত ডেটা কীভাবে পাবেন?