27 Nisan 2018 Cuma

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 ş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.

  1. TCNO primary key olabilir, çünkü her bir kaydın (öğrencinin) TCNOları kesinlikle farklıdır.
  2. 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;
  1. TCNO
  2. 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.


22 Ocak 2018 Pazartesi

Android Studio File Templates




File templates make our lives much more easier. When we do same thing again and again we usually copy and paste. This causes some pain, so file templates save us from it.

1) Right click on your package which your adapter will go in.



2) Click green plus icon on top of left


3) Give it a name and fill your template. For example my template which is RecyclerViewAdapter is at this gist: gist.github.com/furkanozbay/9d70cce1beed91a11e70e4254988d992



4) Create your adapter with template


5) Give names




  And your adapter is created.



 Thanks for Franks Rebecca to teach us the way. I have added a little bit from myself