SQL Unique Key

Yeniden merhabalar :)
SQL derslerimize devam ederken veritabanında benzersiz değer girmemize olanak tanıyan "Unique Key" kavramını bugünkü dersimizde işleyeceğiz.
Unique Key adından da anlaşılacağı gibi eşi benzeri olmayan verileri veritabanında saklamamıza olanak sağlar ve bu kavram bir "key" yani anahtar yapısı olduğu için tablodaki herhangi bir kolona girilen verilerin aynısının tekrar girilmesini önler.
Unique olacak tablo kolonunun bit gibi ikili veri tipleri dışındaki tüm kolonlara uygulanabilir,dolayısıyla int ve string türevi tüm kolonlara "benzersiz" özniteliği belirtebiliriz.Özellikle TC kimlik numarası gibi her bireye mahsus olarak atanmış ve bir başkasının sahip olamayacağı verileri saklayan yapılarda mükemmel denilebilecek bir özellik diyebiliriz :)
Aşağıda bir önceki dersimizde işlediğimiz BakkalDB veritabanımızın son halini görüyoruz:

Az önce dediğim gibi unique key,kimlik numarası gibi benzersiz bilgiler için kullanılır ve biz de örnek veritabanımızda yeni bir SQL tablosu oluşturup tablodaki bir kolonu benzersiz hale getireceğiz.
Şimdi Musteriler isminde bir tablo oluşturalım:

Gerekli kolonları oluşturduktan sonra şimdi "TCNo" kolonumuzu unique hale getirelim.
Kolonumuza sağ tıklayıp Indexes/Keys seçeneğine tıklıyoruz:

Açılan pencerede soldaki "Add" butonuna tıklıyoruz:

Ardından üst kısımda "IX_Musteriler" yazısı belirecektir,henüz bir kayıt işlemi yapmadığımız için yıldız logosu belirir:

Oluşturduğumuz "IX_Musteriler" seçimine tıkladıktan sonra sağ kısımda kırmızı işaretle gösterdiğim seçim penceresi iletişim butonuna tıklarız:

Açılan bu pencerede kolon listesinden TCNo yu seçeriz:

Pencereyi kapattıktan sonra önceki pencereye döneriz ve sarı renklerle gösterdiğim "IsUnique" seçiminin karşısındaki seçim öğesini "Yes" olarak belirtiriz:

Artık kolonumuz unique biçimindedir ve içerisine gireceğimiz veri daha önceden girilmişse uyarı penceresiyle karşılaşacağız.
Son olarak TCNo kolonunu nchar(11) veri tipinde yazmamın sebebi bildiğiniz gibi 11 rakamdan oluşmaktadır ve bu oluşan rakam içerisinde harfler daha doğrusu Türkçe karakterler olmadığı için nvarchar yerine nchar'ı tercih ettik; ya da int tipinde de bu 11 rakamı tutabilirdik ancak böylesine büyük bir değeri sayısal tutmak yerine metin tipinde tutmak daha makul olacaktır.
Unique key ile ilgili bu makalemizde henüz örnek veremiyorum çünkü veritabanı tasarımlarımız bittiğinde SQL sorgularına geçeceğimiz gün konuyu daha rahat kavrayacağınızı umuyorum,şimdilik hoşçakalın esen kalın. :)
SQL derslerimize devam ederken veritabanında benzersiz değer girmemize olanak tanıyan "Unique Key" kavramını bugünkü dersimizde işleyeceğiz.
Unique Key adından da anlaşılacağı gibi eşi benzeri olmayan verileri veritabanında saklamamıza olanak sağlar ve bu kavram bir "key" yani anahtar yapısı olduğu için tablodaki herhangi bir kolona girilen verilerin aynısının tekrar girilmesini önler.
Unique olacak tablo kolonunun bit gibi ikili veri tipleri dışındaki tüm kolonlara uygulanabilir,dolayısıyla int ve string türevi tüm kolonlara "benzersiz" özniteliği belirtebiliriz.Özellikle TC kimlik numarası gibi her bireye mahsus olarak atanmış ve bir başkasının sahip olamayacağı verileri saklayan yapılarda mükemmel denilebilecek bir özellik diyebiliriz :)
Aşağıda bir önceki dersimizde işlediğimiz BakkalDB veritabanımızın son halini görüyoruz:
Az önce dediğim gibi unique key,kimlik numarası gibi benzersiz bilgiler için kullanılır ve biz de örnek veritabanımızda yeni bir SQL tablosu oluşturup tablodaki bir kolonu benzersiz hale getireceğiz.
Şimdi Musteriler isminde bir tablo oluşturalım:
Gerekli kolonları oluşturduktan sonra şimdi "TCNo" kolonumuzu unique hale getirelim.
Kolonumuza sağ tıklayıp Indexes/Keys seçeneğine tıklıyoruz:

Açılan pencerede soldaki "Add" butonuna tıklıyoruz:
Ardından üst kısımda "IX_Musteriler" yazısı belirecektir,henüz bir kayıt işlemi yapmadığımız için yıldız logosu belirir:
Oluşturduğumuz "IX_Musteriler" seçimine tıkladıktan sonra sağ kısımda kırmızı işaretle gösterdiğim seçim penceresi iletişim butonuna tıklarız:

Açılan bu pencerede kolon listesinden TCNo yu seçeriz:
Pencereyi kapattıktan sonra önceki pencereye döneriz ve sarı renklerle gösterdiğim "IsUnique" seçiminin karşısındaki seçim öğesini "Yes" olarak belirtiriz:
Artık kolonumuz unique biçimindedir ve içerisine gireceğimiz veri daha önceden girilmişse uyarı penceresiyle karşılaşacağız.
Son olarak TCNo kolonunu nchar(11) veri tipinde yazmamın sebebi bildiğiniz gibi 11 rakamdan oluşmaktadır ve bu oluşan rakam içerisinde harfler daha doğrusu Türkçe karakterler olmadığı için nvarchar yerine nchar'ı tercih ettik; ya da int tipinde de bu 11 rakamı tutabilirdik ancak böylesine büyük bir değeri sayısal tutmak yerine metin tipinde tutmak daha makul olacaktır.
Unique key ile ilgili bu makalemizde henüz örnek veremiyorum çünkü veritabanı tasarımlarımız bittiğinde SQL sorgularına geçeceğimiz gün konuyu daha rahat kavrayacağınızı umuyorum,şimdilik hoşçakalın esen kalın. :)
hocam lütfen derslerinize devam edin çok yararlı bilgi sunuyorsunuz. sizi takip ediyoruz. bakkal defterini yavaş yavaş geliştirerek güzel birşey ortaya çıkaracağınızı bekliyor şimdiden sabırsızlanıyoruz. iyi çalışmalar
Merhabalar Kamil Bey, Adım adım oluşturduğumuz bu veritabanımız üzerinden ilerleyen derslerimizde de faydalanıp ileri SQL uygulamaları gerçekleştireceğiz.
Merhaba; Hocam Kamil Bey'in de rica ettiği üzere; ben de derslerinize devam etmenizi diliyorum. İlgi ile makalelerinizi takip ediyorum. Bu zamanda sizin gibi bilgileri ile, biz bu işlere yeni başlayan öğrencilere yardımcı olabilen erdemli insanlar bulamamaktayız. Tekrar verdiğiniz yararlı bilgiler için teşekkür ediyorum.
devamı nezaman geliyor
Bu hafta içerisinde yeni bir sql makalesi yazacağım,teşekkürler ilginize.