birincil anahtar ve benzersiz anahtar arasındaki fark


252

MySQL veritabanı kullanıyorum. Birincil anahtar ile benzersiz anahtar arasında bir karışıklık var.

Lütfen birincil ve benzersiz anahtarı nerede oluşturmalıyım. Yani hangi durumda benzersiz anahtar veya birincil anahtar oluşturuyoruz.


9
wrt null yeteneği s / b onları ayırt etmek için iyi bir yoldur PRIMARY KEY = UNIQUE KEY + Not Null CONSTRAINT
KNU

Yanıtlar:


233

Birincil anahtar:

  • Tabloda yalnızca bir birincil anahtar olabilir
  • Bazı DBMS'lerde olamaz NULL- örneğin MySQL eklerNOT NULL
  • Birincil Anahtar, kaydın benzersiz bir anahtar tanımlayıcısıdır

Benzersiz anahtarı:

  • Bir tabloda birden fazla benzersiz anahtar olabilir
  • Benzersiz anahtarın NULLdeğerleri olabilir
  • Aday anahtar olabilir
  • Benzersiz anahtar olabilir NULL; birden çok satırın NULLdeğerleri olabilir ve bu nedenle "benzersiz" olarak değerlendirilemez

11
Ayrıca birincil anahtar (CustomerID, ProductID) gibi birden çok sütunda oluşturulabilecek bu birincil anahtarı eklemek istersiniz. Buna bileşik birincil anahtar denir. Bu, ilk noktayı açıklığa kavuşturmak için olduğu gibi (yeni bir anahtar => bir sütun okuyun) yeni gelene kadar sql
ken

1
'Aday anahtar olabilir' demek ne demek?

1
"yalnızca tek null değerine izin verilir" - bu doğru değildir, en azından MySQL için geçerli değildir.
Jānis Elmeris

69
Benzersiz anahtar boş olabilir ve benzersiz olamaz anlamına gelir ??
Pratik

20
@PratikCJoshi Muhtemelen başka türlü benzersiz anahtarda boş olan birden çok satır olabileceği anlamına gelir.
John

77

Benzersiz Anahtar (İngiltere) : Bir satırdaki benzersizliği tanımlayabilen bir sütun veya sütun grubudur.

Birincil Anahtar (PK) : Her şey de üst üste bir teklik belirleyebilir sütun sütun veya grup.

Bu nedenle, Birincil anahtar benzersiz anahtar için başka bir addır, ancak SQL Server'daki varsayılan uygulama Birincil ve Benzersiz Anahtar için farklıdır.

Varsayılan olarak:

  1. PK, Kümelenmiş bir dizin ve İngiltere Kümelenmemiş bir Dizin oluşturur.
  2. PK null değil, ancak İngiltere null değerlerine izin veriyor (Not: Varsayılan Olarak)
  3. Bir masada yalnızca bir PK olabilir, ancak birden fazla İngiltere olabilir
  4. İhtiyacınıza bağlı olarak varsayılan uygulamayı geçersiz kılabilirsiniz.

Bir İngiltere veya PK oluşturmaya karar verirken amacınız gerçekten bağlıdır. "Üç kişilik bir ekip varsa, hepsi akran, ancak bir çift akran olacak biri olacak: PK ve İngiltere benzer bir ilişkiye sahip." Bu makaleyi okumanızı tavsiye ederim: Yazar tarafından verilen örnek uygun görünmeyebilir, ancak genel bir fikir edinmeye çalışın.

http://tsqltips.blogspot.com/2012/06/difference-between-unique-key-and.html


PK'nın birden fazla sütun içerebileceğini söyleyen yaklaşık 10 web sayfasını okuyun. Öyleyse bir masa üzerinde nasıl sadece bir PK olabilir?

@android Birden fazla sütuna sahip bir PK, benzersizliğe göre tek bir sütun gibi davranır. En azından PostgreSQL'de bu [table_name]_pkey, tabloya yeni bir sütun (varsayılan adla ) eklendiği anlamına gelir ( bunun yedek anahtar olarak adlandırıldığını duydum). Kaynak: postgresqltutorial.com/postgresql-primary-key Tüm bunlara yeniyim, bu yüzden özlediğim nüansları göstermek için daha bilgili bir posteri takdir ediyorum.
Poik

Tamam, bu bir sütun değil. Yanlış okudum. Bu bir çelişki, bir sütun değil. Hala kümelenmiş dizin var, ancak bir yerine iki sütunun üzerindedir. Ve içindeki her sütun kendi başına birincil bir anahtar değildir, bunun yerine tüm set birincil bir anahtardır. Dolayısıyla, bu örneklerde birden fazla PK yoktur.
Poik

46

Bir kuruluş veya işletme için çok fazla fiziksel varlık (insanlar, kaynaklar, makineler vb.) Ve sanal varlıklar (Görevleri, işlemleri, etkinlikleri) vardır. Tipik olarak, işletmelerin bu işletmelerin bilgilerini kaydetmesi ve işlemesi gerekir. Bu ticari varlıklar, bir işletme alanı içinde bir Anahtar ile tanımlanır.

RDBMS ileriye yönelik olarak Anahtar (diğer adıyla Aday Anahtar) bir varlığı benzersiz şekilde tanımlayan bir değer veya değer kümesidir.

Bir DB Tablosu için çok fazla anahtar vardır ve Birincil Anahtar için uygun olabilir. Böylece tüm anahtarlar, birincil anahtar, benzersiz anahtar vb. Toplu olarak Aday Anahtar olarak adlandırılır. Ancak DBA, kayıt aramak için aday anahtardan bir anahtar seçti ve Birincil anahtar denir.

Birincil Anahtar ve Benzersiz anahtar arasındaki fark

1. Davranış: Birincil Anahtar, bir tablodaki bir satırı (kaydı) tanımlamak için kullanılırken, Benzersiz anahtar, bir sütundaki yinelenen değerleri (boş giriş dışında) önlemek içindir.

2. Dizin Oluşturma: Varsayılan olarak SQL motoru, yoksa birincil anahtarda Kümelenmiş Dizin ve Benzersiz anahtarda Kümelenmemiş Dizin oluşturur.

3. Nullability: Birincil anahtar Null değerleri içermez, oysa Benzersiz anahtar olabilir.

4. Varlık: Bir tablonun en fazla bir birincil anahtarı olabilir, ancak birden fazla Benzersiz anahtarı olabilir.

5. Değiştirilebilirlik: Birincil değerleri değiştiremez veya silemezsiniz, ancak Benzersiz anahtar değerleri değiştirebilir.

Daha fazla bilgi ve Örnekler için:

http://dotnetauthorities.blogspot.in/2013/11/Microsoft-SQL-Server-Training-Online-Learning-Classes-Integrity-Constraints-PrimaryKey-Unique-Key_27.html


7
5. noktada birincil değerleri değiştiremeyeceğimizi veya silemeyeceğimizi söylüyorsunuz. tabiki bir güncelleme ifadesi kullanarak birincil değerleri değiştirebiliriz.
Kapil

3
@Kapil bunu yaparak birincil anahtar kullanma amacını yener.
Gokigooooks

2
kümelenmiş dizin: satırlar fiziksel olarak diskte dizinle aynı sırada depolanır
Duy Đặng

26

Birincil anahtar benzersiz olmalıdır.

Benzersiz bir anahtarın birincil anahtar olması gerekmez - bkz. Aday anahtarı .

Yani, bir tabloda bir satırı benzersiz bir şekilde tanımlayabilen birden fazla sütun kombinasyonu olabilir - bunlardan yalnızca biri birincil anahtar olarak seçilebilir. Diğerleri benzersiz olsa da aday anahtarlar.


17

Birincil Anahtar ve Benzersiz Anahtar arasındaki fark

+-----------------------------------------+-----------------------------------------------+
|                Primary Key              |                    Unique Key                 |
+-----------------------------------------+-----------------------------------------------+
| Primary Key can't accept null values.   | Unique key can accept only one null value.    |
+-----------------------------------------+-----------------------------------------------+
| By default, Primary key is clustered    | By default, Unique key is a unique            |
| index and data in the database table is | non-clustered index.                          |
| physically organized in the sequence of |                                               |
| clustered index.                        |                                               |
+-----------------------------------------+-----------------------------------------------+
| We can have only one Primary key in a   | We can have more than one unique key in a     |
| table.                                  | table.                                        |
+-----------------------------------------+-----------------------------------------------+
| Primary key can be made foreign key     | In SQL Server, Unique key can be made foreign |
| into another table.                     | key into another table.                       |
+-----------------------------------------+-----------------------------------------------+

Ayrıntılı bilgileri şu adreste bulabilirsiniz:
http://www.dotnet-tricks.com/Tutorial/sqlserver/V2bS260912-Difference-between-Primary-Key-and-Unique-Key.html


16

Birincil anahtar, bir veritabanının satırını tanımlama semantiğine sahiptir. Bu nedenle, belirli bir tablo için yalnızca bir birincil anahtar olabilirken, birçok benzersiz anahtar olabilir.

Aynı nedenden ötürü birincil anahtar NULL olamaz (en azından Oracle'da, diğer veritabanlarından emin değilim)

Satırı tanımladığı için asla değişmemelidir. Birincil anahtarların değiştirilmesi ciddi acıya ve muhtemelen ebedi lanetlemeye neden olacaktır.

Bu nedenle, çoğu durumda birincil anahtar için tablodaki tek satırları tanımlamaktan başka bir şey için kullanılmayan yapay bir kimlik istersiniz.

Diğer yandan benzersiz tuşlar istediğiniz kadar değişebilir.


22
Sonsuz lanet riskinden bahsettiği için +1. İlişkisel veritabanı teorisine teolojiyi tanıtmanın zamanı geldi.
Neville Kuyt

PK, SQL Server'da da NULL olamaz
mrd3650

7

Birincil anahtar benzersiz bir anahtardır.

Her tablonun en fazla ONE birincil anahtarı olmalıdır, ancak birden fazla benzersiz anahtarı olabilir. Bir tablo satırı benzersiz bir şekilde tanımlamak için birincil anahtar kullanılır. Birincil anahtar olamaz NULLçünkü NULLbir değer değildir.


6
  • Tablo adının çalışan olduğunu düşünün.
  • Birincil anahtar
  • Birincil anahtar null değerleri kabul edemez. birincil anahtar bir sütunun benzersizliğini zorunlu kılar. Bir tabloda yalnızca bir Birincil anahtarımız olabilir.
  • Benzersiz anahtarı
  • Benzersiz anahtar null değerleri kabul edebilir. benzersiz anahtar da bir sütunun benzersizliğini zorlar. benzersiz anahtar null değerler içeriyorsa, neden benzersiz olabileceğini düşünebilirsiniz? evet, null değerleri kabul edebilmesine rağmen bir sütunun benzersizliğini zorunlu kılar. sadece resme bir göz atın. burada Emp_ID birincil ve Vatandaş Kimliği benzersizdir. Umarım anlarsın. Bir tabloda birden çok benzersiz anahtar kullanabiliriz. resim açıklamasını buraya girin

1
Benzersiz anahtarına birden fazla boş değer ekleyemeyiz ve yinelemelere de izin vermez.
Masum

@ mahedi-hasan Benzersiz anahtar sütununun yalnızca bir NULL değeri olması gerekmez mi? Citizen ID NULL'da son iki satır nasıl geliyor? Burada bir şey mi eksik?
süpernova

Sadece kendi yorumuma cevap aldım. Görünüşe göre MySQL benzersiz çoklu NULL sağlar da @Mahedi_Hasan MySQL kullanılan gibi görünüyor. stackoverflow.com/questions/3712222/…
süpernova

6

Bu sorunun birkaç yaşında olduğunu biliyorum, ancak bunun nedenini açıklamak yerine nedenini açıklayan bir cevap vermek istiyorum

Birincil Anahtarın Amacı : Veritabanındaki bir satırı benzersiz bir şekilde tanımlamak => Satır, tablo tarafından modellenen varlık türünün tek bir örneğini temsil eder. Birincil anahtar, bir işletmenin bütünlüğünü, AKA Varlık Bütünlüğünü zorunlu kılar. Birincil Anahtar kümelenmiş bir dizin olur, yani verilerin fiziksel olarak bir tabloda depolanma sırasını tanımlar.

Benzersiz Anahtarın Amacı : Tamam, Birincil Anahtar ile bir satırı benzersiz bir şekilde tanımlamanın bir yolu var. Ama başka bir sütun / sütun kümesi benzersiz değerlere sahip olması gereken bir iş ihtiyacım var. Teknik olarak, bu sütun (lar) ın benzersiz olduğu göz önüne alındığında, varlık bütünlüğünü uygulamak için bir aday olabilir. Ancak bildiğimiz her şey için bu sütun, benzersiz olmaktan şüphe duyabileceğim bir dış kuruluştan gelen verileri içerebilir. Varlık bütünlüğünü sağladığına güvenemeyebilirim. Ben sadece iş gereksinimi karşılamak için benzersiz bir anahtar yapmak.

İşte böyle!


1

Veritabanı tasarımınız yabancı anahtar gerektirmeyecek şekildeyse, Benzersiz anahtarla gidebilirsiniz ( ancak benzersiz anahtarın tek null değere izin verdiğini unutmayın ).

Eğer yabancı anahtar veritabanı talep ederseniz o zaman hiçbir seçenek ile birincil anahtar ile gitmek zorunda bırakın.

Benzersiz ve birincil anahtar arasındaki farkı görmek için burayı ziyaret edin


1

Benzersiz anahtar: - Benzersiz değer vermek zorunda olduğunuzda kullanılmalıdır. Benzersiz anahtar durumunda boş değerlere de izin verilir demektir. Benzersiz anahtarlar, bu sütunda benzersiz ve benzer olmayan, örneğin evcil hayvanınızın adı .it null gibi bir şey olamaz ve veritabanı bağlamında soruyorsanız o zaman her null veritabanındaki başka bir null farklı olduğunu belirtmek gerekir. EXCEPT-SQL Server burada null = null doğru


birincil anahtar: - Benzersiz olarak bir satır tanımlamanız gerektiğinde kullanılmalıdır. birincil, bir veritabanı kısıtlamasındaki her satır için benzersiz olan anahtardır. otomatik artan bir sütuna sahiptir ve tablonun birincil anahtarıdır. artı olabilir ki başka table.example yabancı anahtar olarak kullanılabilir bir düzen Tablo üzerinde sipariş numarası , bir fatura Tablo billId .

şimdi ne zaman kullanılacağı duruma geri dönüyor: -

1) sütunda tabloda boş olmayan birincil anahtar ve ilişki oluşturmak için başka bir tabloda yabancı anahtar olarak kullanıyorsunuz

2) Tabloda veya tüm veritabanında etkilemediği benzersiz anahtar, restoranda atıştırmalıklar gibi belirli bir sütun için null alıp almamanız, bir restoranda atıştırmalık almamanız mümkündür


1

Birincil Anahtar ve Benzersiz Anahtar arasındaki fark

Her ikisi de Primary keyve Unique Keybir tablodaki bir satırı benzersiz bir şekilde tanımlamak için kullanılır. sütunu Primary Keyoluşturur .clustered indexUnique creates an unclustered index of the column

A Primary Keyizin vermez NULL value, ancak a Unique Keyizin verir one NULL value.


0

Basitçe Birincil Anahtar benzersizdir ve boş olamaz, benzersiz boş olabilir ve benzersiz olmayabilir.


msgstr "benzersiz null olabilir ve benzersiz olmayabilir". may not be uniqueBurada ne anlama geliyor?
Yusuf Hassan

0

Birincil Anahtarlar

Birincil anahtarın ana amacı, tablodaki her bir kaydı tanımlamak için bir araç sağlamaktır.

Birincil anahtar, satır içindeki verileri kullanarak satırı tanımlamak için bir araç sağlar. Birincil anahtar, ad ve soyadı gibi bir veya daha fazla sütuna dayanabilir; ancak, birçok tasarımda birincil anahtar, bir kimlik sütunundan otomatik olarak oluşturulan bir sayıdır.

Birincil anahtar aşağıdaki özelliklere sahiptir:

  1. Bir tablo için yalnızca bir birincil anahtar olabilir.
  2. Birincil anahtar bir veya daha fazla sütundan oluşur.
  3. Birincil anahtar, tablonun varlık bütünlüğünü zorunlu kılar.
  4. Tanımlanan tüm sütunlar NOT NULL olarak tanımlanmalıdır.
  5. Birincil anahtar bir satırı benzersiz bir şekilde tanımlar.
  6. Birincil anahtarlar varsayılan olarak CLUSTERED benzersiz dizine neden olur.

Benzersiz Tuşlar

Benzersiz bir anahtara benzersiz sınırlama da denir. Satırların veritabanı içinde benzersiz olmasını sağlamak için benzersiz bir kısıtlama kullanılabilir.

Bunu birincil anahtarla yapmıyor muyuz? Evet, var, ancak bir tabloda benzersiz olmasını istediğiniz birkaç sütun kümesi olabilir.

SQL Server'da benzersiz anahtar aşağıdaki özelliklere sahiptir:

  1. Bir tabloda tanımlanmış birden çok benzersiz anahtar olabilir.
  2. Benzersiz Anahtarlar, varsayılan olarak OLUMSUZ Benzersiz Dizine neden olur.
  3. Bir veya daha fazla sütun benzersiz bir anahtar oluşturur.
  4. Sütun NULL olabilir, ancak sütun başına bir NULL değerine izin verilir.
  5. Benzersiz bir kısıtlamaya Yabancı Anahtar Kısıtlaması referans verebilir.

kaynak: burada


0

Birincil anahtarın ana özellikleri şunlardır:

Her veri satırı için benzersiz bir değer içermelidir. Boş değerler içeremez. Tabloda yalnızca bir Birincil anahtar.

Benzersiz bir anahtarın ana özellikleri şunlardır:

Ayrıca her veri satırı için benzersiz bir değer içerebilir.

Boş değerler de içerebilir.

Bir tabloda birden çok benzersiz anahtar.

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.