در طراحی پایگاه‌داده‌های رابطه‌ای، یکی از مهم‌ترین مفاهیم، کلیدها (Keys) هستند. کلیدها در SQL تضمین می‌کنند که داده‌ها منحصربه‌فرد، منظم و قابل اطمینان باقی بمانند. در این مقاله، سه نوع کلید در SQL پرکاربرد یعنی Primary Key، Foreign Key و Unique Key را به‌طور کامل با مثال توضیح می‌دهیم تا درک عمیقی از نحوه استفاده آن‌ها در طراحی دیتابیس به‌دست آورید.

اهمیت کلیدها در SQL چیست؟

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

  • از ورود داده‌های تکراری جلوگیری شود

  • روابط منطقی بین جداول برقرار شود

  • عملیات جست‌وجو و بروزرسانی سریع‌تر انجام گیرد

  • یکپارچگی داده‌ها حفظ شود

1. کلید اصلی (Primary Key)

تعریف:

Primary Key ستونی است که هر رکورد را در یک جدول به‌صورت یکتا شناسایی می‌کند. این کلید نمی‌تواند NULL یا تکراری باشد.

ویژگی‌ها:

  • فقط یک Primary Key در هر جدول مجاز است

  • مقدار آن باید یکتا و غیرقابل خالی (NOT NULL) باشد

  • می‌تواند از یک ستون یا چند ستون (Composite Key) ساخته شود

مثال ساده:

CREATE TABLE Customers (
CustomerID INT PRIMARY KEY,
Name VARCHAR(100),
Email VARCHAR(100)
);

۳ کلید در SQL که حتما و حیاتی باید بشناسید: Primary, Foreign و Unique با مثال واقعی
۳ کلید در SQL که حتما و حیاتی باید بشناسید: Primary, Foreign و Unique با مثال واقعی

در این مثال، ستون CustomerID کلید اصلی جدول است و از ورود دو کاربر با همان شناسه یا بدون شناسه جلوگیری می‌شود.

مثال با کلید ترکیبی (Composite Key):

CREATE TABLE Orders (
OrderID INT,
ProductID INT,
Quantity INT,
PRIMARY KEY (OrderID, ProductID)
);
۳ کلید در SQL که حتما و حیاتی باید بشناسید: Primary, Foreign و Unique با مثال واقعی
۳ کلید در SQL که حتما و حیاتی باید بشناسید: Primary, Foreign و Unique با مثال واقعی

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

2. کلید خارجی (Foreign Key)

تعریف:

Foreign Key ستونی است که به کلید اصلی یک جدول دیگر اشاره می‌کند. این کلید باعث می‌شود که رابطه‌ای منطقی بین جداول برقرار شود.

ویژگی‌ها:

  • به یک Primary Key یا Unique Key در جدول دیگر اشاره دارد

  • به حفظ یکپارچگی ارجاعی (Referential Integrity) کمک می‌کند

  • می‌توان چند Foreign Key در یک جدول داشت

مثال:

CREATE TABLE Orders (
OrderID INT PRIMARY KEY,
CustomerID INT,
OrderDate DATE,
FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)
);
۳ کلید در SQL که حتما و حیاتی باید بشناسید: Primary, Foreign و Unique با مثال واقعی
۳ کلید در SQL که حتما و حیاتی باید بشناسید: Primary, Foreign و Unique با مثال واقعی

در این مثال، CustomerID در جدول Orders به CustomerID در جدول Customers ارجاع می‌دهد. یعنی هر سفارش باید متعلق به یک مشتری معتبر باشد.

مزایا:

  • مانع از ورود داده‌های نادرست (مثلاً ثبت سفارش برای مشتری ناموجود) می‌شود

  • هنگام حذف داده‌ها می‌توان با گزینه‌هایی مانند ON DELETE CASCADE تعیین کرد که حذف در جدول اصلی چه اثری در جدول وابسته داشته باشد.

3. کلید یکتا (Unique Key)

تعریف:

Unique Key تضمین می‌کند که مقدار ستون مربوطه در تمام رکوردها یکتا باشد، ولی برخلاف Primary Key، می‌تواند شامل مقدار NULL نیز باشد (بسته به DBMS).

ویژگی‌ها:

  • می‌توان چند Unique Key در یک جدول داشت

  • مقدار NULL معمولاً مجاز است (برخی سیستم‌ها فقط یک بار)

مثال:

CREATE TABLE Employees (
EmployeeID INT PRIMARY KEY,
Email VARCHAR(100) UNIQUE,
NationalCode CHAR(10) UNIQUE
);

۳ کلید در SQL که حتما و حیاتی باید بشناسید: Primary, Foreign و Unique با مثال واقعی
۳ کلید در SQL که حتما و حیاتی باید بشناسید: Primary, Foreign و Unique با مثال واقعی

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

تفاوت‌های کلیدی بین Primary Key، Foreign Key و Unique Key

ویژگی‌ها Primary Key Foreign Key Unique Key
تضمین یکتا بودن دارد ندارد (ارجاعی است) دارد
مقدار NULL مجاز است؟ خیر بله بسته به سیستم، بله
چند بار در جدول؟ فقط یکی چندتا چندتا
هدف اصلی شناسایی رکورد ارتباط بین جداول جلوگیری از تکرار

مثال کامل از ارتباط چند جدول با کلیدها

فرض کنید یک سیستم مدیریت مدرسه طراحی می‌کنیم:

جدول Students

CREATE TABLE Students (
StudentID INT PRIMARY KEY,
Name VARCHAR(100),
Email VARCHAR(100) UNIQUE
);

۳ کلید در SQL که حتما و حیاتی باید بشناسید: Primary, Foreign و Unique با مثال واقعی
۳ کلید در SQL که حتما و حیاتی باید بشناسید: Primary, Foreign و Unique با مثال واقعی

جدول Courses

CREATE TABLE Courses (
CourseID INT PRIMARY KEY,
Title VARCHAR(100)
);
۳ کلید در SQL که حتما و حیاتی باید بشناسید: Primary, Foreign و Unique با مثال واقعی
۳ کلید در SQL که حتما و حیاتی باید بشناسید: Primary, Foreign و Unique با مثال واقعی

جدول Enrollments (ثبت‌نام دانش‌آموزان در دروس)

CREATE TABLE Enrollments (
StudentID INT,
CourseID INT,
Grade DECIMAL(3,1),
PRIMARY KEY (StudentID, CourseID),
FOREIGN KEY (StudentID) REFERENCES Students(StudentID),
FOREIGN KEY (CourseID) REFERENCES Courses(CourseID)
);
۳ کلید در SQL که حتما و حیاتی باید بشناسید: Primary, Foreign و Unique با مثال واقعی
۳ کلید در SQL که حتما و حیاتی باید بشناسید: Primary, Foreign و Unique با مثال واقعی

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

  • StudentID و CourseID در جدول Enrollments، یک کلید ترکیبی هستند (Primary Key)

  • همان‌ها به عنوان Foreign Key به جداول دیگر اشاره می‌کنند

کاربردهای عملی کلیدها

  1. اطمینان از صحت داده‌ها
    فرض کنید یک فروشگاه آنلاین دارید، استفاده از Foreign Key برای اطمینان از اینکه هر سفارش واقعاً مربوط به یک مشتری ثبت‌شده باشد، بسیار حیاتی است.

  2. افزایش عملکرد جست‌وجو
    کلیدهای اولیه و یکتا، اغلب به صورت ایندکس‌شده (Indexed) ایجاد می‌شوند، که باعث افزایش سرعت جست‌وجوی داده‌ها می‌شوند.

  3. یکپارچگی در حذف داده‌ها
    مثلاً با دستور ON DELETE CASCADE، اگر یک مشتری حذف شود، تمام سفارش‌های او هم حذف می‌شود.

نتیجه‌گیری

درک درست از تفاوت‌ها و کاربردهای Primary Key، Foreign Key و Unique Key برای طراحی حرفه‌ای پایگاه‌داده ضروری است. این کلیدها نه تنها از داده‌های تکراری جلوگیری می‌کنند، بلکه ستون فقرات روابط منطقی بین جداول را نیز شکل می‌دهند.

با رعایت اصول کلیدگذاری در SQL، نه‌تنها داده‌های سالم‌تری خواهید داشت، بلکه سیستم شما در آینده نیز توسعه‌پذیرتر، سریع‌تر و قابل‌اعتمادتر خواهد بود.

.

بدون دیدگاه

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