Veritabanı Sistemleri Dersi 3. Ünite Özet
İlişkisel Veritabanı Modeli
- Özet
- Sorularla Öğrenelim
Giriş
İlişkisel veritabanı modeli IBM’de araştırmacı olarak çalışan Dr. E. F. Codd tarafından geliştirilmiştir. İlişkisel veritabanı veriyi ilişkisel örnekler içinde depolar. İlişkisel örnekler veritabanı kullanıcıları tarafından tablolar olarak adlandırılır. Bir tablo içindeki kayıtların veya alanların fiziksel sırasının önemi yoktur. İlişkisel modelde tablolar arası ilişkiler bire-bir, bire-çok ve çoka-çok olarak sınıflandırılır. İki tablo arasındaki bir ilişki bir ortak alanın eşleşen değerleri üzerinden direk olarak kurulur. Kullanıcı veritabanındaki tablolar arasındaki ilişkileri biliyorsa veriye kolayca erişebilir. Veriye içinde bulunduğu tablolardan doğrudan ya da ilişkili tablolardan dolaylı olarak erişilebilir. İlişkisel veritabanında veriye Yapılandırılmış Sorgu Dili (Structured Query Language, SQL) ile erişilebilir. SQL, ilişkisel veritabanı oluşturma, düzenleneme, bakım ve sorgulama işlemlerinin yapılabildiği standart bir dildir.
İlişkisel Cebir
İlişkisel veritabanı modeli matematiğin iki dalı olan Küme teorisi ve birinci derece yüklem aritmetiğine dayanmaktadır. Modelin adı bile küme teorisindeki ilişki teriminden türetilmiştir. İlişkisel örnekler (tablolar) üzerine yapılacak işlemleri öğrenmeden önce verilen ilişkisel örneklerden yeni ilişkisel örnekler oluşturulmasını sağlayan ilişkisel cebir hakkında bilgi sahibi olunmalıdır. Geleneksel ilişkisel cebirde işlemler dört sınıfta toplanabilir.
- Tablolara uygulanılan genel küme işlemleri: birleşim (union, ∪), kesişim (intersection, ∩) ve fark (diference,-) işlemleridir.
- Bir tablodan parçalar getiren işlemler: seçim (selection, σ) bazı kayıtları elerken, yansıtma (projection, π) bazı alanları eler.
- İki tablonun kayıtlarını bitiştiren işlemler: Kartezyen çarpım (cross-production, x) birinci kümenin her satırı ikinci kümenin her bir satırıyla eşleşir. Şartlı Bitişme (Conditional Join, ⋈!) iki tablonun kartezyen çarpımı sonucunda verilen şarta uyan kayıtlar getirir. Doğal bitişme (Natural Join, ⋈) her ortak alanda eşit bitişme yapılarak bulunur. Bölme (Division, ÷) işlemi; eğer B tablosundaki y kümesi A tablosundaki bir x ile ilişkilendirilmişse ve A tablosundaki x ile ilişkili bir şekilde B tablosundaki tüm y’leri kapsıyorsa, bu x A÷B kümesi içerisindedir.
- Yeniden adlandırma (Renaming, ρ) tablolardaki kayıtları etkilemez ancak erişilen alanların veya tabloların adlarını kullanım sırasında değiştirir.
Birleşim: Birleşim işlemi iki tablodaki tüm kayıtları getirir. Tekrar eden kayıtlar elenir. R ∪ S olarak gösterilir.
Kesişim: Kesişim işlemi iki tablonun ortak kayıtlarını getirir. R ∩ S ile gösterilir.
Fark: Bu işlemde iki tablodan birincisinde olan ancak ikincisinde olmayan kayıtlar getirilir. R - S ile gösterilir.
Yansıtma: Yansıtma işlemi bir tablonun sadece seçilen alanlarından oluşan yeni bir tablo oluşturur. πa1,a2,...,an(R) ile gösterilir. İfadedeki a1, a2, ..., an R tablosundan seçilen alanları gösterir.
Seçim: Seçim işlemi verilen bir tablonun kayıtlarının alt kümesi olarak yeni bir tablo üretir. Getirilen alt küme verilen bir şarta göre seçilir. Seçim şartını gerçekleyen satırlar getirilir.
Kartezyen çarpım: İki tablonun alanlarının tüm olası eşleşmelerini getirir. Tablo1×Tablo2 ile gösterilir.
Şartlı bitişme: Sonuç şeması kartezyen çarpımdaki gibidir. İki tablonun Kartezyen çarpım sonucundan verilen şarta uygun olanlar getirilir. Teta bitişmesi diye de adlandırılır.
Doğal bitişme: Bitişme işleminin özel bir durumudur. Bu bitişme işleminde sonuç iki tablonun eşit bitişmede tüm ortak alanlarının kullanılmasıyla bulunur. İki tablo arasında en az bir alan ortak ise uygulanabilir.
Bölme: M(x,y) ve N(y) iki tablo olmak üzere M÷N işlemi alan değeri y’ ye eşit olan M tablosu içindeki (x) alan değerlerini verir.
Yeniden adlandırma: İlişkisel cebir işlemleri uygulanarak elde edilen kayıtların oluşturduğu tabloların alan adları değiştirilebilir. Yeniden adlandırma ρ(A1,A2,..,An)(Tablo1) ile ifade edilir.
İlişkisel cebir verilen bu basit işlemlerin yanı sıra, istenilen karmaşıklıkta yeni ifadelerin oluşturulmasına izin verir. Böylece karmaşık işlemler ya da karmaşık işlemler sonucunda gelen kümelerinde kullanıldığı yeni tablolar tanımlamak mümkündür. Bu basit işlemlerin yanı sıra ilişkisel cebirde ilave işlemler vardır.
İlişkisel Veritabanı Nesneleri ve Kavramlar
İVTYS ilişkisel veritabanı modelini esas alan yönetim yazılımıdır. İVTYS ilişkisel veritabanının yönetimini, veritabanı ile iletişimi sağlayan arayüzlerden oluşur. İVTYS’de veri tablo adı verilen veri nesnelerinde tutulur.
Tablolar, İlişkisel Örnek: İlişkisel modele göre veri tablolar içinde tutulur. Her bir tablo kayıtlar ve alanlardan oluşur. Tablolar veritabanının baş yapılarıdır ve her bir tablo tek ve özel bir temayı temsil eder. Verilen tablo içinde tutulan tema bir nesne veya hareket olabilir. Tablo içindeki tema bir nesne ise, bir kişi, bir yer gibi somut bir şey temsil ettiği anlamına gelir. Bu tablolar birden fazla kullanılan değerleri tutmak için kullanılır ve doğrulama tabloları (validation, lookup) olarak adlandırılır. Örneğin özneler, aktörler, şehir adları, yetenek kategorileri, ürün kodları ve proje belirleme kodları gibi veriler doğrulama tablolarında tutulur. Hareket (transaction) tablolarında ise dinamik veri tutulur. Tablo hareketin zaman içinde oluşunu gösteren karakteristik özniteliklerden oluşur.
Kayıtlar, Satırlar ve Tuplelar: Kayıt, satır ve tuple hepsi aynı anlamda kullanılmaktadır. Kayıt bir tabloda verilen temanın benzersiz bir örneğini temsil eder. Bir kayıt tablodaki (dolu ya da boş olup olmadığına bakılmaksızın) tüm alanlardan oluşur.
Alanlar, Sütunlar, Öznitelikler: Alan, sütun ve öznitelik ifadelerinin hepsi veritabanı tablosundaki alanları belirmek için kullanılan terimlerdir. Alanlar her bir tekrarlanan kayıt içindeki veri yığın yapısını ve tanımını gösterir. İyi tasarlanmış bir veritabanı için alanlar tanımlanırken aşağıda verilen üç durumdan kaçınmak gerekir.
- Çok parçalı alan
- Çok değerli alan
- Hesaplanan alan
Veri Tipleri: Bu eleman tablonun alanlarında depolanan verinin yapısını gösterir.
- Basit veri tipleri: Karakter, Bit, Tam Sayısal, Yaklaşık Sayısal, Tarih ve Zaman
- Karmaşık veri tipleri: İkili nesneler, Referans işaretçileri, Koleksiyon diziler, Kullanıcı tanımlı
- Özelleştirilmiş veri tipleri: XML, Geography, Geometry, Hierarchyid
Null Değerinin Kullanımı: NULL bilinmeyen veya olmayan değeri gösterir. NULL sayısal değerlerdeki sıfır ya da karakter dizilerindeki bir veya daha fazla boş karaktere karşılık gelmez. NULL değerin dezavantajı matematiksel operasyonlarda ya da fonksiyonlarda hataya sebep olabilmesidir.
Kısıtlar: Kısıtlar tablodaki alanlar üzerine kuralların uygulanmasını mümkün kılar. Tablo içine giren veri türünün kısıtlanması veritabanı içindeki verinin doğruluk ve güvenirliliğini sağlar
NOT NULL kısıtı: Veritabanı tablosunun alanlarının mutlaka dolu olması gerektiğinde boş bırakılmaması için uygulanan bir zorlamadır.
DEFAULT kısıtı: Tabloya bir kayıt eklendiği veya değiştirildiği zaman DEFAULT kısıtlı alana değer belirtilmemiş ise ilgili alana varsayılan bir değer atanmasını sağlar.
Anahtar kısıtı: Anahtar kısıtları birincil anahtar (primary key), benzersiz anahtar (unique key) ve yabancı anahtardan (foreign key) oluşur. Anahtar kısıtları farklı tablolardaki alanlar arasındaki değerlerin kontrol ve doğrulanmasına izin verir.
1. Birincil anahtar: Bu anahtar tablo içindeki bir kaydı benzersiz olarak belirlemek için kullanılır. Birden fazla alan ile oluşturulan birincil anahtara kompozit birincil anahtar denir. Bir kayıttaki birincil anahtarın değeri kaydın tüm veritabanında belirlenmesini sağlar. Birincil anahtarın özellikleri;
- Tabloda bir kaydı belirlemek için kullanılır,
- Tabloda sadece bir Birincil anahtar tanımlanabilir,
- Birincil anahtar içindeki değerler benzersizdir,
- NULL değeri alamaz,
- Birincil anahtar kümelenmiş (clustered) indeks kullanır.
2. Benzersiz anahtar: Bu anahtar bir alanın değerlerinin benzersizliğini belirler.
Benzersiz anahtarın özellikleri;
- Bir tabloda birden fazla benzersiz anahtar olabilir,
- Benzersiz anahtara NULL değeri atanabilir,
- Benzersiz anahtar kümelenmemiş (Nonclustered) indeks kullanır.
3. Yabancı anahtar: Yabancı anahtarlar ana tablodaki birincil anahtarın alt tablodaki karşılık gelen kopyasıdır. Yabancı anahtar ile tablolar arasında kurulan ilişki sayesinde veritabanı seviyesinde ilişki seviyesi tutarlılık sağlanmış olur. Yabancı anahtar her iki tablonun uygun bir şekilde ilişkilendirilmesini ve veri tutarlılığının korunmasına yardımcı olurlar. Yabancı anahtarın özellikleri;
- Tablolar arası geçiş ve sorgulama işlerini kolaylaştırırlar,
- Benzersiz olmak zorunda değildir,
- Bir tabloda birden fazla tanımlanabilir.
CHECK kısıtı: Bu kısıt ile bir veya daha fazla alana girilebilecek değerlerin sınırlandırılması sağlanır.
Görünümler: Görünüm, veritabanından bir veya daha fazla tablonun alanlarından oluşturulan sanal tablodur.
İndeksler: İndeks çoğunlukla bir tablonun küçük bir kısmının (tablonun bir alanı gibi) kopyasıdır. İndeksler bir kitabın başındaki içindekiler veya sonundaki indeks bölümü gibi davranır.
Saklı Yordamlar: İVTYS içinde yapılan programlamanın büyük kısmı saklı yordamlar ile yapılır. Genellikle saklı yordamlar veri üzerinde ön işlem yaparak veritabanı dışına gönderilecek verinin miktarını düşürmekte kullanılır.
İlişkisel Veritabanı Örneği
İVTYS ilişkisel veritabanı modelini esas alan yönetim yazılımıdır. İVTYS ilişkisel veritabanının yönetimini ve veritabanı ile iletişimi sağlayan arayüzlerden oluşur ve tüm modern veritabanı sistemleri (MS SQL Server, IBM DB2, Oracle, Sysbase, MySQL, ve Microsoft Access) tarafından desteklenir. Bu kitapta SQL komutları anlatılırken Microsoft SQL veritabanları için üretilmiş olan örnek veritabanı olan Northwind kullanılacaktır. Microsoft tarafından dağıtılan bu veritabanının içerisinde oluşturulmuş birçok içi dolu tablo bulunmaktadır.
Nortwind Veritabanı: Bu kitaptaki pek çok örnek doğrudan bu örnek veritabanında uygulanabilir. Bu veritabanı uluslararası satış yapan bir firmanın personel bilgileri, satışları, müşteri bilgileri, satılan ürünleri ve tedarikçilerinin bilgilerini tutulacak şekilde tasarlanmıştır.