محدودیت FOREIGN KEY

از ویکی‌کد
پرش به ناوبری پرش به جستجو
Main Page Tutorial
Sql-menu.png
موارد آموزشی
بانک اطلاعاتی
۱عبارت CREATE DATABASE
۲عبارت DROP DATABASE
۳پشتیبان‌گیری بانک اطلاعاتی برای SQL Server
۴عبارت CREATE TABLE
۵عبارت DROP TABLE
۶عبارت ALTER TABLE
۷محدودیت‌ها
۸محدودیت NOT NULL
۹محدودیت UNIQUE
۱۰محدودیت PRIMARY KEY
۱۱محدودیت FOREIGN KEY
۱۲محدودیت CHECK
۱۳محدودیت DEFAULT
۱۴عبارت CREATE INDEX
۱۵فیلد افزایش خودکار
۱۶کار با تاریخ‌ها
۱۷Viewها
۱۸تزریق
۱۹میزبانی
مرجع
مثال‌ها

محدودیت FOREIGN KEY (به انگلیسی: کلید خارجی) در SQL

کلید خارجی کلیدی است که برای متصل کردن دو جدول به هم استفاده می‌شود.[۱]

کلید خارجی فیلدی (یا مجموعه ای از فیلدها) در یک جدول است که به کلید اصلی (به انگلیسی: PRIMARY KEY) در جدول دیگر اشاره می‌کند.

جدول دارای کلید خارجی جدول فرزند نامیده می‌شود، و جدول دارای کلید کاندید (به انگلیسی: Candidate key) جدول والد یا مرجع نامیده می‌شود.

به دو جدول زیر نگاه کنید:

جدول "Persons":

PersonID LastName FirstName Age
1 Hansen Ola 30
2 Svendson Tove 23
3 Pettersen Kari 20

جدول "Orders":

OrderID OrderNumber PersonID
1 77895 3
2 44678 3
3 22456 2
4 24562 1

دقت کنید که ستون "PersonID" در جدول "Orders" به ستون "PersonID" در جدول "Persons" اشاره می‌کند.

ستون "PersonID" در جدول "Persons" کلید اصلی در جدول "Persons" است.

ستون "PersonID" در جدول "Orders" کلید خارجی در جدول "Orders" است.

محدودیت FOREIGN KEY برای جلوگیری از عملیاتی است که اتصال بین جدول‌ها را از بین می‌برد.

همچنین محدودیت FOREIGN KEY از وارد شدن داده‌های نامعتبر به ستون کلید خارجی پیشگیری می‌کند، زیرا مقدار آن باید یکی از مقدارهای موجود در جدولی باشد که به آن اشاره می‌کند.

SQL FOREIGN KEY در هنگام ایجاد جدول

SQL زیر هنگام ایجاد جدول یک FOREIGN KEY برروی ستون "PersonID" تعریف می‌کند:

MySQL:
1 CREATE TABLE Orders (
2     OrderID int NOT NULL,
3     OrderNumber int NOT NULL,
4     PersonID int,
5     PRIMARY KEY (OrderID),
6     FOREIGN KEY (PersonID) REFERENCES Persons(PersonID)
7 );
SQL Server / Oracle / MS Access:
1 CREATE TABLE Orders (
2     OrderID int NOT NULL PRIMARY KEY,
3     OrderNumber int NOT NULL,
4     PersonID int FOREIGN KEY REFERENCES Persons(PersonID)
5 );



برای نامگذاری محدودیت FOREIGN KEY و برای تعریف یک محدودیت FOREIGN KEY برروی چند ستون، از نحو SQL زیر استفاده کنید:

MySQL / SQL Server / Oracle / MS Access:
1 CREATE TABLE Orders (
2     OrderID int NOT NULL,
3     OrderNumber int NOT NULL,
4     PersonID int,
5     PRIMARY KEY (OrderID),
6     CONSTRAINT FK_PersonOrder FOREIGN KEY (PersonID)
7     REFERENCES Persons(PersonID)
8 );

SQL FOREIGN KEY در هنگام تغییر جدول

برای ایجاد محدودیت FOREIGN KEY برروی ستون "PersonID" هنگامی که جدول "Orders" از پیش تولید شده‌است، از SQL زیر استفاده می‌شود:

MySQL / SQL Server / Oracle / MS Access:
1 ALTER TABLE Orders
2 ADD FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);

برای نام‌گذاری محدودیت FOREIGN KEY و برای تعریف یک محدودیت FOREIGN KEY برروی چند ستون، از نحو SQL زیر استفاده کنید:

MySQL / SQL Server / Oracle / MS Access:
1 ALTER TABLE Orders
2 ADD CONSTRAINT FK_PersonOrder
3 FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);

حذف محدودیت FOREIGN KEY

برای حذف محدودیت FOREIGN KEY، از SQL زیر استفاده می‌شود:

MySQL:
1 ALTER TABLE Orders
2 DROP FOREIGN KEY FK_PersonOrder;
SQL Server / Oracle / MS Access:
1 ALTER TABLE Orders
2 DROP CONSTRAINT FK_PersonOrder;



منابع آموزشی