PDA

View Full Version : این جدول را چطوری طراحی کنم ؟



csharpprogramer88
سه شنبه 25 تیر 1392, 19:09 عصر
سلام

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

ولی نمیدونم چطوری این ویژگی های که در هر کالا متفاوته را جدول تعریف کنم که برای Inset .... مشکل نباشه

لطفا راهنمایی کنین

با تشکر

sohil_ww
سه شنبه 25 تیر 1392, 19:35 عصر
جدایی مثل قیمت واحد محاسبه تعداد ....
فیلد ها رو 1 جوری بگو بتونیم کامل راهنمایت کنیم

چرا همرو تو 1 جدول قرار نمی دی برای مثال 10 تا کالا داری به نام های پفک،چیپس،لواشک،بستنی،آلوچ ه و...(دل روزه دارارو آب انداختم)
حالا برای مثال فیلد های که داری برای همه کالا ها (وزن،تاریخ خرید،تاریخ انقضا،تعداد خرید،تعداد موجود،تاریخ انقضا)
همه اینا رو می تونی تو 1 جدول تعریف کنی! ولی اگه 1 کم بیشتر در مورد سئوالت توضیح بدی بهتر می تونیم کمکت کنیم

ولی اگه نیاز به تعریف جدول دیگه هست با کلید خارجی ارتباط برقرار کن

csharpprogramer88
سه شنبه 25 تیر 1392, 19:45 عصر
فعلا قصد پیاده سازی ندارم و در حد یک سوال برای توجیح شدن خودم این تاپیک را زدم
فرض کنیم کالاهای ما گچ ، آجر، میله گرد، ماسه، سیمان،کاشی سرامیک ، یونولیت حتی زمین در پروژه های ساختمانی باشه که دل روزه دارارن هم آب نیفته
میدونیم که خصوصیات هر کالا با هم فرق داره مثلا میله گرد فک کنم شاخه باشه ولی ماسه تناژ ، سیمان بسته ای یا فله ای با هم فرق داره آجر به تعداد محاسبه بشه

البته یه سری ویژگی های مشتر مثل نام جایی که خریداری شده است کارخانه تولیدی قیمت، تعداد و ... هم در همه کالا ها مشترک هستند

دوستان یه پیشنهاد اصولی برای طراحی این دست دیتابیس ها بدهند

matrix-program
سه شنبه 25 تیر 1392, 22:32 عصر
میشه برای هر نوع کالا یه تیبل درست کرد بعد چند تا گرید ویو تو برنامه تون استفاده کنید هر کدو برای یه تیبل

csharpprogramer88
سه شنبه 25 تیر 1392, 22:46 عصر
با این روش میشه مشکل را حل کرد ولی از لحاظ طراحی و کار با نرم افزار خیلی سخت میشه user friendly نیست

sohil_ww
سه شنبه 25 تیر 1392, 22:50 عصر
با این روش میشه مشکل را حل کرد ولی از لحاظ طراحی و کار با نرم افزار خیلی سخت میشه

خوب برای ارتباط باید از جدول ها استفاده کنی متوجه نمی شم چرا سخت ؟
من 1 مطلب در مورد view تو Sql دیدم ولی دقیق مطالعه نکردم(بهتر بگم اصلا نفهمیدم) فکر کنم بتونی از view استفاده کنی(البته برای ارتباط با جدول نام کالا ها و خصوصیاتشون)

csharpprogramer88
سه شنبه 25 تیر 1392, 23:04 عصر
شما برای پیاده سازی اصولی این جور سیستم ها ایده ای داری؟

یا پروژه مشابه دیدی؟

مهدی هادیان2
چهارشنبه 26 تیر 1392, 00:00 صبح
بسم الله الرحمن الرحیم
با سلام

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

csharpprogramer88
چهارشنبه 26 تیر 1392, 12:03 عصر
بسم الله الرحمن الرحیم
با سلام

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

sohil_ww
چهارشنبه 26 تیر 1392, 12:42 عصر
دوست عزیز تو جدول گروه کالات برای مثال این فیلد ها رو قرار بده(آیدی،وزن(یا معیار های سنجش)،تعداد(شاخه،تناژ) و... و در آخرم 1 فیلد که با جدول اسامی کالا در ارتباط باشه و هم نوع کلید اصلی جدول اول باشه

hojjatshariffam
چهارشنبه 26 تیر 1392, 22:30 عصر
این که خیلی راحته
یه جدول به اسم کالا بساز که دارای فیلد هایی مثل آی دی ، نام کالا ، مقدار ، - کد واحد شمارش - و ..... هستش
بعد یه جدول دیگه بساز به عنوان واحد های شمارش که شامل حد اقل دو فیلد با نام های کد واحد شمارش و نام واحد شمارش باشه (حالا حسب نیاز فیلد های دیگه ای هم می تونه باشه مثلا ریز واحد - هر کیلو گرم 1000 گرم هستش- )
خب حالا وقتی که یه کالا به جدول کالا اضافه می کنی به فیلد کد واحد شمارش کد واحد شمارشی که از جدول دوم به عنوان کلید خارجی میاد رو درج می کنی
به همین راحتی می تونی کالایی داشته باشی مثل سیمان که از آن به مقدار 10 کیلو موجودی داری و در همین جدول کالایی داری مثل آجر به مقدار 30 عدد و کالایی هم داری مثل پارچه به مقدار 2.5 متر
با اینا مشکلت حل میشه؟

csharpprogramer88
چهارشنبه 26 تیر 1392, 22:51 عصر
این که خیلی راحته
یه جدول به اسم کالا بساز که دارای فیلد هایی مثل آی دی ، نام کالا ، مقدار ، - کد واحد شمارش - و ..... هستش
بعد یه جدول دیگه بساز به عنوان واحد های شمارش که شامل حد اقل دو فیلد با نام های کد واحد شمارش و نام واحد شمارش باشه (حالا حسب نیاز فیلد های دیگه ای هم می تونه باشه مثلا ریز واحد - هر کیلو گرم 1000 گرم هستش- )
خب حالا وقتی که یه کالا به جدول کالا اضافه می کنی به فیلد کد واحد شمارش کد واحد شمارشی که از جدول دوم به عنوان کلید خارجی میاد رو درج می کنی
به همین راحتی می تونی کالایی داشته باشی مثل سیمان که از آن به مقدار 10 کیلو موجودی داری و در همین جدول کالایی داری مثل آجر به مقدار 30 عدد و کالایی هم داری مثل پارچه به مقدار 2.5 متر
با اینا مشکلت حل میشه؟
دوست گرامی من هنوز چنین پروژه ای طراحی نکردم ولی توی خیلی از دیتابیس ها اینجور سناریو ها وجود داره که برام جالبه که در این جور سناریو ها راه حل اصولی چیه

من اینطور فهمیدم
یک جدول دارم که کالا هامو در آن ثبت میکنم (اسمشو بزاریم main_kala ) توی این جدول کالا هایی که ویژگی آنها یکسان هست(مثل نام کالا ، شرکت تولید کننده، و ....) را ثبت می کنیم . یه جدول هم داریم که اطلاعاتی که متغیر هست و برای هر کالایی ممکنه یه چیز باشه (مثل همون کد واحد شمارش و یا فیلد های دیگر) (که اسمشم میزاریم sub_kala )

حالا موقع درج یک کالای جدید ، فیلد های جدول main_kala را وارد میکنیم و موقع درج باید در جدولmain_kala یک فیلد کلید خارجی به جدول sub_kala بزاریم؟ که این کلید حارجی در جدول main_kala ، کلید اصلی در جدول sub_kala هست؟

mahdi_7610
چهارشنبه 26 تیر 1392, 23:24 عصر
من نظر دوستان را مطالعه نکردم
ولی شما میتونی برای هر نوع کالا یک جدول داشته باشی و خصوصیات هر کالا را توی اون جدول تعریف کنی.
این طوری توی Insert کردن مشکلی نداری .

اگه قصد داشتی کالا ها را به کاربر نشون بدی یا ازش گزارش گیری کنی ، بهترین راه استفاده از Viewها توی اسکیوال سرور هستش که میتونی از هر جدولی نوع کالا را انتخاب کنی و سپس از طریق View اونا را توی DataGridView نشون بدی یا توی گزارش گیری اونها را نشون بدی یا چاپ کنی.

موفق باشی

hojjatshariffam
چهارشنبه 26 تیر 1392, 23:24 عصر
دقیقا همینه
حالا با کلی جزئیات دیگه
اینم یه تصویر ساده از دو تا جدول طبق درخواست شما
107447

hojjatshariffam
چهارشنبه 26 تیر 1392, 23:46 عصر
اینم مقادیر درج شده در جدول
این دفعه حل شد؟
107448
اینم یه View از این دو تا جدول
107449
همون طوری که می بینی در نتیجه ویو کالایی داریم که واحدش با اونیکیا فرق می کنه

hojjatshariffam
چهارشنبه 26 تیر 1392, 23:51 عصر
حالا اگه یه جدول مثلا سفارش داشته باشی می تونی مثلا توش فیلد های کد سفارش ، کد کالا ف تاریخ و مقدار رو داشته باشی بدون اینکه نگران باشی که مقدارش کیلو هستش یا تن یا گرم و یا متر و ...
چون بر طبق واحدی که تو تعریف کالا براش تعریف شده خودش معلوم مشه که مقداری که سفارش داده می شه چه واحدی داره
یعنی اگه نوع کالای سفارشی سیمان باشه و مقدارش 12 ، تو نمایش سفارش 12 کیلو نشون داده میشه و اگه کد کالا 1453(یعنی پارچه) باشه و فیلد مقدار 30 ، اون موقع در نتیجه ویو 30 متر نشون داده میشه

hojjatshariffam
پنج شنبه 27 تیر 1392, 00:05 صبح
در ضمن گروه کالایی که شما می فرمائید برای گروه بندی کالا ها می باشد و ممکنه ربطی به اون مشخصه هایی که در هر کالا متفاوت و یا مشابه با بقیه هستش رو نداشته باشه.
مثلا آهن و میلگرد رو می تونید بزارید در گروه آن آلات ولی یکیش عددی باشه و اون یکی کیلویی
یا آهن و سیمان می تونن در گروه کالایی مصالح ساختمانی باشند ولی با خصوصیات متفاوت

ضمنا یه پیاده سازی پیچیده تر هم میشه برا این جور چیزا در نظر گرفت اونم اینه که اول خصوصیات کلی کالا (برای هر نوع کالایی ) در جدول کالا ثبت شود
بعد یه جدول دیگه با عنوان خصوصیات ریز کالا داشته باشی و یه جدول هم با عنوان (عناوین خصوصیات کالا)
در جدول عناوین خصوصیات کالا می تونی مثلا ثبت کنی (کد 1 ، تاریخ انقضا - کد 2 ، تاریخ تولید - کد 3 کارخانه سازنده - کد 4 ، پروانه بهداشتی - کد 5 ، وزن و ......)
حالا بعد از ثبت کالا بری تو جدول خصوصیات ریز کالا از جدول عناوین خصوصیات یکی از خصوصیات رو انتخاب کنید و براش مقدار بدید
مثلا کالایی با اسم تلوزیون براش کارخانه سازنده ثبت کنی
برای کالایی مثل تن ماهی تاریخ انقضا ثبت کنی و ....

csharpprogramer88
پنج شنبه 27 تیر 1392, 13:31 عصر
حالا اگه یه جدول مثلا سفارش داشته باشی می تونی مثلا توش فیلد های کد سفارش ، کد کالا ف تاریخ و مقدار رو داشته باشی بدون اینکه نگران باشی که مقدارش کیلو هستش یا تن یا گرم و یا متر و ...
چون بر طبق واحدی که تو تعریف کالا براش تعریف شده خودش معلوم مشه که مقداری که سفارش داده می شه چه واحدی داره
یعنی اگه نوع کالای سفارشی سیمان باشه و مقدارش 12 ، تو نمایش سفارش 12 کیلو نشون داده میشه و اگه کد کالا 1453(یعنی پارچه) باشه و فیلد مقدار 30 ، اون موقع در نتیجه ویو 30 متر نشون داده میشه

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

csharpprogramer88
پنج شنبه 27 تیر 1392, 14:54 عصر
من ی دیتابیس طراحی کردم و یک دستور درج هم نوشتم دوستان لطفا چک کنند ببینم مطلبو درست فهمیدم یا نه


با تشکر

hojjatshariffam
پنج شنبه 27 تیر 1392, 15:10 عصر
با این روش میتونیم به کاربر این امکان را بدیم که هر هرکالایی با هر نوع واحد شمارش یا فیلد های دیگری را خودش بتونه تعریف کنه و برنامه پویایی بهتری داره درسته؟
بله دقیقا
البته به روش زیر امکانات بیشتری رو می تونی داشته باشی

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

ضمنا یه پیاده سازی پیچیده تر هم میشه برا این جور چیزا در نظر گرفت اونم اینه که اول خصوصیات کلی کالا (برای هر نوع کالایی ) در جدول کالا ثبت شود
بعد یه جدول دیگه با عنوان خصوصیات ریز کالا داشته باشی و یه جدول هم با عنوان (عناوین خصوصیات کالا)
در جدول عناوین خصوصیات کالا می تونی مثلا ثبت کنی (کد 1 ، تاریخ انقضا - کد 2 ، تاریخ تولید - کد 3 کارخانه سازنده - کد 4 ، پروانه بهداشتی - کد 5 ، وزن و ......)
حالا بعد از ثبت کالا بری تو جدول خصوصیات ریز کالا از جدول عناوین خصوصیات یکی از خصوصیات رو انتخاب کنید و براش مقدار بدید
مثلا کالایی با اسم تلوزیون براش کارخانه سازنده ثبت کنی
برای کالایی مثل تن ماهی تاریخ انقضا ثبت کنی و ....

csharpprogramer88
پنج شنبه 27 تیر 1392, 15:16 عصر
آقا این کد را دانلود کردین؟ تست کردید؟

hojjatshariffam
پنج شنبه 27 تیر 1392, 15:26 عصر
من ی دیتابیس طراحی کردم و یک دستور درج هم نوشتم دوستان لطفا چک کنند ببینم مطلبو درست فهمیدم یا نه


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

hojjatshariffam
پنج شنبه 27 تیر 1392, 15:33 عصر
ضمنا شما در متد getmaxnumber فقط از یک جدول ماکزیمم گرفتین و هم در جدول کالا و هم جدول واحد ها همون عدد رو ثبت کردین . ولی این اشتباهه و هر جدول باید کلیدش از خودش گرفته شود
ضمن اینکه شما بعدا برای جدول واحد دوباره این عدد ماکزیمم رو جلوی واحد ذخیره کردین که هم یه اشتباه کوچک باعث شده است که عدد یکی بیشتر ذخیره شود و ضمنا منطق جداول شما این رو ایجاد کرده که برای هر کالا یک واحد و هر واحد مال یک کالا می باشد و ضمن اینکه یک دور را ایجاد کرده است
پیشنهاد می کنم مفاهیم پایگاه داده دوباره مطالعه شود.

csharpprogramer88
جمعه 28 تیر 1392, 08:55 صبح
ضمنا شما در متد getmaxnumber فقط از یک جدول ماکزیمم گرفتین و هم در جدول کالا و هم جدول واحد ها همون عدد رو ثبت کردین . ولی این اشتباهه و هر جدول باید کلیدش از خودش گرفته شود
ضمن اینکه شما بعدا برای جدول واحد دوباره این عدد ماکزیمم رو جلوی واحد ذخیره کردین که هم یه اشتباه کوچک باعث شده است که عدد یکی بیشتر ذخیره شود و ضمنا منطق جداول شما این رو ایجاد کرده که برای هر کالا یک واحد و هر واحد مال یک کالا می باشد و ضمن اینکه یک دور را ایجاد کرده است
پیشنهاد می کنم مفاهیم پایگاه داده دوباره مطالعه شود.

توی کدنویسی قبول دارم که در جدول دومی نباید دوباره تابع getmaxnumber را صدا میزدم

به نظر شما اصولی ترین روش برای کدنویسی این کار چیه؟

csharpprogramer88
جمعه 28 تیر 1392, 13:33 عصر
سلام
در این کد 2تا تغییر دادم :
1-من یه کومبو گذاشتم که اطلاعات واحد کالا را میخونم در کومبو درج میکنم کاربر با انتخاب آیتم های کومبو آیدی واحد کالا را بر میگردونه
2- در دستور درج دوم مقدار آیدی را اصلاح کردم که یکی به قبلی اضافه نکنه(از متغیر temp_id استفاده کردم)

لطفا کد منو بررسی کنین

csharpprogramer88
جمعه 28 تیر 1392, 18:08 عصر
5 نفر دانلود کردین ولی هیچکس جواب ندادید

hojjatshariffam
جمعه 28 تیر 1392, 20:58 عصر
سلام
در این کد 2تا تغییر دادم :
1-من یه کومبو گذاشتم که اطلاعات واحد کالا را میخونم در کومبو درج میکنم کاربر با انتخاب آیتم های کومبو آیدی واحد کالا را بر میگردونه
2- در دستور درج دوم مقدار آیدی را اصلاح کردم که یکی به قبلی اضافه نکنه(از متغیر temp_id استفاده کردم)

لطفا کد منو بررسی کنین
تقریبا درسته ولی شما نباید هر دو داده (کالا و یک واحد کالا) رو با یک کلیک ذخیره کنید
باید فرم اضافه کردن واحد کالا با فرم اضافه کردن کالا مجزا باشه
حالا می تونید جلوی کامبو باکس یک کلید بزارید تا اگه کاربر نیاز داشته باشه یک واحد جدید به دیتا بیس اضافه بشه(در فرم اضافه کردن واحد جدید)
شما در این فرم فقط کالا اضافه بکنید و با جدول واحد کاری نداشته باشید فقط از اون کد واحد کالا را از طریق کامبو باکس انتخاب کنید

csharpprogramer88
جمعه 28 تیر 1392, 21:15 عصر
تقریبا درسته ولی شما نباید هر دو داده (کالا و یک واحد کالا) رو با یک کلیک ذخیره کنید
باید فرم اضافه کردن واحد کالا با فرم اضافه کردن کالا مجزا باشه
حالا می تونید جلوی کامبو باکس یک کلید بزارید تا اگه کاربر نیاز داشته باشه یک واحد جدید به دیتا بیس اضافه بشه(در فرم اضافه کردن واحد جدید)
شما در این فرم فقط کالا اضافه بکنید و با جدول واحد کاری نداشته باشید فقط از اون کد واحد کالا را از طریق کامبو باکس انتخاب کنید

آخه من میخوام هم نام و مشخصات کالا را وارد کنم و هم واحد کالا این کار باید همزمان انجام بشه اگه بخوام برای واحدکالا هم فرم جدا داشته باشم چطوری کلید اصلی کد کالا را به جدول sub_kala اضافه کنم ؟


یه سوال مهم : آیا نیازی هست که من در جدول SUb_kala به جدول main_kala کلید خارجی داشته باشمم؟

مهرداد صفا
شنبه 29 تیر 1392, 01:13 صبح
با سلام.
به نظر من هم اگر تنوع و گستردگی بسیار زیادی در خصوصیات و مقادیر وجود دارد میتوانید در جدول اصلی:
نام/کد خصوصیت/کد واحد یا نوع مقدار/مقدار خصوصیت ...
را در نظر بگیرید و حتی در جدول واحدها یک فیلد برای ارتباط با مقادیر آماده مربوطه داشته باشید که در این صورت باید یک کد خاص برای مقادیر دستی رزرو شود و مثلا یک کد برای مقادیر آماده رنگها و .... برای مثال:
نام///کد خصوصیت///کد واحد///مقدار..............
تیر آهن///(کد خصوصیت) مقدار///(کد واحد) شاخه///100///(کد خصوصیت نوع کالا///(کد واحد)سایز تیر آهن///(کد مقدار) تیر آهن 18.....
سیمان///(کد خصوصیت)مقدار///(کد واحد) تن///10///(کد خصوصیت) مارک///(کد واحد) شرکتها///(کد مقدار) سپاهان///(کد خصوصیت مربوط به) قیمت هر واحد///(کد واحد) ریال///1000000........

f.beigirad
شنبه 29 تیر 1392, 01:35 صبح
درود بر شما دوستان گرامی


نفر دانلود کردین ولی هیچکس جواب ندادید به نظز من ضمیمه کردن یه دیتابیس کار بیهوده ایه.چرا که کمتر کسی پیدا میشه دانلود کنه و بیاد شما رو راهنمایی کنه.
به نظز من اگر شما دیاگرام دیتابیس ساخته شدتونو میذاشتید خیلی میتونست به جواب گرفتنتون کمک کنه.


آخه من میخوام هم نام و مشخصات کالا را وارد کنم .هم واحد کالا این کار باید همزمان انجام بشه کد واحد کالا باید ذخیره شه.

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


یه سوال مهم : آیا نیازی هست که من در جدول SUb_kala به جدول main_kala کلید خارجی داشته باشمم؟ به نظر من بله.ضروریه.


موفق و موید باشید.شب بخیر

Mohammadm
شنبه 29 تیر 1392, 02:25 صبح
سلام

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

ولی نمیدونم چطوری این ویژگی های که در هر کالا متفاوته را جدول تعریف کنم که برای Inset .... مشکل نباشه

لطفا راهنمایی کنین

با تشکر

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

csharpprogramer88
شنبه 29 تیر 1392, 08:57 صبح
دوستان عزیز لطف کنید و کد را دانلود کنید و نظر بدید

csharpprogramer88
شنبه 29 تیر 1392, 08:58 صبح
با سلام.
به نظر من هم اگر تنوع و گستردگی بسیار زیادی در خصوصیات و مقادیر وجود دارد میتوانید در جدول اصلی:
نام/کد خصوصیت/کد واحد یا نوع مقدار/مقدار خصوصیت ...
را در نظر بگیرید و حتی در جدول واحدها یک فیلد برای ارتباط با مقادیر آماده مربوطه داشته باشید که در این صورت باید یک کد خاص برای مقادیر دستی رزرو شود و مثلا یک کد برای مقادیر آماده رنگها و .... برای مثال:
نام///کد خصوصیت///کد واحد///مقدار..............
تیر آهن///(کد خصوصیت) مقدار///(کد واحد) شاخه///100///(کد خصوصیت نوع کالا///(کد واحد)سایز تیر آهن///(کد مقدار) تیر آهن 18.....
سیمان///(کد خصوصیت)مقدار///(کد واحد) تن///10///(کد خصوصیت) مارک///(کد واحد) شرکتها///(کد مقدار) سپاهان///(کد خصوصیت مربوط به) قیمت هر واحد///(کد واحد) ریال///1000000........

از جواب شما چیزی نفهمیدم یعنی باید چند تا جدول داشته باشم؟

csharpprogramer88
شنبه 29 تیر 1392, 12:16 عصر
انواع خصوصیات را در یک جدول قرار دهید
معمولا خصوصیات کالای مختلف زیادن مثلا کالایی مثل زمین ممکنه 5 تا ویژگی داشته باشه ولی کالایی مثل سیمان 10 تا یا بیشتر برای این شناور بودن ویژگی ها چه کار کنم؟


سپس برای هر کالا خصوصیات مورد نظر آنرا از جدول خصوصیات انتخاب میکنید و همراه با مقدار آن خصوصیات در جدول سوم قرار میدهید
یعنی یه جدول برای کالا داشته باشم و یک جدول برای مشخصات کالا ؟ کاربرد جدول سوم اینجا چیه؟


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

با تشکر

Mohammadm
شنبه 29 تیر 1392, 16:15 عصر
معمولا خصوصیات کالای مختلف زیادن مثلا کالایی مثل زمین ممکنه 5 تا ویژگی داشته باشه ولی کالایی مثل سیمان 10 تا یا بیشتر برای این شناور بودن ویژگی ها چه کار کنم؟

یعنی یه جدول برای کالا داشته باشم و یک جدول برای مشخصات کالا ؟ کاربرد جدول سوم اینجا چیه؟


لطفا درباره این بیشتر توضیح بدهید

با تشکر

شرح مختصری از جداول

1- جدول گروه کالا: IDg=کد گروه کالا NameG=نام گروه کالا

2-جدول خصوصیات کالا : IDkh=کد خصوصیات کالا NAmekh=نام خصوصیات کالا Vahed=واحد شمارش

در جدول خصوصیات میتوانید همه ی خصوصیات انواع کالا رو بنویسید و نوع واحد شمارش رو میتونید nvarchar تعیین کنید
برای مثال خصوصیت یکی از کالا هارو به عنوان یک رکورد میتوانیم به صورت زیر درج کنیم
یکی از خصوصیتهای ساختمانهای مسکونی میتواند تعداد اتاق باشد که محتوای آن در جدول -> IDkh=1 تعداد اتاق =Namekh عدد=Vahed

برای تاکیید: شما باید خصوصیات تمام کالا را در این قسمت وارد نمایید

3-جدول کالا : ID= کد کالا IDg= کد گروه کالا

از آنجایی که هر کالا میتواند خصوصیات مختص خودش را داشته باشد بنابراین جدول دیگری برای خود به صورت زیر طراحی میکنیم

4- جدول موجودیت و خصوصیات هر یک از کالاهای مربوطه: IDmk=کد موجودیت کالاس اعضاء ID=کد کالا IDkh=کد خصوصیت کالا count=تعداد

کاربرد جدول سومی که سوال فرمودید مربوط به جدول شماره ی 4 است که نوشتم(جدول موجودیت و خصوصیات هر یک از کالاهای مربوطه) برای درج رکورد در این جدول کدکالا را از جدول شماره 3 (جدول کالا) و کد خصوصیت کالا را از جدول شماره 2(جدول خصوصیات کالا) انتخاب نمایید و تعداد را بر اساس واحد شمارش از جدول شماره 2 درج میکنیم

ارتباطات بین کلیدهای اصلی و خارجی در جدولهای بالا کاملا واضحه و نیاز به توضیح نیست

csharpprogramer88
شنبه 29 تیر 1392, 16:46 عصر
شرح مختصری از جداول

1- جدول گروه کالا: IDg=کد گروه کالا NameG=نام گروه کالا

2-جدول خصوصیات کالا : IDkh=کد خصوصیات کالا NAmekh=نام خصوصیات کالا Vahed=واحد شمارش

در جدول خصوصیات میتوانید همه ی خصوصیات انواع کالا رو بنویسید و نوع واحد شمارش رو میتونید nvarchar تعیین کنید
برای مثال خصوصیت یکی از کالا هارو به عنوان یک رکورد میتوانیم به صورت زیر درج کنیم
یکی از خصوصیتهای ساختمانهای مسکونی میتواند تعداد اتاق باشد که محتوای آن در جدول -> IDkh=1 تعداد اتاق =Namekh عدد=Vahed

برای تاکیید: شما باید خصوصیات تمام کالا را در این قسمت وارد نمایید

3-جدول کالا : ID= کد کالا IDg= کد گروه کالا

از آنجایی که هر کالا میتواند خصوصیات مختص خودش را داشته باشد بنابراین جدول دیگری برای خود به صورت زیر طراحی میکنیم

4- جدول موجودیت و خصوصیات هر یک از کالاهای مربوطه: IDmk=کد موجودیت کالاس اعضاء ID=کد کالا IDkh=کد خصوصیت کالا count=تعداد

کاربرد جدول سومی که سوال فرمودید مربوط به جدول شماره ی 4 است که نوشتم(جدول موجودیت و خصوصیات هر یک از کالاهای مربوطه) برای درج رکورد در این جدول کدکالا را از جدول شماره 3 (جدول کالا) و کد خصوصیت کالا را از جدول شماره 2(جدول خصوصیات کالا) انتخاب نمایید و تعداد را بر اساس واحد شمارش از جدول شماره 2 درج میکنیم

ارتباطات بین کلیدهای اصلی و خارجی در جدولهای بالا کاملا واضحه و نیاز به توضیح نیست



3-جدول کالا : ID= کد کالا IDg= کد گروه کالا
بازم جدول شماره 3 برایم گنگه لطفا بیشتر توضیح بدید

csharpprogramer88
شنبه 29 تیر 1392, 17:29 عصر
107597لطفا ببینید تا اینجا درست فهمیدم؟

mahan.2002
شنبه 29 تیر 1392, 17:53 عصر
با سلام
شما به ازاء هر نوع کالا باید یک جدول طراحی کنید .. مثال میزنم مثلا شما برای یک کالا مانند خانه باید یک جدول جدا طراحی کنید و برای کالا دیگه مثل ماشین یک جدول با فیلد های مخصوص اون یا برای موبایل باید همین طور ولی میتونید برای کالایی که از نظر نوع یکی هستند مثلا یک نوع مدل گوشی با مدل دیگر اینا رو میتونید توی همون جدول مربوط به گوشی ذخیره کنید یا برند مختلف به همین صورت ..
ولی بنظر تون میشه یک ماشین رو با خونه و یک موبایل که هر کدوم فیلد و مشخصات خاص خودشونو دارد در یک جدول بیاریم ؟؟!! مثلا تعداد سرنشنین با تعداد اتاق ها یکی کرد ؟!!
پس به این نتیجه میرسیم باید به تعداد نوع کالا ها یک جدول طراحی کرد..

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

مثال : برای هر کالا جدول مخصوص به خود رو طراحی میکنیم ..
جدول کالا 1 ( کد کالا ، نام کالا ، قیمت، ... )
جدول کالا 2 ( کد کالا ، نام کالا ، ...، ...)
جدول کالا 3 ( کد کالا ، نام کالا ، ...)
....
...
به این صورت
حالا جدول مربوط به فروش
جدول فروش ( کد فروش ، کد فاکتور ( خارجی ) ، کد کالا 1 ( خارجی )، کد کالا 2 ( خارجی ) ، کد کالا 3 ( خارجی ) ، ...، قیمت ، تعداد، ..)
شما باید به تعداد جداول تون در جدول فروش کلید خارجی تعریف کنید ... و همچنین در جدول فیلد های مشترک مربوط فروش رو تعریف کرده ماننده قیمت و.... ولی مثلا بعضی از کالا تون فیلد های خاص دارند که باید اون هارو
در جدول فروش باز تعریف کنید مثلا برای واحد سیمان کیلو دارید باید فیلد وزن تعریف کنید که این فیلد برای کالاهایی که چنین فیلدی ندارد باید نال ذخیره کنید
جدول فاکتور ( کد فاکتور ، تاریخ ، قیمت نهایی ، تخفیف کل، ... )
حتی میتوانید جدولی برای موجودی انبار در نظر بگیرید .. که مشابه فیلد های جدول فروش میباشد.

موفق باشید.

csharpprogramer88
شنبه 29 تیر 1392, 18:05 عصر
یه ایراد اساسی روش شما اینه؟
فرض من الان 10 کالا تعریف کردم مشتری اومد و 50 نوع کالا داشت اونوقت چی؟ به من محتاج میشه که آقا من 40 تا کالا دیگه را چطور طراحی کنم؟


یا فرض من اگه 1000 کالا داشته باشم بخوام هر 1000 تا کالا را خودم ثبت کنم خیلی مشکل میشه

csharpprogramer88
شنبه 29 تیر 1392, 18:08 عصر
یه ایراد اساسی روش شما اینه؟
فرض من الان 10 کالا تعریف کردم مشتری اومد و 50 نوع کالا داشت اونوقت چی؟ به من محتاج میشه که آقا من 40 تا کالا دیگه را چطور طراحی کنم؟


یا فرض من اگه 1000 کالا داشته باشم بخوام هر 1000 تا کالا را خودم ثبت کنم خیلی مشکل میشه

درباره جدول فروش بیشتر توضیح بدید

من اینجور فهمیدم اگه 10 کالای ثبتی داشتیم و بخواهیم یک گالا را بفروشیم باید 9 تا فیلد خالی داشته باشیم یکی پر درسته؟

mahan.2002
شنبه 29 تیر 1392, 18:11 عصر
درباره جدول فروش بیشتر توضیح بدید

من اینجور فهمیدم اگه 10 کالای ثبتی داشتیم و بخواهیم یک گالا را بفروشیم باید 9 تا فیلد خالی داشته باشیم یکی پر درسته؟

افرین درسته

mahan.2002
شنبه 29 تیر 1392, 18:20 عصر
یه ایراد اساسی روش شما اینه؟
فرض من الان 10 کالا تعریف کردم مشتری اومد و 50 نوع کالا داشت اونوقت چی؟ به من محتاج میشه که آقا من 40 تا کالا دیگه را چطور طراحی کنم؟


یا فرض من اگه 1000 کالا داشته باشم بخوام هر 1000 تا کالا را خودم ثبت کنم خیلی مشکل میشه

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

csharpprogramer88
شنبه 29 تیر 1392, 18:20 عصر
افرین درسته

به نظر شما این روش روش بهینه هست؟یا فقط جواب میده

mahan.2002
شنبه 29 تیر 1392, 18:34 عصر
یه نکته ای که بنظرم میرسه که در اصلاح اون باید بگم در پست اولم قبل گفته بود در جدول فروش فیلد های خاص هر کالا .. این مورد اگر در مشخصات خود کالا میتوان اون رو اورد لازم نیست در جدول فروش اون رو دوباره درج کرد مثالیم که اورده شد در مورد سیمان بود اگه میشه اون رو در جدول خودش ثبت کرد دیگه لازم نداره فیلد کیلو در جدول کالا اضافه کنید .. فقط زمانی لازمه که نوع فروش این کالا از نظر مثالا مقدار فرق کنه ..
یه نکته دیگه هین جا بذهنم رسید یه مقدار باید روش دقت کرد اون هم اینکه زمانی که ما مثلا یک کالایی رو با مقدار 10 تن خریداری کردیم .. در زمان فروش ممکنه این کالا تقسیم به 10 تا 1 تن بشود ...
یک مقدار باید روی این دقت کرد ..

mahan.2002
شنبه 29 تیر 1392, 18:42 عصر
به نظر شما این روش روش بهینه هست؟یا فقط جواب میده
بهینگی باید دید از چه نظر تعریف می کنید .. از نظر سرعت ، حجم دیتابیس ، یا عملکرد استاندارد ، یا مطمئن بودن ، و یا راحتی کار برنامه نویس با اون ...
در طراحی این سعی شده به تمامی نکات بالا توجه بشه ... در بهینگی باید حداقل پیچیدگی رو هم در نظر گرفت .. که برنامه نویس با حداقل پیچیدگی بتونه بهترین و سریع ترین حالات برنامه بنویسه .. عیب و ایراد احتمالی رو پیدا کنه .. بهینه شاخصه های دیگه هم داره ..
که بعد شاید بیان کنم ..

mahan.2002
شنبه 29 تیر 1392, 18:57 عصر
برای اون مورد مثال 10 تن هم
میتونید در جدول فروش کد اون کالا رو بیارید و همین طور که قبلا هم گفتم در فیلد کیلو مورد نظر رو در اون ثبت کنید
مثال: جدول سیمان ( 1024، سیمان یزد ، 10،...)
جدول فروش ( کد فروش ، کد کالا ، کیلو ، ... )
------------>( 100070، 1024، 1،...)
-----------> ( 100172، 1024، 1، ...)
به این ترتیب میشه این کالا رو هم میشه به تعداد دفعات بالاتر تقسیم کرد و در جدول فروش اونو ثبت کرد..

veniz2008
شنبه 29 تیر 1392, 18:58 عصر
سلام.
طاووسی از نظرات رو میشه در این تاپیک دید!.
من نرسیدم نظرات همه دوستان رو بخونم.
بعضی ها گفته بودن برای هر کالا یک جدول جداگانه در نظر بگیریم.
امروز 10 تا کالا داریم، فردا مشتری میگه 10 تا کالای جدید داریم. تکلیف چیه؟. بازم باید بریم جدول طراحی کنیم؟ :گریه:
این روش قطعا رد میشه.
بعضی از دوستان، گفتن که فیلدهای خالی زیادی برای هر رکورد داشته باشیم. این روش هم اشتباه هست چراکه باعث ایجاد فضای خالی زیادی بین صفحات موجود در جدول میشه.
یکی از دوستان گفته بودن که برای واحد کالا ( و کلا مقادیری که متمایز هست) جدول جداگانه بگیریم. این روش مناسب هست. مثلا برای واحد یک کالا، ما یک جدول برای واحدها در نظر میگیریم که حداقل دو فیلد کد واحد(کلید) و نام واحد رو درج میکنیم ( 1 کیلوگرم ، 2 متر ، 3 شاخه و ...). حالا در جدول کالا، کد واحد شمارش رو درج میکنیم.(یعنی کلید اصلی جدول واحدها بعنوان کلید خارجی در جدول کالا ذکر میشه). کلا برای مواردی که متغیر هستن، برای هر مورد باید یک جدول جداگانه ایجاد کنید.

hojjatshariffam
شنبه 29 تیر 1392, 19:01 عصر
اینم مقادیر درج شده در جدول
این دفعه حل شد؟
107448
اینم یه View از این دو تا جدول
107449
همون طوری که می بینی در نتیجه ویو کالایی داریم که واحدش با اونیکیا فرق می کنه

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


آخه من میخوام هم نام و مشخصات کالا را وارد کنم و هم واحد کالا این کار باید همزمان انجام بشه اگه بخوام برای واحدکالا هم فرم جدا داشته باشم چطوری کلید اصلی کد کالا را به جدول sub_kala اضافه کنم ؟


یه سوال مهم : آیا نیازی هست که من در جدول SUb_kala به جدول main_kala کلید خارجی داشته باشمم؟
اصلا نیازی نیست که کد کالا در جدول دوم ثبت شود چون اگه ثبت شود دیگه رابطه یه جوری یک به یک میشه نه یک به چند. فقط کد جدول دوم میاد به جدول اول

درود بر شما دوستان گرامی

به نظز من ضمیمه کردن یه دیتابیس کار بیهوده ایه.چرا که کمتر کسی پیدا میشه دانلود کنه و بیاد شما رو راهنمایی کنه.
به نظز من اگر شما دیاگرام دیتابیس ساخته شدتونو میذاشتید خیلی میتونست به جواب گرفتنتون کمک کنه.

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

به نظر من بله.ضروریه.


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

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


معمولا خصوصیات کالای مختلف زیادن مثلا کالایی مثل زمین ممکنه 5 تا ویژگی داشته باشه ولی کالایی مثل سیمان 10 تا یا بیشتر برای این شناور بودن ویژگی ها چه کار کنم؟

یعنی یه جدول برای کالا داشته باشم و یک جدول برای مشخصات کالا ؟ کاربرد جدول سوم اینجا چیه؟


لطفا درباره این بیشتر توضیح بدهید

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

یه ایراد اساسی روش شما اینه؟
فرض من الان 10 کالا تعریف کردم مشتری اومد و 50 نوع کالا داشت اونوقت چی؟ به من محتاج میشه که آقا من 40 تا کالا دیگه را چطور طراحی کنم؟


یا فرض من اگه 1000 کالا داشته باشم بخوام هر 1000 تا کالا را خودم ثبت کنم خیلی مشکل میشه
ببین قرار نیست برای هر کالا یک خصوصیت داشته باشی بلکه یک نوع خصوصیت می تونه برای 100 کالا تعیین بشه
قبلا هم توصیه کردم که شما بهتر است مفاهیم پایگاه داده رو یک بار دیگر مرور کنید و یا اگر رشتتون کامپیوتر نیست یک مقاله در این رابطه پیدا کنید و بخونید.
موفق باشید

mahan.2002
شنبه 29 تیر 1392, 19:18 عصر
سلام.
طاووسی از نظرات رو میشه در این تاپیک دید!.
من نرسیدم نظرات همه دوستان رو بخونم.
بعضی ها گفته بودن برای هر کالا یک جدول جداگانه در نظر بگیریم.
امروز 10 تا کالا داریم، فردا مشتری میگه 10 تا کالای جدید داریم. تکلیف چیه؟. بازم باید بریم جدول طراحی کنیم؟ :گریه:
این روش قطعا رد میشه.
بعضی از دوستان، گفتن که فیلدهای خالی زیادی برای هر رکورد داشته باشیم. این روش هم اشتباه هست چراکه باعث ایجاد فضای خالی زیادی بین صفحات موجود در جدول میشه.
یکی از دوستان گفته بودن که برای واحد کالا ( و کلا مقادیری که متمایز هست) جدول جداگانه بگیریم. این روش مناسب هست. مثلا برای واحد یک کالا، ما یک جدول برای واحدها در نظر میگیریم که حداقل دو فیلد کد واحد(کلید) و نام واحد رو درج میکنیم ( 1 کیلوگرم ، 2 متر ، 3 شاخه و ...). حالا در جدول کالا، کد واحد شمارش رو درج میکنیم.(یعنی کلید اصلی جدول واحدها بعنوان کلید خارجی در جدول کالا ذکر میشه). کلا برای مواردی که متغیر هستن، برای هر مورد باید یک جدول جداگانه ایجاد کنید.

عزیزم شما مطلب رو کامل بخونید .. بعد متوجه میشید
من یه سوال دارم شما به عنوان مثال چطور یه خونه رو با یک ماشین فیلداشونو یکی میگیرد
البته میشه پنجره های خونه رو با چراغ های ماشین یکی گرفت !! یا مثلا لامپ های خونه رو با چراغای ماشین !! البته رادیوتر ماشینو شاید با موتور خونه!!
نمیدونم دوستان به طراحی جدید در این مورد رسید یه مقاله در این رابطه چاپ کنند ..
مثلا ما کالایی که 500 فیلد داره رو با کالا که 50 فیلد دار ه چطور یتونیم یکی کنیم ...؟؟!! بعد ضمنا بقیه فیلد ها فضایی خالی ایجاد نمیکنه؟؟!!
موفق باشید .. در ضمن اپلکشین با اتصال به بانک اطلاعاتی میتونه جداول انلاین در دیتابیس ایجاد کنه.. لازم نیست برنامه نویس یک به یک برای هر جدول اونو تک تک وارد کنه...
این خودش قابلیت های بانک اطلاعتیه که حتما لازم نیست شما به صورت دستی جدول درست کنید..

hojjatshariffam
شنبه 29 تیر 1392, 19:29 عصر
سلام.
طاووسی از نظرات رو میشه در این تاپیک دید!.
من نرسیدم نظرات همه دوستان رو بخونم.
بعضی ها گفته بودن برای هر کالا یک جدول جداگانه در نظر بگیریم.
امروز 10 تا کالا داریم، فردا مشتری میگه 10 تا کالای جدید داریم. تکلیف چیه؟. بازم باید بریم جدول طراحی کنیم؟ :گریه:
این روش قطعا رد میشه.
دوست عزیز من کل پست ها رو از اول دارم پی گیری می کنم بله دو سه نفر گفتن که برا ی هر نوع کالا یه جدول پس برای 10 نوع کالا 10 جدول درست کنید ولی منطقشون برای توجیح این مطلب صحیح نیست ،و با خوندن مطالب ایشان برخی از دوستان برداشت اشتباه می کنند و بعد در مورد همون برداشت اشتباه سئوال می کنند و بقیه هم فکر می کنند که ...
اگر از روش به قول دوستمون داینامیک در داینامیک استفاده کنید هیچ فیلدی خالی نمی ماند و برنامه کاملا فلکسبل می شود ، منتها باید در تعریف پروژه این نیاز دیده شود که لزومی به پیاده سازی این روش می باشد
فقط توضیح این مساله برای کسی که ارتباط یک به چند و چند به چند و یک به یک رو فعلا تشخیص نمیده یه کم سخته
مثالش مثل اینه که یکی ندونه اصلا گیر بکس واسه چیه و کاربرد و کاراییش چیه بعد ما بیایم براش بگیم که اگه چرخ دنده دنده 2 دنده هاش موب بود این طوری میشد.
یا مثلا به کسی که نمی دونه ولتاژ چیه بیایم KVL و KCL رو توضیح بدیم یا بگیم که ساختار دیود چیه و ......



کلا برای مواردی که متغیر هستن، برای هر مورد باید یک جدول جداگانه ایجاد کنید.
خب برای اینکه برای همه موارد متغییر یه جدول جداگانه نسازیم میایم جدواولمونو می کنیم سه
جدول اول خود کالا
جدول دوم خصوصیات کالا
جدول سوم برای درج خصوصیات کالا
مثلا کالای شماره یک رنگ داره مقدارشم قرمزه
کالای شماره دو مزه داره مزشم ترشه
کالای شماره سه هم مزه داره و مزش تلخه
کالای شماره 4 ابعاد داره که 15*23 می باشد
کالای شماره 5 هم ابعاد داره هم رنگ
همه اینا در جدول سوم ذخیره میشه (به عنوان یک ردیف نه فیلد)
یعنی در جدول سوم هم کد خصوصیات درج میشه و هم کد کالا و یک مقدار (یعنی این خصوصیت مربوط میشه به فلان کالاو فلان خصوصیت که مقدارشم مثلا x می باشد)
جدول سوم (کالای یک ، خصوصیت رنگ ، مقدار قرمز) / (کالای یک ، خصوصیت ابعاد ، مقدار 10*20) / (کالای دو ، خصوصیت رنگ ، آبی) / (کالای 3 ، خصوصیت ابعاد ، مقدار 20*40)/(کالای 3 ، خصوصیت واحد کالا ، مقدار کیلو)
و هزاران فیلد دیگر.....
جدول کالا می تونه 10000 تا ردیف داشته باشه
جدول نوع خصوصیات می تونه 1000 تا ردیف داشته باشه
جدول خصوصیات می تونه 1000000 تا ردیف داشته باشه
می تونی یک ملیون تا کالا تعریف کنی که هر کدومش حتی هزار تا خصوصیت داشته باشه و تو همون جدول کالا ،کالایی داشته باشی که براش خصوصیتی ثبت نشده باشه
هیچ فیلد خالی هم نداریم
هیچ محدودیتی هم در تعداد کالا یا خصوصیات ندارم

csharpprogramer88
شنبه 29 تیر 1392, 19:32 عصر
ببینید من براتون نمونه جدول گزاشتم براتون ویو هم درست کردم ولی شما توجه نمی کنید به گفته های دوستان و فقط گفته خودتونو می کین


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

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

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


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

ببین قرار نیست برای هر کالا یک خصوصیت داشته باشی بلکه یک نوع خصوصیت می تونه برای 100 کالا تعیین بشه
قبلا هم توصیه کردم که شما بهتر است مفاهیم پایگاه داده رو یک بار دیگر مرور کنید و یا اگر رشتتون کامپیوتر نیست یک مقاله در این رابطه پیدا کنید و بخونید.
موفق باشید

از توجه شما ممنونم من یک کدبا توضیحات شما و دوستان نوشتم لطفا به این دو سوال جواب بدید ( کد در پست 25 گذاشتم)

1- آیا این کد بیانگر این است که من مفهوم حرف دوستان را فهمیدم یا نه
2- یکی از دوستان گفته این روش کد نویسی خوب نیست لطفا الگوریتمی بفرمایید چطور اون کد را تغییر بدم؟

hojjatshariffam
شنبه 29 تیر 1392, 19:39 عصر
عزیزم شما مطلب رو کامل بخونید .. بعد متوجه میشید
من یه سوال دارم شما به عنوان مثال چطور یه خونه رو با یک ماشین فیلداشونو یکی میگیرد
البته میشه پنجره های خونه رو با چراغ های ماشین یکی گرفت !! یا مثلا لامپ های خونه رو با چراغای ماشین !! البته رادیوتر ماشینو شاید با موتور خونه!!
نمیدونم دوستان به طراحی جدید در این مورد رسید یه مقاله در این رابطه چاپ کنند ..
مثلا ما کالایی که 500 فیلد داره رو با کالا که 50 فیلد دار ه چطور یتونیم یکی کنیم ...؟؟!! بعد ضمنا بقیه فیلد ها فضایی خالی ایجاد نمیکنه؟؟!!
موفق باشید .. در ضمن اپلکشین با اتصال به بانک اطلاعاتی میتونه جداول انلاین در دیتابیس ایجاد کنه.. لازم نیست برنامه نویس یک به یک برای هر جدول اونو تک تک وارد کنه...
این خودش قابلیت های بانک اطلاعتیه که حتما لازم نیست شما به صورت دستی جدول درست کنید..
ببین دوست عزی با روش سه جدول که دوستمون Mohammadm http://barnamenevis.org/images/buttons/viewpost-left.png (http://barnamenevis.org/showthread.php?p=1825343#post1825343) پیشنهاد کردند و منم در پست قبل بیشتر توضیحش دادم میشه همچین کاری
خود شما اگه بیشتر دقت کنید می بینید که میشه

csharpprogramer88
شنبه 29 تیر 1392, 19:42 عصر
.

یکی از دوستان گفته بودن که برای واحد کالا ( و کلا مقادیری که متمایز هست) جدول جداگانه بگیریم. این روش مناسب هست. مثلا برای واحد یک کالا، ما یک جدول برای واحدها در نظر میگیریم که حداقل دو فیلد کد واحد(کلید) و نام واحد رو درج میکنیم ( 1 کیلوگرم ، 2 متر ، 3 شاخه و ...). حالا در جدول کالا، کد واحد شمارش رو درج میکنیم.(یعنی کلید اصلی جدول واحدها بعنوان کلید خارجی در جدول کالا ذکر میشه). کلا برای مواردی که متغیر هستن، برای هر مورد باید یک جدول جداگانه ایجاد کنید.

من دقیقا با این روش موافقم فکر میکنم بهینه ترین روش ممکن همین باشه

دوستان لطف کنین و یک الگوریتم برای کد نویسی این روش بگید

دوستان گرامی توجه کنن این سناریو توی اکثر برنامه ها کاربرد داره مثل برنامه های حسابداری ،انبارداری و ...... پس نیاز خیلی از اعضای سایت میتونه باشه

اگر مشارکت دوستان بیشتر بشه مطمئنا به درد همه اعضا میخوره


بازم از همه دوستان که مشارکت کردن تشکر میکنم

hojjatshariffam
شنبه 29 تیر 1392, 19:44 عصر
از توجه شما ممنونم من یک کدبا توضیحات شما و دوستان نوشتم لطفا به این دو سوال جواب بدید ( کد در پست 25 گذاشتم)

1- آیا این کد بیانگر این است که من مفهوم حرف دوستان را فهمیدم یا نه
2- یکی از دوستان گفته این روش کد نویسی خوب نیست لطفا الگوریتمی بفرمایید چطور اون کد را تغییر بدم؟
بله همون کد شمارو دانلود کردم و در موردشم براتون توضیح دادم
گفتم که نباید در هر دو جدول همزمان ذخیره بکنید و یک باتن ایجاد واحد جدید (قبلا بهم گفته بودم کلید) جلوی کامبو بزارید و اگه واحد مورد نظر در لیست نبود برید در فرم دوم واحد جدید رو اضافه کنید
ضمنا گفتم که لزومی نداره که در جدول دوم کلید جدول اول ذخیره شود ، و فقط کلید جدول دوم میره تو جدول اول .
روش سه جدول در حالت پیشرفته است ، شما اینو فعلا کامل درک کنید (یا پیاده سازی کنید تابهتر درک کنید) بعد روش سه جدول رو بهتر می تونید بفهمید که چیه

hojjatshariffam
شنبه 29 تیر 1392, 19:51 عصر
من دقیقا با این روش موافقم فکر میکنم بهینه ترین روش ممکن همین باشه

دوستان لطف کنین و یک الگوریتم برای کد نویسی این روش بگید

دوستان گرامی توجه کنن این سناریو توی اکثر برنامه ها کاربرد داره مثل برنامه های حسابداری ،انبارداری و ...... پس نیاز خیلی از اعضای سایت میتونه باشه

اگر مشارکت دوستان بیشتر بشه مطمئنا به درد همه اعضا میخوره


بازم از همه دوستان که مشارکت کردن تشکر میکنم
من هم این روش رو و هم روش سه جدول رو در چند تا از پروژه ها استفاده کردم و کاملا هم باهاشون آشنام
روش اول که خیلی سادست و اگه بیشتر دقت کنید و به توضیحات من و دوستان دیگه با دقت توجه بکنید می تونید پیاده سازیش کنید
روش سه جدول که یکمی پیاده سازیش پیچیده تره یکم زمانبر و کدش هم زیاده ولی اونم کاری نداره
هر کسی پیاده سازی کنه تو همون مثال پست 25 که می تونه براش ایده باشه می تونم راهنمائیش کنم

Mohammadm
شنبه 29 تیر 1392, 19:52 عصر
بازم جدول شماره 3 برایم گنگه لطفا بیشتر توضیح بدید
مهمترین مشکل شما در طراحی دیتابیس وجود کالاهای مختلف با ویژگیهای مختلف میباشد
همه ی ما میدونیم با توجه به قوانین نرمال سازی ایجاد جدول کالا با ویژگیهای زیاد به گونه ای که برای تمامی کالاها را در بر گیرد درست نیست(افزونگی)
روشهای دیگری رو هم دوستان گفتند که حتما دلیل خاص خودشون رودارند مانند ایجاد جدول برای هر کالا را من پیشنهاد نمیکنم
اما جواب سوال شما

طراحی جدولها با توجه به تصاویر ارسال شده کاملا درسته(پست شماره 37)

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

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

این دو جدول هیچ ارتباطی باهم ندارند و برای تطبیق این ویژگیها با کالاهای مورد نظر از جدول شماره 4 استفاده میکنیم

برای تطبیق ویژگیها با کالاها در جدول شماره 4 به این صورت عمل میکنیم(این جدول درواقع محل نگهداری ویژگیهای هر یک از کالا میباشد)

کد کالا از جدول کالا به شماره 3(معرف خود کالاست) - کد ویژگی کالا از جدول شماره2(معرف ویژگی) و تعداد کالا(count)
به این ترتیب دیگر نیازی به ایجاد جدول برای هر یک ازکالاها نداریم و همچنین هر یک از کالا ها ویژگیهای مخصوص به خود را دارد و هیچ فیلد اضافی برای هیچ یک از کالا ایجاد نمیشود

hojjatshariffam
شنبه 29 تیر 1392, 20:10 عصر
مهمترین مشکل شما در طراحی دیتابیس وجود کالاهای مختلف با ویژگیهای مختلف میباشد
همه ی ما میدونیم با توجه به قوانین نرمال سازی ایجاد جدول کالا با ویژگیهای زیاد به گونه ای که برای تمامی کالاها را در بر گیرد درست نیست(افزونگی)
روشهای دیگری رو هم دوستان گفتند که حتما دلیل خاص خودشون رودارند مانند ایجاد جدول برای هر کالا را من پیشنهاد نمیکنم
اما جواب سوال شما

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

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

این دو جدول هیچ ارتباطی باهم ندارند و برای تطبیق این ویژگیها با کالاهای مورد نظر از جدول شماره 4 استفاده میکنیم

برای تطبیق ویژگیها با کالاها در جدول شماره 4 به این صورت عمل میکنیم(این جدول درواقع محل نگهداری ویژگیهای هر یک از کالا میباشد)

کد کالا از جدول کالا به شماره 3(معرف خود کالاست) - کد ویژگی کالا از جدول شماره2(معرف ویژگی) و تعداد کالا(count)
به این ترتیب دیگر نیازی به ایجاد جدول برای هر یک ازکالاها نداریم و همچنین هر یک از کالا ها ویژگیهای مخصوص به خود را دارد و هیچ فیلد اضافی برای هیچ یک از کالا ایجاد نمیشود
اینم یه دیاگرام از توضیحات دوستمون
107613

hojjatshariffam
شنبه 29 تیر 1392, 20:17 عصر
اینم یه دیاگرام از توضیحات دوستمون
107613
حالا اگه خواستین از این کالا سفارش بدین فقط کافیه یه جدول بسازی و توش کد کالا بزارید کد شخص و مقدار سفارش (یا مقدرا خرید)
کاری با واحد و یا خصوصیات کالا نداشته باشید
واحد ها و خصوصیات رو می تونید در ویو ها و نمایش اونها مدیریت کنید.

veniz2008
شنبه 29 تیر 1392, 21:39 عصر
عزیزم شما مطلب رو کامل بخونید .. بعد متوجه میشید
من یه سوال دارم شما به عنوان مثال چطور یه خونه رو با یک ماشین فیلداشونو یکی میگیرد
کی این حرف رو زد؟
ما داریم بر روی موجودیت حرف میزنیم. کالاهایی مثل کاشی و سیمان و ... یک موجودیت به نام کالا رو تشکیل میدن. خونه چه ربطی به ماشین داره؟
در پست 38 اینو گفتید :

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

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



دوست عزیز من کل پست ها رو از اول دارم پی گیری می کنم کسی نگفته که برا ی هر کالا یه جدول پس برای 10 کالا 10 جدول درست کنید، بلکه این برداشت اشتباه برخی از دوستان است که این برداشت رو می کنند و بعد در مورد همون برداشت اشتباه سئوال می کنند و بقیه هم فکر می کنند که ...
پست 4 و 13 رو ببینید.
ما باید یاد بگیریم به موجودیت بگیم موجودیت، به رابطه بگیم رابطه.

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

خب برای اینکه برای همه موارد متغییر یه جدول جداگانه نسازیم میایم جدواولمونو می کنیم سه
جدول اول خود کالا
جدول دوم خصوصیات کالا
جدول سوم برای درج خصوصیات کالا
مثلا کالای شماره یک رنگ داره مقدارشم قرمزه
کالای شماره دو مزه داره مزشم ترشه
کالای شماره سه هم مزه داره و مزش تلخه
کالای شماره 4 ابعاد داره که 15*23 می باشد
کالای شماره 5 هم ابعاد داره هم رنگ
همه اینا در جدول سوم ذخیره میشه (به عنوان یک ردیف نه فیلد)
یعنی در جدول سوم هم کد خصوصیات درج میشه و هم کد کالا و یک مقدار (یعنی این خصوصیت مربوط میشه به فلان کالاو فلان خصوصیت که مقدارشم مثلا x می باشد)
جدول سوم (کالای یک ، خصوصیت رنگ ، مقدار قرمز) / (کالای یک ، خصوصیت ابعاد ، مقدار 10*20) / (کالای دو ، خصوصیت رنگ ، آبی) / (کالای 3 ، خصوصیت ابعاد ، مقدار 20*40)/(کالای 3 ، خصوصیت واحد کالا ، مقدار کیلو)
و هزاران فیلد دیگر.....
جدول کالا می تونه 10000 تا ردیف داشته باشه
جدول نوع خصوصیات می تونه 1000 تا ردیف داشته باشه
جدول خصوصیات می تونه 1000000 تا ردیف داشته باشه
می تونی یک ملیون تا کالا تعریف کنی که هر کدومش حتی هزار تا خصوصیت داشته باشه و تو همون جدول کالا ،کالایی داشته باشی که براش خصوصیتی ثبت نشده باشه
هیچ فیلد خالی هم نداریم
هیچ محدودیتی هم در تعداد کالا یا خصوصیات ندارماین روش گرچه درسته ولی بستگی به میزان فیلدهایی داره که میتونه برای یک کالا خالی یا پر بشه. فرض کنید ما کلا 7 خصوصیت داشته باشیم (مثل رنگ، مزه و ...). بعضی کالاها ممکنه اکثر خصوصیات رو داشته باشن. در روش شما برای همچین کالایی با فرض اینکه هر 7 خصوصیت رو داشته باشه باید 7 رکورد درج بشه و در هر رکورد هم کد کالا درج بشه در صورتیکه با یک رکورد که شامل 8 فیلد هست، میشه همین کار رو انجام داد. یعنی از تکرار 6 بار کد کالا جلوگیری میشه. همچنین در روش شما برای چنین کالایی کلا باید 7 * 3 = 21 ستون رو مقداردهی کرد ولی میشه همین جدول رو با 8 ستون هم پیاده سازی کرد و همچنین از ایجاد جدولی برای خصوصیات هم جلوگیری کرد. یعنی ما جدولی خواهیم داشت با 8 رکورد که یک فیلد اون کد کالا و 7 فیلد دیگر خصوصیات خواهند بود. تاکید میکنم این روش زمانی موثر هست که اکثریت فیلدها برای هر کالا مقدار داشته باشه و خصوصیات هر کالا رو هم از قبل بدونیم. پس اینطور نیست که همیشه با 3 فیلد یک طراحی بهینه رو داشته باشیم. پس بستگی به نوع پروژه ما داره و باید این مورد بخوبی تحلیل بشه.

hojjatshariffam
شنبه 29 تیر 1392, 22:07 عصر
دقیقا با نظرت شما کاملا موافقم جناب
veniz2008 (http://barnamenevis.org/member.php?155296-veniz2008)
http://barnamenevis.org/images/statusicon/user-online.png
من منظورم از همه مطالب ، مطالب صحیح بود ، در مورد دو گانگی پیش اومده معذرت می خوام
بله درسته باید یاد بگیریم از کلمه موجودیت استفاده کنیم ، از این بابت هم متشکرم
همانطوز که فرمودین بستگی به پروژه داره و این توضیحاتم نه به خاطر این بوده که حتما از این روش استفاده شود.
ضمن اینکه ممکنه از همون خصوصیت برای یک موجودیتی چند تا نیاز باشه که ثبت بشه مثل ده بیست تا تلفن برای موجودیتی مثل مخاطب (اگر در نیاز مندیهای پروژه این طور باشه که نیازه برای هر مخاطب چندین تلفن ، چندین موبایل ، چندین تلفن محل کار و .... ثبت شود. نه اینکه برای هر مخاطب یک یا حد اکثر 3 تلفن به علاوه یک موبایل که در این صورت با 5 تا فیلد حل می شد)
به هر حال مونده به نیازمندی های پروژه

csharpprogramer88
شنبه 29 تیر 1392, 23:26 عصر
سلام

از همه عزیزانی که وقت گذاشتن و به تاپیک جواب دادن ممنونم

احتراما آخرین کدی که باا همکاری دوستان نوشتم را میزارم دوستان نظر دهند

در فرم اول اطلاعات را در جدول Table_mainkala درج میکنم به جز تکست باکس ها یک کومبو گذاشتم که اطلاعات را از جدول Table_subkala میخونم :


private void Form1_Load(object sender, EventArgs e)
{
da = new SqlDataAdapter("select distinct(vahed),id from Table_subkala", con);
da.Fill(ds, "Table_subkala");
comboBox1.DataSource = ds.Tables["Table_subkala"];
comboBox1.DisplayMember = "vahed";
comboBox1.ValueMember = "id";

}

سپس کاربر با کلیک بر روی عناصر کومبو آیدی مربوط به واحد کالا در یک متغیر ریخته میشه :

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
temp_id =comboBox1.SelectedValue.ToString();
}


سپس این آیدی که کلید خارجی هست از جدول Table_subkala ، به همراه سایر اطلاعات در Table_mainkala درج میشود

حال اگر کاربر واحد کالای مورد نظر را از کومبو پیدا نکرد روی دکمه "اضافه کردن واحد جدید" کلیک میکنه و فرم جدید براش میاد و در اینجا میتونه واحد کالای مورد نظرش را درج کنه ، البته این درج داخل جدول Table_subkala درج میشود:


private void button1_Click(object sender, EventArgs e)
{
if (con.State == ConnectionState.Closed)
{
con.Open();
}
string strsql2 = "insert into Table_subkala(vahed)values('" + textBox1.Text + "')";
cmd = new SqlCommand();
cmd.CommandText = strsql2;
cmd.Connection = con;
cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show("اطلاعات با موفقيت ذخيره شدند");

}


بزرگترین اشتباه من در کد پست 25 این بود که : در جدول Table_subkala هم یک کلید خارجی به جدول Table_mainkala گذاشتم و اینکه در یک باتن دو دستور insert گذاشتم که هم ذر جدول Table_mainkala و هم Table_subkala درج میکردم

حالا چند سوال :

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

2- برای گرفتن گزارش های مختلف مثلا نشان دادن کل کالاهای ثبتی بطوریکه واحد کالا هم بعنوان یک ستون گزارش وجود داشته باشه(بعنی از هر 2 جدول بخونم) باید از view استفاده کنم؟

Mohammadm
شنبه 29 تیر 1392, 23:53 عصر
کی این حرف رو زد؟
ما داریم بر روی موجودیت حرف میزنیم. کالاهایی مثل کاشی و سیمان و ... یک موجودیت به نام کالا رو تشکیل میدن. خونه چه ربطی به ماشین داره؟
در پست 38 اینو گفتید :
اول یاد بگیر که به اینا میگن موجودیت نه کالا، بعدش بیا در بحث شرکت کن.
جداول پویا و داینامیک اصول خودش رو داره، الکی که نمیشه جدول آنلاین با فیلد داینامیک ایجاد کرد. فیلدهای داینامیک زمانی کاربرد داره که ما از قبل نمیدونیم چه فیلدهایی برای جدول نیاز هست یا اینکه احتمال میدیم که کاربر طبق نیازش دوست داره یک سری فیلدهای جدید رو (که از قبل نمیدونیم) رو اضافه کنه.



پست 4 و 13 رو ببینید.
ما باید یاد بگیریم به موجودیت بگیم موجودیت، به رابطه بگیم رابطه.
این روش گرچه درسته ولی بستگی به میزان فیلدهایی داره که میتونه برای یک کالا خالی یا پر بشه. فرض کنید ما کلا 7 خصوصیت داشته باشیم (مثل رنگ، مزه و ...). بعضی کالاها ممکنه اکثر خصوصیات رو داشته باشن. در روش شما برای همچین کالایی با فرض اینکه هر 7 خصوصیت رو داشته باشه باید 7 رکورد درج بشه و در هر رکورد هم کد کالا درج بشه در صورتیکه با یک رکورد که شامل 8 فیلد هست، میشه همین کار رو انجام داد. یعنی از تکرار 6 بار کد کالا جلوگیری میشه. همچنین در روش شما برای چنین کالایی کلا باید 7 * 3 = 21 ستون رو مقداردهی کرد ولی میشه همین جدول رو با 8 ستون هم پیاده سازی کرد و همچنین از ایجاد جدولی برای خصوصیات هم جلوگیری کرد. یعنی ما جدولی خواهیم داشت با 8 رکورد که یک فیلد اون کد کالا و 7 فیلد دیگر خصوصیات خواهند بود. تاکید میکنم این روش زمانی موثر هست که اکثریت فیلدها برای هر کالا مقدار داشته باشه و خصوصیات هر کالا رو هم از قبل بدونیم. پس اینطور نیست که همیشه با 3 فیلد یک طراحی بهینه رو داشته باشیم. پس بستگی به نوع پروژه ما داره و باید این مورد بخوبی تحلیل بشه.

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

hojjatshariffam
یک شنبه 30 تیر 1392, 00:02 صبح
بله این کدتون صحیح تر از بقیه می باشد


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

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


2- برای گرفتن گزارش های مختلف مثلا نشان دادن کل کالاهای ثبتی بطوریکه واحد کالا هم بعنوان یک ستون گزارش وجود داشته باشه(بعنی از هر 2 جدول بخونم) باید از view استفاده کنم؟

می تونی از ویو استفاده کنی و بعد از به جای سلکت از جدولت از ویو سلکت کنی
ویا اینکه کد اس کیو ال ویو رو خودت بنویسی تو برنامت (یعنی از جوین استفاده کنی ، همون طور که ویو استفاده می کنه)
می تونی از استورد پروسیجر استفاده کنی
و هزاران راه دیگه

csharpprogramer88
یک شنبه 30 تیر 1392, 00:29 صبح
بله این کدتون صحیح تر از بقیه می باشد


یعنی میشه روش بهتری از اینی که نوشتم هم داشته باشم؟



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



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



می تونی از ویو استفاده کنی و بعد از به جای سلکت از جدولت از ویو سلکت کنی
ویا اینکه کد اس کیو ال ویو رو خودت بنویسی تو برنامت (یعنی از جوین استفاده کنی ، همون طور که ویو استفاده می کنه)
می تونی از استورد پروسیجر استفاده کنی
و هزاران راه دیگه



اگه میشه لطف کنید و برای این چیزی که فرمودید کد منو تغییر بدید بخصوص "ویا اینکه کد اس کیو ال ویو رو خودت بنویسی تو برنامت (یعنی از جوین استفاده کنی"

veniz2008
یک شنبه 30 تیر 1392, 00:30 صبح
دوست عزیز اینجا همه به خوبی شما مفاهیم محیط عملیاتی ، موجودیت ، مجموعه صفات و... را میدانند
بنده ادعایی کردم؟
ولی وقتی کسی به ماشین، به خونه، به انسان، به درس و به ... میگه کالا یعنی مفاهیم رو خوب درک نکرده.
من قصد شرکت در این تاپیک رو هم نداشتم. در واقع مدت هاست که خیلی کم در تاپیک ها نظر میدم. دلیلش هم افرادی مثل شماها هست که عادت دارید در هر تاپیکی شرکت کنید و اون تاپیک رو به بیراهه بکشونید. وقتی چیزی رو نمیدونیم نباید به خودمون اجازه بدیم که بیایم و مثل یه دکتر نظر بدیم و بعدش در کمال پر رویی دیگران رو به ندونستن متهم کنیم و با تمسخر بگیم : "نمیدونم دوستان به طراحی جدید در این مورد رسید یه مقاله در این رابطه چاپ کنند ..".
دلیل حضور من در تاپیک پیغام خصوصی بود که ایجاد کننده تاپیک به بنده دادن و گفتن که نیاز به راهنمایی دارن تا راه درست رو تشخیص بدن.


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

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

hojjatshariffam
یک شنبه 30 تیر 1392, 00:44 صبح
یعنی میشه روش بهتری از اینی که نوشتم هم داشته باشم؟
بهتره از معماری های نرم افزار (مثلا معماری سه لایه و ...) استفاده کنید و اصول برنامه نویسی هم رعایت شود ولی چون مبحث کد نبوده و روش استفاده بوده جای بحثش نیست



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

خب بعد اینکه فرم دوم رو ShowDialog کردین در خط بعدی متد نوشته شده رو فراخانی کنید(این یه ورشه ، می تونید از نماینده ها و ایونت ها و یا حتی ساده تر از DialogResult استفاده کنید ....)


اگه میشه لطف کنید و برای این چیزی که فرمودید کد منو تغییر بدید بخصوص "ویا اینکه کد اس کیو ال ویو رو خودت بنویسی تو برنامت (یعنی از جوین استفاده کنی"

خب خودت یه ویو درست کن و کد اس کیو الی که اون ویو درست می کنه رو کپی کن و تو برنامت ازش استفاده کن

csharpprogramer88
یک شنبه 30 تیر 1392, 00:57 صبح
هتره از معماری های نرم افزار (مثلا معماری سه لایه و ...) استفاده کنید و اصول برنامه نویسی هم رعایت شود ولی چون مبحث کد نبوده و روش استفاده بوده جای بحثش نیست

پس روش طراحی دیتابیس درسته؟ البته یکی از دوستان در پست 35 نظری دادن که بعد به نتیجه رسیدن این روش میخوام اون روش را هم بررسی کنم




خب بعد اینکه فرم دوم رو ShowDialog کردین در خط بعدی متد نوشته شده رو فراخانی کنید(این یه ورشه ، می تونید از نماینده ها و ایونت ها و یا حتی ساده تر از DialogResult استفاده کنید ....)


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

csharpprogramer88
یک شنبه 30 تیر 1392, 00:58 صبح
از تمامی دوستانی که زحمت کشیدن و در بحث مشارکت کردن ممنونم

از جناب veniz2008 هم که با پیام خصوصی در بحث مشارکت کردن ممنونم