منشور

سلسلة دروس SQL| FOREIGN KEY

هذه المقالة جزء من سلسلة دروس SQL، يمكنك الاطلاع على الفهرس

قيد 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

هذا المنشور تحت ترخيص CC BY 4.0 بواسطة المؤلف.