İlişkisel Cebir

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 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.

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) (σ)  

Örnek

 σyaş>15 (Tablo1)

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

Yansıtma (Projection) (π)

Örnek 1

 πisim,soyisim  (Tablo1)

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

Örnek 2

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

İsim    Soyisim
Ali   Şanlı
Dilek    Pınar

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

Ö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)  (χ)

Ö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) (⋈c)

  R ⋈c S  =  σc(R χ S)

Örnek

Tablo1 ⋈(Tablo1.yaş > Tablo2.yaş) 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) (⋈e)

Örnek

 Tablo1 ⋈isim 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.

Ö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...

Çiğdem Avcı
- 2 -


Yazarın Üslubunu Beğendiniz mi?:
Yazının İçeriği Yeterli mi?:
Konu İlginizi Çekti mi?:

Creative Commons License

Bu derginin içeriği, Creative Commons lisansı ile korunmaktadır.
Kaynak göstermek ve link vermek şartıyla ticari olmayan amaçlarla yazılarımızı kullanabilirsiniz.

©2007-2008 ODTÜ Bilgisayar Topluluğu