آموزش SQLserver (بخش دهم)

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


Query هایی که در فصل 3 بررسی گردید سطرهایش از یک جدول تکی ترسیم گردیده است اما Query ها به ویژه می توانند مفید باشند برای ترکیب ستونهایی از چندین جدول یا نما که Joining Tables نامیده می شود و آن در شرطهای FROM یا WHERE از حالت SELECT انجام می گیرد. در این فصل ما بر روی ایجاد ارتباطها با استفاده از شرط FROM که روشی توصیه شده است متمرکز خواهیم شد.

شناختن شرط FROM
همان طوری که ما دیده ایم، ساختار پایه ای از شرط FROM به آسانی نام از یک جدول یا نما ساده را فراهم می سازد. اما برای دسترسی پیدا کردن به توانایی از مدل ارتباطی، ما باید به بازیابی ستونها از جداول چندگانه و نماها در یک Query خاص قادر باشیم. شرط FROM یک مکانیزمی برای انجام آن با استفاده از ساختار دستور زیر:FROMON
اپراتور پیوند انواع پیوند برای به انجام رسیدن را تشریح می کند. Server SQL پیوندهای داخلی و خارجی همه نوسانات را پشتیبانی می کند، همان طوری که در بخش بعدی خواهیم دید. شرایط پیوند یک تعبیری می باشد شبیه به ملاک که در شرط WHERE استفاده شده است. آن مشخص می کند که چگونه سطرها در دو جدول ارتباط خواهند یافت. بیشتر پردازشگرهای ربطی روی پایه ای از عبارتهای برابری مانند B ستون = A ستون به انجام می رسند. اما SQL Server هر اپراتور منطقی را پشتیبانی کرده و شرایط پیوند می تواند به طور دلخواه پیچیده باشد، با عبارات چندگانه پیوند یافته که از حرف ربط AND یا OR از همان راهی که یک شرط WHERE می تواند ملاک انتخابی چندگانه را شامل باشد استفاده کند. عبارت پیوند می تواند برای اضافه کردن جداول و نماهای اضافی برای Query تکرار شود. ساختار دستور برای پیوند جداول چندگانه عبارت است از: FROM
ON
یک حدود فرضی 256 جدولی برای هر Query وجود دارد، اما آن به حد زیاد غیر محتمل است که شما اصلاً نیاز به 5 یا 6 نیاز ندارید و 2 یا 3 بیشتر معمول می باشد. در حقیقت اگر شما نیاز به اتصال بیش از 10 جدول در یک Query باشید، شما باید به دقت طرح پایگاه داده آن را نگاه کرده برای اینکه مطمئن شوید که آن به طور صحیح به حالت عادی در آمده است.

ایجاد کردن پیوندها
پیوندها می توانند در Query Designer با استفاده هر کدام از قاب Grid یا قاب SQL ایجاد گردند. قاب Grid اغلب آسانتر می باشد اگر شما جداولی که رسماً در طرح پایگاه داده مربوط شده اند پیوند دهید، از موقعی که Query Designer پیوندی بین آنها به طور خودکار ایجاد خواهد کرد. اما به طور معمول قاب SQL با انعطاف پذیری بیشتر برای شما فراهم می گردد.

نامگذاری شئی ها
زمانی که شما با یک جدول یا نمای تکی کار می کنید آنجا می تواند هیچ ابهامی در حدود منابع از یک ستون نداشته باشد از موقعی که همه نام ستونها در یک جدول باید منحصر به فرد باشند. هنگامی که شما برای بار اول کار کردن با چندین جدول در یک Query را شروع می کنید یا شما باید برای مشخص کردن نام ستونها صریحاً مواظب باشید. مشخصات کامل برای هر شئی پایگاه داده چهار معرفه را در بردارد. نام سرور، نام پایگاه داده، نام صاحب، نام شئی. معرفه ها به وسیله پریودها جداسازی می گردند. بنابراین نام واجد شرایط از جدول Oils در سیستم من Bunny.Aromatherary.dbo.Oil می باشد. مقداری از شئی ها مانند نماها و جداول شامل شئی های دیگر می باشد. برای رجوع به یکی از این شئی های گنجانده شده (در این حالت، ستونها). شما به آسانی نام آن را به نام شئی ضمیمه می کنید. نام واجد شرایط کامل از ستون OilID از جدول Oils (Bunny.Aromatherapy.dbo.Oils.Oil ID) می باشد. خوشبختانه شما فقط نیاز به مشخص کردن کافی از درجه بندی ابهام اجتناب پذیر دارید.
در یک Query مبنی بر یک جدول تکی، برای مثال نام ستون به وسیله خودش دارای مشخصات کافی می باشد. اگر یک Query به بیش از یک جدول مربوط گردد، اگر چه جداول دارای ستونهایی با یک نام باشد. شما باید نام جدول را در نام شئی (Object) Oils.OilID , OilPropertise.OilID که تمایز را به طور کامل روشن می سازد لحاظ کنید.

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

پیوند دو جدول با استفاده از قاب دیاگرام
1- Query Designer جدول Oils را به وسیله کلیک راست کردن نام آن در قاب Details باز کرده روی جدول Open رفته و همه سطرهای بازگشتی را انتخاب می کنیم.

2- قاب دیاگرام را به وسیله کلیک کردن دکمه قاب دیاگرام روی نوار ابزار Query Designer نشان می دهیم.

3- دکمه Add Table را روی نوار ابزار Query Designer کلیک می کنیم. Query Designer کادر محاوره ای Add Table را نشان می دهد.

4- جدول PlantTypes را در لیست جدول انتخاب کرده و Add را کلیک می کنیم. SQL Server جدول را به Query اضافه می کند.
5- Close را برای بستن کادر محاوره ای Add Table کلیک می کنیم.

6- دکمه قاب SQL را در نوار ابزار Query Designer کلیک می کنیم. Query Designer قاب SQL را نشان می دهد.

7- علامت * را بعد از کلید واژه SELECT حذف می کنیم.

8- دکمه قاب SQL را در نوار ابزار Query Designer کلیک می کنیم. (OK را کلیک کرده اگر Query Designer یک متن خطا درباره ساختار دستور SELECT نشان دهد). Query Designer قاب SQL را پنهان می سازد.
مهم: زمانی که شما Query Designer را باز می کنید، حالت SQL معمولاً * را انتخاب می کند. انتخاب کردن ستونهای مشخص در قاب دیاگرام سبب می شود که آنها به لیست ستون اضافه شوند. مایکروسافت آن را به صورت یک خصیصه در نظر می گیرد.

9- در قاب دیاگرام ستونهای OilID و OilName را در جدول Oils و ستون PlantType را در جدول PlantType انتخاب می کنیم.

10- دکمه Run روی نوار ابزار Query Designer برای اجرای Query کلیک می کنیم. Query Designer مقادیر Planttype را برای هر Oil نشان می دهد.


ارتباط دو جدول به وسیله قاب SQL
1- قاب دیاگرام را پنهان کرده و قاب SQL را به وسیله کلیک کردن دکمه ها روی نوار ابزار Query Designer نشان می دهیم.

2- حالت SQL موجود را با عبارت زیر جایگزین می کنیم.


SELECT Oils.OilID,Oils.Oil Name,PlantParts.PlantPart
FROM OilsINNER Join
PlantParts ON Oils.PlantPartID=PlantParts.PlantPart ID


3- دکمه Run را در نوار ابزار Query Designer برای اجرای Query کلیک می کنیم. Query Designer مقادیرها برای هر سطر Oils Plant Part را نشان می دهد.


ارتباط جداول چندگانه با استفاده از قاب دیاگرام
1- قاب SQL را پنهان کرده و قاب دیاگرام را نمایش می دهیم.

2- دکمه Add Table را روی نوار ابزار Query Designer کلیک می کنیم. Query Designer کادر محاوره ای Add Table را نشان می دهد.

3- جدول Planttypes را در لیست جداول انتخاب می کنیم. Add را کلیک کرده SQL Server جدول را به Query اضافه می کند.
4- Close را برای بستن کادر محاوره ای Add Table کلیک می کنیم.

5- در قاب دیاگرام ستون Planttype را در جدول Planttypes برای اضافه کردن ستون به Query کلیک می کنیم.

6- دکمه Run در نوار ابزار Query Designer برای اجرای Query کلیک می کنیم. Query Designer هر دوی ستونهای PlantPart و Planttype را برای هر Oil نشان می دهد.


ارتباط جداول چندگانه با استفاده از قاب SQL
1- قاب دیاگرام را پنهان کرده و قاب SQL را نشان می دهیم.
2- عبارت SELECT موجود را با عبارت زیر جایگزین می کنیم.


SELECT Oils.Oil ID.Oils.Oil Name.odors.odor
FROM Oils
INNER Join Oilodors on Oils.OilID=Oil odors.OilID
INNER Join odors on Oilodors.odor ID=odors.odorID


3- دکمه Run را در نوار ابزار Query Designer برای اجرای Query کلیک می کنیم.

4- پنجره Query Designer را می بندیم.

ارتباطات خارجی
بعضی مواقع شما می خواهید که یک Query همه سطرها یک یا چندین جدول را باز گرداند، خواه آنها سطرهای ارتباطی در جداول دیگر داشته باشند و یا خیر. که با استفاده از یک ارتباط خارجی به انجام رسیده که می تواند سه گونه باشد: چپ، راست و کامل. یک ارتباط خارجی همه سطرهایی از جدول چپ در شرط JOIN و فقط آن سطرهایی از جدول راست برای اینکه شرایط ارتباط TRUE می باشد را باز خواهد گرداند.
دستور ساختار برای یک ارتباط خارجی عبارت است از:
FROM Left Table Left Outer Join Right able on
برای مثال عبارت SELECT زیر، همه سطرها در جدول Oils را باز می گرداند و مقادیر PlantPart از جدول آنجایی که PlantPart مشخص شده جفت می شود. آنجا سطرهای ارتباطی در جدول Plant Parts وجود ندارد و Query ، Null را به عنوان مقدار PlantPart برای آن سطر باز می گرداند.


SELECT Oils.Oil Name.Plant Parts.Plant Part
FROM Oils Left Outer Join
Plant Parts on Oils.Plant Part ID=Plant Parts.Plant Part ID


یک ارتباط خارجی سمت راست مقابل یک ارتباط خارجی سمت چپ می باشد. آن همه سطرها از جدول راست در شرط JOIN را باز می گرداند و مقادیر ارتباطی را از جدول چپ ارتباط می دهد. نظر به اینکه یک ارتباط کاملاً خارجی همه سطرها از دو جدول را با هم هماهنگ می سازد آنجایی که امکان پذیر باشد.

ایجاد کردن یک ارتباط خارجی چپ با استفاده از قاب دیاگرام
1- Query Designer را برای جدول Oils به وسیله کلیک راست کردن نام جدول در قاب Details باز کرده، روی جدول Open رفته و همه سطرهای بازگشتی را انتخاب می کنیم.
2- قاب دیاگرام را نشان می دهیم.

3- دکمه Add Table را در نوار ابزار Query Designer کلیک می کنیم. Query Designer کادر محاوره ای Add Table را نشان می دهد.

4- Cautions و Oil Cautions در لیست جدول را انتخاب و سپس Add را کلیک می کنیم. Query Designer جدولی برای Query اضافه می کند.
راهنمایی: شما می توانید یک ارتباط خارجی چپ با دو جدول ایجاد کنید. ما حالت سوم را در ایجاد استفاده می کنیم با جدول OilCautions که به عنوان یک جدول الحاقی عمل می کند که ارتباط چندگانه بین Oils و Cautions را حل می کند.
5- Close را برای بستن کادر محاوره ای کلیک می کنیم.

راهنمایی: شما می توانید جداول را در قاب دیاگرام برای پاک کردن نمایشگر درج کنید.

6- دکمه قاب SQL را در نوار ابزار Query Designer کلیک می کنیم. Query Designer قاب SQL را نشان می دهد.

7- علامت * را در کلید واژه SELECT حذف می کنیم.

8- دکمه قاب SQL را در نوار ابزار Query Designer کلیک می کنیم. (OK را کلیک کرده اگر Query Designer یک متن خطا درباره ساختار از عبارت SELECT نشان دهد) Query Designer قاب SQL را پنهان می سازد.
مهم: زمانی که شما Query Designer را باز می کنید عبارت SQL پیش فرض معمولاً * را انتخاب می کند. ستون ویژه که در قاب دیاگرام انتخاب شده سبب می شود که آنها برای لیست ستون اضافه شوند. مایکروسافت این را به عنوان یک ویژگی در نظر می گیرد.

9- در قاب دیاگرام، ستونها از OilName و OilID را از جدول Oils و ستون Caution را از جدول Cautions برای خروجی انتخاب می کنیم.

10- دکمه Run را در نوار ابزار Query Designer برای اجرای Query کلیک می کنیم. Query Designer فقط آن Oils که Cautions دارد را نشان می دهد.

11- خط ارتباطی بین جداول Oil Cautions و Oils را به وسیله کلیک کردن آن انتخاب می کنیم و سپس دکمه Properties را در نوار ابزار Query Designer کلیک می کنیم. Query Designer کادر محاوره ای Join Properties را نشان می دهد.

12- All Rows From Oils را انتخاب می کنیم.

راهنمایی: همه سطرها از Oil Cautions یک ارتباطی خارجی سمت راست ایجاد خواهد کرد و هر دوی گزینه ها را انتخاب کرده که یک ارتباط کامل خارجی ایجاد می کند.
13- Close را برای بستن کادر محاوره ای کلیک می کنیم. Query Designer خط ارتباطی را برای انعکاس مشخصات ارتباطی جدید تغییر می دهد.

14- دکمه Run در نوار ابزار Query Designer برای اجرای Query کلیک می کنیم. Query Designer همه سطرها در جدول Oils را نشان می دهد و مقادیر از جدول Cautions را ارتباط می دهد.

ایجاد یک ارتباط خارجی سمت راست با استفاده از قاب SQL
1- قاب دیاگرام را پنهان کرده و قاب SQL را در Query Designer نشان می دهیم.

2- حالت SELECT موجود را با عبارت زیر جایگزین می کنیم.


SELECT Oils.Oil Name.Properties.Property
FROM Oils
Right OUTER JOIN Oil Properties on
Oils.Oil ID=Oil Properties.Oil ID
INNER JOIN Properties on
Oil Properties.Property ID=Properties.Property ID


3- دکمه Run را در نوار ابزار Query Designer برای اجرای Query کلیک می کنیم. Query Designer شامل همه سطرها از جدول Oil Properties با مقادیر ارتباطی از جدول Oils می باشد.

4- پنجره Query Designer را می بندیم.

UNIONS
آخرین نوع از ارتباط به صورت Union شناخته می گردد. یک Union نتایجی از دو عبارت SELECT متمایز را در داخل یک تنظیم از سطرها ترکیب می کند. ارتباطات داخلی و خارجی ستونهایی از دو جدول درگیر شده در یک سطر تکی را با هم ترکیب می کند یک Union سطرهایی از دو جدول در یک ستون تکی را به هم ترکیب می کند. شما می توانید تصور کنید که تنظیمات دو سطر را گرفته و یکی را در بالای دیگری باز گردانید. اگر چه قاعده اصلی از سطرها باز گردانده شده به وسیله شرط ORDER BY مشخص می گردد. ساختار دستور یک Union از پیوندها متفاوت می باشد. یک Union ساختار دستوری به صورت زیر دارد:


SELECT FROM
UNION [All]
SELECT FROM
[ORDER BY ]


شما می توانید بسیاری از حالتهای UNION SELECT را همان طوری که شما برای یک Query دوست دارید اضافه کنید. (این موضوع برای 256 جدول محدود می باشد) اما همه عبارتهای SELECT باید همان تعداد از ستونها را از انواع سازگار یا شبیه در همان دستور باز گرداند. اولین عبارت SELECT نامهای ستون را مشخص خواهد کرد و شرط ORDER BY از آخرین عبارت SELECT دستور Sort را تعیین خواهد کرد. به طور پیش فرض، SQL Server سطرهای چندگانه ای از نتایج را از یک Union Query برمی دارد. اگر شما Union All را مشخص کنید، ولی سطرهای چندگانه حفظ خواهد شد.

ایجاد کردن یک UNION
1- Query Designer را به وسیله کلیک کردن جدول Properties در قاب Details باز کرده روی جدول Open رفته و همه سطرهای بازگشتی را انتخاب می کنیم.
2- قاب SQL را نشان می دهیم.

3- حالت SQL موجود را با عبارت زیر جایگزین می کنیم.


SELECT Property Table AS Table Name.Property ID AS ID
Property AS Quality From Properties
UNION
SELECT odor Table.odor ID odor From odors
ORDER BY Quality


4- دکمه Run در نوار ابزار Query Designer را برای اجرای Query کلیک می کنیم. Query Designer نتایجی از دو عبارت SELECT را با هم ترکیب می کند.

آموزش SQLserver (بخش نهم)

جداول موقت
جداول موقت مثل جداول عادی هستند با این تفاوت که آنها فقط زمانی وجود دارند که از آنها استفاده می شود. آنها به طور اتوماتیک وقتی که تمام کاربران دیگر با آنها کاری ندارند توسط Microsoft SQL حذف می شود. نکته: ایجاد یک جدول موقت یک رویه تقریباً پر هزینه می باشد که مربوط به هزینه منابع Server و چرخه های CPU می باشد. بسیاری از استفاده های مرسوم از جداول موقت هم اکنون می توانند با استفاده از جدول متغیرها جایگزین شوند.
استفاده از جدول موقت
جداول موقت با استفاده از همان فرمان Create و Select INTO به عنوان جداول عادی ایجاد می شوند. بعد از تهیه جدول در سؤال قابل دسترسی به ارتباط خواهد بود. (این است که این یک جدول محلی تهیه شده توسط ارتباط متفاوت نیست)، این عمل همچنین مثل جداول عادی قابل استفاده می باشد.

ایجاد جدول موقت محلی
1- دکمه علامت سؤال جدید را روی Toolbar تجزیه کننده سؤال کلیک کنید تا یک پنجره سؤال جدید ظاهر شود.
2- روی دکمه Loud Script روی Toolbar تجزیه کننده سؤال کلیک کنید. تجزیه کننده سؤال جعبه پرونده گفتگو را نشان خواهد داد.
3- نسخه خطی Create Local را انتخاب کنید و Open را کلیک کنید. تجزیه کننده سؤال نسخه خطی را پر می کند.
4- دکمه Execute Query را در Toolbar تجزیه کننده سؤال کلیک کنید. تجزیه کننده سؤال جدول موقت ایجاد می کند.
5- User Table Folder را که در پایگاه داده Tempdb در Object browser می باشد را انتخاب کنید.
6- F5 را برای به کارگیری مجدد نمایشگر Object browser فشار دهید و User Table Folder را گسترش دهید. نمایشگر سؤال جدول محلی dbo.# را در لیست نشان خواهد داد.

ایجاد جدول جهانی موقت
1- بدون بستن پنجره شامل نسخه خطی Create Local بر روی دکمه New Query روی Query Analyzer Toolbar برای باز کردن یک پنجره جدید خطی، کلیک کنید.
2- بر روی دکمه Loud Script روی Query Analyzer Toolbar کلیک کنید. Query Analyzer نشانگر جعبه گفتگوی فایل Query خواهد بود.
3- خطی را که در آن Create 6 Loud وجود دارد را انتخاب کنید و Open را کلیک کنید. تجزیه کننده سؤال خط انتخابی را Loud می کند.
4- دکمه Execute Query را که روی Query Analyzer Toolbar می باشد را کلیک کنید. Query Analyzer جدول موقت را ایجاد می کند.
5- User Folder Table که مربوط به Tempdb Database در Object browser را انتخاب کنید.
6- F5 را برای راه اندازی مجدد نمایشگر Object browser فشار دهید. Query Analyzer نمایشگر dbo##6 Loud Table لیست خواهد بود.

 

آموزش SQLserver (بخش هشتم)

ایجاد کردن شئی های جدول
در درسهای گذشته، شما آموختید که چگونه خصوصیات گوناگون از قبیل مقادیر پیش فرض و Check Constraints برای ستونهای خاص از یک جدول تخصیص دهیم. بعضی مواقع اگر چه، یک نوع خاص از ستون در چندین جدول مختلف استفاده می گردد. در این وضعیت، آن اغلب مفید می باشد به ایجاد Properties در یک جای جداگانه به طوری که آنها را برای هر جدول به کار ببریم.
پیش فرضها، نقشها و انواع داده تعریف شده کاربر مکانیزمی را برای ایجاد و نگهداری این شئی ها در یک مکان جداگانه فراهم می آورند. برای مثال شما یک مدل پایگاه داده برای جوابگویی به ارزیابی مشتری می سازید. شما در ابتدا تصمیم می گیرید که مقدار پیش فرض برای هر سؤالی که جواب داده نشده باید Unknown"" شوند. اگر شما یک پیش فرض ایجاد کنید و پیش فرضها را برای ستون مناسب پیوند دهید. شما می توانید بعداً پیش فرض را به Unanswered تغییر دهید. بدون هیچ تغییری هر ستون، آن پیش فرض را استفاده می کند.

شناخت پیش فرضها
توابع پیش فرض از همان راهی که خصوصیات پیش فرض که شما مشخص می کنید زمانی که شما یک ستون در Table Designer ایجاد می کنید آنها مقادیری هستند که به طور خودکار به وسیله SQL Server تخصیص داده می شوند. اگر کاربر یک مقدار را زمانی که سطری را ایجاد می کند مشخص نکند. اگر چه پیش فرض، شئی های سطح پایگاه داده می باشند که می تواند برای چندین ستونها به کار برده شوند.

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

ایجاد کردن یک پیش فرض
1- پوشه Defaults را از پایگاه داده Aromatherapy از درختConsole جستجو می کنیم. SQL Server یک لیستی از Default ها را در قالب Details نشان می دهد. (چیزی در پایگاه داده Sample وجود ندارد).

2- دکمه Newرا کلیک کرده، SQL Server کادر محاوه ای Default Properties را نشان می دهد.

3- در فیلدName ، Default Unknown را تایپ می کنیم.

4- "Unknown" را در فیلد Value تایپ می کنیم.

5- OK را کلیک کرده،SQL Server پیش فرض را ایجاد می کند.

ربط دادن یک پیش فرض به یک ستون
1- پوشهTables را راهبری کرده، Table Designer را برای جدول Oil با کلیک راست کردن نام جدول در قاب Details باز کرده و Table Design را انتخاب می کنیم.

2- یک ستون جدید برای جدولی که Sample نامیده شده اضافه می کنیم. انواع داده پیش فرض را پذیرفته و طول آن به وسیله SQL Server پیشنهاد می گردد.

3- فیلد Default Valve را برای ستون کلیک کرده و سپس dbo.DefaultUnknown را از لیست انتخاب می کنیم.

4- دکمه Save را کلیک کردهSQL Server جدول را ذخیره می کند.

قطع پیوند یک پیش فرض
1- اگر Table Designer برای جدول Oilsاز تمرین قبل باز نیست، آن را به وسیله کلیک راست کردن نام جدول در قاب Pet ail> باز کرده و Design Table را انتخاب می کنیم. SQL Server، Table Disdainer را باز می کند.

2- ستون Sampleرا انتخاب کرده، Table Designerخصوصیات این ستون را نشان می دهد.

3- dbo.DefaultUnknown را در فیلد Default Value انتخاب کرده و کلید Delete را برای برداشتن مقدار فشار می دهیم.

4- دکمه Save راکلیک کرده SQL Server تغییرات برای تعریف ستون را ذخیره می سازد.

شناخت نقشها
نقشها مانند پیش فرضها سطوح شئی های پایگاه داده می باشند که می تواند برای ستونها در جداول چندگانه به کار برده شوند. یک نقش Check Constraint موجود می باشد که مشخص می کند مقادیر داده ها در یک ستون مورد قبول می باشند، اما استفاده از آن بیشتر محدود شده است. یک ستون می تواند چندین Check Constraintداشته باشد که برای آن به کار برده می شود.
راهنمایی: مایکروسافت نقشها و توصیه ها را که با Check Constraint جایگزین می شود را درست نمی داند. اگر چه نقشها هنوز جایگاهشان را در پایگاه داده هایSQL Server دارند از زمانی که فقط یک وظیفه بتواند برای نوع داده هایی که به وسیله SQL Server تعریف شده به کار برده شود.
برخلاف Check Constraint ، یک نقش نمی تواند مبنایی برای یک ستون به طور مستقیم باشد. در عوض، مقادیری که یک نقش به کار می برد به نقشی که در یک متغیری که فرمت@Variable Name می گیرد داده می شود. در مورد متغیرها در Detail در فصل 24 بحث خواهیم کرد.

ایجاد کردن نقشها
از زمانی که نقشها مانند Defaults مستقل از شئی های پایگاه داده می باشند، شما باید آنها را قبل از اینکه شما بتوانید آنها را برای یک ستون در جدول به کار ببرید ایجاد کنید.

ایجاد یک نقش
1- پوشه نقش را از پایگاه داده در درخت Console راهبری کرده SQL Server یک لیستی از نقشها در پایگاه داده نشان می دهد. (لیست در پایگاه داده Sample خالی می باشد)

2- دکمه New را کلیک کردهSQL Server کادر محاوره ای را باز می کند.

3- Sample Rule را به عنوان نام نقش تایپ می کنیم.

4- LEN(@Fldalue)>3 را به عنوان متن نقش تایپ می کنیم.

راهنمایی: به خاطر داشته باشید LEN یک تابعTransact SQL می باشد که تعدادی از کاراکترها را در یک متن رشته ای برمی گرداند و اینکه @ قبل از یک بر چسب عبارتTransact SQL یک متغیــر را نشان می دهد، یک مقدار که برای عبارت داده می شود. بنابراین در این حالت نقش Trueمی گردد اگر طول ستون بزرگتر از 3 باشد.
5-OK را کلیک کرده، SQL Server کادر محاوره ای Rule Properties را می بندد و نقش را ایجاد می کند.

ربط دادن یک Rule به یک ستون
1- کادر محاوره ای Rule Properties را برایSample Rule به وسیله دابل کلیک کردن نام Rule در قاب Details باز می کنیم. SQL Server کادر محاوره ای Rule Properties را نشان می دهد.

2- ستونBind را کلیک کرده SQL Server کادر محاوره ایBind Rule to Columns را نشان می دهد.

3- [dbo].[Oils] را درTable Combo Box انتخاب می کنیم.SQL Server فیلدها را در جدول Oils نشان می دهد.

4- ستون Sample را در لیست Unbound Columns انتخاب کرده و سپس Add را کلیک می کنیم. SQL Server ستون را به لیست Bound Columns حرکت می دهد.

5- SQL Server کادر محاوره ایBind Rule to Columns را می بندد.
6-OK را مجدداً برای بستن کادر محاوره ای Rule Properties کلیک می کنیم.

شناخت User-Defined Data Types
نقشها و پیش فرضها مکانیزم مفیدی برای نگهداری محدودیتهای پایگاه داده ها می باشند، اما SQL Server حتی مکانیزم قوی تری در User-Defined Data Typesها فراهم می آورد. User-Defined Data Types بر مبنای هیچ نوع از پایگاه داده حقیقی مشخص نمی گردد و شامل مشخصاتی از طول ستون می باشد. به طور کلی نقشها و پیش فرضها ممکن است به طور انتخابی برای یکUser-Defined Data Types به کار برده شوند. زمانی که یک ستون بر مبنای یک User-Defined Data Typesایجاد می گردد، ستون جدول همه خصوصیات مشخص شده را برای آن نمونه به ارث خواهد برد. زمانی که مشخصات از User-Defined Data Typesتغییرمی یابد،نقشها برای ستونها بر اساس آن نمونه همچنین تغییر خواهد کرد.
راهنمایی: اگر یک User-Defined Data Type در پایگاه داده Model ایجاد گردد، همه پایگاه داده جدید به طور خودکار به آن نوع دسترسی خواهد داشت.

ایجادکردن User-Defined Data Types
User-Defined Data Types از شئی های پایگاه داده مستقل می باشند و باید در داخل پایگاه داده تعریف شوند قبل از اینکه آنها بتوانند به ستونها تخصیص داده شوند.

ایجاد کردن یک User-Defined Data Types
1- پوشه User-Defined Data Types را از پایگاه داده Aromatherapy راهبری می کنیم. SQL Server یک لیستی ازUser-Defined Data Types را نشان می دهد (چیزی در پایگاه داده Sample وجودندارد).

2- دکمه New را کلیک کرده SQL Server کادر محاوره ای User-Defined Data Types را نشان می دهد.

3- MySample را به عنوان نام User-Defined Data Types تایپ می کنیم.

4- نوع داده پایگاه را varchar و طول آن را 20 قرار می دهیم.

5- Dbo.Sample Rule را در Rule Combo Box انتخاب می کنیم.

6- مقادیر پیش فرض برای Allow Nulls و گزینه های پیش فرض را می پذیریم و OKرا کلیک می کنیم. SQL Server ، User-Defined Data Types را ایجاد می کند.


تخصیص یک ستون برای یک User-Defined Data Types
1- Table Designer را برای جدول Oils به وسیله کلیک راست کردن نام آن در قاب Details باز می کنیم و Details Table را انتخاب می کنیم. SQL Server ، Table Designer را باز می کند.

2- ستون Sample را انتخاب کرده وMySample را از Data Type Combo Boxرا انتخاب می کنیم. Data Type , SQL Server را برای MySampleقرار می دهد.
راهنمایی: User-Defined Data Types در پایین لیست Data Type می باشد.

3- دکمهSave را کلیک کردهSQL Server جدول را با تعریف جدید ذخیره می سازد