تعریف کلید خارجی در SQL
کلید خارجی (Foreign Key) در SQL یک ویژگی در یک جدول است که به یک ستون (یا مجموعه ای از ستون ها) در جدول دیگر اشاره می کند. این ویژگی برای ایجاد ارتباط بین دو جدول و حفظ یکپارچگی داده ها استفاده می شود.
برای تعریف کلید خارجی در SQL، می توانید از دستور CREATE TABLE
یا ALTER TABLE
استفاده کنید.
در دستور CREATE TABLE
، می توانید کلید خارجی را با استفاده از عبارت FOREIGN KEY
بعد از تعریف ستون مورد نظر و با ذکر نام جدول و ستون ارجاعی مشخص کنید.
مثال ۱:
SQL
CREATE TABLE orders (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
customer_id INT NOT NULL,
FOREIGN KEY (customer_id) REFERENCES customers(id)
);
در این مثال:
- ستون
customer_id
در جدولorders
یک کلید خارجی است. - این کلید خارجی به ستون
id
در جدولcustomers
اشاره می کند.
در دستور ALTER TABLE
، می توانید با استفاده از عبارت ADD CONSTRAINT FOREIGN KEY
کلید خارجی را به یک جدول موجود اضافه کنید.
مثال ۲:
SQL
ALTER TABLE orders ADD CONSTRAINT FOREIGN KEY (customer_id) REFERENCES customers(id);
در این مثال:
- کلید خارجی بر روی ستون
customer_id
در جدولorders
تعریف می شود. - این کلید خارجی به ستون
id
در جدولcustomers
اشاره می کند.
نکات مهم:
- یک ستون می تواند هم کلید خارجی و هم کلید اولیه باشد.
- مقادیر موجود در ستون کلید خارجی باید در ستون ارجاعی موجود باشند.
- اگر یک رکورد در جدول ارجاعی حذف شود، رکوردهای مرتبط در جدول با کلید خارجی نیز باید حذف شوند.
مثال ۳:
- تعریف کلید خارجی با چند ستون:
SQL
CREATE TABLE order_details (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
order_id INT NOT NULL,
product_id INT NOT NULL,
FOREIGN KEY (order_id) REFERENCES orders(id),
FOREIGN KEY (product_id) REFERENCES products(id)
);
در این مثال:
- کلید خارجی از دو ستون
order_id
وproduct_id
تشکیل شده است.
نکات تکمیلی:
- می توانید از انواع مختلف کلیدهای خارجی مانند
CASCADE
وSET NULL
برای تعیین نحوه رفتار با حذف رکوردها در جدول ارجاعی استفاده کنید. - برای اطلاعات بیشتر در مورد انواع کلیدها، می توانید به مستندات رسمی SQL مراجعه کنید.