سؤال

باستخدام SubSonic 3 ActiveRecord، قمت بإنشاء تعليمات برمجية من قاعدة بيانات موجودة تحتوي على مفاتيح خارجية.للتأكد من أن مخطط قاعدة البيانات صحيح دائمًا عند تبديل قواعد البيانات، قمت بوضع رمز الترحيل في بداية التطبيق، باستخدام IDataProvider.MigrateToDatabase<صفي>() لكل فئة تم إنشاؤها بواسطة ActiveRecord.tt.تبين أن رمز الترحيل لا يقوم بإعادة إنشاء المفاتيح الخارجية.

كيف يجب أن أتعامل مع FKs:

  • انسَ FKs تمامًا وتعامل مع عمليات الحذف المتتالية في الكود.الايجابيات:بطريقة ريلز، يتم الاحتفاظ بمنطق الأعمال في الكود.سلبيات:الحاجة إلى التعامل مع المعاملات، يصبح الكود أقبح بكثير؛يصبح المخطط ذهابًا وإيابًا بين قاعدة البيانات وActiveRecord مستحيلًا إذا تم تبديل/مسح قاعدة البيانات (تحتاج دائمًا إلى الاحتفاظ بالمخطط الأصلي لإعادة إنشاء/تعديل كود AR، وإلا فسيتم فقدان خصائص واحد إلى متعدد؟);أيضًا، قد يعتقد زملائي أنني مجنون.
  • أضف خطوة إلى عمليات الترحيل لإنشاء FKs يدويًا.الايجابيات:سيكون المخطط محدثًا دائمًا؛سيكون رمز AR ممكنًا دائمًا للتجديد.سلبيات:تبعية قاعدة البيانات (مشكلة بسيطة؟)
  • يمكنك العثور بطريقة ما على طريقة لتحديد علاقات FK في الكود بحيث يمكن ترحيل المخطط بشكل صحيح.

هل أفعل ذلك خطأ؟وسأكون ممتنا لأي نصيحة.

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

المحلول

أنا أعمل الآن على أشياء تتعلق بـ FK للفصول الدراسية وصدق أو لا تصدق - إنه أمر صعب للغاية.إذا كان فصلك الأصلي يحتوي على قائمة بفصل فرعي - فهل هو كثير/متعدد؟ربما - إذا كان فصل طفلك يحتوي على مرجع مرة أخرى.هذا افتراض ضعيف (ثنائي الاتجاه ليس تصميمًا جيدًا).

على أي حال.

الواقع المعزز مخصص أكثر للأشخاص الذين يعتمدون على قواعد البيانات أولاً - لذا قم بإنشاء قاعدة البيانات الخاصة بك كما تريد، ثم قم بتشغيل قوالب الواقع المعزز.سيتم تكريم FKs الخاص بك وما إلى ذلك.

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