سلام
برای طراحی جدول سفارشات با یک مسئه مواجه شدم خواستم نظر شمارو بدونم
من برای سایت فروشگاهی که میزنم کاربر میتونه چندین آدرس داشته باشه بتونه اون هارو حذف کنه
حالا تو جدول سفارشات orders من id ادرس رو address_id رو گذاشتم و رابطه یک با چند با جدول آدرس ها
ولی الان متوجه شدم اگر کاربری محصولی بخری و یک ادرس انتخاب کنه بعد بیاد اون آدرس رو حذف کنه , اون سفارش هم حذف میشه
چنتا راه حل به ذهنم رسید
1 - onDelete رو به شکلی بزاریم وقتی حذف شد null بشه
2 - کاربر نتونه آدرسی رو حذف کنه
3 - یک ستونی به آدرس ها اضافه کنم مثلا status که بولین هست و کاربر وقتی روی حذف زد این false بشه و نتونه اون آدرس رو ببینه و فکر کنه آدرس حذف شده ولی در اصل حذف نشده
4 - تو جدول سفارشات id آدرس رو نزارم به جاش یک جدول جدید مثلا orders_address تک تک ستون های هر آدرس رو ثبت کنم و id این جدول رو در سفارشات بزارم
نظر شما چیه کدوم راه حل بهتره اگر چیز دیگه ای غیر اینام هست ممنون میشم نظرتونو بگید
@Alimotreb @mhyeganeh @hesammousavi @ali.bayat
سلام.
این قضیه مسئله رایجی هست و در نمونه های مشابه دیگر هم ممکنه شاهدش باشیم. مثلا برای شماره موبایل سفارش دهنده یا قیمت محصول و ...
به نظرم بهترین کار این هست که شما لیست آدرس های کاربر رو از دیتابیس بخونید بعد به کاربر نمایش بدید تا بتونه آدرس مورد نظرخودش رو انتخاب کنه. در نهایت موقع ثبت سفارش، مقدار اون آدرس رو بصورت string و hard code داخل اون سفارش ثبت کنید. یعنی بصورت FK با ستون address_id نباشه. چون غیر از بحث حذف، اگر بعد از ثبت سفارش و پیش از ارسال ویرایش هم بشه داستان بوجود میاد.
منطقیش هم همینه که اطلاعات آدرس و تلفن و قیمت محصول و ... دقیقا طبق اطلاعات زمان ثبت سفارش به ثبت برسه و اگر بعدا تغییر پیدا کرد نباید در سفارش های قبلی تاثیر بذاره.
سلام می تونید از یه جدول دیگه به اسم order_history استفاده کنید و اطلاعات order کاربر رو از اونجا نشون بدید . اونجا می تونید به جای address_id ، آدرس رو به صورت استریتگ ذخیره کنید و نشون بدید.
سلام.
این قضیه مسئله رایجی هست و در نمونه های مشابه دیگر هم ممکنه شاهدش باشیم. مثلا برای شماره موبایل سفارش دهنده یا قیمت محصول و ...
به نظرم بهترین کار این هست که شما لیست آدرس های کاربر رو از دیتابیس بخونید بعد به کاربر نمایش بدید تا بتونه آدرس مورد نظرخودش رو انتخاب کنه. در نهایت موقع ثبت سفارش، مقدار اون آدرس رو بصورت string و hard code داخل اون سفارش ثبت کنید. یعنی بصورت FK با ستون address_id نباشه. چون غیر از بحث حذف، اگر بعد از ثبت سفارش و پیش از ارسال ویرایش هم بشه داستان بوجود میاد.
منطقیش هم همینه که اطلاعات آدرس و تلفن و قیمت محصول و ... دقیقا طبق اطلاعات زمان ثبت سفارش به ثبت برسه و اگر بعدا تغییر پیدا کرد نباید در سفارش های قبلی تاثیر بذاره.
سلام
در امور مالی باید این نکته رو در نظر داشته باشید هیچکدام از اطلاعاتی که مرتبط با موارد مالی یا کالا و خدمات است که کاربران طرف حساب بدهکار یا بستانکار شماست نباید حذف بشه یعنی وقتی یک رکورد بخشی از اطلاعات مالی است نباید از بین برود.
حالا راه های متفاوتی پیش رو دارید مثلا جدول address برای نگهداری لیست آدرس های کاربره که در مراجعات بعدی نیاز به تایپ مجدد نداشته باشه پس یا باید آدرسی که در جدول orders دارای رکورد هست قابل حذف نباشه یا اینکه توی خود جدول orders آدرسی که کالا به اون ارسال شده هم ذخیره بشه که جز سوابق مالی بایگانی بشه.
سوابق مالی برای زمان اختلاف حساب یا بررسی مجدد لازمتون میشه
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟