PDA

View Full Version : سوال: راهنمايي فني در انجام بهينه يك پروژه بانك طالاعاتي



Programmer 1
چهارشنبه 07 مهر 1389, 00:37 صبح
سلام ،

دوستان من براي يك ارگان دولتي قصد دارم برنامه اي طراحي كنم ، اين برنامه براي اتوماسيون بخش اداري قراره نوشته بشه ، شمايي كلي از پروژه به شما ميدم و سپس سوالاتم رو مطرح مي كنم :

در بخش اداري اين ارگان ، فرم هاي كاغذي زيادي براي كارهاي مختلف ذخيره ميشه ، من مي خوام اين فرم ها رو به صورت فيلدهايي دريافت كنم و البته در بخش چاپ فرم ، فرم دقيقا به صورت فرم كاغذي چاپ بشه و بايگاني بشه ، برنامه به صورت زير مي باشد :

اول يك اسپلش اسكرين ظاهر بشه و طي اين مدت تمامي جداول بانك اطلاعاتي به ديتاگرايد هاي فرم ها اختصاص داده بشن و همچنين تنظيمات برنامه خونده ميشه ، بعد از اين اسپلش بسته مي شه و صفحه اصلي برنامه ظاهر ميشه ، حالا كاربر مي تونه با كليك بر روي هر دكمه به صفحه مربوطه وارد بشه والبته ديگه منتظر لود شدن ركورد ها نمي مونه ، اين جوري به نظرتون خوبه يا با زدن هر دكمه ركوردهاي مربوط به اون فرم از جدول مربوطه لود بشن ؟

وقتي اولين گزارش توسط كريستال توليد ميشه سرعتش كنده ولي بقيه سرعتشون خوبه ، راه حلي نداريد تا در سرعت اولين گزارش هم زياد بشه ؟

كانكشن استرينگ ديتابيس رو چه جوري توليد كنم ، يعني دقيقا نمي دونم اونجا آيا ديتابيس لوكال نصب هست يا نه ، به نظرتون اين روش خوب نيست كه در اولين اجراي نرم افزار بيام فرمي باز كنم و از كاربر اسم سرور رو بپرسم و و سپس كانكشن استرينگ رو توليد كنم ، راستي بايد چه جوري از اولين اجراي نرم افزار آگاه بشم ، از رجيستري استفاده كنم يا از فايل و يا از Application Settings خود برنامه ؟

من بخشي در نرم افزار دارم به عنوان تنظيمات كه تنظيمات كمي هم داره مثلا فعال كردن بكاپ گيري خودكار ، براي ذخيره تنظيمات اين بخش از Application Setting استفاده كنم و يا از فايل يا رجيستري ؟

براي اين پروژه قصد دارم از 2 كلاس استفاده كنم يكي براي كارهاي مربوط به ظاهر برنامه ، مثلا نمايش كادرهاي رنگي و محو كردن فرم ها و ... ويكي هم براي كار با ديتابيس براي عمليات اتصال به ديتابيس و وارد كردن ، حذف ، ويرايش ركوردها و همچنين بكاپ گيري و ريستور و ... به نظرتون تقسيم بندي خوبيه ؟

براي عمليات مربوط به بانك هاي اطلاعاتي به نظرتون بهتره از پروسيجر هاي آماده كه تو فايل هاي نصب برنامه هم نصب ميشه استفاده كنم و يا از طريق كد نويسي مستقيم در برنامه ؟

ديتابيس رو با SQL بسازم و اتچ كنم يا مستقيما با كد نويسي اين كار رو انجام بدم ؟

همچنين آيا نياز هست در همه بخش هاي برنامه از كنترل خطا استفاده كنم يا فقط در بخش تراكنش با بانك اطلاعات مديريت خطا رو قرار بدم ؟



لطفا هركسي هر كدوم از اين سوال ها رو مي تونه جواب بده تا جواب همه سوالاتم رو بگيرم

با تشكر /.

peymanjon
چهارشنبه 07 مهر 1389, 02:29 صبح
اول يك اسپلش اسكرين ظاهر بشه و طي اين مدت تمامي جداول بانك اطلاعاتي به ديتاگرايد هاي فرم ها اختصاص داده بشن و همچنين تنظيمات برنامه خونده ميشه ، بعد از اين اسپلش بسته مي شه و صفحه اصلي برنامه ظاهر ميشه ، حالا كاربر مي تونه با كليك بر روي هر دكمه به صفحه مربوطه وارد بشه والبته ديگه منتظر لود شدن ركورد ها نمي مونه ، اين جوري به نظرتون خوبه يا با زدن هر دكمه ركوردهاي مربوط به اون فرم از جدول مربوطه لود بشن ؟
روش دوم بهتره ، شما حالتی را در نظر بگیرید که کاربر می خواهد یک اطلاعات بسیار مختصر را بدست بیاره یا کاری بخواد انجام بده که نیاز نباشه مدت زمان زیادی برای باز شدن فرم صبر کنه مثلا بخواهد پسورد خود را عوض کند آیا لازمه واقعا تا لود شدن کل اطلاعات صبر کنه؟
ولی برای بعضی از فرم ها روش اول بهتره که بسته به نیاز باید مشخص بشه.


كانكشن استرينگ ديتابيس رو چه جوري توليد كنم ، يعني دقيقا نمي دونم اونجا آيا ديتابيس لوكال نصب هست يا نه ، به نظرتون اين روش خوب نيست كه در اولين اجراي نرم افزار بيام فرمي باز كنم و از كاربر اسم سرور رو بپرسم و و سپس كانكشن استرينگ رو توليد كنم
دوست عزیز تحلیل یک سیستم شامل این مورد هم هست که آیا در محیط کاربری شبکه وجود دارد، اگر هست IP سرور چیه و با چه بانک اطلاعاتی کار می کند یعنی در اصل امکان سنجی تکنیکی روی محیط کاربر قبل از شروع پروژه باید انجام بشه تا اطلاعاتی که نیاز هست بدست بیارید.با این کار می تونید جواب این سوالتون را بدست بیارید.


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



براي عمليات مربوط به بانك هاي اطلاعاتي به نظرتون بهتره از پروسيجر هاي آماده كه تو فايل هاي نصب برنامه هم نصب ميشه استفاده كنم و يا از طريق كد نويسي مستقيم در برنامه ؟
معمولا یک کلاس برای کار با دیتا بیس نوشته میشه و عملیات ثبت و حذف و ... فقط با ارسال پارامتر به آن کلاس انجام می شود و اگر غیر از آن نیازی به کد باشه من به شخصه پروسیجر را توصیه می کنم.


همچنين آيا نياز هست در همه بخش هاي برنامه از كنترل خطا استفاده كنم يا فقط در بخش تراكنش با بانك اطلاعات مديريت خطا رو قرار بدم ؟
من سعی می کنم توی همه بخش ها استفاده کنم.

موفق باشید.

mehdis2
چهارشنبه 07 مهر 1389, 14:39 عصر
سلام دوست عزیز

برای گزارشتون هم میتونید از fast report یا active استفاده کنید البته خودم StimulReport رو (http://www.barnamenevis.org/forum/showthread.php?t=117526)

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

mehdis2
چهارشنبه 07 مهر 1389, 14:43 عصر
در ضمن ترامنش هاتون هم یا با system.transaction داخل دات نت که تنظیم تحت شبکه هم میشه انجام بلدید یا طرف sql server

Programmer 1
پنج شنبه 08 مهر 1389, 00:04 صبح
بابت پاسخ هاي شما دوستان متشكرم ،
اين دوتا سوالم بي جواب موند لطفا راهنمايي كنيد :


من بخشي در نرم افزار دارم به عنوان تنظيمات كه تنظيمات كمي هم داره مثلا فعال كردن بكاپ گيري خودكار ، براي ذخيره تنظيمات اين بخش از Application Setting استفاده كنم و يا از فايل يا رجيستري ؟


ديتابيس رو با SQL بسازم و اتچ كنم يا مستقيما با كد نويسي اين كار رو انجام بدم ؟

با تشكر /.

nilidelphi
پنج شنبه 08 مهر 1389, 20:15 عصر
کار با فایل ها سرعت پایینی داره.
ریجیستری هم برای بعضی کارا خیلی محدوده و به خود سیستم عامل ممکن مشکل وارد کنه(اگه درست مودیریت نشه)

من پیشنهاد می کنم یک جدول اضافی در پایگاه دادتون بزارید واسه تنظیمات و اکثرا هم از نوع Bit باشند(در SQL Server) و در اول برنامه همهشو چک کن اگر 1 باشه انجام بشه و اگر صفر باشه نه..!

نمیدونم کامل تونستم مفهوم رو برسونم یا نه؟:قلب:

Programmer 1
شنبه 10 مهر 1389, 23:55 عصر
من پیشنهاد می کنم یک جدول اضافی در پایگاه دادتون بزارید واسه تنظیمات و اکثرا هم از نوع Bit باشند(در SQL Server) و در اول برنامه همهشو چک کن اگر 1 باشه انجام بشه و اگر صفر باشه نه..!

اگه اين جوري خوب باشه به نظرتون براي دريافت رمز عبور براي ورود به برنامه بهتر نيست طبق گفته هاي شما از يك بانك استفاده كنم ؟

k1csharpdeveloper
یک شنبه 11 مهر 1389, 00:07 صبح
سلام ،

دوستان من براي يك ارگان دولتي قصد دارم برنامه اي طراحي كنم ، اين برنامه براي اتوماسيون بخش اداري قراره نوشته بشه ، شمايي كلي از پروژه به شما ميدم و سپس سوالاتم رو مطرح مي كنم :

در بخش اداري اين ارگان ، فرم هاي كاغذي زيادي براي كارهاي مختلف ذخيره ميشه ، من مي خوام اين فرم ها رو به صورت فيلدهايي دريافت كنم و البته در بخش چاپ فرم ، فرم دقيقا به صورت فرم كاغذي چاپ بشه و بايگاني بشه ، برنامه به صورت زير مي باشد :

اول يك اسپلش اسكرين ظاهر بشه و طي اين مدت تمامي جداول بانك اطلاعاتي به ديتاگرايد هاي فرم ها اختصاص داده بشن و همچنين تنظيمات برنامه خونده ميشه ، بعد از اين اسپلش بسته مي شه و صفحه اصلي برنامه ظاهر ميشه ، حالا كاربر مي تونه با كليك بر روي هر دكمه به صفحه مربوطه وارد بشه والبته ديگه منتظر لود شدن ركورد ها نمي مونه ، اين جوري به نظرتون خوبه يا با زدن هر دكمه ركوردهاي مربوط به اون فرم از جدول مربوطه لود بشن ؟


وقتي اولين گزارش توسط كريستال توليد ميشه سرعتش كنده ولي بقيه سرعتشون خوبه ، راه حلي نداريد تا در سرعت اولين گزارش هم زياد بشه ؟

كانكشن استرينگ ديتابيس رو چه جوري توليد كنم ، يعني دقيقا نمي دونم اونجا آيا ديتابيس لوكال نصب هست يا نه ، به نظرتون اين روش خوب نيست كه در اولين اجراي نرم افزار بيام فرمي باز كنم و از كاربر اسم سرور رو بپرسم و و سپس كانكشن استرينگ رو توليد كنم ، راستي بايد چه جوري از اولين اجراي نرم افزار آگاه بشم ، از رجيستري استفاده كنم يا از فايل و يا از Application Settings خود برنامه ؟

من بخشي در نرم افزار دارم به عنوان تنظيمات كه تنظيمات كمي هم داره مثلا فعال كردن بكاپ گيري خودكار ، براي ذخيره تنظيمات اين بخش از Application Setting استفاده كنم و يا از فايل يا رجيستري ؟

براي اين پروژه قصد دارم از 2 كلاس استفاده كنم يكي براي كارهاي مربوط به ظاهر برنامه ، مثلا نمايش كادرهاي رنگي و محو كردن فرم ها و ... ويكي هم براي كار با ديتابيس براي عمليات اتصال به ديتابيس و وارد كردن ، حذف ، ويرايش ركوردها و همچنين بكاپ گيري و ريستور و ... به نظرتون تقسيم بندي خوبيه ؟

براي عمليات مربوط به بانك هاي اطلاعاتي به نظرتون بهتره از پروسيجر هاي آماده كه تو فايل هاي نصب برنامه هم نصب ميشه استفاده كنم و يا از طريق كد نويسي مستقيم در برنامه ؟

ديتابيس رو با SQL بسازم و اتچ كنم يا مستقيما با كد نويسي اين كار رو انجام بدم ؟

همچنين آيا نياز هست در همه بخش هاي برنامه از كنترل خطا استفاده كنم يا فقط در بخش تراكنش با بانك اطلاعات مديريت خطا رو قرار بدم ؟



لطفا هركسي هر كدوم از اين سوال ها رو مي تونه جواب بده تا جواب همه سوالاتم رو بگيرم

با تشكر /.


من نظرم این هست که جا splash یک login قرار بده بعدم از متود disconnected استفاده نکن
و database رو توی sqlserver از همه چی استفاده کن از index بگیر triger , curser,store procedure بعد اینارو صدا بزن از تو c#

mmd2009
یک شنبه 11 مهر 1389, 01:18 صبح
بابت پاسخ هاي شما دوستان متشكرم ،
اين دوتا سوالم بي جواب موند لطفا راهنمايي كنيد :





با تشكر /.

با سلام.

جواب 1 : از appSetting

جواب 2 : express

موفق باشید

mmd2009
یک شنبه 11 مهر 1389, 01:21 صبح
اول يك اسپلش اسكرين ظاهر بشه و طي اين مدت تمامي جداول بانك اطلاعاتي به ديتاگرايد هاي فرم ها اختصاص داده بشن و همچنين تنظيمات برنامه خونده ميشه ، بعد از اين اسپلش بسته مي شه و صفحه اصلي برنامه ظاهر ميشه ، حالا كاربر مي تونه با كليك بر روي هر دكمه به صفحه مربوطه وارد بشه والبته ديگه منتظر لود شدن ركورد ها نمي مونه ، اين جوري به نظرتون خوبه يا با زدن هر دكمه ركوردهاي مربوط به اون فرم از جدول مربوطه لود بشن ؟


این برنامه چندتا جدول داره ؟

Programmer 1
یک شنبه 11 مهر 1389, 23:41 عصر
این برنامه چندتا جدول داره ؟
8 تا جدول دارم كه تو بعضي هاشون هم تعداد كنترل ها زياده . فقط تو همشون يك ديتا گريد وجود داره كه ركوردهاي مربوطه از بانك در اون لود ميشه .

nilidelphi
دوشنبه 12 مهر 1389, 12:57 عصر
اگه اين جوري خوب باشه به نظرتون براي دريافت رمز عبور براي ورود به برنامه بهتر نيست طبق گفته هاي شما از يك بانك استفاده كنم ؟


منظورتون متوجه نشدم میشه واضحتر بگین؟؟؟؟؟

اگه متوجه منضور من نشدین واضحتر توضیح بدم(کامل)!!!!!!

Programmer 1
سه شنبه 13 مهر 1389, 23:01 عصر
منظورم اين هست كه شما وقتي فرموديد تنظيمات برنامه رو تو يك جدول يانك اطلاعات اضافه كنم ، اين فكر به ذهنم اومد كه اطلاعات مربوط به صفحه Login نرم افزار رو هم در يك جدول ديگه تو بانك اطلاعات ذخيره كنم تا هم امنيت بالا بره و هم كار راحت تر بشه فقط نگراني كه دارم اين هست كه آيا استفاده از بانك براي اين موارد يك نوع سربار اضافي نيست و سرعت پايين نمي آد ؟ چون بايد اشيا مختلفي توليد و نابود بشه تا زماني كه به بانك وصل بشيم و يك اعتبار سنجي ساده انجام بديم ،‌ نظرتون چيه ؟

اميدوارم كه روشن توضيح داده باشم .

nilidelphi
چهارشنبه 14 مهر 1389, 14:21 عصر
نه عزیز سربار اضافی نداره اگر از یک DBMSی استفاده کنی که دارای یک سرویس قوی هست مثل SQL server مخصوصا 2005 به بالا ویا اوراکل.

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

راستی اگه خیلی نگران سرعت هستی می تونی جدول کاربر و تنظیماتی که طراحی می کنی رو توش هیچ ایندکسی نذاری تا در رم جا نگیره دلیلشم اینه که این جدول ها خیلی پر نمیشن خیلی خیلی خیلی
زیاد پرشن 100 تا رکورد خواهند داشت پس نگران سرعت نباش .

فقط باید موارد امنیتی دیتابیستو زیاد مد نظر بگیری.

موفق باشید.