ÜNİTE 1. VERİTABANI TEMELLERİ Ele Alınan Konular Veritabanı Veritabanı Yönetim Sistemleri Veritabanın Temel Bileşenleri Ünite Hakkında Bu ünite veritabanı ile ilgili temel kavramları içermektedir. Veritabanı, veritabanlarının temel bileşenleri, veritabanı yönetim sistemleri ve ilişkisel veritabanı yönetim sistemleri hakkında bilgi verilmektedir. İki tablo arasında ilişkinin nasıl olması gerektiği yine bu ünitede bulunmaktadır. Öğrenme Hedefleri Bu üniteyi tamamladığınızda; 1. 2. 3. 4. 5. 6. Veritabanının ne anlama geldiğini öğreneceksiniz. Bir veritabanının temel bileşenlerinin neler olduğunu öğreneceksiniz. Veritabanı yönetim sisteminin ne anlama geldiğini öğreneceksiniz. Veritabanı yönetim sistemlerinin özelliklerini öğreneceksiniz. İlişkisel veritabanı yönetim sisteminin ne anlama geldiğini öğreneceksiniz. İki tablo arasında ilişkinin nasıl kurulması gerektiğini öğreneceksiniz. Üniteyi Çalışırken Bu üniteyi çalışırken; 1. Bu ünitede veritabanı ile ilgili temel kavramlardan bahsedildiği için bu ünitedeki kavramları iyi öğrenin. Gerekirse tekrar edin. 2. İlişkisel tablolar oluşturmak veritabanı alanında önemli bir konudur. Bu yüzden siz de bu konuyla ilgili örnekler araştırın, kendiniz örnek oluşturmaya çalışın. Veritabanı (Database) Veritabanı (Database), en sade tanımıyla birbiriyle ilişkili bilgi topluluğudur. Bilgisayar terminolojisinde veritabanı, bilgisayarda sistematik şekilde saklanmış, programlarca işlenebilecek bilgi topluluğudur. Bu bilgiler; bilgisayar ortamında yönetilebilir, güncellenebilir, taşınabilir aynı zamanda bu bilgiler arasında ilişkiler tanımlanabilir. Literatürde veritabanı, veri bankası olarak da geçmektedir. Bu terim, veritabanı ile ilgili ilk çalışmaların yapıldığı zamanlarda kullanılmıştır. Günümüzde seyrek de olsa bazı dillerde (örneğin Portekizce) kullanılmaktadır. Yüksek miktarda veriyle uğraşmak bilgisayar teknolojisinin gelişmeye başladığı ilk yıllardan günümüze kadar süren, sürekli artan ve değişik boyutlar kazanan bir ihtiyaçtır. Bilgisayar ortamında bu verileri düzenli bir biçimde saklamak, bu verilere istenildiği an hızlı bir şekilde ulaşmak, bu veriler arasından istenilen ölçütlere uygun verileri listeleyebilmek, üzerinde hesaplamalar yapabilmek, bir veri tabanında yapılması gereken işlemlere örnek olarak gösterilebilir. Verileri yönetmek ilk zamanlar yalnızca tek bir kişi için yapılırken, günümüzde artık bu tarz uygulamalar çoklu kullanılıcılar için yapılmaktadır. Veritabanı yönetim sistemleri denildiğinde işte bu işlemleri yapan yazılımlar akla gelmektedir. Günümüzde geliştirilen pek çok yazılımda veritabanının önemli bir yeri vardır. Gerek işletim sistemi tabanlı paket programlarda olsun gerek web-tabanlı uygulamalarda olsun veritabanına sıkça başvurulur. Örneğin, bir muhasebe programında verileri düzenli bir şekilde saklamak önemlidir. Bir emlak firması, web sitesinde kullanıcılarının istediği ölçütlere uygun olan konutları bulabilmesi için verilerini bir veritabanında saklar. Bankacılık işlemlerinde de veri tabanının önemini görmek mümkündür. Bir banka müşterilerinin kişisel bilgilerini, hesap bilgilerini, bu hesaplarla ilgili hareket bilgilerini veritabanı yardımıyla saklar ve yönetir. Veritabanı için aşağıdaki örnekleri de verebiliriz. Telefon rehberleri Adres defterleri Öğrenci bilgileri ve notları Finans yazılımları Satış ve pazarlama yazılımları Soru bankası yazılımları Hasta takip sistemleri Eczaneler için ilaç bilgilerinin tutulması Veritabanına ihtiyaç duyulabilecek bu şekilde daha pek çok yazılım sayılabilir. Bir Veritabanında Bulunması Gereken Özellikler Saklamak istediğiniz veriler, bir adres defterindeki gibi basit bir yapıda olabilir ya da bankacılık işlemlerindeki gibi karmaşık bir yapıya sahip olabilir. Adres defterlerinde yüzlerle ifade edilebilecek kişilerin (Bu bir veri tabanı için hacmi küçük olan bir bilgidir.) tutulması yeterli olabilecekken bankacılık işlemlerinde milyonlarca kişinin bilgileri tutulmak istenebilir. Bazı veriler için güvenlik çok önemli değilken, özellikle bankacılık işlemlerinde saklanan bilginin güvenliği oldukça önemli olabilir. İster basit ister karmaşık yapıda olsun, ister az veri ister çok veri olsun, ister güvenlik ihtiyacı alt seviyede ister üst seviyede olsun günümüz veritabanlarının bulundurması gereken bazı özellikler vardır. Bunları şu şekilde sıralayabiliriz: Veritabanı veri saklama gereksinimini tam olarak karşılayabilmelidir. Veritabanındaki bilgiler güvenli bir şekilde tutulmalıdır. Veriler kolayca çağırılabilmelidir. Verilere ulaşabilmek için olabilecek en az çaba harcanmalı ve en kısa zamanda bu verilere ulaşılabilmelidir. Veritabanı içindeki verilerin güncellenebilmesi ve ekleme yapılabilmesi için veriler yönetilebilir olmalıdır. Veritabanı Yönetim Sistemleri Veritabanı yönetim sistemi (İngilizce: Database Management System, kısaca DBMS), veritabanlarını tanımlamak, oluşturmak, kullanmak, değiştirmek ve veri tabanı sistemleri ile ilgili her türlü işletimsel gereksinimleri karşılamak için tasarlanmış sistem ve yazılımlardır. Günümüzde kullanılan veritabanı yönetim sistemlerinden bazıları şunlardır: Oracle Database Microsoft Access Microsoft SQL Server Microsoft Visual FoxPro MySQL PostgreSQL Progress Veritabanı Yönetim Sistemlerinin Özellikleri Günümüz veri tabanı yönetim sistemlerinin özelliklerini şu şekilde sıralayabiliriz: Sorgulama: Sorgulama, bilgilerin çeşitli faktör ve şartların kombinasyonuna göre istenmesi işlemidir. Örneğin; “Sınıftan kaç kişi matematik dersinden 90 ya da üzeri not aldı” sorusuna yanıt arayan bir kişi veritabanı sorgulama dili yardımıyla buna cevap bulabilir ve bir raporlaştırma aracıyla bunun çıktısını elde edebilir. Yedekleme ve Çoğaltma: Veritabanın saklı olduğu disk bozulabilir ya da başka sorunlardan dolayı veritabanı zarar görebilir. Veritabanı yönetim sistemleri bu veritabanının yedeklerini periyodik olarak alacak ve bunların kopyalarını diğer veritabanı sunucu bilgisayarına aktaracak yardımcı araçlar sunarlar. Kural Uygulama: Bazen verilere kısıtlama getirilmek istenebilir. Örneğin; bir öğrenci işleri veri tabanında, bir dersten alınabilecek notlar 0 ile 100 arasında olmalıdır. Eğer bunun dışında bir not girilmek istenirse veritabanı yönetim sisteminden bunu engellemesini ve hata mesajı göstermesini isteyebiliriz. Veritabanı yönetim sistemleri bu şekilde kuraların eklenmesini ve kaldırılmasını desteklemektedir. Hesaplama: Belirli bir şarta uygun verilerin sayısını bulma, verilerin toplamını, ortalamasını alma, verileri belirli bir ölçüte göre sıralama, gruplama gibi işlemler günümüz veritabanı yönetim sistemleri tarafından desteklenmektedir. Güvenlik: Kimlerin verilere ulaşabileceği, kimlerin veriler üzerinde değişiklik yapabileceği veritabanı yönetim sistemleri tarafından belirlenebilecek özelikler arasındadır. Günlük Tutma (Logging): “Verilere kimler ulaştı?”, “Hangi bilgiler değiştirildi?”, “Ne zaman değiştirildi?” gibi kayıtlara veri tabanın yönetim sisteminin günlük tutma özelliği sayesinde ulaşılabilir. Veritabanı Modelleri Veri tabanı yönetim sistemlerinde verinin saklanması ve yönetilmesi için birçok veritabanı modeli kullanılmıştır. Bunlardan en sık kullanılanları; İlişkisel Hiyerarşik Network Nesnel veritabanı modelleridir. Hiyerarşik, network ve nesnel modeller ya çok eski oldukları için ya da geniş kullanım alanları bulamadıkları için terk edilmiştir. İçlerinden bir tanesi ön plana çıkmaktadır. O da İlişkisel veri tabanı modelidir. İlişkisel Veritabanı Yönetim Sistemleri İlişkisel veritabanı yönetim sistemi verilerin tablolarda satır ve sütunlar halinde tutulduğu ve yüksek veri tutarlılığına sahip veri depolama sistemidir. Günümüz ilişkisel veritabanı yönetim sistemleri bu modeli kullanmaktadır. Bu modelin en büyük özelliği veritabanlarının onları kullanacak olan uygulamalardan bağımsız olmasıdır. Örneğin, veritabanı içeren bir programı DELPHI programlama dilinde geliştiriyorsunuz. Bu programın veritabanı tasarımını, Microsoft SQL veritabanı yönetim sisteminde hazırlayıp bunu hazırladığınız programa entegre edebilir ve kullanabilirsiniz. İlişkisel modelde veriler tablolarda saklanır. Tablolar saklanacak verilerin özelliklerine göre bağımsız oluşturulabileceği gibi ilişkisel tablolar da oluşturulabilir. İlişkisel tablolarda, bir tablodaki veriler başka tablolardaki verilerle ilişkili olabilir. Tablodaki veriler üzerinde yapılan işlemler o tabloyla ilişkili diğer tablolara yansıtılabilir. Örneğin bir tablodaki bir veri silindiğinde onunla ilişkili diğer tablolardaki veriler de silinebilir. Listeleme bir ilişkisel tablolardaki bilgiler beraber listelenebilir. 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. 5. Sütun (Alan) 4. Sütun (Alan) 3. Sütun (Alan) 2. Sütun (Alan) 1. Sütun (Alan) Ş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. ? Not bilgileri için hangi sütunlar oluşturulmalıdır? 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 Ali Türker 09100254 1B Matematik 80 75 Ayşe Yiğit 09100151 1A Matematik 45 95 Türkçe 70 80 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 1 Ahmet 2 Ali 3 Ayşe Soyadi Yılmaz Türker Yiğit Numarasi 09100000 09100254 09100151 Sinifi 1A 1B 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. Değerlendirme Soruları 1. Aşağıdakilerden hangisi birbiriyle ilişkili bilgi topluluğuna verilen isimdir? a) Veri b) Veritabanı c) Tablo d) Satır e) Sütun 2. Aşağıda veritabanı bileşenlerinden hangisi önem derecesine göre diğerlerinden önce gelir? a) b) c) d) e) Tablo Birincil Anahtar (Primary Key) Yabancı Anahtar (Foreign Key) İndeksler Görünümler 3. Aşağıdaki veritabanı bileşenlerinden hangisi tablo alanlarına aynı verinin tekrar girilmesini engeller? a) Tablo b) Birincil Anahtar (Primary Key) c) Yabancı Anahtar (Foreign Key) d) İndeksler e) Görünümler 4. Aşağıdaki veritabanı bileşenlerinden hangisi iki tablo arasındaki ilişkiyi tanımlar? a) b) c) d) e) Tablo Birincil Anahtar (Primary Key) Yabancı Anahtar (Foreign Key) İndeksler Görünümler Musteri tablosu; MusteriNo: Her müşteriyi atanan benzersiz bir sayı. Adi: Müşterinin adı. Soyadi: Müşterinin soyadı. Adresi: Müşterinin Adresi. IsTelefonu: Müşterinin İş telefonu. Siparis tablosu; SiparisNo: Her siparişe atanan benzersiz bir sayı. Tarih: Sipariş tarihi. UrunAdi: Siparişi verilen ürünün adı. Tutar: Ürünün Fiyatı. 5. Yukarıdaki tablolar, bir firmanın müşteri ve bu müşterilere ait sipariş bilgilerini tutmak için oluşturulacaktır. Alan yapıları ve açıklamaları verilen tablolar arasında ilişki kurulacaktır. Buna göre Siparis tablosuna ilişki kurmak için eklenecek yeni alan, Musteri tablosunun hangi alanındaki verileri içermelidir? a) b) c) d) e) MusteriNo Adi Soyadi Adresi IsTelefonu