پاسخ به:آموزش گام به گام SQL Server
پنج شنبه 31 شهریور 1390 11:59 PM
سلام
شروع می کنیم :
طراحی View :
View ها در واقع جداول مجازی هستند که محدودیت در سطرها و ستون های یک یا چند جدول رابطه ای یا ستون های محاسباتی را شامل می شوند، در طراحی View استفاده از Order By (بدون Top ), Into دردستور Select بازگشتی مجاز نبوده و هنگام استفاده از جدول مجازی و با استفاده از دستور Select * کلیه ستونهای اعلام شده در View در اختیار درخواست کننده قرار خواهد گرفت و درخصوص قابلیت دسترسی به سطرها و ستون های View می بایستی موارد دسترسی به جدول مجازی از طریق روش های امنیتی ایجاد گردد ، در نگاه اول شاید بنظر رسد که View ها شباهت به SP ها دارند ولی با دقت بیشتر سطوح امنیتی و محدودیت های ایجاد شده و قابلیت تعیین مشروط و مرتب سازی اختصاصی و مواردی از این دست که توسط دستور Select قابل وصول است در محدوده تعیین شده بسیار انعطاف فوق العاده ای را ایجاد خواهد کرد که در جای خود بسیار حائز اهمیت است با این اوصاف شکل کلی طراحی یک View به شکل ذیل خواهد بود.
] ( نام ستون ها ) [ نام ویو Create View
[With SchemaBinding]
As
دستور Select
همانطور که از شکل ظاهری دستور مشاهده می گردد نتیجه جدول بازگشتی در دستور Select بعنوان جدول مجازی توسط کاربر مورد استفاده قرار خواهد گرفت در این دستور در صورتیکه ستون بازگشتی در دستور Select یک فیلد محاسباتی یا SubQuery باشد می بایستی حتماً نامی برای آن ستون درنظر گرفته شود. درضمن هیچ دستور دیگری جز دستور Select در این ساختار قابل استفاده نمی باشد که این موضوع قدرت SP را در برنامه نویسی نسبت به View نشان می دهد.
مثال) برای سیستم پرسنلی یک View طراحی کنید که ستون های ذیل را شامل گردد.
] تعداد تحت تکفل ] , [ محل تولد ] , [ نام ] , [ نام خانوادگی ] , [ شماره کارمندی [
همانطور که مشاهده می گردد ستون های تعداد تحت تکفل و محل تولد می تواند از طریق Join با جداول مربوطه به شکل ذیل حاصل گردد.
Create View V1 As
Select No=PrsID,PFamily,PName,C.CityName As CN ,
(Select Count(*) From Child Where PrsID=P.PrsID) As Cno
From Person P
Left Join City C On(C.CityID=P.CityID)
( 50 )
مثال) براساس View طراحی شده بنام V1 دستوری بنویسید که ستون های ذیل را به ترتیب نام و نام خانوادگی برای تحت تکفل بزرگتر از 2 ارائه دهد.
] تعداد تحت تکفل ] , [ نام خانوادگی ] , [ نام ] , [ شماره کارمندی [
در این حالت خواهیم داشت :
Select No,PName , PFamily , Cno
From V1
Where Cno > 2
Order By PFamily , PName
چند مثال دیگه از این بحث مونده که در پست های بعدی می گم.
موفق باشید