سؤال

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

على سبيل المثال، بافتراض قاعدة بيانات فارغة (رمز زائف):

user1 = new User()  // Creates the user table with a single id column
user1.firstName = "Allain" // alters the table to have a firstName column as varchar(255)

user2 = new User()  // Reuses the table
user2.firstName = "Bob"
user2.lastName = "Loblaw"  // Alters the table to have a last name column

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

يمكنك أيضًا إنشاء المخطط الخاص بك عن طريق اختبار الوحدة بهذه الطريقة.

ومن الواضح أن هذا مخصص فقط للنماذج الأولية.

هل هناك أي شيء مثل هذا هناك؟

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

المحلول

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

نصائح أخرى

يستخدم Grails السبات للاستمرار في كائنات المجال وينتج سلوكًا مشابهًا لما تصفه.لتغيير المخطط، ما عليك سوى تعديل المجال، وفي هذه الحالة البسيطة يُسمى الملف User.groovy.

class User {

    String userName
    String firstName
    String lastName
    Date dateCreated
    Date lastUpdated

    static constraints = {
        userName(blank: false, unique: true)
        firstName(blank: false)
        lastName(blank: false)
    }

    String toString() {"$lastName, $firstName"}

}

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

وأنا أتفق مع نهج NHibernate وإنشاء قاعدة البيانات تلقائيًا.ولكن، إذا كنت تريد تجنب كتابة ملف التكوين، والبقاء على مقربة من الكود، فاستخدم Castle's سجل نشط.تقوم بتعريف "المخطط" مباشرة في الفصل باستخدام السمات.

[ActiveRecord]
public class User : ActiveRecordBase<User>
{
     [PrimaryKey]
     public Int32 UserId { get; set; }

     [Property]
     public String FirstName { get; set; }
}

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

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

ActiveRecordStarter.Initialize();
ActiveRecordStarter.CreateSchema();

ربما لا يستجيب بالضبط لجهودكم عام السؤال، ولكن إذا كنت تستخدم (ن) السبات ثم يمكنك إنشاء مخطط قاعدة البيانات تلقائيًا من ملفات تعيين HBM الخاصة بك.

لا يتم ذلك مباشرة من التعليمات البرمجية الخاصة بك كما يبدو أنك تريد ولكن يبدو أن إنشاء مخطط السبات يعمل بشكل جيد بالنسبة لنا

هل تريد المخطط، ولكن تم إنشاؤه، أو هل تريده بالفعل لا يوجد مخطط?

بالنسبة للأول سأختار nhibernate كما قال @tom-carter.اطلب منه إنشاء مخططك لك، وستكون كل الأمور على ما يرام (على الأقل حتى تقوم بطرح تطبيقك، ثم انظر إلى شيء مثل Tarantino وRedGate SQL Diff أو أي شيء يطلق عليه لإنشاء برامج نصية للتحديث)

إذا كنت تريد الأخير ....يقوم محرك تطبيقات Google بهذا، كما اكتشفت بعد ظهر هذا اليوم، وهو لطيف جدًا.إذا كنت تريد الالتزام بالكود الذي تحت سيطرتك، أقترح عليك النظر إلى CouchDB، على الرغم من أن إعداده يتطلب القليل من العمل المسبق.ولكن بمجرد حصولك عليها، تصبح قاعدة بيانات خالية تمامًا من المخططات بنسبة 100%.حسنًا، لديك معرف وإصدار، ولكن هذا كل شيء - والباقي متروك لك. http://incubator.Apache.org/couchdb/

ولكن من خلال أصواته (N) فإن السبات يناسب الأفضل، لكنني قد أكون مخطئًا.

يمكنك استخدام قاعدة بيانات الكائن.

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