Bu bölümde, ilişkisel veri tabanlarının matematiksel dayanaklarından biri olan kümeler teorisinin kavramlarını tanıyacağız ve bu yolla SQL Server’da sorgulama yaparken düşüncelerinizi uygulamanıza yardımcı olacağız.

Kümeler Teorisi ve SQL Server

Kümeler teorisi, ilişkisel modelin matematiksel temellerinden biri olmakla beraber ve SQL Server ile çalışmak için en gerekli şeylerden biridir. T-SQL diliyle sorgu yazarken kümeleri kullanmadan da ilerleme kaydedebilmenize rağmen bazı sorguları iyi performans gösteren hâle getirme ve tek bir ifadede bunu yapma konusunda zorluk yaşayabilirsiniz.

Bu yazıyla sizin “kümeler halinde düşünmeye” başlamanıza ve kümelerin doğasını anlayabilmeniz için gerekli ortamı hazırlayacağız. Böylelikle aşağıdakiler hafızanıza daha iyi oturmuş olacak:

  • T-SQL’de set (küme) tabanlı ifadelerden yararlanabilmek.
  • Sorgu sonucunun neden sıraya konması gerektiğini anlamak.
  • Kümelere dayalı ve declarative yaklaşımın SQL Server ile en iyi şekilde çalıştığını anlayacaksınız.

Matematiğin derinlerine dalmadan, kümeleri “bir bütün olarak kabul edilen kesin, farklı nesneler topluluğu” şeklinde tanımlayabiliriz. SQL Server veri tabanlarına uygulanan terimlerle, aynı türdeki sıfır veya daha fazla üyeyi içeren bir kümeyi tek bir birim (tablo gibi) olarak düşünebilirsiniz. Örneğin bir Müşteri tablosu bir kümeyi temsil etmektedir. SELECT ifadesinin sonuçlarının aslında bir küme oluşturduğunu, alt sorgular ve tablo ifadeleri konularını öğrenirken daha iyi kavrayacaksınız.

Belirli T-SQL sorgu ifadeleri hakkında daha fazla bilgi edindikçe her zaman birimler yerine tüm kümeyi düşünmeniz önemli hâle gelecektir. Kümelerle çalışmak, işlemler açısında tek seferde birer birer düşünmek yerine “hep birden” şeklinde düşünmeyi gerektirir.

“Koleksiyon (küme)” terimini anladık. Bir sonraki kritik terimimiz: “benzersiz” terimidir. Bir kümenin tüm üyeleri benzersiz olmalıdır. SQL Server’da benzersizlik, genellikle bir primary key sütunu gibi key’ler kullanılarak uygulanır.

Ancak verinin alt kümeleriyle çalışmaya başladıktan sonra kümenin her üyesini benzersiz olarak nasıl adreslemeniz gerektiğini bilmek önemlidir.

Bu da bizi kümenin bir “bütün” olarak değerlendirilmesi olayına geri getiriyor. Tanınmış SQL dili yazarı Joe Celko, kümeleri temsil eden SQL nesnelerinin adlarının önüne zihinsel olarak “Set of all …” ifadesini eklemeyi önermektedir (örneğin “tüm müşterilerin kümesi” gibi). Böylelikle T-SQL kodu yazarken, bir anda tek bir elemanla değil, bir koleksiyonla çalıştığınızı hatırlamış olursunuz.

Kümeler teorisinden çıkarılan diğer önemli bir husus ise, bir kümede önceden tanımlanmış bir düzen yoktur. Sorgu sonucunda ögeler herhangi bir sırayla dönebilir. Bu sebeple kümedeki ögeleri sıraya koymak için bir şeylere ihtiyacımız olmaktadır. Sorgularda ise istenilen sonuçları belirli bir sıraya göre çekmek gerekiyorsa SELECT ifadesinde ORDER BY da kullanmak gereklidir. Sonraki bölümlerde ORDER BY hakkında daha fazla bilgi edineceksiniz.

 SQL Server Sorgularında Kümeler Kuramının Uygulanması

Kümeler konseptine dayanan veri tabanlarının temeli göz önüne alındığında verimli T-SQL sorguları yazarken dikkat etmemiz gereken birkaç adet husus bulunmaktadır:

  • Tüm küme üzerinde çalışın. Yani bir imleç kullanmak veya yinelemeli işlem çalıştırmak yerine tüm tablonun bir kerede sorgulanması demektir bu.
  • Declarative ve küme tabanlı işlemlerin olması gerekmektedir. SQL Server’a, döndürülmesini istediğiniz şeyin özelliklerini berlitin hızlıca gelsin.
  • Mümkünse unique identifier’lar gibi araçlarla ögeleri çektiğinizden emin olun. Örneğin, bir taraftan JOIN kullanıyorsanız diğer taraftan unique key’leri devreye sokun.
  • Kendi sıralama işlemlerinizi yapın, çünkü sonuç kümelerinin herhangi bir sırada döndürülmesi hiçbir zaman garanti değildir.