مفتاح SQL الخارجي: كيفية الإنشاء في SQL Server مع مثال

ما هو المفتاح الأجنبي؟

A مفتاح غريب يوفر طريقة لفرض التكامل المرجعي داخل SQL Server. بكلمات بسيطة، يضمن المفتاح الخارجي أن القيم الموجودة في أحد الجداول يجب أن تكون موجودة في جدول آخر.

قواعد المفتاح الأجنبي

  • NULL مسموح به في مفتاح SQL الخارجي.
  • يسمى الجدول المشار إليه بالجدول الأصل
  • يسمى الجدول الذي يحتوي على المفتاح الخارجي في SQL بالجدول الفرعي.
  • يشير المفتاح الخارجي لـ SQL في الجدول الفرعي إلى المفتاح الأساسي في الجدول الأصل.
  • تفرض هذه العلاقة بين الوالدين والطفل القاعدة المعروفة باسم "التكامل المرجعي".

يلخص المثال أدناه المفتاح الخارجي في SQL مع الرسم التخطيطي جميع النقاط المذكورة أعلاه لـ FOREIGN KEY

قواعد المفتاح الخارجي في SQL
كيف يعمل المفتاح الخارجي

كيفية إنشاء مفتاح أجنبي في SQL

يمكننا إنشاء مفتاح غريب في خادم SQL في 2 طريقة:

  1. مزود خدمة إدارة ستوديو
  2. T-SQL

مزود خدمة إدارة ستوديو

الجدول الأصلي: لنفترض أن لدينا جدولًا أصليًا موجودًا باسم "الدورة التدريبية". يعد Course_ID وCourse_name عمودين يحتويان على Course_Id كمفتاح أساسي.

إنشاء مفتاح أجنبي في SQL

الجدول الفرعي: نحن بحاجة إلى إنشاء الجدول الثاني كجدول فرعي. "Course_ID" و"Course_Strength" كعمودين. ومع ذلك، يجب أن يكون "Course_ID" هو المفتاح الخارجي.

الخطوة 1) انقر بزر الماوس الأيمن على الجداول>جديد>جدول...

إنشاء مفتاح أجنبي في SQL

الخطوة 2) أدخل اسم عمودين باسم "Course_ID" و"Course_Strength". انقر بزر الماوس الأيمن على عمود "Course_Id". الآن انقر على العلاقة.

إنشاء مفتاح أجنبي في SQL

الخطوة 3) In "علاقة المفتاح الخارجي."،' انقر "إضافة"

إنشاء مفتاح أجنبي في SQL

الخطوة 4) في "مواصفات الجدول والعمود"، انقر فوق '…' أيقونة

إنشاء مفتاح أجنبي في SQL

الخطوة 5) حدد "جدول المفاتيح الأساسية" كـ "COURSE" ويتم الآن إنشاء الجدول الجديد كـ "جدول المفاتيح الخارجية" من القائمة المنسدلة.

إنشاء مفتاح أجنبي في SQL

الخطوة 6) "جدول المفتاح الأساسي" - حدد عمود "معرف_الدورة" كعمود "جدول المفتاح الأساسي".

"جدول المفاتيح الخارجية" - حدد عمود "معرف_الدورة التدريبية" كعمود "جدول المفاتيح الخارجية". انقر فوق موافق.

إنشاء مفتاح أجنبي في SQL

الخطوة 7) انقر على إضافة.

إنشاء مفتاح أجنبي في SQL

الخطوة 8) أعط اسم الجدول كـ "Course_Strength" وانقر عليه حسنا.

إنشاء مفتاح أجنبي في SQL

النتيجة: لقد وضعنا العلاقة بين الوالدين والطفل بين 'دورة' و "قوة_الدورة."

إنشاء مفتاح أجنبي في SQL

T-SQL: إنشاء جدول بين الوالدين والطفل باستخدام T-SQL

الجدول الأصلي: أعد النظر، لدينا جدول أصل موجود باسم الجدول باسم "الدورة التدريبية".

يعد Course_ID وCourse_name عمودين يحتويان على Course_Id كمفتاح أساسي.

إنشاء جدول الوالدين والطفل باستخدام T-SQL

الجدول الفرعي: نحتاج إلى إنشاء الجدول الثاني كجدول فرعي باسم "Course_Strength_TSQL".

"Course_ID" و"Course_Strength" كعمودين للجدول الفرعي Course_Strength_TSQL.' ومع ذلك، يجب أن يكون "Course_ID" هو المفتاح الخارجي.

يوجد أدناه بناء الجملة لإنشاء جدول باستخدام المفتاح FOREIGN

بناء الجملة:

CREATE TABLE childTable
(
  column_1 datatype [ NULL |NOT NULL ],
  column_2 datatype [ NULL |NOT NULL ],
  ...

  CONSTRAINT fkey_name
    FOREIGN KEY (child_column1, child_column2, ... child_column_n)
    REFERENCES parentTable (parent_column1, parent_column2, ... parent_column_n)
    [ ON DELETE { NO ACTION |CASCADE |SET NULL |SET DEFAULT } ]
    [ ON UPDATE { NO ACTION |CASCADE |SET NULL |SET DEFAULT } ] 
);

فيما يلي وصف للمعلمات المذكورة أعلاه:

  • ChildTable هو اسم الجدول الذي سيتم إنشاؤه.
  • column_1، column_2- الأعمدة المراد إضافتها إلى الجدول.
  • fkey_name- اسم قيد المفتاح الخارجي المراد إنشاؤه.
  • Child_column1، Child_column2…child_column_n- اسم أعمدة chidTable للإشارة إلى المفتاح الأساسي فيparentTable.
  • parentTable- اسم الجدول الأصلي الذي سيتم الرجوع إلى مفتاحه في الجدول الفرعي.
  • parent_column1،parent_column2، …parent_column3- الأعمدة التي تشكل المفتاح الأساسي للجدول الأصلي.
  • عند الحذف. معلمة اختيارية. ويحدد ما يحدث لبيانات الطفل بعد حذف البيانات الأصلية. تتضمن بعض قيم هذه المعلمة NO ACTION أو SET NULL أو CASCADE أو SET DEFAULT.
  • عند التحديث - معلمة اختيارية. ويحدد ما يحدث لبيانات الطفل بعد تحديث البيانات الأصلية. تتضمن بعض قيم هذه المعلمة NO ACTION أو SET NULL أو CASCADE أو SET DEFAULT.
  • لا يوجد إجراء - يستخدم مع عند الحذف وعند التحديث. وهذا يعني أنه لن يحدث أي شيء لبيانات الطفل بعد تحديث أو حذف بيانات الوالدين.
  • CASCADE - يُستخدم مع ON DELETE وON UPDATE. سيتم حذف بيانات الطفل أو تحديثها بعد حذف بيانات الوالدين أو تحديثها.
  • SET NULL - يُستخدم مع ON DELETE وON UPDATE. سيتم تعيين الطفل على قيمة فارغة بعد تحديث البيانات الأصلية أو حذفها.
  • الإعداد الافتراضي - يستخدم مع عند الحذف وعند التحديث. سيتم تعيين بيانات الطفل على القيم الافتراضية بعد التحديث أو الحذف على البيانات الأصلية.

دعونا نرى مفتاحًا خارجيًا في مثال SQL لإنشاء جدول بعمود واحد كمفتاح خارجي:

المفتاح الخارجي في مثال SQL

الاستعلام:

CREATE TABLE Course_Strength_TSQL
(
Course_ID Int,
Course_Strength Varchar(20) 
CONSTRAINT FK FOREIGN KEY (Course_ID)
REFERENCES COURSE (Course_ID)	
)

الخطوة 1) قم بتشغيل الاستعلام بالضغط على تنفيذ.

المفتاح الخارجي في SQL

النتيجة: لقد وضعنا العلاقة بين الوالدين والطفل بين 'دورة' و "Course_strength_TSQL."

المفتاح الخارجي في SQL

باستخدام ALTER TABLE

الآن سوف نتعلم كيفية استخدام المفتاح الخارجي في SQL وإضافة المفتاح الخارجي في خادم SQL باستخدام عبارة ALTER TABLE، وسوف نستخدم بناء الجملة الموضح أدناه:

ALTER TABLE childTable
ADD CONSTRAINT fkey_name
    FOREIGN KEY (child_column1, child_column2, ... child_column_n)
    REFERENCES parentTable (parent_column1, parent_column2, ... parent_column_n);

فيما يلي وصف للمعلمات المستخدمة أعلاه:

  • ChildTable هو اسم الجدول الذي سيتم إنشاؤه.
  • column_1، column_2- الأعمدة المراد إضافتها إلى الجدول.
  • fkey_name- اسم قيد المفتاح الخارجي المراد إنشاؤه.
  • Child_column1، Child_column2…child_column_n- اسم أعمدة chidTable للإشارة إلى المفتاح الأساسي فيparentTable.
  • parentTable- اسم الجدول الأصلي الذي سيتم الرجوع إلى مفتاحه في الجدول الفرعي.
  • parent_column1،parent_column2، …parent_column3- الأعمدة التي تشكل المفتاح الأساسي للجدول الأصلي.

تغيير الجدول إضافة مثال على المفتاح الخارجي:

ALTER TABLE department
ADD CONSTRAINT fkey_student_admission
    FOREIGN KEY (admission)
    REFERENCES students (admission);

لقد أنشأنا مفتاحًا خارجيًا باسم fkey_student_admission على جدول القسم. يشير هذا المفتاح الخارجي إلى عمود القبول في جدول الطلاب.

مثال للاستعلام عن المفتاح الخارجي

أولاً، دعونا نرى بيانات جدول الوالدين، بالطبع.

الاستعلام:

SELECT * from COURSE;

مثال للاستعلام عن المفتاح الخارجي

الآن دعونا نقوم بإدراج بعض الصفوف في جدول الطفل: "Course_strength_TSQL."

سنحاول إدراج نوعين من الصفوف

  1. النوع الأول، والذي سيكون Course_Id في الجدول الفرعي موجودًا في Course_Id الخاص بالجدول الأصل. أي معرف_الدورة = 1 و 2
  2. النوع الثاني، والذي لا يوجد له Course_Id في الجدول الفرعي في جدول Course_Id الخاص بالجدول الأصل. أي معرف الدورة = 5

الاستعلام:

Insert into COURSE_STRENGTH values (1,'SQL');
Insert into COURSE_STRENGTH values (2,'Python');
Insert into COURSE_STRENGTH values (5,'PERL');

مثال للاستعلام عن المفتاح الخارجي

النتيجة: لنقم بتشغيل الاستعلام معًا لرؤية جدول الوالدين والطفل

الصف الذي يحتوي على Course_ID 1 و2 موجود في جدول Course_strength. حيث أن Course_ID 5 يعد استثناءً.

مثال للاستعلام عن المفتاح الخارجي

نبذة عامة

  • يجب أن تكون كل قيمة للمفتاح الخارجي جزءًا منها المفتاح الأساسي من الجداول الأخرى.
  • يمكن أن يشير مفتاح MySQL الخارجي إلى عمود آخر في نفس الجدول. ويُعرف هذا المرجع بالمرجع الذاتي.
  • قيد المفتاح الخارجي لـ SQL: يُستخدم لتأمين الروابط بين الجداول والبيانات غير الصالحة التي سيتم إدراجها في عمود المفتاح الخارجي.
  • يمكنك إنشاء مفتاح خارجي باستخدام إنشاء جدول أو تغيير الجدول أو مزود خدمة إدارة ستوديو.
  • إليك الفرق بين المفتاح الأساسي والمفتاح الخارجي: انقر هنا لمعرفة ذلك