۱۳۸۹ شهریور ۲۵, پنجشنبه

ديد گاهها ( Views )

ديدگاه نمايش مناسبي از داده اي است كه توسط يك يا بيشتر از يك جدول  و يا ساير ديدگاهها در بر گرفته شده است . در واقع ديدگاه خروجي يك درخواست (query ) را مي گيرد و با آن به عنوان يك جدول برخورد مي كند . بنابراين  , ديدگاه مي تواند تصويري از يك درخواست ذخيره شده و يا يك جدول مجازي باشد . شما مي توانيد از يك ديدگاه در بيشتر مكانهايي كه استفاده مي كرديد استفاده كنيد .
به عنوان , جدول employees شامل چند ستون و بيشمار رديف حاوي اطلاعات است . چنانچه بخوانيد كاربران فقط پنج تا از اين ستونها و يا فقط تعداد مشخصي از رديف ها را ببينند كافيست ديدگاهي از آن جدول را براي كاربراني كه به آن دسترسي دارند , ايجاد نمايند . 

از آنجايي كه ديدگاهها از جداول مشتق مي شوند , شباهت زيادي به يكديگر دارند . به عنوان مثال , شما مي توانيد ديدگاهي با 1000  ستون داشته باشيد , درست شبيه به يك جدول . همچنين مي توانيد به يك ديدگاه درخواست بدهيد و يا با اعمال بعضي از محدوديت ها , آنرا به روزرساني , حذف و يا اضافه كنيد.تمامي اعمالي كه بر روي يك ديدگاه انجام مي دهيد بر روي جدول پايه اي كه ديدگاه از آن مشتق شده اثر مي گذارد .
شما نمي توانيد به طور صريح تريگرهايي را بر روي ديدگاهها تعريف نماييد . بلكه مي توانيد آنرا بر روي جدولهاي پايه اي كه توسط ديدگاه به آن اشاره مي شود , تعريف كنيد. اوراكل تعريف ديدگاههاي منطقي بر روي ديدگاهها را پشتيباني مي كند .
ديدگاهها چگونه ذخيره مي شوند :
بر خلاف جداول به ديدگاهها , هيچ فضاي ذخيره اي اختصاص داده نمي شود , چرا كه واقعا شامل داده نيست . بلكه , توسط درخواستي كه داده را از جدول هايي كه ديدگاه به آن اشاره مي كند , استخراج و استنتاج مي كند , تعريف مي شوند . اين جداول , جداول پايه (  base table ) ناميده مي شوند .جدولهاي پايه مي توانند جداول واقعي باشند يا اينكه خودشان هم ديدگاه باشند . از آنجا كه يك ديدگاه براساس ساير اشيا است , به انباري به جز انباري براي تعريف ديدگاه در فرهنگ داده , نياز دارند .

ديدگاهها چگونه مورد استفاده قرار مي گيرند ؟
ديدگاهها امكاناتي را براي نمايش داده هايي كه در جداول پايه مستقر هستند , فراهم مي كنند . ديدگاهها بسيار قدرتمند هستند , چرا كه به شما اجازه مي دهند تا ارائه ي مناسبي از از داده ها با انواع متفاوت براي كاربران , داشته باشيد .ديدگاهها قالبا مورد استفاده قرار مي گيرند , براي :
•    فراهم آوردن يك سطح اضافي از امنيت , بوسيله ي محدود كردن دسترسي به يك مجموعه معين شده از رديف ها و ستون هاي يك جدول
•    پنهان كردن پيچيدگي داده
•    ساده كردن عبارت براي كاربر . براي مثال , ديدگاهها به كاربران اجازه مي دهند اطلاعاتي را از چندين جدول بدون اينكه به چگونگي كار آگاهي داشته باشند, انتخاب كنند .
•    نمايش داده از جنبه اي متفاوت از آنچه در جدول پايه است .به عنوان مثال,  يك ستون از ديدگاه مي تواند تغيير نام پيدا كند , بدون اينكه اثري بر روي جدول پايه اي كه ديدگاه از آن مشتق شده , بگذارد .
•    در امان نگه داشتن برنامه ي كاربردي از تغييراتي كه در جدول پايه رخ مي دهد . به عنوان مثال , اگر درخواستي ( query ) كه يك ديدگاه را تعريف مي كند به سه ستون از چهار ستون جدول پايه اشاره كند , در اين صورت چنانچه به تعداد ستونهاي جدول پايه اضافه شود , باز تاثيري در تعريف ديدگاه ندارد و برنامه اي كه از ديدگاه استفاده مي كند بدون تغيير مي ماند .
•    ذخيره كردن درخواست هاي پيچيده.
طرز كار ديدگاهها :
اوراكل يك ديدگاه را به عنوان متن درخواستي كه ديدگاه را تعريف مي كند , در فرهنگ داده ذخيره مي كند . زمانيكه شما به يك ديدگاه با استفاده از عبارت sql اشاره مي كنيد , اوراكل:
1.    عبارتي را كه به ديدگاه اشاره مي كند با درخواستي كه ديدگاه را تعريف مي كند , ادغام مي نمايد.
2.    عبارت ادغام شده را در يك ناحيه ي sql مشترك ( shared ) , پارس مي كند .
3.    عبارت را اجرا مي نمايد .
اوراكل عبارتي را كه به يك ديدگاه در يك ناحيه ي sql مشترك اشاره مي كند , تنها به شرطي پارس مي كند كه , آن ناحيه شامل عبارت مشابه ديگري نباشد. بنابراين , شما با استفاده كردن از ديدگاهها بهترين استفاده را از حافظه مي كنيد.

استفاده از ايندكس ها در برابر ديدگاهها :
اوراكل تعيين مي كند كه آيا از ايندكس ها براي يك درخواست در برابر ديدگاه , بوسيله ي تبديل كردن درخواست اصلي زماني كه با درخواست تعريف ديدگاه, ادغام مي شوند , استفاده شود يا نه؟
در هر صورت اوراكل query كاربر را با query مربوط به تعريف view كه در query به كار رفته است ادغام مي كند . در واقع اوراكل درخواست ادغام شده را بهينه مي كند , به اين صورت كه به درخواستي كه كاربر داده به عنوان درخواستي نگاه مي كند كه به هيچ ديدگاهي اشاره نمي كند . خواه ستونها در تعريف ديدگاه اشاره شده باشد و يا در درخواست كاربر.
وابستگي ها و ديدگاهها :
از آنجا كه يك ديدگاه بوسيله ي درخواستي كه به ساير اشيا ( جدول ها و ساير ديدگاهها ) اشاره مي كند تعريف مي شود  , بنابراين به اشيا ارجاع شده وابسته مي باشد. اوراكل به طور اتوماتيك , اين وابستگي را براي ديدگاهها ,  handle مي كند . به عنوان مثال , اگر شما جدول پايه اي را حذف و سپس ايجاد كنيد , اوراكل تعيين مي كند كه آيا جدول پايه ي جديد براي ديدگاه موجود پذيرفتي هست يا خير ؟

ديدگاههاي الحاقي قابل به روز رساني : ( update join views )
يك ديدگاه الحاقي است كه شامل دو و يا بيشتر از دو جدول پايه و ديدگاه مي باشد , با اين تفاوت كه عمليات حذف , اضافه  و به روز رساني بر روي آن اجازه داده شده است.
فرهنگ داده ديدگاهها :
ALL_UPDATABLE_COLUMNS
DBA_UPDATABLE_COLUMNS
USER_UPDATABLE_COLUMNS
شامل اطلاعاتي است كه نشان مي دهد ستون هاي ديدگاه قابل به روز رساني هستند. به منظور ماندگاري يك به روز رساني , ديدگاه نبايد هيچ كدام از محدوديت هاي زير را شامل شود :
•    عملگر مجموعه اي ( set operator )
•    عملگر محدوديت ( distinc operator )
•    توابع اجتماع يا تجزيه aggregate or analytic function))
•    شرايط BY,ORDER BY, CONNECT BY, START WITH  GROUP
•    مجموعه عبارات در يك ليست انتخابي
•    زير درخواست ( sub query ) در يك ليست انتخابي
•    الحاق كردن با بعضي عبارات

هیچ نظری موجود نیست:

ارسال یک نظر