DBMS'de Birincil anahtar ve Süper anahtar arasındaki fark nedir


20

DBMS'lerde yeniyim ve hala teoriyi öğreniyorum.

Bu anahtar iş ile gerçekten karışık alıyorum ve googling sonra ben alamadım sadece 2 anahtar (daraltıcı ve süper anahtar) için daralttı.

DBMS ile ilgili birkaç sorum var. Onlara benim için cevap verebilirsen minnettar olurum.

1) DBMS'de Birincil anahtar ile Süper anahtar arasındaki fark nedir? Düzgün açıklamak için kapsamlı bir örnek kullanabiliyorsanız çok teşekkür ederiz.

2) Birincil anahtar ve Süper anahtarın her ikisinde de Birincil anahtar ve Süper anahtar oluşturmak için birden fazla sütun bulunabilir mi?

3) Birincil anahtar Süper anahtarın bir alt kümesi mü yoksa tam tersi mi?


1
Çok fazla parıldayan bir şey, tuple (sıra) 'nın kendisinin bir superkey olmasıdır. Amaç, satırı benzersiz bir şekilde tanımlayabileceğinden, yani belirli bir değer kombinasyonunu içeren tupu benzersiz bir şekilde tanımlayabildiğinden, bunu yapmanın bir yolu zaten mevcut tüm değerlere sahip olmaktır. Bu nedenle, demet kendi için bir süperkeydir, çünkü bir kez demet içindeki değerleri bildiğimizde, bu değerlere sahip demetin nasıl bulunacağını açıkça biliyoruz. İlk başta aptalca görünüyor ama bir demet için bir süperkey olan - demetin kendisi üzerinde bir üst sınır oluşturuyor.
Dave

@Dave Bir ilişkinin / tablonun tüm sütun adlarının (ve dolayısıyla her bir tuples / satırının) kümesi bunun bir superkeyidir. "Tuple (satır) kendisi" değil.
philipxy

@philipxy haklısın ve yanlış yazıyorum - düzeltilmiş duruyorum. Açıklamayı eklediğiniz için teşekkürler.
Dave

Yanıtlar:


23

Bir Süper Anahtar basitçe minimal olmayan bir Aday Anahtar , yani satırın benzersizliğini sağlamak için kesinlikle gerekli olmayan ek sütunlara sahip bir Anahtardır .

Bir Birincil Anahtar minimal olduğu Aday anahtar bütün kurucu sütunları kesinlikle benzersizliğini sağlamak amacıyla gerekli olan demek ki.

30 yıllık bir veritabanı geliştiricisi / tasarımcısı olarak, bu soruyu görene kadar Süper Anahtar terimini hiç duymamıştım . Süper Anahtar kavramı, gelişmiş sorgu kapsamı için ek sütunlarla birlikte benzersiz bir kümelenmemiş dizin kavramıyla doğrudan eşleştiğinden, performans ve Fiziksel Şema tasarımı konusuna daha uygun görünüyor .


3
Bu oldukça yanlış. Uygun superkey, superkey & CK yerine superkey, CK & PK kullanıyorsunuz. Superkey EŞSİZ bir settir. (Bir CK "minimal" bir superkey'dir. "Minimal CK" nosyonu yoktur. Her CK bir superkey'dir. Bu nedenle, superkey'in CK'dan daha fazla sütunu olması gerekmez. PK, CK olan PK'dır. Eğer bir "minimal CK" olmalıydı, o zaman "minimal" demek "keyfi" anlamına gelecektir.) SQL PK & EŞSİZ DEĞİL BOŞ superkeys ilan. (Bir SQL PK bir PK olabilir veya olmayabilir.) Superkeyler, normalizasyon dahil tasarım için kritik olan CK tanımında kritik öneme sahiptir. Cevabımı gör.
philipxy


16

Süper Tuşlar: Süper tuş, bir anahtarın süper setini temsil eder. Süper Anahtar, toplu olarak alınan ve diğer tüm özellikleri benzersiz bir şekilde tanımlayabilen bir veya daha fazla özellik kümesidir.

Örneğin, masamız var

Book (BookId, BookName, Author)

Yani bu tabloda

   (BookId)
   (BookId,BookName)
   (BookId, BookName, Author)
   (BookId, Author)
   (BookName, Author)

Süper anahtarımız olarak. Her bir süper anahtar her bir tupu (kaydı) benzersiz şekilde tanımlayabilir.

Aday Anahtarlar Aday anahtarlar, gereksiz öznitelikleri olmayan bir süper anahtardır. Başka bir deyişle, aday anahtarlar çok az süper anahtardır. Örneğin, yukarıdaki çizimde

   (BookId)
   (BookName,Author)

Bu iki anahtar, aday anahtarlar olabilir, çünkü kalan anahtarlar gereksiz özelliklere sahiptir. Süper anahtar (BookId, BookName) kaydındaki araçlar yalnızca bookid ile benzersiz bir şekilde tanımlanabilir ve bu nedenle Bookname gereksiz özelliktir

Birincil Anahtar: Bir veritabanı kümesindeki varlıkları tanımlamak için veritabanı tasarımcısı tarafından seçilen bir aday anahtardır. VEYA Her kaydı benzersiz şekilde tanımlamak için kullanılan bir anahtar birincil anahtar olarak bilinir.

Yukarıdaki Aday anahtarlardan herhangi biri birincil anahtar olabilir. Birincil anahtar olarak seçilmeyen bir diğeri Alternatif anahtar olarak bilinecektir


Bu soruya cevap verir ve oylamayı hak eder.
srk

Ayrıca başka bir adın alternative key olduğunu secondary keyonlar aynıdır. Mükemmel cevap!
Wael Alshabani

2

Gönderen benim bu stackoverflow.com cevap :

Aday anahtarı, satırları benzersiz bir şekilde tanımlayan ve satırları benzersiz şekilde tanımlayan daha küçük ("uygun") bir sütun alt kümesi içermeyen bir sütun kümesidir.

Superkey, satırları benzersiz bir şekilde tanımlayan bir sütun kümesidir. Yani bir aday anahtar daha küçük bir superkey içermeyen bir süperkeydir.

SQL'de boş bir aday anahtarı bildiremezsiniz. Ayrıca, UNIQUE NOT NULL ve PRIMARY KEY (kısıtlamalar açısından UNIQUE NOT NULL anlamına gelir), anahtarları değil, superkeys bildirir. Böyle bir bildirimin sütun kümesi, superkey olarak bildirilen daha küçük bir sütun kümesi içermiyorsa, bildirdiği superkey bir aday anahtardır.

Gönderen benim bu stackoverflow.com cevap verilen bir tabloyu yeniden:

X ve Y sütun kümeleri için X -> Y yazabiliriz . X'in belirleyici küme ve Y'nin fonksiyonel bağımlılık / in belirlenmiş seti ( FD) ) X -> Y

X'in Y'yi fonksiyonel olarak belirlediğini ve Y'nin fonksiyonel olarak X tarafından belirlendiğini söylüyoruz. X'in X -> Y'nin belirleyicisi olduğunu söylüyoruz . {C} -> Y'de C'nin fonksiyonel olarak belirlediğini söylüyoruz Y'yi X -> {C} 'de X diyoruz işlevsel olarak tespit > Y, - X, X'in ki Y bir üst C olduğunda önemsiz .

X için her değer alt dizisi her zaman / yalnızca Y için aynı değer alt dizisiyle göründüğünde X -> Y'nin T tablosunda tuttuğunu söylüyoruz. Veya X -> Y bir FD Ödenmiş / T. X'in belirleyici olduğu zaman Tablo T'deki bazı FD'nin X'in T'nin / içinde bir belirleyici olduğunu söylüyoruz .

Bir tablonun superkey'i , her niteliği işlevsel olarak belirleyen bir sütun kümesidir. Bir aday anahtarı ( CK ) küçük olmayan SuperKey içeren bir SuperKey olup. Bir CK'yi birincil anahtar ( PK ) olarak seçebilir ve sonra diğer CK'ları arayabiliriz alternatif anahtarlar . Bazı CK'da olduğunda bir sütun birincildir .

(Burada yorumladığım gibi, "FD, hold, superkey ve CK için dört kalın yazı cümlesi yeterli olurdu.)

(Boş CK içeren bir tablo en fazla bir satır içerecek şekilde sınırlandırılır. Boş küme tarafından belirlenen bir sütun kümesi her satırda aynı alt satır değerine sahip olacak şekilde sınırlanır.)


1

anahtar , tek veya birden çok alanın birleşimidir. Amacı, gereksinime göre tablodan veri satırlarına erişmek veya tablodan veri almaktır. Anahtarlar, depolanan verilere hızlı ve sorunsuz bir şekilde erişmek veya sıralamak için tablolarda tanımlanır. Farklı tablolar arasında bağlantılar oluşturmak için de kullanılırlar.

Anahtar Türleri Aşağıdaki tablolar veya ilişkiler farklı anahtar türlerini tanımlamak için kullanılacaktır.

Birincil Anahtar Bir ilişkideki bir satırı veya kaydı benzersiz şekilde tanımlayan öznitelik veya öznitelik bileşimi, birincil anahtar olarak bilinir.

İkincil anahtar Alma için temel alan bir alan veya alanların kombinasyonu, ikincil anahtar olarak bilinir. İkincil anahtar benzersiz olmayan bir alandır. Bir ikincil anahtar değeri birçok kayda atıfta bulunabilir.

Aday Anahtar veya Alternatif anahtar Bir ilişkinin yalnızca bir birincil anahtarı olabilir. Birincil anahtar olarak kullanılabilecek birçok alan veya alan birleşimi içerebilir. Bir alan veya alanların kombinasyonu birincil anahtar olarak kullanılır. Birincil anahtar olarak kullanılmayan alanlar veya alanların kombinasyonu, aday anahtar veya alternatif anahtar olarak bilinir.

Bileşik anahtar veya birleştirme anahtar İki veya daha fazla öznitelikten oluşan birincil anahtar, bileşik anahtar olarak bilinir.

Sıralama veya Kontrol tuşu Sıralama anahtarı adı verilen depolanan verileri fiziksel olarak sıralamak için kullanılan bir alan veya alanların birleşimi. Kontrol anahtarı olarak da bilinir.

Bir SuperKey benzersiz bir veritabanı kaydı tanımlamak için kullanılabilecek özelliklerin bir kombinasyonudur. Bir masanın birçok superkey'i olabilir. Aday anahtarlar, içinde herhangi bir yabancı bilgiye sahip olmayan özel bir superkey alt kümesidir.

Süper anahtar örneği: Ad, Yaş, SSN ve <Telefon Uzantısı> alanlarını içeren bir tablo düşünün. Bu masanın birçok olası superkey'i var. Bunlardan üçü SSN, Telefon Uzantısı ve Adıdır. Listelenenlerden yalnızca SSN bir aday anahtardır, çünkü diğerleri kayıtları benzersiz bir şekilde tanımlamak için gerekli olmayan bilgiler içerir.

Yabancı Anahtar Yabancı anahtar, değeri başka bir ilişkideki birincil anahtarla eşleşen bir ilişkideki öznitelik veya öznitelik birleşimidir. Yabancı anahtarın oluşturulduğu tabloya bağımlı tablo denir. Yabancı anahtarın başvurduğu tablo ana tablo olarak bilinir.

Minimal Super anahtarı için bu bağlantıya bakın daha açıktır http://www.answers.com/topic/superkey-1

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.