آموزش SQL Server 2008 - قسمت پنجم

Primary Key Constraint
تعریف فیلد کلید اصلی، یکی از مهمترین محدودیت‌ها می‌باشد. فیلد کلید، مقدار تکراری قبول نمی‌کند و بیشتر برای تفکیک و جستجوی رکورد‌ها مورد استفاده قرار می‌گیرد.
برای تعریف یکی از فیلد‌ها به عنوان کلید اصلی، باید در زمان ایجاد جدول، بر روی نام فیلد کلیک راست کرده و گزینه Set Primary Key زده شود. بعد از این کار، علامت کلید در کنار فیلد مورد نظر ظاهر می‌شود. ضمناً این امکان وجود دارد که همزمان دو یا چند فیلد بعنوان کلید اصلی تعریف شوند. برای اینکار دقیقاً مثل وقتی که می‌خواهید در ویندوز دو یا چند فایل یا فولدر را انتخاب کنید، کلید Ctrl را نگه داشته و روی فیلد‌های مورد نظرتون کلیک کنید و سپس روی یکی از آن‌ها کلیک راست کرده و گزینه Set Primary Key را انتخاب کنید.

 

ضمناً توجه داشته باشید که فیلد کلید اصلی هیچ وقت Null نمی‌پذیرد. پس ستون Allow Nulls را برای این فیلد علامت نزنید.

Foreign Key Constraint
برای ارتباط بین جداول استفاده می‌شود و در اصل Relational Integrity را فراهم می‌کند. به عبارت ساده‌تر، کلید خارجی همان مقدار کلید اصلی از جدول دیگر است. توجه داشته باشید که مقدار یک کلید خارجی میتواند تکراری باشد. به عنوان مثال دو جدول Titles و Publishers که یکی مشخصات کتاب‌ها و دیگری مشخصات ناشران را ذخیره می‌کند را فرض کنید. در جدول Titles (کتاب‌ها) یک فیلد به نام pub_id وجود دارد که در اصل کلید خارجی برای فیلد pub_id موجود در جدول Publishers می‌باشد. وجود این کلید به این خاطر است که ما بتوانیم ناشر یک کتاب را پیدا کنیم.

فیلد‌های کلید خارجی، سه نوع محدودیت را ایجاد می‌کنند:
-اجازه حذف رکوردی از جدول پدر نداریم که فرزندی داشته باشد.
-اجازه insert رکورد در جدول فرزند با کد پدری که در جدول پدر موجود نیست را نداریم.
-مقدار کلید پدری را که دارای فرزند هست را نمی‌توانیم تغییر دهیم

برای ساختن کلید خارجی، پس از ساخت Tableها، بر روی Table فرزند و در قسمت Keys کلیک راست کرده و گزینه New Foreign Key انتخاب گردد.

سپس فرمی همانند زیر ظاهر می‌شود:



حالا قبل از اینکه مشخص کنیم، کلید خارجی ما از کدام فیلد و از کدام جدول به وجود می‌آید، به بعضی از مواردی که در این فرم هست، می‌پردازم.
اگر Enforce For Replication فعال باشد، تمام محدودیت‌هایی که بالاتر به آن‌ها اشاره کردم، در زمان Replication هم رعایت خواهد شد.
چنانچه گزینه Enforce Foreign Key Constraint فعال باشد، محدودیت جلوگیری از اضافه شدن رکورد به جدول فرزند در صورتی که مقدار آن در جدول پدر نباشد، رعایت می‌گردد. در صورت غیر فعال بودن هم، این محدودیت به حساب نخواهد آمد.
در قسمت INSERT and UPDATE Specification میتوان قوانین و محدودیت‌های حذف و اضافه و بروزرسانی را تغییر داد. به عنوان مثال، Delete Rules دارای چهار حالت زیر است:
1-اگر No Action باشد، اجازه حذف رکورد پدر را در صورتی که فرزندی از آن پدر موجود باشد، نمی‌دهد.
2-اگر Cascade باشد، در این حالت، می‌توان رکورد پدری را حذف نمود. اما بصورت اتوماتیک تمام فرزندهای آن هم حذف خواهند شد.
3-اگر Set Null باشد، باز هم اجازه حذف رکورد پدر داده می‌شود، اما فیلد مرتبط در جدول فرزند، در صورتی که دارای شرط Allow Null باشد، Null خواهد شد.
4-اگر Set Default باشد، باز هم اجازه حذف رکورد پدر داده می‌شود. اما فیلد مرتبط در جدول فرزند، در صورتی که مقدار Default داشته باشد، برابر مقدار پیش فرض خواهد شد.

حالا باید مشخص کنیم که پدر از کدام جدول و از کدام فیلد خواهد آمد. برای این کار بر روی دکمه کنار گزینه Tables and Columns Specification کلیک کنید. با این کار فرمی همانند شکل زیر ظاهر می‌شود:

که در این مثال، باید اطلاعات به صورت زیر تکمیل گردد:

بعد از اینکه اطلاعات را تکمیل گردید، فرم‌ها را ببنید تا از شما در مورد ذخیره کردن تغییرات سئوال بپرسد. سپس روی گزینه Keys در قسمت Object Browser کلیک راست کرده و گزینه Refresh را کلیک کنید تا آخرین تغییرات را برای شما نمایش دهد. اگر کارها درست پیش رفته باشد باید کلید خارجی بصورت زیر ساخته شده باشد:

Check Constraint

کاربردش برای وقتی است که بخواهیم برای یک فیلد، یک سری محدودیت خاص تعریف کنیم. مثلاً بگوییم فلان فیلد عددی، باید حتماً از 10 بزرگ‌تر باشد و در غیر اینصورت در هنگام ورود اطلاعات، کاربر با خطا مواجه گردد.
برای به وجود آوردن یک Check Constraint روی علامت Plus جدول مورد نظرتون کلیک کنید و روی گزینه Constraints کلیک راست کرده و گزینه New Constraint را انتخاب کنید. (شکل زیر)


سپس فرمی مانند زیر باز می‌شود.

 

در اینجا و در قسمت Expression، باید عبارت محدود کننده رو وارد کنید. مثلاً در این مثال میگیم که فیلد Price بزرگتر از 10 باشه. پس باید در قسمت Expression عبارت Price>10 رو وارد کرده و دکمه Close رو بزنید و تمام فرم‌های باز غیر از Object Browser را ببندید تا از ذخیره شدن تغییرات اطمینان حاصل بکنید. حالا اگر در Object Browser، بر روی Constraints کلیک راست کرده و گزینه Refresh را انتخاب کنید، شکلی همانند زیر را خواهید دید که نشان دهنده‌ی این است که Constraint ما ساخته شده است.

منبع : پاتوق

/ 6 نظر / 396 بازدید
فرناز

ممنون خوب بود.فقط اگه syntax محدودیت ها هم کنارش بود عالی میشد. موفق باشید

مهلا

عالی بود.ممنون

1tapc

آقا تمنا میکنم قسمت 10 به بعدشم بنویس توروخدا خیلی خوب بود اموزشا اگه بقیشم گذاشتی مارم خبر کنید استفاده کنیم www.1tapc.blogfa.com

حسن

خوب بود

عبادی

ممنون عالی بود

داوری

سلام ممنون خیلی خوب بود.