SQL Birincil anahtar kısıtlaması ben yukarıdaki resimde şema diyagramı dayalı tablo öğretir içinde, altı çizili sütun adları <code>Primary keys (ID, course_id, sec_id, semester, and year)</code> olduğunu belirtti okuyorum bir kitapta
. Bunun nasıl olabileceğine dair biraz kafam karışmıştı çünkü bir masaya sadece bir tane Primary Key
alabileceğinizi düşündüm. Yukarıdaki diyagramda hangisinin Ana Anahtarlar olduğunu ve yabancı anahtar kısıtlamaları olduğunu anlamıyorum. Birisi bana bu anahtarları böyle bir şema ile nasıl tanımlayacağımı açıklayabilir mi? Ayrıca, (course_id, sec_id, semester, and year)
birincil anahtarlarını öğreten bölüm tablosundan (course_id, sec_id, semester, and year)
(foreigns keys)
'u yapmak da mümkündür. Bu doğru olmaz mı? Her bölüm için (course_id, sec_id, semester, and year)
arasındaki tüm kombinasyonlar için, her bölüm için birden fazla öğretmene sahip olabileceğinizden, öğretmenler tablosundan birden fazla kimliğiniz olabilir. Öyleyse, bu, yabancı satırların, öğretilerden çok sayıda satır atıfta bulunduğu bölümlerden oluştuğu ve öğretmek için doğru bir birincil anahtar bileşimi oluşturmadığı anlamına gelir.
Diğer tablolarda birincil anahtarlardır; öğretir, bunlar, diğer tablolardaki birincil anahtarlara başvururlar ve yabancı anahtar kısıtlamasına sahip olmalıdırlar --- yani, course_id tablosunda bulunmayan öğretilere bir course_id atayamazsınız. Bunları sütun isimleriyle ve alandan çizilen çizgilerle referans olarak belirttiğiniz tablo/alan arasında tanımlayabilirsiniz. – JLB
Yani, bölüm tablosunda PK, course_id, sec_id, semester ve year'dır. Diğer bir deyişle, bölümdeki (course_id, sec_id, semester ve year) her kombinasyonun benzersiz olması gerekir mi? Bir PK için yinelenen değerler bulunamadığından? – LP496
Bir tablonun sadece bir tane ana anahtarı olabilir. Birincil = 1. Birincil anahtar, bir tablodan istediğinizi elde etmek için ANAHTAR'dır. Bu nedenle, bu bölüm tablosunda, tam olarak line_id tablosundaki bir satırdan bahsedecektir, vs vs – JLB