تعریف کلید خارجی در SQL
کلید خارجی (Foreign Key) در SQL یک ویژگی در یک جدول است که به یک ستون (یا مجموعه ای از ستون ها) در جدول دیگر اشاره می کند. این ویژگی برای ایجاد ارتباط بین دو جدول و حفظ یکپارچگی داده ها استفاده می شود.
برای تعریف کلید خارجی در SQL، می توانید از دستور CREATE TABLE یا ALTER TABLE استفاده کنید.
در دستور CREATE TABLE، می توانید کلید خارجی را با استفاده از عبارت FOREIGN KEY بعد از تعریف ستون مورد نظر و با ذکر نام جدول و ستون ارجاعی مشخص کنید.
مثال 1:
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 کلید خارجی را به یک جدول موجود اضافه کنید.
مثال 2:
SQL
ALTER TABLE orders ADD CONSTRAINT FOREIGN KEY (customer_id) REFERENCES customers(id);
در این مثال:
- کلید خارجی بر روی ستون
customer_idدر جدولordersتعریف می شود. - این کلید خارجی به ستون
idدر جدولcustomersاشاره می کند.
نکات مهم:
- یک ستون می تواند هم کلید خارجی و هم کلید اولیه باشد.
- مقادیر موجود در ستون کلید خارجی باید در ستون ارجاعی موجود باشند.
- اگر یک رکورد در جدول ارجاعی حذف شود، رکوردهای مرتبط در جدول با کلید خارجی نیز باید حذف شوند.
مثال 3:
- تعریف کلید خارجی با چند ستون:
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 مراجعه کنید.



