ডাটাবেস ইতিহাসের সারণী / ট্র্যাকিং সারণী


13

বর্তমানে আমি এই জাতীয় ট্র্যাকিং / ইতিহাসের টেবিলটি গঠন করতে চাই:

  • প্রাথমিককি - আইডি
  • অন্যান্য টেবিলআইডি - এফকে
  • ক্ষেত্রের নাম - ক্ষেত্রটির নাম এটির ট্র্যাকিং
  • OldValue
  • NewValue
  • ব্যবহারকারীর নাম
  • CreateDateTime

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

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

ধন্যবাদ!


আপনি কয়টি টেবিল ট্র্যাক করবেন তা আগে থেকেই জানেন?
কোফি সরফো

এই টেবিলটি কেবল একটি অন্য টেবিলকে ট্র্যাক করবে, এখন পর্যন্ত আমরা কেবল এই একটি টেবিলটি ট্র্যাক করছি।
user76982

সুতরাং এই পদ্ধতির overkill হতে পারে। আরও খারাপ এটি তখন সহজ হবে না যে সময়টিতে একটি সময়ে লাইভ ডেটা পুনরায় তৈরি করতে একসাথে তদারকি করা এই টেবিলটির সাথে জিজ্ঞাসা করা, কোনও স্ন্যাপশট পুনরুদ্ধার করা কোনও মূল্যবান হওয়া উচিত।
কোফি সরফো

1
আপনার প্রস্তাবিত পদ্ধতির সাহায্যে কোন কলামগুলি প্রায়শই পরিবর্তিত হয় তা দেখতে ক্যালিটি ফ্লিপ করুন।
কোফি সরফো

আপনি dba.stackexchange.com এ অনুসন্ধান করতে চাইতে পারেন ; অনুরূপ প্রশ্ন সেখানে জিজ্ঞাসা করা হয়েছে এবং কিছু আপনার উত্তর ব্যবহার করতে পারেন থাকতে পারে।
হতাশ

উত্তর:


8

পোकिंग হোলস: পরে যদি একই সময়ে ডেটাবেস স্কিমা পরিবর্তন করা হয় এবং একটি কলামের নাম পরিবর্তন হয় বা কলামটি পুরোপুরি মুছে ফেলা হয় তবে কী হবে? প্রচুর ডাটাবেস সিস্টেম এটির অনুমতি দেয়। আপনার "ফিল্ডনাম" এর পরে কী হবে?

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

আপনি যদি ডিবি বিক্রেতার নির্দিষ্ট সমাধানের সাথে বেঁচে থাকতে পারেন: বেশিরভাগ ডিবি সিস্টেমে সিস্টেম টেবিল রয়েছে যেখানে স্কিমা তথ্য (টেবিলের নাম, টেবিল আইডস, কলামের নাম ইত্যাদি) সঞ্চিত থাকে। এই জাতীয় সিস্টেমের টেবিলে কোনও বিদেশী কী রেফারেন্স সেট করা সম্ভব কিনা তা আপনি পরীক্ষা করতে পারেন। ডাটাবেস যদি এর মতো কিছু সমর্থন করে তবে ক্ষেত্রের নামটি একটি ফিল্ড আইডি দ্বারা প্রতিস্থাপনের অনুমতি দেয়।

প্রকৃতপক্ষে, যদি আপনাকে সমস্ত কলামগুলি (এবং কলামগুলির কেবলমাত্র একটি ছোট উপসেট নয়) সহ নির্দিষ্ট সারণির পুরো সারিগুলি ট্র্যাক করতে হয় তবে আপনার @ সারফিস্টের পরামর্শটি বিবেচনা করা উচিত। নাম-মান-জুটির মডেলগুলির ত্রুটিগুলি সম্পর্কে এই নিবন্ধটি পড়ুন ।


8

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

শেষ লক্ষ্যটি, অর্থাৎ আপনি নিরীক্ষিত ডেটা দিয়ে যা করতে চান তা প্রতিটি পদ্ধতির পক্ষে কতটা উপযুক্ত হতে পারে তা মূল্যায়নে সহায়তা করবে।


হ্যালো সারফিস্ট, আমি শেষ লক্ষ্যটি যোগ করতে চাই যা আমি অর্জন করতে চাই। এটি দিয়ে শুরু না করার জন্য দুঃখিত।
user76982

এই পদ্ধতির অসুবিধা রয়েছে। : এখানে পড়ুন database-programmer.blogspot.co.uk/2008/07/history-tables.html
Tuukka Haapaniemi

7

সংক্ষেপে: আপনি যে মানসমূহের পরিবর্তনটি ট্র্যাক করতে চান সেগুলির জন্য আপনার নিরীক্ষণ ট্রেল প্রক্রিয়াটি সেট করতে হবে।

একক নিরীক্ষণ লেজ টেবিল :

টেবিলের নাম, ক্ষেত্রের নাম আবদ পুরানো এবং ডেটার নতুন সংস্করণ লগ করতে একটি সারণী তৈরি করুন। এই পদ্ধতির জন্য ডেটা এবং পুরানো এবং নতুন সংস্করণ উভয়ই লগ করা স্বাভাবিক এবং কেবল সেই ক্ষেত্রগুলি পরিবর্তিত হয়েছে। ট্রিগারগুলিতে এটি বাস্তবায়নের জন্য টেবিলের একটি প্রাথমিক কী রয়েছে বা কেবলমাত্র একক সারি আপডেট করা দরকার।

এটি কীভাবে অর্জন করা যায় তার স্ক্রিপ্টগুলির সাথে এখানে একটি ভাল পোস্ট রয়েছে - নিরীক্ষণের ট্রেইল তৈরি করা

দেখতে অন্যান্য দরকারী তথ্যসূত্র :


দ্বিতীয় লিঙ্কটি এখন খারাপ।
জেরেমি হ্যারিস

@ সিলোসিস, এটি লক্ষ্য করার জন্য ধন্যবাদ। এটি এখন আপডেট হয়েছে :)
ইউসুবভ

3

আপনি ধারণাগুলির জন্য এনএইচবারনেট এনভার্স প্রকল্পের ডকুমেন্টেশনগুলি পরীক্ষা করে দেখতে চাইতে পারেন ।

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

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