পৃথক কলামে তারিখ এবং সময় রাখার কোনও ভাল কারণ আছে?


9

আমি আমাদের সফ্টওয়্যার বিক্রেতার তারিখ এবং সময় আলাদা কলামে রাখার সিদ্ধান্তটি বোঝার চেষ্টা করছি। উদাহরণস্বরূপ, যখন সারিটি তৈরি বা আপডেট করা হয়েছিল। সময় এবং তারিখ উভয়ই ডেটটাইম কলাম। আমরা এসকিউএল সার্ভার 2005 ব্যবহার করছি।

ডাটাবেসটি আমাদের ইআরপি সিস্টেমের ডেটা ধারণ করে এবং আমি বিশ্বাস করি যে বৃহত্তম টেবিলগুলিতে প্রায় 3 মিলিয়ন ডলার সারি থাকে। সর্বাধিক সারণী প্রায় 100 000 - 1 000 000 সারিগুলির মধ্যে।

আমি ব্যক্তিগতভাবে ডিফল্টভাবে একটি একক টাইমস্ট্যাম্পের জন্য একটি একক ডেটটাইম বেছে নিতে চাই would এটি সহজ সময়ের পার্থক্য গণনার মঞ্জুরি দেয় এবং তারিখ এবং সময় অংশগুলি সহজেই টাইমস্ট্যাম্প থেকে বের করা যায়। এটি কম জায়গা গ্রাস করবে।

তারিখ এবং সময়কে খারাপ অভ্যাসকে পৃথক করা নাকি এই ডিজাইনের মধ্যে খুব উজ্জ্বল কিছু আছে যা আমি বুঝতে পারি না?

উত্তর:


4

আমার অনুমান যে এটি একটি লিগ্যাসি সাপোর্ট জিনিস (যেমন তাদের সফ্টওয়্যারটির সংস্করণ 1 এ ফিরে এসেছে, তাদের পৃথক ক্ষেত্রগুলিতে তারিখ এবং সময় ছিল এবং তারা এটি সমর্থন করতে বাধ্য হয়েছিল কারণ এটি সর্বদা সেভাবে কাজ করেছিল)।

এটি বলেছিল, আলাদা করার তারিখ এবং সময় সম্পর্কে তেমন কিছু নেই, সুতরাং আপনি মিস করছেন এমন কিছুই নেই।

(অন্য বিকল্পটি হ'ল আপনার ইআরপি সিস্টেম বিকাশকারীরা জানতেন না যে একটি ডেটটাইম ফিল্ড একটি তারিখ এবং একটি সময় সঞ্চয় করতে পারে , তবে এর চেয়ে বেশি সম্ভাবনা এটি সম্ভবত পূর্ববর্তী সংস্করণগুলির মতো কাজ করার জন্য তাদের ব্যবসায়ের প্রয়োজন ছিল a)


4

সাধারণত, এটি ব্যবহারের উপর নির্ভর করে। যদি অনেকগুলি প্রশ্ন উপ-উপাদানগুলিতে একসাথে যোগ দিচ্ছে তবে তাদের পরিবর্তে একসাথে সঞ্চয় করার বিষয়টি বিবেচনা করুন এবং তারপরে বিরল ঘটনাগুলিতে এগুলি পৃথক করে দেওয়ার ওভারহেড ধরে নিন। অবশ্যই, বিভাজন কখনও কখনও আরও জটিল (বা অসম্ভব): এমন একটি person_full_nameবৈশিষ্ট্য বিবেচনা করুন যা থেকে আপনাকে নিষ্কাশন করা দরকার person_family_name। এটি বলেছিল, একটি অস্থায়ী মান কাস্ট করা তুচ্ছ কারণ আমি সাধারণত তারিখ এবং সময় একসাথে সঞ্চয় করতে পছন্দ করব।

এছাড়াও তারা একত্রীকরণের বাইরে চলে না যায় তা নিশ্চিত করার জন্য (এবং সম্ভবত ট্রিগার) বাধা (এবং সম্ভবত ট্রিগারগুলি) উভয়কে একত্রে সংরক্ষণ করার বিষয়টি বিবেচনা করুন: এইভাবে আপনি জিজ্ঞাসা করার সময় পরিবর্তনের পরিবর্তে আপডেটের পয়েন্টে বিভক্ত / যোগদানের ঝাপটাকে ধরেছেন ডেটা।


3

অপারেশনাল সিস্টেমে আমি এর জন্য প্রচুর ব্যবহার দেখতে পাচ্ছি না। কোনও বিশ্লেষণী সিস্টেমে আপনি 'দিনের' শস্যের সাথে একটি পৃথক তারিখের মাত্রা চাইতে পারেন তাই তারিখের রোলআপগুলির তারিখের লিঙ্কগুলি, এবং যদি আপনি কোনও কারণে সময়োপযোগে বিশ্লেষণ করতে চান তবে কোনও 'সময়' কলাম ।

আপনি একটি মূল ডেটটাইম কলামের উপর ভিত্তি করে গণনাকৃত কলামগুলি হিসাবে তারিখ এবং সময় উপস্থাপন করতে পারেন।


0

কনসার্নডঅফটিউনব্রিজউইউর মন্তব্যে যোগ করতে, আপনার যদি ডেট-ডাইমেনশন এবং টাইমডাইমেনশন সারণী থাকে তবে একটি অনুসন্ধানের পারফরম্যান্স সুবিধা রয়েছে। ফ্যাক্ট টেবিলটিতে একটি ডেটডাইমেনশনকি এবং টাইমডাইমেনশন কে রয়েছে Consider আপনি যদি সকাল 8 টা থেকে 5 টা অবধি কোনও কিছুর সংখ্যা জানতে চান, আপনি কেবল তা করতে পারেন

SELECT COUNT(1) FROM FactTable f Inner Join TimeDimension t on f.TimeDimensionKey = t.TimeDimension WHERE t.Hour BETWEEN 8 AND 17.

আপনি যদি সময়-মাত্রিকেনকে সূচক যুক্ত করে থাকেন তবে ডেটা অনুসন্ধানের জন্য আপনার ফ্যাক্ট টেবিলের ফলাফলের জন্য কেবল একটি সূচক সন্ধানের প্রয়োজন হবে

টাইমডাইমেনশন টেবিল ছাড়া আপনাকে নিম্নলিখিতগুলির মতো কিছু করতে হবে,

SELECT COUNT(1) FROM FactTable f WHERE DatePart(mintue, f.Date) BETWEEN 8 AND 17

এটির জন্য সম্ভবত একটি টেবিল স্ক্যানের প্রয়োজন হবে কারণ ডেটাবেস ইঞ্জিনটি প্রতিটি সারির জন্য ফলাফল গণনা করতে হবে এটি কোন ডেটা ফেরত আসতে পারে তা নির্ধারণের আগে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.