FOREIGN KEY (FOREIGN KEY)
اینجا با «کلید خارجی (FOREIGN KEY)» آشنا می شوی. «کلید خارجی» ستونی است که جدول ها را به هم وصل می کند. این ستون به «کلید اصلی (PRIMARY KEY)» در جدول دیگر اشاره می کند. مثل کارت دانش آموزی که به شماره پرونده مدرسه وصل است.
FOREIGN KEY چیست؟
«محدودیت (Constraint)» یعنی قانون برای داده ها. «کلید خارجی» قانونی است که می گوید مقدار این ستون باید در جدول مرجع وجود داشته باشد. پس خطا کم می شود و ارتباط ها درست می مانند.
ساخت FOREIGN KEY هنگام ایجاد جدول
MySQL
CREATE TABLE Orders (
OrderID int NOT NULL,
OrderNumber int NOT NULL,
PersonID int,
PRIMARY KEY (OrderID),
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID)
);
SQL Server / Oracle / MS Access
CREATE TABLE Orders (
OrderID int NOT NULL PRIMARY KEY,
OrderNumber int NOT NULL,
PersonID int FOREIGN KEY REFERENCES Persons(PersonID)
);
نام گذاری و چندستونه کردن FOREIGN KEY
CREATE TABLE Orders (
OrderID int NOT NULL,
OrderNumber int NOT NULL,
PersonID int,
PRIMARY KEY (OrderID),
CONSTRAINT FK_PersonOrder FOREIGN KEY (PersonID)
REFERENCES Persons(PersonID)
);
افزودن FOREIGN KEY به جدول موجود
ALTER TABLE Orders
ADD FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);
ALTER TABLE Orders
ADD CONSTRAINT FK_PersonOrder
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);
حذف FOREIGN KEY
MySQL
ALTER TABLE Orders
DROP FOREIGN KEY FK_PersonOrder;
SQL Server / Oracle / MS Access
ALTER TABLE Orders
DROP CONSTRAINT FK_PersonOrder;
گام های عملی سریع
- ابتدا کلید اصلی جدول مرجع را مشخص کن.
- ستون ارجاع دهنده را در جدول فرزند بساز.
- FOREIGN KEY را با REFERENCES تعریف کن.
نکته ها و هشدارها
نکته: نام گذاری قیدها عیب یابی را ساده تر می کند.
نکته: نوع داده ستون های مرتبط باید یکسان باشد.
هشدار: حذف قید ممکن است داده های یتیم ایجاد کند.
لینک های داخلی مفید
راهنمای کلید خارجی، همچنین صفحه کلید اصلی و مثال استفاده با EXISTS.
جمع بندی سریع
- کلید خارجی به کلید اصلی اشاره می کند.
- نوع داده ها باید هم خوان باشد.
- می توانی قید را نام گذاری کنی.
- افزودن با CREATE یا ALTER ممکن است.
- حذف قید را با احتیاط انجام بده.