آشنایی با مفاهیم پایگــاه داده هـــا
مفاهیم مبنایی :
مفهوم پایگاه داده ها : پایگاه داده ها در ساده ترین وجه به مثابه مخزنی میماند که اطلاعات و داده ها به صورت منسجم و احتمالا ساخت یافته در آن نگهداری میشود . این مخزن میتواند یک فایل متنی یا باینری ساده باشد .
همزمان با پیدایش تکنولوژی ذخیره سازی اطلاعات و فایلها ، پایگاه داده ها نیز متولد شد و همزمان با رشد تکنولوژی ذخیره و بازیابی اطلاعات و سیستم فایلینگ ، پایگاه داده ها نیز به صورت موازی و با آن رشد کرد . پایگاه داده ها از زمان تولد تا کنون پنج نسل را سپری کرده است .
همزمان با گسترش نیاز کاربران برای ذخیره سازی و بازیابی اطلاعات برنامه نویسان متعددی اقدام به ایجاد برنامه هایی با اهداف و کاربردهای متفاوت کردند . صرف نظر از برنامه هایی که از نظر کاربرد کاملا متفاوت بودند برنامه هایی نیز وجود داشتند که ماهیت و کاربرد یکسانی داشتند ولی توسط برنامه نویسان متعدد ایجاد شده بودند . بهترین مثال برای این مطلب دفـتـــرچـــه تلـفــن میباشد . چندین و چند نسخه متفاوت دفترچه تلفن موجود بود که همه آنها امکانات کاملا مشابهی داشتند ولی الگوریتمها و روشهای برنامه نویسی آنها کاملا متفاوت بود . مهمترین وعمده ترین تفاوتهای که بین این برنامه ها وجود داشت در زیر ذکر شده اند :
* نوع و ماهیت فایلی که اطلاعات در آن ذخیره میشد ( بعضیهااز نوع باینری و بعضی TXT و... بودند )
* الگوریتم و روش ذخیره سازی داده ها در فایل
* نام توابع ( فرضا تابع مربوط به جستجو در هر برنامه نامی مطابق با سلیقه برنامه نویس داشت )
تمام این برنامه ها در واقع نوعی بانک اطلاعاتی هستند که برای اهداف خاص ایجاد شده اند . لذا به منابع داده در هر برنامه به جز در همان برنامه در جای دیگری کاربرد نداشت و به هیچ درد دیگری نمیخورد حتی برنامه هایی که مشابه بودند ( مانند دفترچه تلفن ) نیز ( بنا به دلایل ذکر شده ) نمیتوانستند با هم تبادل اطلاعات داشته باشند و اگر میخواستیم از فایل حاوی داده های یک دفترچه تلفن در دفترچه تلفن دیگری استفاده کنیم هیچ راهی وجود نداشت . در ضمن در تمام این برنامه ها به جز فایل و برنامه نوشته شده توسط برنامه نویس هیچ چیز دیگری وجود نداشت که بتواند امنیت داده ها را تضمین کند . و به طور کلی داده ها را کنترل و مدیریت کند . مشکل دیگری که این برنامه ها داشتند این بود که این برنامه ها تنها قابلیت این را داشتند که یک کاربر از آنها استفاده کند و استفاده به صورت اشتراکی از منابع داده ها امکان پذیر نبود .
با گسترش روز افزون اطلاعات و نیاز روز افزون کاربران برای ذخیره و بازیابی اطلاعات و دسترسی سریع به اطلاعات و لزوم تامین امنیت اطلاعات ، لازم بود برنامه های تخصصی و ویژه ای برای این منظور ایجاد شوند . لذا چندین شرکت تصمیم به طراحی و تولید چنین برنامه هایی را گرفتند که از شرکتهای IBM و Microsoft و چند شرکت دیگر به عنوان پیشگامان این امر میتوان نام برد .
برنامه های مذکور پایگاه داده ها نام گرفتند . شرکتهای مذکور باید برنامه هایی را ایجاد میکردند که قابلیت استفاده برای مصارف گوناگون را داشته باشد . در ضمن این برنامه ها باید دارای قسمتی باشند که به عنوان واسط بین برنامه کاربردی و فایلها (منابع داده ) قرار بگیرد و عملیاتهای مربوط به ایجاد ، حذف و تغییر و ... را در منابع داده را کنترل و مدیریت کند . این برنامه واسط را DBMS نامیدند .
DBMS اختصار (DATABASE MANANGMENT SYSTEM ) میباشد که معنای لغوی آن سیستم مدیریت پایگاه داده یا سیستم مدیریت داده ها میباشد .
باید خدمتتون عرض کنم که بزرگترین جهشی که پایگاه داده ها در راستای رشد و تکامل داشت مربوط به همین قسمت یعنی تولید و تکامل DBMS میباشد . گفتیم که وظیفه DBMS این است که بین برنامه کاربردی و منابع داده ها قرار بگیرد و کلیه عملیاتهای مربوط به( ایجاد ، تغییر ، حذف و .... ) منابع داده ها را کنترل و مدیریت کند . کنترل و مدیریت منابع داده ها بسیار کلی و میباشد و اگر بخواهیم منظور از کنترل و مدیریت را کامل شرح دهیم باید ساعتها وقت صرف کنیم و دهها صفحه مطلب بنویسیم که قطعا در این مجموعه نخواهد گنجید ضمن آنکه این مطالب کاربردی نیط نیستند و تنها جنبه اطلاعاتی دارند لذا تنها چند نکته مهم را ذکر میکنم و در صورتی که علاقمند بودید بیشتر بدانید میتوانید به کتابهای موجود در این زمینه مراجعه فرمایید .
منظور از کنترل و مدیریت :
* مصون کردن برنامه های کاربردی در قبال تغییرات در سخت افزار ذخیره سازی .
* مدیریت رکوردهای سرریز که پس از لود اولیه باید در فایل وارد شوند .
* ایجاد فایل با ساختارهای گوناگون
* فراهم کردن امکاناتی برای دستیابی مستقیم و ترتیبی به رکوردها و فیلدها .
* جدا کردن ساختار فیزیکی و منطقی فایلها از یکدیگر
* تامین ایمنی و حفاظت داده ها
* جلوگیری از تکرار ذخیره سازی داده ها ( تاحدی )
* فراهم کردن امکاناتی برای پردازش بلادرنگ (real time ) بسته به نوع سیستم عامل
* تامین صحت داده های ذخیره شده ( تاحدی )
* فراهم کردن امکاناتی برای بازیابی بکمک چند کلید
* فراهم کردن امکاناتی برای استفاده چند کاربر به صورت همزمان از منبع داده و کنترل آن
* کنترل و مدیریت مسائل مربوط به همزمانی و سطح دسترسی کاربران به منبع داده ها
* و .....
با توجه به موارد ذکر شده شرکتها سیستمهای گوناگونی را به این منظور طراحی و تولید کردند که هر سیستم دارای یک رابط گرافیکی برای گرفتن و انجام فرامین کاربر و یک DBMS بود که تمام مطالب ذکر شده در بالا در این سیستمها لحاظ شده بودند . علاوه بر این دو دفترچه ای نیز به همراه سیستم ارائه میشد که حاوی نام و کاربرد توابع موجود در سیستم بود . برنامه نویسان در صورت نیاز میتوانستند از این توابع در برنامه های خود استفاده کنند و دستوری را به سیستم ارسال کنند . رابطه این توابع با سیستم مورد نظر دقیقا مانند رابطه توابع API موجود در ویندوز و خود ویندوز میباشد . اندک زمانی پس از تولید این سیستمها کنسرسیومی تشکیل شد که اقدام به تهیه استانداردهایی در زمینه تولید نرم افزارهای بانک اطلاعاتی کرد و از آن پس تمام شرکتهای تولید کننده ملزم به رعایت این استانداردها بودند . یکی از این تصمیمات و استانداردها یکسان سازی نام توابع در تمام سیستمها بود . دیگر آنکه قرار بر آن شد که یکسری کلمات و عبارات ویژه درنظر گرفته شوند که هر یک معرف عملیاتی ویژه باشند و برنامه ای به تمام سیستمها اضافه شود که وظیفه آن دریافت ، تفسیر و اجرای این عبارات (دستورات ) باشد . مجموعه این کلمات و برنامه ای که وظیفه تفسیر آنها را داشت ، منجر به تولید زبان مشترکی برای بانکهای اطلاعاتی شد . این زبان برنامه نویسی زبان پایه تمام بانکهای اطلاعاتی میباشد که آن را T-SQL مینامند که اختصار (Transact Structured Query Language ) میباشد .
در واقع وظیفه این کلمات و عبارات فراخوانی توابع موجود در سیستم میباشد . دستورات زبانSQL به دوبخش تقسیم میشود :
* دستورات مربوط به کار با داده ها ( DML)
* دستورات مربوط به تعریف داده ها ( DDL )
تمامی سیستمهای ارائه شده در DML دستورات کاملا مشابهی را دارا میباشند اما در بخش DDL دارای تفاوتهای جزئی میباشند . در ضمن سیستمهای مختلف ارائه شده علاوه بر دستوراتی که کار یکسانی را انجام میدهند ممکن است دستورات اضافه تری نیز داشته باشند که وظیفه این دستورات اضافی انجام عملیاتهای ترکیبی میباشد . جلوتر بیشتر با این زبان برنامه نویسی و دستورات آن آشنا خواهیم شد و در مثالهای مختلف از دستورات مختلف این زبان استفاده خواهیم کرد .
خوب تا اینجا با تاریخچه پایگاه داده ها به صورت کلی و ساده آشنا شدیم . در زیر چکیده ای از مطالب بالا را به همراه مزیتهای بوجود آمدن تکنولوژی بانک اطلاعاتی را ذکر خواهم کرد .و از این پس میرویم سراغ مفاهیم کاربردی پایگاه داده ها . دقت کنید که مفاهیم و کلمات مهم را به صورت زیر خط دار و زردرنگ نوشته ام .
از مجموعه مطالب ذکر شده در بالا فهمیدیم که :
با گسترش روز افزون اطلاعات و نیاز کاربران به ذخیره و بازیابی اطلاعات سیستمهایی طراحی شدند که قابلیت استفاده برای مصارف گوناگون را دارا میباشند . همچنین این برنامه ها امکان استفاده اشتراکی از منابع داده را نیز فراهم کردند . در این سیستمها ما به هر فایلی که اطلاعاتی با ساختار معین در آن قرار گرفته است را منبع داده مینامیم. این سیستمها به صورت تخصصی برای ذخیره و بازیابی اطلاعات طراحی و ساخته شده اند از این رو به این سیستمها پایگاه داده ها یا همان بانک اطلاعاتی میگوییم . تمامی پایگاه داده های موجود دارای بخشی با عنوان DBMS یا سیستم مدیریت داده ها میباشند که به عنوان واسط مابین برنامه کاربردی و منبع داده قرار میگیرد و کلیه موارد مربوط به ذخیره و بازیابی لطلاعات را به صورت خودکار کنترل میکند . این سیستم همچنین مسئول تامین امنیت داده های ذخیره شده نیز میباشد . سیستمهای ارائه شده محصول هر شرکتی که باشند از استاندارد واحدی برای ذخیره و بازیابی اطلاعات تبعیت میکنند . در ضمن تمامی پایگاه داده های موجود دارای یک زبان پایه و مشترک با نام T-SQL مبباشند که برنامه نویسان در اکثر موارد بدون آنکه نوع بانک مورد نظر مهم باشد میتوانند از این زبان برای انجام امور بانکی در برنامه های خود استفاده کنند . علاوه بر مطالب ذکر شده باید خدمتتون عرض کنم که بانکهای اطلاعاتی دارای مزیتهای بینظیری میباشند که این مزیتها به تدریج به این تکنولوژی اضافه شدند .از جمله این مزیتها میتوان کنترل متمرکز روی تمام داده هارا نام برد که یکی از مزایای این امر کاهش میزان افزونگی در ذخیره سازی داده ها میباشد .در واقع در تکنولوژی بانکهای اطلاعاتی تکرار ذخیره سازی داده ها به حداقل میرسد که این امر خود دارای مزایای فراوانی میباشد که صرفه جویی در فضای ذخیره سازی و کاهش عملیات سیستم از جمله مهمترین آنها میباشد . یکی دیگر از مزیتهای مهم بانکهای اطلاعاتی این است که با گسترش این تکنولوژی مفهوم چند سطحی بودن و معماری چند لایه به تدریج قوت یافت و بسط پیدا کرد . از دیگر مزایای این تکنولوژی این است که مفاهیمی چون منطق صوری ، سیستمهای خبره ، مفاهیم هوش مصنوعی و ... نیز در این تکنولوژی رخنه کرده اند که این امر موجب میشود که سیستم قادر به استنتاج منطقی از داده های ذخیره شده باشد . و به عنوان آخرین مزیت نیز میتوان این مورد را ذکر کرد که در این سیستمها کاربران در یک محیط انتزاعی (ABSTRACTIVE) و مبتنی بر یک ساختار داده یی تجریدی کار میکنند و بکمک احکام زبانی خاص ، عملیات مورد نظر خود را انجام میدهندو بدین ترتیب برنامه های کاربردی ازداده های محیط فیزیکی کاملا مستقل میشوند .من گفتم آخرین مزیت اما این آخرین مزیت نیست بلکه آخرین مزیتی است که من ذکر میکنم و مزیتهای استفاده از بانک اطلاعاتی نیز آنقدر زیاد است که از حوصله این مقاله خارج میباشد .
تا اینجا بحث بارها به کلمات داده ها و اطلاعات برخورد کرده ایم . اما مفهوم واقعی این دو چیست ؟ در زیر تعریف این دو واژه را برای شما ذکر خواهم کرد و با تفاوتهای این دو آشنا خواهیم شد .
توجه : مطالبی که از اینجا به بعد ذکر خواهند شد بسیار بسیار مهم و حیاتی میباشند لذا خواهشمندم تا زمانی که هر خط را کاملا متوجه نشده اید هرگز سراغ خط بعدی نروید . حتی اگر صد بار یک خط را تکرار کنید .
مفهوم داده :
داده عبارت است از مقادیر صفات خاصه (ATTRIBUTES) انواع موجودیت ها .
خوب با ارائه تعریفی برای داده با دو واژه دیگر نیز برخوردکردیم که احتمالا برای شما نامفهوم میباشد لذا تعریفی برای این دو نیز ارائه خواهم داد .
نوع موجودیت : مفهوم کلی یک پدیده ، شی و یا فرد که در ورد آنها میخواهیم اطلاع داشته باشیم .
صفت خاصه : ویژگی جداساز یک نوع موجودیت از نوع دیگر را گویند .
ببینید دوستان اگر ما یک فرد یا یک شی یا یک پدیده را درنظر بگیریم و بخواهیم در مورد آن اطلاعاتی کسب کنیم آن شی ، یا فرد یا پدیده را موجودیت مینامیم . فرض کنید ما انسان را در نظر میگیریم و از بین انسانها فردی را انتخاب میکنیم و میخواهیم در مورد این فرد اطلاعاتی کسب کنیم . فردی که ما انتخاب کرده ایم موجودیت میباشد . فرض کنید این موجودیت من هستم . خوب من حتما دارای آیتمهایی هستم که من را از شما متمایز میکند . هر یک از این آیتمها را نیز صفت خاصه میگوییم .
خوب اگر من یک موجودیت باشم قطعا یکی از صفات خاصه من نام من میباشد و دیگری نام پدرم و دیگری شماره شناسنامه ام و .... درست ؟ حالا مقدار هریک از این صفات خاصه من را داده میگویند . به عنوان مثال نام من علیرضا است پس عریضا یک داده است . شماره شناسنامه من 1912 میباشد پس عدد 1912 داده بعدی من میباشد و ...
پس موجودیت ما یک انسان در نظر گرفته شد که این انسان توسط یـکسری صفاتی دارد که مختص انـسـان اسـت ( صفات خاصه ) و هر یک از این صفات خاصه دارای مقداری هستند که این مقدار نیز همان داده است
اطلاع : اطلاع از داده حاصل میشود و در حل مسائل به کار میرود .
ببینید هر داده هنگامی که در یک موقعیت مشخص برای حل مساله ای به کار گرفته شود به اطلاع تبدیل میشود . در بالا موجودیت ما انسان بود که بنده بودم خوب من به جز نام و شماره شناسنامه و ... صفات خاصه دیگری نیز دارم که یک نمونه از آنها معدل دیپلم من است . فرض کنید معدل دیپلم من 17 باشد . پس 17 نیز یک داده است . حال اگر بخواهیم بالاترین معدل را در بین دانش آموزان دیپلم گرفته تهران پیدا کنیم چون از داده های موجود در فرمول پیدا کردن ماکزیمم استفاده میکنیم لذا عدد 17 که تاکنون داده بود به اطلاع تبدیل میشود
میدانم که احتمالا درک این مطالب احتمالا کمی مشکل به نظر میآید اما اگر کمی دقت کنیم میبینیم که اتفاقا بسیار ساده هستند . از طرفی اگر کسی این مفاهیم را نفهمد قطعا از اینجا به بعد هیچ چیز دیگری را نیز نخواهد فهمید چون از این واژه ها و مفاهیم آنها بارها و بارها استفاده خواهیم کرد و پایه تمام مطالب جدیذی که جلوتر ذکر خواهم کرد .
یک بار دیگر و برای آخرین بار این مطالب را با مثال شرح میدهم و سپس به سراغ مطالب بعدی خواهیم رفت .
در کل چهار تا واژه بسیار مهم و کاربردی داریم :
* داده
* موجیدیت
* صفت خاصه
* اطلاع
در این کره خاکی و این جهان هستی ما سه تا دسته بیشتر نداریم . یعنی هر چیزی که ما میتوانیم نام ببریم یا یک شی (مانند قابلمه ) است یا یک فرد ( مانند شما ) است یا یک پدیده ( مانند زلزله ) . ما به هریک از اجزاء این سه دسته موجودیت میگوییم . چرا چون وجود دارد . یعنی قابلمه وجود دارد پس قابلمه یک موجودیت میباشد . حالا ما چندین و چند مدل قابلمه داریم که این قابلمه ها با هم فرقهایی دارند . خوب عامل این تفاوتها چیست ؟ درسته هر قابلمه دارای یکسری خصوصیتها و صفاتی میباشد که این قابلمه را از قابلمه دیگر جدا میکند و علاوه بر آن همان صفات باعث میشنود تا بین من و قابلمه هم فرقی بوجود آید جون قابلمه صفاتی دارد که من ندارم و این صفات مخصوص قابلمه است نه انسان ! پس قابلمه دارای یکسری صفات است که مخصوص قابلمه است که ما به هر یک از این صفات صفت خاصه میگوییم . هر صفت خاصه این قابلمه دارای یک مقدار است . مثلا اگر رنگ قابلمه را به عنوان یکی از صفات خاصه آن در نظر بگیریم قطعا این صفت خاصه مقداری دارد که ما فرض میکنیم نارنجی است . خوب نارنجی هم شد داده ما . حالا اگر ما در یک پردازش یا در حل یک مساله از نارنجی استفاده کنیم نارنجی از داده به اطلاع تبدیل میشود . امیدوارم دیگه همه این مفاهیم را فهمیده باشند .
پس در حالت کلی موجودیت هر شی یا عین قابل تمیز است که ما میخواهیم داده های آن را در بانک بریزیم و در صورت نیاز از آن اطلاعات داشته باشیم /. اگر ما مجموعه ای از موجودیت ها را در نظر بگیریم به ان مجوعه محیط عملیاتی میگویند . فرضا اگر موجودیت ما دانشجو باشد محیط عملیاتی ما میشود دانشگاه . محیط عملیاتی بر اساس نوع برنامه ای که قرار است درست کنیم تغییر میکند . اگر بخواهیم برنامه کتابخانه بنویسیم موجودیت ما کتاب است و محیط عملیاتی ما نیز کتابخانه . اگر بخواهیم برنامه ای برای انتخاب واحد دانشجویان بنویسیم موجودیت ما میشود دانشجو و محیط عملیاتی ما نیز دانشگاه میباشد .
محیط عملیاتی هر چیزی که باشد موجودیتهای آن با هم ارتباطاطی دارند . به عنوان مثال بین دانشجو و درس ارتباطاطی وجود دارد که دانستن این ارتباطات در طراحی برنامه نقش حیاتی دارند . ارتباط بین موجودیت ها انواع مختلفی دارد که در زیر ذکر خواهم کرد :
* ارتباط یک به یک
* ارتباط یک به چند
* ارتباط چند به یک
* ارتباط چند به چند
تشخیص موجودیت های یک محیط عملیاتی و تعیین ارتباطات بین آنها از مهمترین وظایف یک طراح بانک اطلاعاتی میباشد . تعیین درست این ارتباطات نقش به سزایی در کارایی سیستم و بانک طراحی شده دارد لذا یکی از مهمترین مباحث موجود در بانکهای اطلاعاتی میباشد . در مبحث بعدی با این مفاهیم بیشتر آشنا خواهیم شد
.::مرجع کد آهنگ::.
.::دریافت کد موزیک::.