PDA

View Full Version : صندوق پیام ها بین کاربران متفاوت



خانم گل
جمعه 01 آذر 1392, 09:21 صبح
سلام. من تو سیستمم دو نوع کاربر مختلف با دو جدول مختلف دارم که خصوصیات و عملکردهاشون متفاوته. ولی هردوشون نام کاربری دارن که میتونن تو سیستم وارد به برخی چیزها دسترسی داشته باشن. خوب میخوام این دو نوع کاربر از طریق صندوق پیامها بتونن به هم دیگه پیام بدن. ولی خوب مشکل اینه نمیدونم چطوری ارتباط بین صندوق پیام رو با دوکاربر مختلف ایجاد کنم. چون هم فرستنده و هم گیرنده باید مشخص باشه. از دوستان اگر کسی راهنمایی کنه ممنون میشم.

mahan.2002
شنبه 02 آذر 1392, 18:47 عصر
با سلام
این نوع طراحی که کاربران رو بدلیل نوع عملکردشون از هم جدا کردید خود این موضوع باید تحلیل بشه .. که ایا اصول طراحی شما در این موضوع درست است یا نه...
ولی با این پیش فرض و این نوع طراحی که شما انجام دادید .. که بنظرم کارتون مشکل داره و کارتون درست نیست ... باید شما چهار تا جدول پیامها در نظر بگیرید برای صندوق پیام ها یعنی چهار جدول برای ذخیره پیام ها در نظر بگیرید..
و به این صورت جداولتون رو طراحی کنید :

کاربران نوع 1 ( شماره کاربر نوع 1 ( کلید اصلی ) ، ....مشخصات )

کاربران نوع 2 ( شماره کابر نوع 2 ( کلید اصلی ) ، ....مشخصات )

در این جدول که بنام صندوق 1 هست .. تنها پیام هایی که از هم فرستنده هم گیرنده از جدول نوع 1 هستند .. ذخیره میشود..

صندوق 1 ( شماره پیام ( اصلی ) ، شماره کاربر نوع 1 ( کلید خارجی ) { فرستنده} ، شماره کابر نوع 1 (کلید خارجی) ، متن پیام ، موضوع ، تاریخ ، ساعت ، ...)

در این جدول که بنام صندوق 2 هست ..تنها پیام هایی که از هم فرستنده هم گیرنده از جدول نوع 2 هستند .. ذخیره میشود .. :

صندوق 2 ( شماره پیام ( اصلی ) ، شماره کاربر نوع 2 ( کلید خارجی ) { فرستنده} ، شماره کابر نوع 2 (کلید خارجی) ، متن پیام ، موضوع ، تاریخ ، ساعت ، ...)

در این صندوق پیام هایی که فرستنده از نوع 1 و گیرنده از نوع 2 می باشد .. ذخیره می شود :

صندوق 3 ( شماره پیام ( اصلی ) ، شماره کاربر نوع 1 ( کلید خارجی ) { فرستنده} ، شماره کابر نوع 2 (کلید خارجی) ، متن پیام ، موضوع ، تاریخ ، ساعت ، ...)

صندوق 4 پیام هایی که فرستنده از نوع 2 و گیرنده از نوع 1 می باشد .. ذخیره می شود:

صندوق 4 ( شماره پیام ( اصلی ) ، شماره کاربر نوع 2 ( کلید خارجی ) { فرستنده} ، شماره کابر نوع 1 (کلید خارجی) ، متن پیام ، موضوع ، تاریخ ، ساعت ، ...)

و برای لیست کردن کل پیام ها یک کابر نتایج کوئری هر جدول با هم جمع میکنید ..

موفق باشید..

خانم گل
شنبه 02 آذر 1392, 20:06 عصر
ممنون از شما ولی خیلی شلوغ پلوغ میشه که. کاربرای من از دو نوع کلی دانش آموز و معلم هستن. بخاطر عملکردای کاملا متفاوتشون جداولشون رو از هم جدا کردم. من میخواستم از نام کاربری که از تو جداول هرکدوم ثبت میشه واسه صندوق پیام ها استفاده کنم ولی الان که فکر میکنم میبینم میتونم از جدول membership که واسه هردوشون مشترکه اینکارو انجام بدم. ممنون از راهنماییتون.

mahan.2002
یک شنبه 03 آذر 1392, 02:18 صبح
بنظرم میاد مطلبی که عرض کردید تنها در زمان طراحی ظاهر برنامه کاربردی استفاده میشه نه در طراحی و پیاده سازی ساختار بانک اطلاعاتی و دیتابیس .. و برای ذخیره سازی اطلاعات به این صورت مشکل خواهید داشت..

شما میتونید از یکی از راه حل هایی زیر این کارو انجام بدید
یه جدول کلی در نظر بگیرید به نام اعضا و بعد به تفکیک کاربراتون و مشخصات هر نوع از کاربراتون رو در جدول دیگر ارجاع دهید با فیلد هایی تفکیک شده ..
مثلا برای اعضایی کد نوع کاربریشون یک مقدار خاص هست به جدول معلمان ارجاع میدهید
و برای کاربر هایی با کد نوع کاربری مشخصه دیگری به جدول دانش اموز ..

ولی پیشنهاد اصلی که من به شما میکنم اینکه اگر میخواهید ساختار کلی جداولتون حفظ بشه .. و همچنین اینکه تعداد جداولتون هم به این تعداد نباشه .. از این روش استفاده کنید ... دوفیلد فرستنده یکی از جدول دانش اموز و دیگری از معلم و دوفیلد گیرنده یکی دانش اموز و معلم ... در هر ارسال با توجه به نوع ارسال کننده و گیرنده مقادیر فیلد هارو پر کنید به عنوان مثال برای ارسال نامه ببین دو دانش اموز شما فیلد هایی مربود به دانش اموز گیرنده و دانش اموز فرستده رو پرکنید و بقیه فیلد هایی مربوط به ارسال کنند و در یافت کننده رو نال کنید که در اینجا فیلد معلم ارسال کنند و دریافت کننده نال می شود
جدولتون رو به این صورت طراحی کنید
جدول پیام ها ( شماره پیام ( کلید اصلی ) ، STD_S {"فرستنده"} ( خارجی ) ، Teach_S "فرستنده" (خارجی) ، STD_R { گیرنده } ( خارجی ) ، Teach_R { گیرنده } (خارجی ) ) ، موضوع پیام، متن ، تاریخ ، ...)
در این حالت شما چهار حالت دارید :
1.حالت دانش اموز به دانش اموز که شما فیلد Std_s فرستنده و Std_R گیرنده رو با توجه به ایدی دانش اموز گیرنده و فرستنده ثبت میکنید .. و بقیه فیلد ها مربوط به ارسال کنند ه و دریافت کنند که در اینجا Teach_S و Teach_R هست رو با Null پر میکنید .. ب عنوان مثال
جدول پیام ها ( 510002، 1458، Null، 1205 ، Null، ... )
به این ترتیب میتوانید مثلا تمام پیام هایی که به دانش اموز با کد 1205 ارسال شده است رو بازیابی کنید ..
حالت هایی بعدی هم به همین ترتیب ..
موفق باشید.