İlişkisel Cebir’in Temelleri

Gamze Yılan
4 min readNov 30, 2020

--

Veriyi modellemek ve üzerinde arama, filtreleme işlemleri yapmak için pek çok metot var. SQL’i duymuşsunuzdur, peki ya ilişkisel cebir? İlk defa öğreneceklerin de kolaylıkla anlayabileceği şekilde hazırladığım bu yazımı deneyin, ve belki iyice öğrenene kadar sık sık geri dönüp kontrol edebilmek için favorilerinize kaydedin!

İlişkisel Veritabanı Nedir?

Veri öğeleri arasında önceden belirlenmiş bir ilişkinin olduğu veritabanlarına ilişkisel veritabanı denir. Bir ilişkisel veritabanında her bir satır bir nesne ya da kişiyi temsil ederken, her bir sütun o nesne ya da kişinin bir özelliğini temsil etmektedir.

İlişkisel veritabanları ile çalışırken belirli bir terminoloji ile çalışacağız. Örneğin bu noktadan sonra sütunların her biri özellik anlamına gelen attribute, satırların her biri öğe dizisi anlamına gelen tuple kelimesi ile anılacak. Eğer iki tuple birbirinin aynısı ise buna çift anlamına gelen duplicate denecek.

Anahtar anlamına gelen key kelimesi, bir tabloyu belirten bir attribute için kullanılır. Keyler bir tuple’ı işaretlemek, tuple’ları filtrelemek, tablodaki veriye kolaylıkla ulaşmak ya da birden fazla tablodaki farklı tuple’ları birbiriyle ilişkilendirmek için kullanılabilir. Pek çok key çeşidir vardır:

  • Superkey: Bir Superkey, her bir ilişkide benzeri olmayan tek bir tuple‘ı temsilen kullanılan bir keydir. Örneğin tablonuz müşteri isimleri, müşteri adresleri ve müşteri telefon numaralarından oluşuyor diyelim. Bir müşteride hem isim, hem adres hem de numara attributeları aynı olamayacağından bu kombinasyon bize benzersiz sonuçlar verecektir. Dolayısı ile bu kombinasyondaki her bir tuple bir superkey olabilir.
  • Candidate key: Bünyesinde başka superkey barındırmayan her bir superkey aynı zamanda bir candidate keydir. Superkeyde kullandığımız tabloda her bir tuple bir superkey olmasına rağmen, o tuple içindeki müşteri telefon numaraları da benzersiz olabileceğinden birer superkey olabilir örneğin. Bu durumda müşterinin ismini, adresini ve telefon numarasını içeren tuple bir candidate key olmazken müşterinin telefon numarasını içeren tuple bir candidate key olabilir.
  • Primary key: Veriyi basitçe kontrol edebilmek için bizim seçtiğimiz herhangi bir candidate key, bir primary key olabilir.

İlişkisel cebir nedir?

Her veri tabanı türü, veritabanında tutula veriye ulaşmak ve içinde arama/filtreleme yapabilmek için bir query language (QL, sorgulama dili) tanımlamak zorundadır. Query Language için SQL, CQL ve ilişkisel cebir cebir gibi birden fazla seçenek vardır.

İlişkisel cebirde veri çektiğimiz veritabanına girdi anlamında input, arama sonucunda elde ettiğimiz sonuçları tutan geçici veritabanına çıktı anlamında output denir. Girdi de çıktı da birer ilişkidir. İlişkisel cebirde kullandığımız işlemler matematiktekilerle oldukça benzerdir.

İlişkisel cebir otomatik olarak bütün bir veri tablosu ile çalışmaktadır, dolayısı ile SQL gibi başka sorgulama dillerinde olduğu gibi bir veri nesnesinden diğerine teker teker geçmek için iterasyonlar ya da döngüler (loop) kullanmamıza gerek yoktur.

İşlemler

İlişkisel cebirde de diğer tüm sorgulama dillerinde olduğu gibi gerçekleştirebileceğimiz pek çok operasyon bulunmaktadır. Şimdilik, ilişkiel cebirde gerçekleştirebileceğimiz en temel bazı işlemlerden bahsedelim.

  • Seçme operatörü (σ): Bu operatör kullanılarak belirli kriterlete uyan sonuçlar veri tablosundan seçilip getirilir.
  • Projeksiyon operatörü (∏): Bu operatör ile bir ya da daha fazla attribute (sütun) seçilip getirilir. Ancak şunu unutmayın, aynı sütun içinde duplicate varsa bunların her biri yalnızca birer defa ekrana basılır.
  • Birleşme operatörü (∪): İki veya daha fazla farklı tablodan aynı isme sahip bir attribute birleştirilmek istenirse bu operatör kullanılır. Tıpkı kümelerdeki gibi çalışır ve yine duplicate olması durumunda çıktı tablosunda her biri yalnızca bir defa basılır.
  • Fark operatörü (−): Bu operatörün sağındaki tablodaki her bir tuple, solundakinde de varsa ondan çıkarılır. Soldaki tabloda kalan her bir tuple ekrana çıktı olarak basılır. Kümelerdeki fark operatörüne benzemektedir.
  • Yeniden adlandırma operatörü (ρ): Veri tablosu üzerinde bir işlem yapıldığında çıktı çoğunlukla isimsiz olur. Bu çıktı tablosuna bir isim vermek için bu operatör kullanılır. Operatör, çıktı ile işlem yapılmasını kolaylaştırır.
  • Kesişim (∩): Bu operatör tıpkı matematikteki gibi iki veritabanındaki ortak tupleları listeler.
  • İç Birleşme (⋈): İki veritabanını karşılaştıran bu operator veritabanlarındaki ortak attributeları bulur ve bunları kombinleyerek üçüncü bir veritabanı oluşturur.
  • Sol dış birleşme (⟕): Bu operatör yine iki tabloyu karşılaştırır, iç birleşmedeki gibi ortak attributeları bulup kombinler. Ancak bu çıktıya soldaki parametrede kullanılan veritabanının tüm tuplelarını ekler. Sağda karşılığı olmayan tuplelar için ortak attribute kısmı boş anlamında Null bırakılır.
  • Sağ dış birleşme (): Bu operatör yine iki tabloyu karşılaştırır, iç birleşmedeki gibi ortak attributeları bulup kombinler. Ancak bu çıktıya sağdaki parametrede kullanılan veritabanının tüm tuplelarını ekler. Solda karşılığı olmayan tuplelar için ortak attribute kısmı boş anlamında Null bırakılır.
  • Full dış birleşme (⟗): İki veritabanını tamamen birleştirir. Ortak attributelar ve tuplelar birer defa yazılır. Her bir tuple için eğer diğerinde karşılığı yoksa o attribute null bırakılır.
  • Bölme (÷): Kümelerdeki bölmeye benzer çalışır. Parametre olarak iki veritabanı alır. İlk veritabanındaki tupleları kontroleder, eğer ikinci veritabanında da varsa bunları ekrana basar.
  • Bütün fonksiyonlar: Exceldekilere benzer olarak veri üzerinde işlem yapabileceğimiz beş fonksiyon bulunmaktadır: ortalama anlamında avg, minimum değeri veren min, maksimum değeri veren max, değerlerin toplamını veren sum, kaç değer olduğunu saymak için count.

Not: Tıpkı matematikteki işlemler gibi bu operatörler de birlikte kullanılabilir.

İlişkisel Cebir ile Veritabanı Üzerinde Değişiklikler Yapma

  • Silme: Fark işlemi gerçekleştirildikten sonra oluşan yeni veritabanı, bir ok kullanılarak eski veritabanının üzerine konur.
  • Ekleme: Birleştirme işlemi gerçekleştirildikten sonra oluşan yeni veritabanı, bir ok kullanılarak eski veritabanının üzerine konur.
  • Güncelleme: İstenen her bir attribute üzerinde yukarıdaki operatörleri kullanılarak değişiklikler yapıldıktan sonra oluşan yeni veritabanı, bir ok yardımı ile eski veritabanının üzerine konur.

--

--

Gamze Yılan

Embark on my journey to becoming the world’s leading Software and Systems Engineer.