কম্পিউটার

কিভাবে আমরা একটি MySQL টেবিলের একাধিক ক্ষেত্রে বিদেশী কী সীমাবদ্ধতা যুক্ত করতে পারি?


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

উদাহরণ

ধরুন আমাদের একটি টেবিল 'customer2' আছে যার একটি প্রাথমিক কী সীমাবদ্ধতা রয়েছে 'cust_unq_id' ক্ষেত্রে নিম্নরূপ −

mysql> describe customer2;
+-------------+-------------+------+-----+---------+-------+
| Field       | Type        | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| cust_id     | int(11)     | YES  |     | NULL    |       |
| First_name  | varchar(20) | YES  |     | NULL    |       |
| Last_name   | varchar(20) | YES  |     | NULL    |       |
| City        | varchar(10) | YES  |     | NULL    |       |
| cust_unq_id | int(11)     | NO   | PRI | 0       |       |
+-------------+-------------+------+-----+---------+-------+
5 rows in set (0.06 sec)

এবং আমাদের কাছে একটি টেবিল অর্ডার 1 রয়েছে যেটিতে ইতিমধ্যেই প্যারেন্ট টেবিল 'গ্রাহক'-কে উল্লেখ করে 'Cust_id' ক্ষেত্রে একটি বিদেশী কী সীমাবদ্ধতা রয়েছে৷

mysql> describe orders1;
+--------------+-------------+------+-----+---------+-------+
| Field        | Type        | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+-------+
| order_id     | int(11)     | NO   | PRI | NULL    |       |
| Product_name | varchar(25) | YES  |     | NULL    |       |
| orderdate    | date        | YES  |     | NULL    |       |
| Cust_id      | int(11)     | YES  | MUL | NULL    |       |
| cust_unq_id  | int(11)     | YES  |     | NULL    |       |
+--------------+-------------+------+-----+---------+-------+
5 rows in set (0.04 sec)

এখন, ALTER TABLE ক্যোয়ারী অনুসরণ করার সাহায্যে আমরা প্যারেন্ট টেবিল 'customer2'-তে উল্লেখ করে 'cust_unq_id' ক্ষেত্রে আরেকটি বিদেশী কী সীমাবদ্ধতা যোগ করতে পারি।

mysql> Alter table orders1 add FOREIGN KEY(cust_unq_id) REFERENCES Customer2(Cust_unq_id);
Query OK, 0 rows affected (0.25 sec)
Records: 0  Duplicates: 0  Warnings: 0  

mysql> describe orders1;
+--------------+-------------+------+-----+---------+-------+
| Field        | Type        | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+-------+
| order_id     | int(11)     | NO   | PRI | NULL    |       |
| Product_name | varchar(25) | YES  |     | NULL    |       |
| orderdate    | date        | YES  |     | NULL    |       |
| Cust_id      | int(11)     | YES  | MUL | NULL    |       |
| cust_unq_id  | int(11)     | YES  | MUL | NULL    |       |
+--------------+-------------+------+-----+---------+-------+
5 rows in set (0.06 sec)

উপরের ফলাফল সেট থেকে, এটি লক্ষ্য করা যায় যে 'orders1' টেবিলে দুটি রয়েছে, একটি 'cust_id' এ এবং অন্যটি 'cust_unq_id' বিদেশী কী সীমাবদ্ধতা রয়েছে।


  1. মাইএসকিউএল-এ NULL প্রদর্শনকারী একটি টেবিল কলামে কীভাবে উপ-টোটাল যোগ করবেন?

  2. মাইএসকিউএল ডিবিতে বিদেশী কী কীভাবে সনাক্ত করবেন?

  3. ক্ষেত্র প্রকার এবং বিদেশী কী সীমাবদ্ধতা প্রদর্শন করতে MySQL-এর জন্য sp_help?

  4. মাইএসকিউএল-এর বিভিন্ন টেবিলে কীভাবে প্রাথমিক কী বিদেশী হিসাবে উল্লেখ করবেন?