محمد
3 سال پیش توسط محمد مطرح شد
3 پاسخ

طراحی جدول سفارشات به همراه آدرس ها

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


ثبت پرسش جدید
محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 3 سال پیش مطرح شد
1

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

به نظرم بهترین کار این هست که شما لیست آدرس های کاربر رو از دیتابیس بخونید بعد به کاربر نمایش بدید تا بتونه آدرس مورد نظرخودش رو انتخاب کنه. در نهایت موقع ثبت سفارش،‌ مقدار اون آدرس رو بصورت string و hard code داخل اون سفارش ثبت کنید. یعنی بصورت FK با ستون address_id نباشه. چون غیر از بحث حذف، اگر بعد از ثبت سفارش و پیش از ارسال ویرایش هم بشه داستان بوجود میاد.

منطقیش هم همینه که اطلاعات آدرس و تلفن و قیمت محصول و ... دقیقا طبق اطلاعات زمان ثبت سفارش به ثبت برسه و اگر بعدا تغییر پیدا کرد نباید در سفارش های قبلی تاثیر بذاره.


thevil
تخصص : برنامه نویس خسته
@thevilgh 3 سال پیش مطرح شد
1

سلام می تونید از یه جدول دیگه به اسم order_history استفاده کنید و اطلاعات order کاربر رو از اونجا نشون بدید . اونجا می تونید به جای address_id ، آدرس رو به صورت استریتگ ذخیره کنید و نشون بدید.


محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 3 سال پیش مطرح شد
1

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

به نظرم بهترین کار این هست که شما لیست آدرس های کاربر رو از دیتابیس بخونید بعد به کاربر نمایش بدید تا بتونه آدرس مورد نظرخودش رو انتخاب کنه. در نهایت موقع ثبت سفارش،‌ مقدار اون آدرس رو بصورت string و hard code داخل اون سفارش ثبت کنید. یعنی بصورت FK با ستون address_id نباشه. چون غیر از بحث حذف، اگر بعد از ثبت سفارش و پیش از ارسال ویرایش هم بشه داستان بوجود میاد.

منطقیش هم همینه که اطلاعات آدرس و تلفن و قیمت محصول و ... دقیقا طبق اطلاعات زمان ثبت سفارش به ثبت برسه و اگر بعدا تغییر پیدا کرد نباید در سفارش های قبلی تاثیر بذاره.


حسن حکمتی
تخصص : برنامه نویس وب و بلاکچین
@hekmati 3 سال پیش مطرح شد
1

سلام
در امور مالی باید این نکته رو در نظر داشته باشید هیچکدام از اطلاعاتی که مرتبط با موارد مالی یا کالا و خدمات است که کاربران طرف حساب بدهکار یا بستانکار شماست نباید حذف بشه یعنی وقتی یک رکورد بخشی از اطلاعات مالی است نباید از بین برود.
حالا راه های متفاوتی پیش رو دارید مثلا جدول address برای نگهداری لیست آدرس های کاربره که در مراجعات بعدی نیاز به تایپ مجدد نداشته باشه پس یا باید آدرسی که در جدول orders دارای رکورد هست قابل حذف نباشه یا اینکه توی خود جدول orders آدرسی که کالا به اون ارسال شده هم ذخیره بشه که جز سوابق مالی بایگانی بشه.
سوابق مالی برای زمان اختلاف حساب یا بررسی مجدد لازمتون میشه


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام