micro_bhk
دوشنبه 11 دی 1391, 09:35 صبح
سلام
من دارم رو یه سیستم حضور و غیاب تحت وب کار میکنم.
من یه جدول دارم به اسم UserWorkSetting که اطلاعات ورود هر فرد برای هر روز رو نگهداری میکنه که شامل، ساعت ورود و خروج، روز تعطیل (مثلا برای ما جمعه ها)، مقدار تاخیر مجاز و ...
یه جدول دارم به اسم UserAttendance که به ازای هر روز که کاربر ورود بزنه یه رکورد ثبت میشه که شامل فیلدهای ID کاربر، تاریخ اونروز، ... هست.
یه جدول دیگه دارم به اسم UserInOut که ساعت های ورود و خروج رو نگهداری میکنه. در واقع کاربر یه ساعت ورود و خروج ثابت داره (شیفت کاری)، و ممکنه چند تا ورود و خروج بین ساعت کاریش داشته باشه برای مرخصی های ساعتی.
من طبق اطلاعات این جدول ها، توی یک بازه تاریخ که معمولا هر ماه هست، اطلاعاتی نظیر غیبت، اضافه کار، مرخصی، تعطیل کار و ... رو نمایش میدم.
مشکل من الان نحوه نگهداری اطلاعات جدول UserWorkSetting بعد از هر ویرایش هست. چون ممکنه اطاعات ورود و خروج هر کاربر در طول ماه تغییر کنه (احتمالش پایینه ولی وجود داره و باید در نظر گرفته شه).
حالا فرض کنید، توی ماه مهر، روز 10 اطلاعات جدول UserWorkSetting ویرایش میشه و روز مثلا 25 دوباره ویرایش میشه این اطلاعات. من برای اینکه بخوام محاصبات رو انجام بدم، باید از 1 تا 10 رو جدا داشته باشم، از 11 تا 25 و از 26 تا 30 رو جدا.
به نظر شما چطور میتونم اینکار رو انجام بدم:
راههایی که به نظر من میرسه اینه که به ازای هر تغییر، تغییرات رو آرشیو کنم، و موقع خوندن اطلاعات کل جدول کاری تو اون بازه رو بخونم و واسه هر روز اطلاعات رو از اونجا بررسی کنم. اینکار خیلی پیچیده هست و احتمال خطا هم توش هست
راه دوم اینکه، به ازای هر روز وررود و خروج که میزنه، اطلاعات روز کاری اون روز، تاخیرمجاز و نوع تعطیلی (هفتگی یا رسمی) رو توش بزارم، که این کار باعث ثبت فیلدهای تکراری تو جدول میشه ولی محاصباتش خیلی راحته. این خالت باز یه مشکلی که ایجاد میکنه اینه که من باز باید برای بررسی مرخصی های روزانه و غیبت ها، تعطیل کاری ها باید ساعت های ورود و خروج رو داشته باشم که تو جدول UserWorkSetting دخیره شده.
خلاصه این بود مشکل ما تو طراحی این بخش.
می خواستم نظرات دوستان رو تو این ضمینه بدونم (چند تا فکر بهتر از یه فکره)
با تشکر
من دارم رو یه سیستم حضور و غیاب تحت وب کار میکنم.
من یه جدول دارم به اسم UserWorkSetting که اطلاعات ورود هر فرد برای هر روز رو نگهداری میکنه که شامل، ساعت ورود و خروج، روز تعطیل (مثلا برای ما جمعه ها)، مقدار تاخیر مجاز و ...
یه جدول دارم به اسم UserAttendance که به ازای هر روز که کاربر ورود بزنه یه رکورد ثبت میشه که شامل فیلدهای ID کاربر، تاریخ اونروز، ... هست.
یه جدول دیگه دارم به اسم UserInOut که ساعت های ورود و خروج رو نگهداری میکنه. در واقع کاربر یه ساعت ورود و خروج ثابت داره (شیفت کاری)، و ممکنه چند تا ورود و خروج بین ساعت کاریش داشته باشه برای مرخصی های ساعتی.
من طبق اطلاعات این جدول ها، توی یک بازه تاریخ که معمولا هر ماه هست، اطلاعاتی نظیر غیبت، اضافه کار، مرخصی، تعطیل کار و ... رو نمایش میدم.
مشکل من الان نحوه نگهداری اطلاعات جدول UserWorkSetting بعد از هر ویرایش هست. چون ممکنه اطاعات ورود و خروج هر کاربر در طول ماه تغییر کنه (احتمالش پایینه ولی وجود داره و باید در نظر گرفته شه).
حالا فرض کنید، توی ماه مهر، روز 10 اطلاعات جدول UserWorkSetting ویرایش میشه و روز مثلا 25 دوباره ویرایش میشه این اطلاعات. من برای اینکه بخوام محاصبات رو انجام بدم، باید از 1 تا 10 رو جدا داشته باشم، از 11 تا 25 و از 26 تا 30 رو جدا.
به نظر شما چطور میتونم اینکار رو انجام بدم:
راههایی که به نظر من میرسه اینه که به ازای هر تغییر، تغییرات رو آرشیو کنم، و موقع خوندن اطلاعات کل جدول کاری تو اون بازه رو بخونم و واسه هر روز اطلاعات رو از اونجا بررسی کنم. اینکار خیلی پیچیده هست و احتمال خطا هم توش هست
راه دوم اینکه، به ازای هر روز وررود و خروج که میزنه، اطلاعات روز کاری اون روز، تاخیرمجاز و نوع تعطیلی (هفتگی یا رسمی) رو توش بزارم، که این کار باعث ثبت فیلدهای تکراری تو جدول میشه ولی محاصباتش خیلی راحته. این خالت باز یه مشکلی که ایجاد میکنه اینه که من باز باید برای بررسی مرخصی های روزانه و غیبت ها، تعطیل کاری ها باید ساعت های ورود و خروج رو داشته باشم که تو جدول UserWorkSetting دخیره شده.
خلاصه این بود مشکل ما تو طراحی این بخش.
می خواستم نظرات دوستان رو تو این ضمینه بدونم (چند تا فکر بهتر از یه فکره)
با تشکر