سؤال

ونحن نستخدم NHibernate، واحدة من الأنماط الشائعة لدينا لتخزين المعلومات مثل التعداد هو تحديد جداول منفصلة للتعداد، وجعل مجرد إشارة إلى ID في الكيان / الجدول الرئيسي الذي يستخدم التعداد. وهناك مثال بسيط:

Message
-------
ID (bigint PK)
MessageTypeID (bigint FK)
Body (varchar)

MessageType
-----------
ID (bigint PK)
Value (varchar)

ويحتوي الجدول MessageType عدد قليل من القيم التعداد مثل: SMS، MMS، PSMS، الخ

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

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

المحلول

<ع> استخدام تتضمن التعدادات يعني أن لا تستخدم جدول آخر كما تقومون به الآن. كما انها أسرع كما قلتم وذلك أبسط من ذلك بكثير.

في كلتا الحالتين يمكنك إضافة المزيد من الخيارات، ولكن السؤال هو: هل إذا قمت بإضافة بند آخر في جدول أنت تسير في حاجة إلى إعادة ترجمة التطبيق لإضافة هذه الميزة

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

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

MessageType
-----------
ID (bigint PK)
Value (varchar)
ImplementationType (varchar) (ie: Xyz.SMSSender, Xyz)

وأو هل يمكن أن يكون لديك ملف التكوين فصل، حيث يمكنك تخصيص تبعيات حقن.

نصائح أخرى

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

ولقد تم الشرود من جداول التعداد، وخصوصا عندما لا تحتاج هذه البيانات لتكون البيانات المدارة. أنت ذاهب لإضافة المزيد والمزيد من MessageType كما تذهب؟

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