دیتابیس رابطه ای(Relational Database) چیست؟

دیتابیس رابطه ای(Relational Database) چیست؟
()

پادکست این مقاله«تولید شده با هوش مصنوعی»

همواره دغدغه برنامه نویسان انتخاب بهترین نوع دیتابیس برای قرار دادن داده های خود بر روی آن است.یکی از گزینه هایی که به عنوان مقدم ترین استفاده میشود دیتابیس رابطه ای یا Relational Databse است. احتمالا شما به عنوان یک برنامه نویس بک اند نام دیتابیس رابطه ای را شنیده اید اما آیا میدانید ساختار دیتابیس رابطه ای چگونه است؟ در این مقاله دقیقا در خصوص این موضوع صحبت خواهد شد.پس تا پایان مقاله ما را همراهی کنید.

مقدمه

از بدیهی ترین مواردی که ما را نیازمند به دیتابیس میکند وجود داده های زیاد است. چرا که نمیتوان آن ها را به صورت محلی (Local) و یا در متغیرها داده ها را ذخیره کرد.علاوه بر آن نیاز است تا به صورت دائم دسترسی به داده ها امکان پذیر باشد.همچنین بتوان آن ها را مدیریت کرد.پس در چنین حالتی استفاده از دیتابیس یک کار کاملا منطقی است. اما ممکن است شما در انتخاب نوع دیتابیس گیج شوید. چرا که علاوه بر دیتابیس رابطه ای (Relational Database)، دیتابیس های غیر رابطه ای ( No SQL) نیز وجود دارد و شما باید بنابر نیاز خود یکی از این دو رو انتخاب نمائید.

دیتابیس رابطه ای ( Relational Database) چیست؟

پایگاه داده یا دیتابیس رابطه ای یکی از انواع دیتابیس هایی است که استفاده بسیار زیادی در بین نرم افزار ها و وبسایت مختلف دارد.منظور از رابطه یا Relation به این معناست که بعضی از داده ها میتوانند با یکدگیر ارتباط یا Relation داشته باشند. در ادامه با مفاهیمی مثل جدول،رکورد،ستون و… آشنا خواهیم شد.

اما اگر بخواهیم از نظر ریاضی به این موضوع نگاه کنیم وجود جبرهای رابطه ای باعث ایجاد دیتابیس رابطه ای شده اند. دستورات SQL مانند SELECT,DELETE,DROP و… بر اساس جبرهای رابطه ای تعریف شده اند. سیستم مدیریت دیتابیس یا DBMS هایی مثل MySQL و PostgreSQL نسبت به بقیه بیشتر از این حالت پشتیبانی میکنند.

مفاهیم کلیدی دیتابیس رابطه ای

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

جدول:

داده ها در جداول ذخیره میشوند و با ایجاد دسترسی به دیتابیس یا اصطلاحا رشته اتصال(Connection String) میتوان به جداول و محتویات درون آن دسترسی داشت

ستون:

در هر جدول تعدادی ستون وجود دارد منظور از ستون مواردی است که ما برای ذخیره داده مشخص میکنیم. به عنوان مثال ستون نام،نام خانوادگی،ایمیل،نشانی، رمز عبور،تاریخ تولد و… همگی از ستون های یک جدول هستند.

سطر:

علاوه بر ستون ها،سطرهایی در دیتابیس رابطه ای وجود دارد. به سطرها یک رکورد(Record) نیز میگویند.برای مثال در جدولی که مربوط به اطلاعات کاربران(User) است مجموعه ای از ستون هایی که برای یک آیتم(مورد) تکمیل شده است سطر یا Record میگویند.

مثلا: نام: محمدرضا نام خانوادگی: رضایی ایمیل: mohammadreza.rz@info.com رمز عبور:123456

ارتباط بین جداول:

همانگونه که از اسم دیتابیس رابطه ای پیداست یعنی داده ها میتوانند با یکدیگر ارتباط داشته باشند.زمانی که شما میخواهید سفارشات کاربر در یک سایت فروشگاهی را واکشی کنید نیاز است تا سفارشات مربوط به کاربر مورد نظر را انتخاب کنید. در چنین حالتی جدول کاربران یا User باید با جدولی با نام فرضی OrderDetails ارتباط داشته باشد.چنین موردی فقط در دیتابیس رابطه ای وجود دارد. به وسیله یک کلید خارجی یا Foreign Key میتوان جداول را به هم مرتبط کرد.

فیلد(Filed)

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

کلید اصلی(Primary Key):

یکی از مفاهیم بسیار ساده اما خیلی کاربردی و مهم کلید اصلی یا Primary Key است. تصور کنید دو کاربر نام و نام خانوادگی آن ها شبیه هم باشد شما چگونه آن ها را از هم تشخیص میدهید؟ یکی از کارها استفاده از کد ملی افراد است.چرا که کد ملی کاملا منحصر به فرد است و امکان ندارد که کد ملی دو شخص مشابه هم باشد.

در دیتابیس رابطه ای نیز دقیقا به همین شکل است. شما برای این که بتوانید یک کاربر،یک سفارش،یک نظر(Comment) و… را نسبت به بقیه منحصر به فرد(Uniqe) کنید نیاز است تا در هر جدول یک فیلد id ایجاد کنید. به این وسیله به راحتی میتوانید کاربران را منحصر به فرد کنید و اطلاعات هر شخص را ساده تر واکشی کنید.

قانون یکپارچگی(Refrential Integiry)

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

کوئری یا پرس و جو(Query)

دیتابیس ها به شیوه ایجاد یک پرس و جو یا اصطلاحا کوئری داده ها را واکشی میکنند.یعنی نیاز است تا یک سری دستورات از پیش تعیین شده را به همراه فیلدهای مورد نیاز بنویسید تا بتوانید داده ها را واکشی،بروزرسانی،حذف یا ایجاد کنید که اصطلاحا این کار به عملیات CRUD(Create,Read,Update,Delete) میگویند.

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

دیتابیس های رابطه ای از زبان SQL استفاده میکنند اگر بخواهیم کلمه SQL را گسترش دهیم، کلمه Structued Query Language یا زبان پرس و جوی ساختار یافته خواهد شد. تلفظ دقیق این کلمه، سی کو اِل است.برخی به اشتباه آن را اِس کیو اِل ترجمه میکنند که این تلفظ کاملا اشتباه است.

نرمال سازی(Normalization)

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

مزایای دیتابیس های رابطه ای

اگر بخواهیم فقط به چند مورد از مزایای استفاده از دیتابیس های رابطه ای بپردازیم میتوانیم به موارد زیر اشاره داشته باشیم:

سازماندهی شده بودن

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

امنیت و کنترل دسترسی

بی شک بحث امنیت برای هر وبسایت و نرم افزار اهمیت بسیار زیادی دارد و دیتابیس ها نیز از این قاعده مستثنی نیستند.دیتابیس های رابطه ای با ارائه قابلیت هایی مثل مجوزها(Permissions)،نقش ها(Role) و سیاست های امنیتی(Policies) است.

مجوزها: هر کاربر فقط میتواند به تعداد محدودی از دستورات SQL دسترسی داشته باشد مانند SELECT و DELETE

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

سیاست های امنیتی: مدیران دیتابیس برای جلوگیری از دسترسی کاربران غیرمجاز به داده های درون دیتابیس راه حل های متفاوتی را انتخاب میکنند.به عنوان مثال محدود کردن View یا بخشی از داده های کاربران باعث میشود تا کاربر فقط بتواند اطلاعات خود را مشاهده کند اما نمیتواند تغییری در آن ها ایجاد کند.

نقش های کاربری در دیتابیس های رابطه ای

همان گونه که در یک وبسایت یا نرم افزار میتوان نقش های کاربری متفاوتی مانند نویسنده،فروشنده و… ایجاد کرد در دیتابیس رابطه ای نیز چنین مواردی را میتوان لحاظ کرد که در ادامه به نقش های کاربری متفاوتی که در دیتابیس رابطه ای وجود دارد اشاره میکنیم:

DBA(مدیر دیتابیس)

مدیر دیتابیس یا اصطلاحا Database Admin بالاترین سطح دسترسی به دیتابیس است که شامل تمامی مجوزها(Permissons) است. مدیر دیتابیس میتوان دسترسی کامل به تمامی پایگاه های داده تعریف شده داشته باشد و اطلاعات درون جداول و سطرها را ویرایش کند.

Editor

ویرایشگر یا Editor میتواند فقط از دستورات INSERT,DELETE,Update استفاده کند.برای مثال افرادی که نقش نویسنده در یک وبسایت دارند با این نوع از دسترسی شناخته می شوند.

Read-Only

کاربرانی که مجوز فقط خواندنی یا Read-Only دارند میتوانند داده های درون جدول ها را ببینند اما نمیتوانند در آن تغییری ایجاد کنند.مانند افرادی که قصد گزارش گیری(Log) از دیتابیس یا جدول مورد نظر دارند.

مهمان:

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

نقش های سفارشی(Custom Roles)

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

چه راهکارهایی برای مدیریت بهتر نقش ها وجود دارد؟

اصل کمترین امتیاز (Principle of Least Privilege)

بهتر است هر کاربر فقط به دسترسی های مورد نیاز خود دسترسی داشته باشد.به عنوان مثال یک کاربر عادی نیازی نیست که از نوع DBA باشد.

استفاده از نقش های گروهی(Group Roles)

به جای تعریف نقش های کاربری متعدد بهتر است نقش های گروهی تعیین کنید تا آن دسته از کاربران بتوانند به موارد مورد نیاز خود دسترسی داشته باشند.

بازبینی دوره ای مجوزها

بهتر است هر چند وقت یکبار مجوزهای نقش های کاربری را بررسی کنید تا از کارکرد صحیح مجوزها مطمئن شوید.با دستوراتی مثل SHOW GRANTS میتوانید دسترسی ها را بررسی کنید.

تفکیک محیط

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

سیستم مدیریت پایگاه داده(DBMS):

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

از معروف ترین سیستم های مدیریت پایگاه داده در دیتابیس رابطه ای میتوان به SQL Server,MySQL,SQLite،Oracle و PostgreSQL اشاره داشت که همگی مزیت ها و معایب خاص خود را دارند.

معایب دیتابیس های رابطه ای

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

نتیجه گیری

در این مقاله ابتدا به تعریف دیتابیس رابطه ای و مفاهیم مهم آن پرداختیم و در خصوص معروف ترین سیستم های مدیریت پایگاه داده یا DBMS نیز صحبت کردیم.اما تصمیم گیری استفاده از دیتابیس های رابطه ای بر عهده شما است و شما باید بر اساس مقیاس پروژه های خود از آن استفاده کنید از دیتابیس های غیر رابطه ای یا NOSQL استفاده کنید.

امیدواریم این مقاله برای شما مفید واقع شده باشد.خوشحال میشویم نظرات خود را با ما در میان بگذارید😊❤️

آیا این پست برای شما مفید بود؟

روی ستاره ها کلیک کنید و امتیاز دهید😊

میانگین امتیاز / 5. تعداد امتیاز:

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

دیدگاه‌ها ۰
ارسال دیدگاه جدید