Küme teorisi ve predicate mantığı ikisi birlikte ilişkisel veri tabanı modeli ve SQL Server için matematiksel temel oluşturmaktadır. Terimi belki hiç kullanmamış olsanız bile muhtemelen kümeler teorisi ile ilgili makul bir deneyiminiz vardır. Bu bölümde predicate mantığını ve SQL Server sorgularında uygulanışını göreceğiz.

Predicate Logic ve SQL Server

Teoride predicate mantığı, doğru veya yanlış döndüren mantıksal testleri ifade etmek amacıyla kullanılan bir yapıdır. Diğer bir ifadeyle bir predicate, doğru veya yanlış bir değere sahip bir özellik veya ifadedir. Mesela buna Boolean dendiğini duymuş olabilirsiniz.

Kendi başlarına ele alındığında predicate’ler karşılaştırma yaparak sonuçları doğru veya yanlış olarak ifade ederler. Ancak, T-SQL’de predicate’ler tek başına bulunmazlar. Genellikle satırları filtrelemek için WHERE deyiminde sonucu doğru veya yanlış olarak belirlemek için gömülü halde bulunur, bir değerle eşleştirme yapmak için CASE ifadesinde bulunur, ya da bir tablo tanımlanırken belirtilen sütun değerinin alabileceği değer aralığını düzenleyen bir kısıtlama (constraint) şeklinde bulunur.

Predicate’in resmi tanımında bilinmeyen veya eksik değerlerin nasıl ele alınacağına değinilmemiştir, unutulmuştur. Bir veri tabanında eksik değerlere izin verilmiyor ise (kısıtlamalar veya varsayılan değer atamaları yoluyla yapılabilir), bu çok da önemli bir ihmal olarak gözükmemektedir. Fakat gerçek dünyada eksik veya bilinmeyen değerleri hesaba katmanız gerekmektedir. Predicate alabilecek değerler hakkındaki anlayışınızı iki olası sonuçtan (doğru veya yanlış) üçe, yani doğru, yanlış ve bilinmeyene genişletmeniz gerekmektedir.

Bir sonraki bölümde, NULL değerlerin eksik veriler için kullanılıyor olmasını tartışacağız.

SQL Server Sorgularında Predicate’lerin Uygulanması

Görüldüğü üzere predicate’leri kullanma yeteneği, karşılaştırmaları doğru, yanlış veya bilinmeyen olarak ifade etmek ve böylece etkili sorgular yazmak için çok önemlidir. Predicate’ler sorgularda genellikle aşağıdaki işlemlerde kullanılır:

  • Verileri filtrelemede (WHERE ve HAVING ifadelerinde).
  • CASE ifadelerindeki koşullu mantık işlemlerinde.
  • Tabloları birleştirirken (ON filtresiyle).
  • Alt sorgu tanımlarken (örneğin EXISTS testlerinde).

Ek olarak predicate’ler, SELECT ifadelerinin dışında, sınırlama işlemlerinde kullanılan CHECK ifadesinde ve akış kontrolü sağlayan IF ifadesinde gibi diğer kullanım yerleri de vardır.

Matematikte, sadece var olan değerler hesaba katılır, bu sebeple predicate’ler, yalnızca doğru veya yanlış değerlerle sonuçlanabilir. Ancak veri tabanlarında eksik değerleri de hesaba katmak gerekir. Sorgu mantığını tasarlarken bu üç olası sonucu da hesaba kattığınızdan emin olmalısınız. İlerleyen bölümlerde WHERE ifadesinde üç değerli mantığın nasıl kullanıldığını göreceksiniz.

Kaynak: Predicates