• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
طراحی جدول قیمت و تخفیف
#1
سلام
پیشاپیش سال نو مبارک

در یک سیستم فروشگاهی من یه جدول دارم که اطلاعات کالاها را نگه میداره به اسم products
از طرفی می خوام توی سیستم فروش و توی فاکتورها اطلاعات قیمت ها به خوبی حفظ بشه
برای همین یه جدول هم دارم که قیمت هر کالا را نگه می داره و میگه این قیمت از این تاریخ تا فلان تاریخ بوده
این ساختار جدول ها است:
کد:
products:

id
name
description
.
.
.

کد:
product_prices:
id
product_id
price
start_date
end_date

حالا می خوام امکان ارائه تخفیف به کالاها را هم اضافه کنم
اگر به جدول products یه فیلد اضافه کنم و درصد تخفیف را نگه دارم بعد توی فاکتورها و تاریخچه قیمت ها به مشکل بر می خورم چون معلوم نیست تو هر بازه زمانی چه مقدار تخفیفی وجود داشته و چرا قیمت فاکتور ها این شده و ...
اگر به جدول produc_prices یه فیلد برای اینکار اضافه کنم بازم همان مشکل به وجود میاد مگر اینکه هروقت مقدار تخفیف تغییر کرد یه رکورد جدید داشته باشیم که خوب ممکنه یه سری مقادیر تکراری توی جدول وجود داشته باشه
راه دیگه ای هم به ذهنم رسید این بود که برای تخفیف ها هم مثل قیمت ها یه جدول جدا اختصاص بدم که اولا موقع خواندن اطلاعات یه join اضافه میشه و دوما احساس می کنم راه زیاد خوب و بهینه ای نیست

نمی دونم بهترین راه کدام است
شاید راه را اشتباه رفتم
ممنون میشم یه راهنمایی بکنید
  پاسخ
تشکر شده توسط : rezakian
#2
اینکه قیمت رو از جدول محصولات جدا کردی اشتباهه به نظرم. قمیت یک موجودیت جدا نیست و به کالا وابسته س. به نظر من قیمت و تخفیف باید تو همون جدول کالاها باشن و برا اینکه سوابق تغییر قیمت رو داشته باشی کافیه یه جدول جدا درست کنی و هربار قیمت کالایی تغییر کرد توش بنویسی فلان کالا در فلان تاریخ فلان قدر قیمتش بوده و فلان قدر تخفیف داشته.
  پاسخ
تشکر شده توسط : Mehrdad-Dadkhah
#3
سپاس بابت راهنمایی تون
ایده ی جالبی است
عملا به این شکل یه جدول ثبت سوابق قیمت داریم و جدیدترین قیمت و تخفیف توی جدول کالا قرار می گیره
اما منتظر می مونم بقیه دوستان هم نظرشون را بگن
کسی نظر دیگه ای نداره؟
  پاسخ
تشکر شده توسط :
#4
سلام
برای صورت حساب یه جدول دیگه درست کنید
  پاسخ
تشکر شده توسط : Mehrdad-Dadkhah
#5
سلام
برای صورت حساب که جدول دارم
اگر منظورتون اینه که قیمت هر محصول موقع خرید توی صورت حساب ثبت بشه ؟ من ایتدا این کار را کردم ولی بنظرم نیاز نیست مثلا اگر درماه 1000بار کالای x فروخته میشه هزاربار هم قیمت و تخفیفش ذخیره بشه درست نیست. هست؟
  پاسخ
تشکر شده توسط :
#6
بهتره قیمت همه ی محصولات دوباره ذخیره بشه
شاید لازم بشه مدیر ویرایش کنه و تخفیف بده
  پاسخ
تشکر شده توسط : Mehrdad-Dadkhah
#7
(۱۳۹۳ فروردین ۰۴, ۰۳:۴۸ ق.ظ)saeideng نوشته: بهتره قیمت همه ی محصولات دوباره ذخیره بشه
شاید لازم بشه مدیر ویرایش کنه و تخفیف بده

بله برای همین من هم این سوال را طرح کردم
دوباره باید ذخیره بشه اما نه هزارباره بهتره طراحی بهینه تری داشته باشه
  پاسخ
تشکر شده توسط :
#8
(۱۳۹۳ فروردین ۰۴, ۱۲:۲۴ ب.ظ)Mehrdad-Dadkhah نوشته:
(۱۳۹۳ فروردین ۰۴, ۰۳:۴۸ ق.ظ)saeideng نوشته: بهتره قیمت همه ی محصولات دوباره ذخیره بشه
شاید لازم بشه مدیر ویرایش کنه و تخفیف بده

بله برای همین من هم این سوال را طرح کردم
دوباره باید ذخیره بشه اما نه هزارباره بهتره طراحی بهینه تری داشته باشه
سلام شما بخواهید یا نخواهید مجبورید علاوه بر جدول صورت حساب که قیمت کل دریافتی و غیره نوشته میشه
جدول دیگه ای داشته باشید که محصولات خریداری شده را در آن درج کنید تا بدونید که برای سفارش فلان اجناس فلان خریداری شده در اون جدول هم یه فیلد دیگه اضافه میکنید تحت عنوان قیمت
این طوری از پیچیدگی دیتابیس هم جلوگیری میشود و نیازی نیست join بیشتری اعمال شود منطقی تر هم هست
شما 1000 بار هم از جنسی خرید شده باشه مجبورید باز 1000 رکورد داشته باشید حتی اگر نخواهید قیمت دوباره ذخیره بشه
شما که مجبورید ذخیره کنید یه فیلد دیگه بهش اضافه کنید به نام قیمت
همین.
  پاسخ
تشکر شده توسط : Mehrdad-Dadkhah
#9
ممنون بله من کاملا متوجه منظورتون شدم
سوال اینجاست:
ذخیره قیمت و تخفیف آن ها توی جدولی که لیست کالاهای فروخته شده قرار میگیره بهینه تر است(روش پیشنهادی شما) یا استفاده از یه جدول history برای قیمت و تخفیف (روش پیشنهادی itstaghi) ؟
کدام یک از نظر طراحی دیتابیس استانداردتر است؟

تا اونجایی که من می دونم نباید توی جدول فیلد تکراری وجود داشته باشه اگر بود باید جدا بشه توی یه جدول دیگه مگر اینکه یا من اشتباه فهمیده باشم یا استثنا براش قائل بشیم
  پاسخ
تشکر شده توسط :
#10
فکر کنم منظور شما از حفظ شدن قیمت ها رو من به خوبی متوجه نشدم. شما میخاین بدونین فلان کالا رو فلان موقع چقدر میفروختین یا اینکه میخاین وقتی قیمت کالایی تغییر کرد قیمت اون کالا تو فاکتورهای فروخته شده قبلی تغییر نکنه؟
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان