در پایگاه دادههای رابطهای مانند MySQL، Primary Key (کلید اصلی) یک ویژگی مهم برای جداول محسوب میشود.
Primary Key یک ستون یا ترکیبی از ستونهاست که مقدار آن در هر سطر یکتا بوده و نمیتواند مقدار NULL
داشته باشد. این کلید بهعنوان شناسه منحصربهفرد هر رکورد در جدول عمل میکند و به بهینهسازی جستجو، ارتباط بین جداول و یکپارچگی دادهها کمک میکند.
۱. تعریف Primary Key
Primary Key ویژگیای است که:
- مقدار آن در هر سطر یکتا است.
- مقدار
NULL
ندارد. - به جداول اجازه میدهد که از آن برای ارتباط با دیگر جداول استفاده کنند.
ایجاد Primary Key هنگام ساخت جدول
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE
);
🔹 توضیح:
- ستون
id
بهعنوان Primary Key تعیین شده است. - مقدار
AUTO_INCREMENT
باعث میشود که مقدارid
بهطور خودکار افزایش یابد.
۲. ویژگیهای Primary Key
✅ ۱. یکتا بودن: هر مقدار در ستون Primary Key باید یکتا باشد.
✅ ۲. عدم پذیرش مقدار NULL: مقدار NULL
در این ستون مجاز نیست.
✅ ۳. بهینهسازی جستجو: به MySQL کمک میکند تا جستجوها را سریعتر انجام دهد.
✅ ۴. ایجاد ارتباط بین جداول: Primary Key برای برقراری رابطه بین جداول با Foreign Key استفاده میشود.
۳. تعریف Primary Key پس از ایجاد جدول
اگر جدولی بدون Primary Key ایجاد شده باشد، میتوان آن را بعداً اضافه کرد:
ALTER TABLE users ADD PRIMARY KEY (id);
۴. تعریف Primary Key ترکیبی
در برخی موارد، ممکن است بخواهیم دو یا چند ستون را بهعنوان Primary Key تعیین کنیم. این حالت معمولاً زمانی استفاده میشود که یک شناسه منحصربهفرد از ترکیب چندین ستون به دست میآید.
مثال: تعریف کلید اصلی ترکیبی
CREATE TABLE orders (
order_id INT,
product_id INT,
quantity INT,
PRIMARY KEY (order_id, product_id)
);
🔹 توضیح:
- ترکیب
order_id
وproduct_id
یک کلید اصلی منحصربهفرد برای هر سفارش را ایجاد میکند. - هیچ دو رکوردی نمیتوانند یک مقدار مشابه برای این دو ستون داشته باشند.
۵. ارتباط بین جداول با استفاده از Primary Key و Foreign Key
در پایگاه دادههای رابطهای، Primary Key برای ایجاد ارتباط با دیگر جداول استفاده میشود. این ارتباط از طریق Foreign Key برقرار میشود.
مثال: ارتباط بین جداول کاربران و سفارشات
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100)
);
CREATE TABLE orders (
order_id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT,
amount DECIMAL(10,2),
FOREIGN KEY (user_id) REFERENCES users(id)
);
🔹 توضیح:
- ستون
id
در جدولusers
یک Primary Key است. - ستون
user_id
در جدولorders
بهعنوان Foreign Key بهusers.id
متصل شده است. - این ساختار تضمین میکند که هر سفارش به یک کاربر معتبر مربوط باشد.
۶. حذف و تغییر Primary Key
حذف کلید اصلی از جدول
ALTER TABLE users DROP PRIMARY KEY;
🔹 نکته: قبل از حذف Primary Key، اگر مقدار آن AUTO_INCREMENT
باشد، باید ویژگی AUTO_INCREMENT
را حذف کنید.
تغییر کلید اصلی جدول
ALTER TABLE users DROP PRIMARY KEY, ADD PRIMARY KEY (email);
🔹 توضیح:
- ابتدا Primary Key فعلی حذف میشود.
- سپس یک ستون دیگر (
email
) بهعنوان Primary Key تنظیم میشود.
۷. تفاوت Primary Key و Unique Key
ویژگی | Primary Key | Unique Key |
---|---|---|
مقدار تکراری مجاز است؟ | خیر | خیر |
مقدار NULL مجاز است؟ | خیر | بله |
تعداد کلیدهای مجاز در جدول | فقط یک Primary Key | چندین Unique Key میتواند وجود داشته باشد |
هدف اصلی | شناسه یکتای رکوردها | جلوگیری از تکرار در مقادیر خاص |
مثال: تفاوت در استفاده از Unique و Primary Key
CREATE TABLE employees (
id INT AUTO_INCREMENT PRIMARY KEY,
email VARCHAR(100) UNIQUE
);
🔹 توضیح:
id
کلید اصلی جدول است و یکتا و غیرقابلNULL
میباشد.email
یک Unique Key است، یعنی مقدار آن نباید تکراری باشد، اما میتواندNULL
باشد.
نتیجهگیری
Primary Key یکی از مهمترین اجزای پایگاه داده است که برای تضمین یکتایی دادهها، بهینهسازی جستجوها و ایجاد ارتباط بین جداول استفاده میشود. استفاده صحیح از Primary Key میتواند عملکرد پایگاه داده را بهبود بخشیده و از بروز خطاهای دادهای جلوگیری کند.