سؤال

Right now, I have code which creates the database (just a few CREATE queries on a SQLite database) in my main database access class. This seems unnecessary as I have no intention of ever using the code. I would just need it if something went wrong and I needed to recreate the database. هل علي أن...

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

المحلول

أعتقد أنه من الأفضل الاحتفاظ بالرمز. والأهم من ذلك ، يجب عليك الحفاظ على هذا الرمز (أو إنشاءه) في كل مرة يتغير فيها مخطط قاعدة البيانات.

من المهم للأسباب التالية.

  1. أجد أيضًا أنني أشير إلى DDL SQL في كثير من الأحيان عند الترميز ، خاصة إذا لم أتطرق إلى النظام لفترة من الوقت.
  2. لديك مرجع للقرارات التي اتخذتها ، مثل الفهارس التي أنشأتها ، ومفاتيح فريدة ، إلخ ، إلخ.

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

نصائح أخرى

سأحتاج ذلك فقط إذا حدث خطأ ما وكنت بحاجة إلى إعادة إنشاء قاعدة البيانات.

إن إعادة إنشاء قاعدة البيانات ليست حالة استثنائية على الإطلاق. يعد هذا الرمز جزءًا من عملية النشر الخاصة بك على نظام جديد / مختلف ، ويمثل هيكل DB الذي يتوقعه الرمز الخاص بك العمل معه. يجب أن يكون لديك بالفعل اختبارات تكامل تؤكد ذلك. العمل إلى أجل غير مسمى مع خادم DB واحد تم إنشاء مخططه بشكل تدريجي عبر عبارات SQL التي تم إرسالها يدويًا أثناء التطوير ليس شيء يجب أن تعتمد عليه.

لكن نعم ، يجب فصله عن رمز الوصول ؛ لذلك الخيار 2 صحيح. يمكن بعد ذلك استخدام البرنامج النصي المنفصل عن طريق الاختبارات وكذلك للنشر.

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