آفلاین
user-avatar

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

2 سال پیش
توسط احمد جنگی آپدیت شد
آفلاین
user-avatar
احمد جنگی ( 1404 تجربه )
2 سال پیش
تخصص : برنامه نویس PHP

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

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

آفلاین
user-avatar
سید محمد حسین موسوی ( 18823 تجربه )
2 سال پیش
تخصص : FullStack Developer

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

آفلاین
user-avatar
احمد جنگی ( 1404 تجربه )
2 سال پیش
تخصص : برنامه نویس PHP

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

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

برای ارسال پاسخ باید وارد سایت شوید