مقدمه (Introduction)
هنگام طراحی یک پایگاه داده SQL، ممکن است شرایطی وجود داشته باشد که بخواهید محدودیتهایی برای دادههایی که میتوانند در ستونهای یک جدول ذخیره شوند اعمال کنید. SQL این امکان را از طریق استفاده از Constraints (قیود) فراهم میکند. پس از اعمال یک Constraint روی یک ستون یا جدول، هرگونه تلاش برای افزودن دادهای که با آن Constraint سازگار نباشد، با خطا مواجه خواهد شد.
پیادهسازی Constraintها در سیستمهای مختلف مدیریت پایگاه داده (DBMS) ممکن است متفاوت باشد. این راهنما مروری کلی بر سینتکسهایی ارائه میدهد که بسیاری از DBMSها برای مدیریت Constraintها استفاده میکنند و در تمام مثالها از MySQL بهره گرفته شده است.
پیشنیازها (Prerequisites)
برای دنبال کردن این راهنما، به موارد زیر نیاز دارید:
-
یک سیستم دارای Relational Database Management System (RDBMS) که از SQL پشتیبانی کند
-
مثالها و دستورات این آموزش در محیط زیر بررسی شدهاند:
-
سرور Ubuntu 20.04 با یک کاربر non-root دارای دسترسی مدیریتی و فایروال UFW
-
MySQL نصب و ایمنسازیشده روی سرور
-
یک کاربر جدید MySQL (non-root)
-
نکته: هر RDBMS پیادهسازی مخصوص خود را از SQL دارد. اگرچه دستورات این آموزش در اکثر سیستمها کار میکنند، اما ممکن است سینتکس یا خروجی دقیق آنها در دیتابیسهایی غیر از MySQL کمی متفاوت باشد.
همچنین داشتن درک کلی از مفهوم SQL Constraints و نحوه عملکرد آنها مفید خواهد بود. برای آشنایی بیشتر میتوانید مقاله Understanding SQL Constraints را مطالعه کنید.
در نهایت، به یک دیتابیس آزمایشی برای تمرین ساخت جدولها با Constraint نیاز دارید.
اتصال به MySQL و ساخت دیتابیس نمونه
اگر دیتابیس SQL شما روی یک سرور ریموت اجرا میشود، ابتدا از طریق SSH به سرور متصل شوید:
سپس وارد محیط MySQL شوید (بهجای sammy نام کاربر MySQL خود را وارد کنید):
ایجاد دیتابیس با نام constraintsDB:
در صورت موفقیت، خروجی مشابه زیر دریافت خواهید کرد:
انتخاب دیتابیس:
اکنون آمادهاید تا ایجاد و مدیریت Constraintها در SQL را یاد بگیرید.
ساخت جدول همراه با Constraint
معمولاً Constraintها هنگام ایجاد جدول تعریف میشوند. دستور زیر جدولی به نام employeeInfo با سه ستون ایجاد میکند و روی ستون empId یک UNIQUE constraint اعمال میکند:
در این مثال، Constraint بلافاصله بعد از تعریف ستون empId آمده است، بنابراین فقط روی همان ستون اعمال میشود. به این نوع Constraint، Column-level Constraint گفته میشود.
Constraint در سطح جدول (Table-level Constraint)
میتوان Constraint را خارج از تعریف ستونها نیز اعمال کرد. مثال زیر یک جدول به نام racersInfo ایجاد میکند و یک CHECK constraint روی ستون finish قرار میدهد تا مقدار آن همواره بزرگتر یا مساوی ۱ باشد:
از آنجایی که Constraint خارج از تعریف ستونها آمده، باید ستون موردنظر را در پرانتز مشخص کنیم. این نوع Constraint به عنوان Table-level Constraint شناخته میشود و میتواند روی چند ستون اعمال شود.
نامگذاری Constraintها
بهطور پیشفرض، DBMS برای هر Constraint یک نام خودکار تولید میکند. این نامها معمولاً توصیفی نیستند، بنابراین بهتر است خودتان نامی معنادار برای Constraint انتخاب کنید.
برای این کار، از کلیدواژه CONSTRAINT استفاده میشود:
نکته: اگر نام Constraint را فراموش کردید، میتوانید آن را از طریق ابزارهای DBMS مشاهده کنید.
مشاهده Constraintها در MySQL
مشاهده Constraintها در PostgreSQL
مدیریت Constraintها
در MySQL میتوان Constraintها را با دستور ALTER TABLE اضافه یا حذف کرد.
افزودن Constraint
یا همراه با نام:
اگر دادهای در جدول وجود داشته باشد که با Constraint جدید در تضاد باشد، این دستور با خطا مواجه میشود.
حذف Constraint
برای حذف Constraint از دستور DROP CONSTRAINT استفاده میشود:
جمعبندی (Conclusion)
در این راهنما یاد گرفتید:
-
چگونه Constraintها را هنگام ایجاد جدول تعریف کنید
-
تفاوت Constraintهای سطح ستون و سطح جدول
-
چطور برای Constraintها نام اختصاصی تعیین کنید
-
چگونه Constraintها را با
ALTER TABLEاضافه یا حذف نمایید
اگرچه بیشتر دستورات معرفیشده در اکثر دیتابیسهای رابطهای کار میکنند، اما برای جزئیات دقیقتر بهتر است همیشه به مستندات رسمی DBMS خود مراجعه کنید.
از همراهی شما با پارمین کلود متشکریم.
نظرات کاربران