في لغة SQL، يُعتبر PRIMARY KEY
(المفتاح الأساسي أو المفتاح الرئيسي) قيدًا (constraint) مهمًا يُستخدم لتعريف عمود واحد أو مجموعة أعمدة في جدول قاعدة البيانات تُعرّف بشكل فريد كل سجل (row) في هذا الجدول. بمعنى آخر، يضمن المفتاح الأساسي عدم وجود أي سجلين لهما نفس القيمة في العمود أو الأعمدة المُحددة كمفتاح أساسي.
خصائص المفتاح الأساسي:
- الفرادة (Uniqueness): يجب أن تكون قيم المفتاح الأساسي فريدة لكل سجل في الجدول. لا يُسمح بتكرار القيم.
- عدم وجود قيم فارغة (Not Null): لا يُمكن أن يحتوي عمود المفتاح الأساسي على قيم فارغة (NULL). يجب أن تكون هناك قيمة لكل سجل.
- مفتاح أساسي واحد لكل جدول: يُمكن أن يكون للجدول مفتاح أساسي واحد فقط.
- يُمكن أن يتكون من عمود واحد أو عدة أعمدة: يُمكن أن يكون المفتاح الأساسي عمودًا واحدًا يُسمى "مفتاح أساسي بسيط" أو مجموعة أعمدة تُسمى "مفتاح أساسي مُركّب" أو "مفتاح أساسي مُتعدد الأعمدة".
أهمية المفتاح الأساسي:
- التعريف الفريد للسجلات: يُساعد على تعريف كل سجل بشكل فريد، مما يُسهل الوصول إلى السجلات وتحديثها وحذفها.
- إنشاء العلاقات بين الجداول: يُستخدم لإنشاء علاقات بين الجداول (باستخدامه كمفتاح أجنبي في جدول آخر).
- فرض التكامل المرجعي (Referential Integrity): يضمن عدم وجود سجلات "يتيمة" في الجداول المرتبطة.
كيفية تعريف المفتاح الأساسي:
يُمكن تعريف المفتاح الأساسي عند إنشاء الجدول (باستخدام عبارة CREATE TABLE
) أو بعد إنشائه (باستخدام عبارة ALTER TABLE
).
1. تعريف المفتاح الأساسي عند إنشاء الجدول:
- باستخدام
PRIMARY KEY
مباشرة مع تعريف العمود (لمفتاح بسيط):
CREATE TABLE Customers ( CustomerID INT PRIMARY KEY, FirstName VARCHAR(255), LastName VARCHAR(255), Email VARCHAR(255));
- باستخدام
CONSTRAINT
لتسمية المفتاح الأساسي (لمفتاح بسيط أو مُركّب):
CREATE TABLE Orders ( OrderID INT, OrderDate DATE, CustomerID INT, CONSTRAINT PK_Orders PRIMARY KEY (OrderID), -- مفتاح بسيط FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID) -- مثال على مفتاح أجنبي);
CREATE TABLE OrderDetails ( OrderID INT, ProductID INT, Quantity INT, CONSTRAINT PK_OrderDetails PRIMARY KEY (OrderID, ProductID), -- مفتاح مُركّب FOREIGN KEY (OrderID) REFERENCES Orders(OrderID));
2. تعريف المفتاح الأساسي بعد إنشاء الجدول:
- باستخدام
ALTER TABLE
وADD CONSTRAINT
:
ALTER TABLE ProductsADD CONSTRAINT PK_Products PRIMARY KEY (ProductID);
مثال توضيحي:
لنفترض أن لدينا جدولًا يُسمى Students
يحتوي على الأعمدة التالية:
StudentID
(رقم الطالب)FirstName
(الاسم الأول)LastName
(الاسم الأخير)Major
(التخصص)
يُمكننا تعريف StudentID
كمفتاح أساسي لأنه من المفترض أن يكون لكل طالب رقم فريد لا يتكرر:
CREATE TABLE Students ( StudentID INT PRIMARY KEY, FirstName VARCHAR(255), LastName VARCHAR(255), Major VARCHAR(255));
أو:
CREATE TABLE Students ( StudentID INT, FirstName VARCHAR(255), LastName VARCHAR(255), Major VARCHAR(255), CONSTRAINT PK_Students PRIMARY KEY (StudentID));
في هذا المثال، يضمن المفتاح الأساسي StudentID
أن كل طالب في الجدول له رقم تعريف فريد، ولا يُمكن أن يكون هناك طالبان بنفس الرقم، ولا يُمكن أن يكون StudentID
فارغًا لأي طالب.
باختصار، يُعتبر PRIMARY KEY
من أهم القيود في SQL، حيث يُساعد على ضمان تكامل البيانات، وتحديد السجلات بشكل فريد، وإنشاء العلاقات بين الجداول.