استخدام الأعداد الصحيحة والتي تتطلب مضاعفة مقابل استخدام الكسور العشرية كنوع بيانات - ما هي أفكارك؟

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

سؤال

ما هي أفكارك حول هذا؟ أنا أعمل على دمج بعض البيانات الجديدة التي هو في شكل نص المفصول، ويتم الاحتفاظ كافة الأعمدة العشرية أنها أعداد صحيحة واحدة؛ من أجل تحديد مبلغ العشري تحتاج إلى مضاعفة العدد بنسبة 0.01. وهي تفعل ذلك لأشياء مثل النسب المئوية والوزن ومعلومات التسعير. على سبيل المثال، يتم التعبير عن السعر أحد العناصر كما 3259 في ملفات البيانات، وعندما أريد أن عرضه أود أن الحاجة إلى اضربها من أجل الحصول على مبلغ "الحقيقي" من 32.59.

هل تعتقد أن هذا هو فكرة جيدة أو سيئة؟ يجب أن يتم الحفاظ على بنية البيانات الخاصة بي متطابقة لتلك التي قدمت من قبل البائع، أو ينبغي أن تجعل أعمدة قاعدة بيانات العشرية الحقيقية واستخدام جهاز مباحث أمن الدولة أو نوعا من عملية ETL لتتكاثر الأعمدة صحيح تلقائيا إلى ما يعادلها عشري؟ عند هذه النقطة أنا لم يقرر بعد ما اذا انا ذاهب الى استخدام ORM أو الإجراءات المخزنة أو ما لاسترداد البيانات، لذلك أنا أحاول التفكير على المدى الطويل والتي تقرر النهج للاستخدام. I يمكن أيضا بسهولة فقط التعامل مع هذا في التعليمات البرمجية من DTO أو ما شابه ذلك، وهو على غرار:

public class Product
{
    // ...
    private int _price;
    public decimal Price
    {
        get
        {
            return (this._price * .01);
        }
        set
        {
            this._price = (value / .01);
        }
    }
}

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

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

المحلول

و"هل تعتقد أن هذا هو فكرة جيدة أو سيئة؟"

وباد.

و"يجب أن أكون حفظ بنية البيانات الخاصة بي متطابقة لتلك التي يقدمها البائع؟"

لا.

و"وأود أن جعل الأعمدة قاعدة بيانات العشرية الحقيقية؟"

نعم.

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

والبيانات غير عشري. تعمل الرياضيات العشرية. استخدام الرياضيات العشرية التي تقدمها لغتك وقواعد البيانات. لا يخترع نسختك الخاصة من الحساب عشري.

نصائح أخرى

وأنا شخصيا يفضل الكثير لديك البيانات المخزنة بشكل صحيح في قاعدة البيانات الخاصة بي ولا مجرد تحويل بسيط في كل مرة تحديثا يأتي في.

وبتحذلق: لا يتم الاحتفاظ بها على أنها [إينتس] أيضا. وهي السلاسل التي تتطلب التوزيع.

وPhilisophically: لديك <م> معلومات في الملف ويجب أن تكتب <م> بيانات في قاعدة البيانات. وهذا يعني تحويل المعلومات في أي وسائل ضرورية لجعلها ذات مغزى / مفيدة. إذا كنت لا تفعل هذا التحويل في خط الهجوم، ثم عليك أن تكون محكوم عليها تكرار التحويل عبر جميع المستهلكين من قاعدة البيانات.

وهناك بعض الحالات حيث لا يسمح لك لتحويل البيانات، مثل أن تكون قادرا على الإجابة على السؤال التالي: "ما كان في الملف". هذه السيناريوهات يتطلب البيانات المراد كتابتها كسلسلة - إذا فشلت في التحليل، فإنك لن يكون لها تمثيل دقيق للملف

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

يجب أن تكون

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

وتعاملت مؤخرا مع البيانات التي تم تخزينها أيام الأسبوع كما تثمن 2-8. لا يمكنك تخيل سقوط بهذه تسبب (لم الاختبار لا تظهر مشكلة لمجموعة متنوعة من الأسباب، ولكن استخدام الحي لم يسبب الانفجارات السياسية).

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

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