مفتاح رئيسي

**المفتاح الرئيسي**  هو الصفة أو الصفات التي لا تحتمل عملية التكرار في قواعد البيانات ويتم اختيار **المفتاح الرئيسي** ليكون محددا ومميزا لكل صف في الجدول.
## التاريخ
على الرغم من استخدامه بشكل رئيسي اليوم في سياق قاعدة البيانات العلائقية، فإن مصطلح «المفتاح الأساسي» يسبق النموذج العلائقي ويستخدم أيضًا في نماذج قواعد البيانات الأخرى. تشارلز باكمان، في تعريفه لقاعدة البيانات الملاحية، هو أول شخص يحدد المفاتيح الأساسية.
## التصميم
في مصطلحات قاعدة البيانات العلائقية، لا يختلف المفتاح الأساسي في الشكل أو الوظيفة عن المفتاح غير الأساسي. في الممارسة العملية، قد تحدد الدوافع المختلفة اختيار أي مفتاح كأساسي على الآخر. قد يشير تعيين المفتاح الأساسي إلى المعرف «المفضل» للبيانات الموجودة في الجدول، أو أن المفتاح الأساسي يجب استخدامه لمراجع المفتاح الخارجي من جداول أخرى أو قد يشير إلى بعض الميزات التقنية بدلاً من السمات الدلالية للجدول. تحتوي بعض اللغات والبرامج على ميزات بناء الجملة الخاصة التي يمكن استخدامها لتحديد مفتاح أساسي على هذا النحو (على سبيل المثال، قيد PRIMARY KEY في SQL).

النموذج العلائقي، كما يتم التعبير عنه من خلال حساب التفاضل والتكامل والجبر العلائقي، لا يميز بين المفاتيح الأساسية وأنواع المفاتيح الأخرى. تمت إضافة المفاتيح الأساسية إلى معيار SQL بشكل أساسي كوسيلة ملائمة لمبرمج التطبيق.

## الخصائص
**للمفتاح الرئيسي** مجموعة من الخصائص لعل أبرزها:
# لا يأخذ قيمة فارغة
# لا يكون مكررا في سجل آخر

## أمثلة
لا يمكن اعتبار اسم الموظف في قاعدة بيانات ضخمة ك**مفتاح رئيسي** لأنه يمكن العثور على موظفين أو أكثر لهم نفس الاسم، وبالتالي لا يجوز استعمال هذه الخاصية كمفتاح رئيسي.

لكن يمكن استعمال رقم طالب معين في جامعة معينة ك**مفتاح رئيسي** طالما ليس هناك طالبين على الأقل يحملان نفس الرقم.

## تحديد المفتاح الرئيسي في إس كيو إل
يمكن تحديد **المفتاح الرئيسي** في قاعدة بيانات علائقية بعدة طرق، وذلك حسب الجهاز أو البرنامج المستعمل في إنشاء أو تحليل قواعد البيانات هذه، حيث أن الطرق تختلف نسبيا ما بين مايكروسوفت أكسس وماي إس كيو إل وغيرها من برامج تحليل وإنشاء قواعد بيانات ضخمة أو صغيرة.

الكود البرمجي من أجل تعيين **مفتاح رئيسي** في جدول ضمن قاعدة بيانات معينة قد يختلف من برنامج لآخر، ومن توزيعة لأخرى، لكن عموما يمكن تعيينه في ماي إس كيو إل نسخة 2003 بهذه الطريقة:


```sql
ALTER TABLE <table identifier> 
      ADD [ CONSTRAINT <constraint identifier> ] 
      PRIMARY KEY ( <column expression> {, <column expression>}... )
```


كما يمكن تحديد **المفتاح الرئيسي** مباشرة وبطريقة سهلة وذلك عند كتابة قاعدة بيانات معينة، وذلك من خلال الضغط على أيقونة  في معظم برامج قواعد البيانات.

## تحديد مفاتيح أخرى في الإس كيو إل
يمكن تحديد مفايتح أخرى في قاعدة بيانات بواسطة إس كيو إل، وهذه الطريقة مشابهة تقريبا لطريقة تحديد مفتاح رئيسي واحد:
 
```sql
ALTER TABLE <table identifier> 
      ADD [ CONSTRAINT <constraint identifier> ] 
      UNIQUE ( <column expression> {, <column expression>}... )
```


هذه الطريقة تخص تحديد **المفتاح الرئيسي** *بعد* إنشاء قاعدة بيانات أو عند التعديل عليها، أما طريقة تحديده *عند* إنشاء قاعدة بيانات فتتم بالطريقة التالية:
 
```sql
CREATE TABLE table_name (
     id_col   INT,
     col2     CHARACTER VARYING(20),
     key_col  SMALLINT NOT NULL,
     ...
     CONSTRAINT key_unique UNIQUE(key_col),
     ...
  )
```


 
```sql
CREATE TABLE table_name (
     id_col  INT  PRIMARY KEY,
     col2    CHARACTER VARYING(20),
     ...
     key_col  SMALLINT NOT NULL UNIQUE,
     ...
  )
```


## ملاحظة
يمكن **للمفتاح الرئيسي** أن يكون مركبا من صفتين أو أكثر ، حيث يمكن استعمال الاسم، اللقب وتاريخ الميلاد كمفتاح رئيسي في جدول قاعدة بيانات مركب من 3 صفات بحيث من  إيجاد شخصين أو أكثر لهم نفس الاسم، اللقب وتاريخ الميلاد في آن واحد. لكن من المحبذ دائما في المفتاح الرئيسي ان يكون بسيطا ومألوفا قدر الإمكان.
## انظر أيضًا
* المفتاح المرشح
* قاعدة بيانات علائقية

## المراجع

تصنيف:نظم إدارة قواعد البيانات
تصنيف:نمذجة البيانات