Şekil 1 deki bir firmanın çalışan bilgilerini tutan örnek tabloda, sütun ve satırların ne işi yaradığını daha rahat takip edebilirsiniz.



Benzer belgeler
VERİ TABANI YÖNETİM SİSTEMLERİ-II

3 Sql Veri Tipleri. Veritabanı 1

SQL SERVER VERİTABANINI EKLEME-ÇIKARMA ve YEDEKLEME-GERİ YÜKLEME

Tavsiye Edilen Önhazırlık Temel SQL Server 2000 bilgisi edinmek.

3 Sql Veri Tipleri ve Örnek Veritabanı Tasarımı. Veritabanı 1

11TA Veritabanı Organizasyonu Dersi MS ACCESS Ders Notları

3. Hafta Tablo İşlemleri BPR255 Veritabanı. Bu Derste Öğrenecekleriniz: 1. Tablo İşlemleri Kısıtlamalar (Constraints)

Veri tabanına bağlanmak için öncelikle aşağıdaki yolu izleyerek ağ veri tabanı yazılımını başlatıyoruz.

MICROSOFT ACCESS DERS NOTLARI

BİL Bilişim Teknolojileri. Access

KISITLAMALAR (CONSTRAINT)

Kets DocPlace LOGO Entegrasyonu

SQL 2005 SQL STUDIO MANAGER ACP YAZILIMI KURULUM KILAVUZU

Bölüm 4: DDL Veri Tanımlama Dili

SP_RENAMEDB eski_isim, yeni_isim VEYA SP_RENAMEDB 'eski isim', 'yeni isim'

Elbistan Meslek Yüksek Okulu GÜZ Yarıyılı Ara Öğr. Gör. Murat KEÇECĠOĞLU

Veritabanı sistemlerinde veri bütünlüğünü sağlayabilmek için CONSTRAINTS olarak adlandırılan bazı zorlayıcı ifadeler kullanılabilir.

VERİ TABANI I. Yrd.Doç.Dr. İlker ÜNAL. Teknik Bilimler Meslek Yüksekokulu

Tablolar Arası İlşikiler ve Alan Özellikleri Siparis.musteri_no musteri.musteri_no Siparis.urun_kodu musteri.urun_kodu

VERİTABANI Veritabanı Yönetimi

PERKON PDKS Kurulum ve hızlı başlangıç rehberi

DENEME SINAVI CEVAP ANAHTARI

1. VERİ TABANI KAVRAMLARI VE VERİ TABANI OLUŞTUMA

Bu işleçlerin dışında, aşağıda belirtilen karşılaştırma işleçlerinden de yararlanılır.

5 SQL- Yapısal Sorgulama Dili. Veritabanı 1

Access e Nasıl Ulaşılır. Araç çubuklarını yeniden düzenlemek için Görünüm komutunun Araç çubukları seçeneği kullanılır.

Veritabanına Giriş. Oğuzhan Ceylan. 19 Eylül 2011

ÖĞRENME FAALİYETİ 1 ÖĞRENME FAALİYETİ 1

10-Veri Tabanları.

EĞİTİM-ÖĞRETİM YILI BİLİŞİM TEKNOLOJİLERİ VE YAZILIM DERSİ 6. SINIF 2. DÖNEM 2. SINAV ÇALIŞMA NOTLARI

YEDEKLEME PROGRAMI KURULUM VE KULLANIMI

Mühendislikte Veri Tabanları Dersi Uygulamaları (MS-Access)

Seri Takibi Yenilikleri

Resim 1. Access açılış sayfası. Resim 2. Access veri tabanı düzenleme sayfası

AKINSOFT Barkod 4. AKINSOFT Barkod 4 Yardım Dosyası. Doküman Versiyon : Tarih : Sayfa-1. Copyright 2010 AKINSOFT

Oracle da kullanılan veri tipleri:

Tavsiye Edilen Önhazırlık Veritabanı kavramını öğrenmek

3. Hafta Tablo İşlemleri BPR255 Veritabanı Yönetim. Bu Derste Öğrenecekleriniz: 1. Tablo İşlemleri

UZAKTAN EĞİTİM MERKEZİ

KULLANIM KILAVUZU. Programda veri gireceğiniz yerler beyaz renklidir. Sarı renkli alanlar hesaplama veya otomatik olarak gelen bilgilerdir.

Yaptığımız web sitelerinin daha kullanışlı olması için veritabanı sistemleri ile bağlantı kurup ihtiyaca göre verileri okuyup yazmasını isteriz.

VERİ TABANI UYGULAMALARI

SQL Uyarı Programı Kurulum ve Kullanımı

Veri Tabanı-I 5.Hafta

:::: Germencik Halk Eğitimi Merkezi Bilgisayar Kurs Notları Hüseyin OKUL ::::

BÖLÜM13 3- EXCEL DE VERİ İŞLEMLERİ

OTURUM AÇMA ADLARI. Tavsiye Edilen Önhazırlık Enterprise Manager'i kullanabilmek.

DESTEK DOKÜMANI. Ürün : Tiger Enterprise/ Tiger Plus/ Go Plus/Go Bölüm : Kurulum İşlemleri

1. Excel Dönüşümü : 2. Rapor Master Tanımları :

Veritabanına Uygulanması

Herhangi bir tablonun tekrarlı veriler içerdiği duruma birinci normal form denir. Birinci normal formu Aşağıdaki tablo ile ele alacağız.

12. Kat Oluşturma. Bu konuda mevcut bir katın bilgilerini kullanarak nasıl yeni katlar oluşturulabileceği incelenecektir.

Eskişehir Osmangazi Üniversitesi Turizm ve Otel İşletmeciliği Yüksekokulu. Microsoft Access Ders Notları. Doç.Dr. Yaşar SARI.

EBA Dosya Uygulaması Kullanıcı Kılavuzu ( W eb)

MS Access. üzerinde. defa çalıştırıldığında

INTERNET INFORMATION SERVICES 6.0 DA WEB SAYFASI YAYINLAMAK

SORGULAR. Öğr.Gör.Volkan Altıntaş

İNTERNET PROGRAMLAMA 2 A S P. N E T. Marmara Teknik Bilimler MYO / Hafta 5 Veri Tabanı İşlemleri

Ekrana gelen diyalog penceresinden Typical radyo düğmesi seçilir ve Next düğmesine basılır.

İmar Uygulaması. Uygulamanın Netmap Projesi Olduğunun Belirtilmesi

7. Çerçeveler. Bu bölümü bitirdiğinizde,

Telefon Defteri Modülü Kullanım Kılavuzu

Bölüm 1: Veritabanı Yönetim Sistemlerine Giriş

SP_RENAMEDB eski_isim, yeni_isim VEYA SP_RENAMEDB 'eski isim', 'yeni isim'

Usta Aritmetik Bayi Kontrol Programı Kullanım Kılavuzu (V.1.3.0)

Microsoft SQL Server 2008 Oracle Mysql (Ücretsiz) (Uygulamalarımızda bunu kullanacağız) Access

Proje Takip Platformu Kullanım Kılavuzu

Mysql Veritabanı Komutları

13 Aralık Đlgili Versiyon/lar : ETA:SQL, ETA:V.8-SQL. Đlgili Modül/ler : Raporlar. Kullanıcı Tanımlı Raporlar Bölümünden Yapabildiklerimiz


VERİTABANI & VERİTABANI YÖNETİMİ

SORGULAR VE ÇEŞİTLERİ II

TURKCELL HİZMETLERİ. Kullanım Bilgileri. LOGO Kasım 2014

SUPERVISOR (YETKİLİ KULLANICI) KAMPANYA YÖNETİMİ EĞİTİM DOKÜMANI

1. Hafta MS SQL Server 2008 Kurulum ve Tanıtımı BPR255 Veritabanı. Bu Derste Öğrenecekleriniz: Kurulum:

Ders Tanıtım Sunumu. Database Managegement II. Elbistan Meslek Yüksek Okulu Güz Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU

1. Portala Giriş. 2. Portalın Kullanımı Genel

SQL'e Giriş. SELECT Deyimi. SQL Komutları. Yardımcı Deyimler

İçindekiler Tablosu Talep Destek Yönetim Sistemi Programı...3

MICROSOFT ACCESS DERS NOTLARI

FAKS SUNUCU EĞİTİM DÖKÜMANI

4.1. Grafik Sihirbazını kullanarak grafik oluşturma

BÖLÜM 5 5. TABLO OLUŞTURMAK

1. MEVITAS MERKEZİ ELEKTRONİK VERİ İLETİM TOPLAMA ANALİZ SİSTEMİ GENEL İLKELERİ

BTU 100 Bilgisayar okuryazarlığı BTU 100 BİLGİSAYAR OKURYAZARLIĞI. Veri Tabanı Uygulamaları: Ms Access 2/2

Elektra Raporlama Sistemi Sunumu

Dış Veri Alma ÜNİTE 6. Bu üniteyi çalıştıktan sonra; Veri Menüsü Dış Veri Al Bağlantılar Sırala ve Filtre Uygula Veri Araçları Anahat

MICROSOFT ACCESS DERS NOTLARI

8 Oracle da tablo yapısı içinde otomatik artan kolon yoktur. (identity kolon

BAĞIMSIZ DEĞERLENDİRİCİ KAYIT İŞLEMLERİ KALKINMA AJANSLARI YÖNETİM SİSTEMİ PROJESİ

1. MİCROSOFT EXCEL 2010 A GİRİŞ

=A1+A2-A3, =A1*A2/A3,

UYGULAMA 2 TABLO YAPIMI

Şekil 2.1 : Şekil 2.2 : Şekil 2.3 :

T.C. istanbul ÜNiVERSiTESi ÖĞRENCi BiLGi SiSTEMi. ÖĞRETiM ELEMANI KULLANIM KILAVUZU

Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı. Öğr. Gör. Cansu AYVAZ GÜVEN

DENEME SINAVI. ECDL BAŞLANGIÇ Hesap Tablosu

"SQL Server Management Studio" yazılımını yüklemek için alttaki resmi sitesinden 180 günlük deneme sürümünü indirebilirsiniz.

2014 PROGRAMININ AUTODESK SİTESİNDEN İNDİRİLMESİ

AGSoft Rotatif Kredi Hesaplama Programı

Transkript:

1. Sütun (Alan) 2. Sütun (Alan) 3. Sütun (Alan) 4. Sütun (Alan) 5. Sütun (Alan) Veritabanlarının Temel Bileşenleri Tablo (Table) Veritabanın en önemli bileşenidir. Veri tabanının diğer bileşenlerinin bir anlam ifade edebilmesi için öncelikle bir tablonun oluşturulması gerekir. Bunun nedeni verilerin saklandığı ortam olmasıdır. Daha önce de belirtildiği gibi veritabanlarında veriler tablo mantığında saklanır. Yani satırlar ve sütunlar verileri saklamak için kullanılır. Sütun(Column), ortak özellikli verileri tanımlar. Tablodaki her sütun, belirli türdeki bilgileri (örneğin, tarihler, adlar, tutarlar, numaralar gibi.) depolamak için tasarlanmıştır. Sütunların bir başka adı da alan (Field) dır. Alan isimlerinin saklanmak istenen veriyle ilgili olmasında fayda vardır. Bir tablonun alan isimlerini belirlerken Türkçeye özgü karakterlerin, boşlukların kullanılmaması gibi bazı sınırlamalar vardır. Satır(Row), Bir tabloda yer alan her bir kayıt bir satıra karşılık gelir. Yani tablo sütunlarına girilmiş her bağımsız veri, 1 satır aynı zamanda bir kayıttır. Şekil 1 deki bir firmanın çalışan bilgilerini tutan örnek tabloda, sütun ve satırların ne işi yaradığını daha rahat takip edebilirsiniz. 1. Satır (Kayıt) 2. Satır (Kayıt) 3. Satır (Kayıt) Şekil 1. Örnek bir tablo! Oluşturacağınız tablolarda, alan isimlerinin tutmak istediğiniz verilerle ilgili olmasına dikkat edin. Aksi takdirde veriler üzerinde çalışırken karışıklıklar yaşayabilirsiniz. İndeks(Index) Veritabanındaki indeksler, bir kitabın indeksine benzer. Tablolarda belirtilen verilere tıpkı kitapların indekslerinde olduğu gibi hızlı bir şekilde ulaşmaya yarar. İndeksler tabloları belirtilen sütun(lar)a göre sıralar. Böylelikle bilgilere ulaşmak daha kolay olur. İndekslerin yararı özellikle çok sayıda kayda sahip tablolarda ortaya çıkar. Bu tür tablolarda indeks kullanıldığı zaman verilere daha kısa sürede ulaşılabilmektedir. Yani indeksler, veritabanının performansını artıran bir durum yaratır. Birincil Anahtar (Primary Key) Birincil anahtar, bir tablonun seçilen sütun ya da sütunlardaki verinin farklı satırlarda tekrarlanmamasını (bir kez kullanılmasını) sağlayan bir özelliktir. Örneğin, T.C. Kimlik numaralarının girileceği bir sütunda bu özellik kullanılabilir.

Birincil anahtarın bir başka özelliği de tablolar arası ilişki kurulmasına olanak sağlamasıdır. Birden fazla tabloda, birbirleriyle ilişkili veriler olabilir. Örneğin, bir öğrencinin kişisel bilgileri bir tabloda tutulurken not bilgileri başka bir tabloda tutulabilir. Öğrencinin her iki tablodaki verilerine birlikte ulaşabilmek ve verilerin tutarlılığını sağlayabilmek için iki tablo arasında ilişki kurulması gerekir. Bu ilişkinin oluşturulması için gereken şartlardan bir tanesi, öğrencilere ait notların karışmaması için her öğrenciyi tekil olarak tanımlayan bir bilginin olmasıdır. Eğer bu bilgi birden fazla öğrenciye ait olursa notlar tablosundaki notların kime ait olduğu belirlenemez. Birincil anahtar sayesinde öğrencilere verilecek olan bu bilginin tekrar edilmesi önlenmiş olur. Bir öğrencinin numarası başka bir öğrenciye ait olamayacağı için numara bilgisi birincil anahtar olarak seçilebilir. Yabancı Anahtar (Foreign Key) İlişkiyi oluşturan asıl bileşen yabancı anahtar dır. Birbirleriyle ilişkili olan iki tablo arasındaki hangi sütunların ilişkili olduğu, yabancı anahtar ile belirlenebilir. Yabancı anahtar, ilişkisel tablo mantığında tablodaki bir sütundaki bilginin başka bir tabloda, hangi sütundaki veriyi işaret ettiğini gösterir. Diğer tablodaki sütun birincil anahtar olmalıdır. Çünkü işaret edilen sütunda veri tekrarı olmamalıdır. Bu durumu örnekle açıklayalım. * Örnek: Basit bir adres defteri için bir tablo yeterlidir. Bu tabloda kişinin adını soyadını, adresini ve telefonunu tutmak istersek tutulacak her bilgiyi bir sütun olarak tanımlayabiliriz. Oluşturulan her bir satır da adres bilgilerini tutmak istediğimiz kişileri ve onların adres bilgilerini gösterir. Şekil 2 de bu durumu takip edebilirsiniz. Adi Soyadi Adres Telefon Ahmet Yılmaz 5. cad. Emek 2154444 Mehmet Doğan 2. cad. Keçiören 2121111 Ayşe Dursun 1. Sok. Yenimahalle 6572222 Melek Çelik 11. sok. Altındağ 3655555 Şekil2. Adres defteri tablosu Eğer tutulacak veriler ilişkili değilse bağımsız oluşturulacak tablolar yardımıyla veriler düzenli bir şekilde saklanabilir. Bazı durumlarda istenilen verileri tek bir tabloda tutmak zor olabilir. Şu örneği ele alalım. Öğrencilerin kişisel ve çeşitli derslerden aldıkları notlar veritabanında saklanmak istensin. Kişisel bilgileri adı, soyadı, numarası, sınıfı olsun. Not bilgileri, dersin adı, 1.sınav 2.sınav olsun. Öncelikle bu bilgileri tek tabloda düzenlemeye çalışalım. Öğrencinin kişisel bilgileri için adı, soyadı, numara ve sınıfı alanları oluşturulabilir.

Muhtelif ders sayısını belirleyip buna göre alanlar oluşturabiliriz. Örneğin 2 ders mevcut ise her bir dersi için 1.dersin adı,1.ders not, 1.ders not2, 2.dersin adı, 2.ders not1, 2.ders not2 gibi alanlar oluşturulabilir. Ortaya şekil 3 deki gibi bir tablo çıkar. Adi Soyadi Numarasi Sinifi Ders1_Adi Ders1_Not1 Ders2_Not2 Ders2_Adi Ders2_Not1 Ders2_Not2 Ahmet Yılmaz 09100000 1A Matematik 40 50 Türkçe 70 80 Ali Türker 09100254 1B Matematik 80 75 Ayşe Yiğit 09100151 1A Matematik 45 95 Türkçe 50 85 Şekil3. Öğrenci not tablosu? Bu şekilde bir tablo yapılandırmasının sınırlılıkları ve dezavantajları nelerdir? Böyle bir yapılanma bazı sorunları da beraberinde getirecektir. Bunlar; Dersler için oluşturulan sütunlar gereksinimi karşılamayabilir. Bu dersler için daha fazla sütun açılarak giderilebilir. Fakat veri tabanı yönetim sistemlerinde oluşturulabilecek sütunların sayısıyla ilgili bir sınırlama vardır. Kullanılan veritabanı yönetim sistemine göre farklılık gösterilebilir. Sütun sayısı sorunu aşılsa bile her sütun her satır için kullanılmayabilir. Örneğin bir öğrencinin 5, başka bir öğrencinin 10 dersi olabilir. Böyle bir durumda az dersi olan öğrenciler için kullanılmayan sütunlar oluşacak. Bu da beraberinde veritabanın gereksiz yere büyümesini getirecektir. Yukarıdaki tabloda Ali Türker in 2. dersinin olmaması bu durum için bir örnektir. Gereğinden fazla alan, tablonun yönetimini zorlaştırabilir. Böyle bir durumda ideal tasarım 2 tablo halinde ve ilişkisel olmalıdır. Öğrenciler için ayrı, notlar için ayrı bir tablo oluşturulmalıdır. Tabloların sütun yapıları şu şekilde olabilir. Öğrenci tablosu Notlar tablosu Adı Soyadı Numarası Sınıfı Dersin adı Not1 Not2 Tabloların sütun yapılarından anlaşılacağı üzere öğrenci tablosu öğrenci bilgilerini saklamak için, notlar tablosu ise ders ve o derse ait not bilgilerini saklamak için tasarlanmıştır.? Derslere ait not bilgilerinin hangi öğrencilere ait olduğu nasıl anlaşılacak? Bu noktadan itibaren tablolar arası ilişkilendirme mantığını yürütmeliyiz. Öğrenci tablosu bu durumda ana tablodur. Notlar tablosu ise detay tablosudur. Notlar tablosuna derslere ait not bilgilerinin hangi öğrencilere ait olduğunu gösteren bir alan daha eklemeliyiz. Buradaki alan öğrenciye ait öyle bir bilgiyi içermelidir ki bir öğrenciye ait olan bu bilgi, başka bir öğrencide

olmamalıdır. Bu bilgi biden fazla öğrencide olursa o öğrencilerin notları karışacaktır. Dolayısıyla tabloları ilişkilendirmenin bir anlamı olmayacaktır.? Notlar tablosuna eklenecek bu yeni sütun, öğrenciye ait hangi bilgiyi içermelidir? Öğrenci bilgilerini tek tek ele alalım. Adı bilgisi olamaz. Çünkü aynı isme sahip birden fazla öğrenci olabilir. Soyadı bilgisi için adı bilgisine ait durum geçerlidir. Adı ve soyadı bilgisini beraber kullanmak da bu durum için bir çözüm üretmez. Çünkü aynı ad ve soyada ait birden fazla öğrenci olabilir. Numarası bilgisini kullanmak çözüm olabilir. Çünkü yapı itibariyle aynı numaraya sahip birden fazla öğrenci olamaz. Fakat bu durumda şöyle bir problem ortaya çıkabilir. Numara bilgisi kullanıcı tarafından bilgisayara elle girildiği için hatalı girilme olasılığı vardır. Bu da bilgilerin karışmasına neden olabilir. Veritabanı yönetim sistemlerinde sütunlar için benzersiz sayılar üretmeye yarayan mekanizmalar vardır. Örneğin; Auto Increment (otomatik artırma) özelliği sayesinde bir sütundaki sayıların belirli bir sayıdan başlayıp tek tek artması sağlanabilmektedir. Bu sütundaki sayıları kullanıcı değiştiremez. Sistem, yeni kayıt eklendikçe artırma işlemini yapar. Böylece oluşturulan her kayıt için verilecek olan sayı benzersiz bir sayı olacaktır. Bu özelliği biz öğrencilere benzersiz bir numara vermek için kullanabiliriz. Bu şekilde her öğrenciyi tekil olarak tanımlayan bir alan elde etmiş oluruz. Örneğimizdeki Öğrenci tablosunda oluşturulacak bu yeni alana Ogrenci_ID ismini verelim. Ders ve not bilgilerinin hangi öğrencilere ait olduğunu belirtmek için notlar tablosunda da öğrencilere ait bu bilgileri tutabileceğimiz bir alan eklemememiz gerekir. Bu sütuna da Ogrenci_ID denilmesinde bir sakınca yoktur. Ortaya çıkan yeni durum ve tablolar arası ilişkiyi Şekil4 den takip edebilirsiniz. Şekil4. Öğrenci ve notlar tablosu arasındaki ilişki. Buradaki simgesi aradaki ilişkiyi göstermektedir. Ogrenci tablosundaki Ogrenci_ID alanı her öğrenci için otomatik atanan benzersiz bir sayı; notlar tablosundaki Ogrenci_ID alanı ise ders ve not bilgilerinin hangi öğrencilere ait olduğunu gösteren alandır. Ogrenci tablosunda Ogrenci_ID alanı, benzersiz bilgiler içermesi gerektiği için birincil anahtar olmalıdır. simgesi aynı zamanda yabancı anahtarı da göstermektedir. Yabancı anahtar notlar tablosunda tanımlanmıştır. Yani notlar tablosundaki Ogrenci_ID sütunundaki bilgilerin ogrenci tablosundaki Ogrenci_ID sütunundaki bilgileri işaret ettiğini bize göstermektedir.

Veriler girildikten sonra durumu anlamak daha kolay olacaktır. Şekil 5 de tabloların veriler girilmiş halini görebilirsiniz. Ogrenci tablosu Ogrenci_ID Adi Soyadi Numarasi Sinifi 1 Ahmet Yılmaz 09100000 1A 2 Ali Türker 09100254 1B 3 Ayşe Yiğit 09100151 1A Notlar tablosu Ogrenci_ID Dersin_adi not1 not2 1 Matematik 40 50 1 Türkçe 70 80 1 İngilizce 40 80 2 İngilizce 50 95 2 Türkçe 90 40 2 Matematik 80 75 3 Türkçe 80 85 3 Matematik 45 95 3 İngilizce 100 45 Şekil 5. Öğrenci ve notlar tabloların veri girilmiş hali. Notlar tablosundaki Ogrenci_ID sütununa bakıldığında, derslere ait not bilgilerinin Öğrenci tablosundaki hangi öğrencilere ait olduğu anlaşılmaktadır. İlişkisel veritabanı modelinin sorgulama özelliği, öğrenci ve o öğrencilere ait ilişkisel bilgileri bir arada görmemize olanak sağlamaktadır.! ID ifadesi İngilizce identification kelimesinden gelir. Türkçe karşılığı kimlik demektir. Veritabanlarında verileri benzersiz tanımlayan sütunlara ID ismini vermek bir gelenek haline gelmiştir. Bu yüzden bu ifade kullanıldı. Türkçe veritabanı yönetim sistemlerinde oluşturulan tablolar için bazen bu sütun otomatik oluşturulur ve adı da kimlik olarak atanır.! Veritabanı yönetim sistemlerinde tablo ve sütunları isimlendirmede, boşluk karakterinin, Türkçeye özgü karakterlerin kullanılmaması gibi bazı kurallar vardır. Bu yüzden sütun ve tablo isimleri, kullanılan ifadelerden farklılık gösterebilir. İlerleyen ünitelerde bu duruma değinilecektir. Kısıtlayıcı (Constraint) Herhangi bir alan için girilebilecek verileri sınırlayan kurallara kısıtlayıcı denir. Eğer kullanıcı, kısıtlayıcının istediği şekilde veri girmezse veri tabanı yönetim sistemi hata verir.

Görünüm (View) Görünümler, Veritabanında önceden kaydedilmiş SQL sorgu ifadeleridir. Örneğin bir tablodaki kayıtların tamamı ya da bir kısmı listelenmek istenebilir. Bu listelemeyi sağlayan sorgu ifadesi her ihtiyaç duyulduğunda tekrar yazılmak yerine görünümden çağrılabilir. Kayıtlı Yordamlar (Stored Procedures) Veritabanı üzerinde işlem yapmayı sağlayabilen SQL ifadeleri, çalıştırılmadan önce veri tabanı yönetim sistemi tarafından değerlendirilerek ve derlenerek sonuçları geriye döndürülür. Değerlendirilen ve derlenen SQL ifadeleri veri tabanı yönetim sisteminin içinde saklanabilir. Saklanabilen bu nesnelere kayıtlı yordamlar denir. Kayıtlı yordamlar görünümlerin daha ileri bir aşamasıdır. Kayıtlı yordamlar kayıtlar üzerinde görünümlerin yaptığından daha fazla işlem yapabilmektedir. Tetikleyiciler (Triggers) Tetikleyiciler kayıtlı yordamların özel bir türüdür. Yapılan bir işlem sonucunda otomatik olarak arka planda çalışması için hazırlanmış bir yordamdır. Örneğin bir tablodan bir kayıt silindiği zaman başka bir tablodaki kayıtların silinmesi gerekebilir. Bu durumda tetikleyiciler işe yarayabilir.! Bu bileşenler, temel nitelikte olmalarına karşın veritabanı yönetim sistemleri arasında farklılıklar gösterebilir. Bizim ders için kullanacağımız MSSQL 2008 veritabanı yönetim sisteminde bu bileşenleri bulmak mümkündür.! SQL (Structured Query Language Yapılandırılmış Sorgu Dili) verileri yönetmek için tasarlanmış bir veritabanı dilidir. Sağladığı komutlar ya da ifadeler sayesinde veritabanındaki tablolara kayıtlar eklenebilir, silinebilir, listelenebilir ve daha birçok işlem yapılabilir. Günümüz veritabanı yönetim sistemlerinin çoğu SQL ifadelerini desteklemektedir.

MSSQL Server 2008 Express Programının Kurulumu MSSQL Server, Microsoft firması tarafında geliştirilen bir veritabanı yönetim sistemidir. Geniş kullanım alanı olmasından dolayı ders için kullanılacak veritabanı yönetim sistemi olarak bu veritabanı yönetim sistemi seçildi. Ürünün en son sürümü MSSQL 2008 dir. Ürünün 180 günlük deneme sürümünü http://www.microsoft.com/sqlserver adresinden temin edebilir ve bilgisayarınıza yükleyebilirsiniz. Kurulum dosyası işletim sisteminizin 32 bit ya da 64 bitlik olmasına göre değişmektedir. Bu yüzden doğru sürümü yüklediğinizden emin olmalısınız. 32 bit için uyumlu sürüm X86, 64 bit için uyumlu sürüm X64 dür. Kurulum dosyası 1 GB ın üzerinde bir boyuta sahiptir. Bu yüzden İnternet bağlantısının düşük olduğu yerlerde dosyayı bilgisayarınıza yüklemek çok zaman alabilir hatta imkânsız hale gelebilir. Temel işlemleri yapabileceğiniz daha az boyuta sahip fakat kullanımı için süre sınırlaması olmayan MSSQL 2008 Express sürümü bulunmaktadır. Dersimizde bu sürümden yararlanılacaktır. Anlatılacak olan işlemler MSSQL in eski sürümlerinde de yapılabilmektedir. MSSQL Server 2008 Express Programını Çalıştırmak MSSQL Server 2008 Express programını bilgisayarınıza kurduğunuzda; Başlat menüsünün Programlar bölümünde Microsoft SQL Server 2008 isimli bir program grubu oluşturur. Buradaki SQL Server Management Studio kısayoluna tıklayarak MSSQL Server 2008 Express programını çalıştırabilirsiniz. Şekil 1. MSSQL Server 2008 Express programını çalıştıran kısayol Programı çalıştırdıktan sonra Şekil 2 deki bağlantı penceresi karşınıza gelecektir.

Şekil 2. MSSQL Server 2008 Express bağlantı penceresi Buradaki seçenekleri açıklayalım. Server Type, sunucu türünü belirtmek için kullanılır. Database Engine seçeneği ile veritabanı sunucusunun bütün özelliklerine ulaşabilirsiniz. SQL Server Compact Edition seçeneği ile yalnızca sunucudaki tek bir veritabanına bağlanabilirsiniz. Server Name, bağlanılacak veritabanı sunucusunu belirlemeye yarar. Başlangıçta kurulu olduğu bilgisayarın ismi gelir. Eğer isterseniz yerel ağınızda bulunan diğer bilgisayarlardaki MSSQL sunuculara da bağlanabilirsiniz. Authentication, veritabanı sunucusuna bağlantı yöntemini belirler. İki seçenek vardır. Windows Authentication seçeneği, sunucunun üzerinde çalıştığı bilgisayarda tanımlı olan kullanıcıların bağlanmasını sağlar. Bu seçeneği seçtiğinizde, kullanıcı adı ve şifre bilgisi girmeden veritabanı sunucusuna bağlanabilirsiniz. SQL Authentication seçeneği, sunucu bilgisayarda tutulan kullanıcı bilgileri ile sisteme bağlanılmasını sağlar. Bu durumda sunucuda tanımlı olan bir kullanıcı adı ve şifre bilgisi girmeniz gerekir. Seçenekleri belirledikten sonra Connect düğmesine basıp MSSQL Server 2008 Express e ulaşabilirsiniz. Veritabanı sunucusuna bağlandıktan sonra karşımıza Şekil 3 deki pencere gelir. Pencerenin sol tarafında Nesne Gezgini (Object Explorer) bulunmaktadır. Bu bölümde veritabanı ile ilgili bütün nesnelere (veritabanları, tablolar, görünümler, kayıtlı yordamlar gibi) ulaşılabilirsiniz. Nesne Gezgini (Object Explorer) üzerinde Databases nesnesi üzerine çift tıklandığınızda ya da sol tarafındaki simgesine tıklandığınızda mevcut veritabanları görebilirsiniz. Diğer nesneleri görüntülemek için yine aynı yöntemi izleyebilirsiniz.

Şekil 3. Nesne Gezgini (Object Explorer) MSSQL de Veritabanı Oluşturmak Veritabanı, bileşenlerinin içerisinde saklı olduğu bir klasör olarak düşünülebilir. Bir konuyla ya da olguyla ilgili düzenli bilgiler tutmaya başlamanın ilk adımı bir veritabanı oluşturmaktır. Oluşturulacak veritabanının isminin konuyla ilgili olması önemlidir. Bunun yanında veritabanın isimlendirilmesiyle ilgili İngilizce karakterlerin kullanılması, boşluk ve noktalama işaretlerinin kullanılmaması gibi bazı genel kurallar olsa da MSSQL Server 2008 Express bu konuda esnektir. Fakat diğer veritabanı yönetim sistemlerinde ya da eski sürümlerde aynı şeyden bahsetmek söz konusu olmayabilir. Bu yüzden tutarlı olması için yine de kullanılan örneklerde bu kurallara dikkat edelim. Örnek olarak bir mağazanın personeli, müşterileri ve müşterilerine ait sipariş bilgilerini tutmak için magaza isimli bir veritabanı oluşturalım. Bir veritabanı oluşturmak için; Databases nesnesi üzerinde farenin sağ tuşuna tıklanır. Çıkan seçeneklerden New Database seçeneğini seçilir. Karşımıza şekil 4 deki pencere gelecektir. Bu pencerede Database Name: bölümüne veritabanının ismini yazıp Ok düğmesine basarak veritabanı oluşturulabilir.

Şekil 4. Veritabanı oluşturma penceresi Veritabanı oluşturma penceresinde, fazladan bir işlem yapmadan, yalnıza veritabanın ismini girerek veritabanını oluşturabilirsiniz. Fakat bu penceredeki seçenekler sayesinden veritabanına ait bazı özellikleri belirleyebilirsiniz. Bunlardan bazıları şunlardır: General Sayfası Seçenekleri Owner: Veritabanına hangi kullanıcıların erişebileceğini belirler. Burada bir işlem yapılmayıp <default> bilgisi bırakılırsa aktif kullanıcı veritabanının sahibi olarak atanır. Database Files: Veritabanın fiziksel dosyalarının hangi klasörde saklanacağı belirlenebilir. Burada iki tip dosya vardır. Birincisi dosya veritabanının esas dosyası, ikin dosya ise veritabanı ile ilgili yapılan işlemlerin listesini tutan günlük (log) dosyasıdır.

Options Sayfası Seçenekleri: Collation: Veritabanının karakter setini ayarlamak için kullanılır. Karakter seti, dillere özgü karakterlerin girilebilmesini sağlar. Türkçeye ait karakterleri girebilmek için Türkçe karakter seti belirlenmelidir. Yanlış karakter seti belirlemek bazı karakterlerin girilememesine neden olabilir. Buradaki seçenek <server default> olarak bırakılırsa MSSQL Server 2008 Express programının kurulduğu bilgisayarın bölgesel ayarlarına göre karakter seti belirlenir. Eğer bilgisayar Türkçe bölgesel ayarlara göre kurulmuşsa herhangi bir değişiklik yapmaya gerek yoktur. Recover model: Veritabanının bozulması olasılığına karşı veri tabanının kurtarılma modelini belirler. Üç seçenek sunar. Kurtarma Modeli Simple Full Bulk-Logged Açıklama Bu kurtar modeli veritabanın en son yedeklerinin yüklenmesini sağlar. İçlerindeki en hızlı fakat kaybedilen veri miktarının en fazla olma olasılığının olduğu seçenektir. İşlem günlüklerinin de yedeklenmesini sağlar. Bu günlüklerden faydalanarak veri kaybının en düşük seviyede tutulmasını sağlar. Full modele benzer. Fakat günlük bilgilere detaylı olarak tutulmaz. Böylelikle günlük bilgileri az yer kaplar. Büyük ölçekli, performansın en üst seviyede olması gerektiği durumlar için idealdir. Compatibility Level: Veritabanın önceki sürümlere uyumluluğunu belirlemeye yarar. MSSQL 2008 de hazırlanan bir veritabanının MSSSQL 2000 tarafından yönetilebilmesi için uyumluluğunun bu seçenek ile belirlenmesi gerekir. MSSQL de Veritabanlarıyla İlgili Diğer İşlemler Veritabanının İsmini Değiştirme: İsmini değiştirmek istediğiniz veritabanın üzerinde farenin sağ tuşuna tıklayıp Rename komutunu seçerek veritabanının ismini değiştirebilirsiniz. Veritabanını Silmek: Silmek istediğiniz veritabanının üzerinde farenin sağ tuşuna tıklayıp Delete komutunu seçerek ile veritabanını silebilirsiniz. Veritabanının Özelliklerini Görüntülemek ve Değiştirmek: Veritabanının oluştururken veritabanın karakter seti, kurtarma modeli, uyumluluk seviyesi gibi bazı özelliklerinin belirlenebileceğinden bahsetmiştik. Bir veritabanının özelliklerini görüntüleyip değişiklik yapmak için, o veritabanı üzerinde farenin sağ tuşuna tıklayıp Properties komutuna tıklayabilirsiniz.

Şekil 5. Veritabanın adının değiştirme, silme ve özelliklerini görüntüleme komutları Veri Tipleri Tablolar oluşturulurken alanların saklayacağı verilerin tiplerinin belirtilmesi gerekir. Girilecek veri, metin, tam sayı, ondalıklı sayı ya da tarih olabilir. Bu yüzden tablo oluşturmaya geçmeden önce MSSQL Server 2008 Express de kullanılan veri tiplerinin açıklanmasında fayda vardır. MSSQL Server 2008 Express de kullanılan veri tipleri şunlardır: Tamsayı Veri Tipleri Sayısal veri tipleri tamsayı ve ondalıklı sayı veri tipleri olmak üzere ikiye ayrılırlar. Tamsayı veri tiplerinde sayıların ondalık kısımları girilememektedir. Bit, 1 ya da 0 değerini saklamak için kullanılır. Genellikle Evet/Hayır şeklindeki mantıksal bilgileri tutmak için kullanılır. Örneğin bir öğrencinin burs alıp almadığı bilgisini tutmak için kullanılabilir. Burs alıyorsa 1, almıyorsa 0 şeklinde veritabanında tutulabilir. Veritabanında 1 byte lık yer kaplar. Tinyint, 0 ile 255 arasındaki sayıları tutmak için kullanılır. Veritabanında 1 byte lık yer kaplar.

Smallint, -32.768 ile 32.767 arasındaki sayıları saklamak için kullanılır. Veritabanında 2 byte lık yer kaplar. Int, -2.147.483.648 ile 2.147.483.647 arasındaki sayıları saklamak için kullanılır. Veritabanında 4 byte lık yer kaplar. Bigint, -9.223.372.036.854.775.808 ile 9.223.372.036.854.775.807 arasındaki verileri saklamak için kullanılır. Veritabanında 8 byte lık yer kaplar. Kesin Ondalık Sayı Veri Tipleri Ondalık sayıların hem tamsayı bölümlerini hem ondalık bölümlerini tam olarak saklayan veri tipleridir. Smallmoney, -214.768,3648 ile 214.748,3647 arasındaki sayıları saklamak için kullanılır. Ondalık tarafında 4 hane saklayabilir. Aynı zamanda para birimi bilgisini de saklayabilmektedir. 10 bin farklı para birimini saklayabilmektedir. Veritabanında 4 byte lık yer kaplar. Money, -922.337.203.685.477,5808 ile 922.337.203.685.477,5807 arasındaki sayıları saklayabilir. Ondalık tarafında 4 hane saklayabilir. Aynı zamanda para birimi bilgisini de saklayabilmektedir. 10 bin farklı para birimini saklayabilmektedir. Veritabanında 8 byte lık yer kaplar. Numeric veri tipinde saklanacak sayınının basamak sayısı tanımlanabilmektedir. Sayıların tam ve ondalık basamak sayıları belirtilerek bu işlem gerçekleşmektedir. Numeric veri tipinin boyutu, belirtilen bu bilgilere göre değişkenlik göstermektedir. Hem negatif hem de pozitif 38 basamağa kadar sayı saklayabilir. Aşağıdaki tabloda bu bilgileri bulabilirsiniz. Toplam Basamak Kapladığı Alan Sayısı 1-9 5 byte 10-19 9 byte 20-28 13 byte 29-38 17 byte Numeric alan tanımlandığında basamak sayılarının belirtilmesi gerekir. Alan tanımlama penceresinin özellikler (properties) bölümündeki precision seçeneği sayının toplam basamak sayısını, scale seçeneği ise ondalık basamak sayısını belirlemek için kullanılır. İlk oluşturulduğunda bu değerler tüm basamaklar için 18, ondalık basamaklar için 0 dır. Decimal veri tipi numeric ile eşdeğerdir. Aynı amaçla kullanılırlar fakat isimleri farklıdır. Yaklaşık Veri Tipleri

Float, 1,79E+308 ile -2,23E-308 arasındaki, 0 ve 2,23E-308 ile 1,79E+308 arasındaki sayıları saklamak için kullanılır. 4 byte dan 8 byte kadar yer kaplayabilir. Bu girilen sayılara bağlıdır. Real, 3,40E + 38 ile -1,18E 38 arasındaki, 0 ve 1,18E 38 ile 3,40E + 38 arasındaki sayıları saklamak için kullanılır. Veritabanında 4 byte lık yer kaplar.? Yaklaşık ve Kesin ondalık veri tiplerine neden bu isimler verilmiştir? Aralarındaki fark nedir? Araştırınız. Metinsel Veri Tipleri Alfabedeki harf, özel işaret ve rakamların girilmesi için kullanılan veri tipleridir. Char, ANSI karakterleri saklamak için kullanılır. Her bir karakter veritabanında 1 byte lık yer kaplar. En fazla 8000 karaktere kadar veri saklanabilir. İsim bilgilerini, adres bilgilerini saklamak için bu tipi kullanılabilir. Char tipinde bir veri tanımlandığında verinin toplam uzunluğunun da belirtilmesi gerekir. İlk oluşturulduğunda Char(10) şeklinde bir ifadeyle karşımıza çıkar ki bu en fazla saklayabileceği karakter sayısını 10 olduğunu göstermektedir. Saklayabileceği toplam karakter sayısını, alan tanımlama penceresinin özellikler bölümündeki Length seçeneği ile belirleyebiliriz. Char veri tipinin uzunluğu ne kadar tanımlandıysa veritabanında o kadar yer kaplar. Bu alana girilen bilginin uzunluğunun bir önemi yoktur. *Örneğin isimleri tutmak için oluşturulacak alanı char(15) şeklinde belirleyelim. Bu alana Ali ismi de girilse Abdurrahman ismi de girilse bu alanda oluşturulan kayıtlar 15 byte lık yer kaplar. 15 karakterin üzerinde bir isim girildiğinde fazla kısımlar saklanmaz. Varchar veri tipi de Char veri tipine benzer. Aynı şekilde girilebilecek en uzun karakter sayısı belirtilir. Aralarında önemli bir fark vardır. Varchar tipi tanımlanmış bir alanda girilen veri, veritabanında uzunluğu+2 byte kadar yer kaplar. Bu veritabanın gereksiz yere büyümesini engeller. *Örneğin Varchar(15) şeklinde tanımlanmış bir isim alanına Ali bilgisi 3 karakter+2 = 5 byte yer kaplar. Varchar alanında girilecek karakter sayısının 8000 i aşacağı durumlarda MAX bilgisi girilebilir. Bu durumda varchar, 2 31-1 (2.147.483.647 = ~2GB) byte lık depolama kapasitesine kadar çıkabilir.? Hangi durumlarda Char ve Varchar veri tipleri birbirlerinin yerine tercih edilebilir? Araştırınız. Nchar ve Nvarchar veri tiplerinin özellikleri char ve varchar veri tiplerinin özelliklerine benzer. Fakat Unicode karakterleri sakladıkları için her karakter veri tabanında 2 byte lık yer kaplar. 4000 karaktere kadar veri saklayabilir. Text, 8000 karakterden fazla ANSI karakteri saklamak için kullanılır. En fazla karakter saklama kapasitesi 2 31-1 (2.147.483.647) karakterdir. Girilen karakter dizisinin uzunluğuna göre saklama alanı daha az olabilir.

Ntext, 4000 karakterden fazla Unicode karakteri saklamak için kullanılır. En fazla karakter saklama kapasitesi 2 30-1 (1.073.741.823) karakterdir.? ANSI ve Unicode karakterlerinin özellikleri nelerdir? Araştırınız. Tarih ve Zaman Veri Tipleri Date, tarih bilgisini tutmak için kullanılır. 01.01.0001 ile 31.12.9999 arasındaki tarihleri saklayabilir. Zaman bilgilerini tutmaz. 3 byte lık yer kaplar. Smalldatetime, tarih ve zaman bilgisi tutmak için kullanılır. Tarih, saat ve dakika bilgilerini tutabilir. Saniye bilgilerini tutmaz. Veritabanında 4 byte lık yer kaplar. Tutabileceği tarih aralığı 01.01.1900 tarihinden 06.06.2079 tarihine kadardır. Saat aralığı ise 00:00:00 dan 23:59:59 a kadardır. Datetime, milisaniye ye kadar tarih ve zaman bilgisini saklamak için kullanılır. Veritabanında 8 byte'lık yer kaplar. 01.01.1753 den 31.12.9999 a kadar tarih bilgisi, 00:00:00 dan 23:59:59.997 a kadar da zaman bilgisi tutabilir. Binary (İkili) Veri Tipleri Bu veri tipleri; resim, müzik, video gibi kısacası metin ve sayı haricindeki veri türlerini de saklamak için kullanılan veri tipleridir. Binary, 8000 byte a kadar veri saklayabilir. Bu veri tipi ile beraber uzunluk da belirtilmelidir. Alan tanımlama penceresinin özellikler bölümündeki Length seçeneği ile bu yapılabilir. Uzunluğu tanımlandığında Binary(50) şeklinde gözükür. Bu 50 byte lık veri saklayabileceğini gösterir. Veritabanında kapladığı alan sakladığı bilginin uzunluğuna göre değişmez. Her kayıt için tanımlandığı kadar alan saklar. Varbinary, 8000 byte a kadar veri saklar. Saklayabileceği veri miktarı Binary veri tipinde olduğu gibi tanımlanır. Ancak veritabanında kapladığı alan tuttuğu bilginin uzunluğuna göre değişir. Kapladığı alan sakladığı bilginin uzunluğu+2 byte kadardır. Varbinary(max) şeklinde de tanımlanabilir. Bu durumda kapladığı alan 2 31-1 (2.147.483.647) byte a kadar çıkabilmektedir. Image veri tipi 2 31-1 (2.147.483.647) byte a kadar veriyi saklayabilir.? Burada MSSQL de en sık kullanılabilecek veri tiplerinden bahsedilmiştir. MSSQL de burada belirtilmeyen veri tipleri hangileridir? Özellikleri nelerdir? Araştırınız. Tablo Oluşturmak Daha önce de belirtildiği gibi tablo, bir veritabanının en önemli bileşenedir. Tablo bileşeni ile veritabanı, verileri saklar. Bu yüzden veritabanı işlemlerine genellikle tablo oluşturularak başlanır. Tabloyu oluşturmak için; Tablonun ait olacağı veritabanı üzerine için çift tıklanarak veritabanının bileşenleri görüntülenir.

Table bileşeni üzerinde farenin sağ tuşuna tıklanır. Çıkan seçeneklerden New Table komutu seçilir. Karşımıza şekil 6 daki tablonun alanlarının tanımlanacağı pencere gelir. Tablonun alanlarını tanımladıktan sonra File menüsünden Save ya da düğmesine basıp, tabloya bir isim verilerek tablo oluşturulur. Şekil 6. Alan tanımlama ekranı Tablonun alanları tanımlamak önemlidir. Alanların isimleriyle beraber belirlenecek başka özellikler de vardır. Karşımıza çıkan penceredeki seçenekleri tek tek ele alalım. Alan Adı (Column Name) Alan adının belirlemek için kullanılır. Alan isimlerinde MSSQL Server 2008 esnek olmasına rağmen yine de veritabanı isimlendirmede bahsedilen genel kuralların uygulanmasında fayda vardır. Veri Tipi (Data Type) Alana girilecek olan verinin tipini belirlemek için kullanılır.

Boş Veri Girişine İzin Ver (Allow Null) Bu özellik, tablolara kayıt girilirken alanın boş bırakılıp boş bırakılamayacağını belirler. Allow Null seçeneği seçilirse alan boş bırakılabilir, eğer seçenek iptal edilirse belirtilen alan boş bırakılamaz. MSSQL bu durumda hata mesajı vererek kayıt girişini engeller. Alan Özellikleri (Properties) Alan özellikleri, seçilen veri tipine göre değişmektedir. Önemli bir alan özelliği olan girilebilecek veri uzunluğunu belirleyen Length özelliğine buradan ulaşılabilmektedir. Bu da bazı veri tipleri için geçerlidir. Önemli bir alan özelliği de Identity Specification özelliğidir. Bu özellik sayesinde kayıtlara herhangi bir sayıdan başlayarak belirli bir sayıyla artma imkânı verilir. Identity Seed başlangıç sayısını, Identity Increment artış miktarını belirler. Başlangıçta bunların değer 1 dir. Is identity seçeneğine Yes bilgisini girerek bu özelliği aktif edebiliriz. Böylelikle sistem her bir kayda benzersiz bir sayı vermiş olacak. Bu tarz alanlara kullanıcı müdahale edemez. Yani verileri değiştiremez. Bu tarz alanlar genellikle tablolar arası ilişkilerin oluşturulması amacıyla oluşturulur ve birincil anahtar olarak belirlenir. Varsayılan Değer (Default Value) özelliği yeni kayıtlarda bir değerin o alana önceden girilmesi isteniyorsa kullanılır. Örneğin şehirlerin girileceği bir alanda eğer sıklıkla Ankara bilgisi girilecekse bu bilgi, varsayılan değer olarak belirlenebilir. Böylelikle zamandan ve emekten tasarruf edilmiş olur. Formula (Formül) özelliği alandaki değerin hesaplama sonucu ortaya çıkacağı zaman kullanılan bir özelliktir. Örneğin alış veriş tutarlarının tutulacağı bir tabloda kdv tutarları hesaplanarak bulunabilir. Birincil Anahtar (Primary Key) özelliğinden daha önce bahsedilmişti. Tablolarda her bir alanı tekil olarak tanımlayan bir alanın olmasında fayda vardır. Bu bize iki fayda getirir. 1. Tabloların kayıtlarına tekil olarak ulaşma olanağı sağlar. Bu, kayıtların silinmesi ve güncellenmesinde işe yarar. 2. Tablolar arası ilişki tanımlanmasında kullanılır. Bir alanı birincil anahtar yapmak için, alan üzerine gelindikten araç çubuklarında bulunan düğmesine basabilirsiniz ya da alanın üzerinde farenin sağ tuşuna tıklayıp Set Primary Key komutunu seçebilirsiniz. Şekil 7. Birincil anahtarın araç çubuğundaki yeri * Örnek: Magaza veritabanında personele ait bilgilerin tutulacağı bir tablo oluşturalım. Öncelikle alanları ve özelliklerini belirleyelim.

Alan Adı Personel_id Adi_soyadi Dogum_tarihi Adres İlce İl Ev_telefonu Maas Özellikleri Her personele ayrı bir sayı vermekte fayda vardır. Bu yüzden bu alan otomatik olarak artırılmalıdır. Tam sayı alanı olmalıdır. Alan veri tipi personel sayısına göre belirlenebilir. Örneğin 256 dan az personel çalışıyorsa tinyint seçilebilir. Bu alana sayıların otomatik verilmesi için isidentity seçeneğinin aktif hale getirilmesi gerekir. Örneğin 1 den başlayarak her bir personele artan sırada bir numara verilir. Yine bu alanın birincil anahtar olarak tanımlanmasında fayda vardır. Bu alanı personelin adı ve soyadı bilgilerini girmek için oluşturalım. İstenirse personelin adı ve soyadı farklı alanlarda da saklanabilir. Bu alan için Varchar(40) alan tipini kullanabiliriz. 40 bilgisi en fazla 40 karakterlik bir bilgi saklanacağını belirtir. Unutulmamalıdır ki alan uzunluk tanımlamaları muhtemel en uzun bilgiye göre yapılmalıdır. Bir personelin adı ve soyadı bilgisinin boş bırakılmaması gerekir. Bu yüzden Allow Nulls seçeneğini kaldırmamamızda yarar vardır. Personelin doğum tarihi bilgisini saklamak için oluşturulan bu alanın veri tipini date olarak belirleyelim. Bu alan için de varchar veri tipi kullanılabilir. Fakat uzunluğu değişkenlik gösterebileceği için bu alanın biraz uzun tutulmasında fayda vardır. Varchar(400) olarak bu alanı belirleyelim. Personelin oturdukları ilçelere göre özel bir işlem yapılacaksa bunu adres alanından farklı bir alanda saklamakta yarar vardır. Bu alanın veri tipini de Varchar(30) olarak tanımlayalım. Personelin oturduğu ilin bilgisini tutmak için bu alanı oluşturalım. En uzun isimli ilimiz Kahramanmaraş olduğuna göre bu alanın veri tipini Varchar(13) olarak belirleyebiliriz. Eğer personelin önemli bir bölümü Ankara da oturuyorsa bu alanın default değerini Ankara olarak belirlemek, veri girişi açısından faydalı olacaktır. Telefon bilgisi her ne kadar sayısal bir yapıya sahip olsa da bu sayılarla herhangi bir aritmetiksel işlem yapılmadığı için karakter olarak tanımlanmasında fayda vardır. Alan kodlarıyla beraber bir telefon numarasının sahip olabileceği uzunluk bellidir. 11 hane olabilir. Bu yüzden veri tipini char(11) olarak belirleyebiliriz. Personelin maaş bilgilerinin tutulacağı bu alanın tipini money olarak belirleyelim. Buradaki örnekte personele ait daha birçok bilgi saklanabilir. Şimdilik bu kadarı bizim için yeterli olacaktır. Alanlar tanımlandıktan sonraki durumu şekil 8,9 ve 10 dan takip edebilirsiniz.

Şekil 8. Personel tablosunun alanları tanımlanmış hali Şekil 9. Personel_id alanının artan sayı olarak tanımlanması Şekil 10. İl alanına varsayılan değer olarak Ankara değerinin atanması Alan tanımlamaları bittikten sonra tabloyu personel adı ile saklayalım. Şekil 11 de oluşturulan tabloyu görebilirsiniz.

Şekil 11. Oluşturulan personel tablosu! Burada belirtilen veri türleri, tasarlayan kişinin seçeneklerine göre değişiklik gösterebilir. Alan tanımlanırken göz önünde bulundurulması gereken en önemli 3 ölçüt şunlardır. 1. Girilecek veriye uygun olmalıdır. 2. Girilmesi muhtemel en uzun bilgiyi saklayabilmelidir. 3. Alan boyutları gereksiz yere büyük tanımlanmamalıdır. Alan boyutlarının çok büyük olması veritabanın boyutunun artmasına ve verimliliğinin azalmasına yol açabilir. Tablonun Adının Değiştirilmesi, Silinmesi ve Yapısının Değiştirilmesi Veritabanın isminin değiştirilmesi ve silinmesi ile ilgili anlatılan seçenekler tablolar için de geçerlidir. Değişiklik yapılmak istenen tablonun üzerinde farenin sağ tuşuna tıklayıp Rename komutuyla adını değiştirebilir, Delete komutuyla da tabloyu silebilirsiniz. Tablonun Yapısının Değiştirilmesi Tablo üzerinde farenin sağ tuşuna basıp çıkan seçeneklerden Design komutunu seçerek tablonun yapısının değiştirilebileceği bölüme ulaşabilirsiniz. Bu pencerede tabloya yeni alanlar ekleyebilir, mevcut alanları silebilir, alanların yerleri ve özelliklerini değiştirebilirsiniz.

Şekil 12. Tablonun yapısı üzerinde değişiklik yapmayı sağlayan Design komutu. * Örnek: Personel tablosuna, personelin TC kimlik numaralarını sağlayan yeni bir alan ekleyelim. Ancak eklenecek olan bu alan Personel_id ile adi_soyadi alanları arasında olsun. Tanımlı alanların bitiminden itibaren rahatlıkla yeni alanlar ekleyebilirsiniz. Fakat böyle bir durumda araya alan eklemeniz gerekir. Araya alan eklemek için şu adamları izleyebilirsiniz. Eklenecek alanın geleceği yer üzerinde farenin sağ tuşuna tıklanır. Bizim örneğimizde bu adi_soyadi alanının olduğu yerdir. Çıkan seçeneklerden Insert Column komutuna tıklanır. Şekil 13. Araya alan ekleme komutu Burada alan eklemek için boş bir bölüm oluşur. Alan adı ve özellikleri girilerek alan eklenir.? TC kimlik no alanın veri tipi ne olmalı? Daha önce de ev telefonu alanında da belirtildiği gibi bu alan sayısal bir yapıya sahip olsa da bu sayılarla herhangi bir aritmetiksel işlem yapılmamaktadır. Dolayısıyla bu alanın karakter veri tiplerinden birisiyle tanımlanmasında fayda vardır. Char(11) olarak bu alan tanımlanabilir. Tablonun alan yapısının son hali Şekil 14 deki gibidir.

Şekil 14. TC kimlik numarası alanı girildikten sonra personel tablosunun yeni hali! Tablo alanlarının yeniden yapılandırırken dikkatli olunmalıdır. Yapılacak bazı değişiklikler veri kaybına neden olabilir.! Tablonun yapısı üzerinde yapılacak bazı değişiklikler, tablonun kaldırılıp yeniden oluşturulması gerektirir. Şekil 15 deki gibi bir uyarı mesajı karşınıza gelebilir. Şekil 15. Tablo üzerindeki değişikliğin yapılamayacağını belirten mesaj. MSSQL Server 2008 Express de bu tarz değişiklikleri engelleyen bir seçenek, ilk kurulduğunda aktif haldedir. Bunu kaldırarak tablo üzerinde her türlü değişikliği yapabilirsiniz.

Bu değişikliği yapmak için; Tools menüsünü tıklanır. Options komutuna tıklanır. Bu pencerede Designers bölümünden Table and Database Designers seçeneğine tıklanır. Buradaki Prevent saving changes that require table re-creation seçeneğini iptal edilir ve Ok düğmesine tıklanır. Şekil 16. Tabloların yeniden oluşturulmasını gerektiren değişikliklerin yapılmasını engelleyen seçenek. Tablolara Kayıt Girmek ve Kayıtları Silmek MSSQL Server 2008 Express de tablodaki alanlara veri girmek için şu adımlar izlenebilir. Veri girmek istediğiniz tablonun üzerinde farenin sağ tuşuna tıklanır. Çıkan seçeneklerden Edit Top 200 Rows komutuna tıklanır. Ekranın sağ tarafına tablo alanlarıyla birlikte gelecektir. Burada veri girişi yapabilirsiniz. Şekil 17 de personel tablosunun veri girilmiş halini görebilirsiniz.

Şekil 17. Personel tablosunun veri girilmiş hali Bu tabloda personel_id alanındaki veriler sistem tarafından otomatik atanmaktadır. NULL değeri görünen alanlara ise herhangi bir veri girişi yapılmamıştır. En alttaki ile işaretli kayıt ise yeni kayıt girilmesine olanak tanımaktadır. simgesi Tablodaki kayıtları silmek için; Silinecek kayıtlar seçilir. Farenin sağ tuşuna tıklanır. Çıkan seçeneklerden Delete komutuna tıklanır. Şekil 18. Kayıtların silinmesini sağlayan Delete komutu. İndeks Oluşturmak İndeksler, daha önce de belirtildiği gibi bir tablodaki verilerin, belirli bir alan ya da alanlara göre sıralanmasını sağlayan yapılardır. İndeksler veritabanın performansı artıran yapılardır. Örneğin milyonlarca kaydı bulunan tabloyu indeks olmadan da belirli bir alana göre sıralatılıp listelenebilir. Fakat bu işlem biraz yavaş olacaktır. Oluşturulan indeksler sayesinde çok sayıda kaydı bulunan tabloların verilerine daha hızlı ulaşılabilir. MSSQL Server 2008 Express de indeks oluşturmak için; İndeksi oluşturulacak tablonun üzerine çift tıklanarak bileşenleri görüntülenir. Indexes bileşeni üzerinde farenin sağ tuşuna basılır.

New Index komutuna tıklanır. Karşımıza Şekil 19 daki Index oluşturma penceresi gelir. Bu penceredeki önemli seçenekler şunlardır: Index Name, İndeksin isminin belirlendiği yerdir. Unique, seçilen alandaki verilerin tekil sıralanmasını sağlar. Tekrar eden değerler varsa yalnızca bir tanesi sıralamaya katılır ve o şekilde listelenmesini sağlar. Örneğin aynı isim ve soyada sahip birden fazla kişi varsa bu alana göre yapılan indekslerde yalnızca birinci kişinin ismine ulaşılır. Index key columns, İndekslenecek alanların belirlendiği bölümdür. Add düğmesine basılarak tabloda indeksi yapılacak sütunlar seçilir. Sort order, sıralamanın artan ya da azalan olarak belirlendiği bölümdür. Ascending seçeneği artan (küçükten büyüğe doğru), descending seçeneği ise azalan (büyükten küçüğe) sıralama yapılmasını sağlar. İndeksin seçenekleri belirlendikten sonra Ok düğmesine tıklanarak indeks kaydedilir. Şekil 19. İndeks oluşturma ekranı Şekil 20 de oluşturulan indeksler gözükmektedir. Burada PK_personel indeksi dikkat çekmektedir. Anlaşılacağı üzere birincil anahtar seçilen alan için indeks oluşturulur. Şekil 20. Personel tablosunun indeksleri

Veritabanın Yedeklenmesi Veritabanının bozulmalara ve silinmelere karşı korumak için yedeklerini almakta fayda vardır. Böyle bir durumda yedekten yükleme yaparak verilerimizi kurtarabiliriz. Bir veritabanın yedeğin almak için; Yedeği alınacak veritabanı üzerinde farenin sağ tuşuna tıklanır. Karşımıza gelen menü seçeneklerinden Tasks seçeneğinin altındaki Back Up komutuna tıklanır. Karşımıza şekil 21 deki ekran gelir. Şekil 21. Veritabanı yedekleme ekranı Bu ekrandaki seçeneklere göz atalım. Database, yedeği alınacak veritabanını belirleneceği yerdir. Recover model, kurtarma modelini gösterir. Bu pencerede kurtarma modeli ile ilgili bir değişiklik yapılamaz. Hatırlanacağı üzere kurtarma modeli, veritabanı özellikleri belirlenirken seçilebilmektedir. Backup type, yedekleme tipinin belirlerler. Üç seçeneği vardır. Full seçilirse, veritabanının tamamının yedeği alınır. Differential seçeneği seçilirse bir önceki yedeklemeden farklı olan

bilgilerin yedeği olur. Fakat daha önce bir kez Full yedeklemenin yapılması gerekir. Transaction Log yapılan işlemlerin günlüğünün yedeğinin alınması sağlanır. Backup component bölümündeki database seçeneği, veritabanın yedeğini alınacağını belirtir. File or file group seçeneği ise yedekleri alınacak veritabanı dosyalarının seçilmesine olanak tanır. Name, yedeğe bir isim vermek için kullanılır. Description seçeneği ile alınan yedekleri açıklayan bilgiler girilebilir. Backup set will expire seçeneği alınan yedeğin süresinin ne zaman biteceğini gösterir. Yani belirtilen zaman diliminin üzerine çıkıldığında üzerine başka bir yedek yazılabilir. Burasının 0 bırakılması, alınan yedeklerin süresinin hiçbir zaman bitmemesi anlamına gelir. Yani bu yedeklere her zaman dönülebilir. Destination seçeneği ile yedek dosyaları ve bu dosyaların kaydedileceği klasörler belirtilebilir. MSSQL Server 2008 Express tarafından hedef bir klasör ve dosya, bu ekran ilk açıldığında belirlenir. Kullanıcı isterse yeni hedef klasör ve dosyalar ekleyebilir ya da kaldırabilir. Yedekleme seçenekleri belirlendikten sonra Ok düğmesine tıklanarak yedekleme işlemi başlatılır. Şekil 22 de magaza veritabanının yedeklendiği klasördeki yedek dosyası gözükmektedir. Şekil 22. Magaza veritabanının yedek dosyası? İşlem günlüğü (Transaction log) ne işe yarar? Araştırınız. Veritabanının Yedekten Tekrar Yüklenmesi Bir veritabanı bozulabilir ya da silinebilir. Kısacası kullanılmaz hale gelebilir. Bu durumda yedeklerinden tekrar veritabanına ulaşılabilir. Bir veritabanı yedeğinden tekrar yüklemek için;

Yedeği tekrar yüklenecek veritabanı üzerinde farenin sağ tuşuna tıklanır. Karşımıza gelen menü seçeneklerinden Tasks seçeneğinin altındaki Restore seçeneğine tıklanır. Burada iki seçenek karşımıza gelir. Eğer veritabanı yedeklenmişse Databases, dosyalar yedeklenmişse Files and Files Groups seçeneği seçilmelidir. Databases seçildiğinde karşımıza şekil 23 deki ekran gelir. Şekil 23. Yedekleri tekrar yükleme ekranı. Buradaki seçenekleri ele alalım. To database seçeneği ile yedeklerin hangi veritabanına aktarılacağı belirlenir. Yedeklerle veritabanının eşleşmesi gerekir. Aksi durumda MSSQL Server 2008 Express hata mesajı verir ve işlemi yapmaz. Eğer yedekleri alınan veritabanı silinmiş ise yedekler yeni bir veritabanına aktarılabilir. Bunun için, sadece bu bölüme yeni veritabanının isminin girilmesi yeterlidir.

To a point in time seçeneği ile belirli bir tarihte alınan yedeklere dönme imkanı sağlanır. Buradaki Most recent possible seçeneği ile en yakın zamanda alınan yedeklerin yükleneceği işaret edilmektedir. From database seçeneği ile yedeklenmiş veritabanlarının listeden seçilmesi ve bu veritabanlarının yedeklerinin yüklenmesi sağlanır. From device seçeneği ile disk üzerinde kayıtlı olan veritabanı yedek dosyasına ulaşılıp yedeklerin yüklenmesi sağlanır. Select the database sets to restore seçeneği ile seçilen veritabanına ait farklı yedekleme setleri görülebilir ve bunlardan hangilerinin tekrar yükleneceği belirlenebilir. Örneğin; şekil 23 de, magaza veritabanına ait tam bir yedeğin ve işlem günlüğü yedeğinin olduğu gözükmektedir. Hangisinin yükleneceği belirlenebilir. Seçenekler belirlendikten sonra Ok düğmesine basılarak yedeklerin yüklenmesi işlemi tamamlanır. Şekil 24. Yedekleme (Back Up) ve yedekleri yükleme (Restore) komutları! Restore komutunun seçeneklerine, Databases üzerinde farenin sağ tuşuna tıklandığında da ulaşılabilir.

Import ve Export İşlemleri Import, başka bir veri kaynağında bulanan verinin, veritabanına aktarılması işlemidir. Bu kaynaklar Microsoft Excel de hazırlanmış bir tablo, Microsoft Access deki bir veritabanı, ya da MSSQL Server 2008 Express deki başka bir veritabanı olabilir. Örneğin, Excel dosyasında bulunan verilerin veritabanındaki bir tabloya aktarılması gibi. Export, veritabanındaki verilerin başka veri kaynaklarına aktarılması işlemidir. Yani Import un tersidir. Örneğin, veritabanında bir tablodaki verilerin bir Excel dosyası haline getirilmesi gibi. * Örnek: Şekil 25 de Microsoft Excel 2007 de hazırlanmış örnek bir personel tablosu bulunmaktadır. Bu tablodaki verileri magaza veritabanındaki personel tablosuna aktaralım. Şekil 25. Veritabanına aktarılacak örnek Excel tablosu. Magaza veritabanı üzerinde farenin sağ tuşuna tıklanır. Çıkan seçeneklerden Tasks seçeneğinin altındaki Import Data komutuna tıklanır. Karşımıza Import ve Export sihirbazı gelir. Bu sihirbazın ilk adımı tanıtım amaçlıdır. İstenirse çıkması engellenebilir. Next düğmesine tıklayarak ikinci aşamaya geçilebilir. Karşımıza şekil 26 daki ekran gelir. Bu pencere aktarılacak verinin hangi kaynaktan alınacağı belirtilir. Veri kaynağının türüne göre bu penceredeki seçenekler değişebilir. Excel için gelen seçenekleri tek tek ele alalım. Data Source, aktarılacak verinin kaynağının belirtildiği yerdir. Excel file path, aktarılacak Excel dosyasının hangi klasörde olduğunun belirtildiği yerdir. Browse düğmesi ile klasörlere göz atılarak dosya bulunup getirilebilir. Excel version, aktarılacak Excel dosyasının sürümünün belirtildiği yerdir. Örnek olarak kullanılan dosya, Excel 2007 de hazırlandığı için bu bölümde dosya sürümü olarak Microsoft Excel 2007 belirtilmiştir. Seçenekler tanımlandıktan sonra Next düğmesine basılarak bir sonraki adıma geçilir.

Şekil 26. Aktarılacak verinin seçildiği adım. Bir sonraki adımda karşımıza Şekil 27 daki ekran gelir. Bu adım verilerin aktarılacağı hedef kaynak seçilir. Bu hedef kaynak MSSQL Server 2008 Express deki bir veritabanı olabileceği gibi Microsoft Excel, Microsoft Access gibi bir kaynak da olabilir. Örneğimizde veritabanına aktarılacağı için magaza veritabanı Database bölümünde seçilir. Buradaki First row has column names seçeneği, tablonun ilk satırının başlık satırı olup olmadığını belirtmek için kullanılır. Örnek tablomuzun ilk satırında başlık bilgileri bulunduğu için bu seçenek işaretlenmelidir. Bir sonraki adıma Next düğmesine basılarak geçilebilir.

Şekil 27. Hedef veri kaynağının belirtildiği adım. Bir sonraki adım, seçilen veri kaynağındaki hangi verilerin aktarılacağını belirlendiği adımdır. Buradaki seçeneklerden Copy data from one or more table or views seçeneği verilerin tamamının aktarılacağını belirtir. Write a query to specify data to transfer seçeneği ise bir sorgu ifadesi yazılarak alınacak verileri sınırlanmasını sağlar. Tablodaki tüm verilerin alınacağını düşünerek ilk seçenek seçilir ve bir sonraki adıma geçilir.

Şekil 28. Alınacak verileri seçilebildiği adım. Bir sonraki adım kaynak ve hedef veri kaynaklarının eşleştirildiği adımdır. Verinin doğru bir şekilde aktarılabilmesi için bu adımdaki işlemlerin doğru yapılması gerekir. Şekil 29 da Excel dosyasının Sayfa1 çalışma sayfasında bulunan verilerin personel tablosuna aktarılacağı belirtilmiştir. MSSQL Server 2008 Express otomatik bir eşleştirme yapar. Fakat bu eşleştirmede problemler olabilir. Bu yüzden Edit Mappings düğmesine tıklanarak eşleştirmelerin düzenlenmesinde fayda vardır. Bu düğmeye basıldığında şekil 29 daki ekran karşımıza gelir. Şekil 30 da da görüleceği üzere MSSQL Server 2008 Express, Excel dosyasındaki adresi ve ev_telefonu sütunlarını personel tablosundaki bir alanla eşleştirememiştir. Bu durumda eşleştirme elle yapılabilir. Destination bölümünde bu eşleştirmeler yapılabilir. Bu işlemler yapıldıktan sonra bir sonraki adıma geçilebilir.

Şekil 29. Kaynak ve hedef veri kaynaklarının eşleştirilmesi Şekil 30. Sütun eşleştirme penceresi.

Bir sonraki adım, veri tipi eşleştirmelerinin gözden geçirildiği adımdır. Kaynak ve hedef veri tipleri uyumsuz olabilir. Bu durumda veri tipleri arasında dönüştürme işleminin yapılması gerekir. Aksi durumda MSSQL Server 2008 Express veri aktarma işlemini tamamlamaz. Şekil 31 da adresi ve ev_telefonu sütunlarına ait veri tiplerinin dönüştürülmeyeceği gözükmektedir. Import işleminin tamamlanabilmesi için bu veri tiplerinin de dönüştürülmesi gerekir. Dönüştürme işleminin yapılacağı, convert bölümündeki kutucuklar işaretlenerek yapıldıktan sonra bir sonraki adıma geçilebilir. Şekil 31. Veri tipi eşleşmelerinin gözden geçirildiği adım. Artık bütün seçenekler belirlenmiştir. Bir sonraki adımda Run immediately seçeneği işaretlenip son adıma geçilir. Bu adım bilgi amaçlıdır. Yapılacak işlemlerin özetini verir. Finish düğmesine basılarak veri aktarma işlemi tamamlanır. Aktarma işlemi yapıldıktan sonra personel tablosunun son hali şekil 32 deki gibidir. Görüleceği üzere sistem personel_id alanların değerlerini otomatik üretmiştir.

Şekil 32. Personel tablosunun veri aktarıldıktan sonraki hali Export işleminin adımları Import işlemi ile aynıdır. Yapılması gereken tek şey kaynak ve hedefin yerlerini değiştirmektir. Yukarıda verilen örnekte kaynak magaza veritabanı, hedef Excel seçilseydi, yapılacak işlem veritabanındaki verilerin Excel e aktarılması olacaktı. Export işlemi, aktarılacak veritabanının üzerinde farenin sağ tuşuna bastıktan sonra Tasks seçeneğinin altındaki Export Data komutuna tıklanarak başlatılabilir.