SQL ve İlişkisel Cebir
İlişkisel cebir, ilişkisel modele resmi semantiklerini kazandıran, ilişkiler üzerinde işlem yapan operatörlerin prosedürel bir dilidir; SQL ise veritabanı sistemlerinin cebir benzeri yürütme planlarına derlediği standart bildirimsel dildir.
Tanım
İlişkisel cebir, girdi olarak ilişkileri alan ve çıktı olarak ilişkileri üreten bir operatör kümesidir; SQL (Yapısal Sorgu Dili), ilişkisel veritabanlarını tanımlamak, sorgulamak ve güncellemek için kullanılan ISO standartlı bildirimsel bir dildir ve sorgu semantikleri, gruplama, toplama ve torba (bag) semantikleriyle genişletilmiş ilişkisel cebire yakından karşılık gelmektedir.
Kapsam
Bu konu, ilişkisel cebirin operatörlerini — seçim (selection), izdüşüm (projection), Kartezyen çarpım (Cartesian product), birleştirme (join), birleşim (union), fark (difference) ve yeniden adlandırma (renaming) — ve bunların sorgular ile sorgu optimizasyonu için resmi bir temel olarak kullanımını kapsamaktadır. SQL'in çekirdeğini oluşturan SELECT-FROM-WHERE sorguları, birleştirmeler (joins), gruplama ve toplama (grouping and aggregation), alt sorgular (subqueries), küme işlemleri (set operations) ile veri tanımlama ve veri işleme ifadelerini, ayrıca SQL'in çoklu küme (multiset) semantiklerini ve boş değerler (nulls) için üç değerli mantığını ele almaktadır. Sorguların fiziksel olarak nasıl yürütüldüğü ve optimize edildiği (sorgu işleme ve optimizasyonunda ele alınmaktadır) bu kapsamın dışındadır.
Temel sorular
- İlişkisel cebirin ilkel ve türetilmiş operatörleri nelerdir?
- Bir SQL SELECT-FROM-WHERE sorgusu, ilişkisel cebir işlemlerine nasıl eşlenir?
- Gruplama ve toplama, temel cebiri nasıl genişletir?
- Boş değerler (nulls) ve üç değerli mantık, sorgu sonuçlarını nasıl etkiler?
- SQL neden küme semantiklerinden ziyade çoklu küme (bag) semantiklerini kullanır?
Anahtar kavramlar
- seçim, izdüşüm, birleştirme
- birleşim, fark, Kartezyen çarpım
- SELECT-FROM-WHERE
- gruplama ve toplama
- alt sorgular ve korelasyon
- küme ve çoklu küme işlemleri
- üç değerli mantık ve boş değerler
- veri tanımlama ve işleme dili
Temel kuramlar
- İlişkisel cebir operatörleri
- Seçim, izdüşüm, birleşim, küme farkı, Kartezyen çarpım ve yeniden adlandırma, birleştirme (join), kesişim (intersection) ve bölme (division) işlemlerinin türetildiği eksiksiz bir küme oluşturur; aralarındaki cebirsel özdeşlikler, sorgu yeniden yazma optimizasyonlarını haklı çıkarır.
- Bildirimsel sorgulama ve ilişkisel tamlık
- SQL, kullanıcıların veriyi nasıl alacaklarını değil, hangi veriyi istediklerini belirtmelerine olanak tanır; her ilişkisel cebir sorgusunu (ve daha fazlasını) ifade edebildiği için ilişkisel olarak tamdır ve sistem verimli bir yürütme stratejisi seçmekte serbesttir.
- Boş değerler için üç değerli mantık
- SQL, boş değerleri işlemek için doğru, yanlış ve bilinmeyen (unknown) üzerinde koşulları değerlendirir; bu durum karşılaştırmaları, WHERE filtrelemesini ve toplamayı etkiler ve ince sorgu hatalarının yaygın bir kaynağıdır.
Klinik önem
SQL, bilişimde en yaygın kullanılan dillerden biridir: iş uygulamalarına, analitiklere ve web hizmetlerine güç veren hemen hemen her ilişkisel veritabanının arayüzüdür ve ilişkisel cebir, sorgu iyileştiricilerin (query optimizers) bu SQL sorgularını verimli bir şekilde yeniden yazmak ve planlamak için kullandığı teorik bir araçtır.
Tarihçe
Codd'un 1970 tarihli makalesi ilişkisel cebir ve kalkülüsü tanıtmıştır. IBM'in System R projesinde Chamberlin ve Boyce, daha erişilebilir bir bildirimsel dil olarak SEQUEL'i (1974) tasarlamış, bu dil daha sonra SQL olarak yeniden adlandırılmıştır. SQL, 1986'dan itibaren ANSI ve ISO tarafından standartlaştırılmış ve ilişkisel cebire dayanmaya devam ederken ardışık standartlarla genişletilmiştir.
Öne çıkan isimler
- Edgar F. Codd
- Donald D. Chamberlin
- Raymond F. Boyce
İlgili konular
Temel eserler
- codd1970
- chamberlin1974
- garciamolina2008
Sıkça sorulan sorular
- SQL tam olarak ilişkisel cebir midir?
- Hayır. SQL, ilişkisel cebir ve kalkülüse dayanmakla birlikte temel noktalarda farklılık gösterir: çoklu küme (bag) semantiklerini kullandığı için tekrarlayan değerler içerebilir, gruplama ve toplama özelliklerini ekler, üç değerli mantıkla boş değerleri destekler ve saf cebirin sahip olmadığı prosedürel ve veri tanımlama özelliklerini içerir.
- Uygulamada SQL kullanılıyorken neden ilişkisel cebir öğrenilmelidir?
- İlişkisel cebir, sorgu optimizasyonunun arkasındaki resmi modeldir: veritabanı sistemleri SQL'i cebir benzeri ifadelere dönüştürür ve verimli planlar bulmak için eşdeğerlik kurallarını uygular. Cebiri anlamak, belirli sorgu yeniden yazmalarının neden geçerli olduğunu açıklar ve sorgu eşdeğerliği ile maliyeti hakkında akıl yürütmeye yardımcı olur.