در مدل رابطهای پایگاههای داده ، یک کلید اولیه یک ویژگی تعیینشده ( ستون ) است که میتواند بهطور قابل اعتمادی هر رکورد را در یک جدول شناسایی و تمایز دهد . خالق پایگاه داده می تواند یک ویژگی منحصر به فرد موجود یا ترکیبی از ویژگی ها را از جدول (یک کلید طبیعی ) به عنوان کلید اصلی خود انتخاب کند، یا یک ویژگی جدید حاوی یک شناسه منحصر به فرد ایجاد کند که صرفاً برای این منظور وجود دارد (یک کلید جایگزین ).
نمونههایی از کلیدهای طبیعی که میتوانند کلیدهای اولیه مناسب باشند شامل دادههایی هستند که از قبل برای همه موارد موجود در جدول منحصر به فرد هستند، مانند ویژگی شماره شناسایی ملی برای سوابق شخصی، یا ترکیبی از یک ویژگی مهر زمانی بسیار دقیق با یک ویژگی مکان بسیار دقیق. برای سوابق رویداد
به طور رسمی تر، یک کلید اولیه یک انتخاب خاص از مجموعه حداقلی از ویژگی ها است که به طور منحصر به فرد یک تاپل ( ردیف ) را در یک رابطه (جدول) مشخص می کند. [a] [1] یک کلید اولیه یک انتخاب [ شفاف سازی مورد نیاز ] از یک کلید کاندید (یک ابرکلید حداقل ) است. هر کلید کاندید دیگری یک کلید جایگزین است .
در اصطلاح پایگاه داده رابطه ای، یک کلید اولیه از نظر شکل یا عملکرد با کلیدی که اصلی نیست تفاوتی ندارد. در عمل، انگیزه های مختلف ممکن است انتخاب یک کلید را به عنوان اصلی بر دیگری تعیین کند. تعیین یک کلید اولیه ممکن است نشان دهنده شناسه "ترجیح" برای داده های جدول باشد، یا اینکه کلید اصلی قرار است برای مراجع کلید خارجی از جداول دیگر استفاده شود یا ممکن است نشان دهنده برخی ویژگی های فنی دیگر به جای معنایی جدول باشد. برخی از زبانها و نرمافزارها دارای ویژگیهای نحوی ویژهای هستند که میتوان از آنها برای شناسایی یک کلید اصلی استفاده کرد (مثلاً محدودیت کلید اولیه در SQL).
مدل رابطهای، همانطور که از طریق حساب رابطهای و جبر رابطهای بیان میشود، بین کلیدهای اولیه و سایر انواع کلیدها تمایز قائل نمیشود. کلیدهای اصلی عمدتاً به عنوان سهولت برنامه نویس برنامه به استاندارد SQL اضافه شدند . [ نیازمند منبع ]
کلیدهای اصلی می توانند یک عدد صحیح افزایش یافته، یک شناسه منحصر به فرد جهانی (UUID) یا با استفاده از الگوریتم Hi/Lo تولید شوند .
کلیدهای اولیه در استاندارد ISO SQL ، از طریق محدودیت کلید اولیه تعریف می شوند. سینتکس برای افزودن چنین محدودیتی به جدول موجود در SQL:2003 به این صورت تعریف شده است:
ALTER TABLE < شناسه جدول > افزودن [ محدودیت < شناسه محدودیت > ] کلید اصلی ( < نام ستون > [ { , < نام ستون > } ... ] )
کلید اصلی همچنین می تواند به طور مستقیم در هنگام ایجاد جدول مشخص شود. در استاندارد SQL، کلیدهای اولیه ممکن است از یک یا چند ستون تشکیل شده باشند. هر ستون شرکت کننده در کلید اصلی به طور ضمنی به عنوان NOT NULL تعریف می شود. توجه داشته باشید که برخی از RDBMS نیاز به علامتگذاری صریح ستونهای کلید اصلی به عنوان NOT NULL
. [ نیازمند منبع ]
CREATE TABLE table_name ( ... )
اگر کلید اصلی فقط از یک ستون تشکیل شده باشد، ستون را می توان با استفاده از نحو زیر علامت گذاری کرد:
CREATE TABLE table_name ( id_col INT PRIMARY KEY , col2 CHARACTER VARYING ( 20 ) , ... )
در برخی شرایط، کلید طبیعی که به طور منحصربهفرد یک تاپل را در یک رابطه شناسایی میکند، ممکن است برای توسعه نرمافزار دست و پا گیر باشد. برای مثال، ممکن است شامل چندین ستون یا فیلدهای متنی بزرگ باشد. در چنین مواردی می توان به جای آن از یک کلید جایگزین به عنوان کلید اصلی استفاده کرد. در موقعیت های دیگر ممکن است بیش از یک کلید کاندید برای یک رابطه وجود داشته باشد و بدیهی است که هیچ کلید کاندید ترجیح داده نمی شود. یک کلید جایگزین ممکن است به عنوان کلید اصلی استفاده شود تا از دادن اولویت مصنوعی به یک کلید نامزد بر سایرین جلوگیری شود.
از آنجایی که کلیدهای اولیه عمدتاً به عنوان یک راحتی برای برنامه نویس وجود دارند، کلیدهای اصلی جایگزین اغلب، در بسیاری از موارد منحصراً، در طراحی برنامه های پایگاه داده استفاده می شوند.
با توجه به محبوبیت کلیدهای اصلی جایگزین، بسیاری از توسعه دهندگان و در برخی موارد حتی نظریه پردازان کلیدهای اصلی جایگزین را به عنوان بخشی جدا نشدنی از مدل داده های رابطه ای در نظر می گیرند. این تا حد زیادی به دلیل مهاجرت اصول از مدل برنامه نویسی شی گرا به مدل رابطه ای است که مدل ترکیبی شی رابطه ای را ایجاد می کند. در الگوی رکورد فعال مانند ORM ، این محدودیتهای اضافی روی کلیدهای اصلی اعمال میشوند:
با این حال، هیچ یک از این محدودیت ها بخشی از مدل رابطه ای یا هیچ استاندارد SQL نیست. هنگام تصمیم گیری در مورد تغییرناپذیری مقادیر کلید اولیه در طول طراحی پایگاه داده و برنامه، باید دقت لازم را به کار گرفت. برخی از سیستمهای پایگاه داده حتی به این معنا هستند که مقادیر در ستونهای کلید اصلی را نمیتوان با استفاده از دستور SQL تغییر داد UPDATE
. [ نیازمند منبع ]
به طور معمول، یک کلید کاندید به عنوان کلید اصلی انتخاب می شود. سایر کلیدهای کاندید به کلیدهای جایگزین تبدیل می شوند، که ممکن است برای هر کدام UNIQUE
محدودیتی به منظور جلوگیری از تکرارها اختصاص داده شود (یک ورودی تکراری در یک ستون منحصر به فرد معتبر نیست). [2]
کلیدهای جایگزین ممکن است مانند کلید اصلی هنگام انجام یک انتخاب تک جدولی یا هنگام فیلتر کردن در یک عبارت Where استفاده شوند ، اما معمولاً برای پیوستن به چندین جدول استفاده نمی شوند.
کلید اصلی یک فیلد یا مجموعه ای از فیلدها با مقادیری است که در سراسر جدول منحصر به فرد هستند.