كيفية التغلب على أنواع الحقول الصحيحة غير المدعومة غير الموقعة في MS SQL؟

StackOverflow https://stackoverflow.com/questions/29694

سؤال

أثناء محاولتي جعل تطبيق يستند إلى MySQL يدعم MS SQL، واجهت المشكلة التالية:

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

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

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

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

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

المحلول

متى من المحتمل أن تصبح المشكلة مشكلة حقيقية؟

بالنظر إلى معدلات النمو الحالية، ما هو الوقت الذي تتوقع فيه حدوث تجاوز لعدد صحيح موقّع في إصدار MS SQL؟

كن متشائما.

ما المدة التي تتوقع أن يستمر فيها التطبيق؟

هل مازلت تعتقد أن عامل الاختلاف 2 هو أمر يجب أن تقلق بشأنه؟

(ليس لدي أي فكرة عن الإجابات، ولكن أعتقد أننا يجب أن نتأكد من أننا نواجه مشكلة بالفعل قبل البحث بشكل أكثر جدية عن حل)

نصائح أخرى

أوصي باستخدام نوع البيانات BIGINT حيث يصل هذا إلى 9,223,372,036,854,775,807.

لا يدعم SQL Server القيم الموقعة وغير الموقعة.

أود أن أقول هذا.."كيف نتعامل عادة مع الاختلافات بين المكونات؟"

تغليف ما يختلف..

تحتاج إلى إنشاء طبقة تجريد داخل طبقة الوصول إلى البيانات الخاصة بك للوصول إلى النقطة التي وصلت إليها لا يهتم سواء كانت قاعدة البيانات هي MySQL أو MS SQL أم لا.

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