রিলেশনাল ডাটাবেসে আমি একটি গণনা করা টাইপকে কীভাবে উপস্থাপন করব?


12

আমি এমন একটি রিলেশনাল ডাটাবেস বিকাশে কাজ করছি যা আমার সংস্থার জন্য কাজ করছি এমন কোনও ডিভাইসে ঘটে যাওয়া লেনদেন ট্র্যাক করে। বিভিন্ন ধরণের লেনদেন রয়েছে যা ডিভাইসে ঘটতে পারে, সুতরাং আমাদের একটি প্রধান রেকর্ড সারণীতে আমাদের একটি "ট্রান্স_ টাইপ" ক্ষেত্র রয়েছে। আমার গোষ্ঠী এই ক্ষেত্রের প্রকারটিকে একটি পূর্ণসংখ্যা এবং এটিকে একটি গণিত প্রকার হিসাবে বিবেচনা করার সিদ্ধান্ত নিয়েছে। আমার স্বজ্ঞাততা আমাকে বলেছে যে এই ক্ষেত্রটিকে একটি স্ট্রিং তৈরি করা আরও ভাল ধারণা হবে যাতে আমাদের ডাটাবেসের ডেটা আরও পঠনযোগ্য এবং ব্যবহারযোগ্য হয়। আমার সহকর্মীরা উদ্বিগ্ন বলে মনে হচ্ছে যে এটি মূল্যবান হওয়ার চেয়ে বেশি ঝামেলা করবে। স্ট্রিংয়ের তুলনাগুলি খুব ব্যয়বহুল এবং টাইপসের সম্ভাবনা খুব বড় একটি বাধা।

সুতরাং, আপনার মতে, মূলত একটি অঙ্কিত মান হিসাবে সম্পর্কিত একটি ডাটাবেসে কোনও ক্ষেত্রের সাথে কাজ করার সময়, এই ক্ষেত্রটিকে একটি পূর্ণসংখ্যা বা স্ট্রিং তৈরি করা কি আরও ভাল ডিজাইনের সিদ্ধান্ত? বা অন্য কোন বিকল্প আছে যা আমি উপেক্ষা করেছি?

দ্রষ্টব্য: আমরা যে ডাটাবেস ব্যবহার করছি তার দ্বারা সুস্পষ্ট গণিত প্রকারগুলি সমর্থিত নয়। এবং আমরা যে সফ্টওয়্যারটি বিকাশ করছি তা এই ডাটাবেসের সাথে ইন্টারফেস করবে সি ++ তে লেখা আছে।


এটি কেবলমাত্র তৈরি টেবিলে একটি পরীক্ষিত ধরণের সংজ্ঞা তৈরি করতে বেশি সময় ধরে অন্য কাউকে আঘাত করে? এর মতো কিছু: ট্যাবলেট হিট (আইপি বারচার (40), ip_class ENUM (0, "আইপিভি 4", 1, "আইপিভি 6")) তৈরি করুন; এটি আপনাকে অর্ডিনাল বা স্ট্রিং (অরডিনালটিতে মানচিত্র) দিয়ে = <এবং> যাচাই করার অনুমতি দেবে।
dlamblin

উত্তর:


26

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

এইভাবে আপনি একটির অফিশিয়াল নেম স্ট্রিং সংরক্ষণ করেছেন, পারফরম্যান্সের জন্য সংখ্যার তুলনা ব্যবহার করুন এবং রেফারেন্সিয়াল অখণ্ডতা পাবেন যে প্রতিটি লেনদেনের একটি বৈধ প্রকার রয়েছে।


1
হ্যাঁ এবং আপনি যদি সিদ্ধান্ত নেন যে আপনি 'ও' পরিবর্তন করে 'ওপেন' করতে চান তবে আপনাকে কেবল একটি সারি পরিবর্তন করতে হবে।
ড্যানিয়েল ক্যাপলান

+1 টি। রিলেশনাল ডিবিতে এনামগুলিকে উপস্থাপন করার জন্য একটি সহজ ইন / স্ট্রিং টেবিল হ'ল উপায়।
মাইক 30

সম্ভবত, পরবর্তী
দর্শণার্থীরা যা

2
এই. অতিরিক্ত creditণের জন্য - ডেভ টিম যদি একটি জাভা / সি # এনাম বা অন্য কিছুতে পূর্ণসংখ্যাগুলি সংজ্ঞায়িত করে থাকে তবে আপনি একটি পরীক্ষা লিখতে পারেন যা কোড এনাম সংজ্ঞাটি অনুসন্ধান সারণী থেকে সরিয়ে নিয়েছে কিনা তা পরীক্ষা করে। সর্বদা একটি বিপদ থাকে যে ক্রমের বাইরে কোনও উপাদান যুক্ত করা জিনিসগুলিকে সিঙ্কের বাইরে ফেলে দেয় এবং কোনও লাইভ ডেটা রেকর্ড ভুল না হওয়া পর্যন্ত আপনি বুঝতে পারবেন না।
জুলিয়া হেওয়ার্ড

4

একটি সাধারণ অনুশীলন হ'ল একটি trans_typesটেবিল তৈরি করা এবং তারপরে আপনার প্রধান টেবিলটি রেফারেন্সযুক্ত বিদেশী কী সহ উল্লেখ করা উচিত trans_type_id। এটি নিশ্চিত করে যে আপনার রেকর্ডগুলি কেবল বৈধ গণিতের প্রকার উল্লেখ করবে।

উদাহরণ:

trans_type
----------
  আইডি
  নাম

লেনদেন
------------
  আইডি
  trans_date
  বিস্তারিত
  trans_type_id (trans_type.id এফকে)

উদাহরণ ডেটা:

trans_type

আইডি | NAME এর
----------
1 | জমা
2 | বাতিল


লেনদেন

আইডি | ট্রান্স_ডেট | trans_type_id
---------------------------------
1 | 2012-12-31 | 1
2 | 2013-01-09 | 2

3

মানগুলি যদি পূর্ণসংখ্যক হিসাবে ডাটাবেজে আসে তবে সেগুলি সেভাবে সংরক্ষণ করুন। ডাটাবেসে লেখার সময় স্ট্রিংগুলিতে রূপান্তর করার ওভার-হেড লাগানোর দরকার নেই। আপনি সর্বদা স্ট্রিং / পাঠ্য মানগুলি (আরও সাধারণকরণ) সহ একটি সারণী সম্পর্কিত করতে পারেন।

এতে এক ধরণের স্ট্যান্ড মান আপডেট করার পরিবর্তে কিছু ধরণের আপডেট রুটিন চালানোর পরিবর্তে আরও সুবিধা রয়েছে। 1 = 'লাল' এর পরিবর্তে এটি 'সত্যই লাল' এর সমান হতে পারে

স্ট্রিং মানগুলির (একমাত্রায়িত) সাথে কেবল একটি টেবিলের প্রয়োজনের তুলনায় পারফরম্যান্সের প্রতিবেদনের পক্ষে এটি আদর্শ নয়। এই ক্ষেত্রে একটি সূচক যথেষ্ট পারফরম্যান্স করতে হবে।

বেশিরভাগ আরডিবিএমএস পর্যাপ্ত পরিমাণ হর্সপাওয়ারের অনুমতি দেবে। যদিও আপনার ধারণাটি টেবিলটিকে তার সাধারণ তথ্য আকারে 'পড়তে' সক্ষম করতে সক্ষম হয়েছে, তবে কোনও টেবিলে যোগদান করা কোনও বড় বিষয় নয়। শুধু একটি ভিউ বা কিছু অনুরূপ অবজেক্ট ব্যবহার করার অভ্যাসটি পান।


2

পৃথক গণনা সারণী পদ্ধতির পক্ষে এই প্রশ্নের অন্যান্য উত্তরগুলির সাথে আমার একমত হতে হবে।

তবে, আমি অবশ্যই ইতিমধ্যে যা বলা হয়েছে তার পুনরাবৃত্তি না করার পক্ষে, তাই আমি স্ট্যাক ওভারফ্লোতে একই প্রশ্নের (কমবেশি) একই প্রশ্নের গৃহীত উত্তরটি উল্লেখ করব: /programming//a/229919 / 114626


সংযুক্ত উত্তরের জন্য +1 এই প্রশ্নের জন্য, আপনার লিঙ্কিত উত্তরটি সঠিক বলে মনে হচ্ছে। তবে অবশ্যই, যদি প্রশ্নকর্তা গণনা করা প্রকারের মধ্যে নমনীয়তা চান তবে একটি রেফারেন্স টেবিলটি আরও ভাল।
হার্কে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.