SQL FOREIGN KEY

محدودیت foreign key  در یک جدول به کلید اصلی یک جدول دیگر (primary key ) اشاره دارد .

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

جدول “person”

P_Id LastName FirstName Address City
1 Hansen Ola webfocus.ir Sandnes
2 Svendson Tove Borgvn 23 webfocus.ir
3 Pettersen Kari Storgt 20 Stavanger

جدول “order”

O_Id OrderNo P_Id
1 77895 3
2 44678 3
3 22456 2
4 24562 1

دقت کنید که عنصر P_Id درجدول order به عنصر همنام خود یعنی P_Id در جدول person اشره دارد و حاوی همان اطلاعات میباشد P_Id در order یک  foreign key  و در person یک primary key  میباشد.

foreign key  در واقع از وارد شدن اطلاعات نا معتبر در جدول و همچنین هرچیز که ارتباط بین دو جدول را تخریب کند جلوگیری میکند زیرا که به مقدار یکتایی در جدول اصلی اشاره دارد.

ایجاد foreign key هنگام ساخت جدول

برای انجام عمل فوق از دستور زیر استفاده میکنیم

MySQL:

CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)
)

SQL Server / Oracle / MS Access:

CREATE TABLE Orders
(
O_Id int NOT NULL PRIMARY KEY,
OrderNo int NOT NULL,
P_Id int FOREIGN KEY REFERENCES Persons(P_Id)
)

و برای محدود کردن چند ستون در جدول به عنوان foreign key  از دستور زیر استفاده کنید

MySQL / SQL Server / Oracle / MS Access:

CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
)

برای ساخت یک foreign key در جدولی که قبلا ساخته شده است باید از دستور زیر استفاده کرد.

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Orders
ADD FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)

و همچنین برای ساخت چند ستون به عنوان یک foreign key از دستور زیر استفاده کنید

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Orders
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)

و برای حذف یک foreign key از دستورات زیر بهره بگیرید

MySQL:

ALTER TABLE Orders
DROP FOREIGN KEY fk_PerOrders

SQL Server / Oracle / MS Access:

ALTER TABLE Orders
DROP CONSTRAINT fk_PerOrders

مترجم: علیرضا مسگری

شما ممکن است این را هم بپسندید

یک پاسخ

  1. نیک گفت:

    ممنون از توضیحات

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *