Amir m
4 سال پیش توسط Amir m مطرح شد
7 پاسخ

معماری دیتابیس برای ویژگی های محصول

سلام.
من از MySQL برای دیتابیس فروشگاهی که قراره بسازم میخوام استفاده کنم.

برای ویژگی های محصول معماری جدول MySQL باید به چه شکل باشه که بتونم ویژگی محصول داینامیک (هر دسته متفاوت، کاملا مشابه دیجیکالا) رو اضافه کنم؟
یعنی فرضا دسته کالا های دیجیتال یه زیر مجموعه موبایل داره که اون زیرمجموعه همه کالا هاش یه سری ویژگی مثل (مقدار RAM، کیفیت دوربین، ابعاد صفحه نمایش و...) رو دارن.
حالا کاربر که وارد صفحه محصول میشه قراره این ویژگی ها رو ببینه از طرفی میخوام وقتی کاربر وارد دسته بندی میشه بتونه لیست محصولات اون دسته بندی رو ببینه و بتونه فیلتر کنه (مثلا بگه حداقل Ram مثلا 6 گیگ و حداکثر 12 گیگ باشه، ابعاد صفحه نمایش بین 6 اینچ تا 7 اینچ باشه، دوربین سلفی مثلا از نوع PopUp باشه، سنسور اثر انگشت داشته باشه یا نه و...)

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

@khanzadimahdi @hesammousavi @ali.bayat


ثبت پرسش جدید
coarad supp
تخصص : برنامه نویس لاراول
@coaradsupp 4 سال پیش مطرح شد
0

سلام، یه نگاهی به این بندازید بد نیست

https://laravelsd.com/share/K5oG9a


mahdi khanzadi
تخصص : backend developer at Snapp mar...
@khanzadimahdi 4 سال پیش مطرح شد
0

یه جدول به صورت key value طراحی کن که به صورت poly morphic باشه. بعدش برای تمامی محصولات (حتی اگه توی جدول های متفاوت باشن) میتونی ازش استفاده کنی. خیلی راحته.


Reza Jashnsaz
تخصص : مهندس نرم افزار
@rezajashnsaz0011 4 سال پیش مطرح شد
0

به شکل key value
مثلا
ایدی
نام ویژگی
مقدار ویژگی
ایدی محصول


Amir m
تخصص : برنامه نویس
@proamirm 4 سال پیش مطرح شد
0

ممنون از @rezajashnsaz0011 و @coaradsupp کلا همه ظاهرا key و value رو پیشنهاد میدن.
الان تو پیام شما @khanzadimahdi نوشتید که از روابط poly morphic استفاده کنم؛ این رو کامل متوجه نشدم.

در کل فرض کنید من با لاراول میخوام سایت رو بنویسم (لاراول نیست اما)
و به صورت key value ذخیره کردم
چطور باید بعدا محصول رو فیلتر کنم؟ هر حالتی فکر کردم نشد که مثلا لیست موبایل هایی رو بگیرم که رم 16 یا 32 دارن و ابعاد صفحه هم 7 و حسگر اثر انگشت هم دارن.


coarad supp
تخصص : برنامه نویس لاراول
@coaradsupp 4 سال پیش مطرح شد
0

این مدلی که دادم، واسه فیلتر کردن کارتون رو راحت میکنه، چون مقادیر مشخص هستن، ولی به صورت key value ممکنه مقادیر به هر صورتی وارد بشه و توی فیلتر مشکل ایجاد میکنه


Amir m
تخصص : برنامه نویس
@proamirm 4 سال پیش آپدیت شد
0

@coaradsupp بله الان دیدم ظاهرا روش شما از key value معمولی خیلی بهتره.
اما چه طور میشه مثلا یه کوئری (حتی با الکوئنت لاراول، یا هر چیز دیگه به جز لاراول مثلا Golang) نوشت که بخواد فیلتر کنه؟
در واقع مشکل من همینه، معماری دیتابیس رو میشه به راحتی رد کرد.

مثلا ببینید اگه فرض کنیم همه ویژگی های محصول توی جدول Products قرار بگیرن و به صورت یک ستون (البته خیلی ناکارآمده اما خب واسه مثاله)
مثلا:

Products:
- id
- name
- color
- ram
- screenSize

و خب مثلا خواستیم فیلتر کنیم در لاراول:

$query->where("screenSize", ">" 7);
$query->where("ram", "=", 16);

And so on...

حالا این روش شما که چندین جدول میاد وسط به چه شکل میشه پیاده سازیش؟?


Amir m
تخصص : برنامه نویس
@proamirm 4 سال پیش مطرح شد
0

دوستان متاسفانه پروژه من همینجا قفل کرده و نمیتونم جلو برم
کسی میتونه کمک کنه؟


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

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