Hakkında Künye

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

σyaş>15 (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

π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)

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

R ⋈c S = σc(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 ⋈(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)

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

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



Çiğdem Avcı
- 2 -