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.