it-swarm.asia

الاختلافات بين "المفتاح الفريد" و "المفتاح الأساسي"

ما هي الاختلافات الرئيسية بين Unique Key و Primary Key في MySQL؟

19
newuser

يمكن أن يحتوي الجدول على قيد PRIMARY KEY واحد على الأكثر ولكن يمكن أن يكون به العديد من القيود UNIQUE KEY.

يجب تعريف الأعمدة التي تشكل جزءًا من PRIMARY KEY على أنها NOT NULL. هذا غير مطلوب للأعمدة التي هي جزء من قيود UNIQUE KEY. إذا لم تكن الأعمدة فارغة ، فلا فرق بين المفاتيح الفريدة والمفاتيح الأساسية.

هناك اختلاف بسيط آخر هو أنه يمكنك اختيار الاسم الذي تريده لقيد (وفهرس) UNIQUE KEY. من ناحية أخرى ، فإن PRIMARY KEY يحمل الاسم الافتراضي: PRIMARY.

24
ypercubeᵀᴹ

فرق واحد كبير

  • لا يسمح المفتاح الأساسي بالأعمدة الفارغة
  • يسمح المفتاح الفريد للأعمدة الفارغة

خلاف ذلك ، لا يوجد فرق كبير ...

7
gbn

شيء لم يشر إليه الآخرون:

  • إذا لم تعلن صراحة عن PK في جداول InnoDB ، فسيقوم بإنشاء واحدة تحت الأغطية لك. لا يمكنك الوصول إلى هذا المفتاح الضمني أو طلبه أو تصفيته. هذا له تداعيات من حيث الموارد حيث يحتوي كل فهرس ثانوي على مؤشر نسخة إلى PK للصف.
4
atxdba

الاختلاف الأكثر أهمية هو الغرض.

  • المفتاح الأساسي: الغرض من المفتاح الأساسي هو العمل كـ "مفتاح". المفتاح الأساسي هو مفتاح في قاعدة بيانات علائقية تُستخدم لتحديد السجلات.
  • الفهرس الفريد: الفهرس الفريد هو "INDEX" مخصص للأداء. يعرف المُحسِّن أنه بالنسبة للحالة "حيث x =: x" سيكون هناك سجل واحد فقط نتيجة لذلك - لذا يمكنه إعداد خطة مناسبة لذلك.
  • القيد الفريد: إنه "CONSTRAINT" الذي يضمن عدم وجود قيم مكررة في هذا العمود. إنه قيد لسلامة البيانات.

وبصرف النظر عن الغرض منها ، فإن النقاط التالية جديرة بالملاحظة.

  • ما لم ينص على خلاف ذلك ، سيحاول PRIMARY KEY إنشاء مؤشر مقسم (هذه النقطة حول SQL Server على الرغم من ذلك ، كما هو مذكور في التعليق)
  • يمكن أن يكون هناك مفتاح أساسي واحد فقط لكل جدول ؛ ولكن يمكن أن يكون هناك العديد من القيود الفريدة والفهارس الفريدة
  • PRIMARY KEY ليس فارغًا دائمًا ولكن الأعمدة ذات القيد الفريد يمكن أن تحتوي على قيم فارغة
3
LCJ