30 Eylül 2010 Perşembe

Veritabanı İlişkileri

- Kayıtların İlişkilendirilmesi -

İlişkiler tablolardan verileri birbirine bağlayarak tabloların kullanışlılığını artırır.
Böylece ilişkisel veri tabanları oluşturulur. Veriler konu veya göreve göre çeşitli tablolarda
depolanır, ancak veriler ilişkilidir ve belirttiğiniz şekilde bir araya getirilebilir.

Tablolar arası ilişki, daha hızlı sorgu icrası yapılmasını sağlar; veri-işlem işleri
daha verimli olur. Bu sayede verileri güncelleştirirken, bütün tabloları elden geçirmek ve
hatta yeniden girmek zorunda kalınmaz. Sadece güncelleştirilmesi gereken tabloya ek veya
bu tabloda değişiklik yapılır.

İlişkilendirme temelde bir tablodaki varlığa ait bilgilerin anahtar olan sütundan
hareketle başka bir tablodan takip edilmesini sağlar. Tablolar arasında üç tip ilişki vardır.

- Bire-Bir İlişki -
İlişkilendirdiğiniz iki tablodan birincisi ile ikincisi arasında sadece bir kayıt
eşleşebilir. Bu tür ilişkilere bire-bir ilişki denir. İki tablo arasında bire bir ilişki varsa bu iki
tablo birbirinin devamı demektir ve genellikle bir tek tablo olarak birleştirilir. Bu tür
ilişkilendirme tablolarda sık kullanılmaz.

- Bir-Çok İlişki -
En çok kullanılan ilişki şeklidir. Bu ilişkide A tablosundaki bir kayıt B tablosundaki
birden çok eşleşen kayda sahiptir. Bunun tersi doğru değildir. Yani B tablosundaki bir kayıt
A tablosundaki yalnızca bir kayıt ile eşleşir.

- Çok-Çok İlişki -
Bir çok-çok ilişkide, A tablosundaki bir satırın B tablosunda çok sayıda eşi vardır ve
tam tersi de geçerlidir. Bu tür ilişkileri, birincil anahtarları A ve B tablolarının yabancı
anahtarlarından oluşan bağlantı tablosu diye adlandırılan üçüncü bir tablo tanımlayarak
oluşturabilirsiniz.

Veritabanı Normalizasyonu

Tablolar verilere ait bilgileri girmek için oluşturulur. Örneğin; bir kitap tablosunda sadece kitaplara ait bilgiler vardır. 10 kitap gireceksek, 10 satır oluşacak demektir.  Tablolarda verileri girerken önemli olan verilere parçalara ayırarak girmektir. Verileri  tablolamak için parçalarken tablolar arasında ilişki kurmak için oluşturulacak alanlara dikakt etmemiz gerekir.

Tablolardaki verileri  normalize etmemek sıkıntılara neden olabilir. Bazı bilgiler birden fazla tekrarlanabilir. Bir bilgiyi güncellemek, veri eklemek ve silmek için
birden fazla yerde bulma, değiştirme ve silme yapmamız gerekebilir. Bu nedenle
normalizasyon kurallarını kullanmalıyız.

İlişkisel bir veri tabanı tasarımı şu dört ögeyi barındırmalıdır;
  • Veri tekrarı yapılmamalıdır.
  • Boş yer mümkün olduğunca az olmalıdır.
  • Veri bütünlüğü sağlanmalıdır.
  • Veriler, aralarında bir ilişki tanımlamaya müsait olmalıdır.

24 Eylül 2010 Cuma

RDBMS: Relational Database Management System - İlişkisel Veritabanı Yönetim Sistemi

Veritabanı içerisindeki nesnelerin birbirleri ile ilişkilerini programlanabilir biçimde düzenleyerek arşivlemeyi
amaçlayan veritabanı tasarımıdır.
Farklı tablolar içerisindeki alanların birbirleri ile olan ilişkilerini tutarak bir tablodan herhangi bir kayıt silindiğinde ya da değiştirildiğinde diğer tabloların da bu durumdan çeşitli biçimlerde etkilenmesini saglamak bu yolla mümkündür.
İlişkisel veritabanı yönetim sistemi veritabanlarının yapısını düzenler. Bu özellik sayesinde şu işlemleri yapmak olasıdır:        
  
• Verilerin doğru ve etkin biçimde saklanmasını sağlar.
• İlişkisel bütünlük kuralı (database integrity) sağlanır.
• Değişiklik kayıtları sayesinde, sistem çöktüğünde verileri kurtarmayı sağlar.

Dr. E.F.Codd ‘ un 1970 de “A Relational Model of Data for Large Shared Data Banks,” isimli makalesinde belirttiği hususlar ilişkisel veritabanı modeli için esasları oluşturmuştur.

- Information rule: İlişkisel veri tabanıdaki bütün bilgiler tablo ve sütün isimleri ni kapsayacak şekilde tablo içindeki değerler olarak açıkça gösterilirler.


- Guaranteed Access : İlişkisel veri tabanındaki her bir değer tablo ismi primary key ve sütün isimlerinin kombinasyonu ile erişilebilir olmalıdır.

- Sistematic null value support : DBMS sıfır değerler ( bilinmeyan veya işlenemeyen ) için sistematik olarak destek sağlamalıdır.

- Activite online relational catalog : Veri tabanı ve onun içeriğinin tanımı logical düzeyde tablolar şeklinde gösterilir ve bu sayede veritabanı dili kullanılarak sorgulanabilir.  

- Comprehensive data sublanguage : İyi tanımlı syntax ı olan bir dil ile desteklenmelidir. Bu dil veri tanımını, maniplasyonu, bütünlük kutallarını, yetkilendirmeyi, ve transactionları desteklemelidir.
- View updating rule : Bilgiler sistem içersinden güncellenebilmelidir.

- Set-level insertion, update, deletion : Sistem erişim le birlikte ekleme, güncelleme ve silme işlemlerinide set-level olarak ( kümesel düzeyde ) yapabilmelidir.
 Pysical data independence : Uygulamalar ve ad hoc programlar fiziki erişim metodları veya saklama yapıları kullanıldığında mantıksal olarak etkilenmezler.
- Logical data independence : Uygulama programları veya ad hoc programlar tablo yapısı değiştirildiği zaman mantıksal olarak etkilenmezler.
- Integrity independence : Veritabanı dili bütünsellik kurallarının tanımlayabilme kapasitesine sahip olmalıdır. Online katalog da tanımlı ve bypass edilemez olmalıdır.
- Distrubution independece : Uygulama programları ve ad hoc programlar veri dağıtımı yapıldığında etkilenmemelidir.
- Nonsubversion : Bütünsellik kuralları bir alt düzey dil ( lower-level language ) kullanıldığı zaman by-pass edilememelidir.

    SQL Server’ın System Veritabanları

    SQL Server ilk yüklendiği zaman Master, Model, Msdb ve  Tempdb olmak üzere dört adet veri tabanı sistemi içerir.


    - Master Veritabanı -

     SQL Server'ın her sürümü  master veritabanına sahiptir. Bu veritabanı, sistemin bütününü izlemeyi sağlayan, özel tablolar (sistem tabloları) kümesini içine alır. Örneğin, server üzerinde yeni bir veritabanı oluşturduğumuzda, girdiğimiz kayıt master veritabanındaki sysdatabases’da yer alır. Server’ı tanımlayan herşey master veritabanında saklandığından dolayı, sistem için bu veritabanı önemlidir ve silinemez.

    - Model Veritabanı -

    Oluşturacağımız herhangi bir yeni veritabanı için, model veritabanı bir şablon oluşturur. Bunun anlamı, isterseniz yeni oluşturulacak veritabanlarının nasıl olacağını, model veritabanında değişiklik yaparak belirleyebilmenizdir. Örneğin, oluşturduğumuz her veritabanının içeriğinde yer almasını istediğimiz bir denetim tabloları kümesi ekleyebiliriz. Ayrıca, sistem üzerinde oluşturulan her yeni veritabanına kopyalanan birkaç kullanıcı grubu oluşturabiliriz. Model veritabanı diğer veritabanları için şablon olduğundan gerekli bir veritabanıdır ve sistemde kalmalıdır yani bu veritabanıda silinemez.

    - MsDB Veritabanı -

    Msdb, SQL Agent işlem sürecinin herhangi bir sistem görevini sakladığı yerdir. Veritabanı üzerinde geceleri yedekleme işleminin çalışmasına dair bir görev zamanlayıcı oluşturduysanız, bununla ilgili kayıt msdb’de yer alır. Stored Procedure’un ilk çalışması (time execution) ile ilgili kayıt da, aynı şekilde msdb’de bulunur.

    - TempDB  Veritabanı -

    Tempdb veritabanı,  server’ınız için anahtar çalışma alanlarından biridir. Karmaşık ya da geniş bir sorgulama yaptığınızda, SQL Server’ın geçici tablolar oluşturması gerekirse, bu işlemi tempdb yoluyla gerçekleştirir.  Aynı zamanda , geçici bir tablo oluşturduğunuzda da, üzerinde çalıştığınız veritabanında oluşturduğunuzu zannetseniz de, aslında tempdb veritabanında oluşturulur. Verinin geçici olarak saklanması gerektiği zaman da, tempdb veritabanında saklanır.

    DROP (Nesne Sİlmek)

    Bir nesnenin silinmesini sağlayan komuttur. Bu komutu tüm nesnelerde kullanabiliriz.


    DROP TABLE Ogrenci
    komutu ile Ogrenci tablosunu silmiş oluruz.


    ALTER (Nesnelerde Değişiklik Yapmak)

    Daha önceden oluşturulmuş bir nesne özelliğinin değişmesini sağlar.


    ALTER TABLE Ogrenci
    ADD OgrenciSinif varchar(30) NOT NULL
    komutu ile Ogrenci tablosunda OgrenciSinif adında bir sütun eklenmiştir. NOT NULL komutu ile bi alana veri girişi zorunlu kılınmıştır.


    ALTER TABLE Ogrenci
    ALTER COLUMN Ogrenci varchar(10) NOT NULL
    komutu ile varolan OgrenciSinif sütünunun alabileceği karakter sayısı 10 olarak değiştirilmiş ve girişi zorunlu kılınmıştır.

    CREATE (Nesne Oluşturmak)

    Veri tabanındaki nesnelerin oluşturulabilmesi için CREATE komutu kullanılır. Oluşturulacak nesnenin özellikleri dikkate alınarak farklı parametreler kullanılmalıdır.
     
    CREATE DATABASE Okul
    komutu ile okul adında bir veri tabanı oluştururuz.

    CREATE TABLE Ogrenci
    (OgrenciNo int, Adi varchar(100), Soyadi varchar(100))

    komutu ile Ogrenci adında bir tablo oluştururuz.
     

    DDL (Veri Tanımlama Dili)

    SQL Server içinde veri tabanı, tablo ve kullanıcı tanımlı veri tipleri gibi nesneler oluşturmak ve bunları yapılandırmak için kullanılır. Temel komutları aşağıdaki şekildedir:

    - Temel Komutlar -

    - ALTER: Nesneler üzerinde değişiklik yapmak için kullanılır.
    - DROP: Nesneleri silmek için kullanılır.
    - CREATE: Nesne oluşturmak için kullanılır.

    DML (Veri İşleme Dili)

    Veri tabanı içindeki veriler ile ilgili işlemler yapılmasını sağlar. Temel komutları aşağıdaki şekildedir.

    - Temel Komutlar -

    - SELECT: Veri tabanındaki verileri seçmeyi sağlar.
    - INSERT: Veri tabanına yeni veriler eklemek için kullanılır.
    - UPDATE: Veriler üzerinde değişiklik (güncelleme) yapmak için kullanılır.
    - DELETE: Veri tabanından veri silmek için kullanılır.

    23 Eylül 2010 Perşembe

    SQL'de Delete Komutu

    Delete komutu tablodaki veri ya da verileri silmeyi sağlar.

    DELETE FROM Yazar
    komutu tabloda ki bütün kayıtları silecektir.

    DELETE FROM Yazar WHERE Adi='Can'
    komutu ise adı 'Can' olan kayıtları silecektir.

    SQL'de Update Komutu

    Update komutu ile tabloda yer alan verinin yada veri üzerinde seçilen alanların güncellenmesini sağlarız.


    UPDATE Yazar
    SET Adi='Reşat Nuri'
    komutu yazar tablosundaki 'Adi' adlı alandaki bütün verileri 'Namık' olarak günceller.

    UPDATE Yazar
    SET Adi='Reşat Nuri'
    WHERE Soyadi='Güntekin'
    komutu ise yazar tablosundaki 'Soyadi' adlı alanda 'Güntekin' olarak kayıtlı olan verilerin adını 'Reşat Nuri' olarak günceller.

    SQL'de Insert Komutu

    Insert komutu ile verit abanında ki bir tabloya yeni kayıt eklemekte kullanılır.

    INSERT INTO Yazar (Adi, Soyadi, Dogum, HayatOzet)
    VALUES ( 'Atilla','İlhan',15.06.1925,'11 Ekim 2005 te İstanbul da yaşamını yitirdi. ')
    komutu yazar tablosuna 'Atilla İlhan' adında yeni bir veriyi kaydetmeyi sağlar.

    SQL'de Select Komutu ve Yapısı

    Veri tabanındaki kayıtları sorgulamak, şeçmek için Select komutu kullanılır.

    SELECT YazarNo, Adi, Soyadi FROM Yazar
    komutunu girdiğimizde, bize yazar tablosundaki yazar numarası,adı ve soyadı alanlarını gösterecektir.

    SELECT * FROM Yazar
    komutu ise tablodaki tüm alanların gösterecektir. Kullanılan "*" ifadesi tablodaki tüm alanların seçilmesini sağlar.

    SQL' de Where Komutu

    Where komutu ile yazacağımız kodda koşul sağlarız.

    SELECT YazarNo, Adi, Soyadi
    FROM Yazar
    WHERE Adi='Can'
    komutu adı 'Can' olan yazarların yazar numarasını, adını ve soyadını getirir.

    SQL ve Veri Tabanı

    Veri tabanı bilgileri bir arada saklayan bir yazılımdır. Veri tabanı ile bilgilerimizi düzgün bir şekilde saklayabiliriz. istediğimiz bilgiye kolayca ulaşabilir üzerinde analiz yapabilir ve yazdırabiliriz. Birçok bilgiyi aynı anda yönetebiliriz ve birçok kişiyle aynı anda aynı veri tabanına bağlanabiliriz.

    SQL veri tabanında kullanılan alt dillerden biridir. SQL ile tablolar halinde veriler kaydedebilir, sonradan o verileri silebilir ya da üzerinde değişiklikler yapabiliriz. SQL de temel komutlar olduğu gibi kendine özgü komutları da vardır.

    SQL de veri tabanında verileri tablolar halinde kaydederiz.Her tabloda bir anahtar alan oluşturulur. Verileri kayıt ederken küçük gruplara ayırıp tablolamak hem daha düzenli olmasını hem de işlemleri hızlanıdırarak zaman kazanmamızı sağlar.


    Örneğin: Bir kütüphane veri tabanında resimdeki gibi tablolar yer almaktadır. Tabloların kendi içlerinde alanlarına ayrılmıştır ve her tablonun anahtar alanları seçilmiştir. Tablolar arası ilişkinin kurulabilmesi için tablolarda ortak alanlar olması gerekir.

    *Odunc tablosunda ve Kitap tablosunda ortak olan KitapNo alanı ile tablolar arasındaki ilişkiyi komutlarla sağlayabiliriz.

    SQL deyimleri veritabanları üzerinde çeşitli işlemleri yerine getirir. Veri tabanından sorgulama yapmak için SELECT, ekleme yapmak için INSERT, güncelleme yapmak için UPDATE, silme yapmak için DELETE, yeni tablo oluşturmak için CREATE TABLE gibi komutlara sahiptir.

     Bu komutlar, işlevlerine göre şu şekilde ayrılır:

    * DDL (Data Definition Language): Veri tanımlama dili 
    * DML (Data Manipulation Language) : Veri işleme dili
    * DCL (Data Control Language): Veri kontrol dili