تالار گفتمان مانشت

نسخه‌ی کامل: مشکل در طراحی دیتابیس برای سیستم ارسال و دریافت پیام
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام دوستان
من نیاز دارم که در سایتم یه سیستم ارسال و دریافت پیام های خصوصی بین کاربران سایت داشته باشم.غیر از جدولی که برای کاربران سایت ایجاد کردم یه جدول هم برای پیام ها ایجاد کردم که این فیلدها رو شامل میشه:
id
sender_id
receiver_id
title
message_text
read_tag
send_time

همه چی ظاهرا خوب پیش رفت تا وقتی که به کاربر اجازه حذف پیام ها از صندوق ارسال یا دریافتش رو دادم. مشکلی که وجود داره اینه که وقتی کاربری یک پیام رو که برای شخص X ارسال کرده از صندوق ارسال هاش حذف میکنه اون پیام از دیتابیس کلا حذف میشه و دیگه اون شخص X هم پیام رو در صندوق دریافتش نمیبینه
چیزی که من نیاز دارم دقیقا شبیه به همین سیستم ارسال و دریافت پیام مانشت هست.
آیا جدولم فیلدهای اضافه تری نیاز داره تا مشکلم حل بشه یا اصلا جدول رو باید تقسیم کنم یا برای هر کاربر یک جدول جداگانه ایجاد کنم یا هر راه حل دیگه ای؟
ممنون میشم من رو در این رابطه راهنمایی کنید.
به همین جدولت ستون اضافه کن تا بفهمی به کدوم نشون ندهی
(18 تير 1395 11:47 ق.ظ)gogooli نوشته شده توسط: [ -> ]به همین جدولت ستون اضافه کن تا بفهمی به کدوم نشون ندهی
مشکل افزونگی نداره؟
(18 تير 1395 11:47 ق.ظ)gogooli نوشته شده توسط: [ -> ]به همین جدولت ستون اضافه کن تا بفهمی به کدوم نشون ندهی

منظورتون اینه که یه ستون بزارم که id اونی که اول حذفش کرده درش ذخیره بشه
بعد نفر دوم هم اگر خواست پیام رو از صندوق دریافتش حذف کنه فیلد آخرم چک کنه اگر مقدار داشت کلا رکورد رو از جدول حذف کنه؟
منظورتون رو درست متوجه شدم؟
(18 تير 1395 11:56 ق.ظ)blackhalo1989 نوشته شده توسط: [ -> ]
(18 تير 1395 11:47 ق.ظ)gogooli نوشته شده توسط: [ -> ]به همین جدولت ستون اضافه کن تا بفهمی به کدوم نشون ندهی
مشکل افزونگی نداره؟
Big Grin دو تا ستون اضافه کنه کارش راه می افته. (افزونگی فکر نکنم بشه چون داده ها تکرار نمی شن) ولی راه حل خوبی شاید نباشه.
شما می گی چی کار کنه یک جدول دیگه بگیره؟

(18 تير 1395 12:05 ب.ظ)targol نوشته شده توسط: [ -> ]
(18 تير 1395 11:47 ق.ظ)gogooli نوشته شده توسط: [ -> ]به همین جدولت ستون اضافه کن تا بفهمی به کدوم نشون ندهی

منظورتون اینه که یه ستون بزارم که id اونی که اول حذفش کرده درش ذخیره بشه
بعد نفر دوم هم اگر خواست پیام رو از صندوق دریافتش حذف کنه فیلد آخرم چک کنه اگر مقدار داشت کلا رکورد رو از جدول حذف کنه؟
منظورتون رو درست متوجه شدم؟
نه منظورم با دو تا ستون بود و 0و1 کردن پیچیده می شه اگر آقای بلک صلاح می دونن جدول بگیر
خب آقای بلک بگو دیگه می دونی من چند وقته برنامه نویسی نکردمSad
من به این سوال از قصد جواب ندادم. اینجا همون جایی هست که باید با فکر راه حل های مختلفی رو پیدا کنید و بعد مزایا و معایب هر کدوم رو مشخص کنید و در نهایت با توجه به نیازمندی های سیستم و مزایا و معایب هر راه حل یکی رو انتخاب کنید.

پ.ن: شکم به اینه که این از جمله مسایلی باشه که به سادگی تو مدل رابطه ای نمی گنجه.
(18 تير 1395 12:15 ب.ظ)blackhalo1989 نوشته شده توسط: [ -> ]مشکل در طراحی دیتابیس برای سیستم ارسال و دریافت پیام به همین جدولت ستون اضافه کن تا بفهمی به کدوم نشون ندهی
قبلا یه همچین چیزی من طراحی کردم
دقیقا چیزی که دوستمون گفتند راه حل درسته
ببینید اگه بخواید پیام رو دوبار تکرار کنید اونوقت افزونگی 100% دارید
پس دو تا ستون به نام های del_sender و del_receiver از نوع bool اضافه کنید و هر کاربر که خواست پیام رو حذف کنه ، تیک del_sender و یا del_receiver خورده بشه (ویا برداشته بشه بسته به جوری که حال میکنید)
و به هر کاربری پیام هایی نشون داده بشه که تیک نخورده باشه (ویا تیک نخورده باشه)

البته من تو سیستم اجازه ندادم پیام ها واقعا پاک بشن، چون لازم داشتم به عنوان مدرک داشته باشمشون، چون بعدا ممکن بود یکی دبه کنه
ولی شما میتونی بگی اگه برای هر دو ستون تیک خورده شده بود (ویا برداشته شده بود)، کلا حذف بشه پیام

ذکر این نکته که افزونگی هم نداریم

البته این رو هم دوستمون تو متن بالا متذکر شدن و من فقط کاری که قبلا کرده بودم رو بیان کردم
لینک مرجع