الانضمام الذاتي لـ SQL

Alandmam Aldhaty L Sql



إحدى الميزات الأكثر شهرة لقواعد البيانات العلائقية هي الصلات. تعد عمليات الانضمام إحدى أقوى ميزات قواعد البيانات العلائقية وأكثرها تعقيدًا. إنها تسمح بنمطية واسعة النطاق وعلاقات معقدة للغاية بين جداول قاعدة البيانات دون المساس بالأداء.

ومع ذلك، هناك نوع من الانضمام في SQL يميل إلى الانتقال تحت الرادار والذي يُعرف باسم الانضمام الذاتي.

في SQL، يعد الانضمام الذاتي تقنية قوية تسمح لنا بدمج الصفوف من نفس الجدول بناءً على عمود ذي صلة داخل نفس الجدول.







على عكس النوع الآخر من الصلات في SQL حيث نأخذ البيانات من جداول متعددة، تعمل الصلة الذاتية على جدول واحد.



قد تتساءل، لماذا أحتاج إلى الانضمام الذاتي عندما أستطيع البحث عن البيانات من الجدول نفسه؟ على الرغم من أن ذلك قد يكون صحيحًا، إلا أن الانضمام الذاتي يمكن أن يساعد في المهام عندما تحتاج إلى إجراء استعلامات بيانات متكررة أو البحث عن بيانات هرمية.



بشكل أساسي، يلعب الانضمام الذاتي دورًا أساسيًا حيث تحتاج إلى مقارنة صفوف الجدول نفسه.





انضم إلينا في هذا المنشور بينما نستكشف ماهية الروابط الذاتية وكيفية عملها وكيف يمكننا استخدامها في جدول SQL.

ملاحظة: قبل أن نتعمق، سنقوم بإعداد جدول أساسي لأغراض العرض التوضيحي. ومع ذلك، تشعر أنك تستخدم أي مجموعة بيانات مدعومة.



بيانات العينة

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

إنشاء منتجات الجدول (
مفتاح المنتج الأساسي INT،
اسم المنتج VARCHAR(255) ليس فارغًا،
Parent_id INT
);

أضف 10 نماذج سجلات إلى الجدول.

أدخل في المنتجات (معرف_المنتج، اسم_المنتج، معرف_الأصل) القيم
(1، 'إلكترونيات'، فارغة)،
(2، 'الهواتف الذكية'، 1)،
(3، 'أجهزة الكمبيوتر المحمولة'، 1)،
(4، 'آيفون 13'، 2)،
(5، 'سامسونج جالاكسي إس21'، 2)،
(6، 'ماك بوك برو'، 3)،
(7، 'ديل XPS 15'، 3)،
(8، 'الملحقات'، فارغة)،
(9، 'حافظات الهاتف'، 8)،
(10، 'حقائب الكمبيوتر المحمول'، 8)؛

الجدول الناتج هو كما يلي:

مثال 1: الانضمام الذاتي الأساسي

دعونا نبدأ بالانضمام الذاتي الأساسي. على سبيل المثال، يمكننا استخدام صلة ذاتية بسيطة لاسترداد العلاقة بين الوالدين والطفل لنفس الجدول.

على سبيل المثال، يمكننا استخدامه للعثور على كافة المنتجات والمنتجات الأصلية المقابلة لها. يمكننا تشغيل استعلام على النحو التالي:

حدد c.product_name كـ Child_product، p.product_name كـparent_product
من المنتجات ج
منتجات الانضمام اليسرى p ON c.parent_id = p.product_id;

في نموذج الاستعلام المحدد، نستخدم 'c' كاسم مستعار لجدول المنتجات الذي يمثل المنتجات الفرعية.

نقوم أيضًا بإنشاء الاسم المستعار 'p' لجدول المنتج لتمثيل المنتجات الأصلية.

في الخطوة التالية، نستخدم SQL LEFT JOIN الأساسي للتأكد من تضمين منتجات المستوى الأعلى في النتيجة.

وأخيرًا، نستخدم جملة ON لإنشاء علاقة بين السجلات التابعة والسجلات الأصلية باستخدام العمودين 'parent_id' و'product_id'.

الجدول الناتج هو كما يلي:

ستلاحظ أن المنتجات الأصلية لا تحتوي على رابط علوي لأنها موجودة في أعلى التسلسل الهرمي والتي تُعرف أيضًا باسم العناصر الجذرية.

المثال 2: جلب بيانات هرمية

أحد الأدوار الأساسية للانضمام الذاتي هو استرداد البيانات الهرمية. على سبيل المثال، لنفترض أننا نريد استرداد جميع المنتجات الفرعية حيث يكون المنتج مساويًا لـ 'الملحقات'. يمكننا تشغيل الاستعلام باستخدام الانضمام الذاتي كما يلي:

حدد c.product_name كـ Child_product
من المنتجات ج
الانضمام إلى المنتجات p ON c.parent_id = p.product_id
أين p.product_name = 'الملحقات'؛

في هذه الحالة، نستخدم JOIN لدمج جدول المنتجات مع نفسه ثم نستخدم جملة WHERE لتصفية النتائج التي نريدها.

خاتمة

في هذا البرنامج التعليمي، اكتشفنا ماهية الانضمام الذاتي وكيفية عمله وكيف يمكننا استخدامه في جدول SQL لاسترداد بيانات هرمية أو إجراء استعلامات متكررة.