سلسلة دروس SQL| FOREIGN KEY
هذه المقالة جزء من سلسلة دروس SQL، يمكنك الاطلاع على الفهرس
- قيد FOREIGN KEY في SQL
- استخدام FOREIGN KEY في CREATE TABLE في SQL
- استخدام FOREIGN KEY في ALTER TABLE في SQL
- حذف القيد FOREIGN KEY
قيد FOREIGN KEY في SQL
FOREIGN KEY هو مفتاح يستخدم لربط جدولين معًا.
FOREIGN KEY هو حقل (أو مجموعة من الحقول) في أحد الجداول التي تشير إلى PRIMARY KEY في جدول آخر.
يسمى الجدول الذي يحتوي على FOREIGN KEY الجدول الفرعي ، ويسمى الجدول الذي يحتوي على candidate key الجدول المرجعي أو الجدول الأصل.
انظر إلى الجدولين التاليين:
جدول “الأشخاص”:
PersonID | LastName | FirstName | Age |
---|---|---|---|
1 | Hansen | Ola | 30 |
2 | Svendson | Tove | 23 |
3 | Pettersen | Kari | 20 |
جدول “الطلبات”:
OrderID | OrderNumber | PersonID |
1 | 77895 | 3 |
2 | 44678 | 3 ا |
3 | 22456 | 2 |
4 | 24562 | 1 |
لاحظ أن عمود “PersonID” في جدول “الطلبات” يشير إلى عمود “Person ID” في جدول “الأشخاص”.
عمود “PersonID” في جدول “الأشخاص” هو PRIMARY KEY في جدول “الأشخاص”.
عمود “PersonID” في جدول “الطلبات” هو FOREIGN KEY في جدول “الطلبات”.
يستخدم قيد FOREIGN KEY لمنع الإجراءات التي من شأنها تدمير الروابط بين الجداول.
يمنع القيد FOREIGN KEY أيضًا إدخال البيانات غير الصالحة في عمود FOREIGN KEY، لأنه يجب أن تكون البيانات المدخلة من أحد القيم الموجودة في الجدول الذي يشير إليه.
استخدام FOREIGN KEY في CREATE TABLE في SQL
يقوم SQL التالي بإنشاء FOREIGN KEY في عمود “PersonID” عند إنشاء جدول “الطلبات”:
MySQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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:
1
2
3
4
5
6
7
8
9
10
11
CREATE TABLE Orders (
OrderID int NOT NULL PRIMARY KEY,
OrderNumber int NOT NULL,
PersonID int FOREIGN KEY REFERENCES Persons(PersonID)
);
للسماح بتسمية قيد FOREIGN KEY، ولتحديد قيد FOREIGN KEY على أعمدة متعددة، استخدم بناء جملة SQL التالي:
MySQL / SQL Server / Oracle / MS Access:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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 في SQL
لإنشاء قيد FOREIGN KEY على عمود “PersonID” عند إنشاء جدول “الطلبات”، استخدم SQL التالية:
MySQL / SQL Server / Oracle / MS Access:
1
2
3
4
5
ALTER TABLE Orders
ADD FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);
للسماح بتسمية قيد FOREIGN KEY، ولتحديد قيد FOREIGN KEY على أعمدة متعددة، استخدم بناء جملة SQL التالي:
MySQL / SQL Server / Oracle / MS Access:
1
2
3
4
5
6
7
ALTER TABLE Orders
ADD CONSTRAINT FK_PersonOrder
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);
حذف القيد FOREIGN KEY
لحذف قيد FOREIGN KEY، استخدم عبارة SQL التالية:
MySQL:
1
2
3
4
5
ALTER TABLE Orders
DROP FOREIGN KEY FK_PersonOrder;
SQL Server / Oracle / MS Access:
1
2
3
4
5
ALTER TABLE Orders
DROP CONSTRAINT FK_PersonOrder;
التالي: Check