# پایگاه‌های داده > SQL Server > T-SQL > تحلیل و طراحی بانک اطلاعات >  بهترین ایده برای عملیات لاگ جداول

## IMANAZADI

با سلام خدمت دوستان
میخواستم یه راهنمایی ازتون بگیرم

در یک دیتابیس برای لاگ کردن عملیات کاربران از جمله insert/update/delete کدوم طرح رو پیشنهاد میدید .

1- اینکه در داخل هر جدول 4 فیلد بنام های create_by, modify_by,create_date,modify_date ایجاد کنیم و هز زمان کاربر عملیات انجام داد هر کدوم از این فیلدها رو تغییر بدیم

2- اینکه تمام عملیات ها رو در یک فایل text خارج از دیتابیس ذخیره کنیم

3- اینکه یک جدول بنام log با فیلدهای table_name,row_id,user_id,date,operation_type  بسازیم و هر زمان هر تغییری در جداول مربوطه انجام شد در جدول لاگ یک رکورد ایجاد کنیم .

کدوم سناریو منطقی تر بنظر میرسه .

----------


## hamid_hr

بنظر من روش CDC خوبه و خودش خیلی از کارها رو انجام میده 
درموردش سرچ کنید

----------


## Davidd

سلام. روش دوم به نظرم جالب نیست. چون ذخیره در فایل قابلیت کوئری گرفتن نداره و چون مجزا از دیتابیس هست مشکل بکاپ گیری و هماهنگی بکاپ فایل با بکاپ دیتابیس وجود داره. این روش برای زمانی مناسبه که داده های لاگ خیلی مهم نیستند و برای روز مبادا و شرایط خاص مورد استفاده قرار می گیرند مثلا ثبت درخواست های رسیده به سرور وب. 
روش اول در صورتی که تعداد جداول محدود باشه و نیاز به تاریخچه تغییرات نداشته باشی مناسبه مزیت این روش اینه که گزارش گیری و نمایش آخرین تغییرات به کاربر راحته ولی مشکلی که داره اینه که تاریخچه تغییرات ذخیره نمیشه. روش سوم برای زمانی که بخوای تاریخچه تغییرات رکوردهارو ذخیره کنی مناسبه. به نظر بهترین روش ترکیب روش اول و سوم بر اساس ماهیت جداول هست

----------

