ورود

View Full Version : این برنامه رو چطوری پیاده سازی کنیم که برای جستجو به مشکلی برنخوریم؟



rahmatipoor
یک شنبه 06 تیر 1395, 11:07 صبح
با سلام خدمت همه دوستان عزیز

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

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

واضح تر بگم :
مثلا برای اطلاعات مربیگری فرد این گزینه ها قراره ثبت بشه :
1. درجه مربیگری
2. رشته مربوطه
3. تاریخ صدور
4. شماره ثبت شده

طرف ممکنه 3 تا مدرک مربگیری داشته باشه که سه بار اطلاعات بالا باید براش ثبت بشه

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

به نظر شما مثلا کلا یه جدول در نظر بگیریم و هر کدام از این گزینه ها رو 3 بار توی اون جدول تعریف کنیم ( که با توجه به اینکه گزینه های چند موردی توی نرم افزار زیاده ، تعداد فیلدهای این جدول خیلی زیاد میشه و راه اصولی این نیست ) و یا اینکه یه جدول برای اطلاعات اصلی و چند جدول دیگه برای هر کدام از این موارد چندموردی در نظر بگیریم و توی هر یک از جداول تعریف شده ID فرد رو ذخیره کنیم علاوه بر اطلاعات مربوطه

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

لطفا بفرمایید که این نرم افزارها رو چطوری باید پیاده سازی کنیم

با تشکر

akpa125
یک شنبه 06 تیر 1395, 23:57 عصر
اتفاقا ما از نرمال سازی استفاده میکنیم که جستجو رو راحت کنیم
شما مشکلتون طراحی یوزر اینترفیس هستش با یه پرسش ساده تمام مدارک یه نفر بدست میاد و شما داخل برنامه کاربردی میتونی با یه حلقه for each و داخل یه گرید و یو یا پنل ویا هر روش خلاقانه که به ذهنونتون میرسه تمامی مدارک ففرد رو نمایش بدین

rahmatipoor
دوشنبه 07 تیر 1395, 12:14 عصر
اتفاقا ما از نرمال سازی استفاده میکنیم که جستجو رو راحت کنیم
شما مشکلتون طراحی یوزر اینترفیس هستش با یه پرسش ساده تمام مدارک یه نفر بدست میاد و شما داخل برنامه کاربردی میتونی با یه حلقه for each و داخل یه گرید و یو یا پنل ویا هر روش خلاقانه که به ذهنونتون میرسه تمامی مدارک ففرد رو نمایش بدین

با تشکر از شما من در مورد به دست آوردن مدارک فرد مشکلی ندارم. مشکل من با فیلتر کردن اطلاعات بر اساس این موارد خاص توی دیتاگرید ویو هست.
شما فرض کن یه دیتاگریدویو دارید که اطلاعات تمامی افراد رو توی اون نمایش میدید. و حالا می خواهید اطلاعات رو سرچ یا به عبارتی فیلتر کنید
اطلاعاتی مثل نام و نام خانوادگی که چندموردی نیستند که مشکلی نیست.
با یه عبارت ساده مثلاrow filter دیتاسورس مربوط به دیتاگریدویو رو اینطوری می نویسیم


Name LIKE 'مهدی'


ولی مواردی مثل دوره های مربیگری و یا داوری فرد که توی یه جدول دیگه هست و بیشتر از یک رکورد دارند رو چطوری سرچ می کنید؟

نمیدونم منظورم رو تونستم برسونم یا نه

rahmatipoor
سه شنبه 08 تیر 1395, 11:14 صبح
دوستان لطفا کمک کنید

rahmatipoor
جمعه 29 مرداد 1395, 23:58 عصر
:متفکر:
ما ز یاران چشم یاری داشتیم

hamid_hr
دوشنبه 01 شهریور 1395, 19:49 عصر
شما توی پست اول گفتین با روش دوم برا جستجو به مشکل میخورین
میشه بفرمایید مشکلش چیه؟

rahmatipoor
سه شنبه 02 شهریور 1395, 14:19 عصر
شما توی پست اول گفتین با روش دوم برا جستجو به مشکل میخورین
میشه بفرمایید مشکلش چیه؟


مشکل اینه که یک جدول اصلی هست که اطلاعاتی مثل نام و نام خانوادگی فرد ثبت میشه و چندتا جدول دیگه هم هست که سایر اطلاعات فرد مثل مدارک و دوره های مربیگری ، مدارک داوری و ... ذخیره میشه که این جداول دوم میتونن هرکدومشون چند تا رکورد داشته باشند ( حداقل 5 رکورد ) و بین جدول اصلی با این جداول ثانویه ارتباط یک به چند هست

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

نمیدونم تونستم منظورم رو برسونم یا نه

hamid_hr
چهارشنبه 03 شهریور 1395, 10:37 صبح
معمولا برا این طور کار ها از یه گرید دوم برا نمایش استفاده میکنن
وقتی شما یه فرد رو انتخاب کردین بیاد تو گرید یا لیست یا چند تا تکس باکس درسها رو نمایش بده
برا کار شما میتونین یه ستون به نام مثلا اندیس به جدول دوم(درسهای انتخاب شده) اضافه کنین و وقتی داده ها رو ثبت میکنین اون رو هم شماره گذاری کنین که برا هر فرد میشه از 1 تا 3
بعد زمان جوین کردن میاین سه تا جوین میزنین و تو شرط جوین یه شرط اضافه میکنین که index = 1
برای جوین دوم میشه index = 2
برای جوین سوم میشه index = 3
البته این به ذهن من رسید شاید نرمال نباشه باید اساتید نظر بدن