Bu başlıkta sizlere uzun zamandır (yaklaşık 3 yıl) taslakta kalan veri tabanında anahtarlardan bahsedeceğim. Hepiniz az çok bir şeyler biliyorsunuzdur ama okumaya devam edin, eminim bilmediğiniz birkaç şey çıkacak, bazılarınız ise akıllarındaki sorulara cevap bulacak.
Yazıda örnek olması için bir tane tablomuz olsun;
Öğrenci ( TCNO, Ad, Soyad, Şehir, Doğum Tarihi, Cep Telefonu Numarası)
burada virgülle ayrılan her kelime bir sütunu temsil ediyor.
Primary Key (Birincil Anahtar): Bu anahtar çeşidi, bir tablodaki bir satırı diğerlerinden ayırabilecek güçte olan bir anahtardır.
Primary key bir sütun veya birkaç sütundan oluşabilir. (Birkaç sütundan oluşabilmesi için hiçbir sütunun tek başına o satırı(kaydı) diğerlerinden ayıramıyor olması gerekir.)
Primary key hiçbir şüpheye yer bırakmadan o satır için benzersiz (unique) olmalıdır.
Bu tablodaki her kaydı birbirinden ayırmak için yani ingilizce tabirle "uniquely identify" etmek için bir sütun seçmemiz gerekli.
TCNO primary key olabilir, çünkü her bir kaydın (öğrencinin) TCNOları kesinlikle farklıdır.
Cep telefonu numarası primary key olabilir, çünkü her kaydın ( öğrencinin) cep telefonu numarası kesinlikle farklıdır.
Bu tabloda diğer sütunlar bir satırı (öğrenciyi) diğerlerinden ayıramaz yani diğer satırlarda da aynı değerler olabilir. Örneğin "Şehir" sütunundan gidersek, birden fazla öğrenci aynı şehirden geliyor olabilir.
Not: Eğer herbir öğrencinin farklı şehirlerden geldiğine ve geleceğine eminsek o zaman "Şehir" sütununu primary key yapabiliriz çünkü o zaman Zonguldak şehrinden gelen öğrenciyi bulmak istersek bize sadece 1 tane satır (öğrenci) gelecek.
Candidate Key (Aday Anahtar): Candidate key demek primary key olabilecek bir key demektir.
Primary key özelliğini sağlayan sütün veya sütunların oluşturduğu küme candidate key kümesidir.
Candidate key bir sütun veya birkaç sütundan oluşabilir. (Birkaç sütundan oluşabilmesi için hiçbir sütunun tek başına o satırı(kaydı) diğerlerinden ayıramıyor olması gerekir.)
Candidate key hiçbir şüpheye yer bırakmadan o satır için benzersiz (unique) olmalıdır.
Yukarıdaki tablodaki candidate keyler ise şunlardır;
TCNO
Cep Telefonu Numarası
Primary key, candidate keyler arasından seçilmiş bir keydir. Burada istersek TCNO yu primary key yapabiliriz, istersek de cep telefonu numarasını. Seçim bize kalmış.
(Küme içindeki her bir yıldız bir primary key i temsil etmekte)
Super Key (Süper Anahtar): Bu anahtar çeşidi de bir satırı diğer satırdan ayırır. Herbir primary key ve candidate key bir super keydir.
Gördüğünüz gibi super key kümesi candidate kümesini kapsıyor. Yani her primary key, candidate key birer super keydir.
Yukarıdaki tablodaki kayıtları ayırmak için primary key kullanmıştık. Tanım olarak primary key en az sütunla kayıtları ayırması gerekir (tercihen bir sütun, eğer bir sütun ayırmaya yetmiyorsa birden fazla sütun kullanabiliriz) Peki ya birden fazla sütunla da bu kayıtları ayıramaz mıyız?
Örneğin bir satırı TCNO ile ayırabiliyoruz peki TCNO ve Ad sütunlarını da kullanamaz mıyız? Elbette kullanabiliriz, zaten TCNO tek başına yeterken bir de Ad filtresi ekliyoruz.
Bu şekilde oluşturabileceğimiz kümeler birer super keydir.
Kümenin birkaç elamanı şöyle; { (TCNO), (TCNO,Ad), (TCNO, Soyad), (TCNO, Şehir), (TCNO, Doğum Tarihi), (TCNO, Cep Telefonu Numarası), (TCNO, Ad, Soyad), (TCNO, Ad, Şehir) .......}
Gördüğünüz gibi bir satırı(öğrenciyi) ayırabilecek tüm kombinasyonlar kümesi super key kümesi oldu.
Kısaca özetlemek gerekirse bir satırı ayırabilen tüm anahtarların birleşimi super key kümesi ve bu kümenin her bir elamanı super keydir.
Peki, her şey güzel, super key nedir ve super key kümesini nasıl oluşturacağımızı artık biliyoruz. Ya candidate key kümesi? Candidate key kümesini oluştururken içine koyacağımız elemanların gerçekten candidate key olup olmadığını nasıl anlarız?
Çok basit, bunun için candidate key elemanının alt kümesi var mı ve varsa bu küme super key kümesinin içinde var mı buna bakarız. Eğer varsa o bir candidate key değildir.
Umarım yazım size faydalı olmuştur, herhangi bir sorunuz veya yazıda düzeltmemi istediğiniz bir yer varsa çekinmeden yazabilirsiniz.
Bunu E-postayla GönderBlogThis!Twitter'da PaylaşFacebook'ta Paylaş
Önceki Kayıt Ana Sayfa
1 yorum:
Unknown 18 Ağustos 2021 07:28
teşekkürler. uzun zamandır aradığım bir bilgiydi. çok güzel özetlemişsiniz.
YanıtlaSil
Yanıtlar
Yanıtla
Yorum ekle
Daha fazlasını yükle...
Kaydol: Kayıt Yorumları (Atom)
Sosyal Ağlar
Popüler
Etiketler
Blog Arşivi
Veritabanında Anahtarların Farkı
Bu başlıkta sizlere uzun zamandır (yaklaşık 3 yıl) taslakta kalan veri tabanında anahtarlardan bahsedeceğim. Hepiniz az çok bir şe...
Multitasking ve Multithreading
Baktım da bu konu hakkında açıklayıcı ve anlaşılabilir yazı bulmak pek de kolay değil. Önceki bilgilerimi de katarak ufak bi...
(Yenilendi) Pencereye(JFrame) Resim Ekleme
Bu yazıda JFrame içine nasıl resim/fotoğraf ekleriz onu göstereceğim. Görüldüğü gibi çok basit. Sadece ImageIcon ve paint...
Wireshark İle Ağ Dinleme
Bilgi departmanlarında çalışanlar için sniffer programları vazgeçilmezdir, her daim ellerinin altında bulunurlar. Bu yazımda da uzun zam...
Tortoise Git
Bu yazımda size git kullanımını kolaylaştırmak için tasarlanmış Tortoise Git uygulamasından bahsedeceğim. Git kullananlar bili...
Java'da Reflection Kütüphanesi
Genelde Java'da çalışma zamanında test yapmak için kullanılan Reflection(yansıma) kütüphanesini kullanarak yapabileceğimiz...
İlişkisel Veri Tabanı Yönetim Sistemi(RDBMS)
Öncelikle veri tabanı yönetim sistemi nedir onu açıklayalım. Veri Tabanı Yönetim Sistemi (VTYS) , veri tabanlarının kurulmasında,...
Big O Notasyonu
Kısaca sınav öncesi bir tekrar adına yazayım dedim. Şimdi şöyle bir metodumuzun olduğunu düşünelim; public void denem...
Kriptoloji Nedir?
Blogda her zaman ödev paylaşıyorum fakat artık biraz araştırma ve bilgi verme vakti geldi :) Bu yazımda kriptolojiden ve çeşit...
Çizgi Tagem Ücretsiz Eğitim Videoları
Dün Çizgi TAGEM'den mail aldım. Tübitak Ulakbim ile birlikte toplam 1400 Saat ve 16,872 videoluk ücretsiz eğitim hazırlamışlar. ...
Tag
java jframe resim 4.ödev Türkçe kelime actionlistener android android studio file templates ağ ağ dinleme binary search tree bst ceng anadolu ceng anadolu java dosya dosya işlem driver genius ekle eskişehir evaluator events expression f.lux file templates example file templates nedir flux gdg git github gömme görsel eğitim göz sağlığı hazır görsel ilişkisel infix to postfix içerik java beans java bst java collections java jframe java kelime java reflection javada dosya kelime kontrol kriptoloji low level mouselistener multitasking multithreading nesneye new windows office 365 onedrive oop programlama rdbms rsa rsa algoritması rsa şifreleme semantic sniffing stock pictures techmakers tortoise git try catch try catch yapısı java tübitak vcs veri tabanı vs what is android studio file templates windows 10 wireshark wireshark kullanımı wireshark nedir women yeni activity yönelik çizgi tagem ücretsiz