زبان کنترل داده (DCL) چیست؟
مقدمهای بر زبان کنترل دادهها
زبان کنترل داده (DCL) جزئی از زبان پرسوجوی ساختاریافته (SQL) است که برای مدیریت و کنترل دسترسی به دادهها در یک پایگاه داده استفاده میشود. دستورات DCL در درجه اول مربوط به امنیت پایگاه داده و مجوزهای کاربر هستند و به مدیران اجازه میدهند تعریف کنند چه کسی میتواند اقدامات خاصی را روی اشیاء پایگاه داده مانند جداول، نماها و طرحوارهها انجام دهد.
در RDBMS (سیستم مدیریت پایگاه داده رابطهای)، SQL (زبان پرسوجوی ساختاریافته) برای انجام عملیات مختلف در پایگاه داده استفاده میشود. دستورات SQL معمولاً به DDL (زبان تعریف داده)، DQL (زبان پرسوجوی داده)، DML (زبان دستکاری داده) و DCL (زبان کنترل داده) طبقهبندی میشوند. زبان کنترل دادهها برای کنترل دسترسی به دادههای ذخیره شده در پایگاه داده استفاده میشود. DCL در مواردی که پایگاه داده در معرض چندین کاربر قرار دارد که ممکن است پایگاه داده را بهروزرسانی یا تغییراتی در آن ایجاد کنند که به نوبه خود ممکن است مشکلات زیادی ایجاد کند، بسیار مفید خواهد بود.
چرا به زبان کنترل دادهها نیاز داریم؟
اینها برخی از نیازهای زبان کنترل دادهها هستند که باید از آنها آگاه باشیم:
- برای کنترل امتیازات داده شده به کاربران در یک پایگاه داده استفاده میشود.
- با ارائه دسترسی یا حذف آنها به کاربران، از ایجاد تغییرات یا بهروزرسانی در پایگاه داده توسط سایر کاربران جلوگیری میکند.
- لازم به ذکر است که همه کاربران یک پایگاه داده، تمام امتیازات لازم برای انجام تمام عملیات مربوط به یک پایگاه داده را ندارند، به عنوان مثال، همه کاربران نمیتوانند مجوز اجرای تمام دستورات DDL یا DML را داشته باشند.
- این وظیفه مالک پایگاه داده یا مدیر است که امتیازات لازم را برای کاربران مختلف بر اساس نقشهایشان یا نیاز تجاری فراهم کند.
- بنابراین DCL ابزار لازم را برای نگهداری مؤثر پایگاه داده فراهم میکند تا هیچ کاربر دیگری نتواند تغییراتی ایجاد کند که به نقش آنها مربوط نباشد یا ممکن است بر امنیت پایگاه داده تأثیر بگذارد.
←برای خرید کرک لایسنس تبلو Tableau با تمام ویژگی ها کلیک کنید
زبان کنترل داده چگونه کار میکند؟
بیایید ببینیم دستورات موجود در DCL چگونه کار میکنند.
- امتیازات، مجوزهایی هستند که به کاربران مختلف برای دسترسی به اشیاء مختلف پایگاه داده ارائه میشوند.
- دو نوع امتیاز وجود دارد و آنها امتیازات Object و System هستند.
- امتیازات System، مجوز یا دسترسی برای ایجاد جداول، جلسات و غیره را فراهم میکند. امتیاز Object، دسترسی یا مجوز برای اجرای هر عملیاتی روی جداول پایگاه داده را فراهم میکند.
- امتیازات system به کاربران اجازه میدهد اشیاء پایگاه داده را ALTER، DROP یا CREATE کنند، در حالی که امتیازات object به کاربران اجازه میدهد دادههای اشیاء پایگاه دادهای را که امتیازات روی آنها اعمال میشود، انتخاب، درج، حذف، بهروزرسانی یا اجرا کنند.
- به عنوان مثال، شیء Create امکان ایجاد اشیاء در طرحواره خود را فراهم میکند، در حالی که Create any object امکان ایجاد اشیاء در هر طرحوارهای را فراهم میکند.
- اگر کاربران زیادی در یک محیط پایگاه داده خاص وجود داشته باشند، اعطای یا لغو امتیازات دشوار میشود. برای غلبه بر چنین مشکلاتی، باید نقشهایی را تعریف کنیم تا اعطای یا لغو امتیازات به طور خودکار انجام شود.
- مجموعه یا بستههای امتیازات را میتوان نقش نامید. وقتی نقشی به کاربر اعطا میشود، تمام امتیازاتی که همراه آن میآیند به طور خودکار به کاربر اعطا میشوند.
- همین مورد در مورد دستور لغو نیز صدق میکند که در آن امتیازاتی که تحت نقشها هستند به طور خودکار برای کاربر لغو میشوند. ایجاد نقشها باعث کاهش زمان مصرف میشود، زیرا اگر هر یک از امتیازات به طور جداگانه اعطا یا لغو شوند، زمان بیشتری مصرف میشود.
دستورات زبان کنترل داده با مثال
DCL دو دستور دارد و آنها اعطا و لغو هستند.
1. GRANT
این دستور به کاربران دسترسی یا امتیازاتی به اشیاء پایگاه داده میدهد.
Syntax:
GRANT privilege_name ON object_name TO user_name|PUBLIC|role_name [WITH GRANT OPTION];
In the above syntax,
در سینتکس بالا،
- privilege_name نشاندهنده امتیازاتی است که به کاربر اعطا میشود، مانند EXECUTE یا ALL و غیره.
- object_name به نام اشیاء پایگاه داده مانند نماها، جداول و غیره اشاره دارد.
- user_name نشاندهنده نام کاربرانی است که امتیازات به آنها اعطا میشود، PUBLIC برای اعطای امتیازات به همه کاربران استفاده میشود.
- با گزینه GRANT، به یک کاربر حق میدهد تا امتیازات را به سایر کاربران اعطا کند.
مثال:
به عنوان مثال، جدول «STUDENTS» را برای ارائه امتیازات انتخابی به کاربر – user123 به شرح زیر در نظر میگیریم.
GRANT SELECT ON STUDENTS TO user123;
در دستور بالا، اگر از WITH GRANT OPTION استفاده کنیم، user123 این امتیاز را پیدا میکند که امتیاز select را به سایر کاربران اعطا کند. بنابراین باید قبل از ارائه چنین امتیازی به user123 در اینجا دقت کنیم.
2. REVOKE
این دستور امتیازات یا مجوزهایی را که قبلاً به کاربران اجازه داده شده یا رد شده بود، پس میگیرد یا لغو میکند.
Syntax:
REVOKE privilege_name ON object_name FROM user_name|PUBLIC|role_name;
مثال:
مجوز select برای user-user123 را میتوان با استفاده از دستور زیر از جدول ‘STUDENTS’ لغو کرد.
REVOKE SELECT ON STUDENTS FROM user123;
هنگامی که امتیاز SELECT از کاربر مانند بالا لغو میشود، کاربر نمیتواند دادهها را از جدول انتخاب کند. اما اگر کاربر امتیازات select را از بیش از یک کاربر برای یک جدول خاص دریافت کرده باشد، کاربر میتواند از امتیاز select استفاده کند تا زمانی که همه کاربرانی که این امتیاز را اعطا کردهاند، آن را از کاربر لغو کنند. همچنین اگر یک امتیاز توسط یک کاربر اعطا نشود، آن کاربر نمیتواند آن را لغو کند.
مزایای زبان کنترل داده
در اینجا برخی از مزایای زبان کنترل داده آمده است که در زیر توضیح داده شدهاند:
- مهمترین نقشی که زبان کنترل داده ایفا میکند این است که با کنترل سطح دسترسی دادهها در پایگاه داده، امنیت پایگاه داده را تأمین میکند.
- دستورات DCL با اعطای یا حذف بسیاری از امتیازات یا مجوزهای ارائه شده به کاربران مختلف برای پایگاه داده، موارد فوق را انجام میدهند.
- اختیار اعطای یا لغو امتیازات توسط مدیر پایگاه داده یا مالک پایگاه داده حفظ میشود که به طور مؤثر از هرگونه مشکلی که ممکن است از افشای پایگاه داده برای بسیاری از کاربران یا در محیطهای پایگاه داده چندگانه ایجاد شود، جلوگیری میکند.
نتیجهگیری
مالک پایگاه داده یا مدیر پایگاه داده میتواند امتیازات داده شده به اشیاء پایگاه داده را ارائه یا حذف کند. DCL برای اطمینان از امنیت پایگاه داده در محیطی که چندین پایگاه داده یا کاربران مختلف در آن حضور دارند، با کنترل امتیازات داده شده به کاربران، استفاده میشود.
مقاله های مرتبط:
1– توسعه پایگاه داده استاندارد SQL Server
2- DBMS یا سیستم مدیریت پایگاه داده چیست؟
3- 11 روش برتر برای طراحی پایگاه داده
4-داشبورد سازی در نرم افزار تبلو و تجسم داده ها
