"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية التعامل مع علاقات المفاتيح الخارجية لجداول متعددة في قواعد بيانات SQL؟

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

تم النشر بتاريخ 2024-12-21
تصفح:793

How to Handle Foreign Key Relationships to Multiple Tables in SQL Databases?

التعامل مع المفاتيح الخارجية لجداول متعددة

لديك ثلاثة جداول: المناطق والبلدان والولايات. يمكن أن تنتمي البلدان والدول إلى مناطق، وتشكل هيكلًا هرميًا. الآن، تريد إنشاء جدول "المناطق_الشعبية" باستخدام العمودين "region_id" و"popular_place_id" وإنشاء علاقة مفتاح خارجي بين "popular_place_id" وإما البلدان أو الولايات بناءً على عمود "نوع_المكان_الشعبي".

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

الارتباطات متعددة الأشكال: الانضمام إلى جداول متعددة مع نوع رئيسي مشترك

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

ومع ذلك، فإن الارتباطات متعددة الأشكال لها قيود في SQL بسبب القيود. لا يمكن لـ SQL فرض تناسق قاعدة البيانات مع الارتباطات متعددة الأشكال. بدلاً من ذلك، يعتمد على التطبيق أو إطار العمل الذي ينفذ هذه الارتباطات لضمان سلامة البيانات.

الحلول البديلة لمراجع المفاتيح الخارجية إلى جداول متعددة

للحفاظ على التكامل المرجعي بدون تعدد الأشكال الجمعيات، فكر في هذه البدائل:

  • إنشاء جداول منفصلة: إنشاء جداول مثل يشير كل من "popular_states" و"popular_countries" إلى الولايات والبلدان، على التوالي. يوفر هذا تكامل البيانات من خلال قيود SQL ولكن قد يتطلب استعلامات متعددة لاسترداد جميع الأماكن الشائعة المرتبطة بالمستخدم.
  • إنشاء جدول أصل: إنشاء جدول "أماكن" يعمل كنوع رئيسي للدول والدول. سيكون لكل من الولايات والبلدان مفاتيح خارجية تشير إلى "الأماكن"، مما يضمن التكامل المرجعي.
  • استخدام عمودين:
  • بدلاً من عمود واحد يشير إلى الولايات أو البلدان، استخدم عمودين فارغين: " State_id" و"country_id." ومع ذلك، يجب عليك التأكد من أن واحدًا فقط من هذه الأعمدة ليس فارغًا وفرض هذا القيد من خلال مشغلات منطق التطبيق أو قاعدة البيانات.
التكامل العلائقي وانتهاك النماذج العادية

من المهم ملاحظة أن الارتباطات متعددة الأشكال تنتهك مبادئ تطبيع قاعدة البيانات. يحظر النموذج العادي الأول (1NF) خلط معاني مختلفة في عمود واحد، وهو ما يحدث عند تخزين معرفات الولاية والبلد في عمود "popular_place_id" واحد. تنتهك الارتباطات متعددة الأشكال أيضًا النموذج العادي الثالث (3NF) لأن معنى عمود "popular_place_id" يعتمد على عمود "popular_place_type" الإضافي.

باختصار، تقدم الارتباطات متعددة الأشكال حلاً محتملاً لعلاقات المفاتيح الخارجية لجداول متعددة في SQL. ومع ذلك، فإنها تقدم تحديات تتعلق بسلامة البيانات وتنتهك مبادئ تطبيع قاعدة البيانات. فكر في الأساليب البديلة المذكورة أعلاه لإدارة البيانات بشكل فعال.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3