دوستان یهمشورتی می خواستم از شما
بهترین حالت برا پیاده سازی ویژگی یک کالا در فروشگاه چطوری میتونه باشه از لحاظ ساختار دیتابیس لطفا پیشنهاد بدین.
یک کالا داریم با چند تا ویژگی (سایز، رنگ و ... ) که قیمت متفاوتی دارن، بهترین حالت ساختار دیتابیسش چطوری میتونه باشه؟
مرسی
سلام
واقعیتش "بهترین حالتتو دنیای واقعی وجود نداره :) باید دید نیاز شما چیه.
ما یه مبحثی تو مهندسی داریم به اسم over engineering که مفهومش اینه که شما چیزهایی تو پروژه پیاده سازی کنی که اصلا بدردت نخوره و مازاد نیازهای خودت وقت بزاری و کار کنی. پس شما تو یه پروژه x می تونی دوتا قابلیت داشته باشی تو پروژه y صدتا. پروژه x هم در نوع خودش خوب طراحی شده و پروژه y هم همینطور.
اما ما فرض رو می گیریم شما می خوای یه محصول داشته باشی + یه سری ویژگی که می خوای داینامیک هم طراحی بشن چون هر دسته از محصولاتت یه سری ویژگی خاص دارن. مثلا موبایل یه ویژگی داره به اسم صفحه نمایش که اون ویژگی اصلا تو دسته بندی لباس معنی نمی ده. مثل سایت دیجی کالا و امثالهم
برای این منظور باید حداقل ویژگی ها و جداول زیر رو داشته باشی
Product:
Id Title
---------------------------------------------------
1 Lenevo Z510
PropertyGroup:
Id Title
---------------------------------------------------
1001 Laptop
1002 Shoes
Property:
Id Title PropertyGroupId
---------------------------------------------------
2001 Weight 1001
2002 Shoes Size 1002
2003 Ram 1001
2004 Screen Size 1001
PropertyValue:
ProductId PropertyId Title
---------------------------------------------------
1 2003 8 Gig
1 2004 16 Inch
حالا فرض کن یه محصول می خوای اضافه کنی و می ری داخل صفحه مربوطه و اول می ** این محصول کدوم گروه ویژگی رو داره و مثلا کاربر از یه لیستی اون رو انتخاب می کنه و بعد که انتخاب کرد ویژگی های زیرمجموعه اون گروه رو بهش نشون می دی و بعد که مقادیر کاربر رو داخل جدول PropertyValue ثبت می کنی.
البته یه سری موارد هم هست که باید به این ساختار اضافه کنی. مثلا فرض کن یه ویژگی هست که مقدارش از نوع text هست و یه ویژگی دیگه از نوع رنگ و یا از نوع عدد یا ...
اینجاست که دیگه موقع ثبت داده اولا نمی دونی به کسی که داره محصول رو ثبت می کنه ColorPicker بدی یا Text یا ... و از اونطرف هم جدولت جوری طراحی شده که یه نوع خاص مثلا فقط text رو بگیره. برای این می تونی یکم بررسی کنی ولی می تونی یه جدول داشته باشی به این صورت:
PropertyType:
Id Type
---------------------------------------------------
3001 Number
3002 Color
3003 Text
3004 Description
تو جدول Property هم یه کلید خارجی از این جدول داری. حالا می تونی تمام مقادیر رو بصورت Text ذخیره کنی. و بر اساس type متوجه بشی این نوعش مثلا Description هست یا یه text اگر اولی بود برای مثلا CKEditor نشون بدی و اگر دومی هست یه textbox
از توضیحات کاملتون ممنونم ولی این ساختار جوابگوی نیاز من نیست. چون بسته به ویژگی کالا قیمت متفاوتی برا کالا تعیین میشه، من خیلی این مورد رو بررسی کردم فک کنم ایجاد یه محصول جدید برای ویژگی متفاوت بهینه تر باشه و به صورت پدر فرزندی محصولات رو ایجاد کنیم، یه محصول با مشخصات کلی و یه سری محصول با ویژگی، قیمت و خیلی مورد متغیییر دیگر ، که یه حالت هست که توسعه پذیر و ایرادات کمتری بهش وارد هست.
بازم منتظر پیشنهادات بهتر هستم.
شما میتونید چند ویژگی اصلی رو که محصول داره برای محصول ثبت کنید
بعد برای محصولتون یه قسمت کار کنید به اسم مثلا تنوع محصولات
بعد توی اون قسمت میتونید چندین تنوع ثبت کنید و بر اساس هر تنوع یه قیمتی هم براش ثبت کنید
کاربر که توی سایت داره محصول شما رو مشاهده میکنه میتونه با تغیر باکس ها مثلا تغیر رنگ- سایز - هر چی
میتونه اون قیمت با تنوع های انتخابی رو ببینه
من یه فروشگاه کار کرده بودم با تغیر مثلا رنگ محصول حتی عکسشم تغیر میدادم
یا مثلا میتونستم بگم رنگ قرمز سایز x فلان قیمت
رنگ سبز سایز y فلان قیمت و n تا از این ویژگی ها
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟