İlişkisel Cebir(Relational Algebra)
Muhammad ibn Musa al-Khwarizmi Al-jabr kitabının yazarıdır. Kitabın başlığı Al-jabr (Cebir) Algebra’ya ismini vermiştir. İlişkisel Cebir genel anlamıyla ilişkisel veritabanının nasıl çalışacağına dair kurallara uygun tanımdır. Veritabanında verinin nasıl saklandığına dair bir arayüzdür. SQL işlemlerini destekleyen matematiktir.
İlişkisel cebirdeki operatörler SQL operatörleri ile aynı isimlere sahip 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.
İşlemler (Operations)
Bir İlişkili İşlemler (unary operations)
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.
Yeniden Adlandırma (Rename)(ρ): İlişkinin istenilen sütunlarının adını değiştirir.
Küme Teorisi İşlemleri
Küme farkı (Set-difference)(-): Birinci ilişkide bulunup ikinci ilişkide bulunmayan çoklular.
Birleşim (Union)(∪): Birinci ve ikinci ilişkide bulunan çoklular.
Kesişim (intersection)(∩): Birinci ve ikinci ilişkide ortak bulunan çoklular.
Kartezyen çarpım (Cross-product)(x): İki ilişkiyi birleştirmeye yarar.
İkili İşlemler (binary operations)
Bitişme (join)
Bölme(division)
Diğer İşlemler
Aggregate Functions (Sum, Count, Avg, Min, Max)
Aşağıdaki ilişkiler üzerinden örneklerimizi verelim:
Örnek Veritabanı İçerisindeki Kayıtlar |
Örnek Veritabanı İlişkileri |
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.
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.
Yeniden Adlandırma (Rename)(ρ)
İlişki veya ilişki özniteliklerinin adlarını değiştirmekte kullanılır.
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.
1. Aynı sayıda alana sahip olmalıdır.
2. Karşılıklı alanlar aynı tipte olmalıdır.
1. Aynı sayıda alana sahip olmalıdır.
2. Karşılıklı alanlar aynı tipte olmalıdır.
Örnek Veritabanı İçerisindeki Kayıtlar |
Birleşim (Union)(U)
Kesişim (Intersection) (∩)
Küme Farkı (Set-Difference)(-)
Union ve intersection yer değiştirme özelliği vardır.
R ∪ S = S ∪ R
R ∩ S = S ∩ R
Union ve intersection birleşme özelliği vardır.
R ∪ (S ∪ T) = (R ∪ S) ∪ T
(R ∩ S) ∩ T = R ∩ (S ∩ T)
Set difference işleminin yer değiştirme özelliği yoktur.
R – S ≠ S – R
Kartezyen Çarpım (Cross-product) (x)
S1 x 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.
Bitiştirme (Join) (⋈)
Kartezyen çarpım ve seçim işlemi birlikte kullanılırsa bitiştirme işlemi yapılmış olur.
Yani Join belirtilen iki işlemi birleştiren özel bir işlemdir.
Şartlı Bitiştirme (Conditional Join) (⋈c)
R ⋈c S = σc(R x 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.
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.
Doğal Bitiştirme (Natural join) (*)
Equijoin’deki aynı isimli öznitelik karşılaştırmalarını tekrar tekrar yazmamak için kullanılan işlemdir.
İki ilişkideki aynı isimli özniteliklerin eşitliğini karşılaştırır.
Bölme (Division)(÷)
R’nin 2 A ve B isimli alanı, S’nin yalnız A isimli bir alanı olsun.
Eğer S' deki A kümesi R’deki bir A ile ilişkilendirilmişse ve R A ile ilişkili bir şekilde S deki tüm A’ları kapsıyorsa, bu A R/S kümesi içerisindedir.
Veritabanı Temelleri(Database Basics)
SQL
Geçmişi(SQL History)
1970 yılında, Dr. EF Codd "Büyük Paylaşılan
Veri Bankaları İçin İlişkisel Veri Modeli” yayınladı. Codd'un makalesinin
yayınlanmasından kısa bir süre sonra IBM, ilişkisel bir veritabanı oluşturmak
için çalışmaya başladı. 1979 ve 1982 arasında, Oracle (sonra Relational
Software, Inc.), Relational Technology, Inc. (daha sonra Computer Associates
tarafından satın alındı) ve IBM, ticari ilişkisel veritabanlarını ortaya koydu
ve 1986'da hepsi veri sorgulama dili olarak SQL kullanıyorlardı.
1986'da Amerikan Ulusal Standartlar Enstitüsü
(ANSI) SQL standardize etti. Bu standart birkaç yılda bir
güncellenir. Standart SQL bazen ANSI SQL olarak adlandırılır. Tüm
büyük ilişkisel veritabanları bu standardı destekler, ancak her birinin kendi
özel uzantıları vardır. Aksi belirtilmedikçe, bu derste öğretilen SQL
standart ANSI SQL'dir.
SQL açılımı Structured Query Language
İlişkisel
Veritabanları(Relational Databases)
İlişkisel veritabanı en basit haliyle veri
depolamak için kullanılan bir dizi tablodur. Her tablonun benzersiz bir
adı vardır ve ortak değerler aracılığıyla veritabanındaki bir veya daha fazla
tabloyla ilişkili olabilir.
Tablolar(Tables):
Veritabanındaki
bir tablo, satır ve sütun koleksiyonudur. Tablolar varlık veya ilişki
olarak da bilinir.
Satırlar(Rows):
Bir
satır, tablodaki tek bir öğeye veya kayda ait verileri içerir. Satırlar,
kayıt veya tuples olarak da bilinir.
Sütunlar(Columns):
Sütun,
tablodaki kayıtların belirli bir özelliğini temsil eden veriler içerir. Sütunlar,
alanlar veya özellikler olarak da bilinir.
İlişkiler(Relations):
İlişki,
iki tablo arasındaki bağlantıdır (yani, ilişkiler). İlişkiler, bir tabloda
başka bir tabloda belirli bir kayda ait verileri bulmayı mümkün kılar.
Veri
Tipleri(Data Types): Bir tablonun sütunlarının her birinde,
o sütunda bulunabilecek veri türünü belirten tanımlı bir veri türü bulunur.
Birincil
Anahtarlar(Primary Key): Tabloların çoğunda, kayıtları
tanımlamak için kullanılabilecek bir sütun veya sütun grubu bulunur.
Yabancı
Anahtarlar(Foreign Key): Yabancı anahtar sütunları, diğer
tablolardaki birincil anahtar sütunlarına bağlanan ve böylece bir ilişki
oluşturan sütunlardır.
İlişkisel
Veritabanı Yönetim Sistemi(Relational Database Management System): Genellikle
veritabanı olarak adlandırılan ilişkisel veritabanı yönetim sistemi (RDBMS),
veritabanı oluşturmak, değiştirmek ve yönetmek için kullanılan bir yazılımdır.
SQL
İfadeleri(SQL Statements)
Veritabanı
İşleme Dili(Database Manipulation Language)(DML)
DML ifadeleri, varolan bir veritabanındaki
verilerle çalışmak için kullanılır. En yaygın DML ifadeleri şunlardır:
·
SELECT
·
INSERT
·
UPDATE
·
DELETE
Veritabanı
Tanımlama Dili(Database Definition Language)(DDL)
DDL deyimleri bir veritabanındaki nesneleri
yapılandırmak için kullanılır. En yaygın DDL deyimleri şunlardır:
·
CREATE
·
ALTER
·
DROP
Veritabanı
Kontrol Dili(Database Control Language)(DCL)
DCL deyimleri veritabanı yönetimi için
kullanılır. En yaygın DCL ifadeleri şunlardır:
·
GRANT
·
DENY (SQL Server Only)
·
REVOKE
Bir sonraki yazımda görüşmek üzere...