• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
ثبت تغییرات کلی یک جدول
#1
سلام

دوستان به چه شکل میشه تغییرات کلی یک جدول در دیتابیس رو کنترل کرد ؟؟؟

به طور مثال اینکه یک رکورد را چه یوزری ایجاد کرده در چه تاریخی ، چه یوزری رکورد رو ویرایش کرده و مقدار قبل از ویرایش چه بوده و بعد از ویرایش چه شده ، یک رکورد رو چه یوزری حذف کرده و رکورد حذف شده چه مقادیری داشته ؟؟؟؟؟؟
  پاسخ
تشکر شده توسط :
#2
یه جدول لاگ بنویس براش
با فیلد های
id,user_id,time,ip,url,old_value,new_value,action
وبلاگ rezaonline.net/blog
سفارش برنامه نویسی reza.biz
Php , mysql , postgresql , redis , Yii and ... Cool
  پاسخ
تشکر شده توسط : ayoubsys
#3
اگر جدول ما شامل 20 فیلد باشه و یک جدول دیگرمون 10 فیلد داشته باشه ، مقادیر قبلی و مقادیر جدید رو چطوری ثبت کنیم ؟؟؟

این چیزی که شما فرمودید ( old_value,new_value ) برای یک فیلد از یک جدول کاربرد داره ، اگر بخوایم جدول های مختلف رو لاگ کنیم چی ؟؟؟

اگر رکورد حذف بشه چی ، اینو چطوری باید لاگ کرد ؟
  پاسخ
تشکر شده توسط :
#4
نقل قول: اگر رکورد حذف بشه چی ، اینو چطوری باید لاگ کرد ؟
action = delete
old_value = xxx
new_value = NULL
وبلاگ rezaonline.net/blog
سفارش برنامه نویسی reza.biz
Php , mysql , postgresql , redis , Yii and ... Cool
  پاسخ
تشکر شده توسط : ayoubsys ImanAzadi
#5
البته دو تا فیلد دیگه هم اضافه کن یکی tbl جهت ذخیره کردن اسم جدولی که تغییر دادن
و دیگه tbl_pk جهت ذخیره کلید اون جدول تغییر یافته .
یعنی در اصل با این دو فیلد دقیقا رکورد تغییر یافته هم میتونی پیدا کنی توی جدول مورد نظر
و اینکه چه تغییری داده شده رو با action و new , old value
و اینکه چه کسی انجام داده user_id و در کجا با url و چه ساعتی هم time و ...
Big Grin
وبلاگ rezaonline.net/blog
سفارش برنامه نویسی reza.biz
Php , mysql , postgresql , redis , Yii and ... Cool
  پاسخ
تشکر شده توسط : ayoubsys ImanAzadi
#6
دوست گرامی این ساختاری که شما فرمودید فقط میتونه تغییرات یک فیلد رو ثبت کنه اگر یک رکورد که شامل 10 فیلد باشه و 10 فیلد آن همزمان تغییر کنه چی


فرض کنید رکورد ما به این صورت است

id - fname - lname - email - pass - address
5 - iman - azadi - [email protected] - 1234 - iran

حالا اگر این رکورد به صورت زیر ویرایش بشه چی


5 - reza - ahmadi - [email protected] - 653 - tehran


اون وقت این تغییرات رو چطوری لاگ میکنید
  پاسخ
تشکر شده توسط :
#7
نقل قول: اون وقت این تغییرات رو چطوری لاگ میکنید
5 تا رکورد به ازای هر فیلد درج میکنید Smile

یا میتونید توی یک رکورد old_value,new_value رو بصورت json ذخیره کنید .
وبلاگ rezaonline.net/blog
سفارش برنامه نویسی reza.biz
Php , mysql , postgresql , redis , Yii and ... Cool
  پاسخ
تشکر شده توسط : ImanAzadi ayoubsys
#8
نقل قول:5 تا رکورد به ازای هر فیلد درج میکنید

در اینصورت به ازای تغییر هر فیلد باید یک دستور از سمت سرور روی پایگاه داده اجرا بشه ، این performance رو پایین نمیاره ؟
  پاسخ
تشکر شده توسط :
#9
اینسرت انجام میشه زیاد کند نیست .
بعدشم تمهیدات دیگه ای میشه انجام داد
اینکه کلا از دیتابیس دیگه ای استفاده کنید
تیبل رو پارتیشن بندی کنید
انجین رو memory بذارید
و اینکه هر ماه داده های قبلی رو پاک کنید
وبلاگ rezaonline.net/blog
سفارش برنامه نویسی reza.biz
Php , mysql , postgresql , redis , Yii and ... Cool
  پاسخ
تشکر شده توسط : ayoubsys


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان