PDA

View Full Version : سوال: طراحی بانک E shop



حامد فراست
پنج شنبه 27 آبان 1389, 20:20 عصر
ا سلام
در طراحی جداول کالا های یک E-Shop لوازم خانگی برای من چند تا ابهام دارم که مطرح میکنم
فرض کنیم فروشگاه از چند غرفه تشکیل شده باشد(لوازم صوتی و تصویری ،لوازم غذا ساز ، لوازم پخت وپز و...)
ودرون هر غرفه چند نوع وسلیه برای مثال لوازم صوتی و تصویری شامل LCD,LED,سینمای خانگی و... میباشد
همان طور که میدانیم هر کدام از این کالاها دارای مشخصات خاص خود میباشندمثلا LCD ها دا رای ویژگیهای است که سینمای خانگی آنها را ندارد
حال سوال این است که آیا باید برای تمامی این محصولات یک جدول تشکیل داد تا بتوان ویژگیهای انها (مثلا ویژگی های دو LCD)را باهم مقایسه کرد(مثلا جدول LCDها، جدول سینمای خانگی و...)؟؟؟

حمیدرضاصادقیان
پنج شنبه 27 آبان 1389, 21:28 عصر
سلام. نه نیازی به این شکل طراحی نیست. چون یک ضعف داره.
فرض کنید گروههای کالای شما دائم در حال تغییر یا اضافه شدن باشند با این روش حتما باید دائم ساختار برنامه و جداولتون رو تغییر بدید.
شما یک جدول برای گروه کالا نیاز دارید. که شامل یک کد گروه کالا و یک نام گروه کالا هست.
حالا این گروه شامل هرچیزی میتونه باشه مثل، LCD,سینمای خانگی و...
بعد در جدولی که کالا رو تعریف میکنید یک کلید خارجی برای گروه مشخص میکنید و معلوم میکنید که هرکالا زیر مجموعه چه گروهی قرار داره. با این روش هرتعداد گروه کالا که اضافه بشه دیگه نیازی به تغییر برنامه و ساختار جداولتون نیست همچنین میتونید از هرگروه خاص گزارش بگیرید.
همچنین اگر براتون مهمه مشخصات فنی هرکالا رو ذخیره کنید ، اگر تعداد فیلدها کم هست مثلا کلا دو تا فیلد داره میتونید در جدول کالا قرار بدید.اگر تعداد فیلدها زیاد بود میتونید یک جدول توضیحات برای کالا در نظر بگیرید که کد کالا به صورت کلید خارجی در جدول توضیحات باشه و برای هرکالا توضیحات خاص خودشو پر کنید.

موفق باشید

m_omrani
جمعه 28 آبان 1389, 00:46 صبح
در ادامه نظر آقای صادقیان:

ایجاد جدول برای گروه کالا تنها به دسته بندی آنها کمک می کند و اگرچه خوب است، اما الزامی نیست. چه بدون دسته بندی هم با فرض کمی غیر نرمال بودن و ساده گرفتن دسته بندی، می توان نوع کالا را درون خود جدول کالا نیز گنجاند.

اما مساله اساسی خود کالا، خصوصیات آن و مقایسه کالاها با یکدیگر است که شاید گنجاندن چنین قابلیتی در فروشگاه ها برای خریدار مفید باشد.

در واقع مساله اساسی جدول کالا است که چطور باید پیاده سازی شود.

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

در چنین حالتی ممکن است فکر کنیم بهتر است برای هر کالا اساساً یک جدول جداگانه طراحی کنیم. چون طبعاً خصوصیت های کالایی مثل موبایل با کالایی مثل LCD شباهت یا تناسبی با هم ندارد. دقت کنید این مساله کاملاً جدای از دسته بندی نمودن این کالاها است.

چون حتی در همین حالت نیز هنوز هم می توان جدول دسته بندی یا گروه کالا را داشت.

اما در چنین مدلی، اگرچه ظاهراً تصمیم درست به نظر می رسد، اما حجم کُدنویسی و پیچیدگی و سربار پیاده سازی را چندین برابر خواهد کرد.

اگرچه مشکل به طور 100% قابل رفع نیست، زیرا به هر حال هر کالا، خصوصیات اختصاصی خود را دارد، لذا سربار پیاده سازی کاملاً ناگزیر است، اما با کمی تدبیر می توان حداقل این سربار را کمتر کرد.

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

سپس برای خصوصیات اختصاصی هر کالا، مطابق روش قبل یک جدول جدا ایجاد شود که با جدول مرکزی رابطه یک-به-یک دارد.

این تدبیر حداقل باعث می شود روند مقایسه کالاها کمی ساده تر انجام شود. در عین این که هنوز اختصاصی بودن خصوصیت های کالاها از یکدیگر حفظ می شود.

دقت کنید لیست خصوصیات مشترک کاملاً به میزان گستردگی فروشگاه و کالاهای آن بستگی دارد و این که طراح تا چه حدی می خواهد وارد جزئیات هر کالا بشود.

لذا این که چه خصوصیت هایی را در جدول کالای مرکزی بگیریم و چه خصوصیت هایی را در جداول مشتق شده، مطالعه و تامل بیشتر لازم دارد و خصوصاً به میزان بسیار زیادی به خود طراح بستگی دارد که دوست دارد تا چه حد وارد جزئیات کدام کالاها بشود یا نشود.

حامد فراست
جمعه 28 آبان 1389, 11:55 صبح
با تشکر از حسن توجه شما دوستان عزیز m_omrani و حمیدرضاصادقیان که با دقت و حوصله به این سوال پاسخ دادید

سپس برای خصوصیات اختصاصی هر کالا، مطابق روش قبل یک جدول جدا ایجاد شود که با جدول مرکزی رابطه یک-به-یک دارد سوالی در مورد این جمله داشتم اینکه :
اگر بخوام یک کالای جدید اضافه کنم با خوصوصیات اختصاصی خودش باید یک جدول درست کنم . حالا اگر برنامه دست مشتری باشه که دیگه امکان اضافه کردن جدول رو ندارم.
آیا برای آین کار راه حلی پیشنهاد میکنید؟:متفکر:
راه حلی که به ذهنم رسید این بود که یک تابع Table Generateطراحی کنم که خصوصیات رو از کاربر بگیره و بعد اقدام به تولید اون جدول بکنه ولی این روش یکم کد نویسیش زیاده ودرد سر های خاص خودش رو داره و به عنوان آخرین راه حل گذاشتمش.