PDA

View Full Version : طراحی جدول پدر و فرزندان



sajaaaaad
شنبه 13 دی 1393, 09:54 صبح
با درود فراوان خدمت اساتید محترم.
.
من یک بانک دارم طراحی میکنم که نیاز داره جدولام حالت پدر و فرزند داشته باشه. مثلاً من یک کالا خریداری میکنم و بعد توی برنامه مشخص میشه که این کالا بر اساس تعداد باید محاسبه بشه یا وزن.! حالا اگر تعداد باشه یکسری پارامترها داره، اگر کیلوگرم باشه یکسری پارامتر دیگه.! سوال اینجاس که جدولاش چطور طراحی میشه؟ موقعه که من میخوام جدول پدرو با فرزند ارتباط بدم از کجا بفهمه با کدوم جوین بشه؟
.
نمیدونم چطور توضیح بدم که واضح تر باشه منظورم. یک عکس زمیمه میکنم نگا کنید. چطوری جدولای پایین رو به جدول بالا ارتباط بدم و بفهمه ادامه جدول خرید کجاس.؟
127192

sajaaaaad
شنبه 13 دی 1393, 11:50 صبح
یک روشش اینه که کل پارامترها رو در نظر بگیرم و بعضی فیلدها خالی بمونه که این اصلا درست نیست، سربار اضافی فک کنم تولید میکنه. و نکته اینکه من برنامه رو اجرایی میخوام بنویسم و قراره اجرا بشه توی شرکت نمیخوام هنگ کنه توی کار. ممنون میشم سریع تر کمک کنید. :ناراحت:

tiphooo
یک شنبه 14 دی 1393, 00:35 صبح
برای این کار اصولیترین کار این است که برای هر کالا دو واحد شمارش تعریف کنید و برای این دو واحد ضریب تبدیل تعریف کنید
مثلا یک بسته کاغذ A4 برابر است با 1000 عدد کاغذ
یا یک کیلوگرم از یک کالا برابر با 5 عدد از ان کالاست
و در موقع ثبت رسید یا حواله نیز دو مقدار در جدول داشته باشید
مقدار 1 و مقدار 2 و کاربر هر کدام از مقادیر 1 یا دو را وارد کرد بر اساس کد کالا و ضریب تبدیل مقدار دوم را سیستم حساب کند
پرسیدن هر باره واحد اندازه گیری موفع ثبت رسید و حواله غیر اصولی و خسته کننده می باشد و از طرفی واحدهای اندازه گیری فقط کیلو و عدد نیستند که برایشان فیلد جداگانه در نظر بگیرید بیش از چند ده واحد اندازه گیری داریم

sajaaaaad
یک شنبه 14 دی 1393, 11:24 صبح
این برنامه ای که من میخوام بنویسم فعلا در همین حد دو واحد هست و در صورتی که غیر از اینا باشه من تمام فیلهارو بهش نشون میدم که هر کدوم رو خواست پر کنه. و مشکل همینه که ضریب ثابت نداره.! مثلا یک قطعه رو طراحی میکنن برش کاری میشه، یکبار از 1 تن میلگر مثلا 1000 تا قطعه در میاد شاید بعدا تغییر کنه 950 دربیاد. و نمیخوام جوری باشه که فردای رووز اندازه و وزن مثلا یک قطعه عوض شد، کل اطلاعات سابق با وزن جدید حساب بشه.
.
ی جوری باید باشه که وزن ها جدا باشه، هربار که وزنی آپدیت شد روی داده های قبل ک ثبت شده تاثیر نذاره.! اگ تمام فیلدهارو توی یک جدول بیارم و گیریم بعضی فیلدها خالی بموونه.! و با فرض اینکه حدود بیست فیلد داشته باشم که سه چهارتاش کلید خارجی باشه.! تا چند رکورد دیتابیس بدون مشکل کار میکنه.!؟
.
چندتا سوال عمومی..!
.
اگ همه چی دقیق مرتب باشه.! کلیدهای داخلی و خارجی.! من توی پراسیجرام حداکثر چندتا سلکت استفاده کم که بهینه باشه!؟ احتمالا مجبورم چندتا سلکت انجام بدم تا ب جواب نهایی برسم.! چندتا سلکت بیشتر خطرناکه.؟! چ دستوری خیلی سنگینه برای برنامه و تا جایی که میشه اصلا استفاده نکنم.!؟
.
با تشکر

mojtabamalaekeh
یک شنبه 14 دی 1393, 11:54 صبح
دو تا جدولی که پایین کاغذ کشیدی رو یک جدول در نظر بگیر. فرقشون اینه که توی حالت «تعداد» دوتا فیلد آخر عدد صحیح هستند و توی حالت «کیلوگرم» دوتا فیلد آخر ممکنه اعشاری باشن که با اعشاری تعریف کردن فیلدها، میشه هر دو حالت رو ذخیره کرد. چیزی که مهمه اینه که شما برچسب های روی فرم رو با توجه به واحد انتخاب شده درست به کاربر نشون بدی و این ارتباطی به بانک نداره و مربوط به UI میشه.
اگه با SQL Server کار میکنی نگران تعداد فیلد و تعداد select و هنگ کردن و .... نباش (پوستش خیلی کلفته و سرعتش خیلی بالاست).
اما خیلی خوبه که نگران بهینه بودن کد باشی و داده ی اضافی ذخیره نکنی و دستور اضافی برای ارتباط با بانک ننویسی.

پیشنهاد می کنم اون 8تا فیلد رو 4 تا در نظر بگیری فقط توی نمایش Label ها و محاسبات خودت ـ بر اساس وزن یا کیلوگرم ـ متفاوت رفتار کنی.
پس حالت وزن یا کیلوگرم هم باید توی جدول ذخیره بشه.

sajaaaaad
یک شنبه 14 دی 1393, 15:13 عصر
مرسی مجتبی جان. برعکس میخواستم قید بکنم که فیلدایی که نوشتم واسه نمونس وگرنه دقیقا با هم برابر نیستن و تعدادشون بیشتر از ایناست ولی روی کاغذ که نوشتم فقط میگی برابرن ولی برابر نیستن، تو حالت عددی.، یک تعداد نمونه انتخاب میشه و باید ثبت بشه نمونه برداری روی چندتا بود، وزن نمونه باید ثبت بشه، وزن یک عدد باید ثبت بشه، فیلدا خیلی متفاوته، نه اینکه نشه ترکیبشون کرد ولی میخواستم ی جوری تفکیک کنم که این مشکلات نباشه.
حالا هم یا باید کلا دوتا جدول کنم یاأم ک یکی کنم دیگه فیلدارو

mojtabamalaekeh
یک شنبه 14 دی 1393, 17:03 عصر
اوکی. خب حالا که اینجوره میتونی به تعداد لازم (الان دو تا) جدول فرزند داشته باشی
و باز هم بر اساس فیلد «حالت» تصمیم بگیری که کلید خارجی برای join شدن با کدومیک از جدول های فرزند باید مورد استفاده قرار بگیره.

سخت نیست ولی کدنویسیش بیشتر میشه. هم برای ارتباط جدول ها باید حالت رو بررسی کنی هم برای تنظیم رابط کاربری.
محض رضای خدا فیلدها رو یکی نکن :لبخند:

sajaaaaad
یک شنبه 14 دی 1393, 18:33 عصر
نمیشه دیگه.!؟ مثلا من غیر اینه که نهایت کاری که میتونم انجام بدم اینکه یک آی دیه فرزند یکجا ذخیره کنم.! حالا این آی دیه فرزند چطور میخواد به من بفهمونه که با کی باید جوین بشم.!؟ اصلا نمیشه شرط گذاشت روش فک کنم.!
.
نگا گیریم من توی جدول فرزند عدد دارم 1 تا 5 و توی فرزند کیلو دارم 100 تا 105.، حالا توی پدر من عدد 4 رو ذخیره میکنم.! اصلا چهار نه.! اسم جدولو ذخیره میکنم.! مگه میشه توی دستور سلکت.، بجای اسم جدول پارامتر فرستاد.!؟ قبول میکنه آیا.؟ من تست نکردم البته..!

mojtabamalaekeh
یک شنبه 14 دی 1393, 20:02 عصر
اگه بخوای یه select join بنویسی که معلومه نمیشه
ولی میشه اول یه رکورد از جدول پدر select کنی بعد با توجه به فیلد «حالت» که تعداد بوده یا کیلو، تصمیم بگیری با آیدی فرزند، به کدوم جدول وصل بشی.