“Benzersiz Anahtar” ve “Birincil Anahtar” arasındaki farklar


Yanıtlar:


20

Bir tablonun en fazla bir PRIMARY KEYkısıtlaması olabilir, ancak istediğiniz kadar olabilirUNIQUE KEY kısıtlamaya sahip olabilir.

Bir parçası olan sütunlar PRIMARY KEYolarak tanımlanmalıdır NOT NULL. UNIQUE KEYKısıtlamaların bir parçası olan sütunlar için bu gerekli değildir . Sütunlar Null değerine sahip değilse, Benzersiz ve Birincil Anahtarlar arasında fark yoktur.

Başka bir küçük fark, bir UNIQUE KEYkısıtlama (ve dizin) için istediğiniz adı seçebilmenizdir . Öte yandan, PRIMARY KEYvarsayılan adı: olan PRIMARY.


5

Önemli bir fark

  • Birincil anahtar nullable sütunlarına izin vermiyor
  • Benzersiz anahtar null olabilecek sütunlara izin verir

Aksi takdirde, fazla bir fark yoktur ...


4

Başkalarının işaret etmediği bir şey:

  • InnoDB tablolarında açıkça bir PK bildirmezseniz, sizin için kapakların altında bir PK oluşturur. Bu örtük anahtarla erişemez, sipariş veremez veya filtre uygulayamazsınız. Her ikincil dizin, satırın PK'sına bir kopya işaretçisi içerdiğinden, bunun kaynaklar açısından sonuçları vardır.

3

En önemli fark amaçlarındadır .

  • Birincil Anahtar : Birincil Anahtarın amacı “ANAHTAR” gibi davranmaktır. Birincil anahtar, ilişkisel veritabanındaki kayıtları tanımlamak için kullanılan bir anahtardır.
  • Benzersiz Dizin : Benzersiz Dizin, performans için tasarlanmış bir “INDEX” dir. Optimizer, "burada x =: x" koşulunda sonuç olarak yalnızca bir kayıt olacağını bilir; böylece buna uygun bir plan hazırlayabilir.
  • Benzersiz Kısıtlama : Bu sütunda yinelenen değer bulunmadığından emin olan bir “CONSTRAINT” dir. Veri bütünlüğü için bir kısıtlamadır.

Amaçlarının yanı sıra, aşağıdaki hususlar dikkat çekicidir.

  • Aksi belirtilmedikçe PRIMARY KEY, CLUSTERED INDEX oluşturmaya çalışacaktır (Yorumda belirtildiği gibi bu nokta SQL Server ile ilgilidir)
  • Tablo başına yalnızca bir PRIMARY KEY olabilir; ancak birçok benzersiz kısıtlama ve benzersiz dizin olabilir
  • PRIMARY KEY her zaman null değil, ancak benzersiz kısıtlamaya sahip sütunlar NULL değerleri tutabilir

1
Soru MySQL olarak etiketlendi. Tablo InnoDB altyapısı kullanıyorsa ve birincil anahtarı varsa, başka türlü belirtemezsiniz, bu kümelenmiş dizindir. Seçenek yok. Belki de SQL Server'ı düşünüyordunuz.
ypercubeᵀᴹ
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.