মুদ্রা মানগুলির জন্য সেরা এসকিউএল ডেটা টাইপ কী? আমি মাইএসকিউএল ব্যবহার করছি তবে একটি ডাটাবেস স্বাধীন টাইপ পছন্দ করবে prefer
মুদ্রা মানগুলির জন্য সেরা এসকিউএল ডেটা টাইপ কী? আমি মাইএসকিউএল ব্যবহার করছি তবে একটি ডাটাবেস স্বাধীন টাইপ পছন্দ করবে prefer
উত্তর:
Decimal(19,4)
সাধারণত কিছু ক্ষেত্রে বেশিরভাগ ক্ষেত্রে বেশ ভাল কাজ করে। আপনার সঞ্চয় করার জন্য প্রয়োজনীয় সংখ্যার প্রয়োজনের জন্য আপনি স্কেল এবং নির্ভুলতা সামঞ্জস্য করতে পারেন। এমনকি এসকিউএল সার্ভারেও আমি " money
" এটি মানহীন হিসাবে ব্যবহার করার প্রবণতা করি না ।
(19,4)
পরিবর্তে ব্যবহার করে কী লাভ (19,2)
?
আপনাকে কেবলমাত্র এক নজরে নজর রাখতে হবে যদি আপনি একটি ডাটাবেস থেকে অন্য ডাটাবেসে স্থানান্তরিত হন তবে আপনি দেখতে পাচ্ছেন যে ডেসিমাল (19,4) এবং ডেসিমাল (19,4) অর্থ ভিন্ন জিনিস
( http://dev.mysql.com/doc/refman/5.1/en/precision-math-decimal-changes.html )
ডিবিএএসই: 10,5 (10 পূর্ণসংখ্যা, 5 দশমিক) এমওয়াইএসকিউএল: 15,5 (15 সংখ্যা, 10 পূর্ণসংখ্যা (15-5), 5 দশমিক)
আপনার গণনার জন্য কত দশমিক স্থান প্রয়োজন হতে পারে তা নিয়ে কাজ করাও গুরুত্বপূর্ণ।
আমি একটি শেয়ার মূল্যের অ্যাপ্লিকেশনটিতে কাজ করেছি যার জন্য দশ মিলিয়ন শেয়ারের দামের গণনা প্রয়োজন। উদ্ধৃত শেয়ারের মূল্যটি 7 ডিজিটের যথাযথতায় সংরক্ষণ করতে হয়েছিল।
আসফ এর প্রতিক্রিয়া
আপনি কত টাকা পেয়েছেন তার উপর নির্ভর করে ...
আড়ম্বরপূর্ণ শোনাচ্ছে, কিন্তু আসলে এটি পার্টিন্যান্ট।
কেবলমাত্র আজ আমাদের একটি সমস্যা ছিল যেখানে আমাদের রেট সারণীতে একটি রেকর্ড প্রবেশ করানো ব্যর্থ হয়েছিল, কারণ একটি কলাম (গ্রসরেট) দশমিক (11,4) এ সেট করা হয়েছে, এবং আমাদের পণ্য বিভাগ মাত্র কিছু আশ্চর্যজনক রিসর্টে কক্ষের জন্য একটি চুক্তি পেয়েছে বোরা বোরাতে, যা প্রতি রাতে কয়েক মিলিয়ন প্যাসিফিক ফ্রাঙ্কের জন্য বিক্রি হয় ... এমনটি যা 10 বছর আগে ডেটাবেস স্কিমা ডিজাইন করার সময় কখনও প্রতিরোধ করা হয়নি।
অ্যাকাউন্টিং অ্যাপ্লিকেশনগুলির জন্য মানগুলি পূর্ণসংখ্যারূপে সঞ্চয় করা খুব সাধারণ বিষয় (কিছু লোক এমনকি এটির একমাত্র উপায় হিসাবে বলতেও যায় )। একটি ধারণা পেতে, আপনার প্রয়োজনীয় নির্ভুলতা পেতে লেনদেনের পরিমাণ (ধরুন $ 100.23 ডলার) এবং একাধিক 100, 1000, 10000 ইত্যাদি গ্রহণ করুন। সুতরাং আপনার যদি কেবল সেন্ট সঞ্চয় করতে হয় এবং নিরাপদে উপরে বা নীচে গোল করতে পারেন তবে কেবল ১০০ দিয়ে গুণ করুন my আপনি ডাটাবেসে স্থান বাঁচাতে পারবেন এবং দুটি পূর্ণসংখ্যার তুলনা করা দুটি ফ্লোটের তুলনায় অনেক সহজ। আমার $ 0.02।
DECIMAL
? আপনার যথাযথ সময়ে সবসময় পেনি, কল বা মিলের ডলারে অনুবাদ করার বিষয়ে খুব সতর্ক হওয়া দরকার ।
সুপার লেট এন্ট্রি তবে জিএএপি হ'ল থাম্বের একটি ভাল নিয়ম ..
যদি আপনার অ্যাপ্লিকেশনটিতে ট্রিলিয়ন পর্যন্ত অর্থের মানগুলি পরিচালনা করতে হয় তবে এটি কাজ করা উচিত: 13,2 যদি আপনাকে GAAP (সাধারণত স্বীকৃত অ্যাকাউন্টিং নীতিমালা) মেনে চলতে হয় তবে ব্যবহার করুন: 13,4
সাধারণত আপনার আউটপুট 13,2 এ গোল করার আগে আপনার অর্থের মান 13,4 এ যোগ করা উচিত।
আপনি DECIMAL(19,2)
আপনার সমস্ত আর্থিক মানগুলির জন্য ডিফল্টরূপে কিছু ব্যবহার করতে পারেন তবে আপনি যদি কখনও $ 1000 এর চেয়ে কম মান সংরক্ষণ করেন তবে এটি কেবল মূল্যবান ডাটাবেসের জায়গার অপচয় হবে।
বেশিরভাগ বাস্তবায়নের জন্য, DECIMAL(N,2)
পর্যাপ্ত হবে, যেখানে আপনি যে ক্ষেত্রের মধ্যে সঞ্চিত হওয়ার চেয়ে বড় N
অঙ্কের পূর্বে .
প্রত্যাশা করেন তার চেয়ে কমপক্ষে অঙ্কের মান + 5
। সুতরাং আপনি যদি কখনও 999999.99 এর চেয়ে বেশি কোনও মান সংরক্ষণ করার DECIMAL(11,2)
প্রত্যাশা না করেন তবে পর্যাপ্ত পরিমাণের চেয়ে বেশি হওয়া উচিত (প্রত্যাশাগুলি পরিবর্তিত হওয়া অবধি)।
আপনি যদি জিএএপি অনুগত হতে চান তবে আপনি যেতে পারেন DECIMAL(N,4)
, যেখানে সেই ক্ষেত্রের মধ্যে সঞ্চিত হওয়ার চেয়ে বড় N
অঙ্কের আগে কমপক্ষে অঙ্কের মান ।.
+ 7
এটি ডেটা প্রকৃতির উপর নির্ভর করে। আপনি এটি আগে চিন্তা করা প্রয়োজন।
যদিও মাইএসকিউএল আপনাকে দশমিক (65,30) ব্যবহার করতে দেয়, স্কেলের জন্য 31 এবং নির্ভুলতার জন্য 30 আমাদের সীমাবদ্ধ বলে মনে হয় যদি আমরা স্থানান্তর বিকল্পটি খোলা রাখতে চান।
সর্বাধিক সাধারণ আরডিবিএমএসে সর্বাধিক স্কেল এবং নির্ভুলতা:
যথার্থ স্কেল ওরাকল 31 31 টি এসকিউএল 38 38 মাইএসকিউএল 65 30 পোস্টগ্রিএসকিউএল 131072 16383
সেপ্টেম্বর ২০১৫ জিম্বাবুয়ে সরকার জানিয়েছে যে জিম্বাবুয়ে ডলারকে মার্কিন ডলারে ১ মার্কিন ডলার থেকে ৩৫ কোয়াড্রিলিয়ন জিম্বাবুয়ে ডলার ৫ এর বিনিময় করবে
আমরা "হ্যাঁ, নিশ্চিত ... বলার ঝোঁক আছে আমার এমন ক্রেজি ফিগার দরকার হবে না"। আচ্ছা, জিম্বাবুয়েসেরাও তা বলত। খুব বেশি আগে হয়নি।
আসুন কল্পনা করুন আপনার জিম্বাবুয়ে ডলারে 1 মিলিয়ন মার্কিন ডলার লেনদেনের রেকর্ড করা দরকার (আজ সম্ভবত অসম্ভব, তবে এখন থেকে 10 বছরে এটি কেমন হবে কে জানে?)
- (1 মিলিয়ন মার্কিন ডলার) * (35 কোয়াড্রিলিয়ন জেডডাব্লুএল) = (10 ^ 6) * (35 * 10 ^ 15) = 35 * 10 ^ 21
- আমাদের দরকার:
- "35" সংরক্ষণ করার জন্য 2 সংখ্যা
- শূন্যগুলি সংরক্ষণ করার জন্য 21 সংখ্যা
- দশমিক পয়েন্টের ডানদিকে 4 টি সংখ্যা
- এটি দশমিক (27,4) করে তোলে যা প্রতিটি প্রবেশের জন্য আমাদের 15 বাইট খরচ করে
- আমরা কোনও ব্যয় ছাড়াই বাম দিকে আরও একটি অঙ্ক যুক্ত করতে পারি - 15 বাইটের জন্য আমাদের দশমিক (28,4) রয়েছে
- এখন আমরা জিম্বাবুয়ের ডলারে প্রকাশিত 10 মিলিয়ন মার্কিন ডলার লেনদেন বা হিপারইনফ্লেশনের অন্য স্ট্রাইক থেকে সুরক্ষিত রাখতে পারি, যা আশা করি ঘটবে না