احمد جنگی
6 سال پیش توسط احمد جنگی مطرح شد
3 پاسخ

پیاده سازی ویژگی های یک کالا به بهترین حالت

دوستان یهمشورتی می خواستم از شما
بهترین حالت برا پیاده سازی ویژگی یک کالا در فروشگاه چطوری میتونه باشه از لحاظ ساختار دیتابیس لطفا پیشنهاد بدین.

یک کالا داریم با چند تا ویژگی (سایز، رنگ و ... ) که قیمت متفاوتی دارن، بهترین حالت ساختار دیتابیسش چطوری میتونه باشه؟
مرسی


ثبت پرسش جدید
سید محمد حسین موسوی
تخصص : FullStack Developer
@SeyedMH.Mosavi 6 سال پیش آپدیت شد
6

سلام
واقعیتش "بهترین حالتتو دنیای واقعی وجود نداره :) باید دید نیاز شما چیه.
ما یه مبحثی تو مهندسی داریم به اسم 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


احمد جنگی
تخصص : برنامه نویس PHP
@ahmad.vb69 6 سال پیش مطرح شد
1

از توضیحات کاملتون ممنونم ولی این ساختار جوابگوی نیاز من نیست. چون بسته به ویژگی کالا قیمت متفاوتی برا کالا تعیین میشه، من خیلی این مورد رو بررسی کردم فک کنم ایجاد یه محصول جدید برای ویژگی متفاوت بهینه تر باشه و به صورت پدر فرزندی محصولات رو ایجاد کنیم، یه محصول با مشخصات کلی و یه سری محصول با ویژگی، قیمت و خیلی مورد متغیییر دیگر ، که یه حالت هست که توسعه پذیر و ایرادات کمتری بهش وارد هست.

بازم منتظر پیشنهادات بهتر هستم.


افشین داداش نژاد
تخصص : لاراول(Laravel)
@afshin.dadashnezhad 3 سال پیش مطرح شد
0

شما میتونید چند ویژگی اصلی رو که محصول داره برای محصول ثبت کنید
بعد برای محصولتون یه قسمت کار کنید به اسم مثلا تنوع محصولات
بعد توی اون قسمت میتونید چندین تنوع ثبت کنید و بر اساس هر تنوع یه قیمتی هم براش ثبت کنید
کاربر که توی سایت داره محصول شما رو مشاهده میکنه میتونه با تغیر باکس ها مثلا تغیر رنگ- سایز - هر چی
میتونه اون قیمت با تنوع های انتخابی رو ببینه
من یه فروشگاه کار کرده بودم با تغیر مثلا رنگ محصول حتی عکسشم تغیر میدادم
یا مثلا میتونستم بگم رنگ قرمز سایز x فلان قیمت
رنگ سبز سایز y فلان قیمت و n تا از این ویژگی ها


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

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