خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را
9. آموزش SQL Server به زبان ساده. جلوگیری از ثبت داده های تکراری در یک فیلد جدول

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

ابتدا وارد محیط اس کیو ال سرور 2012 شوید و مشابه تصویر زیر جدولتان را در حالت ویرایش فیلدها باز کنید.

برای شروع ابتدا تیک گزینه Allow Nulls را برای فیلد شماره موبایل (MobileNumber) بردارید.

با این کار اول مطمئن می شویم که کاربر نمی تواند از وارد کردن شماره موبایل صرفنظر کند و حتما باید مقداری را برای آن مشخص کند. حالا می خواهیم مطمئن شویم که کاربر نمی تواند شماره موبایل تکراری در جدول وارد کند. برای این کار اس کیو ال سرور مکانیزمی دارد با نام ایندکس (Index).
البته ایندکس ها در اس کیو ال سرور کاربردهای دیگری هم دارند که به مرور با سایر کاربردهایشان نیز آشنا خواهیم شد، اما در اینجا از یک کاربرد خاصشان استفاده می کنیم و آن کاربرد یکتایی (Unique Key) می باشد.
ابتدا در محیط ویرایش جدول بر روی یک قسمت خالی از صفحه راست کلیک کنید و از منوی ظاهر شده گزینه Indexes/Keys را انتخاب کنید.

کادر محاوره ای Indexes/Keys مشابه تصویر زیر ظاهر می شود. در این کادر بر روی دکمه Add کلیک کنید.

مشابه تصویر زیر یک گزینه به پنجره سمت چپ اضافه می شود که بصورت پیش فرض نام IX_phoneBook نام دارد. بر روی آن کلیک کنید تا در حالت انتخاب قرار گیرد. (وقتی در حالت انتخاب قرار گیرد رنگ آن آبی می شود)

حالا در قسمت سمت چپ گزینه Columns را انتخاب کنید و بر روی دکمه مقابل آن که علامت [...] دارد کلیک کنید.

کادر محاوره ای Index Column ظاهر می شود.

در قسمت Column Name فیلد MobileNumber را انتخاب کنید و بر روی دکمه OK کلیک کنید.

تاثیر انتخاب شما در تصویر زیر نمایش داده شده است.

حالا در قسمت Type گزینه Unique Key را انتخاب کنید و سپس بر روی دکمه Close کلیک کنید. تصویر زیر راهنمای شما می باشد.

حالا مشابه تصویر زیر از منوی File گزینه Save PhoneBook را انتخاب کنید تا تغییرات شما ذخیره شوند.

کار معرفی فیلد یکتا خاتمه یافت. در ادامه به تست آن می پردازیم.
ابتدا با استفاده از گزینه Edit Top 200 rows که طی آموزشهای قبلی نیز دیدید، وارد محیط ویرایش داده های جدول شوید.

مشابه مقادیری که ما در تصویر زیر وارد کرده ایم، شما هم یک ردیف جدید ایجاد کنید. در فیلد شماره موبایل دقیقا همان شماره موبایلی را وارد کنید که در ردیف 2 وارد شده است. حالا کلید Enter در صفحه کلید را بفشارید.

همانطور که خودتان هم می بینید، اس کیو ال سرور اجازه ثبت اطلاعات را به شما نمی دهد و با پیغام خطا مواجه می شوید. در این پیغام خطا (اگر با دقت به آن نگاه کنید) هم نام ایندکس ما که برای یکتایی شماره موبایل معرفی کردیم آمده است و هم شماره موبایل تکراری ما نیز در متن خطا موجود است.
برای رفع اشکال بر روی Ok کلیک کنید و مقدار شماره موبایل را به 09124444445 تغییر بدهید. حالا مجددا Enter کنید. اطلاعات بدون اشکال اضافه می شوند.

پس با این حساب، شما می توانید با استفاده از ویژگی ایندکس های یکتا، جلوی ثبت اطلاعات تکراری در جداول را نیز بگیرید.
در این چند آموزش ما متوجه شدیم که اس کیو ال سرور، نه تنها محلی برای ذخیره سازی اطلاعات ما می باشد، بلکه فراتر از آن مکانیزمهایی نیز در اختیار ما قرار می دهد تا از ثبت اطلاعات اشتباه جلوگیری شود. در واقع هم محل ذخیره سازی اطلاعات است و هم بر روی صحت اطلاعات می تواند کنترلهایی را داشته باشد.
در یک کلام اگر بخواهم بگویم : چه خوب !!!
آموزش قبلی : 8. آموزش SQL Server به زبان ساده. Allow Nulls در فیلدهای جداول اس کیو ال سرور
آموزش بعدی : 10. آموزش SQL Server به زبان ساده. انواع داده ها (Data Type) در اس کیو ال سرور

روش جلوگیری از ثبت داده های تکراری در یک فیلد
ابتدا وارد محیط اس کیو ال سرور 2012 شوید و مشابه تصویر زیر جدولتان را در حالت ویرایش فیلدها باز کنید.

برای شروع ابتدا تیک گزینه Allow Nulls را برای فیلد شماره موبایل (MobileNumber) بردارید.

با این کار اول مطمئن می شویم که کاربر نمی تواند از وارد کردن شماره موبایل صرفنظر کند و حتما باید مقداری را برای آن مشخص کند. حالا می خواهیم مطمئن شویم که کاربر نمی تواند شماره موبایل تکراری در جدول وارد کند. برای این کار اس کیو ال سرور مکانیزمی دارد با نام ایندکس (Index).
البته ایندکس ها در اس کیو ال سرور کاربردهای دیگری هم دارند که به مرور با سایر کاربردهایشان نیز آشنا خواهیم شد، اما در اینجا از یک کاربرد خاصشان استفاده می کنیم و آن کاربرد یکتایی (Unique Key) می باشد.
روش معرف ایندکس یکتایی (Unique Key) برای یک فیلد در جداول اس کیو ال سرور
ابتدا در محیط ویرایش جدول بر روی یک قسمت خالی از صفحه راست کلیک کنید و از منوی ظاهر شده گزینه Indexes/Keys را انتخاب کنید.

کادر محاوره ای Indexes/Keys مشابه تصویر زیر ظاهر می شود. در این کادر بر روی دکمه Add کلیک کنید.

مشابه تصویر زیر یک گزینه به پنجره سمت چپ اضافه می شود که بصورت پیش فرض نام IX_phoneBook نام دارد. بر روی آن کلیک کنید تا در حالت انتخاب قرار گیرد. (وقتی در حالت انتخاب قرار گیرد رنگ آن آبی می شود)

حالا در قسمت سمت چپ گزینه Columns را انتخاب کنید و بر روی دکمه مقابل آن که علامت [...] دارد کلیک کنید.

کادر محاوره ای Index Column ظاهر می شود.

در قسمت Column Name فیلد MobileNumber را انتخاب کنید و بر روی دکمه OK کلیک کنید.

تاثیر انتخاب شما در تصویر زیر نمایش داده شده است.

حالا در قسمت Type گزینه Unique Key را انتخاب کنید و سپس بر روی دکمه Close کلیک کنید. تصویر زیر راهنمای شما می باشد.

حالا مشابه تصویر زیر از منوی File گزینه Save PhoneBook را انتخاب کنید تا تغییرات شما ذخیره شوند.

کار معرفی فیلد یکتا خاتمه یافت. در ادامه به تست آن می پردازیم.
تست فیلد یکتا (Unique Key) در جداول اس کیو ال سرور
ابتدا با استفاده از گزینه Edit Top 200 rows که طی آموزشهای قبلی نیز دیدید، وارد محیط ویرایش داده های جدول شوید.

مشابه مقادیری که ما در تصویر زیر وارد کرده ایم، شما هم یک ردیف جدید ایجاد کنید. در فیلد شماره موبایل دقیقا همان شماره موبایلی را وارد کنید که در ردیف 2 وارد شده است. حالا کلید Enter در صفحه کلید را بفشارید.

همانطور که خودتان هم می بینید، اس کیو ال سرور اجازه ثبت اطلاعات را به شما نمی دهد و با پیغام خطا مواجه می شوید. در این پیغام خطا (اگر با دقت به آن نگاه کنید) هم نام ایندکس ما که برای یکتایی شماره موبایل معرفی کردیم آمده است و هم شماره موبایل تکراری ما نیز در متن خطا موجود است.
برای رفع اشکال بر روی Ok کلیک کنید و مقدار شماره موبایل را به 09124444445 تغییر بدهید. حالا مجددا Enter کنید. اطلاعات بدون اشکال اضافه می شوند.

پس با این حساب، شما می توانید با استفاده از ویژگی ایندکس های یکتا، جلوی ثبت اطلاعات تکراری در جداول را نیز بگیرید.
یک نکته مهم در مورد این چند آموزش اخیر
در این چند آموزش ما متوجه شدیم که اس کیو ال سرور، نه تنها محلی برای ذخیره سازی اطلاعات ما می باشد، بلکه فراتر از آن مکانیزمهایی نیز در اختیار ما قرار می دهد تا از ثبت اطلاعات اشتباه جلوگیری شود. در واقع هم محل ذخیره سازی اطلاعات است و هم بر روی صحت اطلاعات می تواند کنترلهایی را داشته باشد.
در یک کلام اگر بخواهم بگویم : چه خوب !!!
آموزش قبلی : 8. آموزش SQL Server به زبان ساده. Allow Nulls در فیلدهای جداول اس کیو ال سرور
آموزش بعدی : 10. آموزش SQL Server به زبان ساده. انواع داده ها (Data Type) در اس کیو ال سرور
نمایش دیدگاه ها (0 دیدگاه)
دیدگاه خود را ثبت کنید: