Kategori arşivi: Veritabanı

Veritabanı Giriş

Veritabanı ; Veritabanı en genel tanımıyla, kullanım amacına uygun olarak düzenlenmiş

veriler topluluğudur. Birbirleriyle ilişkileri olan verilerin tutulduğu, mantıksal ve fiziksel

olarak tanımlarının olduğu bilgi depolarıdır. Veritabanları gerçekte var olan ve

birbirleriyle ilişkisi olan nesneleri ve ilişkileri modeller.

 

Veri tabanı, bir kuruluşun uygulama programlarının kullandığı operasyonel

verilerin bütünüdür (toplamıdır). Burada; “kuruluş”, bir okul, üniversite, banka, bir

üretim şirketi, hastane, devlet kuruluşu, vb. olabilir. “Operasyonel veri” bir kuruluşun

çalışabilmesi, işleyebilmesi için kullanılan çok çeşitli verilerdir. Ticari bir  şirket için

müşteri bilgileri, satış bilgileri, ürün bilgileri, ödeme bilgileri, vb., okul için öğrenci

bilgileri, açılan dersler, kimlerin kaydolduğu, öğretmen bilgileri, boş ve dolu derslikler,

sınav tarihleri, vb., hastane için hasta bilgileri, doktor bilgileri, yatakların doluluk

boşluğu, teşhis-tedavi bilgileri, mali bilgileri, vb …

 

Belirli bir konu hakkında toplanmış veriler bir veritabanı programı altında

toplanır.  İstenildiğinde toplanan bilgilerin tümü veya istenilen özelliklere uyanları

görüntülenebilir, yazdırılabilir hatta bilgilerden yeni bilgiler üretilerek bunlar çeşitli

amaçlarla kullanılabilir.

 

Veritabanı Yönetim sistemi ; Veritabanı kurma,yaratma,tanımlama,işletme ve kullanma işlerini yapmayı sağlayan program topluluğudur. Veritabanı Yönetim sistemi(VTYS) veya Database Managament System(DBMS) isim olarakta kullanılır. Aşağıda bilinen VTYS programlarını ve özelliklerini görebiliriz.

 

MS SQL Server: Bir orta ve büyük ölçekli VTYS’dir. ANSI SQL’e eklentiler yazmak

için T-SQL’i destekler.

 

Oracle: Daha çok yüksek ölçekli uygulamalarda tercih edilen bir VTYS’dir. ANSI

SQL’e eklentiler yapmak için PL/SQL geliştirilmiştir.

 

Sybase: Bir orta ve büyük ölçekli VTYS’dir. ANSI SQL’e eklentiler yazmak için T-SQL

komutlarını destekler. Ülkemizde daha çok bankacılık ve kamusal alanlarda tercih

edilmektedir.

 

Informix: Bir orta ve büyük ölçekli VTYS’dir.

 

MySQL: Genellikle Unix-Linux temelli Web uygulamalarında tercih edilen bir

VTYS’dir. Açık kod bir yazılımdır. Küçük-orta ölçeklidir. Özellikle Web için geliştirilmiş

bir VTYS’dir denilebilir.

 

Postrage SQL: Bu da MySQL gibi açık kod bir VTYS’dir.

 

MS Access: Çoklu kullanıcı desteği yoktur.  İşletim sisteminin sağladığı güvenlik

seçeneklerini kullanır. Bunun yanında belli sayıda kayda kadar (1000000 civarı) ya

da belli bir boyutun (yaklaşık 25MB) altına kadar bir sorun çıkartmadan

kullanılabilecek bir küçük ölçekli VTYS’dir.

 

Advantage: Türk programcılar tarafından geliştirilen bir orta ve büyük ölçekli

VTYS’dir.

 

DB/2: IBM’in framework’lere yönelik büyük ölçekli VTYS’dir.

 

Bazı veritabanı terimleri ve açıklamaları

 

Tablo : Tablo verilerin satırlar ve sütunlar halinde düzenlenmesiyle

oluşan veri grubudur.

 

Alan : Yapılandırılmış bilginin her bir kısmını saklamak üzere yapılan tanımlamadır.

 

Primary Key (Birincil Anahtar) :  Bir tablodaki, her bir satırın yerine vekil

olabilecek bir anahtar veridir. Tabloda  bu alana ait bilginin tekrarlanmaması gerekir.

Standart olarak bir tabloda verilerin, fiziksel hafıza üstünde de hangi alana göre

dizileceğini de primary key belirler. Bu, bazen bir tek alan olabileceği gibi, bazen

birden fazla alan da birleşerek bir birincil anahtar oluşturabilir.

 

Unique Key(Tekil Anahtar): Unique Key olarak tanımlanan alan için bir değer

sadece bir kere girilebilir. Bir başka satıra daha aynı verinin  girilmesine izin verilmez.

Primary Key ’den farklı olarak Unique Key, NULL (boşluk) değerini alabilir.

 

Foreign Key (Yabancı Anahtar) : Bir tabloya girilebilecek değerleri başka bir

tablonun belli bir alanında yer alabilecek veri grubu ile sınırlandırmaya ve en önemlisi

de ilişkilendirmeye yarar. Örneğin, olmayan bir kitabın ödünç tablosuna

eklenememesi ve ödünç tablosuna eklenen bir kitabın numarası aracılığıyla detay

bilgilerine erişilmesi gibi. Burada Kitap.KitapNo birincil anahtar alan; Odunc.kitapNo

ise yabancı anahtardır.

 

İlişkisel Veri Tabanları(Relational Database) : Bu sistemde veriler tablo şeklinde saklanır. Bu veri tabanı yönetim sisteminde; veri alış verişi için özel işlemler kullanılır.  Bu işlemlerde tablolar operandlar  olarak  kullanılır.  Tablolar  arasında   ilişkiler  belirtilir. Bu  ilişkiler matematiksebağıntılarla (ilişkilerle) temsil edilir.  Günümüzde hemen hemen tüm veri tabanı yönetim sistemleriilişkisel veri modelini kullanırlar.  İlişkisel modeli 1970 yılında Codd önermiştir. Bu model,  matematikteki ilişki teorisine (“the relational theory”) dayanır.  İlişkisel veri modelinde (Relational Data Model) veriler basit tablolar halinde tutulur. Tablolar, satır ve

sütunlardan oluşur.

View (Görünüm oluşturma)

Tablo görünümleri veri tabanında tanımı olan tablolardan sorgulama

sonucunda elde edilir. Tabloların tersine fiziksel bir yer tutmazlar. Uygulamalarda pek

çok pratiklik sağlarlar.  Görüntü oluşturabilmek için Select cümlesi kullanılması gerekir. Bir görüntü bir yada daha fazla tablodan oluşturulabileceği gibi bir başka görüntüden (view) de

oluşturulabilir.

CREATE VIEW view_adi AS select sorgusu

View’lerin Faydaları.

1-      Gerçek tablo ve alan adlarını gizlemek .

2-      İstemci- sunucu arasındaki trafiği azaltır yani istemciden sunucuya daha kısa sorgular gider.

3-      Karmaşık sorguların sunucu  üzerinde oluşturularak denenmiş olması garanti edilir, hatalı sorguların oluşmasının önüne geçmiş olunur.

4-      Numaralarla ilişkilendirilmiş tabloların diğer alanları kullanılarak okunaklı, anlaşılır, son kullanıcıya uygun tablolar oluşturulması sağlanır.

Örnek View Sorgusu;


CREATE

VIEW `Kitap_View`AS

SELECT

kitaplar.kitap_adi AS Kitap_Adi,

yazarlar.adi AS Yazar_Adi,

yazarlar.soyadi AS Yazar_Soyadi

FROM

kitaplar

INNER JOIN kitap_yazar ON kitap_yazar.kitap_id_fk=kitaplar.kitap_id

INNER JOIN yazarlar ON kitap_yazar.yazar_id_fk=yazarlar.yazar_id ;

Not : View’ler sonuç itibarı ile gerçek anlamdaki tablolar değildir. Bundan dolayı view’ler üstünde ekleme veya güncelleme yaparken çeşitli kısıtlamalar vardır.

Outer Join

INNER JOIN sadece eşleşen kayıtları getirirken, OUTER JOIN ile hem eşleşen hem de eşleşmeyen kayıtlar sorgu sonucuna dahil edilir. Dolayısıyla OUTER JOIN, INNER JOIN’i kapsayan sonuçlar döndürür. SQL sorgusunda OUTER JOIN ifadesinin solunda ve sağında kalan tablolardan hangisinde eşleşmeyen kayıtların getirileceği LEFT veya RIGHT ifadeleri ile belirlenir.

1-Left Outer Join : İlişkilendirmede işlem tablosunun solunda eşleşmeyen kayıtları da (sol tabloadan) getirir.

Örnek Sorgu;


SELECT

ogrenciler.adi,

ogrenciler.soyadi,

bolumler.bolum_adi

FROM

ogrenciler

LEFT OUTER JOIN bolumler

ON bolumler.bolum_id = ogrenciler.bolum_id_fk

 

2-Right Outer Join : İlişkilendirmede işlem tablosunun sağında eşleşmeyen kayıtları da (sağ tabloadan) getirir.

Örnek Sorgu;


SELECT

ogrenciler.adi,

ogrenciler.soyadi,

bolumler.bolum_adi

FROM

ogrenciler

RIGHT OUTER JOIN bolumler

ON bolumler.bolum_id = ogrenciler.bolum_id_fk

MySQL İlişkilendirme Çeşitleri

1-      Bire-bir ilişkilendirme(1-1) : Bazı durumlarda tekbir tabloda tutulabilecek veriler tablonun aşırı genişlemesinden dolayı sık kullanılan alanlar ve az kullanılan alanlar olmak üzere iki gruba ayrılır. Bu iki grup için iki ayrı tablo oluşturulur. İki tablonun da Primary Key alanları aynı olmalıdır. Bunu yapabilmek için sık kullanılan bilgilerin olduğu tablo da (ana tablo) gerçek Primary key değeri kullanılır. Az kullanılan bilgilerin olduğu tablo da (detay tablosu) primary key değeri ana tablonun primary key’inden çekilir. Buna birebir ilişkilendirme denir.

MySQL İlişkilendirme Çeşitleri yazısına devam et