سؤال

لنفترض أن لدي نموذج يحتوي على ثلاثة حقول 10:الحقل 1 .. الحقل 10.أقوم بتخزين بيانات النموذج في واحد أو أكثر من جداول قاعدة البيانات، ربما باستخدام 10 أعمدة في قاعدة البيانات.

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

لذا فإن سؤالي هو، كيف يمكنني تصميم نموذج بيانات يقترن بشكل غير محكم بواجهة المستخدم الخاصة بي؟حالة الاستخدام الملموسة هي نظام CRM قابل للتوسيع/التخصيص من قبل المستخدمين.

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

المحلول

ما لم يكن لديك سبب وجيه للقيام بذلك، فهذه فكرة سيئة بشكل عام.يجعل من الصعب جدًا تحسين قاعدة البيانات وتوسيع نطاقها.

إذا كان يجب عليك فعل ذلك، فإن اقتراح ترافيس مناسب للطاولات الصغيرة، لكنه لن يتناسب مع هذا المستوى جيدًا.

نصائح أخرى

يمكنك تجريد الحقول إلى جدول منفصل بحيث تكون متعددة إلى متعددة في جدول النموذج:

استمارة

بطاقة تعريف
اسم
إلخ.

مجال

بطاقة تعريف
ملصق
قيمة

حقل النموذج

معرف النموذج
معرف الحقل

توصل فريقي إلى حل لهذه المشكلة عندما كنت أعمل في شركة Quest Computing على AIMS (www.totalaims.com).باختصار، أضفنا شاشات صيانة سمحت للمسؤول بإضافة بيانات التعريف وأيضًا نتيجة لذلك إضافة حقول إلى قاعدة البيانات في جداول معينة.تمت إضافة الحقول أيضًا إلى شاشات الصيانة والبحث الخاصة بها تلقائيًا.لقد بنينا هذا على رأس OpenACS.يمكنك معرفة المزيد على www.openacs.org - ابحث عن "flexbase" أو "dynfields" أو ابحث هنا www.project-open.org/doc/intranet-dynfield/ .لقد نجح هذا بشكل جيد - حيث أن الجانب السلبي الرئيسي هو أحد الآثار الجانبية للاتجاه الصعودي الرئيسي، أي.يمكن إجراء إضافة الحقول هذه بواسطة غير مسؤولي قواعد البيانات، ونتيجة لذلك يمكن بسهولة اختراق الأداء.

لقد قمت بذلك في الماضي باستخدام عمود XML في قاعدة البيانات لتخزين الحقول الإضافية.لدي عمومًا حقيبة خصائص كبيرة في عمود XML ثم استخدم XSD لفرض التحقق من الصحة عند إجراء التحديثات أو الإدراجات.عندما أقوم باسترداد البيانات، لدي قواعد في XSL أو نموذج الكائن الذي يحدد ما إذا كان العنصر معروضًا، وما التنسيق الإضافي الذي يجب تطبيقه، ولنماذج الويب، ونوع عنصر الإدخال الذي يجب استخدامه بناءً على نوع البيانات في عقدة الخاصية.

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

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

تتمتع معظم قواعد البيانات الآن بدعم XML من الدرجة الأولى لهذا النوع من الأشياء.في SQL Server على سبيل المثال، يمكنك تطبيق مخطط XSD على عمود من نوع بيانات XML مباشرة في قاعدة البيانات.يوجد في الإصدارات الأخيرة أيضًا دعم لفهرسة تلك الأعمدة.

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