نحوه تعریف کلید خارجی (primary key) در mysql
تعریف کلید خارجی با ذکر مثال
کلید خارجی یک کلید یا چند کلید در یک جدول است که به یک کلید اصلی در جدول دیگر اشاره دارد.
به دو مثال زیر دقت کنید:
PersonId |
LastName |
FirstName |
Age |
1 |
Pedram |
Parham |
22 |
2 |
Nazanin |
Parsa |
30 |
3 |
Parvin |
Irani |
40 |
OrderId |
PersonId |
OrderNumber |
1 |
3 |
77895 |
2 |
3 |
44678 |
3 |
2 |
22456 |
4 |
1 |
24562 |
دقت کنید ستون personId در جدول Orders اشاره به ستون PersonId در جدول persons دارد.
ستون personId در جدول persons کلید اصلی است ولی در جدول orders کلید خارجی است.
محدودیت کلید خارجی به این منظور استفاده میشود تا از اعمالی که منجر به خراب شدن ارتباط بین جداول میشود جلوگیری کند.
محدودیت کلید خارجی همچنین از ورود داده اشتباه در ستون کلید خارجی جلوگیری میکند زیرا مقداری که در کلید خارجی درج میشود بایستی همواره یکی از مقادیر کلید اصلی باشد.
تعریف کلید خارجی در زمان ایجاد جدول
CREATE TABLE Orders (
OrderID int NOT NULL,
OrderNumber int NOT NULL,
PersonID int,
PRIMARY KEY (OrderID),
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID)
);
برای اینکه بتوانیم کلید خارجی را به صورت محدودیت تعریف کنیم و به آن یک نام بدهیم از روش زیر استفاده می کنیم:
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)
);
تعریف کلید خارجی با استفاده از دستور Alter
ALTER TABLE Orders
ADD FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);
برای اینکه بتوانیم کلید خارجی را به صورت محدودیت تعریف کنیم و به آن یک نام بدهیم از روش زیر استفاده می کنیم:
ALTER TABLE Orders
ADD CONSTRAINT FK_PersonOrder
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);
حذف محدودیت کلید خارجی
ALTER TABLE Orders
DROP FOREIGN KEY FK_PersonOrder;