Back to Top


1398/02/23 - 02:13

نحوه تعریف کلید خارجی (primary key) در mysql

کلید خارجی یا priamary key کلیدی است که به منظور اتصال دو جدول استفاده میشود.

کلمات کلیدی

کلید خارجیforeign keyprimary keyکلید اصلیmysql

نحوه تعریف کلید خارجی (primary key) در mysql

تعریف کلید خارجی با ذکر مثال

کلید خارجی یک کلید یا چند کلید در یک جدول است که به یک کلید اصلی در جدول دیگر اشاره دارد.

به دو مثال زیر دقت کنید:

جدول persons

PersonId

LastName

FirstName

Age

1

Pedram

Parham

22

2

Nazanin

Parsa

30

3

Parvin

Irani

40

 

جدول orders

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;