۲۵-۱-۱۳۸۷, ۰۷:۰۱ عصر
سلام به همگی اعضای محترم سایت و دوستان عزیزم . توی این تاپیک میخوام در مورد برنامه نویسی بانک اطلاعاتی بوسیله سی شارپ واستون صحبت کنم . راستش ترم پیش که خودم پایگاه داده داشتم خیلی تو اینترنت دنبال یک مطلب کامل گشتم که در این مورد بتونه کمک کنه ولی متسفاانه مطلب کاملی پیدا نکردم . نمیگم چیزی پیدا نکردم مطلب زیاد بود ولی به صورت پراکنده . ترم پیش که گذشت و من مهم پروژه اون ترم که یک کتابخانه با استفاده از C# وSql Server 2005 بود را با کمک چند تا از دوستان نوشتم و نمرش رو هم گرفتیم حالا میخوام همه اون تجاربی رو که بدست آوردم در اختیار شما عزیزان قرار بدم . خوب مبنای کار رو هم روی همین پروژه ای که خودم داشتم میزارم و هر جا نیازی به توضیحی اضافی بود حتما شفاف سازی می کنم .
خوب فرض کنیم که هدف ما طراحی یک نرم افزار برای یک کتابخانه باشه . در اصول کلی طراحی یک نرم افزار اولین کاری که باید انجام بشه اینه که ببینیم سیستم ما قراره چه عملیاتی رو انجام بده و چه قابلیتهایی داشته باشه . تمام نهادهای مورد نیاز نرم افزار رو تشخیص بدیم و تمام اجزای مورد نیاز اونها رو تعیین کنیم . خوب مثلا در همین مثال کتابخانه نهادهای ما می تونن دانشجو ، کتاب ، متصدی کتابخانه ، مسئول اصلی کتابخانه و خود کتابخانه و بسیاری نهادهای دیگه بسته به قابلیتهایی که می خواهیم کتابخانه ما داشته باشه ، ایجاد کنیم . حالا که نهادها رو مشخص کردیم ، در مرحله بعد باید فیلدهای هر نهاد یا به اصطلاح هر رکورد را معیین کنیم که این هم بستگی به طراح نرم افزار داره . ولی خوب یک سری فیلدها هستن که تقریبا همه اونها رو ایجاد می کنند ، مثلا برای دانشجو : نام ، نام خانوادگی و شماره دانشجویی . خوب تا به حال یک طرح کلی از نرم افزاری که قراره ایجاد بشه تو ذهنمون ایجاد کردیم ، حالا باید توسط یک نرم افزار که به ما کمک می کنه جداول و فیلدهای اونها و رابطه بین جداول رو مشخص کنیم کار پیاده سازی طرح کلی نرم افزار رو انجام بدیم . خود من توی پروژم از 9Power Designer استفدا کردم که نرم افزاری خیلی ساده ور در عین سادگی کاملی هستش . ما در این نرم افزار به رسم نمودار ERd بانک اطلاعاتی که می خواهیم طراحی کنیم می پردازیم (Entity Relational Diagram) . من برای نمونه یک مدل ERd ساده رو اینجا براتون میزارم که در power designer طراحی شده . سعی کردم ساده ترین حالت ممکن رو در نظربگیرم که برای همه قابل فهم باشه .
![[تصوير: undpu.jpg]](http://i28.tinypic.com/undpu.jpg)
همونطور که در شکل بالا می بینید 3 رابطه داریم . دو رابطه عضویت و یک رابطه integrity که همان امانت دادن کتاب هستش ( اگه بخوام در مورد power designer صحبت کنم خیلی رمان میبره بنابر این فرض رو بر این می گیریم برای ادامه که تا اینجای کار مشکلی ندارین ) . بعد از رشم این ERD باید به مدل بانک اطلاعاتی مورد نظر ما تبدیل بشه نا در بانک اطلاعاتی مورد نظر طرح نهایی رو که از این نرم افزار به دست میاریم رسم کنیم . برای این کهpower designer طرح ما رو کامپایل کنه و جداول مورد نیاز رو تولید کنه از منوی Tools گزینه Generate Physical Data Model رو انتخاب می کنیم و بعد Dbms مرود نظر خود را انتخاب کرده و در نهایت OK می کنیم . طرح ایجاد شده مدلی هستش که ما بانک اطلاعاتی خود را بر اساس ان طراحی کنیم . یعنی جداولی که در این طرح نهایی میبینیم باید در بانک اطلاعاتی رسم کرده و روابط بین فیلدهای جداول را کاملا مشخص کنیم . این طرح کامپایل شده مثال بالا هستش که باید جداولش در مثال من درSql Server 2005 پیده سازی شود .
![[تصوير: b6o8rm.jpg]](http://i30.tinypic.com/b6o8rm.jpg)
حالا باید وارد ویژوال استادیو 2005 شویم و به مرحله نهایی طراحی بانک اطلاعاتی نرم افزار کتابخانه خود بپردازیم . خوب وقتی وارد ویژوال استادیو شدین شما اولین کاری که باید انجام بدین اینه که یک Sql Server Database File ایجاد کنید . به این منظور از منوی Connect To DataBase رو انتخاب میکنید و از قسمت DataSource گزینه Microsoft Sql server database file رو انتخاب می کنید و در قسمت Database File Name یک نام دلخواه برای بانک اطلاعاتی خود انتخاب می کنید .و اگه Sql server نصب شده روی سیستم شما مشکلی نداشته باشه با فشردن دکمه ok بانک اطلاعاتی مربوطه ایجاد می شود .
در تصویر زیر مراحل رو نشون دادم :
![[تصوير: 2vsrwy8.jpg]](http://i26.tinypic.com/2vsrwy8.jpg)
بعد از اینکه مراحل بالا به درستی انجام شد از قسمت server Explorer در سمت چپ یا راست ویژوال استادیو می توانید دیتابیس ایجاد شده و جداول اون رو مشاهده کنید . در تصویر زیر نمایش داده شده :
![[تصوير: 2llivj7.jpg]](http://i26.tinypic.com/2llivj7.jpg)
خوب حالا وقت اینه که جداولی که از power designer بدست آوردیم رو درSql Server ایجاد کنیم . بدین منظور در همون قسمت server explorer روی نام دیتابیس خود کلیک کرده تا باز شود ، بعد روی پوشه Tables کلیک راست کرده و Add New Table رو کلیک می کنیم . پنجره ای مانند شکل زیر ایجاد می شود :
![[تصوير: 34gpo3b.jpg]](http://i31.tinypic.com/34gpo3b.jpg)
در این پنجره باید نام فیلدهای جداول و نوع دادهای اونها رو تعیین کنیم و اگر گزینه Allow Nulls برای فیلدی تیک بخورد به این معنی است که کاربر نهایی نرم افزار موقع وارد کردن اطلاعات می تواند برای این فیلد مقداری وارد نکند . برای فیلدی که کلید اصلی جدول می باشد در حالی که آن فیلد انتخاب شده باید علامت کلید را از جعبه ابزار بالا انتخاب کرد. بعد از اینکه تمامی فیلدهای جدول مورد نظر تعریف شد با فشردن Ctrl + S نام جدول مورد نظر را وارد کرده وok می کنید و همین مراحل برای تمامی جداول خود انجام می دهید . بعد از تعریف تمامی جداول باید رابطه موجود بین عناصر جداول برای برای Sql server مشخص کنید . برای انجام این کار رد server explorer روی Tables کلیک کرده و جداولی که دارای کلید خارجی می باشند را یکی یکی در IDE باز کرده و از نوار ابزار بالا دکه Relationship را کلیک کرده و در پنل سمت راست روی گزینه ... کلیک کرده و رابطه بین کلیدهای خارجی این جدول ( یعنی فیلدهایی که جزو فیلدهای واقعی این جدول نیستند و با کامپیایل طر ح ما در power designer از جداول دیگر وارد این جدول شده اند ) را با جدولی که این کلید در واقع متعلق به ان جدول است مشخص می کنیم .
مراحل بالا را در شکل های زیر خلاصه کردم :
همانطور که در تصویر بالا نشان داده شده یکی از جداول باز است و از قسمت بالا روی گزینه مشخص شده کلیک می کنیم و پنجره زیر باز می شود :
![[تصوير: iofe5d.jpg]](http://i25.tinypic.com/iofe5d.jpg)
و بعد گزینه Add را کلیک می کنیم . پنجره زیر باز میشود :
![[تصوير: 30a3rky.jpg]](http://i29.tinypic.com/30a3rky.jpg)
در باکس سمت چپ تمامی کلیدهای خارجی این جدول نمایان می شود . روی هر کدام یکی یکی کلیک کرده و مراحل زیر را برای آنها تکرار می کنیم :
در پنل سمت راست در قسمت Generalو در قمت Tables and coloums specification روی علامت ... کلیک کرده و شکل زیر حاصل می شود :
![[تصوير: 2ciju5c.jpg]](http://i29.tinypic.com/2ciju5c.jpg)
در پنجره بالا در سمت راست جدول فعلی را انتخاب شده است و از باکس پایین فیلدی خارجی را انتخاب می کنیم و در سمت چپ جدولی که ایم فیلد مربوط به آن است را انتخاب کرده و از قسمت زیر آن فیلد خارجی که در جدول دیگر قرار گرفته انتخاب می کنیم . همانند شکل زیر :
![[تصوير: 2pp0qwy.jpg]](http://i28.tinypic.com/2pp0qwy.jpg)
و در نهایت ok می کنیم و این کار را برای تمامی جداولی که دارای فیلد خارجی می باشند انجام می دهیم . بعد از انجام این کار شمای کلی بانک اطلاعاتی که قرار است در نرم افزار خود از آن استفاده کنیم به دست آمده است که برای مشاهده دیاگرام ان می توانیم در server explorer روی گزینه Database Diagram کلیک راست کرده و گزینه Add New Diagram را کلیک کنیم و جداول خود را Add کنیم با این کار دیاگرام نهایی و رابطه بین جداول ایجاد می شود که ئر موقع کد نویسی برای قسمتهای مختلف نرم افزار خیلی می تواند سودمند واقع شود .
خوب دوستان تا اینجای کار یک قسمت عمده کار رو با هم انجام دادیم . از اینجا به بعد دیگه باید همون نکاتی رو که در ابتدا گفتم در نظر بگیرید ، اینکه چه قابلیت هایی قرار است کتابخانه شما داشته باشد و بعد روالهای مورد نظر خود را پیاده کنید و بعد از اتمام تمامی این مراحل به سراغc# رفته و به طراحی Ide نرم افزار می پردازیم و کدنویسی های مربوطه را انجام می دهیم .
برای امروز دیگه فکر کنم کافی باشه . در قسمت بعدی در مورد ادامه روند طراحی نرم افزار و مراحلی که لازمه طی بشه تا بتونیم با C# به دیتابیس ایجاد شده در مراحل قبل متصل شویم و به کار و تعامل با اون بپردازیم رو بررسی می کنم . امیدوارم تا اینجاش مفید واقع شده باشه .
خوب فرض کنیم که هدف ما طراحی یک نرم افزار برای یک کتابخانه باشه . در اصول کلی طراحی یک نرم افزار اولین کاری که باید انجام بشه اینه که ببینیم سیستم ما قراره چه عملیاتی رو انجام بده و چه قابلیتهایی داشته باشه . تمام نهادهای مورد نیاز نرم افزار رو تشخیص بدیم و تمام اجزای مورد نیاز اونها رو تعیین کنیم . خوب مثلا در همین مثال کتابخانه نهادهای ما می تونن دانشجو ، کتاب ، متصدی کتابخانه ، مسئول اصلی کتابخانه و خود کتابخانه و بسیاری نهادهای دیگه بسته به قابلیتهایی که می خواهیم کتابخانه ما داشته باشه ، ایجاد کنیم . حالا که نهادها رو مشخص کردیم ، در مرحله بعد باید فیلدهای هر نهاد یا به اصطلاح هر رکورد را معیین کنیم که این هم بستگی به طراح نرم افزار داره . ولی خوب یک سری فیلدها هستن که تقریبا همه اونها رو ایجاد می کنند ، مثلا برای دانشجو : نام ، نام خانوادگی و شماره دانشجویی . خوب تا به حال یک طرح کلی از نرم افزاری که قراره ایجاد بشه تو ذهنمون ایجاد کردیم ، حالا باید توسط یک نرم افزار که به ما کمک می کنه جداول و فیلدهای اونها و رابطه بین جداول رو مشخص کنیم کار پیاده سازی طرح کلی نرم افزار رو انجام بدیم . خود من توی پروژم از 9Power Designer استفدا کردم که نرم افزاری خیلی ساده ور در عین سادگی کاملی هستش . ما در این نرم افزار به رسم نمودار ERd بانک اطلاعاتی که می خواهیم طراحی کنیم می پردازیم (Entity Relational Diagram) . من برای نمونه یک مدل ERd ساده رو اینجا براتون میزارم که در power designer طراحی شده . سعی کردم ساده ترین حالت ممکن رو در نظربگیرم که برای همه قابل فهم باشه .
![[تصوير: undpu.jpg]](http://i28.tinypic.com/undpu.jpg)
همونطور که در شکل بالا می بینید 3 رابطه داریم . دو رابطه عضویت و یک رابطه integrity که همان امانت دادن کتاب هستش ( اگه بخوام در مورد power designer صحبت کنم خیلی رمان میبره بنابر این فرض رو بر این می گیریم برای ادامه که تا اینجای کار مشکلی ندارین ) . بعد از رشم این ERD باید به مدل بانک اطلاعاتی مورد نظر ما تبدیل بشه نا در بانک اطلاعاتی مورد نظر طرح نهایی رو که از این نرم افزار به دست میاریم رسم کنیم . برای این کهpower designer طرح ما رو کامپایل کنه و جداول مورد نیاز رو تولید کنه از منوی Tools گزینه Generate Physical Data Model رو انتخاب می کنیم و بعد Dbms مرود نظر خود را انتخاب کرده و در نهایت OK می کنیم . طرح ایجاد شده مدلی هستش که ما بانک اطلاعاتی خود را بر اساس ان طراحی کنیم . یعنی جداولی که در این طرح نهایی میبینیم باید در بانک اطلاعاتی رسم کرده و روابط بین فیلدهای جداول را کاملا مشخص کنیم . این طرح کامپایل شده مثال بالا هستش که باید جداولش در مثال من درSql Server 2005 پیده سازی شود .
![[تصوير: b6o8rm.jpg]](http://i30.tinypic.com/b6o8rm.jpg)
حالا باید وارد ویژوال استادیو 2005 شویم و به مرحله نهایی طراحی بانک اطلاعاتی نرم افزار کتابخانه خود بپردازیم . خوب وقتی وارد ویژوال استادیو شدین شما اولین کاری که باید انجام بدین اینه که یک Sql Server Database File ایجاد کنید . به این منظور از منوی Connect To DataBase رو انتخاب میکنید و از قسمت DataSource گزینه Microsoft Sql server database file رو انتخاب می کنید و در قسمت Database File Name یک نام دلخواه برای بانک اطلاعاتی خود انتخاب می کنید .و اگه Sql server نصب شده روی سیستم شما مشکلی نداشته باشه با فشردن دکمه ok بانک اطلاعاتی مربوطه ایجاد می شود .
در تصویر زیر مراحل رو نشون دادم :
![[تصوير: 2vsrwy8.jpg]](http://i26.tinypic.com/2vsrwy8.jpg)
بعد از اینکه مراحل بالا به درستی انجام شد از قسمت server Explorer در سمت چپ یا راست ویژوال استادیو می توانید دیتابیس ایجاد شده و جداول اون رو مشاهده کنید . در تصویر زیر نمایش داده شده :
![[تصوير: 2llivj7.jpg]](http://i26.tinypic.com/2llivj7.jpg)
خوب حالا وقت اینه که جداولی که از power designer بدست آوردیم رو درSql Server ایجاد کنیم . بدین منظور در همون قسمت server explorer روی نام دیتابیس خود کلیک کرده تا باز شود ، بعد روی پوشه Tables کلیک راست کرده و Add New Table رو کلیک می کنیم . پنجره ای مانند شکل زیر ایجاد می شود :
![[تصوير: 34gpo3b.jpg]](http://i31.tinypic.com/34gpo3b.jpg)
در این پنجره باید نام فیلدهای جداول و نوع دادهای اونها رو تعیین کنیم و اگر گزینه Allow Nulls برای فیلدی تیک بخورد به این معنی است که کاربر نهایی نرم افزار موقع وارد کردن اطلاعات می تواند برای این فیلد مقداری وارد نکند . برای فیلدی که کلید اصلی جدول می باشد در حالی که آن فیلد انتخاب شده باید علامت کلید را از جعبه ابزار بالا انتخاب کرد. بعد از اینکه تمامی فیلدهای جدول مورد نظر تعریف شد با فشردن Ctrl + S نام جدول مورد نظر را وارد کرده وok می کنید و همین مراحل برای تمامی جداول خود انجام می دهید . بعد از تعریف تمامی جداول باید رابطه موجود بین عناصر جداول برای برای Sql server مشخص کنید . برای انجام این کار رد server explorer روی Tables کلیک کرده و جداولی که دارای کلید خارجی می باشند را یکی یکی در IDE باز کرده و از نوار ابزار بالا دکه Relationship را کلیک کرده و در پنل سمت راست روی گزینه ... کلیک کرده و رابطه بین کلیدهای خارجی این جدول ( یعنی فیلدهایی که جزو فیلدهای واقعی این جدول نیستند و با کامپیایل طر ح ما در power designer از جداول دیگر وارد این جدول شده اند ) را با جدولی که این کلید در واقع متعلق به ان جدول است مشخص می کنیم .
مراحل بالا را در شکل های زیر خلاصه کردم :
همانطور که در تصویر بالا نشان داده شده یکی از جداول باز است و از قسمت بالا روی گزینه مشخص شده کلیک می کنیم و پنجره زیر باز می شود :
![[تصوير: iofe5d.jpg]](http://i25.tinypic.com/iofe5d.jpg)
و بعد گزینه Add را کلیک می کنیم . پنجره زیر باز میشود :
![[تصوير: 30a3rky.jpg]](http://i29.tinypic.com/30a3rky.jpg)
در باکس سمت چپ تمامی کلیدهای خارجی این جدول نمایان می شود . روی هر کدام یکی یکی کلیک کرده و مراحل زیر را برای آنها تکرار می کنیم :
در پنل سمت راست در قسمت Generalو در قمت Tables and coloums specification روی علامت ... کلیک کرده و شکل زیر حاصل می شود :
![[تصوير: 2ciju5c.jpg]](http://i29.tinypic.com/2ciju5c.jpg)
در پنجره بالا در سمت راست جدول فعلی را انتخاب شده است و از باکس پایین فیلدی خارجی را انتخاب می کنیم و در سمت چپ جدولی که ایم فیلد مربوط به آن است را انتخاب کرده و از قسمت زیر آن فیلد خارجی که در جدول دیگر قرار گرفته انتخاب می کنیم . همانند شکل زیر :
![[تصوير: 2pp0qwy.jpg]](http://i28.tinypic.com/2pp0qwy.jpg)
و در نهایت ok می کنیم و این کار را برای تمامی جداولی که دارای فیلد خارجی می باشند انجام می دهیم . بعد از انجام این کار شمای کلی بانک اطلاعاتی که قرار است در نرم افزار خود از آن استفاده کنیم به دست آمده است که برای مشاهده دیاگرام ان می توانیم در server explorer روی گزینه Database Diagram کلیک راست کرده و گزینه Add New Diagram را کلیک کنیم و جداول خود را Add کنیم با این کار دیاگرام نهایی و رابطه بین جداول ایجاد می شود که ئر موقع کد نویسی برای قسمتهای مختلف نرم افزار خیلی می تواند سودمند واقع شود .
خوب دوستان تا اینجای کار یک قسمت عمده کار رو با هم انجام دادیم . از اینجا به بعد دیگه باید همون نکاتی رو که در ابتدا گفتم در نظر بگیرید ، اینکه چه قابلیت هایی قرار است کتابخانه شما داشته باشد و بعد روالهای مورد نظر خود را پیاده کنید و بعد از اتمام تمامی این مراحل به سراغc# رفته و به طراحی Ide نرم افزار می پردازیم و کدنویسی های مربوطه را انجام می دهیم .
برای امروز دیگه فکر کنم کافی باشه . در قسمت بعدی در مورد ادامه روند طراحی نرم افزار و مراحلی که لازمه طی بشه تا بتونیم با C# به دیتابیس ایجاد شده در مراحل قبل متصل شویم و به کار و تعامل با اون بپردازیم رو بررسی می کنم . امیدوارم تا اینجاش مفید واقع شده باشه .