SQL'de bileşik mi yoksa bileşik anahtar mı?


31

SQL hakkında (Bilgi İşlem / Veritabanları):

Bir tabloda, kayıtlarını benzersiz bir şekilde tanımlayan iki veya daha fazla alanımız olduğunda, onları çağırmanın doğru yolu nedir? Kompozit veya bileşik anahtarlar?

İnternette her iki kullanımda da gördüm, bu yüzden gerçekten emin değilim.


1
Bu iki Google Arama trendine göz atın : goo.gl/5u4XdR .
igordcard

Yanıtlar:


32

Hem bileşik anahtar hem de bileşik anahtar, birden fazla özniteliğe sahip bir aday anahtarı açıklar. İlişkisel Veri Tabanı Sözlüğü'ne (CJDate) göre, aynı anlama geliyorlar.

ER modellemesinde "bileşik anahtar" teriminin daha belirgin bir anlamı vardır. Bu, kurucu nitelikleri diğer varlıklardaki anahtarlara referans olan bir anahtar anlamına gelir - örneğin bir bileşik anahtar tanımlayıcı bir ilişki oluşturur. Çoğu amaç için, bu özellikle yararlı veya önemli bir kavram değildir, bu yüzden bileşik / bileşik terimleri genellikle birbirinin yerine kullanılabilir olarak kabul edilir. Özellikle bir bileşik anahtarın ER modelleme konseptine atıfta bulunmadığınız sürece "bileşik anahtar" a yapıştırmak muhtemelen en iyisidir.


3
"ER modellemesinde" bileşik anahtar "teriminin de daha belirgin bir anlamı vardır" - İnandırıcı sesler :) Ama bir alıntı yaptınız mı?
birgün,

Yani bir bileşik anahtar genellikle bir çok ilişki için kullanılan bir bağlantı tablosunda bulunan anahtar olur, örneğin?
Josh P

19

Neden hala http://en.wikipedia.org/wiki/Compound_key adresini bilmiyorum. adresine danışmadığından . Çok açık bir şekilde ifade eder (ve doğru):

Veri tabanı tasarımında bileşik anahtar , bir varlık oluşumunu benzersiz bir şekilde tanımlayan 2 veya daha fazla nitelikten oluşan bir anahtardır. Bileşik anahtarı oluşturan her özellik kendi başına basit bir anahtardır.

Bu genellikle bir bileşik anahtarla karıştırılır ; bu, bir varlık oluşumunu benzersiz bir şekilde tanımlayan 2 veya daha fazla nitelikten oluşan bir anahtar olsa da, bileşik anahtarı oluşturan en az bir özellik kendi başına basit bir anahtar değildir.

Bileşik bir anahtar, yabancı anahtar olabilecek veya olmayabilir elemanlardan oluşur. Örnek: İşlem ayrıntıları tablosunda, anahtar (TransactionId, ItemNumber). Bir işlem detayı, bir işlemin bir niyetidir. TransactionId, İşlemler tablosuna başvuran yabancı bir anahtardır. ItemNumber kendi başına bir anahtar değildir. Tek bir işlem bağlamında yalnızca bir öğeyi benzersiz bir şekilde tanımlar.

Bir bileşik anahtar, anahtarın herhangi bir bölümünün yabancı anahtar olduğu bir anahtardır. Örnek: Bir otel rezervasyon sisteminde, rezervasyon, bileşik anahtara sahiptir (GuestId, HotelId, ArrivalDate). GuestId, bir Misafir tanımlar ve Misafir tablosuna atıf yapar. Otel Kimliği bir Otel tanımlar ve Oteller tablosuna başvurur. ArrivalDate bir Tarih tanımlar. Başvurduğu bir Tarihler tablosu olabilir veya olmayabilir, ancak her iki şekilde de bir Varlık (Tarih) tanımlar.

Ayrıca not etmek gerekirse bu factoid: Basit bir anahtar bir sütundan yapılmış bir anahtardır, bileşik bir anahtar ise iki veya daha fazla sütundan oluşur.


4
jcolebrand: "Bileşik bir anahtar, anahtarın herhangi bir bölümünün kaydı tanımlayabileceği bir anahtardır." Bu yanlış. Tanım olarak bir anahtar indirgenemez olmalıdır (en az bir üst düzey). Sadece bir niteliği tanımlamak için niteliklerin sadece bir kısmı gerekliyse, o zaman tanım gereği bu bir süperkey ve bir anahtar değil.
nvogel

a) Ben wikipedia sayfasını alıntı yapıyordum. b) Buna katılıyorum. Bir bileşik anahtarın herhangi bir parçasının kendisi basit bir anahtardır. Buna süperkey demeyi de umursamıyorum. Ancak, tüm bileşik anahtarların süper olabileceğine inanmıyorum. Ergo, wikipedia makalesinde yazanın yanındayım ve alıntı yaptığım tanımın yanındayım. Sizi daha mutlu edecekse yayınlanmış ciltli veritabanı tasarım kitabımı gidip alabilirim.
jcolebrand

2
Sanırım konuyla ilgili noktayı kaçırdınız, başka bir deyişle, bir bileşik anahtar diğer varlıklardaki anahtarlardan oluşuyor . Bir anahtarın uygun bir alt kümesi muhtemelen bir anahtar olamaz. Bildiğiniz gibi, bir anahtarın minimal olması gerekir (anahtarın olduğu tabloda) - yani herhangi bir özniteliği kaldırırsanız, o zaman artık anahtar olmaz.
nvogel

2
"Anahtar", "aday anahtar" için kısa. Bir aday anahtarın ders kitabı tanımı, her zaman bir "minimal süperkey" dir ve olmuştur. Kaynaklar: Bir anahtarın tanımı konusunda şüpheniz varsa, Date's Dictionary pg17 veya Alice Book.
nvogel

1
Wikipedia sayfasındaki " bileşik anahtar " ve " compsite anahtar " tanımları 13 Temmuz 2014 tarihinde değiştirilmiştir ve artık bu cevaptaki tanımlarla eşleşmemektedir. (Tanımları değiştirmedim, tanımların şimdi uyuşmadığını işaret
ettim

3

İngilizce'de "bileşik anahtarlar" dır. Örneğin, MSDN web sitesine bakın ("sql birleşik anahtar" içeren herhangi bir arama yapacaktır).

http://www.google.com/search?q=sql+composite+key+site:msdn.microsoft.com

Sorunun İlişkisel Veritabanlarına ilişkin olduğunu varsayarak, Vikipedi'de "tarafsız" bir tanım aradım :

Kompozit anahtar, bir tablodaki (birlikte) benzersiz bir kaydı tanımlayan iki veya daha fazla nitelikten oluşan bir anahtardır


1
Kaynak yok, referans yok, link yok, hiçbir şey yok… kötü cevap.


google.com/search?q=sql+composite+key+definition , SQL Bileşik Anahtarlar hakkında konuşan bir siteyi size getirecektir
Hemme

1
böylece google bileşik anahtar için arama yapacak
jcolebrand

3
Bu bilimsel: googlefight.com/…
Hemme

3

Bir bileşik anahtar, bir varlık oluşumunu benzersiz şekilde tanımlamak için birden fazla özellikten oluşur. Bu, anahtarı oluşturan özelliklerin bir veya daha fazlasının, kendi başlarına basit anahtarlar olmadığından, bileşik bir anahtardan farklıdır.

Örneğin, CD koleksiyonunuzu tutan bir veritabanınız var. Varlıklardan birine, CD'deki parçaların ayrıntılarını tutan parça denir. Bu, CD adının kompozit bir anahtarına, parça numarasına sahiptir.


2

Bana bir bileşik anahtar gibi geliyor, bileşik anahtar içeren bir süperset. Bir kompozit anahtarın birden fazla nitelikten (herhangi bir türde) yapıldığını kabul edersek, bir bileşik anahtar birden fazla basit anahtardan yapılır. Bir bileşik anahtar, daha belirgin bir anlamı olan bir bileşik anahtar türüdür, ancak "bileşik" anahtarı terimi her zaman kullanıma uygundur.

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.