روز برنامه‌نویس مبارک 🤩🎉 از هدایای روز برنامه‌نویس جا نمونی ⌛
۰ ثانیه
۰ دقیقه
۰ ساعت
۲ کیان سلگی
دلیل عدم ایجاد ارتباط بین جدول در mysql
جامعه پی اچ پی ایجاد شده در ۱۶ آذر ۱۴۰۰

سلاام استاد وقت بخیر

استاد شما داخل طراحی دیتابیس این پروژه و پروژه 7todo داخل mysql بین جداول ارتباط برقرار نکردید و فقط فیلد‌های کلید خارجی موردنطر رو تعریف کردید و فرمودید که داخل کد عملیات موردنظر رو انجام میدیدم و دلیل این کار هم فرمودید که اگر یک کاربر حذف بشه به طور خودکار تمام فولدرها و تسک‌های مربوط به اون حذف میشه

اما سوالی که برای بنده پیش اومده این هست که اون دلیل که شما فرمودید نمیتونه یک عملکرد خوب برای برنامه باشه ؟ فرض مثال همون کاربر حذف بشه خب قاعدتا باید تمام اطلاعات مربوط به اون هم حذف شده اما پروژه ای که ما پیاده کردیم این طور نبود و زمانی که کاربر حذف میشد تمام فولدر‌ها و تسک‌های مربوط به اون داخل دیتابیس وجود داشت و عملا یعنی داده بدون استفاده داخل دیتابیس داریم و منابع رو اشغال کردیم

به نطر شما بهتر نیست تمام این مراحل و ارتباط جدول رو داخل mysql انجام بدیم که در صورت حذف یک کاربر اطلاعات مربوط به اون داخل سایر جدوال هم حذف بشه یا اگر نظر شما این هست که تمام مراحل با کد انجام بشه راهکار این موضوع چی هست ؟

ممنون میشم راهنمایی کنید .

سلام امیرمحمد عزیز

در مثالی که شما زدی کاملا درسته این مورد

منتهی ممکنه شرایطی پیش بیاد که نخوای این کار انجام بشه.

یه مثالش می‌تونه این باشه:

اگر کاربر نویسنده ای رو از سایت حذف کنیم آیا باید همه مقالات منتشر شده اش از بلاگ حذف بشه؟

  • اگر ریلیش رو تو دیتابیس تعریف کنی و cascade delete فعال کنی اون موقع خودار همه مقالاتش حذف میشه
  • در صورتی که عمدتا در این شرایط تصمیم بیزینس اینه که مقالات نگهداری بشه چون مثلا برای سئو مهمه یا اینکه محتواشون بدرد کاربرا می‌خوره.

خیلی بستگی به تصمیمات داره.

اگر جایی مطمئنی که می‌خوای همه ساید افکت‌های اون رکورد هم پس از حذفش، از کل دیتابیس حذف بشن اینکارو بکن. در غیر این صورت اینکارو نکن ...

بهترین پاسخ
لقمان آوند ۱۶ آذر ۱۴۰۰، ۱۳:۱۴

درسته

خیلی ممنون از پاسخگویی شما

کیان سلگی ۱۶ آذر ۱۴۰۰، ۱۳:۱۹