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