آموزش استفاده از Constraintها در SQL

مقدمه (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 به سرور متصل شوید:

ssh sammy@your_server_ip

سپس وارد محیط MySQL شوید (به‌جای sammy نام کاربر MySQL خود را وارد کنید):

mysql -u sammy -p

ایجاد دیتابیس با نام constraintsDB:

CREATE DATABASE constraintsDB;

در صورت موفقیت، خروجی مشابه زیر دریافت خواهید کرد:

Query OK, 1 row affected (0.01 sec)

انتخاب دیتابیس:

USE constraintsDB;
Database changed

اکنون آماده‌اید تا ایجاد و مدیریت Constraintها در SQL را یاد بگیرید.


ساخت جدول همراه با Constraint

معمولاً Constraintها هنگام ایجاد جدول تعریف می‌شوند. دستور زیر جدولی به نام employeeInfo با سه ستون ایجاد می‌کند و روی ستون empId یک UNIQUE constraint اعمال می‌کند:

CREATE TABLE employeeInfo (
empId int UNIQUE,
empName varchar(30),
empPhoneNum int
);

در این مثال، Constraint بلافاصله بعد از تعریف ستون empId آمده است، بنابراین فقط روی همان ستون اعمال می‌شود. به این نوع Constraint، Column-level Constraint گفته می‌شود.


Constraint در سطح جدول (Table-level Constraint)

می‌توان Constraint را خارج از تعریف ستون‌ها نیز اعمال کرد. مثال زیر یک جدول به نام racersInfo ایجاد می‌کند و یک CHECK constraint روی ستون finish قرار می‌دهد تا مقدار آن همواره بزرگ‌تر یا مساوی ۱ باشد:

CREATE TABLE racersInfo (
racerId int,
finish int,
racerName varchar(30),
CHECK (finish > 0)
);

از آنجایی که Constraint خارج از تعریف ستون‌ها آمده، باید ستون موردنظر را در پرانتز مشخص کنیم. این نوع Constraint به عنوان Table-level Constraint شناخته می‌شود و می‌تواند روی چند ستون اعمال شود.


نام‌گذاری Constraintها

به‌طور پیش‌فرض، DBMS برای هر Constraint یک نام خودکار تولید می‌کند. این نام‌ها معمولاً توصیفی نیستند، بنابراین بهتر است خودتان نامی معنادار برای Constraint انتخاب کنید.

برای این کار، از کلیدواژه CONSTRAINT استفاده می‌شود:

CREATE TABLE newRacersInfo (
racerId int,
finish int,
racerName varchar(30),
CONSTRAINT noNegativeFinish
CHECK (finish >= 1)
);

نکته: اگر نام Constraint را فراموش کردید، می‌توانید آن را از طریق ابزارهای DBMS مشاهده کنید.

مشاهده Constraintها در MySQL

SHOW CREATE TABLE table_name;

مشاهده Constraintها در PostgreSQL

\d table_name

مدیریت Constraintها

در MySQL می‌توان Constraintها را با دستور ALTER TABLE اضافه یا حذف کرد.

افزودن Constraint

ALTER TABLE employeeInfo ADD UNIQUE (empName);

یا همراه با نام:

ALTER TABLE racersInfo ADD CONSTRAINT uID UNIQUE (racerId);

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


حذف Constraint

برای حذف Constraint از دستور DROP CONSTRAINT استفاده می‌شود:

ALTER TABLE racersInfo DROP CONSTRAINT uID;

جمع‌بندی (Conclusion)

در این راهنما یاد گرفتید:

  • چگونه Constraintها را هنگام ایجاد جدول تعریف کنید

  • تفاوت Constraintهای سطح ستون و سطح جدول

  • چطور برای Constraintها نام اختصاصی تعیین کنید

  • چگونه Constraintها را با ALTER TABLE اضافه یا حذف نمایید

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

از همراهی شما با پارمین کلود متشکریم.

Click to rate this post!
[Total: 0 Average: 0]

نظرات کاربران

دیدگاهی بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *