اندازهی قلم متن
تخمین مدت زمان مطالعهی مطلب:
دو دقیقه
کلید اصلی ( Primary Key):
بهمنظور تشخیص هر رکورد در یک جدول بانک اطلاعاتی از کلید اصلی استفاده میکنیم. هر جدول بانک اطلاعاتی باید یک کلید اصلی داشته باشد. برای تعریف کلید اصلی در هر جدول از کلمهی کلیدی Primary Key بعد از نام ستون استفاده میکنیم.
کلید یکتا ( Unique Key):
ستون با محدودیت (constraint) کلید یکتا تنها میتواند دربرگیرنده ارزشهایی یکتا باشد. برای تعریف یک ستون بصورت یکتا (unique) بعد از نام ستون از کلمه کلیدی UNIQUE استفاده میکنیم.
مثالی از نحوه ایجاد کلید اصلی و کلید یکتا:
اسکریپت زیر مثالی از نحوهی پیاده سازی این دو ویژگی، در بانک اطلاعاتی میباشد:
CREATE DATABASE DNTSampleDB GO USE DNTSampleDB GO CREATE TABLE Cars( ID int PRIMARY KEY, Name VARCHAR(255) NOT NULL, NumberPlate VARCHAR(255) UNIQUE,--شماره پلاک Model INT);
نمایی از ساختار بانک اطلاعاتی ایجاد شده :
در این مرحله تعدادی رکورد فرضی به این جدول اضافه میکنیم :
INSERT INTO Cars VALUES (1,'Mazda','ABC 123',199), (2,'Mazda','ABC 345',207), (3,'Mazda','ABC 758',305), (4,'Mazda','ABC 741',306), (5,'Mazda','ABC 356',124)
نمایی از وضعیت اطلاعات ثبت شده در جدول :
بررسی شباهتهای بین کلید اصلی و کلید یکتا :
ستونهایی که بصورت کلید اصلی و یا کلید یکتا تعریف میشوند، نمیتوانند ارزشهای تکراری را درون خود ذخیره کنند.
ثبت رکورد با شماره Id تکراری 2 موجب بروز خطای زیر میشود:
INSERT INTO Cars VALUES (2,'Mazda','ABC 123111',199)
این خطا به وضوح محدودیت کلید اصلی را اعلام میکند و اجازهی ثبت ارزش تکراری را در فیلد ID، نمیدهد و همچنین تلاش برای ثبت رکوردی با ارزش تکراری در ستونی که با محدودیت کلید یکتا است، با خطا مواجه خواهد شد:
INSERT INTO Cars VALUES (6,'Mazda','ABC 741',200)
از آنجائیکه کلید اصلی و کلید یکتا، هر دو اجازهی ثبت ارزشهای تکراری را برای ستونهای خود نمیدهند، میتوان از آنها برای بازیابی رکوردها استفاده کرد؛ زیرا مطمئن هستیم به ازای این ارزش، تنها و تنها یک رکورد در بانک اطلاعاتی ثبت شدهاست.
تفاوتهای کلید اصلی و کلید یکتا:
1- یک جدول تنها میتواند یک کلید اصلی داشته باشد؛ اما امکان تعریف چندین کلید یکتا در یک جدول وجود دارد.
2- کلید اصلی نمیتواند ارزش null داشته باشد و بصورت پیش فرض (Not Null) است؛ اما کلیدهای یکتا میتوانند ارزش null داشته باشند.
3- بصورت پیش فرض شاخص خوشهای (clustered index) برای کلید اصلی و شاخص غیر خوشه ای (non-clustered Index) برای کلیدهای یکتا ایجاد میشود .
برای مشاهدهی شاخصهای برای جدول ایجاد شدهی فوق، پروسیجر زیر را اجرا کنید:
USE DNTSampleDB GO sp_help cars
خروجی دستور فوق: