امکانات اضافه شده به SQL استاندارد
در این فصل امکاناتی که به SQL استاندارد ANSI اضلفه شده اند بررسی شده اند. اگرچه بیشتر نسخه های SQL در بسیاری از زمینه ها مطابق استاندارد هستند، اما بسیاری از فروشندگان امکاناتی را به شکلهای مختلف به SQL استاندارد اضافه کرده اند.
عناوین مهم این فصل عبارتند از:
- نسخه های مختلف SQL
- تفاوت بین نسخه های مختلف SQL
- سازگاری با ANSI SQL
- دستورات محاوره ای SQL
- استفاده از متغیرها
- استفاده از پارامترها
نسخه های مختلف SQL
نسخه های زیادی از SQL وجود دارند که توسط فروشندگان گوناگون عرضه میشوند. البته نمیتوان تمام فروشندگان بانکهای اطلاعاتی رابطه ای ذکر نمود؛ اما تعداد کمی از آنها در این فصل بررسی شده اند. نسخه های مورد بررسی این فصل عبارتند از: dBASE, Sybase ، میکرسلفت SQL Server و ارکل. سایر فروشندگان محصولات اطلاعاتی عبارتند از: بورلند، IBM، اینفور میکس، progress، CA-Ingres و بسیار بیشتر.
تفاوت بین نسخه های مختلف SQL
اگرچه نسخه های فهرست شده در این فصل بانکهای اطلاعاتی رابطه ای هستند اما تفاوتهای ویژه ای بین آنها وجود دارد. این تفاوتها از طراحی محصول و شیوه مدیریت داه ها توسط موتور بانک اطلاعاتی ناشی میشوند؛ اما این کتاب برروی جنبه SQL این تفاوتها تمرکز دارد. همان گونه که توسط ANSI مشخص شده است، تمام نسخه های از SQL به عنوان زبان برقراری ارتباط با بانک اطلاعاتت استفاده میکنند. بسیاری از آنها نوعی امکانات اضافه دارند که خاص همان نسخه است.
توجه: تفاوتهای موجود در SQL توسط فروشندگان گوناگون پذیرفته شده اند تا کارایی و سهولت استفاده از ANSI SQL بهبود یابد. فروشندگان همچنین کوشش میکنند تا امکاناتی را اضافه کنند که نسخه تولیدی آنها نسبت به فروشندگان دیگر بهتر باشد و در نتیجه برای مشتریان جذاب تر شود.
حال که با SQL آشنا هستند، میبایست در تطبیق خود با تفاوت موجود در بین نسخههای مختلف مشکل چندانی نداشته باشید. به عبارت دیگر اگر بتوانید دستورات SQL را در نسخه Sybase بنویسید، در آن صورت میبایست بتوانید این کار را در اراکل نیز انجام دهید. به علاوه، دانستن SQL در نسخههای مختلف هیچ چیزی به غیر از افزایش کارایی خودتان به همراه ندارد.
در قسمتهای ذیل دستور SELECT در نسخه های استاندارد برخی فروشندگان مقایسه شده است:
قالب دستور استاندارد ANSI
select [DISTINCT] {* | COLUMN2]
[INTO HOST_VARIABLE]
FROM TABLE1 [, TABLE2]
[WHERE SEARCH_CONDITION]
GROUP BY [TABLE_ALIAS | COLUMN1 [ , COLUMN2]
[HAVING [SEARCH_CONDITION]
[{UNION | INTERSECT | EXCEPT} [ALL]
[CORRESPONDING [BY COLUMN1 [,COLUMN2] ) ]
QUERY SPEC | SELECT * FROM TABLE | TABLE_CONSTRUCTOR]
[ORDER BY SPORT_LIST]
قالب دستوری SQL BASE
SELECT [ALL | DISTINCT] COLUMN1 [ , COLUMN2]
FROM TABLE1 [, TABLE2]
[WHERE SEARCH_ CONDITION]
[GROUP BY COLUMN1 [ , COLUMN2]
[HAVING SEARCH_ CONDITION]
[UNION [ALL]]
[ORDER BY SPORT_LIST]
[FOR UPDATE OF COLUMN1 [ , COLUMN2]
قالب دستوری اراکل:
SELECT [ALL | DISTINCT] COLUMN1 [ , COLUMN2]
FROM TABLE1 [, TABLE2]
[WHERE SEARCH_ CONDITION]
[[START WITH SEARCH_ CONDITION]
CONNEST BY SEARCH_ CONDITION]
[GROUP BY COLUMN1 [ , COLUMN2]
[HAVING SEARCH_ CONDITION]
[UNION [ALL] | INTERSECT | MINUS} QOERY_SOEC]
[ORDER BY COLUMN1 [ , COLUMN2]
[NOWAIT]
قالب دستوری اینفورمیکسل:
SELECT [ALL] | DISTINCT | UNIQUE] COLUMN1 [ , COLUMN2]
FROM TABLE1 [, TABLE2]
[WHERE SEARCH_ CONDITION]
[GROUP BY COLUMN1 [ , COLUMN2] | INTEGER}
[HAVING SEARCH_ CONDITION]]
[ORDER BY COLUMN1 [ , COLUMN2]
[INTO TEMP TABLE [WITH NO LOG]]
همان گونه که از مقایسه قالبها مشاهده میکنید، اصول تمام دستورها یکسان است. تمام آنها عبارتهای SELECT، FROM، WHERE، GROUP BY، HAVING، UNION و ORDER BY را دارند. تمام این عبارتها اساسا به یک شکل عمل میکنند اما برخی از آنها گزینه هایی دارند که ممکن است در نسخههای دیگر موجود نباشد. این گزینه ها همان امکانات اضافه هستند.
سازگاری با ANSI SQL
فروشندگان کوشش میکنند تا نسخه هایشان با ANSI SQL سازگار باشد؛ اما هیچیک از آنها 100 درصد با استاندارد ANSI سازگار نیستند. برخی از فروشندگان دستورات یا توبعی را به ANSI SQL افزوده اند و ANSI SQL بسیاری از این دستورات یا توابع جدید را پذیرفته است. سازگاری با استاندارد بنا به دلایل زیادی برای یک فروشنده مفید است. یک فایده آشکار آن این است که یادگیری نسخه SQL فروشند آسان خواهد بود و دستورات SQL یک نسخه در نسخه های دیگر نیز قابل استفاده خواهد بود. قابلیت اجرای دستورات SQL در نسخههای دیگر یقینا یک عامل مهم در انتقال دستورات است. چرا یک شرکت باید مبلغ زیادی را برای تبدیل دستورات نسخه ای که با استاندارد سازگار نیست هزینه کند؟ چنانچه تغییرات بسیار زیادی در برنامه کاربردی لازم باشد و یادگیری نسخه SQL جدید دشوار باشد، در آن صورت احتمالا شرکتها تمایلی به انجام این کار از خود نشان نخواهند داد. بنابراین سازگاری با ANSI SQL در بیشتر موارد مساله ای نیست.
امکانات اضافه شده به SQL
عملا تمام فروشندگان امکانات اضافه ای را SQL افزوده اند. این گونه امکانات اضافی ویژه همان نسخه بوده و عموما قابل استفاده در نسخههای دیگر نیستند. اما امکانات اضافی استاندارد مشهور توسط ANSI بررسی و مرور شده و گاهی اوقات به عنوان بخشی از استاندارد جدید پیاده سازی میشوند.
PL/ SQL که محصول شرکت اراکل میباشد و Travsact- SQL که توسط Sybase و میکروسافت SQL Server مورد استفاده قرار میگیرد، دونمونه از امکانات اضافی استاندارد هستند. هر دو ویژگی به طور نسبتا مفصل در مثالهای این فصل بررسی میشوند.
مثالهایی از امکانات اضافی برخی نسخه های SQL
PL/ SQL و Travsact- SQL از زبانها برنامه سازی نسل چهارم به شمار میآیند. هر دو در مقایسه با SQL که یک زبان غیر پروسیجرال است، پروسیجرال میباشند.
زبان غیر پروسیجرال SQL دستورات ذیل را دارد:
- INSERT
- UPDATE
- DELETE
- SELECT
- COMIT
- ROLLBACK
آن دسته از نسخه های SQL کخ امکانات اضافی دارند، علاوه بر دستورات فوق و توابع SQL استاندارد، موارد ذیل را نیز در بر میگیرند.
- تعریف متغیرها
- افزایش متغیرها
- تعریف Cursor ها
- تبدیل تاریخ ها
- دستورات شرطی
- عملگرهای جانشین
- حلقه ها
- trigger ها
- مدیریت خطا
- رویه های ذخیره شده
این دستورات به برنامه ساز امکان میدهد تا در یک زبان محاوره ای کنترل بیشتری بر شیوه مدیریت داده ها داشته باشد.
توجه: SQL استاندارد اصولا یک زبان غیر پروسیجرال است، بدین معنا که دستورات برای سرویس دهنده بانک اطلاعاتی صادر میشود. سرویس دهنده بانک اطلاعاتی تصمیم میگیرد که دستور را چگونه به طور بهینه اجرا کند. زبانهای پروسیجرال نه تنها به برنامه ساز امکان میدهند که بازیابی یا پردازش داده ها را درخواست کند، بلکه برای سرویس دهنده دقیقا مشخص میکند که درخواست را چگونه اجرا کند.
Travsact- SQL
Travsact- SQL یک زبان پروسیجرال است، بدین معنا که چگونگی و محل پیدا کردن و پردازش داده ها توسط شما برای بانک اطلاعاتی مشخص میشود؛ SQL یک زبان غیر پروسیجرال است و بانک اطلاعاتی درباره شیوه محل انتخاب و پردازش داده ها تصمصیم میگیرد. برخی از قابلیت های مهم Travsact- SQL عبارتند از: تعریف متغیرهای محلی و عمومی، cursor ها، مدیریت خطا، triggerها، رویه ای های ذخیره شده، حلقه ها، عملگرهای جانشین، تبدیل تاریخ ها و گزارشهای خلاصه.
مثالی از یک دستور در ذیل نشان داده شده است:
IF (SELECT AVG (COST) FROM PRODUCTS_TBL) > 50
BEGIN
PRINT "LOWER ALL COSTE BY 10 PERCENT."
END
ELSE
PRINT "COSTS ARE REASONABLE."
END
تحلیل: دستور بالا یک دستور بسیار ساده در Travsact- SQL است. این دستور مشخص میکند که اگر میانگین در جدول PRODUCTS_TBL بزرگتر از 50 باشد، در آن صورت پیام "LOWER ALL COSTE BY 10 PERCENT." نمایش داده میشود. چنانچه کیانگین قیمت کمتر یا مساوی 50 باشد، پیام "COSTS ARE REASONABLE." نمایش داده میشود.
به کاربرد دستور IF … ELSE برای ارزشیابی شرطهای مقادیر داده ها توجه کنید. دستور PRINT جدید است. این گزینه های اضافی تنها بخش بسیار ناچیزی از قابلیت های Travsact- SQL هستند.
PL/ SQL
PL/ SQL محصوا اراکل است. همچون Travsact- SQL ، PL/ SQL نیز یک زبان پرسیجرال است. دستورات PL/ SQL به صورت بلوکهای منطقی سازماندهی میشوند. در هر بلوک سه قسمت وجود دارد که دو مورد از آنها اختیاری هستندو نخستین قسمت DECLARE است که اختیازی است. دومین قسمت PROCEDURE نام دارد. این قسمت دربرگیرنده دستورات اختیاری SQL است. این قسمت همان محل کنترل بلوک است. این قسمت یک قسمت اجباری ایت. قسمت سوم، EXCEPTION نام دارد. این قسمت تعیین میکند که برنامه خطاها و استثناهای تعریف شده کاربر را چگونه مدیریت کند. این قسمت نیز همچون قسمت نخست اختیاری است. عناوین مهم PL/ SQL عبارتند از: استفاده از متغیرها، ثابت ها، cursor ها، صفات مشخصات، حلقه ها، مدیریت استثناها، نمایش خروجیها برای برنامه ساز، کنترل تراکنشی، رویه های ذخیره شده، triggerها و package ها.
مثالی از یک دستور PL/ SQL در ذیل نشان داده شده است:
DECLARE
CURSOR EMP_CURSOR IS SELECT EMP_ID, LAST_NAME, FRIST_NAME, MID_INIT.
FROM EMPLOYEE_TAB;
BEGIN
OPEN EMP_CURDOR;
LOOP
FETCH EMP_CURSOR INTO EMP_REC;
EXIT WHEN EMP_CUPSOR&NOTEFOUND;
IF (EMP_REC. MID_INIT IS NULL) THEN
UPDATE EMPLOYEE_TBL
SET MID_INIT = 'X'
WHERE EMP_ID = EMP_REC. EMP_ID;
COMMIT;
END IF;
END LOOP;
CLOSE EMP_CURSORE;
END;
تحلیل: دو قسمت از سه قسمت ممکن در این مثال مورد استفاده قرار گرفته اند: قسمتهای DECLARE و PROCEDURE. نخست، cursor ی به نام EMP_CURSOR توسط یک پرس و جو تعریف میشود. دوم، متغیری به نام EMP_REC تعریف میشود که نوع داده آن همچون هر ستون cursor است. نخستین گام در قسمت PROCEDURE، بازکردن cursor است. پس بازشدن cursor هریک از رکوردهای آن با استفاده از دستور LOOP تا رسیدن به END LOOP پردازش میشوند. جدول EMPLOYEE_TAB باید برای تمامی سطرهای cursor به روز رسانده شود، چنانچه نام میانی یک کارمند تهی باشد. به روز رسانی سبب تغییر نام میانی به 'X' میشود. تغییرات اعمال شده و cursor در پایان بسته میشود.
دستورات محاوره ای SQL
دستورات محاوره ای SQL دستوراتی هستند که پیش از اجرای کامل، یک متغیر، پارامتر یا نوعی داده را درخواست میکنند. فرض کنید یک دستور محاوره ای SQL دارید. دستور برای ایجاد کاربران یک بانک اطلاعاتی مورد استفاده قرار میگیرد. دستور ممکن است برای دریافت اطلاعاتی چون ID کاربر، نام کاربر، و شماره تلفن اعلام آمادگی کند. دستور ممکن است برای یک یا چند کاربر باشد و تنها یک مرتبه اجرا شود. در غیر این صورت هر کاربر باید به طور مجزا توسط دستور CRESTE USER ایجاد شود. دستور SQL ممکن است برای دریافت حقوق دستیابی نیز اعلام آمادگی کند. تمام نسحههای SQL دارای این گونه دستورات نیستند؛ میبایست نسخه مورد استفاده خود را مطالعه کنید. قسمتهای ذیل برخی از مثالهای SQL محاوره ای را با استفاده از اراکل نشان میدهند.
استفاده از پارامترها
پارامترها، متغیرهایی هستند که در SQL نوشته میشوند و در یک برنامه کاربردی قرار میگیرند. پارامترها را میتوان در طی اجرا به یک دستور SQL ارسال نمود. و انعطاف پذیری بیشتری را در حین اجرای دستور برای کاربر فراهم نمود. بسیاری از نسخه های اصلی SQL استفاده از این پارامتها را فراهم میکنند. قسمتهای ذیل مثالهایی از ارسال پارامترها را برای اراکل و Sybase نشان میدهند.
اراکل
پارامترها را میتوان در اراکل به یک دستور محاوره ای ارسال نمود.
SELECT EMP_ID, LAST_NAME, FRIST_NAME
FROM EMPLOYEE_TBL
WHERE EMP_ID = '&EMP_ID'
دستور SQL بالا شماره شناسایی کارمند، نام خانوادگی و نام کارمندی را برمی گرداند که ID وی وارد میشود.
SELECT *
FROM EMPLOYEE_TBL
WHERE CITY = '&CITY'
AND STATE = '&STATE'
دستور بالا برای دریافت شهر و ایالت اعلام امادگی میکند. پرس و جو، تمام داده های کارمندان ساکن در شهر و ایالت وارد شده را برمی گرداند.
Sybase
پارامترها را در Sybase میتواند به یک رویه ذخیره شده ارسال نمود.
CREATE PROC EMP_SEARCH
(EMP_ID)
AS
SELECT LAST_NAME, FRIST_NAME
FROM EMPLOYEE_TBL
WHERE EMP_ID = EMP_ID
دستور زیر را برای اجرای رویه تایپ نموده و پارامتری ارسال کنید:
SP_EMP_SEARCH "443679012"
خلاصه
در این فصلامکانات اضافی که در بین نسخههای مختلف SQL وجود دارند، و سازگاری آنها با استاندارد ANSI بررسی شده است. پس از یادگیری SQL به آسانی میتوانید دانش خود و – برنامه ها – را در سایر نسخه های SQL به کار برید. برنامه های SQL در نسخههای مختلف آن قابل اجرا هستند، بدین نعنا که بیشتر برنامه های SQL را میتوان با قدری تغییر در بیشتر نسخههای SQL به کار برد.
در آخرین قسمت این فصل دو نسخه ای مورد بررسی قرار گرفتند که در نحصول سه شرکت مورد استفاده قرار میگیرند. Travsact- SQL توسط SQL Server و Sybase مورد استفاده قرار میگیرند و PL/ SQL توسط اراکل. نکته ای که باید به آن توجه داشت آن است که این دو نسخه ابتدا با استاندارد سازگار شده اند، و سپس برای بازدهی بیشتر به محصولات افزوده شده اند. این فصل برای آن است که شما را نسبت به ویژگیهای اضافی SQL آگاه سازد و اهمیت سازگاری محصولات شرکتها با استانداردهای ANSI SQL را بیاموزد.
اگر آنچه را که در این کتاب فراگرفته اید، به کارببرید – برنامه های خود را بنویسید، آزمایش کنید و دانش خود را فرونی بخشید. – در آن صورت یقینا در مسیر خبره شدن در SQL قرار خواهید گرفت. شرکتها داده های زیادی دارند و نمیتوانند بدون وجود بانکهای اطلاعاتی عمل کنند. بانک های اطلاعاتی رابطه ای است، تصمیم فراگیری SQL یک تصمیم ایده آل است. موفق باشید.
پرسش و پاسخ
پرسش: چرا تفاوتهایی بین SQL وجود دارد؟
پاسخ: دلیل این امر، شیوه ذخیره سازی داده ها است. هدف فروشندگان، پیشی گرفتن در این رقابت و ایده های جدید است.
پرسش: آیا پس از فراگیری SQL استاندارد قادر به استفاده از نسخه های مختلف خواهم شد؟
پاسخ: آری، اما به خاطر داشته باشد که تفاوتهایی در بین نسخههای مختلف وجود دارد چارچوب اصلی کار با SQL در بیشتر نسخه ها یکسان است.
مدیریت کاربران بانک اطلاعاتی
در این فصل با یک یاز اساسی ترین اهداف هر بانک اطلاعاتی رابطه ای آشنا خواهید شد:مندیریت کاربران بانک اطلاعاتی . در این فصل با مفاهیم مربوط به ایجاد کاربران در SQL امنیت کاربر، کاربر در مقابل schema، پروفایل کاربر، صفات مشخصه کاربر، و ابزارهایی که کاربران به کار میبرند، آشنا خواهید شد.
عناوین مهم این فصل عبارتند از:
- انواع کاربران
- مدیریت کابر
- جایگاه کاربر در بانک اطلاعاتی
- کاربر در مقابل schema
- جلسات کاری کاربران
- تغییر صفات مشخصه یک کاربر
- پروفایل های کاربر
- حذف کاربران از بانک اطلاعاتی
- ابزارهای مورد استفاده کاربران
توجه: استانداردهای SQL از واژه شناسه مجوز (authID) برای شماره شناسایی کاربر بانک اطلاعاتی استفاده میکند. در بیشتر نسخههای اصلی SQL صرفه از واژه کاربران برای اطلاق به authIDها استفاده میشود. در این کتاب از واژگان کاربردی، کاربران بانک اطلاعاتی نامهای مابربری یا account کاربر برای این کار استفاده میشود. استاندارد SQL بیان میدارد که شناسه مجوز، نامی است که سیستم، کاربر بانک اطلاعاتی را با آن میشناسد.
دلیل کاربران هستند
کاربردان دلیل فصل هستند. فصل طراحی، ایجاد، پیاده سازی و نگهداشت هر بانک اطلاعاتی. زمانی که بانک اطلاعاتی طراحی میشود، نیازهای کاربران در نظر گرفته میشوند و هدف پایانی در پیاده سازی یک بانک اطلاعاتی، قرار دادن بانک اطلاعاتی در دسترس کاربران است؛ و کاربران نیز به نوبه خود از بانک اطلاعاتی که شما و احتمالا بسیاری از اشخاص دیگر در تولید آن دست داشته اند بهره مند میشوند.
یک دیدگاه متداول نسبت به کاربران آن است که اگر کاربر وجود نمیداشت، هیچ گاه عملی برروی بانک اطلاعاتی صورت نمیگرفت. اگرچه این امر گویای حقیقت است، با این وجود بانک اطلاعاتی برای ذخیره سازی داده ها ایجاد میشود تا کاربران بتوانند کارهای روزمره خود را انجام دهند.
اگرچه مدیریت کاربر وظیفه ضمنی مدیر بانک اطلاعاتی است، اما اشخاص دیگر نیز اغلب در فرآیند مدیریت کاربر شرکت دارند. مدیریت کاربر در چرخه حیات یک بانک اطلاعاتی ضروری است و در نهایت از طریق کاربرد مفاهیم و دستورات SQL مدیریت میشود، گرچه شیوه انجام این کار در نسخههای مختلف SQL متفاوت است.
انواع کاربران
انواع مختلفی از کاربران بانک اطلاعاتی مطرح هستند:
- اشخاص مسئول وارد کردن داده ها
- برنامه سازان
- مهندسین سیستم
- مدیران بانک اطلاعاتی
- تحلیل گران سیستم
- تولید کنندگان
- آزمایش کنندگان
- مدیریت
- کاربر نهایی
هریک از انواع کاربران مذکور مجموعه وظایف (و مشکلات) خاص خود را دارند و تمام آنها برای ادامه کارهای روزانه و امنیت کارها ضروری هستند. به علاوه هر نوع کاربر سطوح مختلفی از دستبابی را در اختیار داشته و جایگاه خاص خود را در بانک اطلاعاتی دارد.
چه کسی کاربران را مدیریت میکند؟
کارکنان مدیریت یک شرکت مسئول مدیریت روزانه کاربران هستند؛ با این وجود، مدیر بانک اطلاعاتی با اشخاص منصوب شده دیگر در نهایت مسئوا مدیریت کاربران در بانک اطلاعاتی هستند.
مدیر بانک اطلاعاتی[1] معمولا ایجاد account های کاربری، نقشها، حقوق دستبابی، پروفایل ها و نیز حذف account های کاربری را مدیریت میکند. چون این کار در یک محیط بزرگ و فعال میتواند وظیفه دست و پاگیری شود، برخی از شرکتها یک مدیر امنیت[2] داردن که مدیر بانک اطلاعاتی را در فرآیند مدیریت کاربر یاری میرساند. مدیر امنیت در صورت انتصاب، معمولا مسئول کارهای کاغذی بوده و نیزهای کاری یک کاربر را ره مدیر بانک اطلاعاتی انتقال داده و به آگاهی مدیر بانک اطلاعاتی میرساند که کاربر چه وقت به بانک اطلاعاتی نیاز ندارد.
تحلیل گر سیستم[3]، یا مدیر سیستم معمولا مسئول امنیت سیستم عامل است و کاربران را ایجاد و حقوق دستیابی مناسبی را به آنها اختصاص میدهد. مدیر امنیت میتواند تحلیل گر سیستم را، همچون مدیریت بانک اطلاعاتی یاری کند.
جایگاه کاربر در بانک اطلاعاتی
هر کاربر باید نقش و حقوق دستیابی لازم برای انجام کارهای خود را دریافت کند. حق دستیابی هیچ کاربری نباید ورای محدوده وظایفش باشد. محافظت داده ها، دلیل لازم برای تعریف account های کاربری و امنیت است. چنانچه کاربر، حتی سهوا به داده های نادرستی دستیابی داشته باشد، داده ها ممکن است خراب شوند و یا از بین بروند. زمانی که کاربری دیگر نیاز به بانک اطلاعاتی نداشته باشد، account وی باید حذف یا غیر فعال شود.
تمام کاربران جایگاه خاص خود را در بانک اطلاعاتی دارند و برخی از آنها وظایف بیشتری نسبت به دیگران دارند. کاربران بانک اطلاعاتی همچون اجزاء بدن انسان هستند، تمام آنها با هم (یا حداقل باید این گونه باشد) هدفی را دنبال میکنند.
یک کاربر چه تفاوتی با یک schema دارد؟
شیء های یک بانک اطلاعاتی با account های کاربریی مرتبط هستند که schema نامیده میشود. هر schema مجموعه ای از شیء های بانک اطلاعاتی متعلق به یک کاربر است. این کاربر، صاحب schema نامیده میشود. تفاوت بین یک کاربر معمولی و صاحب یک schema آن است که صاحب schema مالک شیء درون بانک اطلاعاتی است، در صورتی که بیشتر کاربران صاحب شیء های خود نیستند. به بیشتر کاربران account ی داده میشود تا به داده های schema های دیگر دستبابی داشه باشند.
فرآیند مدیریت
در هر بانک اطلاعاتی، یک سیستم پایدار برای مدیریت کاربران به منظور حفظ امنیت داده ها اجباری است. سیستم مدیریت کاربران با ناظر کاربران که میبایست درخواست دستیابی را آغاز نماید شروع میشود و سپس تا مسئولین تصویب کننده شرکت ادامه مییابد. در این مرحله چنانچه درخواست مورد موافقت مدیریت قرار گیرد، به مدیر امنیت یا مدیر بانک اطلاعاتی ارجاع داده میشود. و وی نیز بر اساس آن اقدام میکند. یک فرآیند اطلاع رسانی مناسب ضروری است؛ باید به آگاهی ناظر و کاربر رسانده شود که account های کاربری ایجاد شده و مجوز دستیابی اعطاء شده است. کلمه عبور account کاربری باید تنها به کاربر گفته شود و وی نیز باید به محض برقراری ارتباط به بانک اطلاعاتی آن را تغییر دهد.
توجه: برای آشنایی با شیوه ایجاد کاربران، مستندات نسخه SQL مورد استفاده خود را مطالعه کنید. همچنین به هنگام ایجاد و مدیریت کاربران، به سیاست ها و رویه های شرکت خود رجوع کنید. قسمت ذیل فرآیندهای ایجاد کاربران را در اراکل، Sybase و میکروسافت SQL Server مقایسه میکند.
ایجاد کاربران
ایجاد کاربران بانک های اطلاعاتی مستلزم استفاده از دستورات تایپی SQL در بانک اطلاعاتی است. دستور استانداردی برای ایجاد کاربران بانک اطلاعاتی در SQL وجود ندارد؛ هر نسخه SQL روشی برای انجام این کار دارد. برخی از نسخهها دستورات مشابه دارند. در صورتی که قالب برخی از آنها تفاوت دارد. مفهوم اصلی در تمام آنها بدون توجه به نسخه مورد استفاده یکسان است.
زمانی که مدیر بانک اطلاعاتی یا مدیر امنیت، درخواست account کاربری را دریافت میکند، درخواست باید برای تعیین اطلاعات لازم تحلیل شود. اطلاعات میبایست شامل اطلاعات خاص شرکت برای به ثبت رساندن یک ID کاربری باشد.
برخی از مواردی که باید گنجانده شود عبارتند از: شماره تامین اجتماعی، نام کامل، نشانی، شماره تلفن، نام دفتر کاری یا آپارتمان، بانک اطلاعاتی مربوطه و گاهی اوقات یک ID پیشنهادی.
درقسمتهای ذیل قالب دستورات در دو نسخه SQL مختلف مقایسه شده اند.
ایجاد کاربران در اراکل
مراحل لازم برای ایجاد یک account کاربری در بنک اطلاعاتی اراکل:
1. account کاربری بانک اطلاعاتی را با مشخصه های پیش فرض ایجاد کنید.
2. حقوق دستیابی را به account کاربری اعطاء کنید.
ایجاد کاربر:
قالب دستور
CREAT USER USER_ID
IDENTIFIED BY PASSWORD
[DEFAULT TABLSPACE TABLESPACE_NAME]
[TEMPORARY TABLSPACE TABLESPACE_NAME]
[QUOTA (INTEGER (K | M) | UNLIMITED) ON TABLESPACE_NAME]
[PROFILE PROFILE_TYPE]
توجه: دستور بالارا میتوان برای افزودن یک کاربر به بانک اطلاعاتی اراکل مورد استفاده قرار داد.
اگر از اراکل استفاده نمیکنید، به برخی گزینه های قالب دستور بالا توجه نکنید. tablespace، یک ناحیه منطقی برای جای دادن شیءهایی چون جداول و شاخص ها است. DEFAULT TABLSPACE، tablespace ی است که شیء های ایحاد شده توسط کاربر موردنظر در آن جای دارند. TEMPORARY TABLSPACE، tablespace ی برای عملیات مرتب سازی پرس و جوهای اجرایی توسط کاربر است. QUOTA، محدودیتهای فضایی است که بر tablespace مورد دستیابی کاربر اعمال شده اند. PROFILE، یک پروفایل خاص است که به کاربر اختصاص یافته است.
قالب دستور: اعطای حقوق دستیابی به account کاربری:
GRANT PRIV1 [, PRIV2, …] TO USERNAME | RPLE [, USERNAME]
دستور GRANT میتواند همزمان یک یا چند حقوق دستیابی را به یک یا چند کاربر اعطاء کند. این حقوق نیز ممکن است به یک نقش[4] اعطاء میشوند که آن نیز به نوبه خود ممکن است به یک یا چند کاربر اعطاء شود.
ایجاد کاربران در Sybase و میکروسافت SQL Server
مراحل ایجاد یک account کاربری در بانک اطلاعاتی Sybase و میکروسافت SQL Server عبارتند از:
1. account کاربری بانک اطلاعاتی برای SQL Server ایجاد کنید و یک کلمه عبور و یک بانک اطلاعاتی پیش فرض به کاربر اختصاص دهید.
2. کاربر را به بانک اطلاعاتی مربوطه بیفزایید.
3. حقوق دستیابی را به account کاربری اعطاء کنید.
قالب دستور ایجاد account کاربری:
SP_ADDLOGIN USER_ID, PASSWORD, DEFAULT_DATABASE]
قالب دستور افزودن کاربر به یک بانک اطلاعاتی:
SP_ADDLOGIN USER_ID, PASSWORD, DEFAULT_DATABASE]
قالب دستور اعطای حقوق دستیابی account کاربری:
GRANT PRIV1 [, PRIV2, …] TO USER_ID
توجه: بحث حقوق دستیابی در یک بانک اطلاعاتی رابطه ای به تفصیل در فصل نوزدهم، «مدیریت امنیت بانک اطلاعاتی» همیت کتاب بررسی شده است.
ایجاد SCHEMA
Schema یا استفاده از دستور CRAETE SCHEMA ایجاد میشوند:
قالب دستور:
CREATE SCHEMA [SCHEMA_NAME] [USER_ID]
[DEFAULT CHARACTER SET CHARACTER_SET]
[SCHEMA_ELEMANT_LIST]
توجه: ممکن است برخی از نسخه های SQL دستور CRAETE SCHEMA را نداشته باشند. با این وجود، Schema هاممکن است به طور ضمنی به هنگام ایجاد شیءها توسط یک کاربر ایجاد شوند. دستور CRAETE SCHEMA صرفا یک روش یک مرحله ای برای انجام این کار است. پس ایجاد شیء توسط یک کاربر، کاربر میتواند اجازه دستیابی به شیء ها را به کاربران دیگر اعطاء کند.
حذف یک Schema
یک Schema را میتوان با استفاده از دستور DROP SCHEMA از بانک اطلاعاتی حذف نمود. هنگام خذف یک Schema باید به دو نکته توجه نمود. نخست گزینه RESTRICT . در صورت استفاده از آن، چنانچه شیءهایی در Schema موجود باشند، با خطا مواجه خواهید شد. گزینه دوم گزینه CASCADE . این گزینه میبایست تنها در صورت وجود شی ء در Schema به کاربرده شود. به خاطر داشته باشید که وقتی Schema را حذف میکنید، تمام شیءهای مرتبط با آن Schema نیز حذف میشودند.
قالب دستور:
DROP SCHEMA SCHEMA_NAME {RESTRICT | CASCASE}
توجه: احتمال عدم وجود شیء ها در یک Schema وجود دارد، چرا که شیءهایی چون جداول ممکن است با استفاده از دستور DROP TABLE حذف شوند. برخی از نسخه های SQL ممکن است رویه یا دستوری برای حذف یک کاربر داشته باشند که ممکن است برای حذف یک Schema نیز مورد استفاده قرار گیرد. اگر دستور DROP DCHEMA در نسخه SQL مورد استفاده تان موجود نباشد، میتوانید یک Schema را با حرف کاربری که صاحب شیءهای Schema است خذف کنید.
تغییر کاربران
یک بخش بسیار مهم از مدیریت کاربران، قابلیت تغییر صفات مشخصه یک کاربر پس از ایجاد کاربر است. چناچه کارمندانی دارای account کاربری هیچگاه ارتقا نیابند، شرکت را ترک نکنند و یا اگر افزایش کارمندان جدید کمینه شود، زندگی برای مدیر بانک اطلاعاتی بسیار ساده تر میشود؛ در دنیاس واقعی، کناره گیری کارمندان رده بالا و نیز تغییر وظایف کاربران، یک واقعیت است و عامل قابل توجهی در مدیریت کاربران به شمار میآید. تقریبا هرکس کارش یا وظایف کاریش را تغییر میدهد، بنابراین حقوق دستیابی در یک بانک اطلاعاتی باید برای برآوده ساختن نیازهای کاربران تغییر کند.
مثال یکی از نسخه های SQL برای تغییر وضعیت یک کاربر جاری:
قالب دستور برای اراکل:
ALTER USER USER_ID [IDENTIFIED BY PASSWORD|EXTERNAIIY]
[DEFAULT TABLESPACE TABLESPACE_NAME]
[QUOTA INTEGER K| M| UNLIMITED ON TABLESPACE_NAME]
[PROFILE PROFILE_NAME]
[DEFAULT ROLE ROLE1 [, ROLE2] | ALL
[EXCEPT ROLE1 [, ROLE2 | NONE] ]
بسیاری از صفات مشخصه کاربر را نمیتوان با این دستورتغییر داد. متاسفانه، تمامی نسخه های SQL دستور ساده ای برای پردازش کاربران بانک اطلاعاتی ندارند. برخی از نسخههای SQL ابزارهایی با رابط گرافیکی برای کاربران دارند که امکان ایجاد، اصلح و حذف کاربر را فراهم میسازند.
توجه: برای آشنایی با قالب دستوری تغییر صفات مشخصه کاربران باید نسخههای مورد استفاده خود را مطالعه کنید. قالب دستوری ALTER USER اراکل در اینجا نشان داده شده است. در بیشنتر نسخه ها، ابزاری برای تغییر نقش ها، حقوق دستیابی، صفات مشخصه م کلمه عبور یک کاربر وجود دارد.
توجه: هر کاربر میتواند کلمه عبورش را تغییر دهد. برای آشنایی با قالب دستور یا ابزار این کار باید نسخه مورد استفاده خود را مطالعه کنید. در اراکل عموما از دستور ALTER USER استفاده میشود.
جلسات کاربری
جلسه یک کاربر[5] از زمان برقراری ارتباط آغاز و پس از قطع ارتباط وی با بانک اطلاعاتی پایان مییابد. در طی موتی که یک کاربر با بانک اطلاعاتی دارد (جلسه کاری کاربر)، کاربر ممکن است عملیات گوناگونی چون پرس وجوها وتراکنش ها را انجام دهد.
هر جلسه کاری SQL از زمانی آغاز میشود که یک کاربر با استفاده از دستور CONNECT از سرویس گیرنده با سرویس دهنده ارتباط برقرار میکند. پس از برقراری ارتباط و آغاز جلسه کاری، هر تعداد تراکنش را میتوان تا زمان قطع ارتباط آغاز نمود و انجام داد؛ در آن زمان جلسه کاری کاربر به پایان میرسد.
کاربران میتوانند با استفاده از دستوراتی چون موارد ذیل، ارتباط خود را صریحا با بانک اطلاعاتی برقرار و قطع نمایند (جلسه کاریی را آغاز و به پایان برسانند).
قالب دستور:
CONNECT TO DEFAULT | STRING1 [AS STRING2] [USER STRING3]
DISCONNECT DEAFAULT | CURRENT | ALL | DTRING
SET CINNECTION DEFAULT | STRING
توجه: به خاطر داشته باشید که قالب دستور در نسخه های مختلف متفاوت است. به علاوه بیشتر کاربران بانک اطلاعاتی، دستورات را به طور دستی برای برقراری ارتباط یا قطع آن صادر نمیکنند. بیشتر کاربران ار طریق یک ابزار متفرقه یا ابزارهایی که فروشنده ارائه میکند، ارتباط برقرار میکنند. این ابزارها برای دریافت نام کاربری و کلمه عبور اعلام آمادگی میکنند و سپس ارتباط با بانک اطلاعاتی را برقرار و جلسه کاری کاربر را آغاز میکنند.
جلسات کاری کاربران ممکن است – اغلب اینگونه است – توسط مدیر بانک اطلاعاتی یا کارمندان دیگر نظارت شود. جلسه کاربری در نهایت به صورا یک فرایند برروی سیستم عامل میزبان نمایش داده میشود.
حذف دستیابی کاربر
حذف یک کاربر از بانک اطلاعاتی و یا گرفتن اجازه دستیابی وی به آسانی از طریق چند دستور شدنی است. با این وجود تفاوت بین دستورات در نسخه هایی مختلف در این حالت زیاد است. بنابراین باید برای آشنایی با قالب دستور یا ابزارهای مورد استفاده برای حذف کاربر یا گرفتن اجازه دستیابی، نسخه SQL مورد استفاده خود را مطالعه کنید.
روشهای گرفتن اجازه دستیابی کاربران:
- کلمه عبور کاربر را تغییر دهید.
- حذف account کاربری از بانک اطلاعاتی
- گرفتن حقوق دستیابی اعطاء شده پیشین از کاربر
قالب دستور:دستور DROP را در برخی از نسخه های SQL میتوان برای حذف یک کاربر ار بانک اطلاعاتی به کار برد.
DROP USER USER_ID [CASCADE]
قالب دستور: دستور REVOKE در بسیاری از نسخه های SQL نقطه مقابل دستور DROP است که حقوق دستیابی اعطاء شده پیشین یک کاربر را به وی بازمی گرداند. مثالی از این دستور در برخی از نسخه های SQL به شکل زیر است:
REVOKE PRIV1 [, PRIV2, … ] FROM USERNAME
ابزارهای مورد استفاده توسط کاربران بانک اطلاعاتی
برخی از اشخاص ادعا میکنند که برای انجام پرس و جوها نیازی به دانستن SQL نیست. آنها ممکن است از یک جهت درست بگویند؛ اما دانستن SQL یقینا با اجرای پرس و جوها کمک میکند، حتی با استفاده از ابزارهای دارای رابط گرافیکی[6] . گرچه ابزارهای GUI مناسب هستند و در صورت وجود میبایست مورد استفاده قرار گیرند، اما دانستن اتفاقات پشت پرده بسیار مفید است، چرا که بدین ترتیب بازدهی کاربرد این ابزارها کاربرپسند[7] را بیشینه نمود.
ابزارهای GUI زیادی وجود دارند که کاربران بانک اطلاعاتی را در تولید خودکار دستورات SQL از طریق حرکت در بین ویندوها، پاسخگ.یی به اعلان، و انتخاب گزینه ها یاری میکنند. ابزارهای گزارش گیریی وجود دارند که گزارشهایی تولید میکنند. فرم هایی را میتوان بریا پرس و جو، به روز رسانی، درج یا حذف از یک بانک اطلاعاتی ایجاد نمود. ابزارهایی وجود دارند که داده های را به نمودار تبدیل میکنند. ابزارهای مدیریتی وجود دارند که میتوان کارایی بانک اطلاعاتی را با آنها نظارت نمود؛ برخی از ابزارها نیز برقراری ارتباط از راه دور را فراهم میکنند. برخی از این ابزارها توسط فروشندگان نسخه های SQL ارائه میشوند،اما برخی از ابزارهای متفرقه توسط فروشندگان دیگر ارائه میشوند.
خلاصه
تمام بانکهای اطلاعاتس کاربرانی دارند، از یک نفر گرفته تا هزاره نفر. کاربران دلیل وجود بانکهای اطلاعاتی هستند. سه مرحله اصلی در مدیریت کاربران وجود دارد. نخست، account کاربری باید ایجاد شود. دوم، حقوق دستیابی باید به کاربر اعطاء شوند تا کاربر بتواند کارهای خود را در بانک اطلاعاتی انجام دهد. و در پایان اینکه، یا باید account کاربری حذف شود، یا برخی از حقوق دستیابی از او گرفته شود.
برخی از متداولترین کارهای مدیریت کاربران در این فصل بررسی شدند؛ در این فصا بسیاری از جزئیات اجتناب شده است، چرا که بیشتر بانک های اطلاعاتی در فرایند مدیریت کاربر با یکدیگر تفاوت دارند. اما لازم است مدیریت کاربران به دلیل این کار با SQL بررسی شود. بسیاری از دستورات مورد استفاده در مدیریت کاربران توسط استاندارد ANSI به تفصیل تعریف نشده یا بررسی نشده اند، اما روند کار در تمام آنها یکسان است.
[6] Graphical User Interface (GUI) tools