📞

محدودیت Unique در sql

10 / 10
از 2 کاربر
بازگشت به لیست مقالات » | پنجشنبه 30 مهر 1405 در ساعت 15 و 55 دقیقه | نظرات کاربران ( 0 )

SQL UNIQUE Constraint برای جلوگیری از ثبت مقدارهای تکراری در ستون‌های جدول به کار می‌رود. این محدودیت کمک می‌کند داده‌هایی مانند ایمیل یا شماره شناسایی، مطابق نیاز برنامه یکتا باقی بمانند.

📌 خلاصه در یک نگاه
۵
نکته کاربردی
۳
روش مدیریت
۵
پرسش متداول

با شناخت محدودیت یکتا، می‌توانید از ورود داده‌های تکراری جلوگیری کنید و ساختار منظم‌تری برای جدول‌های SQL بسازید.

SQL UNIQUE Constraint چیست و چه کاربردی دارد؟

⭐ محدودیت یکتا

SQL UNIQUE Constraint قانونی است که پایگاه داده برای جلوگیری از تکرار مقدارها در یک ستون یا ترکیبی از چند ستون اجرا می‌کند. وقتی ستونی با این محدودیت تعریف می‌شود، پایگاه داده مقدار جدید را با مقدارهای موجود مقایسه می‌کند و در صورت وجود تکرار، درج یا ویرایش رکورد را نمی‌پذیرد.

💡 داده‌های غیرتکراری

این فیلدها لزوما کلید اصلی جدول نیستند، اما بنابر نیاز برنامه باید مقدارهای متفاوت داشته باشند. برای نمونه، ایمیل کاربر ممکن است کلید اصلی نباشد، ولی در یک سامانه ثبت‌نام نباید به دو حساب متفاوت تعلق بگیرد. در چنین شرایطی، استفاده از محدودیت Unique یا یک شاخص یکتا، از ثبت مقدار تکراری جلوگیری می‌کند.

🔒

جلوگیری از تکرار

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

🧩

چند ستون یکتا

می‌توان یکتایی یک ستون یا ترکیب چند ستون را بررسی کرد.

⚙️

کنترل پایگاه داده

قانون یکتایی مستقل از منطق فرم‌ها در پایگاه داده اعمال می‌شود.

📍 تفاوت با کلید اصلی

محدودیت PRIMARY KEY به صورت خودکار یکتا بودن مقدارهای کلید را تضمین می‌کند؛ با این حال، در هر جدول معمولا فقط یک کلید اصلی تعریف می‌شود. در مقابل، یک جدول می‌تواند چند محدودیت یکتا داشته باشد؛ برای مثال، هم ایمیل و هم نام کاربری می‌توانند جداگانه یکتا باشند. انتخاب هرکدام به نقش ستون در مدل داده بستگی دارد.

۵ نکته مهم درباره SQL UNIQUE Constraint

📘 انتخاب ستون مناسب

پیش از افزودن محدودیت یکتا، مشخص کنید کدام داده واقعا باید برای هر رکورد منحصر به فرد باشد. شناسه ملی، کد محصول، ایمیل یا نام کاربری از نمونه‌های رایج هستند؛ اما نام خانوادگی یا شهر معمولا برای یکتا بودن مناسب نیستند، چون چند نفر می‌توانند مقدار یکسانی داشته باشند.

✅ نمونه انتخاب ستون

برای جدول کاربران، یکتا کردن ایمیل می‌تواند از ساخت چند حساب با یک نشانی جلوگیری کند. در مقابل، اعمال همین قانون روی نام کوچک کاربران باعث خطاهای غیرضروری می‌شود، چون افراد زیادی ممکن است نام یکسان داشته باشند.

🧱 یک ستون یا چند ستون

محدودیت یکتا می‌تواند فقط یک ستون را پوشش دهد یا روی ترکیبی از ستون‌ها اعمال شود. در حالت ترکیبی، هدف این است که ترکیب مقدارها تکراری نباشد؛ بنابراین لازم نیست هر ستون به تنهایی یکتا باشد. این روش در جدول‌هایی کاربرد دارد که هویت یک رکورد از کنار هم قرار گرفتن چند مقدار شکل می‌گیرد.

🧾 نمونه ترکیب ستون‌ها

فرض کنید یک جدول سفارش، شناسه مشتری و شماره سفارش را نگه می‌دارد. ممکن است شماره سفارش برای مشتریان مختلف تکرار شود، اما ترکیب شناسه مشتری و شماره سفارش باید یکتا بماند تا یک سفارش مشابه برای همان مشتری دوباره ثبت نشود.

🔎 بررسی داده‌های موجود

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

۱

برای مثال، اگر قرار است ایمیل به عنوان مقدار یکتا تعریف شود، ابتدا ایمیل‌های تکراری را در جدول پیدا کنید، حساب‌های تکراری را بررسی کنید و سپس قانون یکتایی را اضافه کنید.

🛡️ اعتبارسنجی در پایگاه داده

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

۲

در یک سامانه ثبت‌نام، برنامه می‌تواند پیش از ارسال فرم وجود ایمیل را بررسی کند تا پیام مناسبی به کاربر نشان دهد؛ اما محدودیت یکتا همچنان باید در جدول تعریف شود تا درخواست‌های هم‌زمان باعث ثبت حساب تکراری نشوند.

📂 نام‌گذاری محدودیت

دادن نام روشن به محدودیت‌ها، نگهداری پایگاه داده را ساده‌تر می‌کند. وقتی نامی مانند uc_PersonID برای یک قانون انتخاب شود، در زمان بررسی خطا یا حذف محدودیت مشخص است کدام قاعده مدنظر است. نام‌گذاری منظم به‌ویژه در پروژه‌هایی با جدول‌ها و محدودیت‌های متعدد اهمیت دارد.

۳

برای نمونه، استفاده از پیشوندی ثابت مانند UQ_ یا uc_ کمک می‌کند محدودیت‌های یکتا در ابزارهای مدیریت پایگاه داده به سادگی از سایر قیدها تشخیص داده شوند.

⚠️ شناخت رفتار مقدار تهی

رفتار محدودیت یکتا درباره مقدار NULL می‌تواند با توجه به نوع پایگاه داده و تعریف ستون متفاوت باشد. بنابراین اگر ستون باید حتما مقدار داشته باشد، فقط به UNIQUE تکیه نکنید و نیاز به NOT NULL را نیز بررسی کنید. در طراحی جدول، یکتایی و اجباری بودن مقدار دو قاعده جداگانه هستند.

۴

اگر ثبت ایمیل خالی مجاز نیست، ستون را هم یکتا و هم غیرتهی تعریف کنید؛ در غیر این صورت ممکن است قاعده یکتایی به تنهایی نیاز کسب‌وکار را پوشش ندهد.

🔄 آمادگی برای تغییر داده

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

۵

برای مثال، هنگام ثبت ایمیل تکراری می‌توان به جای نمایش پیام فنی پایگاه داده، پیامی مانند «این ایمیل پیش از این ثبت شده است» نشان داد و از کاربر خواست نشانی دیگری وارد کند.

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

تعریف محدودیت UNIQUE هنگام ساخت جدول

🛠️ ساخت جدول با یک ستون یکتا

اگر از ابتدا می‌دانید که یک ستون باید مقدارهای غیرتکراری داشته باشد، می‌توانید کلمه کلیدی UNIQUE را هنگام تعریف ستون در دستور CREATE TABLE بیاورید. نمونه زیر ستون P_Id را یکتا و غیرتهی تعریف می‌کند. ستون‌های دیگر جدول می‌توانند طبق نیاز، مقدارهای تکراری داشته باشند.

CREATE TABLE Persons
(
    P_Id int NOT NULL UNIQUE,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255)
);
🔍 خواندن نمونه کد

در این مثال، ترکیب NOT NULL UNIQUE نشان می‌دهد که مقدار P_Id هم باید وجود داشته باشد و هم نباید با مقدار رکورد دیگری یکسان باشد. نوشتن UNIQUE کنار تعریف ستون برای محدودیت تک‌ستونی روشی مستقیم و خواناست.

🧷 محدودیت روی چند ستون

برای یکتا کردن ترکیب چند ستون، محدودیت را در سطح جدول تعریف کنید. در نمونه زیر، ترکیب P_Id و LastName باید در هر ردیف متفاوت باشد. این تعریف به معنای یکتا بودن جداگانه هر ستون نیست؛ هر یک از آن‌ها می‌تواند در ردیف‌های گوناگون تکرار شود، به شرط آنکه ترکیب کامل تکراری نباشد.

CREATE TABLE Persons
(
    P_Id int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255),
    CONSTRAINT uc_PersonID UNIQUE (P_Id, LastName)
);
🌱 فایده نام‌گذاری روشن

در این دستور، عبارت CONSTRAINT uc_PersonID نامی برای محدودیت تعیین می‌کند. نام‌گذاری مشخص، هنگام عیب‌یابی یا تغییر ساختار جدول کمک می‌کند محدودیت موردنظر را بدون ابهام پیدا کنید.

افزودن محدودیت UNIQUE پس از ساخت جدول

➕ افزودن برای یک ستون

اگر جدول از قبل ساخته شده باشد، می‌توانید با دستور ALTER TABLE محدودیت یکتا اضافه کنید. دستور زیر قانون یکتایی را روی ستون P_Id اعمال می‌کند. پیش از اجرای آن، اطمینان پیدا کنید که مقدارهای فعلی ستون با یکدیگر تکراری نیستند.

ALTER TABLE Persons
ADD UNIQUE (P_Id);
🧩 افزودن محدودیت چندستونی

برای یکتا کردن ترکیب چند ستون پس از ایجاد جدول، از ADD CONSTRAINT استفاده کنید و نام محدودیت را مشخص سازید. در نمونه زیر، جفت مقدارهای P_Id و LastName نباید تکراری باشند.

ALTER TABLE Persons
ADD CONSTRAINT uc_PersonID UNIQUE (P_Id, LastName);
⚠️ پیش‌نیاز اجرای دستور

اگر داده‌های تکراری از قبل در ستون یا ترکیب ستون‌ها وجود داشته باشند، افزودن محدودیت با موفقیت انجام نمی‌شود. ابتدا داده‌های مسئله‌دار را اصلاح کنید و سپس دستور تغییر جدول را اجرا کنید. در محیط‌های عملیاتی، اجرای چنین تغییری را با برنامه پشتیبان‌گیری و بررسی اثر آن بر برنامه هماهنگ کنید.

حذف محدودیت UNIQUE

🗑️ حذف قانون یکتایی

برای حذف محدودیتی که نام مشخص دارد، از ALTER TABLE و دستور DROP CONSTRAINT استفاده می‌شود. نام محدودیت باید با نامی که هنگام تعریف آن تعیین شده مطابقت داشته باشد. نمونه زیر محدودیت uc_PersonID را از جدول حذف می‌کند.

ALTER TABLE Persons
DROP CONSTRAINT uc_PersonID;
📌 تفاوت‌های پایگاه داده

جزئیات دستور حذف ممکن است میان سامانه‌های مدیریت پایگاه داده تفاوت داشته باشد؛ برای نمونه، شیوه نام‌گذاری و حذف محدودیت‌ها در همه محصولات کاملا یکسان نیست. پیش از اجرای دستور در محیط واقعی، مستندات نسخه پایگاه داده خود را بررسی کنید و مطمئن شوید نام محدودیت را درست وارد کرده‌اید.

اشتباهات رایج هنگام استفاده از محدودیت یکتا

🔁

نادیده گرفتن تکرارها

وجود مقدارهای تکراری می‌تواند مانع افزودن محدودیت به جدول قدیمی شود.

🚫

یکتا کردن ستون نامناسب

نام یا شهر معمولا داده‌هایی نیستند که برای همه رکوردها یکتا باشند.

🧮

برداشت نادرست از ترکیب

قید چندستونی، ترکیب را یکتا می‌کند، نه لزوما تک‌تک ستون‌ها را.

🧑‍💻

اتکا به فرم برنامه

اعتبارسنجی سمت برنامه جایگزین قانون پایگاه داده نیست.

روش کاربرد نمونه نکته
تعریف هنگام ساخت جدول ایجاد محدودیت در زمان ساخت UNIQUE برای طراحی اولیه جدول مناسب است.
افزودن پس از ساخت تغییر جدول موجود ALTER TABLE ... ADD CONSTRAINT ابتدا داده‌های فعلی را بررسی کنید.
حذف محدودیت برداشتن قانون یکتایی DROP CONSTRAINT نام محدودیت باید مشخص باشد.

جمع‌بندی

📝 چک‌لیست پیش از اجرا

پیش از استفاده از محدودیت یکتا، مشخص کنید کدام ستون یا ترکیب ستون‌ها باید غیرتکراری باشد، داده‌های فعلی را بررسی کنید، برای محدودیت نام روشن انتخاب کنید و رفتار مقدارهای تهی را در سامانه پایگاه داده خود بسنجید. همچنین پیام خطا را در برنامه به شکل قابل فهم مدیریت کنید.

⭐ یکپارچگی داده‌ها

در نهایت، SQL UNIQUE Constraint راهی مطمئن برای جلوگیری از ثبت مقدارهای تکراری در جدول است. با انتخاب درست ستون، بررسی داده‌های موجود و تعریف مناسب محدودیت، می‌توانید یکپارچگی اطلاعات را حفظ کنید و از خطاهای بعدی در برنامه بکاهید. این ملاحظات هنگام طراحی پایگاه داده برای طراحی سایت و ساخت سامانه‌های ثبت‌نام نیز کاربرد دارند.

سوالات متداول SQL UNIQUE Constraint

محدودیت UNIQUE چه کاری انجام می‌دهد؟

این محدودیت از تکرار مقدارها در یک ستون یا ترکیبی از چند ستون جلوگیری می‌کند. اگر درج یا ویرایش یک رکورد باعث ایجاد مقدار تکراری شود، پایگاه داده عملیات را نمی‌پذیرد.

تفاوت UNIQUE با PRIMARY KEY چیست؟

هر دو برای یکتا بودن مقدارها به کار می‌روند، اما کلید اصلی نقش شناسه اصلی رکورد را دارد و در هر جدول معمولا یک کلید اصلی تعریف می‌شود. در یک جدول می‌توان چند محدودیت یکتا برای ستون‌های مختلف داشت.

آیا می‌توان چند ستون را با هم یکتا کرد؟

بله. می‌توان محدودیت یکتا را روی ترکیب چند ستون تعریف کرد. در این حالت، ترکیب کامل مقدارها نباید تکراری باشد؛ اما هر ستون به تنهایی ممکن است در ردیف‌های دیگر مقدار تکراری داشته باشد.

چرا افزودن محدودیت یکتا به جدول خطا می‌دهد؟

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

چگونه محدودیت UNIQUE را حذف کنم؟

معمولا باید از دستور ALTER TABLE همراه با DROP CONSTRAINT استفاده کنید و نام محدودیت را مشخص سازید. نحو دقیق دستور ممکن است با توجه به سامانه پایگاه داده تفاوت داشته باشد؛ مستندات محصول خود را بررسی کنید.

ارسال نظر و نظرات ثبت شده
سایر مقالات
آموزش View در sql آموزش view در sql آموزش پایگاه داده ساخت، استفاده و مدیریت جدول‌های مجازی در SQL ...
فیلد identity در Sql فیلد identity در SQL چیست و چگونه از آن استفاده کنیم؟ ⭐ فیلد identity در SQL فیلد identity د ...
محدودیت Unique در sql SQL UNIQUE Constraint برای جلوگیری از ثبت مقدارهای تکراری در ستون‌های جدول به کار می‌رود. ...
محدودیت NOT NULL در sql آموزش پایگاه داده محدودیت NOT NULL در SQL چیست؟ آموزش کاربردی و مثال با تعریف این محدودیت، ...
محدودیت Check در sql آموزش پایگاه داده محدودیت CHECK در SQL؛ راهنمای کامل تعریف و مدیریت اعتبارسنجی داده‌ه ...
محدودیت Default در اسکیوال آموزش SQL محدودیت SQL DEFAULT؛ مقدار پیش فرض در SQL نحوه تعریف، تغییر و حذف مقدار پیش فرض ...
محدودیت Foreign Key در sql آموزش SQL کلید خارجی در SQL چیست؟ راهنمای کامل Foreign Key تعریف، کاربرد، ساخت و حذف محدود ...
محدودیت Primary Key در sql آموزش پایگاه داده محدودیت Primary Key در SQL؛ تعریف و کاربرد کلید اصلی راهنمای تعریف، استف ...
ایجاد محدودیت برای فیلد ها (Constraints) آموزش پایگاه داده محدودیت های SQL چیست و چگونه از آنها استفاده کنیم؟ راهنمای کاربردی آشنای ...
دستور alter table در sql آموزش پایگاه داده دستور ALTER TABLE در SQL؛ راهنمای افزودن، حذف و تغییر ستون آشنایی با ساخ ...
تغییر نام فیلد در یک جدول با استفاده از دستور sql آموزش SQL Server تغییر نام ستون در SQL Server با دستور sp_rename نحوه تغییر نام فیلد، مثال ...
دستور Create Index در sql آموزش SQL دستور CREATE INDEX در SQL چیست؟ آموزش ساخت اندیس، انتخاب ستون مناسب و بهبود سرعت ...
دستور Drop در sql دستور DROP در SQL؛ آموزش حذف جدول، اندیس و پایگاه داده 💡آشنایی با حذف ساختارها در SQL دستور ...
دستور Create Table در sql دستور CREATE TABLE در SQL؛ راهنمای ایجاد جدول در پایگاه داده 💡آشنایی با ساخت جدول دستور CRE ...
دستور CREATE DATABASE در sql دستور CREATE DATABASE در SQL چیست؟ 💡آشنایی با ساخت پایگاه داده برای ایجاد یک پایگاه داده ...
⏳ در حال پردازش...
لطفا صبر کنید