طراحی پایگاه داده فروشگاه اینترنتی

توی فروشگاههای اینترنتی میدونید که محصولات دارای دسته بندی و ویژگی هستند و محصولات یا ساده هستند یا متغیر که محصولات متغیر دارای ویژگی هایی هستند که با انتخاب اونها توسط مشتری میتونه قیمت عوض شه و به طور کلی قابل انتخاب توسط مشتری هستند.

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

برچسب ها:
پرسیده شده در: 2 سال قبل
آمار بازدید: 3663
mradaei (45)
بیش از ۱ سال عضویت در روکسو بیش از ۱ سال عضویت در روکسو
1

طراحی پایگاه داده در فروشگاه های اینترنتی به روش های متفاوتی انجام می شود ولی همواره باید سعی کنیم روشی را انتخاب کرده که کمترین میزان فضا از پایگاه داده را اشغال کند. این موردی که شما فرمودید مشابه ساختار فروشگاه ساز ووکامرس وردپرس می باشد ولی عملا می توانید با روش زیر پیاده سازی متنوع تری ارائه داده و خروجی مشابه ووکامرس دریافت کنید. (اما حجم خیلی کمتری از پایگاه داده اشغال می شود)

طراحی پایگاه داده

اگر شما در حال نوشتن یک سی ام اس  اختصاصی فروشگاهی هستید یکی از روش های طراحی پایگاه داده فروشگاه اینترنتی می تواند به صورت زیر باشد:

جدول دسته بندی (categories)

این جدول شامل دسته بندی های تو در تو (سلسله مراتبی) می باشد. مشابه سایت روکسو 

id // integer
title // varchar
parent_id // integer ---> برای دسته بندی های تو در تو
created_at // timestamp

جدول ویژگی ها (attributes)

این جدول شامل ویژگی هایی است که برای هر دسته بندی تعریف می شود. مثلا دسته بندی کفش شامل یک سری ویژگی مانند سایز، رنگ و ... است و هر یک از این ویژگی ها شامل یک سری مقادیر هستند. (این مورد به صورت کامل در دوره آموزش ساخت فروشگاه اینترنتی مشابه دیجی استایل در لاراول تدریس و پیاده سازی شده است)

id // integer
title // varchar
created_at // timestamp

حال باید یک جدول برای مقادیر ویژگی تعیین کنید.

جدول مقادیر ویژگی (attribute_values)

وظیفه این جدول نگهداری مقادیر ویژگی جدول attributes است (یعنی یک رابطه یک به چند با جدول attributes برقرار کرده است)

id // integer
attribute_id // integer ---> کلید خارجی مرتبط با جدول attributes
title // varchar
created_at // timestamp

سپس شما می توانید جدول ویژگی را به جدول categories (دسته بندی ها) ارتباط دهید. این ارتباط از نوع چند به چند می باشد (یعنی هر دسته بندی می تواند چندین ویژگی را به ارث ببرد و هر ویژگی می تواند به چندین دسته بندی مرتبط شود)

جدول میانی یا pivot ویژگی ها و دسته بندی ها (attribute_category)

این جدول برای ذخیره سازی ویژگی های هر دسته بندی مورد استفاده قرار می گیرد و به صورت زیر تعریف می شود:

attribute_id // integer ---> کلید خارجی که رابطه با جدول attributes دارد
category_id // integer ---> کلید خارجی که رابطه با جدول categories دارد

پس از انجام این کار کافیست شما جدول محصولات را به جدول دسته بندی متصل کنید.

جدول محصولات (products)

در این جدول یک رابطه بین محصولات و دسته بندی ها ایجاد می شود که هر دسته بندی از طرفی با یک سری ویژگی ارتباط دارد و هر ویژگی با یک سری مقادیر! البته بسته به نیاز خودتان می توانید این جدول را توسعه دهید ولی هدف ارائه کردن کلید خارجی category_id در جدول محصولات بود:

id // integer
category_id // integer ----> کلید خارجی که مرتبط با جدول categories
price // float
....
created_at // timestamp

جمع بندی

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

امیدوارم این راهنمایی مشکل شما را برطرف کرده باشید.

ارسال شده در: 2 سال قبل
masoudsalehi (1233)
بیش از ۲ سال عضویت در روکسو بیش از ۲ سال عضویت در روکسو دارای 1000 کارما دارای 1000 کارما دارای 10 پاسخ صحیح دارای 10 پاسخ صحیح ارسال کننده پاسخ با 25 رای ارسال کننده پاسخ با 25 رای
جهت ارسال پاسخ ابتدا عضو سایت شوید.