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

2 هفته پیش
توسط Amir m آپدیت شد
Amir m ( 19720 تجربه )
2 هفته پیش
تخصص : برنامه نویس

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

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

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

@khanzadimahdi @hesammousavi @ali.bayat

coarad supp ( 7550 تجربه )
2 هفته پیش

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

https://laravelsd.com/share/K5oG9a

mahdi khanzadi ( 65127 تجربه )
2 هفته پیش
تخصص : برنامه نویس سمت سرور

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

reza ( 35710 تجربه )
2 هفته پیش
تخصص : مهندس نرم افزار،برنامه نویس بک اند

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

Amir m ( 19720 تجربه )
2 هفته پیش
تخصص : برنامه نویس

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

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

coarad supp ( 7550 تجربه )
2 هفته پیش

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

Amir m ( 19720 تجربه )
2 هفته پیش
تخصص : برنامه نویس

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

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

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

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

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

And so on...

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

Amir m ( 19720 تجربه )
2 هفته پیش
تخصص : برنامه نویس

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

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