• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
درخواست راهنمایی
#11
در حال حاضر هم یه جدول هست که به تعداد کاربرا رکورد داره
یه جدول هم هست که یه هیستوری از هر نامه رو با تاریخ و id نامه و نام یوزری که نامه رو بازدید کرده ثبت میکنه
اما مشکل اینجاست که با هر بار بازدید یه نامه یه رکورد به جدول اضافه میشه که در طولانی مدت دیتابیس رو خیلی سنگین می کنه و چون تعدد کاربر داریم نمیتونم برای id نامه ها فیلد unique تعریف کنم
احتمالا حق با شماست و طراحی جداول مشکل داره اما جور دیگه ای به ذهنم نرسید
در واقع مشکل من اینجاست که نمی خوام برای هر نامه یه جدول ساخته بشه از طرفی هم میخوام هر نامه به ازای هر کاربر یه هیستوری داشته باشه که هم بشه فعالیت کاربر رو رصد کرد هم به کاربر نامه هایی رو که ندیده اطلاع داد
من الان اومدم تو جدول اول تاریخ بازدید یه نامه رو ذخیره کردم تو جدول دوم هم تاریخ ایجاد و آپدیتهای نامه رو ذخیره کردم بعد اگه تاریخ بازدید نامه کوچکتر از آخرین تاریخ همون نامه تو جدول دوم بود id نامه رو برمی گردونه اما این مورد هم با توجه به افزایش تعداد بازدیدها و نامه ها در طولانی مدت مشکل ساز خواهد شد
حدس خودم اینه که باید از جداول رابط برای این کار استفاده بشه اما دقیقا نمیدونم چطوری جدول رابط رو تنظیم کنم
ممنون میشم اگه ایده ای برای طراحی جداول به ذهنتون می رسه راهنماییم کنین
  پاسخ
تشکر شده توسط :
#12
این که بخواهید ببینید نامه دیده شده یا نه این راهش نیست با یک فیلد int که مقدار 0 یا 1 داره مشکل شما بر طرف میشه
شما الان انتظارات خود را از کاری که باید انجام بشه بفرمایید تا بررسی بشه
مثلا عنوان نکردید که بازدید از طرف یک کاربر هست یا چند کاربر
ساختار جدولتون هم که به این موضوع مربوط میشه در اینجا بنویسید
  پاسخ
تشکر شده توسط :
#13
ببینید کل کار یه سیستم دبیرخانه است
تعداد کاربرا مسلما بیشتر از یکیه و البته متغیر چون امکان اضافه شدن یا کم شدن کاربرا هست
حالا من می خوام یه نامه که تو سیستم برای یه گروه مثلا مدیران ثبت شد تو قسمت کارتابل هر کاربر مدیر نامه مثلا به صورت بولد یا با یه رنگ یا فونت خاص نمایش داده بشه هروقت که کاربر اون نامه رو دید اون نامه تو کارتابلش به صورت فونت عادی یا با رنگ عادی نمایش داده بشه که این مورد تو کارتابل هر مدیر با توجه به دیدن یا ندیدن نامه فرق می کنه
حالا امکان پاراف کردن نامه هم وجود داره فرض کنید یه کاربر یه نامه رو دید و بعد یه کاربر دیگه اون نامه رو خطاب به کاربر اول پاراف کرد حالا نامه باید دوباره فونت و رنگش مثل موقعی بشه که کاربر اون نامه رو ندیده بود
  پاسخ
تشکر شده توسط :
#14
ساختار جدول کاربر و نامه را ذکر نکردید
و این که هر نامه میتونه توسط چند کاربر دیده شود؟
یعنی مثلا باید نامه توسط 3 کاربر دیده شود بعد هر کدام که دید برای آن شاخص فونت (یا هر چیز دیگه ای) متافت شود ولی هنوز برای دو کاربر دیگر همان طور باقی بماند
اگر فقط یک کاربر باید بیند شما میتوانید یک فیلد به حدول نامه ها اضافه کنید
  پاسخ
تشکر شده توسط :
#15
هرنامه می تونه توسط کلیه کاربرای یک یا چند دپارتمان دیده بشه که تعداد کاربرا و دپارتمانها متغیره یعنی میتونه کم و زیاد بشه
اصلا شما همین فروم رو نگاه کن مطالبی رو که هنوز ندیدین یا قبلا دیدین و پست جدیدی توش اضافه شده به صورت بولد نمایش میده که البته برای هر یوزر متفاوته منم دقیقا می خوام همین کار رو انجام بدم
ساختار جداول فعلی هم به این صورته:
users شامل : name , family , department , username , pass , lastvisit
letter شامل : name , tel , cell , address , subject , num , department , exp , pin , date
  پاسخ
تشکر شده توسط :
#16
عملکرد انجمن کمی متفاوت هست
فقط آخرین پستی که مه کاربر دیده یا تاریخ یا هر مورده دیگری رو ذخیره میکنه
یعنی شما بعد از کلیک بر روی آخرین ارسال ها تعدادی تاپیک مشاهده میکنید که اگر بازدید کردید یا نکردید این اطلاعات در دیتابیس ذخیره نمیشود
یعنی گزینه ای ندارد که شما بزنید تمام تاپیک هایی را که مشاهده نکردید رو نمایش بدهد حتی اگر در دیتابیس ذخیره شود موقتی است
خوب شما باز کامل توضیح ندادید
مثلا فرستنده نامه میتواند مشخص کند یک گروه خاص نامه را ببیند و در این صورت باید تمام آن گروه آن نامه را مشاهده کند در این حالت شما باید یک جدول میانی داشته باشید تا مشخص کند چه افرادی نامه را مشاهده کردند
ولی اگر یک کاربر دید کفایت کند میشود فقط با اضافه کردن یک فیلد به جدول نامه مشکل را حل کرد
یک کار دیگر این که شما بیایید نامه ارسال کنید و نامه برای همه کاربرا نشان داده شود و تا زمانی که کاربر خاص نامه را ندیده برایش های لایت باشد در این جور مواقع شما باید به ازای هر کاربر و نامه یک رکورد در دول میانی درست کنید که عاقلانه نیست
مثلا اگر شما 20 هزار کارمند داشته باشید و 20 هزار نامه در هم ضرب کنید 400 میلیون رکورد خواهید داشت که خوب نیست
ولی اگر موقع ارسال نامه مشخص کنید که کارمند های مثلا 1 - 5 -9 نامه را مشاهده کنند
میشود به ازای هر یک رکوردی در جدول میانی ایجاد کرد که دارای فیلدی با مقدار 0-1 برای تشخیص خوانده شده یا نه
  پاسخ
تشکر شده توسط :
#17
من کامل گفتم دیگه:
فرستنده نامه می تونه هرکدوم از کاربرای هر دپارتمان باشه نامه ای هم که ارسال میکنه به یکی از دپارتمانهای موجود میفرسته و اون نامه رو کلیه اعضای اون دپارتمان می تونن ببینن و مخاطب نامه یک کاربر خاص نیست در واقع کلیه اعضای یک دپارتمان خاص هستن
ضمنا منظور من از انجمن فقط آخرین ارسالها نیست اگه دقت کنین شما وقتی وارد انجمن میشین اون تاپیکهایی که تا حالا ازش بازدید نکردین یا اون تاپیکایی که بعد از آخرین بازدید شما توش پستی ارسال شده به صورت بولد نمایش داده میشه و بقیه تاپیکها بصورت معمولی
  پاسخ
تشکر شده توسط :
#18
(۱۳۹۳ اردیبهشت ۰۲, ۰۹:۳۰ ب.ظ)siolishe نوشته: من کامل گفتم دیگه:
فرستنده نامه می تونه هرکدوم از کاربرای هر دپارتمان باشه نامه ای هم که ارسال میکنه به یکی از دپارتمانهای موجود میفرسته و اون نامه رو کلیه اعضای اون دپارتمان می تونن ببینن و مخاطب نامه یک کاربر خاص نیست در واقع کلیه اعضای یک دپارتمان خاص هستن
ضمنا منظور من از انجمن فقط آخرین ارسالها نیست اگه دقت کنین شما وقتی وارد انجمن میشین اون تاپیکهایی که تا حالا ازش بازدید نکردین یا اون تاپیکایی که بعد از آخرین بازدید شما توش پستی ارسال شده به صورت بولد نمایش داده میشه و بقیه تاپیکها بصورت معمولی
در مورد انجمن این طور نیست
الان یکی از تالار ها رو نگاه کردم که قبلا هیچ وقت ندیده بودم ولی به صورت معمولی آمد
این که همه ی کارمندان دپارتمان میتوانند ببینند درست ولی به نظر بنده صحیح نیست که به ازای هر نامه / کارمند رکوردی ایجاد شود
یعنی شما فقط یک فیلد قرار میدهید اگر یکی از کارمندان نامه را باز کرد فیلد مذکور را به خوانده شده تغییر دهید
باز اگه موردی به ذهنم رسید اعلام میکنم
  پاسخ
تشکر شده توسط :
#19
(۱۳۹۳ اردیبهشت ۰۲, ۰۹:۴۶ ب.ظ)saeideng نوشته: در مورد انجمن این طور نیست
الان یکی از تالار ها رو نگاه کردم که قبلا هیچ وقت ندیده بودم ولی به صورت معمولی آمد
خوب منم منظورم همینه دیگه شما تا وقتی که اون تالار رو نگاه نکرده بودی فونتش تو لیست عناوین به صورت بولد بود ولی بعد از اینکه یه بار بازدید کردی دیگه تا وقتی که پست جدیدی توش داده نشه همینجوری به صورت معمولی میمونه این دقیقا خواسته منه

(۱۳۹۳ اردیبهشت ۰۲, ۰۹:۴۶ ب.ظ)saeideng نوشته: این که همه ی کارمندان دپارتمان میتوانند ببینند درست ولی به نظر بنده صحیح نیست که به ازای هر نامه / کارمند رکوردی ایجاد شود
یعنی شما فقط یک فیلد قرار میدهید اگر یکی از کارمندان نامه را باز کرد فیلد مذکور را به خوانده شده تغییر دهید
باز اگه موردی به ذهنم رسید اعلام میکنم
منم همینجاش گیر کردم دیگه! اگه بخوام به ازای هر کارمند/ نامه یه رکورد داشته باشم بعد از یه مدت یه جدول دارم با تعداد خیلی زیادی رکورد که مسلما پرس و جو ازش زمانبره
اگرم نخوام این کار رو بکنم باید برای هر نامه یه فیلد به قول شما اضافه کنم که مشکلش اینجاس که اگر هر یوزری اون نامه رو دید برای بقیه هم بصورت بازدید شده در میاد!
  پاسخ
تشکر شده توسط :
#20
به نظر بنده شما یک جدول میانی مثلا همون history خودت داشته باش
و هر کاربری که نامه رو خوند در اون جدول با مقادیر dep_id,user_id,letter_id و... اضافه کن(این شد برای دیدن نامه برای هر کاربر)
برای جلوگیری از افزونگی داده برای نامه هات یک نتیجه بزار که وقتی به نتیجه رسید اطلاعات نامه رو یه جا بایگانی کنه و از جدول دیتا بیست حذف کن
فقط میمونه بحث پاراف که چیزی به ذهنم نمیریسه فعلا
  پاسخ
تشکر شده توسط : siolishe


پرش به انجمن:


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