ثبت کلیه فعالیت های کاربر در نرم افزار سی شارپ توسط Sql Server
سلام.یک برنامه ای طراحی کردم که تعداد زیادی جدول داره (جداول به روش کد فرست طراحی شده است) که این جداول در فرم ها قابلیت اضافه ،حذف و ویرایش رو دارد.در هر جدول دو فیلد برای ثبت تاریخ تغییرات و فردی که این تغییرات را اعمال کرده است اضافه کردم
public string DateRegister { get; set; }
public int UserRegisterID { get; set; }
حال اگر یک رکورد را یوزر 1 از جدول A حذف کند دیگر نمیتوان فهمید که رکورد حذف شده رو چه کسی و در چه زمانی حذف کرده است. آیا راه حلی واسه این مشکل وجود دارد؟
برای ساخت یک گزارش کلی از فعالیت هایی که یک فرد انجام داده چه راحلی وجود دارد؟
اگر من این دو فیلدی که گفتم در هر جدول ساختم حذف کنم و یک جدول مشابه جدول بالا بسازم و کلیه تغییرات را در آن ثبت کنم آیا این کار منطقی می باشد؟
ثبت Log های کاربر در Sql Server
چند نکته رو میگم خدمتتون :
- اول اینکه سعی کنید حتما برای ثبت تاریخ از نوع داده ای DateTime استفاده کنید. تاریخ های string ممکنه بعدا شما رو دچار مشکلاتی کنه. (تبدیل تاریخ شمسی به میلادی و بالعکس)
- نکته دوم اینکه بهتره هیچ وقت اطلاعات رو به صورت فیزیکی و واقعی حذف نکنید. یعنی اگر نیاز هست اطلاعاتی حذف بشه توسط یک flag این کار رو انجام بدید. ببینید یک مثال میزنم. فرض کنید در یک آموزشگاه دانش آموزان در یک کلاس ثبت نام می کنند. حالا یک دانش آموز قصد انصراف از کلاس رو داره. ما نباید اطلاعات رو حذف کنیم. چون تاریخچه اطلاعاتمون رو داریم از بین می بریم با این کار. بهتره یک فیلد flag داشته باشیم که به صورت true و false باشه. اگر true بود یعنی دانش آموز هنوز در کلاس درس حضور داره. اگر false بود یعنی انصراف داده. شما هم بهتره تا حد امکان log های خودتون رو به صورت کامل از بین نبرید.
- نکته سوم هم اینکه اگر قصد دارید اطلاعاتی رو کامل از جدول حذف کنید ولی میخواید تاریخچه اش باقی بمونه میتونید از یک جدول دیگه کمک بگیرید. برای این کار هم میتونید از Trigger کمک بگیرید. یعنی نیاز نیست هر جایی عملیات Delete رو انجام دادید خودتون دستی توی نرم افزار دستور insert بنویسید.
سلام.
ممنونم آقای بحرانی فرد بابت پاسخ به سوال.
مطلبی پیدا کردم که گفتم شاید خالی از لطف نباشه در اینجا بیان کنم.
جدیدا آقای ابراهیم رعیت پرور ویدیویی ضبط کرده که روش دیگری جهت ثبت log را بیان میکنند.
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- نمایش صفحه در پنجره جدید با کلیک روی لینک (تگ a) در Asp
- افزودن مقادیر به صورت دستی به List دریافت شده از ریپازیتوری
- مشکل تاریخ شمسی در سی شارپ
- نمایش گزارش stimulsoft روی کلاینت
- حذف کامل یک رکورد در جدول ریلیشن شده
- تفاوت های سی شارپ 8 با نسخه های قبلی چیه؟
- انتخاب چند سطر دلخواه توسط چک باکس در DataGrid و محاسبه جمع سطرهای انتخاب شده
- مقایسه ساختار دو دیتابیس در Sql Server
- اشکال در ایجاد کلید خارجی در Sql Server
- نمایش نوتیفکیشن در سی شارپ
- ارسال پارامتر از سی شارپ به استیمول سافت
- عدم نمایش عکس در دیتاگرید ویو در wpf