کلید اصلی در SQL Server
در این بخش شما یاد خواهید گرفت که کلید اصلی (primary key) چیست و چگونه آن را در یک جدول جدید یا موجود در پایگاه داده SQL Server ایجاد کنید.
کلید اصلی چیست؟
در SQL Server، یک primary key محدودیتی است که به طور منحصر به فرد هر ردیف را در جدول شناسایی می کند. کلید اصلی باعث ایجاد یکپارچگی داده ها در جداول می شود.
نکات زیر را در رابطه با کلید اصلی مورد توجه قرار دهید:
1 - یک جدول می تواند فقط یک کلید اصلی داشته باشد.
2 - یک کلید اصلی را می توان بر روی یک ستون یا ترکیبی از چندین ستون که به عنوان کلید اصلی ترکیبی (composite primary key) شناخته می شود، تعریف کرد.
3 - یک کلید اصلی نباید از 16 ستون و طول کلی 900 بایت تجاوز کند.
4 - کلید اصلی به طور منحصر به فرد هر ردیف را در جدول شناسایی می کند. primary key اغلب در ستون identity تعریف می شود.
5 - ستون کلید اصلی اجازه مقادیر NULL یا تکراری را نمی دهد. اگر سعی کنید این کار را انجام دهید یک خطا ایجاد می شود.
6 - تمام ستون های تعریف شده به صورت کلید اصلی باید به عنوان ستون NOT NULL تعریف شوند.
7 - اگر خوشه ای (clustered) یا غیرخوشه ای (nonclustered) مشخص نشده باشد، سپس اگر ایندکس خوشه ای در جدول وجود نداشته باشد، یک ایندکس خوشه ای منحصر به فرد برای ستون کلید اصلی ایجاد می شود. این امر باعث می شود هر زمان که ستون کلید اصلی در کویری گنجانده شود، داده ها سریعتر بازیابی شوند.
کلید اصلی را می توان به دو روش در SQL Server ایجاد کرد:
1 - با استفاده از T-SQL
2 – با استفاده از SSMS یا SQL Server Management Studio
ایجاد کلید اصلی با استفاده از T-SQL
یک کلید اصلی را می توان در اسکریپت T-SQL ایجاد جدول پیکربندی کرد. دستور CONSTRAINT را در پایان تعریف تمام ستون ها اضافه کنید.
نام کلید اصلی باید در قالب PK TableName ColumnName باشد تا به راحتی شناسایی شود.
کوئری زیر یک جدول Employee جدید ایجاد می کند و یک کلید اصلی بر روی ستون Employee ID تعریف می کند.
اگر می خواهید چندین ستون را به عنوان کلید اصلی تعریف کنید، نام ستون ها را در پرانتز مشخص کنید. در مثال زیر EmployeeID و ManagerID به عنوان کلید اصلی در نظر گرفته شده اند .
اگر یک کلید اصلی حاوی بیش از یک ستون باشد، مقادیر تکراری در یک ستون مجاز است، اما هر ترکیبی از مقادیر از تمام ستون های کلید اصلی باید منحصر به فرد باشد.
ایجاد کلید اصلی در یک جدول موجود
از دستور ALTER TABLE برای اضافه کردن یک کلید اصلی در جدول موجود استفاده کنید.
کوئری زیر یک کلید اصلی برای ستون EmployeeID جدول Employee در پایگاه داده HR ایجاد می کند.
توجه : اگر از عبارت ALTER برای افزودن primary key به یک ستون استفاده می کنید، مطمئن شوید که ستون های کلید اصلی به صورت NOT NULL اعلام شده اند.
ایجاد کلید اصلی با استفاده از SSMS
SSMS را باز کنید و پایگاه داده را در Object Explorer باز کنید و روی جدولی که می خواهید کلید اصلی را روی آن اضافه کنید راست کلیک کنید و مانند شکل زیر روی Design کلیک کنید.
با این کار table designer در پنجره پرس و جو باز می شود.
اکنون بر روی انتخابگر ردیف، ستونی که می خواهید کلید اصلی را برای آن تعریف کنید کلیک کنید. برای انتخاب چند ردیف به عنوان کلیدهای اصلی ترکیبی ، کلید Ctrl را نگه دارید و ستون های دیگر را انتخاب کنید.
در اینجا، EmployeeID را به عنوان کلید اصلی تنظیم می کنیم، بنابراین بر روی آن کلیک راست کرده و مانند شکل زیر بر روی گزینه Set Primary Key در منو کلیک کنید.
در نهایت، جدول را با فشار دادن کلیدهای Ctrl + s ذخیره کنید یا روی save در نوار ابزار بالا کلیک کنید.
پس از تنظیم کلید اصلی، نماد کلید اصلی را قبل از ستون هایی که آنها را به عنوان کلید اصلی تنظیم کرده اید، مانند تصویر زیر مشاهده خواهید کرد.
ایجاد کلید اصلی با استفاده از Indexes/Keys
روش دیگر برای تعریف کلید اصلی استفاده از کادر محاوره ای Idexes/Keys است. در اینجا، گزینه های بیشتری برای پیکربندی آن خواهید داشت.
مطابق شکل زیر بر روی table designer راست کلیک کرده و Indexes/Keys را انتخاب کنید.
با این کار کادر محاوره ای Indexes/Keys باز می شود که در آن می توانید indexes یا کلیدهای primary/foreign تعریف شده روی جدول را اضافه یا حذف کنید. برای افزودن کلید بر روی دکمه Add کلیک کنید.
در اینجا، می توانید ستون کلید اصلی، نام، clustered index و غیره را پیکربندی کنید. جدول را ذخیره کنید و کلیدهای اصلی ایجاد خواهند شد.