سؤال

بائع

(PK) - هوية شخصية
اسم

يفهم

(PK) - هوية شخصية
رقم المورد - FK - حذف متتالي إذا تم حذف البائع)
اسم

العنصر

(PK) - هوية شخصية
رقم المورد - (FK - حذف متتالي إذا تم حذف البائع)
اسم
سعر

غير متاح

(PK) - itemid - (FK - حذف متتالي إذا تم حذف العنصر)
(PK) - Standid - (FK - حذف متتالي إذا تم حذف الحامل)

تمثل قاعدة البيانات أعلاه ملعبًا رياضيًا.

  • توجد بائعين متعددين (بيتزا بوب ، توم تاكو ...)
  • توجد مواقف متعددة لكل بائع (Bob's Pizza Concourse A ، Bob's Pizza Concourse B ...)
  • يتم تكوين العناصر بواسطة البائع لأن جميع البائعين يعرضون نفس العناصر بنفس الأسعار
  • قد تنفد المواقف من عنصر معين ، وبالتالي فإن جدول غير متاحين له سجل لكل عنصر أصبح غير متوفر في موقف معين (باستخدام مفتاح أساسي مركب لـ Itemid و Standid)

    مشكلة:

    يمكنني إنشاء كل شيء على ما يرام حتى أضيف آخر مفتاح خارجي مدرج (fk_unavailableItem_standid_stand_id) مع قاعدة حذف: متتالية

    تقارير SQL Compact 3.5 (باستخدام VS 2010 Server Explorer) عن الخطأ التالي:ستؤدي العلاقة المرجعية إلى مرجع دوري غير مسموح به.

    أتفهم أنه إذا كان لدي سجل في جدول غير متاح ، ويتم حذف بائعه ، فسوف يحاول حذفه مرتين:

  • مرة واحدة لأنه تم حذف العنصر المشار إليه.
  • مرة واحدة لأنه تم حذف موقفه المشار إليه.

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

    شكرا لك لاي مساعدة تقدمها!

  • هل كانت مفيدة؟

    المحلول

    لا يمكنك حذف حذف من خلال فرعين ، فهو قيود على الأداة. لكن Cascade Delete هو أمر سيء بشكل عام للقيام بقاعدة البيانات البريئة الفقيرة على أي حال. حذف من الجدول السفلي والتحرك لأعلى. وبهذه الطريقة إذا كان لديك 100000000000 سجل في الأسفل ، فيمكنك القيام بها على دفعات من أجل الأداء. Cascade Delete يمكن أن يسبب مشاكل في الأداء.

    نصائح أخرى

    على افتراض أن SSCE لا يسمح بحذف Cascade على طريق مسارين ، يمكنك إزالة Cascade Delete for UnavailableItem.Standid.

    على الأقل ، سيظل يتابع عند حذف البائع أو عنصر ما.

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

    مرخصة بموجب: CC-BY-SA مع الإسناد
    لا تنتمي إلى StackOverflow
    scroll top