Merhaba arkadaşlar, bu ayki yazımda sizi ilişkisel cebir hakkında az da olsa fikir sahibi yapacağım:)

Bir veri tabanı yönetim sistemi oluşturmak için bu sistemin davranışlarını belirleyen bir kısım kurallara ihtiyacımız vardır. Örneğin, veritabanı yönetim sisteminde öyle ifadeler olmalıdır ki, kullanıcılar bir ilişkinin satırına veri aktardıklarında, bu aktarım kullanıcının istediği etkiyi yapsın. Bu etkiyi belirlemenin bir yolu veri tabanı yönetim sisteminin nasıl işleyeceğini anlatan bir makale yazmaktır ki kelimeler yeterince net ve açık olmayacaktır, yanlış anlaşılabilecektir. Bunun yerine veritabanları genellikle ilişkisel cebir ( relational algebra ) kullanılarak tanımlanır.

İlişkisel cebir;

  • İlişkisel veritabanının nasıl çalışacağına dair kurallara uygun tanımdır.
  • Veritabanında verinin nasıl saklandığına dair bir ara yüzdür.
  • SQL işlemlerini destekleyen matematiktir.

İlişkisel cebirdeki operatörler SQL operatörleri ile aynı isimlere sahip olsalar bile, aynı olmak zorunda değildirler. Mesela SELECT ifadesi SQL’de de ilişkisel cebirde de vardır. Fakat kullanımları aynı değildir. Veri tabanı yönetim sistemi kullanıcı her ne yazarsa, yazılanı veritabanına uygulamadan önce alıp, ilişkisel cebir işlemlerine çevirmelidir.

  • İlişkisel cebirde temel işlemler:

    • Seçim (Selection)(σ): İlişkinin satırlarının bir alt kümesini seçer.
    • Yansıtma (Projection)(π): İlişkinin istenmeyen sütunlarını siler.
    • Kartezyen çarpım (Cross-product)(χ): İki ilişkiyi birleştirmeye yarar.
    • Küme farkı (Set-difference)(-): Birinci ilişkide bulunup ikinci ilişkide bulunmayan çoklular.
    • Birleşim (Union)(∪): Birinci ve ikinci ilişkide bulunan çoklular.
  • Diğer işlemler:

    • Kesişim (intersection), bitişme (join), bölme(division), yeniden adlandırma (renaming): gerekli değil fakat çok kullanışlıdır.
    • Her işlem bir ilişki geri verdiğinden, işlemler birleşik olabilir. Dolayısıyla cebir kapalılık özelliğine sahiptir.

Elimizdeki aşağıdaki ilişkiler bulunsun ve örneklerimizi bunlar üzerinden verelim: Tablo1:

**No   İsim      Soyisim     Yaş     Meslek**
1     Ayşe     Koşar        12      öğrenci
2     Ali      Şanlı        23      öğrenci
3     Dilek    Pınar        18      öğrenci

Tablo2:

**No   İsim      Soyisim    Yaş     Meslek**
1     Ayşe      Koşar     12     öğrenci
2     Murat     Şanlı     27     avukat
3     Dilek     Pınar     18     öğrenci

Seçim (Selection) (σ)

  • Seçim şartını gerçekleyen satırları seçer.
  • Sonuçta tekrarlar yoktur.
  • Sonucun şeması girdi ilişkisinin şeması ile aynıdır.
  • Sonuç başka bir ilişkisel cebir işlemi için girdi olarak kullanılabilir.

Örnek

σ<sub>yaş>15</sub> (Tablo1)

**No    İsim      Soyisim     Yaş     Meslek**
2      Ali      Şanlı       23     öğrenci
3     Dilek     Pınar       18     öğrenci

Yansıtma (Projection) (π)

  • Yansıtma listesinde olmayan özellikleri siler.
  • Sonuç şeması tam olarak yansıtma listesinde olan özellikleri, girdi olan ilişkideki isimlerle, içerir.
  • Yansıtma işlemi tekrarları elemelidir.

    • Not: gerçek hayatta tekrarlar kullanıcı açıkça istemedikten sonra elenmez.

Örnek 1

π<sub>isim,soyisim</sub> (Tablo1)

**Isim    Soyisim**
Ayşe    Koşar
Ali     Şanlı
Dilek   Pınar

Örnek 2

π<sub>isim,soyisim</sub> ( σ<sub>yaş>15</sub> (Tablo1) )

**İsim    Soyisim**
Ali      Şanlı
Dilek    Pınar

Birleşim (Union), Kesişim (Intersection), Küme Farkı (Set-Difference)

  • Bütün bu işlemler girdi olarak iki ilişki alır, ki bu iki ilişki birleşime uyumlu olmalıdır, bu da demek oluyor ki:

    • Aynı sayıda alana sahip olmalı.
    • Karşılıklı alanlar aynı tipte olmalılar.

Örnek

Tablo1 ∪ Tablo2

**No     Isim     Soyisim   Yaş     Meslek**
1      Ayşe     Koşar     12     Öğrenci
2       Ali     Şanlı     23     Öğrenci
3      Dilek    Pınar     18     Öğrenci
2      Murat    Şanlı     27     Avukat

Örnek 2

Tablo1 - Tablo2

**No    İsim    Soyisim    Yaş    Meslek**
2      Ali    Şanlı      23    Öğrenci

Örnek 3

Tablo1 ∩ Tablo2

**No    İsim    Soyisim    Yaş    Meslek**
1     Ayşe      Koşar     12    Öğrenci
3     Dilek    Pınar      18    Öğrenci

Kartezyen çarpım ( Cross-product) (χ)

  • S1 χ R1 : S1 in her satırı R1 in herbir satırıyla eşleşir.
  • Sonucun şeması S1 ve R1 deki herbir alana karşılık bir alan içerir.

Örnek:

Yeniden adlandırma işlemi:

ρ( C( 1→no1, 2→isim1, 3→soyisim1, 4→yaş1, 5→meslek1), Tablo1χTablo2 )

**No1    İsim1    Soyisim1    Yaş1     Meslek1    No     İsim     Soyisim    Yaş    Meslek**
1       Ayşe     Koşar        12     öğrenci     1     Ayşe      Koşar     12     öğrenci
2        Ali     Şanlı        23     öğrenci     1     Ayşe      Koşar     12     öğrenci
3      Dilek     Pınar        18     öğrenci     1     Ayşe      Koşar     12     öğrenci
1      Ayşe      Koşar        12     öğrenci     2     Murat     Şanlı     27     avukat
2       Ali      Şanlı        23     öğrenci     2     Murat     Şanlı     27     avukat
3      Dilek     Pınar        18     öğrenci     2     Murat     Şanlı     27     avukat
1      Ayşe      Koşar        12     öğrenci     3     Dilek     Pınar     18     öğrenci
2       Ali      Şanlı        23     öğrenci     3     Dilek     Pınar     18     öğrenci
3     Dilek      Pınar        18     öğrenci     3     Dilek     Pınar     18     öğrenci

Şartlı Bitiştirme (Conditional Join) (⋈<sub>c</sub>)

R ⋈<sub>c</sub> S = σ<sub>c</sub>(R χ S)

  • Sonuç şeması kartezyen çarpımdaki gibidir.
  • Kartezyen çarpımdan daha az çoklu içermesi daha verimli bir biçimde hesaplamayı sağlar.
  • Teta bitiştirmesi diye de adlandırılır.

Örnek

Tablo1 ⋈<sub>(Tablo1.yaş > Tablo2.yaş)</sub> Tablo2

**(no)    (isim)    (soy isim)    (yaş)    (meslek)    (no)    (isim)    (soy isim)    (yaş)    (me.)** 2        Ali        Şanlı          23        öğrenci      1      Ayşe      Koşar         12        Ö.
3       Dilek       Pınar          18        öğrenci      1      Ayşe      Koşar         12        Ö.
2        Ali        Şanlı          23        öğrenci      3      Dilek     Pınar         28        Ö.

Eşit Bitiştirme (Equijoin) (⋈<sub>e</sub>)

  • e’nin herhangi bir eşitliğe karşılık geldiği özel bir şartlı bitiştirmedir.
  • Sonucun şeması kartezyen çarpımdakine benzerdir, sadece eşitliğin belirlendiği alanın tek kopyası vardır.

Örnek

Tablo1 ⋈<sub>isim</sub> Tablo2

**İsim    (no)    (soyisim)    (yaş)    (meslek)    (no)    (soyisim)    (yaş)    (meslek)**
Ayşe     1       Koşar        12       Öğrenci      1       Koşar        12       Öğrenci
Dilek    3       Pınar        18       Öğrenci      3       Pınar        18       Öğrenci

Doğal bitiştirme(Natural Join): Her ortak alanda eşit bitiştirme yapılarak bulunur.

Örnek:

Tablo1 ⋈ Tablo2

**No   İsim    Soyisim    Yaş    Meslek**
1    Ayşe    Koşar      12    Öğrenci
3    Dilek   Pınar      18    Öğrenci

Bölme (Division)

Birincil işlem olarak kabul edilmez, fakat aşağıdaki gibi bir sorguyu açıklamak için kullanılır:

“Tüm elbiselerden almış bayanları bulun.”

A’nın 2 x ve y isimli alanı, B’nin yalnız y isimli bir alanı olsun.

  • Eğer B deki y kümesi A’daki bir x ile ilişkilendirilmişse ve A x ile ilişkili bir şekilde B deki tüm y’leri kapsıyorsa, bu x A/B kümesi içersindedir.
  • Genellikle, x ve y herhangi iki alan listesi olabilir; y B’deki, x ve y ise A’daki alanlardır.

Örnek

Tablo3

**İsim    Elbise**
Ayşe    Sarı
Dilek   Mor
Ayşe    Yeşil
Dilek   Kırmızı
Fatma   Lacivert
Ayşe    Lacivert
Ayşe    Mor
Ayşe    Kırmızı

Tablo4

**Elbise**
Sarı
Mor
Yeşil
Kırmızı
Lacivert

Tablo3 / Tablo4

**İsim** Ayşe

Umarım yazım ilginizi çekmiştir. Bilgisayar bilimine ilginizin devamı dileğiyle...