به طور کلی برنامه یا فضایی که در آن بتوان دادهها را طبق اصولی خاص ذخیره کرد، امکان ویرایش، اضافه یا حذف دادهها را داشت و در زمان مورد نیاز بتوان به راحتی به دادهها دسترسی داشت، پایگاه داده است. استفاده از پایگاه داده به منظور آسان شدن مدیریت دادهها است؛ زیرا علاوه بر طبقهبندی و ذخیره کردن درست دادهها، به راحتی میتوان به آنها دسترسی داشت و در صورت لزوم، تغییرات را اعمال کرد. دستهبندی شدن اطلاعات به ما کمک میکند کارهایی چون تحلیل و ارزیابی را نیز به راحتی انجام دهیم. این کار موجب میشود در برخی از تصمیمگیریها بهتر عمل نماییم.
پایگاه داده (database)چیست؟
پایگاه داده (Database) از یک سری داده تشکیل شده که در یک قالب خاص ذخیره گشتهاند؛ یک بانک اطلاعاتی ممکن است از یک یا چند جدول تشکیل شده باشد که هر جدول شامل ردیفها (Rows) و ستونهایی (Columns) است که با دادههای مختلف پر شدهاند.
به عنوان مثال یک فروشگاه اینترنتی را در نظر بگیرید که خریداران در آن ثبت نام کردهاند؛ پایگاه داده این فروشگاه شامل جدولهای مختلفی اعم از جدول کاربران، محصولات، گروههای محصولات و … میباشد.
جدول کاربران میتواند دارای فیلدهایی مانند نام، نام خانوادگی، تلفن، آدرس، کد پستی و … باشد، که هر فیلد با اطلاعات مختص به هر کاربر پر میشود.
مزایای دیتابیس
اشتراکگذاری دادهها میان کاربران
در پایگاه داده کاربران میتوانند دادههای خود را با یکدیگر به اشتراک بگذارند. این کار طبق مجوزهای دسترسی که هر کاربر دارد قابل انجام است. به عنوان مثال، در شبکههای اجتماعی مختلف هر کاربر میتواند اطلاعاتی را منتشر نماید. اینکه این اطلاعات به دست چه کسانی برسد قابل تنظیم کردن است.
کاهش ذخیرهسازی دادههای تکراری
در شرایطی که شما از پایگاه داده استفاده نکنید، ممکن است اطلاعاتی را به صورت تکراری ذخیره کرده که اصطلاحا به این کار افزونگی دادهها میگویند. داشتن دادههای تکراری کمترین آسیبی که دارد، پر کردن فضای ذخیرهسازی ما است. همچنین در صورت اعمال تغییر روی یک قسمت، بقیه اطلاعات مشابه تغییری نمیکنند که مشکلاتی را میتواند باعث شود. این در حالی است که اگر از پایگاه داده استفاده کرده باشید، تا حد خیلی زیادی از ذخیره کردن اطلاعات تکراری جلوگیری شده و به راحتی تغییر روی آن میتوانید اعمال نمایید.
حفظ بهتر امنیت دادهها
میتوان در دیتابیس برای کاربران مختلف سطح دسترسی مشخص نموده و کاربرانی که اصلا عضو مجموعه نیستند را از دسترسی به اطلاعات پایگاه داده محروم کرد. این مسئله به حفظ بهتر امنیت دادهها کمک مینماید. از طرفی چون تمام اطلاعات در یکجا طبقهبندی شدهاند، حفظ و نگهداری آنها سادهتر خواهد بود.
آسان بودن انتقال اطلاعات
در صورتی که نیاز شود که دادهها جابهجا شوند و تغییراتی روی آنها اعمال شود به راحتی میتوان این کار را در پایگاه داده انجام داد.
کمک به تصمیمگیری
در سطح مدیریت یک سیستم، نیاز به تحلیل دادهها وجود دارد تا بر اساس آنها تصمیمگیری شود. پایگاه داده چون اطلاعات را طبق قاعده ذخیرهسازی کرده است، کار تحلیل و بررسی آنها را نیز ساده میکند. به کمک دیتابیس میتوانید اطلاعات در دسترس را به سادگی ارزیابی کرده و به هنگام تصمیمگیریها از نتیجه ارزیابی استفاده نمایید.
معایب دیتابیس
داشتن پایگاه داده معایبی نیز دارد که اجتناب ناپذیر است. برخی از مهمترین معایب پایگاههای داده عبارت است از:
- طراحی پیچیده و زمانبر پایگاه داده
- هزینه بالا برای تهیه سختافزار و نرمافزار مورد نیاز
- لازم بودن ارائه آموزش به کاربرانی که از دیتابیس قرار است استفاده کنند
- و…
البته این نکته را باید مدنظر داشته باشید که این معایب مانع استفاده از پایگاه داده نمیشود. مزیتهای دیتابیس بسیار باارزشتر از مواردی است که به عنوان معایب این سیستم معرفی شد.
مفاهیم پایگاه داده (database)
در حال حاضر تقریباً تمامی کسبوکارهای مدرن از پایگاههای داده برای مدیریت امور روزمره خود استفاده میکنند. به عنوان مثال در یک هتل، شما میتوانید مدلی برای بررسی خالی بودن اتاقهای موجود را داشته باشید. این مدل، نمونهای از یک وب سایت پویا است که از دیتابیس استفاده میکند. امروزه پایگاههای داده بسیاری مانند MySQL، Sybase، Oracle، MongoDB، Informix، PostgreSQL، SQL Server و غیره در دسترس بوده و هر یک از آنها ویژگیهای خاص خود را ارائه میدهند.
پایگاه دادههای مدرن توسط سیستم مدیریت DBMS مدیریت میشوند. زبان برنامهنویسی پایگاههای داده نیز SQL است. با آشنایی به قواعد این زبان برنامهنویسی، قادر خواهید بود دادههای ذخیره شده خود در هر جدول را استخراج، مقایسه و حتی با یکدیگر ادغام کنید.
پایگاه داده مبتنی بر فایل
این نوع پایگاه داده که در سال ۱۹۶۸ معرفی شد، دادهها را در یک فایل مسطح ذخیرهسازی میکرد. این ساختار در کنار سادگی استفاده، محدودیتهای بسیاری را نیز شامل میشود. در واقع این روش در کنار مشکلات امنیتی، دست برنامه نویسان در استفاده از دادهها را نیز باز نمیگذاشت. با این وجود از مزیتهای اصلی این روش میتوان به دسترسی ساده با یک نرمافزار به دادهها اشاره کرد. این روشها شامل ترتیبی، نمایه سازی شده و تصادفی است. این روش ذخیرهسازی نیاز به برنامه نویسی گسترده در یک زبان نسل سوم مانند COBOL ،BASIC دارد.
دیتابیس مدل داده سلسله مراتبی
سالهای ۱۹۶۸ تا ۱۹۸۰ به عصر دیتابیس سلسله مراتبی معروف است. مدل سلسله مراتبی برجسته اولین DBMS IBM بود. در این سیستم که IMS (سیستم مدیریت اطلاعات) نام داشت، فایلها به صورت والد/فرزند به هم مرتبط میشدند. نمودار زیر مدل داده سلسله مراتبی را نشان میدهد. دایره کوچک نشان دهنده اشیاء است.
پایگاههای داده گراف
گراف یک پایگاه داده NoSQL برای نمایش گرافیکی از دادهها است. این دیتابیس شامل گرهها و لبههاست؛ یک گره نشان دهنده یک موجودیت است و هر لبه نشان دهنده رابطه بین دو موجودیت درنظر گرفته شده است. هر گره نیز یک شناسه منحصر به فرد دارد.
پایگاه دادههای گراف برای جستجوی رابطه بین دادهها مفید هستند؛ زیرا رابطه بین دادههای مربوطه را متمایز میکنند.
دیتابیسهای گراف زمانی بسیار مفید هستند که دارای یک رابطه پیچیده و طرح واره پویا باشد. بیشتر در مدیریت زنجیره تامین، شناسایی منبع تلفن IP استفاده میشود.
معرفی انواع پایگاه داده
۱. پایگاه داده رابطهای: بانک اطلاعاتی رابطهای (Relational Database) دادههای موجود را به صورت مجموعهای از جدولهایی که دارای ستون و ردیف هستند سازماندهی میکند.
برای مدیریت و بهروزرسانی این نوع پایگاه داده از سیستم مدیریت پایگاه داده رابطهای (RDBMS) استفاده میشود؛ در ضمن برای آپدیت، حذف یا افزودن دادهها در پایگاه داده رابطهای معمولاً از زبان SQL استفاده میگردد.
لازم به یادآوری است که از بانک اطلاعاتی رابطهای نباید برای حجم زیادی از دادههای انبوه بدون ساختار یا نیمهساختیافته استفاده شود.چند نمونه از بانک اطلاعاتی رابطهای عبارتند از: Microsoft Access, Microsoft SQL Server, MySQL, Oracle, PostgerSQL
۲. پایگاه داده NoSQL: یا پایگاه داده غیر رابطهای (Non-Relational Database) یکی دیگر از انواع پایگاه داده است که اجازه ذخیره دادههای بدونساختار و نیمهساختیافته را میدهد.پایگاه داده NoSQL در مقایسه با پایگاه داده رابطهای یک مزیت عالی دارد اینکه میتوان تغییراتی را در حین اجرای پایگاه داده ایجاد کرد بدون آنکه خللی در کار برنامههایی که از آن استفاده میکنند وارد شود.MongoDB, Apache Cassandra, CouchDB, CouchBase از انواع پایگاه داده غیررابطهای هستند.
۳. پایگاه دادههای شیگرا: در این مدل بانک اطلاعاتی تمامی دادهها و صفتهای آن مانند یکشی به یکدیگر وابسته هستند؛ و توسط سیستم مدیریت بانک اطلاعاتی شیگرا (OODBMS) مدیریت میشوند.پایگاه داده شیگرا (Object-Oriented Database) با زبانهای برنامه نویسی شیگرا مانند جاوا و سیپلاسپلاس سازگار میباشد.اگر بخواهیم به نمونههایی از این نوع پایگاه داده اشاره کنیم میتوان ObjectStore و Wakanda را نام برد.
۴. پایگاه داده ابری: بانکهای اطلاعاتی ابری (Cloud) در فضای ابری اجرا میشوند، و دارای مزایایی چون منعطف بودن، قابل ارتقا، تطبیقپذیر بودن و عدم نیاز به تعمیر و نگهداری بالا هستند.بانک اطلاعاتی خودگردان اوراکل و پایگاه داده اسکیوال مایکروسافت Azure نمونههایی از این نوع بانک اطلاعاتی میباشند.
۵. پایگاه داده سلسله مراتبی: در این نوع بانک اطلاعاتی از مدل «والد-فرزند» برای ذخیره کردن دادهها استفاده میشود.منظور از مدل والد-فرزند این است که والد در بالاترین نقطه قرار دارد که شامل چندین شاخه (فرزند) میباشد، هر فرزند فقط میتواند یک والد داشته باشد.از نمونههای بانک اطلاعاتی سلسله مراتبی میتوان سیستم مدیریت اطلاعات IBM و رجیستری ویندوز را نام برد.
۶. بانکهای اطلاعاتی کلید-مقدار: در این مدل بانک اطلاعاتی دادهها به شکل زوج کلید-مقدار (Key-Value) ذخیره میشوند؛ پایگاه داده کلید-مقدار به دلیل تطبیقپذیری بالا و همچنین قابل ارتقا بودن آسان برای اداره کردن حجم وسیعی از ترافیک مناسب است.از کاربردهای این مدل میتوان به سبد خرید آنلاین و مدیریت نشستها (Session) اشاره کرد، همچنین Redis و DynamoDB از نوع پایگاه داده کلید-مقدار هستند.
۷. پایگاه داده ستونی: یکی دیگر از انواع پایگاه داده، بانک اطلاعاتی ستونی (Columnar) است که به صورت ستونی دادهها را در خود ذخیره میکند.در انبارهای داده (Data Warehouse) معمولاً از این مدل پایگاه داده به دلیل عملکرد خوب در اداره کردن کوئریها استفاده میگردد؛ همچنین از دادههایی که مرتبط با کوئری نیستند چشمپوشی میکند.نمونههایی که از این نوع پایگاه داده هستند شامل MariaDB, BigQuery, HBase, Azure SQL و … میباشد.
۸. بانک اطلاعاتی توزیع شده: پایگاه داده توزیع شده (Distributed Databases) یکی دیگر از انواع پایگاه داده است که در سایتهای مختلف عمل ذخیره سازی دادهها را انجام میدهد؛ و به دو نوع پایگاه اطلاعاتی توزیع شده همگن و ناهمگن تقسیم میشود.در پایگاه اطلاعاتی توزیع شده همگن، مدیریت دادههای توزیع شده توسط یک DBMS انجام میگیرد؛ اما در بانک اطلاعاتی توزیع شده ناهمگن، DBMS ها متفاوت بوده و هر سایت سیستم مدیریت پایگاه داده خود را دارد.
۹. پایگاه داده سند-گرا: در این مدل بانک اطلاعاتی، دادهها به شکل سندهای جیسون (JSON) ذخیره میشود.
۱۰. پایگاه داده گراف: بانک اطلاعاتی گراف (Graph Database) از نوع بانکهای اطلاعاتی NoSQL بوده که از ترکیب شدن دنبالهای از گرهها و ارتباطات با هم تشکیل شده است.اجزای اصلی پایگاه داده گراف شامل گره، رابطه و خصوصیت میباشد؛ Datastax Enterprise Graph, Neo4J دو نمونه از این نوع بانک اطلاعاتی هستند.
تفاوت پایگاههای داده و صفحات گسترده (DataSheetها)
دیتابیسها و صفحات گسترده مانند Microsoft Excel هر دو راه مناسبی برای ذخیرهسازی اطلاعات هستند؛ اما تفاوتهایی نیز میان این دو وجود دارند. برخی از این تفاوتها عبارتاند از:
- نحوه ذخیرهسازی و ویرایش دادهها
- افرادی که امکان دسترسی به دادهها را دارند
- میزان ذخیرهسازی دادهها
نکتهای که باید به آن توجه کرد، این است که صفحات گسترده در ابتدا فقط برای استفاده یک نفر طراحی شده بودند. این موضوع را میتوان با دقت در طراحیهای اولیه آنها نیز متوجه شد. بنابراین، استفاده از این ابزارها که نمونه مشخص و بسیار معروف آنها اکسل است، برای دسترسی یک یا تعداد کمی از کاربران به دیتاها بسیار کارایی دارد. بااینحال، اگر قرار باشد که مجموعه بسیار بزرگتری از دیتاهای سازمانیافته را ذخیره کنید، دیگر اکسل برایتان کاربردی نیست و باید از پایگاههای داده استفاده کنید. همچنین، پایگاهداده امکان استفاده و دسترسی همزمان چندین کاربر به دیتاها را فراهم میکند.
زبان دسترسی به پایگاه داده (Database access language):
زبان دسترسی به پایگاه داده این امکان را فراهم می کند که بتوانیم داده ها را به پایگاه داده ارسال کنیم و همچنان به آن ها نیز دسترسی داشته باشیم. در آموزش پایگاه داده متوجه می شوید که وارد کردن داده های جدید به دیتا بیس یا آپدیت کردن داده های قدیمی نیز با استفاده از زبان های دسترسی پایگاه داده صورت می گیرد.
بازیابی داده ها در سیستم پایگاه داده نیز با استفاده از زبان دسترسی به پایگاه داده صورت می گیرد. نحوه استفاده از این زبان نیز به این صورت است که هر عملی که قصد دارید روی داده ها انجام بدهید را با استفاده از زبان دسترسی به پایگاه داده می نویسید. پس از آن که دستورات را نوشتید، به سراغ DBMS می روید تا نتیجه آن را به شکل قابل خواندن توسط کاربر مشاهده کنید.
مراحل طراحی پایگاه داده چیست
فهرست پدیدهها و ویژگیهایشان را بسازید
پایگاه داده رابطهای بر مبنای یکسری جدول شکل میگیرد. هر سطر این جدولها مربوط به یک پدیده (کاربر، کالا، کارمند یا..) و هر ستون شامل ویژگیهای آن (نامکاربری، قیمت، شمارهپرسنلی یا…) خواهد بود. ابتدا باید تمام پدیدههای مورد بررسی را مشخص کرده و سپس تمام ویژگیهای مهم آنها را روی کاغذ بیاورید
جدول اولیه را روی کاغذ طراحی کنید
در ادامه یک فهرست دارید شامل پدیدهها و ویژگیهای مهم هر پدیده. حالا نوبت به طراحی جدول از این فهرست میرسد. فرض کنید کسب و کار شما میخواهد پایگاه دادهای از مشتریان و اطلاعات آنها داشته باشد.
تعیین نوع دادهها
پس از طراحی یک جدول اولیه روی کاغذ، نوبت به تعیین نوع داده هر ستون میرسد. این جدولها قرار است وارد یک زبان برنامهنویسی شوند و اولین قدم در برنامهنویسی، تعیین نوع دادهها است. برای مثال دادههای ستون سن از جنس int دادههای ستون نام از جنس varchar خواهند بود.
تعیین کلید اصلی برای هر جدول
در این مرحله باید بدانید چند جدول دارید، هر کدام توصیف کننده کدام پدیده هستند و چه ویژگیهایی از آن پدیده را توصیف خواهند کرد. در ادامه برای هر جدول یک کلید اصلی (Primary Key) مشخص کنید. این کلید بهمعنای مقداری است که باعث مجزا شدن ردیفهای جدول از یکدیگر میشود.
برای مثال مشتری، بهترین گزینه برای کلید اصلی شماره ملی خواهد بود چون که منحصربهفرد است و مشتریان را از یکدیگر مجزا میکند. مقدار ستون کلید اصلی هیچگاه نباید null باشد. بههمین دلیل است که اغلب کسبوکارها به هر سفارش یا مشتری یک عدد چندرقمی یا کد شامل حرف و رقم اختصاص میدهند.
تخمین فضای لازم
با توجه به جدولهای اولیه میزان فضای دیجیتالی لازم برای پایگاه داده را تخمین بزنید.
تعیین روابط بین جدولها
در بررسی سیستم رابطهای مدیریت پایگاه داده لازم داریم بدانیم بین جدولهایمان چه روابطی وجود دارد. این رابطه میتواند یکبهیک، یکبهچند، چندبهچند، چندبهیک، اجباری، بازگشتی یا زائد باشد. روابط زائد یعنی روابطی که دو بار بیان شدهاند و باید یکی از آنها را حذف کنیم.
نرمالیزه کردن
قبل از اینکه به طراحی نهایی برسیم نیاز است دستهبندیهای خود را نرمالیزه کنیم. این کار باعث سرعت و دقت عملکرد بهتر خواهد شد.
برنامهنویسی
حالا دادههای شما آماده ورود به فضای دیجیتال از طریق زبان SQL اند. یادگیری این زبان کار سختی نبوده و بهراحتی میتوانید آن را بیاموزید.