কম্পিউটার

আমরা কিভাবে একাধিক কলামে বিদেশী কী সীমাবদ্ধতা নির্ধারণ করতে পারি?


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. আমরা কিভাবে MySQL সঞ্চিত জেনারেটেড কলাম যোগ করতে টেবিল পরিবর্তন করতে পারি?

  2. কিভাবে আমি MySQL এ একাধিক টেবিল জুড়ে কলাম যোগ করতে পারি?

  3. আমি কিভাবে আমার MySQL টেবিল কলামের নাম পেতে পারি?

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