1 1.. İİÇ ÇİİN ND DE EK KİİLLE ER R 1. İÇİNDEKİLER ..................................................................................... 1 2. VERİ TABANI ..................................................................................... 3 2.1. Veri Tabanı Yönetim Sistemleri Sınıflandırma .................................................................. 4 2.1.1. Veri Modeline göre ................................................................................................................................. 4 2.1.2. Kullanıcı sayısına göre veri tabanları ...................................................................................................... 4 2.2. Neden Veri Tabanı Kullanılır? ........................................................................................... 4 2.3. Veri tabanının faydaları ...................................................................................................... 5 2.4. Veri Tabanı Yönetim Sistemleri (Programları) .................................................................. 6 2.5. Hangi veri tabanını seçmeli?............................................................................................... 6 2.6. Veri Tabanı Oluşturulurken Dikkat Edilecek Hususlar ...................................................... 7 3. VERİ TABANI YAPISI ....................................................................... 8 3.1. Veri Tabanında Nesneler .................................................................................................... 8 3.2. ACCESS Veri Tabanında Tablo Oluşturma ....................................................................... 9 3.3. Tabloda Kavramlar ve Özellikleri .................................................................................... 10 3.3.1. Sütun (Alan) Özellikleri ........................................................................................................................ 11 3.3.1.1. Sütun (Alan) Adı .......................................................................................................................... 11 3.3.1.2. Alan Tipi ...................................................................................................................................... 11 3.3.1.3. Geçerlilik Kuralı .......................................................................................................................... 15 3.3.1.4. Geçerlilik Metni ........................................................................................................................... 16 3.3.1.5. Varsayılan Değer ......................................................................................................................... 16 3.3.1.6. Gerekli ......................................................................................................................................... 16 3.3.1.7. Sıralı ............................................................................................................................................ 16 3.3.1.8. Unicode Sıkıştırma ....................................................................................................................... 17 3.3.1.9. Giriş Maskesi ............................................................................................................................... 17 3.4. Access’te Tablolara Veri Girişi ........................................................................................ 18 3.5. Veri Tabanında Anahtar.................................................................................................... 19 3.5.1. Tekil Anahtar ........................................................................................................................................ 20 3.5.2. Birincil Anahtar .................................................................................................................................... 21 3.5.3. Yabancı (Uzak) Anahtar ....................................................................................................................... 23 3.5.4. Örnekler ................................................................................................................................................ 23 3.6. Veri Tabanında Tabloları İlişkilendirme .......................................................................... 23 3.6.1. İlişkilendirme Türleri ............................................................................................................................ 24 3.6.2. İlişkilendirme için bir örnek .................................................................................................................. 26 3.6.3. İlişkilendirmenin Yapılması .................................................................................................................. 27 3.7. Sorgular ............................................................................................................................. 28 3.7.1. Sıralı Gösterim ...................................................................................................................................... 29 3.7.2. Koşul Belirterek Sorgu Oluşturma ........................................................................................................ 29 3.7.3. Bazı Fonksiyonlar ve İşlemler .............................................................................................................. 31 3.7.4. Gruplama .............................................................................................................................................. 33 3.7.5. Grup Fonksiyonları ............................................................................................................................... 33 3.7.6. Koşullu Hazır Fonksiyon Kullanımı ..................................................................................................... 35 3.7.7. Sorguda Çok tablo kullanımı ................................................................................................................ 37 3.7.8. Örnek sorular ve tasarımları .................................................................................................................. 37 4. Veri Tabanı En İyileştirme (Normalizasyon) ..................................... 42 4.1. Veri Tabanı Eniyileştirme Kuralları ................................................................................. 44 4.1.1. Alanları Parçalamak .............................................................................................................................. 45 4.1.2. Tablonun tek bir konusu olacak ............................................................................................................ 45 4.1.3. Her tabloda, konusuna uygun birincil anahtar olacak ........................................................................... 48 4.1.4. Tablodaki her alan birincil anahtara bağlı olacak ................................................................................. 48 4.1.5. Eğer birincil anahtar birden çok sütundan oluşuyorsa, tüm alanlar bu birincil anahtar sütunlarına bağlı olmalıdır ........................................................................................................................................................................ 49 4.1.6. Aynı alan birden fazla tabloda birincil anahtar olamaz ......................................................................... 49 4.1.7. Sütunlara yayılmış aynı türdeki alanlar varsa ayrı bir tabloda saklanmalıdır ....................................... 49 4.1.8. Hücrelere ayrı satırlarda yazılması gereken bilgiler için sütunlar oluşturulmuşsa, tek bir sütun oluşturulup satırlara yazılmalıdır .................................................................................................................................. 50 4.1.9. Uygun alan tipleri seçilmeli .................................................................................................................. 51 4.1.10. Tablo ve Alan İsimleri ........................................................................................................................ 52 4.2. Veri Tabanı Eniyileştirme Uygulaması ............................................................................ 52 4.3. Bazı Örnekler .................................................................................................................... 65 4.4. Çözülmüş Örnek ............................................................................................................... 67 5. SQL SERVER ..................................................................................... 68 5.1. SQL Server’e Bağlanma ................................................................................................... 68 5.2. SQL Server’de Veri tabanı oluşturma .............................................................................. 70 5.3. SQL Server’de Tablo ........................................................................................................ 71 5.3.1. SQL Server Tablo Özellikleri ............................................................................................................... 72 5.3.1.1. Alan Adı ....................................................................................................................................... 72 5.3.1.2. Alan Tipi ...................................................................................................................................... 73 5.3.1.3. Varsayılan Değer ......................................................................................................................... 74 5.3.1.4. Gerekli ......................................................................................................................................... 74 5.3.1.5. Otomatik Artış.............................................................................................................................. 74 5.3.1.6. Index ............................................................................................................................................ 74 5.4. SQL Server’de İlişkilendirmelerin Yapılması .................................................................. 74 5.5. SQL Server’de Sorgu Hazırlanması ................................................................................. 76 5.5.1. SQL Server Sorgu Tasarımı .................................................................................................................. 76 5.5.2. Sorguda Matematiksel İşlem ve Takma İsim ........................................................................................ 78 5.5.3. Sorguda Sıralama ve Sıralama Önceliği verme ..................................................................................... 78 5.5.4. Sorguda Süzme ve Çoklu Ölçüt Kullanımı ........................................................................................... 79 5.5.5. SQL Server’de Bazı Fonksiyonlar ve İşlemler...................................................................................... 79 5.5.6. Grup Fonksiyonları ............................................................................................................................... 80 5.6. SQL Server’de Stored Procedure ...................................................................................... 82 2 2.. V VE ER Rİİ T TA AB BA AN NII Veri, dağınık bilgi kümesidir. Veri, anlamlı bir şekilde düzenlendiği zaman yararlı bilgi olur. Bilgiyi elde etmeye yarayan işlenmemiş ham malzemeye veri denir. Veri tabanı, birbirleriyle ilişkisi olan verilerin tutulduğu, kullanım amacına uygun olarak düzenlenmiş veriler topluluğunun mantıksal ve fiziksel olarak tanımlarının olduğu bilgi depolarıdır. Veri tabanları gerçekte var olan ve birbirleriyle ilişkileri olan bilgilerden oluşur. Veri tabanı, birbiriyle ilişkili verilerin tekrara yer vermeden, çok amaçlı kullanımına olanak sağlayacak şekilde depolanmasını sağlayan yazılımlardır. Veri tabanı, bir konuyla ilgili çok sayıda kaydın tutulduğu bir bilgi havuzu olarak nitelendirilebilir. Veri tabanı programları, veri tabanı denilen bilgi havuzunu oluşturmak ve veri tabanından istenilen bilgiyi istenildiği şekilde alıp kullanabilmeyi sağlar. Veri tabanı: Birçok alanda hizmet vermek amacıyla birbiriyle ilişkili düzenli veriler oluşturmak, düzenlemek, depolama yapmak ve sorgulama yapmakta kullanılan, verilere doğru ve zamanında ulaşmak amacıyla oluşturulan yazılımlardır. Bilgisayar ortamında verilerin kalıcı olarak saklanmasında veri tabanı dosyaları kullanılmaktadır. Veri tabanı verilerin Harddisk üzerinde saklandığı bir dosyadır. Veri tabanı Yönetim Sistemi, veri tabanlarını oluşturmak, tanımlamak ve veri tabanlarındaki verileri işleyerek yeni bilgiler üretmek için kullanılan yazılımdır. Veri tabanı yönetim sistemi programları ile kendi veri tabanınızı oluşturabilir veya özel uygulamalar geliştirebilirsiniz. Veri tabanı yönetim sistemleri bilgisayar uzmanı olmayan kişilerin de kendi veri tabanlarını tasarlayıp veri tabanı uygulamalarını geliştirebilmelerini sağlar. Şu anda piyasada kullanılan veya geliştirilen, örneğin kayıt ve muhasebe türündeki programların tümü veri tabanı dosya yapısını kullanırlar. Bu tür uygulamalar, en basit açıklamayla ham bilgiyi alırlar ve işledikten sonra, örneğin raporlar şeklinde, kullanıcının hizmetine sunarlar. 22..11.. V Veerrii T Taabbaannıı Y Yöönneettiim mS Siisstteem mlleerrii S Sıınnııffllaannddıırrm maa 2 2..1 1..1 1.. V Veerrii M Mo od deelliin nee g gö örree Hiyerarşik Veri tabanları: Veri tabanları için kullanılan ilk modeldir. Bu veri tabanı tipi kişisel bilgisayarlarda kullanılmayan sadece ana bilgisayar ortamlarında çalışan yazılımlar tarafından kullanılmaktadır. Bu tipteki veri tabanına örnek IBM tarafından çıkarılan IMS yazılımını verebiliriz. Hiyerarşik veri tabanında bilgiler bir ağaç yapısında saklanırlar. Ağ Veri tabanları: 1960 yılında toplanan COCDASYL isimli bilimsel toplantıdaki veri tabanı çalışma grubu bilim adamlarının ortak çalışmaları ile hiyerarşik veri tabanlarının yetersizliğini gidermek amacıyla geliştirilmiştir. Ağ veri tabanları en karmaşık veri tabanı modelidir. İlişkisel Veri tabanları: 1970’li yıllarda E.F.Codd tarafından geliştirilmiştir. Bu veri tabanı yönetim sisteminde; veriler tablo şeklinde saklanır, veri alışverişi için özel işlemler kullanılır ve tablolar arasında ilişkiler belirlenir. Günümüzde hemen hemen tüm veri tabanı yönetim sistemleri ilişkisel veri modelini kullanır. Bu modelde veriler basit tablolar halinde saklanır. Tablolar, satır ve sütunlardan oluşur. Sütunlar bilgi alanlarını, satırlar ise bilgilerin içeriğini belirlerler. Düz Dosya Veri Tabanı: Bu tür programlarda tüm veri tabanı tek bir tabloya sığdırılmaktadır. Bu, birkaç kayıtta ortak olan herhangi bir bilginin her kayıtta tekrarlanacağı anlamına gelir. dBase, Word ve Excel bu tür programlara örnektir. 2 2..1 1..2 2.. K Ku ullllaan nııccıı ssaayyııssıın naa g gö örree vveerrii ttaab baan nllaarrıı Tek kullanıcılı ve çok kullanıcılı olmak üzere ikiye ayrılır. Günümüzde PC tabanlı VTYS’ler da dahil olmak üzere tek kullanıcılı veri tabanı yönetim sistemi kalmamıştır. Çok kullanıcılı veri tabanı yönetim sistemlerinde ise tek bir veri tabanına aynı anda çok sayıda kullanıcı erişir. 22..22.. N Needdeenn V Veerrii T Taabbaannıı KKuullllaannııllıırr?? Bilgisayar ortamında verilerin tutulması, saklanması ve erişilmesinde değişik yöntemler kullanılmaktadır. Bu yöntemlerden biri verilerin ayrı ayrı dosyalarda gruplanmasıdır. Bu geleneksel yöntemde veriler gruplara ayrılarak her grup ayrı bir dosyada saklanmaktadır. Bu yöntemde dosyalara erişim sıralı yada rasgele erişimli olabilmektedir. Verilerin bir merkezde tutulması zorunluluğu, verilerin artması, verilere aynı anda çok sayıda kişinin erişme ihtiyacı gibi sebepler geleneksel yöntemin yetersiz kalmasına sebep olmuştur. Geleneksel yöntemin yetersizliği veri tabanlarının geliştirilmesini ve kullanılmasını zorunlu hale getirmiştir. Geleneksel yöntemlerin sakıncaları: Veri tekrarı, veri tutarsızlığı ve verinin bütünlüğünü sağlama sorunları Verinin çok kullanıcılı sistemlerde paylaşılma özelliği yoktur Veriye erişim ve istenen veriyi elde etme güçlükleri Dosya sisteminde yönetilebilen haklar olmadığı için verilerin güvenlik ve gizlilik sorunları Her programlama dili kendi dosya yapısını kullandığı için tasarım farklılıkları Yedekleme ve verilerin kurtarılmasında sorunlar 22..33.. V Veerrii ttaabbaannıınnıınn ffaayyddaallaarrıı Tüm VTYS programları standart sorgulama dili SQL’i kullanır Her kullanıcıya sadece ilgilendiği verilerin sunulması VTYS programları ile kolayca uygulama geliştirilebilir Yedekleme, kurtarma işlemlerini VTYS kendi içindeki yazılımlarla çok kolay bir şekilde yapabilir Farklı veri tabanları arasında veri alışverişi çok kolay olmaktadır. Veri tekrarları ortadan kaldırılır ya da en aza indirilir. Veri tutarlılığı (Veri değişikliklerinin doğrudan veri tabanında yapılması, farklı ortamlarda farklı verilerin yer almaması) Veri Paylaşımı Veri bütünlüğü (Bir tabloda işlem yapıldığında, bu tablo ile ilişkili diğer tablolarda da işlem yapılır) Veri Güvenliği Veri bağımsızlığı (VTYS verilerin yapısı, yönetimi ile ilgilenir. Bu nedenle kullanıcı bunlarla uğraşmaz) 22..44.. V Veerrii T Taabbaannıı Y Yöönneettiim mS Siisstteem mlleerrii ((PPrrooggrraam mllaarrıı)) Access, Dbase, File Maker Pro, Paradox, SQL Server, Oracle vb. Veri tabanlarının özellikleri aşağıda sırasıyla anlatılmıştır. MS Access: Microsoft Office ürünüdür. Küçük ölçekli uygulamalar içindir. Tablo başına 2 GB a kadar veri depolayabilir. Aynı anda 255 bağlantıya izin verebilir. MS Windows dışındaki işletim sistemlerinde kullanılamaz. “Transaction logging” özelliğine sahiptir, ancak “trigger” ve “stored procedure” özelliklerine sahip değildir. MySQL: MySQL Inc. Windows, Linux, OS/2,Solaris, AIX vb. “trigger” ve “stored procedure” özelliklerine sahiptir, ancak “Transaction logging” özelliği bulunmamaktadır. Tablo başına 4 TB veri depolayabilir. IBM DB2: IBM. Access ve MySQL e göre daha performanslı, ancak küçük işletmelere göre daha yüksek maliyete sahiptir. Unix ve Windows üzerinde çalışabilir. Transaction logging”, “trigger” ve “stored procedure” özelliklerine sahiptir. Informix: Illustra. Ücretli ve güçlü bir veri tabanıdır. Orta ölçekli işletmelerin yükünü kaldırabilecek kapasitededir. 1994’deki Postgres kodundan geliştirilmeye başlanmıştır. MS SQL Server: Microsoft, Dezavantajları: Sadece Windows üzerinde çalışabilir. Yüksek maliyet. Kullanım kolaylığı, güvenilirliği, işlem gücü Tablo başına 4 TB veri. “Transaction logging”, “trigger” ve “stored procedure” özelliklerine sahiptir. PostgreSQL: PostgreSQL Global Development Group. Linux, Unix, BSD, Windows, AIX vb. Ücretsiz, akademik bir veri tabanı. Çok güçlü işlem yapısı. Veri güvenliği ön plandadır. Tablo başına 64 TB veri tutabilme özelliği. “Transaction”, “Inheritance” “trigger” ve “stored procedure” özelliklerine sahiptir. Oracle: Oracle, Inc. Dünyanın en güçlü ve güvenilir veri tabanı olarak gösterilmektedir. Çok yüksek maliyetlidir. Windows, Unix, Linux, vb. Oracle, sınırsız sayıda tabloları desteklemektedir. 22..55.. H Haannggii vveerrii ttaabbaannıınnıı sseeççm meellii?? Veri tabanı yönetim sisteminin seçiminde; çalıştığı işletim sistemine, kapasitesine, aynı anda bağlanabilecek kullanıcı sayısına, fiyatına ve diğer genel özelliklerine bakılır. Ayrıca hazırlanacak olan paket programın ölçeğine ve veri erişim yoğunluğunu da dikkat etmek gerekir. Küçük yoğunlukta trafik: Access Web uygulamaları için: MySQL, Access, MS SQL Server vb. Daha büyük ve orta ölçekli uygulamalar içinse, Progress, MS SQL Server ya da Linux üzerinde PostgreSQL . Oracle ise yüksek veri yoğunluğu olduğunda, çok yüksek güvenilirlik ve işlem gücü gerektirdiğinde tercih edilen bir veri tabanı sunucusudur. 22..66.. V Veerrii H Huussuussllaarr T Taabbaannıı O Olluuşşttuurruulluurrkkeenn D Diikkkkaatt E Eddiilleecceekk 1. Veri tabanının amacını belirlemek ve ne amaçla kullanılacağını tespit etmek (satış takibi, günlük haftalık aylık satışlar vb.) 2. Yapılacak olan işe uygun veri tabanını seçmek 3. Tabloları oluştururken gereksiz tekrarların önlenmesi, yani sabit bilgiler için ayrı hareketli bilgiler için ayrı tabloların oluşturulması. 4. Sistem içinde bazı bileşenler iyi tasarlanmazsa sistem bir bütün olarak başarısızlığa uğrayabilir. 3 3.. V VE ER Rİİ T TA AB BA AN NII Y YA APPIIS SII Microsoft Access, bir veri tabanı yönetim sistemidir ve belirli bir nesne ya da özneyi tanımlayan birleştirilmiş bilgilerin bir toplamı olarak tanımlanan veri tabanları oluşturmak, kullanmak ve geliştirmek için kullanılır. Oldukça basit yapısı ve sunduğu geniş fonksiyonlar ile basit veri tabanlarından gelişmiş bilgi sistemlerine çeşitli uygulamalar geliştirmek için uygun bir altyapı sunan Access, orta büyüklükteki firmalar ve ev kullanıcıları için yeterli bir programdır. 33..11.. V Veerrii T Taabbaannıınnddaa N Neessnneelleerr Tüm veri tabanı yönetim sistemleri düşünüldüğünde esas 2 nesne vardır. Bunlar tablo ve sorgu nesneleridir. Diğer nesneler ise veri tabanı yönetim sistemlerine göre değişiklik gösterir. Aşağıda Access veri tabanı yönetim sisteminde yer alan nesneler açıklanmıştır. 1-Tablo: Veri tabanı için gerekli olan ve verilerin saklandığı yerdir. Kullanıcılar tarafından girilen veriler tablolarda saklanır. Diğer veri tabanı nesneleri tablolar esas alınarak oluşturulur. Bir veri tabanında birden çok tablo bulunabilir. Alan (Field): Tablolara girilecek bilgilerin kategorileri (bilgi türleri) vardır. Her bir sütun, bir bilgi kategorisini (alanı) temsil eder. Tablolarda yer alan bilgi türlerine yani sütunlara alan denir. Kayıt (Record): Belirli bir konudaki bilgileri içeren tablo, o konudaki her bir veriyi bir satır olarak saklar. Bu satırlara kayıt denir. 2-Sorgu (Query, View): Veri tabanı tablolarında bulunan kayıtlardan istenilen şartlara göre liste almak ve bu kayıtlarda bazı işlemler (kayıt ekleme, kayıt silme vb.) yapmak için kullanılır. 3-Form: Veri tabanında bilgi girişi vb. işlemleri kolaylaştırmak amacıyla kullanıcı için oluşturulan ara yüz nesneleridir. Formlar daha anlaşılır bir ekran görüntüsü ile çalışmayı sağlayan nesnelerdir. 4-Rapor: Veri tabanında yer alan tablolardaki bilgilerin veya sorgu sonuçlarının kâğıt üzerine yazdırılmasını sağlayan nesnedir. Bu nesnede bilgilerin kâğıt üzerinde nasıl görüneceği ne şekilde yerleştirileceği belirlenir ve kâğıt üzerine yazdırılır. 5-Makro: Bir işlemi gerçekleştirebilmek için birçok komuta ihtiyaç vardır. Bu komutların bilgisayara sırasıyla verilmesi gerekir. Bu komutları tek tek vermek yerine makro nesneleri içine yazılır. Daha sonra bu makro çalıştırılarak içinde yer alan komutlar sırasıyla otomatik olarak icra edilir. Veri tabanında birden çok adımdan oluşan bir işlemin bir seferde yapılabilmesini sağlayan küçük program parçalarına Makro denir. 6-Modül: Visual Basic, Access, Word, Excel, AutoCad vb. programlarda belirli bir işi yapan bağımsız program kodlarının yazıldığı bölümdür. Modül içinde fonksiyonlar ve alt programlar bulunur. Modüllerde Visual Basic programlama dili komutları kullanılır. Makrolar ile aynı amaca sahip olmakla birlikte Visual Basic programlama dili komutları ile yazılan küçük program parçalarıdır. 33..22.. A AC CC CE ES SS SV Veerrii T Taabbaannıınnddaa T Taabblloo O Olluuşşttuurrm maa Öncelikle Access’te boş bir veri tabanı oluşturulur. Access açıldıktan sonra sağ taraftaki bölmede “boş veri tabanı” başlığı tıklanır. Yeni oluşturulacak veri tabanının adı ve nereye kayıt edileceği sorulur. Yeni veri tabanının adı ve yeri belirlendikten sonra oluştur düğmesine basılır. Ekrana boş veri tabanı penceresi gelir. Nesnelerden tablolar seçilir. Burada 3 farklı şekilde tablo oluşturma yöntemi vardır. Ayrıca veri tabanı penceresinin üst tarafında yeni isminde bir düğme vardır. Bu yeni düğmesi kullanıldığında tüm tablo oluşturma yöntemleri bir liste halinde gelir. Bunlar: Veri Sayfası Görünümü: Tablo şeklinde veri girişini sağlar. Tasarım Görünümü: Tablo alanlarının tasarımı için kullanılır. Tablo Sihirbazı: Hazır şablonlarla daha pratik tablo hazırlama imkânı sağlar. Tablo Al: Başka veri tabanlarında bulunan tabloları alır. Başka veri tabanındaki bir veya birkaç tablonun kopyasını (içindeki bilgilerle birlikte) kendi veri tabanımızda oluşturur Tablo Bağla: Diğer bir veri tabanındaki bir tabloya bağlamayı sağlar. Diğer veri tabanındaki tabloya kısa yol oluşturur. Tablonun kopyasını kendi veri tabanımıza almaz. Not: En detaylı ve en çok kullanılan Tasarım Görünümünde tablo oluşturma şeklidir. 33..33.. T Taabbllooddaa KKaavvrraam mllaarr vvee Ö Özzeelllliikklleerrii Veri tabanında tablolar satır ve sütunlardan oluşmaktadır. Tabloyu, satırları ve sütunları oluşturan esas nesne ise hücrelerdir. Hücreler yan yana ve alt alta dizilerek satır, sütun ve tabloyu oluşturur. Bir veri tabanında birden çok sayıda tablo bulunur. Her bir tablonun sadece bir konusu vardır. Tablodaki her bir satıra o konuyla ilgili bir bilgi yazılır. Bu bilginin ayrıntıları ise yan yana hücrelerin içine yazılır. Aynı içeriğe sahip olan hücreler alt alta geldiği için sütun oluştururlar. Örneğin; bir veri tabanında bilgiler aşağıdaki biçimde saklanır. 0014112006,ERKAN,KARAAĞAÇ,ANKARA,0014112016,MUSTAFA,GÖKÇE,BURDUR,0014112017,MUSTAFA ,MOHAN,DENİZLİ,0014112021,SELÇUK,KARAMAN,İZMİR,0114113010,EMİN,KILINÇ,BURDUR,011411 3013,EMRE,ÖZGÜN,İSTANBUL,0114113014,ERCAN,ERYILMAZ,BURDUR Bu bilgilerde her bir öğrencinin sırasıyla numarası, adı, soyadı ve geldiği şehir bilgileri yer almaktadır. Her öğrenci için bu bilgi türleri aynı sırayla devam eder. Yukarıdaki bilgi katarı hard disk üzerine bu şekilde işlenir. Fakat ekranda gösterilirken her bir öğrenci ayrı bir satırda yer alırsa daha düzgün görünecektir. Bu durumda ekrandaki liste; 0014112006,ERKAN,KARAAĞAÇ,ANKARA 0014112016,MUSTAFA,GÖKÇE,BURDUR 0014112017,MUSTAFA,MOHAN,DENİZLİ 0014112021,SELÇUK,KARAMAN,İZMİR 0114113010,EMİN,KILINÇ,BURDUR 0114113013,EMRE,ÖZGÜN,İSTANBUL 0114113014,ERCAN,ERYILMAZ,BURDUR Şeklinde olur. Her bir öğrenciye ait bilgi bir satır olarak yer alır. Bu her bir satıra kayıt denir. Her kayıt incelendiğinde aynı tür bilgiler alt alta gelmiştir. Aynı tür bilgiler bir sütun oluşturur. Bu sütunlara da alan denir. 0014112006 0014112016 0014112017 0014112021 0114113010 0114113013 0114113014 ERKAN MUSTAFA MUSTAFA SELÇUK EMİN EMRE ERCAN KARAAĞAÇ GÖKÇE MOHAN KARAMAN KILINÇ ÖZGÜN ERYILMAZ ANKARA BURDUR DENİZLİ İZMİR BURDUR İSTANBUL BURDUR 3 3..3 3..1 1.. S Sü üttu un n ((A Allaan n)) Ö Özzeelllliikklleerrii Bir tabloda sütun sayısı en fazla 256 adet olabilir. Bir tablodaki satır sayısı ise sınırsızdır. Tablodaki sütunlara isimleri ile ulaşılır. Satırların ise isimleri yoktur. 33..33..11..11.. S Süüttuunn ((A Allaann)) A Addıı Access veri tabanında alan adları en fazla 64 karakter olabilir. Alan adlarında boşluk karakteri, harfler, rakamlar ve bazı diğer karakterler (parantezler, nokta, vb.) kullanılabilir. Alan adı belirlenirken daha sonra hataya sebep olmaması için aşağıdaki tavsiyelere uyulmalıdır. Tavsiyeler: 1-Mümkün olduğunca kısa ve anlaşılır isimler kullanılmalı. 2-Sadece İngiliz alfabesinde olan harfler kullanılmalı. 3-Boşluk karakteri kullanılmamalı. 4-Hiçbir noktalama işareti kullanılmamalı 5-Alan isimleri yazılırken küçük harfler tercih edilmelidir. Türkçede bulunan Ğ Ü İ Ş Ç Ö ü ğ ı ş ç ö harfleri alan isimlerinde kullanılmamalıdır. Özellikle i harfi İngiliz alfabesi ile çatışmaktadır. En büyük sorun bu harften kaynaklanmaktadır. İngiliz alfabesinde bir adet i harfi varken Türkçede iki adet i harfi vardır. Küçük harf kullanılırken noktalı, büyük harf kullanılırken noktasız kullanılmalıdır. Alan isimleri birden fazla kelimeden oluşuyorsa boşluk karakteri yerine alt tire işareti kullanılabilir. Ya da kelimeler birleştirilir ve her kelimenin ilk harfi büyük harf yapılır. 33..33..11..22.. A Allaann T Tiippii Alan Tipi: Alanlar bir bilgiyi taşıyan değişkenlerdir. Her alanda değişik özelliklere sahip veriler saklanabileceğinden dolayı alanların belirli tiplerde olması gerekir. Bir alana girilebilecek bilgi türünü alan tipi belirler. 00000000 = 0 00000001 = 1 00000010 = 2 … 11111110 = 254 11111111 = 255 Her karakter bilgisayar ortamında 1 Bayt yer kaplar. BİLGİSAYAR kelimesi 10 bayt yer kaplar. VERİ TABANI kelimesi 11 bayt yer kaplar. 5000 sayısı metin olarak düşünülürse 4 bayt yer kaplar. 32000 sayısı metin olarak düşünülürse 5 bayt yer kaplar. Fakat bilgisayar ortamında sayıları bayt değerleri ile saklarsak daha az yer kaplayacaktır. Sayısal değer olarak; 1 bayt = 8 bit = 28= 256 farklı durum vardır. 2 bayt = 16 bit = 216 = 65536 farklı durum vardır. Bu duruma göre sayısal değerleri bit değerlerinin onlu sayı sistemine çevrilmesi şeklinde saklanmasıyla daha az yer kaplaması sağlanır. 5000, 32000 değerleri 2 bayt yer kaplar. Alan tipinin seçilmesinde şunlara dikkat edilmelidir: Alanın (sütunun) içine girilecek bilginin tipine göre alan tipi seçilir. Alandaki (sütundaki) bilginin ne kadar yer kaplayacağı (kaç bayt) ya da uzunluğu ne kadar olacağı belirlenir. Bir sütuna girilebilecek en büyük veri ne olabilir. Buna göre alan boyutu belirlenmelidir. Alanda yer alacak bilgiler üzerinde ne gibi işlemler yapılacağı belirlenir. Alandaki verilerin sıralı olup olmayacağı belirlenir. Sıra numarası, kayıt numarası gibi otomatik numaralandırılacak alanlar belirlenir. Access’te Tablolarda Kullanılan Alan Tipleri Alan Tipi Metin (Text) Veri Alfabetik ve sayısal karakterleri saklar. Sayısal işlem yapılamaz. Kapladığı Yer 1-255 Bayt Not (Memo) Alfabetik ve sayısal karakterleri saklar. Sayısal işlem yapılamaz. Genellikle uzun açıklama ve metinlerdir. Sayısal bilgiler. Tarih ve saat bilgileri Sayı (Number) Tarih/Saat (Date/Time) Para birimi Parasal değerler. 15 sayı basamağı ile 4 onlu basamak ile (Currency) hesaplamadaki yuvarlamayı önlemek için kullanılır. Otomatik sayı Otomatik olarak artırılan sayısal değerler. Genellikle sıra (Auto number) numarası vb. alanlar için kullanılır. Evet/Hayır Boolean (ikili) değerler. (Yes/No) OLE Nesnesi (OLE Windows ortamında bir nesne ya da diğer ikili veriler. Object) Arama sihirbazı Diğer bir tabloda seçmeye yarar. Bir sorguya dayalı ya da (Look up wizard) değerlerini kullanıcının girebileceği bir açılır liste kutusu (combobox) düzenler. 1-65535 Bayt 1, 2, 4 ya da 8 Bayt 8 Bayt 8 Bayt 4 Bayt 1 Bit 1 Gb kadar Sorguyu takip edecek bir alan. 4 Bayt Bir alan tipi açıklanırken mutlaka şu sorulara cevap verilmelidir. 1-Hangi tür bilgi girilebilir? 2-Harddisk üzerinde ne kadar yer kaplar? 3-Kendine has özellikleri nelerdir? Metin (Text) Alan Tipi Metin, rakamlar, noktalama işaretleri ve diğer karakterleri içeren bilgiler girilir. Üzerinde sayısal işlemler yapılamaz. En fazla 255 karakter bilgi alabilir. Boyut belirtmek zorunludur. Not: Access veri tabanında bilgi girilmeyen metin tipi alanlar disk üzerinde yer kaplamaz. Sadece girilen bilgi kadar yer kaplar. Not (Memo) Alan Tipi Uzun metinler (metin, rakam, noktalama işaretleri ve diğer karakterler) yani notlar veya açıklamalar için kullanılır. En çok 65535 karakter saklayabilir. Boyut belirtilmez. Not: Disk üzerinde sadece girilen bilgi kadar yer kaplar. Sayı (Number) Alan Tipi Para hesaplamaları dışında matematiksel hesaplamalar için kullanılan sayısal verileri saklar. Sayıların büyüklüğüne, ondalık hassasiyetine göre farklı sayı tipleri mevcuttur. 1-) Bayt (Byte) Alan Tipi 0-255 arasındaki tam sayıları kapsar. Bir bayt yer kaplar. 2-) Tamsayı (Integer) Alan Tipi -32768 ile 32767 arasındaki tam sayıları kapsar. İki bayt yer kaplar. 3-) Uzun Tamsayı (Long) Alan Tipi -2 147 483 648 ile 2 147 483 647 arasındaki tam sayıları kapsar. 4 bayt yer kaplar. 4-) Tek (Single) Alan Tipi -3.402823*10^38 ile 3.402823*10^38 arasındaki ondalık sayıları kapsar. 4 bayt yer kaplar. Sayıların sadece 7 hanesini saklar, diğer kısımlarını *10^ şeklide ifade eder. 7 haneden daha hassas işlemlerde tercih edilmemelidir. 5-) Çift (Double) Alan Tipi Negatif sayılarda –1.79769313486231*10^308 den–4.94065645841247*10^–324 e kadar Pozitif sayılarda 4.94065645841247-10^–324 den 1.79769313486231*10^308 e kadar olan ondalıklı sayıları kapsar. 8 bayt yer kaplar. Sayıların 15 hanesini saklar, diğer kısımlarını *10^ şeklinde ifade eder. 15 haneden daha hassas işlemlerde tercih edilmemelidir. 6-) Ondalık Alan Tipi –10^38–1 10^38–1 arasındaki ondalık sayıları kapsar. 12 Bayt yer kaplar. 28 ondalık haneye kadar hassasiyeti vardır. Tarih/Saat (Date/Time) Alan Tipi Tarihler ve saatler için kullanılır. 8 bayt yer kaplar. Para Birimi (Currency) Alan Tipi Para birimi değerlerini saklar. Ondalık noktanın solunda 15 basamak sağında 4 basamak kullanılır. 8 bayt yer kaplar. Evet/Hayır (Yes/No) Alan Tipi Yalnızca iki değer içeren alan tipidir. Evet/Hayır, doğru/yanlış, açık/kapalı gibi bilgileri saklar. 1 bit alan kaplar. Otomatik Sayı Alan Tipi Bu alan tipi sayısal bir alan olup, Uzun Tamsayı tipindedir. Bu tipteki alanlara bilgi girişi yapılamaz. Yeni bir kayıt eklendiğinde otomatik olarak bir numara bu alana yazılır. Kayıttaki diğer bilgiler girildikten sonra bu numara da kalıcı hale gelir. Yeni bir kayıt eklendiğinde verilen numara, en son verilmiş olan numaradan bir fazladır. Önceki kayıtlar silindiğinde de yine son verilmiş olan numaradan itibaren yeni numaralar verilir. OLE Nesnesi (OLE Object, Hariç Nesne) Alan Tipi Bu tip alanlarda Windows ortamında bulunan diğer programlarda hazırlanmış resim, şekil, yazı, hesap tablosu, ses ve benzeri bilgileri saklar. En fazla 1 GB büyüklüğünde bilgi saklayabilir. Genel olarak kullanılması önerilmez. Çünkü fazla yer kaplamakta ve tabloyu çabuk doldurmaktadır. Arama Sihirbazı Alan Tipi Bir tablonun tasarımı sırasında veri türü bölümünde listeyi açtığımızda Arama Sihirbazı adında bir tür görürüz. Bu aslında bir veri türü değildir. Amacı, tablo veya form üzerinde bu alana gelindiğinde bir liste kutusu görünmesini ve bu alana girilecek bilginin bu listeden seçilmesini sağlamaktır. Gerçek bir alan tipi olmadığı için kullanılmaz. 33..33..11..33.. G Geeççeerrlliilliikk KKuurraallıı Bir alanda girilebilecek bilginin sınırları belirtilir. Örnek: [Notu] >-1 AND [Notu] < 101 Sadece Access programında kullanılabilir. 33..33..11..44.. G Geeççeerrlliilliikk M Meettnnii Geçerlilik kuralında belirtilen sınırların dışına çıkan veri girişinde ekranda gösterilecek mesaj yazılır Örnek: “Notu alanına 0 ile 100 arasında sayılar girilebilir.” Sadece Access programında kullanılabilir. 33..33..11..55.. V Vaarrssaayyııllaann D Deeğğeerr Tabloya bilgi girişi sırasında otomatik olarak varsayılan bir değerin yazılması sağlanır. Bir tabloya yeni kayıt eklendiğinde bir sütuna otomatik olarak değer ataması yapar. Atanacak değer Varsayılan Değer özelliğine yazılır. Atanan bu değer istenirse sonradan değiştirilebilir. Örnek: Sayısal bir alanda ilk değer olarak daima 1 yazılabilir. Tarih tipindeki bir alana otomatik olarak bugünün tarihi yazdırılabilir (Date()) Tüm veri tabanları için geçerlidir. 33..33..11..66.. G Geerreekkllii Bir alanda gerekli özelliği Evet seçilmişse bu alana bilgi girişi zorunlu olmaktadır. Boş bırakılarak geçilemez. Tüm veri tabanları için geçerlidir. 33..33..11..77.. S Sıırraallıı Sıralı özelliğinde üç farklı seçenek vardır. Hayır: Bu alandaki bilgiler sıraya dizilmez veri giriş sırasına göre görünürler Evet (Yineleme Yok): Bu özellikte veriler otomatik olarak sıralanarak listelenir. Fakat aynı bilgiden iki defa girilemez. Evet (Yineleme Var): Bu özellikte veriler otomatik olarak sıralanarak listelenir. Aynı bilgiler birçok defa girilebilir. Bir tabloda iki sütuna birden sıralı özelliği etkinleştirildiğinde ilk sırada yer alan sütuna göre sıralı gösterilir. Diğer sütuna göre sıralama olmaz. Çünkü satır bütünlüğü bozulmaması gerekir. Dolayısıyla her iki sütuna göre verilerin sıralanması mümkün değildir. Sıralama sadece bir sütuna göre yapılabilir. Sıralı özelliği aslında verileri sıralı göstermek için kullanılmaz. Asıl görevi o sütunlarda index (dizin) oluşturmak için kullanılır. Bir sütunda index etkinleştirildiyse o sütunda arama işlemleri çok daha hızlı bir şekilde yapılır. Tüm veri tabanları için geçerlidir. 33..33..11..88.. U Unniiccooddee S Sııkkıışşttıırrm maa Bu özellik 2 baytlık bilgiyi 1 bayt yer tutacak şekilde sıkıştırır. Bu özellik sadece metin türü alanlarda geçerlidir. Tüm veri tabanları için geçerlidir. 33..33..11..99.. G Giirriişş M Maasskkeessii Sadece Access programında kullanılabilir. Alanlarda (Tablo ve Sorgu), Metin kutularında, Açılır liste kutularında veri biçimlendirmek ve hangi değerlerin girilebileceği üzerinde bazı denetimler sağlamak için giriş maskesi kullanılır. Giriş Maskesi Karakterleri Veri girişinde sınırlamalar bazı karakterlerle sağlanır. Bu karakterler aşağıdaki tabloda verilmiştir. 0 Basamak (0’dan 9’a kadar, giriş gerekli, artı eksi işaretlerine izin verilmez. 9 Basamak ve Aralık (Giriş gerekli değil, artı ve eksi işaretlerine izin verilmez) # Basamak ve Aralık (Giriş gerekli değil, boş konumlar aralığa dönüştürülür, artı eksi işaretlerine izin verilir) L Harf (A’dan Z’ye kadar, giriş gerekli) ? Harf (A’dan Z’ye kadar, giriş isteğe bağlı) A Harf veya basamak (giriş gerekli) a Harf veya basamak (giriş isteğe bağlı) & Herhangi bir karakter veya aralık (giriş gerekli) C Herhangi bir karakter veya aralık (giriş isteğe bağlı) . , : ; - / Ondalık yer tutucu ve binler, tarih ve saat ayırıcılar < Kendisini izleyen tüm karakterleri küçük harfe dönüştürür > Kendisini izleyen tüm karakterleri büyük harfe dönüştürür Giriş maskesinin metni, soldan sağa yerine sağdan sola görüntülenmesine neden olur. Maskeye yazılan karakterler her zaman soldan sağa doğrudur. \ İzleyen karakterlerin harf karakter olarak görüntülenmesine neden olur. Parola Giriş maskesi özelliğine Parola (Password) kelimesi yazılırsa parola girdi metin kutusu oluşturur. Metin kutusuna girilen her karakter, karakter olarak saklanır. Fakat yıldız işareti ile gösterilir. ! Örnekler: Telefon Numarası girişi: (000) 000 00 00 Tamamı Büyük harf girişi: >CCCCCCCCCCCCCCCCCCCC İlk harfler Büyük Diğerleri Küçük: >C<CCCCCCCCCCCCC 33..44.. A Acccceessss’’ttee T Taabblloollaarraa V Veerrii G Giirriişşii Access tablolarına bilgi girişi doğrudan tablodan yapılabilir. Bunun için bilgi girilecek tablo seçilip Aç düğmesine basılır. Tabloda her satır ayrı bir kayıt tutar. En son Yeni kayıt için boş kayıttan sonraki boş satır yeni satır kayıt eklemek için kullanılır. Bu son satıra yeni bir kayıt girilmeye başlandığında o satırın bir altına tekrar boş bir satır ekler. Yeni kayıt girişi böylece devam eder. Her alana bilgi girildiğinde Enter tuşuna basarak bir sonraki alana geçilebilir. Bir tablo üzerinde çalışırken tablo üzerinde ve kayıtlar üzerinde yapılabilecek bazı işlemleri şu şekilde açıklayabiliriz: Tabloya yeni kayıt ekleme Tablodan kayıt silme Tablodaki kayıtları sıralatma Tablodaki kayıtları seçime göre süzme Yeni kayıt eklemek için bu düğmeye basıldığında tablonun en son satırındaki boş kayıt satırına gider. Tablodan herhangi bir kaydı silmek için o kayda gidip bu düğmeye basılır. Silme işlemine onay verilip silinir. Birden fazla kayıt silinecekse fareyi tablonun sol tarafından basılı tutup sürükleyerek seçilir ve yine bu düğmeye basılarak silinir. Tablonun hangi alanına göre sıralama yapılacaksa o alana geçilip bu düğmelerden birine basılır. (Artan sıralama veya azalana sıralama) Tabloda herhangi bir alandaki bilgiye göre süzme yapılacaksa o alandaki bilgi fare ile sürükleyerek seçilir ve bu düğmeye basılır. Süzgeci kaldırmak için ise Süzgeci kaldır düğmesine basılır. Tablodaki yazı tipini değiştirme Biçim menüsü açılıp Yazıtipi seçeneğine girildiğinde bu ekran gelir. Buradan istenilen yazıtipi, yazıtipi stili, boyutu, rengi özellikleri seçilip Tamam düğmesine basılır. Tablo sayfasının biçimini değiştirme Biçim menüsünden Veri sayfası seçeneğine girildiğinde bu ekran gelir. Buradan istenilen özellikler belirlenip Tamam düğmesine basılır. Tablodan istenilen bir sütunu dondurma Sütunları dondurmak için tablonun sol tarafından istenilen sütunları seçtikten sonra Biçim menüsünden Sütunları dondur seçeneği seçilir. Tabloda sağa doğru kayarken bu sütunlar kaybolmaz. Tablodan istenilen sütunları gizleme ve görüntüleme Bunun için Biçim menüsünden Sütunları göster seçeneğine girildiğinde yandaki gibi bir liste gelir. Bu listeden istenilen sütunların işareti kaldırılıp gizlenebilir veya gizli sütunlar seçilerek geri getirilebilir. 33..55.. V Veerrii T Taabbaannıınnddaa A Annaahhttaarr Anahtar, kayıtlara ulaşmada kullanılan bir bilgidir. Bir tabloda yer alan kayıtlardan sadece belli bir kısmına veya sadece birine ulaşılmak istendiğinde, kayıtların tek tek taranması ve istenilen kayıtların bulunması gerekir. Örneğin; Öğrencilerin not bilgilerinin tutulduğu bir veri tabanı tablosunda sadece bir öğrenciye ait notların görülmesi istenmesi gibi. Büyük dosyalarda bu işlem çok uzun süreceğinden tablodaki kayıtların bazı alanları anahtar olarak düzenlenir. Bu anahtar alanlar üzerinden tablolara erişim daha hızlı bir şekilde gerçekleştirilir. Veri tabanlarında 3 tip anahtar vardır: 1- Tekil anahtar – unique key 2- Birincil anahtar – primary key 3- Yabancı (uzak) anahtar – foreign key Tekil anahtar daha önce anlatılan alan özelliklerinden sıralı özelliği ile oluşturulmaktadır. Yabancı anahtar ise ilişkilendirme konusunda detaylı şekilde anlatılacaktır. 3 3..5 5..1 1.. T Teekkiill A An naah httaarr Bir tabloda süzme, sıralama veya arama işlemlerinin hızlı bir şekilde yapılabilmesini sağlar. Bir sütuna tekil anahtar özelliği verildiğinde; veri tabanı öncelikle tablodaki verileri bu sütuna göre sıraya dizer. Daha sonra ise bu verileri gruplandırır. Bu gruplama sayesinde o sütunda arama ve süzme işlemleri çok daha hızlı olmaktadır. Örnek olarak aşağıdaki gibi bir tablo verilebilir. Sıra 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 Firma Beyhan Otel PEKDEMİR İkizler Kundura Vural Market GÖLBETON Köseoğlu Market AKALIN Gediz Pen DENTİM İkinci Bahar ŞOK Market Elit Lokantası Peksüslü Giyim Arslan Ticaret Tuğrul Ticaret GÖLMAR A-101 Edem Pastanesi İstikbal Bellona Şirin Bebe Puan 1000 1250 1450 1120 1850 1566 1126 1295 1586 1296 1319 1001 1005 1009 1256 1789 1723 1645 1956 1232 1526 Sıra 1 12 13 Firma Beyhan Otel Elit Lokantası Peksüslü Giyim Puan 1000 1001 1005 Bu tabloda bir arama işlemi yapalım. Puanı 1956 olan firmayı arayalım. Yukarıdaki tabloda bu arama işlemini yapmak için puan sütununda her satıra tek tek bakmak gerekir. Aradığımız değer ilk satırda olabileceği gibi son satırda olabilir. Eğer tabloda kayıt sayısı çok fazla olursa bu arama işlemi epeyce zaman alacaktır. Tabloda 19. satırda aranan değer bulunacaktır. Bu da 19 karşılaştırma yapıldığını göstermektedir. Bu tabloda Puan isimli sütuna göre tekil anahtar verilirse (Sıralı> Evet - Yineleme var) aşağıdaki gibi olur. 14 4 7 20 2 15 8 10 11 3 21 6 9 18 17 16 5 19 Arslan Ticaret Vural Market AKALIN Bellona PEKDEMİR Tuğrul Ticaret Gediz Pen İkinci Bahar ŞOK Market İkizler Kundura Şirin Bebe Köseoğlu Market DENTİM Edem Pastanesi A-101 GÖLMAR GÖLBETON İstikbal 1009 1120 1126 1232 1250 1256 1295 1296 1319 1450 1526 1566 1586 1645 1723 1789 1850 1956 Puan sütununa göre veriler sıraya dizildikten sonra veri tabanı otomatik olarak arka planda gruplar oluşturur. Örneğin 100 birimlik dilimlerle grup oluşturulmuş olsun. Buna göre tabloda gruplar farklı zemin renkleri ile gösterilmiştir. Tekil anahtar özelliği verildiğinde ise arama işlemi şu şekilde olmaktadır. Aranan 1956 değeri öncelikle hangi grupta yer alacağı hesaplanır. Daha sonra bu grup içinde değer aranır. Buna göre değerimiz 10. grupta yer alır ve arama işlemine başlanır. 10. grupta tek bir değer vardır ve dolayısıyla tek bir karşılaştırma yapıldığında aranan firma bulunmuş olur. Özellikle kayıt sayısı çok fazla olan tablolarda bir sütunda arama yapılacağında bu sütuna Tekil Anahtar özelliği verilmiş olması işlemleri çok hızlandıracaktır. Tekil anahtar işleminin diğer ismi Index’tir. Diğer veri tabanlarında index özelliği ile bu işlem yapılmaktadır. 3 3..5 5..2 2.. B Biirriin ncciill A An naah httaarr Her bir kayıt için ayrı olan anahtar alanlara birincil anahtar (primary key) denir. Anahtar her bir kayıt için tek olan ve başka kayıtlara verilemeyen bilgidir. Örneğin; Öğrenci numarası, müşteri kodu, evrak numarası vb. Birincil anahtar kullanımının faydaları: Tablolar arasında ilişkilendirmede gereklidir. Sorgularda kayıtlara ulaşım için gereklidir. Bilgilere daha hızlı erişim sağlanır. Veri tekrarını engeller. Bilgi girilmeden geçilmesini engeller. Tabloların ilişkilendirilmesinde, sorguların oluşturulmasında mutlaka birincil anahtar kullanılması gereklidir. Her tabloda mutlaka birincil anahtar olmalıdır. Birincil anahtar özelliği verilen alan Gerekli özelliği Evet seçilmesi ile kazanılan özelliği ve Sıralı özelliğinin “Evet (Yineleme yok)” seçilmesi ile kazanılan özelliği kazanır. Fakat bu alanda sözü geçen bu özellikleri ayarlamaya gerek yoktur. Tablodaki alanlardan birine birincil anahtar özelliğini vermek için yani bir alanı birincil anahtar olarak belirlemek için tablo tasarım görünümünde o alan fare ile seçilip farenin sağ tuşuna basıldığında açılan menüden birincil anahtar seçeneği seçilir. Bir alana Birincil Anahtar özelliği verilmesi ile Tekil Anahtarda anlatılan özellikler kazandırılmış olur. Birincil Anahtarın farkı daima veri tekrarı olmaması, boş değer verilememesi ve tablolar arası ilişkilendirmede kullanılmasıdır. Birincil anahtar özelliği verilen alanda arama ve süzme işlemleri çok hızlı bir şekilde yapılabilmektedir. Hangi alanlara birincil anahtar özelliği verilebilir? Birincil anahtar özelliği her alana verilebilir. Fakat dikkat edilmesi gereken durumlar vardır. Adı alanına birincil anahtar vermek pek uygun değildir. Çünkü Adı aynı olan birçok kişi olabileceğinden dolayı birincil anahtar özelliği verilirse, aynı isimden sadece bir adet girilebilir. Bu nedenle de uygun değildir. Adres alanına birincil anahtar özelliği vermek uygun değildir. Adres bilgileri her kişi için farklı olsa bile adres bilgisi çok uzundur. Bu nedenle de yazımda hatlar ortaya çıkabilir. Ayrıca ilişkilendirmede kullanılacağı için diğer tabloda da adres bilgisi yazılmalıdır. Bu durumda veri tabanından çok fazla tekrar söz konusu olacaktır. Birincil anahtar verilecek alandaki bilgi net olmalıdır. Yazılacak bilgide kısaltmalar veya farklı yazımlar olmamalıdır. Birincil anahtar verirken O alandaki bilgiler bir defa girilen bilgiler olmalı (OgrNo, TC Kimlik, Müşteri Kodu, İl Kodu vb). Ayrıca birincil anahtar verilecek alandaki bilgiler kısa ve kolay hatırlanabilir olmalıdır. Eğer Tabloda çok uzun bilgiler varsa bu durumda birincil anahtar için yeni bir alan oluşturulmalı ve kodlama yapılmalıdır. ÖZET: 1- Birincil Anahtar verilecek sütunda veri tekrarı olmamalı hatta ihtimali dahi olmamalı. 2- Birincil Anahtar verilecek sütunda veri girilmeden geçilmemeli. 3- Birincil Anahtar verilecek sütuna girilecek veriler kısa ve öz olmalı. İçinde noktalama işaretleri, boşluk karakterleri vb. olmamalı. Net bilgi olmalı. Tamsayı, Metin tipindeki alanlar birincil anahtar yapılmalıdır. 4- Eğer önceki üç maddeye uyan herhangi bir sütun yok ise yeni bir sütun ekleyip alan tipini otomatik sayı olarak seçip birincil anahtar özelliği verilmelidir. 3 3..5 5..3 3.. Y Yaab baan nccıı ((U Uzzaakk)) A An naah httaarr Uzak Anahtar tablolar ilişkilendirilirken ortaya çıkmaktadır. Bir sütunun uzak anahtar olarak belirlenmesi sadece ilişkilendirme ile olmaktadır. Uzak Anahtar özelliği alanda bir değişikliğe sebep olmaz. 3 3..5 5..4 4.. Ö Örrn neekklleerr Öğrenci Kimlik bilgilerinin saklandığı tabloda Öğrenci Numarası Öğrenci kimlik bilgilerinin saklandığı tabloda Öğrenci Adı Öğrenci Notlarının saklandığı tabloda Öğrenci numarası Müşteri Kimlik bilgilerinin saklandığı tabloda Adres Müşterinin aldığı ürünlerin saklandığı tabloda ürün adı Ürünlerin mağazada hangi reyonlara yerleştiğini gösteren tabloda reyon no Kütüphane takibinde kitap bilgileri tablosundaki yazar adı Kütüphane takibinde üye bilgileri tablosunda üye tckimlik numarası Müşteri takip veri tabanında ürün bilgilerinin saklandığı tabloda ürün barkod no Müşteri takip veri tabanında ürün satış tablosunda ürün barkod no Öğrenci takip veri tabanında ders bilgilerinin tutulduğu tabloda Program Kodu 33..66.. V Veerrii T Taabbaannıınnddaa T Taabblloollaarrıı İİlliişşkkiilleennddiirrm mee Bir veri tabanında her konu için farklı tablolar oluşturulduktan sonra listeleme sırasında farklı tablolardaki bilgilerin bir araya getirilirken tablolardaki kayıtların nasıl eşleştirileceği belirtilmelidir. Bu işlem için tablolar arası ilişkilerin tanımlanması gerekir. Bu tanımlamadan sonra farklı tablolardaki bilgileri kullanarak sorgular oluşturulabilir. İlişkilendirme iki tablo arasında olur. Bu iki tabloda aynı tür bilgileri içeren iki alan ilişkilendirilir. 3 3..6 6..1 1.. İİlliişşkkiilleen nd diirrm mee T Tü ürrlleerrii İki tablo ilişkilendirilirken kullanılan alanların birincil anahtar özelliklerinin olup olmamasına göre ilişkilendirme türü belirlenir. Resimde yer alan iki tablo ilişkilendirilirken ortak bilgi içeren alan Öğrenci No alanıdır. Bu iki tablo öğrenci no alanları kullanılarak ilişkilendirilir. İlişkilendirmede kullanılan Öğrenci No alanlarının birincil anahtar özelliklerine bakarak ilişkilendirme türü belirlenir. Üç çeşit ilişkilendirme türü vardır. Bunlar: Bire bir ilişkilendirme Bire çok ilişkilendirme Çok’a çok ilişkilendirme İlişkilendirme yapılırken ilişki türünü birincil anahtar belirler. Her iki tabloda ilişkilendirilen alanlar birincil anahtar ise bire bir ilişkilendirmedir. Bir tablodaki bir kayda karşılık diğer tabloda bir kayıt vardır. İlişkilendirilen iki tabloda ilişkilendirilen alanlardan sadece biri birincil anahtar ise bire çok ilişkilendirmedir. Bir tablodaki bir kayda karşılık diğer tabloda çok sayıda kayıt vardır. İlişkilendirilen iki tabloda ilişkilendirilen alanlar birincil anahtar değilse çok’a çok ilişkilendirmedir. Bir tablodaki çok sayıdaki kayda karşılık diğer tabloda çok sayıda kayıt vardır. Yukarıda resimde yer alan tablolarda öğrenci no alanlarına bakacak olursak; Öğrenci tablosunda yer alan öğrenci no alanı birincil anahtar özelliğinde, Notlar tablosundaki öğrenci no alanı ise birincil anahtar özelliği yoktur. Bu duruma göre bire – çok ilişkilendirme söz konusudur. Tablo tasarımında birincil anahtarları vererek ilişkilendirme türünü değiştirebiliriz. Fakat uygulamada kullanılmaktadır. genel olarak bire – çok ilişkilendirme Bire – bir ilişkilendirme çok özel durumlarda kullanılabilir. Bir tablodaki alan sayısı 256’dan fazla olursa ikinci bir tabloyu bu birinci tablonun paraleli ve devamı olarak belirlemek için bire-bir ilişkilendirme yapılır. Bunun dışında bire-bir ilişkilendirme kullanılmamaktadır. Çoka-çok ilişkilendirme ise uygulamada mantıksız oluşturmaktadır. Bu nedenle kullanılamayan bir türdür. bir durum İki tablo ilişkilendirilmesi sonucunda bir tablodaki bir kayıt diğer tablodaki kayıtlarla eşleştirilir. Aşağıda ilişkilendirmesi gösterilen iki tabloda ilişkilendirme sonucunda tablolardaki kayıtlar eşleştirilir. Bu ilişkilendirme sonucunda aşağıdaki resimdeki gibi kayıtlar eşleştirilir. 3 3..6 6..2 2.. İİlliişşkkiilleen nd diirrm mee iiççiin nb biirr ö örrn neekk Öğrenci notlarının tutulması için bir veri tabanında aşağıdaki alanlara sahip bir tablo oluşturulabilir. Alan Adı Alan tipi ve boyutu OgrNo Metin 10 Adı Soyadı Metin 25 Program Metin 20 Şube Metin 1 Ders Adı Metin 50 Vize Byte Final Byte Bu alanlara sahip tablo ile öğrencilerin hangi dersten hangi notu aldığı rahatlıkla görülebilmektedir. Fakat bu şekilde oluşturulmuş bir veri tabanı yapısı çok uygun değildir. Çünkü bu tabloda bilgilerde arama yapmak uzun sürer ve aynı zamanda bilgi tekrarı fazla olduğundan dolayı veri tabanı boyutu oldukça artacaktır. Öğrencilere ait olan bilgiler öğrencinin aldığı ders sayısı kadar tekrarlanmaktadır. Bu bilgiler OgrNo, AdıSoyadı, Program, Şube’dir. Öğrencinin 10 adet dersi varsa (10+25+20+1)*10 bayt yer kaplayacaktır. Yer ve hız tasarrufu sağlamak için öğrencinin değişmeyen bilgileri olan ve tekrarlanan bilgiler ayrı bir tabloya alınırsa bu durumda öğrenciye ait sadece bir kayıt bulunacak ve ders sayısı kadar tekrarlanmayacaktır. Bu şekilde düzenleme yapılırsa aşağıdaki gibi bir tablo düzeni ortaya çıkar. Tablo 1 Alan Adı Alan tipi ve boyutu Metin 10 OgrNo Adı Soyadı Metin 25 Program Metin 20 Şube Metin 1 Alan Adı OgrNo Ders Adı Vize Final Tablo 2 Alan tipi ve boyutu Metin 10 Metin 25 Byte Byte Tablo 1’de Öğrencilere ait sabit bilgiler için alanlar oluşturulmuştur. Bu sayede bu bilgiler tekrarlanmayacaktır. Tablo 2’de ise ders adı, Vize Final alanları yer almıştır. OgrNo alanı da bu tabloya eklenmiştir. Çünkü Dersi, vizesi ve finali girilen öğrencinin kim olduğu da belirtilmesi gerekir aksi halde girilen bilginin hangi öğrenciye ait olduğu bilinemez. Tablo yapıları bu şekilde ayarlandıktan sonra her iki tabloda ortak olan OgrNo alanları ile ilişkilendirme yapılmalıdır. İlişkilendirmenin yapılabilmesi için Birincil anahtar özelliğinin hangi alana verilmesi gerektiğine karar verilmelidir. Tablo1’de her bilgiden birer kayıt bulunacağından ogrno alanına birincil anahtar verilmelidir. Burada birincil anahtar verilecek alan ilişkilendirmede kullanılacak alan olmalıdır. Bu da OgrNo alanıdır. Tablo 2’de ise aynı bilgiler birçok defa tekrarlanabilir. Bu nedenle OgrNo alanına birincil anahtar verilmez. Bu durumda Tablo 1 ile Tablo 2, Ogrno alanları ile ilişkilendirilir. Bu ilişkilendirme türü Bire-Çok ilişkilendirme olur. 3 3..6 6..3 3.. İİlliişşkkiilleen nd diirrm meen niin nY Yaap pııllm maassıı İki tablo ilişkilendirilirken kullanılacak alanların özellikleri: alanlar kullanılır. İlişkilendirmede 1- İçerdikleri bilgiler aynı türden olmalı (ilişkilendirilecek iki tabloda ortak içerikli alan olmalı) 2- Alan tipleri aynı olmalı 3- Alan boyutları aynı olmalı 4- Uygun alana birincil anahtar verilmiş olmalı 33..77.. S Soorrgguullaarr Sorgu; veri tabanında bulunan bir veya birden çok tablodaki bilgilerden istenilen şartlara göre liste oluşturan nesnelerdir. Sorgu sonuçları yer kaplamaz, sadece görünüm oluşturur. Bu görünümlerde veri tabanında mevcut tablolardaki bilgiler yer alır. Sorgu sonucu oluşan görünümler, veri tabanı tabloları gibidir. Yeni bir sorgu oluşturmak için veri tabanı penceresinde Sorgular seçeneği seçilir. Burada iki şekilde sorgu oluşturma yöntemi vardır. Genelde Tasarım Görünümünde sorgu oluşturulur. Tasarım görünümünde sorgu oluşturma seçildiğinde Sorgu oluşturma penceresi ekrana gelir. Burada ilk olarak sorguda kullanılacak tablolar seçilir. Seçilmiş olan tablolar küçük pencereler halinde üst tarafa yerleşir. Bu küçük pencerelerde o tablodaki alanlar listelenir. Kalın yazıtipi ile belirtilen alanlar Birincil anahtar özelliğindedir. Sorgu oluşturma penceresinde birden çok tablo bulunduğunda ilişkilendirmenin belirtilmesi gerekir. Daha önceden tabloların ilişkilendirmeleri yapıldıysa sorgu penceresine otomatik olarak gelir. Sorgu penceresinde yapılacak ilişkilendirmeler sorgu dışında geçerli değildir. Sorguda alan seçimi iki şekilde yapılır: -Fare ile sorguda listelenmek istenen alan ismi üzerinde fare ile çift tıklama yapılır. Çift tıklama sonucunda o alan aşağıdaki listeye eklenir. -Listeye eklenmek istenen alan fare ile sürükle bırak yöntemiyle aşağıdaki listeye taşınarak bırakılır. Tasarım görünümünde sorguda yer alan Alanların listesi alt kısımdadır. Bu listede alanlar yan yana dizilmişlerdir. Satırlarda alan özellikleri belirtilmiştir. Bunlar: Alan: Sorguda gösterilecek alan ismi veya formül yer alır. Tablo: O alanın hangi tabloya ait olduğu belirtilir Sıralı: O alana göre sıralama yapılıp yapılmayacağı belirtilir. Göster: O alanın görünüp görünmeyeceği belirtilir. Ölçüt: O alana göre koşul belirtilir. Veya: Diğer koşullar için bir bağlaçtır. 3 3..7 7..1 1.. S Sıırraallıı G Gö össtteerriim m Sorguda sıralama işlemi Tasarım görünümünde belirlenir. Hangi alana göre sıralama yapılacaksa o alanın sıralı özelliği belirlenir. Sıralı özelliğinde 3 farklı durum vardır. 1-Sırasız 2-Artan 3-Azalan 3 3..7 7..2 2.. K Ko oşşu ull B Beelliirrtteerreekk S So orrg gu uO Ollu uşşttu urrm maa Bu işlem Tasarım görünümünde belirlenir. Sorguda yer alan alanlardan hangisinde koşul belirtilecekse o alanın Ölçüt satırına koşul yazılır. Örnek Adres alanında Burdur olanlar Maaş alanında 200 ve üzerinde değer olan kayıtlar ( >=200 ) Örnek: F alanındaki değer 50 ve 60 arasında (50 ve 60 dahil) olanları listeleyen sorguyu tasarlayınız. Kullanılan bağlaç “VE” Örnek: Şehir alanındaki değer BURDUR olan kayıtlar ve Şehir alanındaki değer DENİZLİ olan kayıtları bir arada gösteren sorguyu tasarlayınız. Kullanılan bağlaç “VEYA” Örnek: Adı alanında “MUSTAFA” değeri olan kayıtlar ve Şehir alanında “BURDUR” olan kayıtları bir arada listeleyen sorguyu oluşturunuz. Kullanılan bağlaç “VEYA” Sorgu tasarımında birden fazla sayıda ölçütü “VE” bağlacı ile birleştirmek için ölçüt kısmında aynı satıra yazılmalıdır. Sorgu tasarımında birden fazla sayıda ölçütü “VEYA” bağlacı ile birleştirmek için ölçüt kısmında farklı satırlara yazılmalıdır. 3 3..7 7..3 3.. B Baazzıı FFo on nkkssiiyyo on nllaarr vvee İİşşlleem mlleerr Sorgu hazırlanırken mevcut alanlardaki bilgilerden yararlanarak bazı işlemler yapılabilir. Sorguda işlevleri göstermek için hayali bir alan tanımlanır. Sadece sorgu sonucunda görülebilir. Veri tabanına bilgi olarak kaydedilmez. Burada görünen bilgiler diğer alanlardaki bilgilerden yararlanılarak elde edilmiş bilgilerdir. Sorgu tasarımında alan kısmına yazılır. Öncelikle alan adı belirtilmelidir. Alan adı yazıldıktan sonra iki nokta üst üste (:) işareti konur. Bir boşluk bırakılır ve işlem yazılır. (:) işaretine kadar olan kısım sütun adı tanımıdır. Matematiksel (+,-,*,/,^) Matematiksel işlemlerde öncelikler () Parantezler (işlem önceliği sağlar) ^ Üs alma (Bazı veri tabanı yönetim sistemlerinde var, diğerlerinde hazır fonksiyon şeklindedir) * / Çarpma Bölme + - Toplama çıkarma & Metin birleştirme (Bazı veri tabanı yönetim sistemlerinde var, diğerlerinde + işareti ile yapılır Hazır fonkisyon işlemleri (Left, Rigth, Len, Ucase, Lcase, iif, Mid vb.) LCase Verilen metni çevirerek verir küçük harfe LCase(adı) adı alanındaki metni küçük harflere çevirerek verir UCase Verilen metni çevirerek verir büyük harfe UCase(adı) adı alanındaki metni büyük harflere çevirerek verir Len Verilen metindeki sayısını verir Len(adı) adı alanındaki metnin karakter sayısını verir Left Verilen metnin solundan itibaren belirli sayıda karakter verir Left(adı;4) adı alanındaki karakterini verir. Right Verilen metnin sağından itibaren belirli sayıda karakter verir Right(adı;4) adı alanındaki metnin sağından 4 karakterini verir Mid Verilen metnin içinden belirli bir parçayı alır Mid(adı;2;3) adı alanındaki metnin 2. karakterinden başlayarak 3 karakter verir IIf Koşula göre farklı işlemleri yapar IIf(F>45;"Geçebilir";"Kesin Kaldı") Eğer F değeri 45’ten büyükse Geçebilir aksi halde Kesin Kaldı yaz karakter metnin soldan Örnek 1: Öğrencilerin vize final notlarının tutulduğu bir veri tabanı tablosu olduğunu farz edelim. Sorgu ile vize ve final notlarının ortalaması hesaplanmak istenirse vize ve final alanları sorgu tasarımında eklenir. Bu alanlardan sonra boş olan ilk alana alan satırına “ortalama: vize*0,4+final*0,6” ifadesi yazılır. Örnek 2: Örnek 1’deki veri tabanı tablosuna Sorgudaki hayali Ortalama alanındaki değere göre Başarılı, Başarısız yazdıran formül aşağıdadır. Ortalama değeri 60’ın altında ise Başarısız, aksi halde Başarılı yazılacaktır. Başarı: iif(Ortalama<60;”Başarısız”;”Başarılı”) Örnek 3: Bir veri tabanı tablosunda Adı, Soyadı, Adresi alanları bulunmaktadır. Adı ve Soyadı alanlarındaki bilgiler “Adı Soyadı” isminde tek bir alan olarak gösterilmek isteniyor ve Adı alanından gelen bilgilerin ilk harfi büyük diğerleri küçük, Soyadı alanından gelen bilgilerin tamamı büyük harf olması isteniyor. Bu işlem için “Adı Soyadı” isminde hayali bir alan sorgu ile tanımlanarak aşağıdaki formül yazılmalıdır. [Adı Soyadı]: UCase(Left([adı];1)) & LCase(Mid([adı];2;Len([adı])-1)) & " " & UCase([soyadı]) Örnek Sorular: Şehir alanındaki değer BURDUR olan kayıtlar ve Şehir alanındaki değer İSTANBUL olan kayıtları bir arada gösteren sorguyu tasarlayınız. 4 Notlar tablosunda, V ve F’den hareketle BN hesaplanarak verileri BN’ye göre artan sırada listeleyiniz. Öğrenciler tablosunda veriler, ŞEHİR sütununa göre artan, soyadı sütununa göre azalan olarak sıralı gösteriniz. Öğrenciler tablosunda, BURDUR’lu öğrencileri OgrNo, Soyad Ad, Şehir sütunlarını göstererek öğrenci numarasına göre azalan şekilde sıralı olarak listeleyiniz. Notlar tablosunda V ve F sütunlarının toplamını gösteren bir sütun ve ayrıca bu toplam 100’ün üzerindekilere “Başarılı” diğerlerine “Başarısız” yazan diğer bir sütun olacak şekilde sorgu tasarlayınız. 3 3..7 7..4 4.. G Grru up pllaam maa Tasarım görünümünde sorguda yer alacak alanların bulunduğu alt kısımda farenin sağ tuşuna basılır ve açılan menüden Toplamlar seçeneği seçilir veya menüden Görünüm-Toplamlar seçilir. Bu işlemden sonra Tablo satırının altında Toplam isminde bir satır daha oluşur. Bu tür bir liste oluşturmada genelde tek bir alan seçilir. Bu alanın Toplam özelliği Grupla seçilir. Sorgu sonucu oluşan görünümde o alandaki değerlerden sadece birer adet görünür. 3 3..7 7..5 5.. G Grru up p FFo on nkkssiiyyo on nllaarrıı Veri tabanlarında sorgularda belirli temel grup işlemleri için hazır fonksiyonlar mevcuttur. Bunlar: Topla, Ortalama, EnAz, EnÇok, Say, Stsapma, Değişken (varyans), İlk, Son Bu fonksiyonlar tek bir alanda ve gruplama yapılmadan kullanılırsa tüm kayıtlar için sonucu verir. Sorgu sonucu oluşan görünümde tek bir değer bulunur. Topla: Sayısal bir alanda, grup içindeki kayıtlarda belirtilen sütunda yer alan değerlerin toplamını bulur. Ortalama: Sayısal bir alanda, grup içindeki kayıtlarda belirtilen sütunda yer alan değerlerin aritmetik ortalamasını bulur. EnAz: Sayısal bir alanda, grup içindeki kayıtlarda belirtilen sütunda yer alan değerlerin en küçük olanını verir. EnÇok: Sayısal bir alanda, grup içindeki kayıtlarda belirtilen sütunda yer alan değerlerin en büyük olanını verir. Say: Grup içindeki kayıtlarda belirtilen sütunda yer alan değerlerin (dolu hücreler) adedini verir. Eğer o alanda boş hücreler var ise onları saymaz. Stsapma: Sayısal bir alanda, grup içindeki kayıtlarda belirtilen sütunda yer alan değerlerin standart sapmasını verir. Değişken: Sayısal bir alanda, grup içindeki kayıtlarda belirtilen sütunda yer alan değerlerin Varyansını verir. İlk: Grup içindeki kayıtlarda belirtilen sütunda yer alan değerlerden ilk sırada bulunanının değerini verir. Son: Grup içindeki kayıtlarda belirtilen sütunda yer alan değerlerden son sırada bulunanının değerini verir. Gruplama işlemlerinde örneğin sorguda Adres alanı gruplandırılırsa her şehirden birer adet görünecektir. Bunun yanına ilave olarak her şehirde kaç kişi olduğunu da göstermek gerekirse, sorgu tasarımında şu işlemler yapılmalıdır. Adres alanı sorguya eklenir. Bu alanın Toplam özelliği Grupla olarak ayarlanır (Bu sayede şehirler gruplandırılarak gösterilir). Her şehirde kaç kişi olduğunu göstermek için Say fonksiyonu kullanılabilir. Sayma işlemi için de herhangi bir alan sorguya eklenir. Örneğin Adı Soyadı alanı. Bu alanın Toplam özelliği Say seçilir (Bu sayede her gruptaki Adı Soyadı alanındaki kayıtları sayar ve adedini grup için gösterir). Her şehirdeki maaş ortalamalarını da göstermek istersek, sorguya maas alanı da eklenir. Bu alanın Toplam özeliği Ortalama olarak seçilir. Örnek sorular: GenelDers tablosunda, teorik ve Uygulama saatlerinin ayrı ayrı toplamlarını gösteriniz. Notlar tablosunda her ders için en düşük ve en yüksek final notlarını listeleyiniz. Hangi şehirden kaçar öğrenci vardır. 0314111091 numaralı öğrencinin girmiş olduğu derslerde en düşük final notu kaçtır. 0314111091 numaralı öğrencinin girmiş olduğu derslerde en yüksek vize notu kaçtır. Genelders Tablosunda her bir dersin haftalık ders saati sayısını listeleyiniz. Notlar tablosunda her bir öğrencinin başarı notlarının en düşüklerini listeleyiniz. 0314111056 numaralı öğrencinin Vize not ortalaması nedir 0314111113 numaralı öğrenci kaç ders alıyor, adedini gösteriniz Tüm öğrencilerde en yüksek vize notlarını gösteriniz. 3 3..7 7..6 6.. K Ko oşşu ullllu uH Haazzıırr FFo on nkkssiiyyo on nK Ku ullllaan nıım mıı Sorgularda hazır fonksiyonlar tek başlarına kullanıldıklarında, yani tek bir alanda işlem yapıldığında tüm kayıtlar tek bir grup olarak değerlendirilir ve ona göre sonuç oluşturulur. Örneğin Sorguda maas alanı seçilip Ortalama fonksiyonu seçilirse tüm kayıtlar ele alınarak ortalama hesaplanır. Bu işleme koşul eklenmek istenirse, örneğin koşul “maas >= 200” olursa, Sorgu tasarımında maas alanı ölçüt özelliğine bu koşul yazıldığında sonuç çıkmaz. Bu işlemi gerçekleştirmek için koşulu uygulamak için ikinci bir maas alanı sorguya eklenmeli ve Toplam özelliği Koşul olarak ayarlanmalı ve Ölçüt özelliğine de koşul yazılmalıdır. Ayrıca Göster özelliğinin işareti de kaldırılmalıdır. Çünkü ikinci olarak eklenen maas alanı sadece koşulu gerçekleştirmek içindir. Listede görünmesine gerek yoktur. Örnek: Bir veri tabanında Öğrenci notlarının tutulduğu notlar isimli bir tablo vardır. Tabloda; sn, OgrNo, DK, V, F alanları vardır. Her bir öğrenciye göre, 50 ve üzerindeki final notlarının ortalamasını listeleyiniz. Her bir öğrenciye göre, Final notları ortalaması 50 ve üzerinde olanları listeleyiniz. Bu iki sorudaki fark, İlk soruda tablodaki kayıtlar önce süzülmekte ve süzme sonucunda kalan kayıtlarda gruplama işlemleri yapılmaktadır. İkinci soruda ise ilk önce gruplama işlemi yapılmakta, sonra süzme işlemi yapılmaktadır. 3 3..7 7..7 7.. S So orrg gu ud daa Ç Ço okk ttaab bllo o kku ullllaan nıım mıı Sorguda çok sayıda tablo kullanılırken Hareketli ve Sabit bilgilerin bulunduğu tablolar belirlenmelidir. Sorgu hazırlanmasında tablolar arasında ilişkilendirme yapılmalıdır. İlişkilendirme alanlar üzerinden yapılır (Tablolar ilişkilendirilirken alanlar kullanılır). Sabit bilgilerin bulunduğu tabloda, ilişkilendirmede kullanılan alan birincil anahtar özelliğindedir. Diğer hareketli bilgilerin bulunduğu tabloda, ilişkilendirmede kullanılan alanda ise birincil anahtar özelliği yoktur. Genelde sorgu hazırlanırken hareketli bilgilerin bulunduğu tablo esas tablo olarak kullanılır. Diğer tablolar ise yardımcı niteliği taşır. Yani sorgu sonucu oluşan görünümde yeni kayıt girildiğinde hareketli bilgilerin bulunduğu tabloya eklenir. Hareketli bilgilerin bulunduğu tabloda bulunmayan alanlar Sabit bilgilerin bulunduğu tablolardan yani yardımcı tablolardan alınır. Örnek: Bir veri tabanında T1 ve T2 isminde iki tablo vardır. T1 isimli tabloda MK, AdıSoyadı, Adres, Tel alanları bulunmaktadır. T2 isimli tabloda ise MK, Malzeme, Miktar, Fiyat alanları bulunmaktadır. Bu iki tablo kullanılarak oluşturulacak bir sorguda esas tablomuz yani bilgi girişi yapacağımız tablo T2 isimli tablodur. Buna karar verirken her iki tabloda da ortak alan bulunur. Ortak alan MK (Müşteri kodu) alanıdır. T1 isimli tabloda MK birincil anahtar özelliğindedir. İlişkilendirme için ortak bir alan gereklidir. Hangi tablodaki alan Birincil anahtar özelliğinde ise o tablo yardımcı tablodur ve sabit bilgileri içerir. O halde T2 esas tablodur. Bu nedenle öncelikle Alanların seçiminde öncelik T2 tablosundadır. Yani T2 tablosunda bulunan alanlar T2 tablosundan alınacak, olmayanlar yardımcı tablodan alınacaktır. Sorguda yer alanlar: T2.MK, T1.AdıSoyadı, T1.Adres, T1.Tel, T2.Malzeme, T2.Miktar, T2.Fiyat Bu sorgu ile aynı zamanda Tutar hesaplanmak istenirse sorgu tasarımında bir alan daha ilave edilerek alanlar satırına “Tutar: Miktar*Fiyat” deyimi yazılır. 3 3..7 7..8 8.. Ö Örrn neekk sso orru ullaarr vvee ttaassaarrıım mllaarrıı S1: Derslere göre, başarı notu hesaplanarak, her ders için başarı notları ortalaması alınacak ve başarı notu ortalaması 50 ve üzerinde olan derler listelenecek. S2: Adının ilk harfi büyük diğer harfleri küçük soyadının tümü büyük harflerden oluşacak adısoyadı isimli bir alanda gösteriniz! S3: Adı alanından ilk 3 karakter ile soyadı alanından son 3 karakter birleştirilerek birleşim isimli alanda gösteriniz. S4: 0314111091 numaralı öğrencinin girmiş olduğu derslerden aldığı en düşük ve en yüksek final notunu gösteriniz. S5: Notlar tablosunda V alanındaki değer 60’ın üstünde ve F alanındaki değer 40’ın altında olan kayıtlarda, V alanının ortalamasını gösteriniz. Örnek Sorular: Adı alanından ilk 3 karakteri soyadı alanından son 3 karakteri birleştirerek birleşim isimli alanda gösteriniz. Burdurluların adının 3 karakterini gösteriniz. Öğrenciler tablosunda, Burdurluların adı ve soyadı alanları birleştirilip tek bir alan olarak gösterilecek. Oluşan görünümde Adın ilk harfi büyük diğerleri küçük, soyadının tümü büyük harf olacaktır ve bunları da numara sırasına göre büyükten küçüğe doğru sıralayınız. Öğrenciler tablosunda Adı alanındaki ilk 3 karakteri küçük, soyadının son üç karakterini büyük harf olarak birleştirip "karışım" ismi ile gösteriniz. Notlar tablosunda V ve F den hareketle Başarı Notu hesaplanarak, öğrencileri Başarı Notuna göre büyükten küçüğe doğru sıralayınız. Notlar tablosunda V ve F den hareketle Başarı Notu hesaplanarak, Dk=5 olan kayıtları Başarı Notuna göre büyükten küçüğe doğru sıralayınız. Notlar tablosunda, Durum isimli yeni bir alanda V ve F alanlarının toplamı 100'ün üzerinde olan kayıtlara Başarılı, diğerlerine Başarısız yazdıracak sorguyu tasarlayınız. Notlar tablosunda V ve F den hareketle Başarı Notu hesaplanarak, OgrNo=0314111059 olan kayıtları Başarı Notuna göre büyükten küçüğe doğru sıralayınız. GenelDers tablosunda, teorik ve Uygulama saatlerinin ayrı ayrı toplamlarını gösteriniz. Derslere göre, başarı notu hesaplanarak, her ders için başarı notları ortalaması alınacak ve başarı notu ortalaması 50 ve üzerinde olan derler listelenecek. Notlar tablosunda V ve F den hareketle Başarı Notu hesaplanarak, OgrNo=0314112022 olan kayıtları Başarı Notuna göre küçükten büyüğe doğru sıralayınız. Notlar: Her dersi alan öğrenci sayılarını gösteriniz. Notlar tablosunda V alanındaki değer 60’ın üstünde ve F alanındaki değer 40’ın altında olanların V alanının ortalamasını gösteriniz. (Tek sayı olacak) Notlar tablosunda V ve F den hareketle Başarı Notu hesaplanarak, Dk=3 olan kayıtları Başarı Notuna göre küçükten büyüğe doğru sıralayınız? Adı alanından ilk 3 karakteri soyadı alanından son 3 karakteri birleştirerek birleşim isimli alanda gösteriniz? Adı alanındaki bilginin yarısını "yarım" isimli alanda gösteriniz? İzmirlilerin isimlerini küçük harfle gösteriniz? Derslere göre vize ve finalden hareketle başarı notu hesaplanarak her ders için başarı notları ortalaması alınacak ve başarı notu ortalaması 50 ve üzerinde olan derler listelenecek. 4 4.. V Veerrii T Taabbaannıı E Enn İİyyiilleeşşttiirrm mee ((N Noorrm maalliizzaassyyoonn)) Bir veri tabanı tasarlanırken iki şekilde düşünülebilir. İlkinde konu ile ilgili tüm bilgiler bir tablo üzerinde tutulabilir. Diğerinde ise her konu için ayrı tablolar oluşturulabilir. Her iki durum için tablo yapısı aşağıda verilmiştir. 1. Durum 2. Durum Yukarıdaki tablolara bakıldığında ilk durum daha az yer kapladığı, ikinci durumun ise daha çok yer kapladığı görülmektedir. Fakat 1000 öğrenci ve 10 farklı ders olduğunu ve her öğrencinin bu 10 dersi aldığını düşünerek bir hesaplama yapılırsa; İlk durum Toplam kayıt sayısı 1000 x 10 = 10000 İkindi Durum Her kayıt 139 bayt olduğuna göre; Öğrenci 1000x55=55000 bayt 10000x139=1,390,000 bayt yer kaplar Toplam Kayıt sayısı 1000 x 10 = 10000 Her tablo ayrı hesaplanmalıdır: Ders 10x81=810 Notlar 1000x10x20=200,000 Toplam 55,000+810+200,000=255,810 bayt Sonuç olarak veri tabanında veriler konulara göre tablolara bölünürse kayıt sayısı arttıkça kapladığı alan daha az olmaktadır. İlk durumda bir ders adı öğrenci sayısı kadar, bir öğrenci adı ise ders sayısı kadar tekrarlanmaktadır. Bu nedenle de oldukça fazla yer kaplamaktadır. Bu durumda veri tabanında veriler konulara göre parçalara ayrılmalıdır. Bir konu ile ilgili veri tabanı hazırlanırken; veri tekrarının önlenmesi ve belirli bir düzenin sağlanması ile veri tabanı daha hızlı çalışacak ve sonuca çok daha kısa sürede ulaşılabilecektir. Bunun için veri tabanı tasalanırken tek bir tablo yerine bilgileri uygun şekilde farklı farklı tablolara yazmak daha iyi sonuç verecektir. Bu nedenle öncelikle veri tabanı tablolarının tasarımında yapılan hataları tespit etmek gerekir. Tespit işlemi için aşağıdaki adımları sırasıyla uygulayıp, gerekli düzeltmelerin yapılması gerekir. 44..11.. V Veerrii T Taabbaannıı E Enn İİyyiilleeşşttiirrm mee KKuurraallllaarrıı Bu amaçla veri tabanına uygulanması gereken düzeltmeler şunlardır. 1. Alanları Parçalamak 2. Tablonun tek bir konusu olacak 3. Her tabloda, konusuna uygun birincil anahtar olacak 4. Tablodaki her alan birincil anahtara bağlı olacak 5. Eğer birincil anahtar birden çok sütundan oluşuyorsa, tüm alanlar bu birincil anahtar sütunlarına bağlı olmalıdır (Sadece anahtarlardan birine bağlıysa yanlış olur) 6. Aynı alan iki farklı tabloda birincil anahtar olamaz, bu tablolar birleştirilmelidir 7. Sütunlara yayılmış aynı türdeki alanlar varsa ayrı bir tabloda saklanmalıdır 8. Hücrelere ayrı satırlarda yazılması gereken bilgiler için sütunlar oluşturulmuşsa, tek bir sütun oluşturulup satırlara yazılmalıdır 9. Uygun alan tipleri seçilmeli 10. Tablo ve Alan isimleri doğru verilmeli 4 4..1 1..1 1.. A Allaan nllaarrıı P Paarrççaallaam maakk Veri tabanında tabloda her hücrede sadece tek bir bilgi olmalıdır. Böylece bu bilgiler üzerinde işlemler daha kolay yapılabilmektedir. Aşağıdaki örnekte olduğu gibi Müşteri alanında müşterinin adı ve soyadı bir arada yani tek bir hücre içine yazılmaktadır. Bu tablodaki verileri müşterinin soyadına göre sıralamak istenirse, soyadı ayrı bir bilgi olmadığı için bu işlem yapılamayacaktır. Bir tabloda adres bilgileri tek bir hücreye yazılmış ise arama ve sıralama işlemlerinde sorunlar oluşmaktadır. Örneğin adres bilgilerinde Atatürk Mahallesinde ikamet edenleri süzmek istersek, içinde Atatürk kelimesi geçen tüm adresler listelenir. Fakat Atatürk cadde ismi de olabilir. Yani Atatürk mahallesine ait olmayan adresler de listelenecektir. Alanlar parçalanırsa Adres alanı Mahalle, Cadde, Sokak, Numara, İlçe, İl şeklinde parçalanırsa bu durumda Mahalle isimleri ayrı bir sütun olacağı için sadece bu sütunda süzme yapılarak doğru sonuca ulaşılabilir. Örneğin “Adres” alanı yerine bu alan parçalanmalıdır. Mahalle, cadde, sokak, numara, ilçe, il gibi Örnek: Müşteri >> MüşteriAd, MüşteriSoyad Sorun: Tabloda bir hücreye birden çok sayıda bilgi girilmiş. Çözüm: Söz konusu sütunda yer alan her bilgi için ayrı sütunlar oluşturunuz. 4 4..1 1..2 2.. T Taab bllo on nu un n tteekk b biirr kko on nu ussu uo ollaaccaakk Veri Tabanında her konu için ayrı bir tablo oluşturulmalıdır. Bu tablolara ilişkilendirilmelidir. Örnek: Kitap bilgilerinin sakladığı tabloda KitapNo, Adı, Yazar, Yayınevi alanları vardır. Bu tabloda Yazar isimleri Kitap bilgilerinin konusu değildir. Aynı şekilde Yayınevi isimleri de kitap bilgisi değildir. Yazar ve Yayınevi için ayrı tablolar oluşturulmalıdır. Fakat “Kitap hangi yayınevinde basılmıştır?” sorusunun cevabı kitap tablosunda bulunmalıdır. Bu durumda yayınevinin adı yerine yayınevinin temsilci bilgisi yani kod numarası kitap tablosuna eklenmelidir. Yeni şekli ile KitapNo, Adı, YazarNo, YayıneviNo olmalıdır. Aşağıdaki resimde marka isimli sütun bulunmaktadır. Marka ürün bilgisi değildir. Bu nedenle marka ayrı bir tablo yapılmalı ve ürün tablosuna marka tablosunun temsilcisi konmalıdır. Örnek: ↓ DİKKAT: Diğer taraftan marka sütununa dikkat edilirse veri tekrarı vardır. Yani aynı marka ismi farklı kayıtlarda tekrar edebilmektedir. Örneğin “Intel” markası iki defa tekrarlanmıştır. Bir sütunda veri tekrarının olması o sütunun bu tabloya ait olmadığının işaretidir. Örnek: Çözüm önerisi: Tekrarlanan veriler var mı? Tekrarlanan verilerde farklılıklar var mı? Eğer tabloda tekrarlanan veriler içeren sütunlar varsa, veriler tekrar edilirken hatalı girilebilme ihtimali ortaya çıkmaktadır. Sorun: Bir tabloda birden fazla sayıda konu var. Çözüm: Tabloda bulunan her konu ayrı birer tabloya ayrılmalıdır. Aktarılan tablonun temsilcisi bu tabloya eklenmelidir. 4 4..1 1..3 3.. H Heerr ttaab bllo od daa,, kko on nu ussu un naa u uyyg gu un nb biirriin ncciill aan naah httaarr o ollaaccaakk Birincil anahtarın esas olarak iki amacı vardır. Birincisi Tabloları ilişkilendirmede gereklidir. İkincisi ise tablo içinde satırlara (kayıtlara) ulaşmada gereklidir. Dolayısıyla her tabloda, bulunan kayıtlarda birine ulaşılmak istendiğinde birincil anahtara ihtiyaç olacaktır. Bu nedenle her tabloda birincil anahtar olmalıdır. Birincil anahtar Tablonun konusuna bakılarak belirlenir. Birincil anahtar tablodaki her alanı temsil etmelidir. Yani tablonun temsilcisi olmalıdır. Sorun: Tabloda birincil anahtar yok. Çözüm: Tabloda mevcut alanlardan biri konuya uygun olarak birincil anahtar yapılmalıdır. Eğer uygun bir alan yoksa yeni bir alan eklenerek birincil anahtar yapılmalıdır. 4 4..1 1..4 4.. T Taab bllo od daakkii h heerr aallaan n b biirriin ncciill aan naah httaarraa b baağ ğllıı o ollaaccaakk Tablo içinde bulunan alanlar, tablo konusuna da bakılarak birincil anahtara bağlı olmalıdır. Eğer bir alandaki bilgiyi birincil anahtar temsil etmiyorsa o alan yeni bir tablo yapılarak, oluşturulan yeni tablonun temsilcisi tabloya eklenmelidir. 4.1.2 nolu başlıkta yer alan örnekte aynı durum vardır. Sorun: Tablodaki bir veya daha fazla alan birincil anahtara bağlı değil. Çözüm: Bu alan yeni bir tabloya aktarılarak, oluşturulan yeni tablonun temsilcisi eklenmelidir. 4 4..1 1..5 5.. E Eğ ğeerr b biirriin ncciill aan naah httaarr b biirrd deen n çço okk ssü üttu un nd daan n o ollu uşşu uyyo orrssaa,, ttü üm m aallaan nllaarr b bu ub biirriin ncciill aan naah httaarr ssü üttu un nllaarrıın naa b baağ ğllıı o ollm maallııd dıırr Çift anahtar; bir tabloda iki veya daha fazla alan birlikte anahtarı oluşturuyorsa çift anahtar adını alır. Bu durumda tablodaki diğer alanlar, anahtarı oluşturan alanlara bağlı olmalıdır. 4.1.4 nolu başlıktaki ile aynı düşünülmelidir. Sorun: Tablodaki bir veya daha fazla alan birincil anahtar sütunlarının tümüne bağlı değil. Çözüm: Bu alan yeni bir tabloya aktarılarak, oluşturulan yeni tablonun temsilcisi eklenmelidir. 4 4..1 1..6 6.. A Ayyn nıı aallaan nb biirrd deen n ffaazzllaa ttaab bllo od daa b biirriin ncciill aan naah httaarr o ollaam maazz Bir veri tabanında aynı içeriğe sahip olan bir alan, fazla sayıda tabloda birincil anahtar olamaz. Böyle bir durum varsa bu tablolar birleştirilmelidir. Sorun: Aynı alan veri tabanında başka bir tabloda da birincil anahtar yapılmış. Çözüm: Birincil anahtarları aynı olana tablolar birleştirilerek tek tablo haline getirilmelidir. 4 4..1 1..7 7.. S Sü üttu un nllaarraa yyaayyııllm mıışş aayyn nıı ttü ürrd deekkii aallaan nllaarr vvaarrssaa aayyrrıı b biirr ttaab bllo od daa ssaakkllaan nm maallııd dıırr Bir müşterinin kimlik bilgilerinin saklandığı bir tabloda ev telefonu, iş telefonu, faks numarası için ayrı sütunlar bulunuyorsa, bazen müşterinin sadece tek bir telefon numarası olabilir. Bu durumda faks numarası ve ev telefonu sütunları boş kalacaktır. Bazen de müşterinin 4 farklı telefonu olabilir. Bu durumda bu müşterinin telefonlarını yazmak için yer olmayacaktır. Kitap tablosunda Yazar1, Yazar2, Yazar3 gibi. Bu tip aynı tür bilgi içeren birden fazla sütun olduğunda içine veri girilmeyen hücreler oluşabilmektedir. Aşağıdaki resimde de bir örneği gösterilmiştir. Reyon, resyon2 alanları aynı tür bilgi içermektedir. Bazı durumlarda boş kalmaktadır. Bu durumda bu sütunlar tamamen tablodan kaldırılmalı ve yeni bir tablo oluşturulmalıdır. Boş bırakılan alanlar tercih edilmemeli Sorun: Bir tabloda aynı bilgi içeriğine sahip birden fazla alan var. Çözüm: Bu bilgiyi içeren yeni bir tablo oluşturularak ana tablonun temsilcisi yeni oluşturulan tabloya eklenmelidir. 4 4..1 1..8 8.. H Hü üccrreelleerree aayyrrıı ssaattıırrllaarrd daa yyaazzııllm maassıı g geerreekkeen n b biillg giilleerr iiççiin n ssü üttu un nllaarr o ollu uşşttu urru ullm mu uşşssaa,, tteekk b biirr ssü üttu un n o ollu uşşttu urru ullu up p ssaattıırrllaarraa yyaazzııllm maallııd dıırr Bazı durumlarda bu hata yapılabilmektedir. Örneğin Kütüphane takibi için aşağıda verilmiş örnekte kitap türleri için bir tablo oluşturulmuş. Kitap Tür tablosunda ise sütun isimleri olarak kitap türleri verilmiştir. Bir tabloda veriler hücrelerin içine yazılmalıdır. Sütunlara verilen isimler veri olarak değerlendirilmez. ÜrünTür Ütn Gıda Kırtasiye Temizlik Beyaz Eşya Siyah Eşya ÜrünTür Ütn Tür ÜrünTür Ütn Gıda 1 Şeftali ÜrünTür Ütn 1 2 3 4 5 . . Kırtasiye Defter Temizlik Bingo Beyaz Eşya Siyah Eşya Dolap Siyah Dolap Tür Gıda Kırtasiye Temizlik Beyaz Eşya Siyah eşya . . Sorun: Veriler tabloda hücre içinde saklanır. Bu veriler sütun ismi yapılmış Çözüm: Tablonun tasarımı verileri hücre içinde saklayacak şekilde düzenlenmelidir. 4 4..1 1..9 9.. U Uyyg gu un n aallaan n ttiip plleerrii sseeççiillm meellii Uygun alan tipinin seçilmesinde; Girilecek veriye uygun alan tipi seçilmeli Mümkün olduğunca en küçük boyutlu alan tipi seçilmeli Öncelikle hangi tür veri girilecekse o alan tiplerinden biri seçilmelidir. Örneğin tarih bilgileri girmek için Metin alan tipi seçilebilir. Veri girişinde herhangi bir sorun çıkmayacaktır. Fakat daha sonra süzme ve sıralama işlemleri yapılmaya çalışıldığında hatalı sonuçlar alınacaktır. Tarihler metin tipinde girilirse sıralama yapıldığında tarihe göre değil de metne göre sıralama yapılacaktır. Metin Tipinde saklanmış tarihler sıralaması 01/12/2013 02/01/2012 15/03/2000 16/11/2013 21/12/2013 Tarih Tipinde saklanmış tarihler sıralaması 15/03/2000 02/01/2012 16/11/2013 01/12/2013 21/12/2013 Sorun: Tabloda sütunların içeriğine uygun alan tipi seçilmemiş. Çözüm: Her sütun için tek tek inceleyerek uygun alan tipleri verilmelidir. 4 4..1 1..1 10 0.. T Taab bllo o vvee A Allaan n İİssiim mlleerrii Bir veri tabanında tablolara ve alanlara isim verilmesinde veri tabanının belirlediği kurallara uymak zorunludur. Fakat bu kurallar fazla bir sınırlama getirmemektedir. Daha sonrada bazı hatalar ortaya çıkmaktadır. Bu nedenle aşağıdaki tavsiyelere uyulması tasarım ve kullanım açısından fayda sağlayacaktır. 1. Sadece İngiliz alfabesinde olan harfler kullanılmalıdır. 2. _ (Alt tire) dışında herhangi bir noktalama işareti kullanılmamalıdır. 3. Boşluk karakteri kullanılmamalıdır. Boşluk yerine ya alt tire işareti kullanılmalı, ya da kelimelerin ilk harfleri büyük diğer harfler küçük harfler kullanılmalı. 4. İsimler kısa ve öz olmalıdır. O tablodaki veya sütundaki veriyi temsil edecek bir isim olmalıdır. 5. Bir tablo içinde alan ismi verilirken alan isimlerinin başına tablonun ismi eklenmemelidir. Müşteri Tablosunda MüşteriNo, MüşteriAdı, MüşteriSoyadı, MüşteriTel, MüşteriAdres gibi sütun isimleri kullanılmamalıdır. Her alan adının başında Müşteri kelimesi vardır. Zaten bu tablo müşteri tablosudur. Her alan adının başına Müşteri eklenmesi uygun değildir. Doğrusu: MüşteriNo, Adı, Soyadı, Tel, Adres olmalıdır. Sorun: Tablo ve alan isimleri verilirken tavsiyelere uyulmamış. Çözüm: Tablo ve alan isimleri tek tek tavsiyelere uygun şekilde düzenlenmelidir. 44..22.. V Veerrii T Taabbaannıı E Enn İİyyiilleeşşttiirrm mee U Uyygguullaam maassıı 1-Aşağıda tabloların resmi bulunan bir veri tabanı: Kütüphane takip Tüm tabloların şematik görünümü Bu veri tabanına bakıldığında ilk görülen her kitap türü için ayrı birer kitap tablosu oluşturulduğudur. Bunun amacı da türlere göre kitapları ayrı tablolarda tutarak karışıklığın önlenmesidir. Bu tablolara veri girişi yapılmak istendiğinde Derleme_turu, Ders Kitabı_turu, Edebiyat_turu, Roman_turu, Tarih_turu tablolarına rahatlıkla bilgi girişi yapılabilmektedir. Fakat bir kitabın üçten fazla yazarı varsa bu tablolara girilmesi mümkün değildir. Üye bilgisi tablosunda veri girişinde yine kiraladığı kitap diye bir alan vardır. Bir üye birden fazla sayıda kitap kiralar ise buraya kitap adının girilmesinde problem çıkmaktadır. Çünkü sadece tek bir kitabın adı yazılabilir. Kiralama işlemi ile ilgili Kiralama tablosu bulunmaktadır. Üyelerin kiraladığı kitaplar bu tabloya girilecektir. Diğer taraftan Üye Bilgisi tablosunda da kiraladığı Kitap alanı bulunması bir çelişkidir. Diğer bir sorun ise Kiralama tablosunda kitap yazarı için tek bir sütun bulunmaktadır. Kitap tablolarında ise üç adet yazar sütunu bulunmaktadır. Bu nedenle Kiralama tablosunda eksik bilgi girişi olmaktadır. Kitap Türleri tablosunda ise veri girişi yapılmak istendiğinde hücrelere ne gibi bir bilgi girilmesi gerektiği meçhuldür. Bu tabloya girilebilecek hiçbir bilgi bulunmamaktadır. İşlem Tarihleri tablosunda ise konu kiralama işlemidir. Yani kiralama işlemi ile ilgili bilgiler vardır. Aslında kiralama işlemi için kiralama tablosu bulunmaktadır. Diğer taraftan bu tabloda eksik bilgi vardır. Hangi kitap kiralandı belli değildir. Kitap isimleri ise Kitap tablolarına girilir, ayrıca her kiralama işleminde tekrar yazılır. Yani kitap bilgileri farklı tablolara tekrar tekrar yazılmaktadır. Bu da veri tabanının çabuk dolmasına ve fazla yer tutmasına sebep olur. Diğer taraftan kitap isimleri tekrar tekrar yazıldığında farklı yazımlar söz konusu olur. Bu veri tabanının en iyi hale getirilmesi için on maddeden oluşan iyileştirme kurallarını uygulamak gereklidir. Kurallardaki 9. Ve 10. Maddeler en son uygulanması daha doğru olacaktır. Çünkü veri tabanı yapısı oldukça değişecektir. Uygun alan tiplerinin seçimi ve alan isimleri düzenlemesi en son yapılırsa daha iyi olacaktır. Kurallardaki 1. Madde uygulanırsa; Kitap tablolarında parçalanacak alanlar Kitap yazarı alanlarıdır (Yazar Adı ve Yazar Soyadı). Üye bilgisi tablosunda Adı soyadı, adres ve telefon alanları parçalara ayrılmalıdır. Kiralama tablosunda ise Adı soyadı, Kitap yazarı, Kiralama yapan personel ve Telefon alanları parçalanmalıdır. İşlem Tarihleri ve Kitap Türleri tablolarında ise veri girişinde sorun bulunduğu için herhangi bir parçalama yapılmamalıdır. Çünkü bu tablolar ya silinecek ya da yapısı değişecektir. Bu değişiklikler yapıldığında veri tabanı şeması aşağıdaki gibi olacaktır. Kurallardaki 6. Madde uygulanırsa; Bu aşamada dikkati çeken bir durum da Kitap tablolarıdır. Çünkü kitap tablolarının yapıları birbirinin aynısıdır. Bu kuralı önce uygulamak yapılacak diğer kuralların uygulanmasını kolaylaştıracaktır. 6. Kurala göre “bir alan sadece tek bir tabloda birincil anahtar olmalıdır.” Bu durumda bu tabloların birleştirilmesi gereklidir. 6. Madde uygulandığında veri tabanı şeması aşağıdaki gibi olacaktır. Kitap tablolarının birincil anahtarları hep aynıdır. Bu nedenle birleştirilecektir. Fakat kitap tablolarındaki amaç türlere göre kitapları sınıflamaktı. Kitap tabloları birleştirilince kitap türünü belirtmek için yeni oluşturulan Kitap tablosuna Kitap Türü alanı eklenmelidir. Kurallardaki 2, 3, 4 ve 5. Maddeler uygulanırsa; 2. 3. 4. ve 5. Kurallar bir birini destekleyen ve bir arada düşünülmesi gereken kurallardır. 2. Maddeye göre “her tablonun sadece tek bir konusu olmalıdır.” Son duruma göre tablolar tek te düşünüldüğünde; Üye Bilgisi tablosunda konuya uygun birincil anahtar mevcuttur. 2. Kurala göre mevcut alanlar değerlendirildiğinde 2 farklı konu olduğu görülmektedir. İlk konu üyelere ait kimliğini tanımlaya bilgiler ve kitap kiralama işlemidir. Tablodaki en son alan Kiraladığı Kitap kitap kiralama işlemidir. Zaten bu işlem için ayrıca bir tablo bulunduğundan dolayı bu alan tablodan silinmelidir. Adresi oluşturan Mahalle, Cadde, Sokak, İlçe ve İl isimleri Üye bilgisi değildir. Bu nedenle her biri için ayrı birer tablo yapılarak ilgili tabloların temsilcileri Üye Bilgileri tablosuna yazılmalıdır. İşlem Tarihleri tablosu incelendiğinde ise konu ile ilgili alanlar eksiktir. Ayrıca işlem tarihleri kitap kiralama işlemi ile ilgilidir. Bu nedenle de bu tablodaki alanlar kiralama tablosuna eklenmelidir ve bu tablo silinmelidir. Kiralama tablosunda alanların bazıları zaten bulunmaktadır. Bu alanları iki defa yazmanın bir anlamı yoktur. Farklı olan alanlar Kiralama tablosuna eklenmelidir. Kiralama tablosunda konuya uygun bir birincil anahtar mevcuttur. 2. Kurala göre mevcut alanlar değerlendirildiğinde farklı konular mevcuttur. Üyeye ait bilgiler bu tablonun konusu değildir. Tablodan çıkarılarak yeni bir tabloya konmalıdır. Fakat üye bilgileri için bir tablo bulunmaktadır. Bu nedenle yeni bir tabloya gerek yoktur. Aynı şekilde kitap bilgileri için tablo bulunduğu için kitap bilgisi alanları da çıkarılmalıdır. Bunlar yerine temsilcileri olan ÜyeNo ve KitapNo alanları eklenmelidir. Personel bilgileri için bir tablo bulunmadığından dolayı personel adında yeni bir tablo eklenmeli ve kiralama tablosuna temsilcisi olan PersonelNo alanı eklenmelidir. Kitap tablosu incelendiğinde birden fazla sayıda konu olduğu görülmektedir. Bu tabloda Kitap bilgileri, Yazar bilgileri ve Yayınevi bilgileri vardır. 5. Kurala göre de her alan birincil anahtara bağlı olması gerektiğinden Yazara ve Yayınevine ait bilgiler bu tabloda olmamalıdır. Diğer bir deyişle bu tablonun birincil anahtarı tablodaki diğer sütunların temsilcisi konumundadır. KitapNo alanı yayınevi adını temsil edemez. Aynı şekilde Kitapno alanı yazar adını ve soyadını da temsil edemez. Sonuç olarak Yazar ve Yayınevi adında iki tablo daha veri tabanına eklenmelidir. Kitap tablosuna YazarNo ve YayınEviNo alanları eklenmelidir. Tüm bu işlemler sonucunda aşağıdaki duruma ulaşılır. Kurallardaki 7. Madde uygulanırsa; 7. Kural dikkate alındığında ise sütunlara yayılmış aynı tür ve içerikteki bilgiler ayrı tablolara alınmalıdır. Üye Bilgisi tablosunda telefon numaraları aynı tür bilgilerdir. Bir üyenin birden fazla sayıda telefon numarası olabileceği gibi hiç telefon numarası da olmayabilir. Hiç telefonu yoksa bu sütunlara bilgi girilmeyecek ve boş kalacaktır. Boş kalmasına rağmen veri tabanında yer kaplayacaklardır. Bazen de daha fazla sayıda telefon numarası olabilir bu durumda telefon numaralarının hepsi yazılamaz. Bu sebeple telefon numaraları için ayrı bir tablo oluşturulmalıdır. Kitap tablosunda Yazar1No, Yazar2No, Yazar3No isminde alanlar vardır. 8. Kurala göre bu alanlar aynı tür ve içerikte alanlardır. Bu kurala göre de ayrı bir tabloya alınmaları gerekmektedir. Ayrıca Yazar tablosuna da Kitap tablosunun temsilcisi eklenmelidir. Kiralama tablosunda tarih tipinde alanlar vardır. Bunlar da aynı türde bilgi olarak düşünülebilir. Fakat bu tarih alanlarının her biri farklı konuyu ifade etmektedir. Bu nedenle ayrı bir tabloya alınmaları yanlış olur. Kurallardaki 8. Madde uygulanırsa; 8. Kural dikkate alındığında Kitap Türleri tablosunda olduğu gibi veriler (bilgiler) hücrelerin içine yazılması gereken bilgiler sütun ismi yapılmıştır. Bu düzeltmeyi de yaptıktan sonra veri tabanı şeması aşağıdaki gibi olur. Kurallardaki 9. Ve 10. Maddeler uygulanırsa; Veri tabanında yer alan tüm tabloların isimleri ve alan isimleri tavsiyelere uyularak düzeltilmelidir. Diğer taraftan ise tüm tablolarda alan tipleri düzenlenmelidir. Bu düzeltmeler yapıldıktan sonra veri tabanı aşağıdaki şekli almaktadır. Bu maddeler uygulandıktan sonra veri tabanında ilişkilendirmelerin yapılması gerekir. Buna göre ilişkili olabilecek tablolar tespit edilmelidir. Aslında şu ana kadar yaptığımız parçalama işlemlerinde yeni oluşturulan tablolar hangi tablolardan ayrıldıysa o tablo ile ilişkili olma ihtimali yüksektir. Sıra ile tabloları ele alacak olursak: Personel: bu tablodan ilçe ve şehir alanları ayrılarak yeni tablolar oluşturulmuştu. Bir personelin adresi yazılırken “hangi şehir? Hangi İlçe?” sorularının cevabı olmalıdır. Bu durum da Şehir ve İlçe tabloları ile Personel tablosu ilişkilendirilmelidir. Personel ve Şehir tablolarını incelersek ilişkilendirme için birincil anahtar özelliğindeki alanlar kullanılacaktır. Bu nedenle iki durum olabilir. 1-Şehir tablosuna PerNo alanı eklenip ilişkilendirilebilir. 2-Personel tablosuna ŞehirNo alanı eklenip ilişkilendirilebilir. Bunlardan hangisinin doğru olduğu iyi düşünülmelidir. Bu durumlar yukarıda şematize edilmiştir. Sırayla düşünecek olursak 1-Bir personel, birçok şehir (bir personel bir çok şehirde oturuyor) 2-Bir Şehir, birçok personel (bir şehirde birçok personel oturuyor) Bu iki durum düşünüldüğünde 2. Durumun doğru olduğu görülmektedir. Aynı şekilde İlçe tablosu ile ilişkilendirme yapılmalıdır. Dolayısıyla Personel tablosuna ŞehirKodu ve İlçeKodu alanları eklenip ilişkilendirilmelidir. Üye: Üye tablosu da şehir ve ilçe tabloları ile ilişkilendirilmelidir. Çünkü Üye tablosundan şehir ve İlçe sütunları silinmişti. Personel tablosunda olduğu gibi düşünüldüğünde Üye tablosuna ŞehirKodu ve İlçe Kodu alanları eklenerek ilişkilendirme yapılmalıdır. Üye tablosu ile Telefon tablosu da ilişkilendirilmelidir. Çünkü Telefon numaraları Üye tablosundan alınarak yeni bir tablo oluşturulmuştu. Bu iki tablo ilişkilendirilirken yine iki durum söz konusudur. 1-Üye tablosuna TelKodu alanı eklenip ilişkilendirilmelidir. 2-Telefon tablosuna Üye Numarası alanı eklenip ilişkilendirilmelidir. Bu iki durumu düşünürsek aşağıdaki gibi yorumlanır. 1-Bir Telefon, Birçok üye (Bir telefon birçok üyeye aittir) 2-Bir Üye, Birçok Telefon (Bir üyenin birçok telefonu vardır) Bu durumda ikinci yorum doğrudur. Telefon tablosuna Üye numarası eklenerek ilişkilendirme yapılmalıdır. Kitap: Veri tabanı parçalama işlemi yapılırken kitap tablosundan ayrılan yazar, yayınevi tabloları ile kitap tablosu ilişkilidir. Buna göre ilk olarak yayınevi tablosu ile kitap tablosunu düşündüğümüzde “Bir yayınevinin yayınladığı birçok kitap vardır.” Yorumu doğrudur. Buna göre kitap tablosuna YayıneviNo eklenerek ilişkilendirme yapılmalıdır. Kitap ve Yazar tablosunu düşündüğümüzde: 1-Kitap tablosuna YazarNo eklenerek ilişkilendirme yapılmalıdır. 2-Yazar tablosuna KitapNo eklenerek ilişkilendirme yapılmalıdır. Buna göre yorumlama yaparsak 1-Bir kitabın birçok yazarı vardır 2-Bir yazarın birçok kitabı vardır Şeklinde iki yorum söz konusudur. Bu yorumlara bakılınca her iki yorumun da doğru olduğu görülür. Her iki yorum da doğru olursa bu iki tablo doğrudan ilişkilendirilmez, bir aracı tablo oluşturulur. Yorumlardan biri doğru olursa o yoruma göre ilişkilendirme yapılır. Eğer yorumların ikisi de doğru değil ise bu iki tablo ilişkilendirilemez. Her iki yorum doğru olduğu için bu iki tabloya aracı olacak bir tablo eklenir. KitapYazar isminde yeni bir tablo eklenir. Bu tabloya diğer iki tablonun birincil anahtar özelliğindeki alanları eklenir. Ve şekilde görüldüğü gibi ilişkilendirme yapılır. Diğer taraftan Kitap tablosu ile Tür tablosu da ilişkilendirilmelidir. Çünkü tür tablosunda kitap türleri saklanmaktadır. Bu iki tablo arasında da “Bir türe ait birçok kitap vardır” yorumu doğru olduğu için Kitap tablosuna TürNo alanı eklenerek ilişkilendirme yapılmalıdır. YayınEvi: Yayınevi tablosunda adres bilgilerinden ilçe ve şehir ayrı tabloya alındığı için Yayınevi tablosu ile İlçe ve Şehir tabloları ilişkilendirilmelidir. Personel ve Üye tablolarında olduğu gibi burada da ilişkilendirme yapılır. Yayınevi tablosuna İlçeKodu ve ŞehirKodu alanları eklenerek ilişkilendirmeleri yapılır. Kiralama: Kiralama işlemi düşünüldüğünde; Hangi kitap kiralandı? Hangi üye kiraladı? Kiralama işlemini hangi personel yaptı? sorularının cevabı yoktur. Her bir soru için kiralama tablosuna alanlar eklenmelidir. Diğer taraftan ilişkilendirme yorumlarına bakarsak yine aynı sonuca ulaşırız. 1-Bir kitap birçok üye tarafından kiralanabilir. 2-Bir üye birçok kiralama işlemi yapabilir. 3-Bir personel birçok kiralama işlemi yapabilir. Buna göre Kiralama tablosuna KitapNo, Üye numarası ve PersonelNo alanları eklenerek ilişkilendirme yapılmalıdır. 44..33.. B Baazzıı Ö Örrnneekklleerr Örnek 1: Alan Adı *TakipNo Ogrno Adı Soyadı Ders kodu Ders Adı Öğretim Elemanı Teorik Uygulama Kredi Öğrenci Not Takip Alan Tipi Otomatik Sayı Tamsayı Metin(20) Tamsayı Metin(30) Metin (15) Ondalık Ondalık Ondalık Vize Final Başarı Notu Durum Örnek 2: Otel Takip Alan Adı *TakipNo Müşteri Adres Tel1 Tel2 Tel3 Oda No Odanın özelikleri Oda Kat No Oda Kişi Sayısı Oda Günlük Ücret Ücreti Giriş Tarihi Çıkış Tarihi Kaldığı gün sayısı Toplam Ücret Ödenen Ücret Uzun tamsayı Uzun tamsayı Uzun tamsayı Metin (20) Alan Tipi Otomatik Sayı Adı Soyadı Metin 20 Uzun Tamsayı Uzun Tamsayı Uzun Tamsayı Uzun Tamsayı Uzun Tamsayı Uzun Tamsayı Uzun Tamsayı Ondalık Metin 12 Metin 12 Metin 12 Bayt Bayt 44..44.. Ç Çöözzüüllm müüşş Ö Örrnneekk Market Takip 5 5.. S SQ QLL S SE ER RV VE ER R Daha önceki derslerde SQL Server veri tabanından bahsedilmişti. SQL Server veri tabanına bağlanabilmek için mutlaka bilgisayar üzerinde SQL Server programının kurulu olması gerekir. Veri tabanını kendi programımız içinden doğrudan kullanılamaz. Veri tabanına ulaşmak için SQL Server programına ihtiyaç vardır. SQL Server programı veri tabanına bağlanır ve bizim kullanmamıza açar. Access veri tabanında böyle bir durum yoktur. Doğrudan Access veri tabanını kullanabiliriz. Veritabanı SQL Server Uygulama Yazılımı SQL Server’ın iki farklı sürümü vardır. Express sürüm ve tam sürüm. Tam sürüm ücretlidir. Sınırsız erişim izni vardır. Express sürümde ise sadece 5 erişime izin vermektedir. Ve ücretsizdir. Bir programın hazırlanmasında SQL Server Express yeterli olmaktadır. Fakat yapılacak programda kullanıcı sayısı çok olursa bu sürüm yeterli olmamaktadır. SQL Server Tam sürüm kurulduğunda bir yönetim paneli de kurulmaktadır (SQL Server Management Studio). Bu panel kullanılarak veri tabanı oluşturulup yönetilebilir. Fakat SQL Server Express sürüm kurulduğunda bir yönetim paneli kurulmaz. Yönetim paneli olmasa da SQL server çalışır ve kullanılabilir. Fakat istenirse www.microsoft.com sitesinden yönetim paneli programı indirilebilir (SQL Server Management Studio Express). Bu yönetim paneli kurulduktan sonra SQL server veri tabanlarını rahatlıkla oluşturabilir ve kullanabiliriz. 55..11.. S SQ QLL S Seerrvveerr’’ee B Baağğllaannm maa SQL Server kurulduktan sonra çalışmaya başlar ve devamlı olarak çalışır. Yönetim paneli kullanarak SQL Server’de veri tabanı işlemleri yapılabilir. SQL Server Management Studio Express çalıştırılınca ilk olarak hangi SQL Server’e bağlanacağı, kullanıcı bilgileri belirlenir ve o şekilde bağlanılır. Server type: Bu sabit olarak “Database Engine” seçilir. Server name: Bu bağlanılacak serverin adı ve paylaşım adı yazılır. “.\SQLEXPRESS” yazılırsa bulunduğumuz bilgisayardaki SQL Server Express’e bağlanılacağı belirtilmiş olur. Yazılan nokta işareti kendi bilgisayarımızı simgeler. Başka bir bilgisayar ise o bilgisayarın adı yazılır. Authentication: SQL Server veri tabanına bağlanmak için mutlaka kullanıcı adı ve parolaya ihtiyaç vardır. Kullanıcı adı ve parola olarak istenirse Windows işletim sisteminde tanımlı olan kullanıcı adı ve parolalar tercih edilebilir. Bu durumda alt kısımda kullanıcı adı ve parola bölümü devre dışı kalmıştır. Bu durumda Windows işletim sistemimizi açtığımız kullanıcı adı ve parolası veri tabanına erişimde kullanılır. İstenirse SQL Server içinde tanımlanmış olan kullanıcı adı ve parolalar da tercih edilebilir. Bunun için “SQL Server Authentication” seçilmelidir. Bu durumda ise alt kısımdaki Login kısmına SQL Server’de tanımlı olan kullanıcı adı, Password kısmına ise parolası yazılır. Ve o şekilde bağlantı sağlanır. SQL Server kurulduğunda tanımlı olan “sa” (System Admin) kullanıcısı mevcuttur ve parolası yoktur. Connect düğmesine basılarak bağlantı sağlanır. Bağlantı sağlandığında aşağıda resimde görülen ekranın sol tarafındaki kısımda SQL Server’in birimleri görülmektedir. Önemli olan seçenekler aşağıda listelenmiştir. Database: veri tabanlarının bulunduğu kısım. Security: güvenlik ayarlarının yapıldığı kısım Database kısmı altında veri tabanları listelenmiştir. Bu listenin başında System Database seçeneği sistem veri tabanlarını barındırır. Kullanıcı veri tabanları ise altta sıralanmıştır. 55..22.. S SQ QLL S Seerrvveerr’’ddee V Veerrii ttaabbaannıı oolluuşşttuurrm maa Database seçeneği üzerinde farenin sağ tuşuna basılır ve orada “New Database” seçilir. Ekrana gelen pencerede “Database name” kısmına veri tabanı adı yazılır. SQL Server veri tabanı iki dosyadan oluşur. Biri verilerin saklandığı dosyadır. Diğeri ise yapılan işlemlerin belirlendiği dosyadır. İstenirse oluşturulacak veri tabanının bulunacağı klasör değiştirilebilir. Veri tabanı adı yazıldıktan sonra Ok düğmesine basılarak veri tabanı oluşturulur. Veri tabanının ismi listeye eklenir. Veri tabanı adının solundaki artı işaretine basılınca aşağıda resimde görülen bölümler listelenir. Bu listede veri tabanımızdaki nesneler yer almaktadır. Database Diagrams: İlişkilendirme şeması Tables: Tablolar Views: Sorgular 55..33.. S SQ QLL S Seerrvveerr’’ddee T Taabblloo SQL Serverde yeni bir tablo oluşturmak için sol taraftaki Veri Tabanı nesnelerinin listelendiği ağaç yapısındaki bölümden Tables seçeneği üzerinde farenin sağ tuşuna basılır ve “New Table” seçilir. Sağ bölmede tablo oluşturma penceresi ekrana gelir. üstte alan adı (Column Name), Alan tipi (Data Type) ve boş bırakılabilir (Allow Nulls) sütunları gelir. Alt kısımda ise seçili alan ile ilgili özellikler listelenir. 5 5..3 3..1 1.. S SQ QLL S Seerrvveerr T Taab bllo oÖ Özzeelllliikklleerrii 55..33..11..11.. A Allaann A Addıı Alan adlarında boşluk karakteri, harfler, rakamlar ve bazı diğer karakterler (parantezler, nokta, vb.) kullanılabilir. Alan adı belirlenirken daha sonra hataya sebep olmaması için aşağıdaki tavsiyelere uyulmalıdır. Tavsiyeler: 1-Mümkün olduğunca kısa ve anlaşılır isimler kullanılmalı. 2-Sadece İngiliz alfabesinde olan harfler kullanılmalı. 3-Boşluk karakteri kullanılmamalı. 4-Hiçbir noktalama işareti kullanılmamalı 5-Alan isimleri yazılırken küçük harfler tercih edilmelidir. Türkçede bulunan Ğ Ü Ş İ Ç Ö ğ ü ş ı ç ö harfleri alan isimlerinde kullanılmamalıdır. Özellikle ı harfi İngiliz alfabesi ile çatışmaktadır. En büyük sorun bu harften kaynaklanmaktadır. İngiliz alfabesinde bir adet i harfi varken Türkçede iki adet i harfi vardır. Küçük harf kullanılırken noktalı, büyük harf kullanılırken noktasız kullanılmalıdır. Alan isimleri birden fazla kelimeden oluşuyorsa boşluk karakteri yerine alt tire işareti kullanılabilir. Ya da kelimeler birleştirilir ve her kelimenin ilk harfi büyük harf yapılır. 55..33..11..22.. A Allaann T Tiippii Access Alan Tipi Otomatik Sayı SQL Server Alan Tipi ---- Sayı-Bayt Sayı-Tamsayı Sayı-Uzun Tamsayı --Sayı-Ondalık Sayı-Tek Sayı-Çift Para Birimi ---Evet/Hayır Tarih/saat Tinyint Smallint int Bigint Decimal – numeric real Float Money Smallmoney bit Datetime ---- Smalldatetime Metin Not ---- ------char varchar - text varchar(max) nchar nvarchar - ntext nvarchar(max) Tamsayıları saklar 4 bayt yer kaplar, 1 den başlayarak artan değerler verir 0-255 arasındaki tamsayılar 1 bayt yer kaplar Tamsayıları saklar 2 bayt yer kaplar Tamsayıları saklar 4 bayt yer kaplar Tamsayıları saklar 8 bayt yer kaplar Ondalık sayıları saklar 12 bayt yer kaplar Ondalık sayıları saklar 4 bayt yer kaplar Ondalık sayıları saklar 8 bayt yer kaplar Parasal değerleri saklar 4 ondalık hane bulunur. 8 bayt yer kaplar Parasal değerleri saklar 4 ondalık hane bulunur. 4 bayt yer kaplar Bir bit yer kaplar iki farklı durumu saklar 1 Ocak 1753 – 31 Aralık 9999 tarihleri arasını kapsar 3.33 milli saniye duyarlılık 1 Ocak 1900 – 6 Haziran 2079 tarihleri arasını kapsar 1 dakika duyarlılık En fazla 255 karakter saklayabilir En fazla 65536 karakter saklayabilir 8000 karakter saklayabilir 8000 karakter saklayabilir. Sondaki boşluları atar En fazla 2^31-1 bayt yer kaplar. Her harf bir bayt yer kaplar. Sondaki boşlukları atar 4000 unicode karakter saklar. 4000 unicode karakter saklar. Sondaki boşlukları atar En fazla 2^31-1 bayt yer kaplar. Unicode sakladığı için her harf 2 bayt yer kaplar. Sondaki boşlukları atar SQL Server’de metin içeriği saklayabilen alanlar aşağıda verilmiştir. Bunların farkları ise altta açıklanmıştır: Char, Nchar, Varchar(Max): Ntext, Nvarchar, Nvarchar(Max), Varchar, Başında “n” olmayanlar sadece ASCII karakterlerinde kullanılır Başında “n” olanlar ise Unicod kodlama sistemi vardır ve dünyadaki tüm dillerdeki harfleri içerir. Eğer Türkçe karakter girişi yapılmak isteniyorsa “n” olanlar tercih edilir. Başında “var” kelimesi olmayanlar mutlaka belirtilen karakter kadar yer tutar. Boşlukları da saklar. “var” kelimesi varsa sadece içine girilen bilgiyi saklar. Alan tiplerinde text ve ntext değişken tipleri vardır bunları sık olarak kullanmayız. Veri tabanı kullanırken alan tiplerini doğru belirlenmesi gereklidir. Örneğin web sitesi yaparken çok önemlidir. Tarih yazıyorsak tarih alan tipini belirtmemiz lazım. Alan tipimizi tarih değil de metin seçersek kullanıcı istekte bulunduğunda hangi tarihi göstereceğini bilemez. Bu sadece web sitesi yaparken değil her hangi bir program yazarken de alan tiplerini doğru belirtmemiz lazım. 55..33..11..33.. V Vaarrssaayyııllaann D Deeğğeerr SQL Serverde varsayılan değer özelliği Default Value or Binding özelliği ile sağlanır. Değer bu özelliğe yazılır. Tarih tipindeki alanlarda şu anki zamanı veren fonksiyon GetDate() dir (Access’te Date() idi). 55..33..11..44.. G Geerreekkllii SQL Server’de gerekli özelliği Tablo Tasarım penceresinde “Allow Nulls” özelliği ile yapılır. Seçili ise o alan boş bırakılarak kayıtlar eklenebilir. Fakat işaretli değilse o alana bilgi girmeden yeni kayıt ekleyemeyiz. Mutlaka bilgi girilmelidir. 55..33..11..55.. O Ottoom maattiikk A Arrttıışş Access’te alan tiplerinde otomatik sayı bulunmaktadır. Fakat SQL Server’de bu izimde bir alan tipi yoktur. SQL Server’de tinyint, smallint, int ve bigint tamsayı alan tiplerinde otomatik artış uygulanabilir. Otomatik artış için alan özelliklerinde “identity specification” özelliğini (Yes) olarak ayarlamak gerekir. 55..33..11..66.. IInnddeexx Access veri tabanında sıralı özelliği ile bir sütuna index eklenebiliyordu. Sıralı özelliğinde Evet (Yineleme Yok) Evet (Yineleme Var) seçenekleri vardı. Bunla SQL Server’de Index/Keys seçeneği ile yapılır. Tablo tasarımında farenin sağ tuşu ile açılan menüde Index/Keys seçilir. Burada Tabloda indexler listelenir. İstenirse bunların özellikleri değiştirilebilir veya yenisi oluşturulabilir. Yeni Index eklenirken önce sütun ismi sorulur ve yanında artan (Acsending) veya azalan (Descendig) seçilir. Daha sonra sağ tarafta özelliklerde Is Unique özelliği ile veri tekrarına izin verilip verilmeyeceği belirlenir. 55..44.. S SQ QLL S Seerrvveerr’’ddee İİlliişşkkiilleennddiirrm meelleerriinn Y Yaappııllm maassıı SQL Server’de ilişkilendirme Database Diagrams ile yapılır. Database Diagrams üzerinde farenin sağ tuşuna basılır. Açılan menüden New Database Diagram seçilir. Açılan pencerede hangi tablolar ilişkilendirilecekse o tablolar seçilerek Add düğmesine basılır. Close düğmesine basılarak bu pencere kapatılarak Diagram penceresine dönülür. Burada tablolar yerleştirilir ve ilişkilendirmeler yapılır. Bazı durumlardan bu işlem yapıldığında hata ile karşılaşılabilir. Bu durumda Araç çubuğunda “New Query” düğmesine basılır gelen metin alana aşağıdaki kod yazılır ALTER AUTHORIZATION ON DATABASE::veritabanı TO sa Bu kodda veri tabanı kısmına kendi veri tabanınızın adı yazılmalıdır. Öncelikle İki tablodaki ilişkilendirilecek alanlar tespit edilir. Yukarıdaki örnek resimde mk alanları her iki tabloda ilişkilendirilecek alanlardır. Tablonun birindeki mk alanı fare ile sürükle bırak yöntemiyle diğer tablodaki mk alanı üzerine bırakılır. Ekrana bir pencere gelir. Burada ilişkilendirme özellikleri vardır. Eğer buradaki bilgiler doğru ise Ok düğmesine basılır, sonra gelen pencerede yine Ok düğmesine basılır ve ilişkilendirme gerçekleştirilir. 55..55.. S SQ QLL S Seerrvveerr’’ddee S Soorrgguu H Haazzıırrllaannm maassıı 5 5..5 5..1 1.. S SQ QLL S Seerrvveerr S So orrg gu uT Taassaarrıım mıı SQL Server’de sorgular View olarak adlandırılır. View seçeneği üzerinde farenin sağ tuşuna basılır ve gelen menüden New View seçilir. Ekrana sorguda kullanılacak tabloların seçimi gelir. Tablolar seçilip Add düğmesine basılarak eklenir ve Close düğmesine basılarak bu pencere kapatılır ve sorgu tasarım penceresine dönülür. Bu pencere 4 bölümden oluşur. Üstteki bölümde tablolar ve ilişkilendirmeleri yer alır. İkinci bölümde sorguda yer alacak alanların listesi ve özellikleri yer alır. Üçüncü bölümde bu sorgunun SQL kodu yer alır. Dördüncü bölümde ise bu sorgunun sonucu görülmektedir. Sorgu oluştururken ikinci bölümde alan ve tablo isimleri seçilerek oluşturulabilir. İstenirse sorguda gösterilecek alanlar sırasıyla birinci bölümden işaretlenerek listeye eklenebilir. Üçüncü bölümde sorguda gösterilecek alanlar alt alta listelenmiştir. Sağa doğru olan sütunlar ise aşağıda açıklanmıştır. Column : Alan adı veya işlem Alias : Takma isim Table : O alanın hangi tablodan alınacağı Output : Görünüm görünmeyeceği Sort Type : Sıralama tipi seçimi (Ascendig, Descendig, Unsorted) Sort Order : Sıralamanın olup olmayacağı. 1 seçilir Filter : Süzme ölçütü Bir sorguda birden çok tablo yer alacaksa esas tablonun belirlenmesi gerekir. Tablolar ikili ikili değerlendirilir. İlişkilenen alanlardan birincil anahtar özelliğinde olmayan tablo esas tablo konumundadır. Diğer bir deyişle aslında benim listelemek istediğim veriler hangi tablodaysa o tablo esas tablodur. İlişkilendirmede de genelde birincil anahtar olmayan tablodur. Bundan sonra sorguya alanlar yerleştirilirken öncelikle esas tablodan alınır. Olmayan alanlar diğer tablolardan alınır. Eğer alanlar yanlış tablolardan alınırsa veri giriş amacıyla kullanılamaz. Hatalara sebep olur. 5 5..5 5..2 2.. S So orrg gu ud daa M Maatteem maattiikksseell İİşşlleem m vvee T Taakkm maa İİssiim m 5 5..5 5..3 3.. S So orrg gu ud daa S Sıırraallaam maa vvee S Sıırraallaam maa Ö Ön ncceelliiğ ğii vveerrm mee 5 5..5 5..4 4.. S So orrg gu ud daa S Sü üzzm mee vvee Ç Ço okkllu uÖ Öllççü ütt K Ku ullllaan nıım mıı 5 5..5 5..5 5.. S SQ QLL S Seerrvveerr’’d dee B Baazzıı FFo on nkkssiiyyo on nllaarr vvee İİşşlleem mlleerr Matematiksel (+,-,*,/) Matematiksel işlemlerde öncelikler () Parantezler (işlem önceliği sağlar) * / Çarpma Bölme + - Toplama çıkarma Hazır fonkisyon işlemleri (Left, Rigth, Len, Upper, Lower, SubString vb.) Lower Verilen metni çevirerek verir küçük harfe Lower(adı) adı alanındaki metni küçük harflere çevirerek verir Upper Verilen metni çevirerek verir büyük harfe Upper(adı) adı alanındaki metni büyük harflere çevirerek verir Len Verilen Len(adı) adı alanındaki metnin karakter sayısını metindeki karakter sayısını verir verir Left Verilen metnin solundan itibaren belirli sayıda karakter verir Left(adı;4) adı alanındaki karakterini verir. metnin soldan 4 Right Verilen metnin sağından itibaren belirli sayıda karakter verir Right(adı;4) adı alanındaki metnin sağından 4 karakterini verir SubString Verilen metnin içinden belirli bir parçayı alır SubString(adı;2;3) adı alanındaki metnin 2. karakterinden başlayarak 3 karakter verir CASE Koşula göre farklı işlemleri yapar CASE WHEN F > 45 THEN N'Geçebilir' ELSE N'Kesin Kaldı' END Eğer F değeri 45’ten büyükse Geçebilir aksi halde Kesin Kaldı yaz CASE DK WHEN 1 THEN N'1.Ders' WHEN 2 THEN N'2. Ders' WHEN 3 THEN N'3. Ders' ELSE N'Diğer dersler' END 5 5..5 5..6 6.. G Grru up p FFo on nkkssiiyyo on nllaarrıı Veri tabanlarında sorgularda belirli temel grup işlemleri için hazır fonksiyonlar mevcuttur. Bu fonksiyonlar tek bir alanda ve gruplama yapılmadan kullanılırsa tüm kayıtlar için sonucu verir. Sorgu sonucu oluşan görünümde tek bir değer bulunur. Sum (Topla): Sayısal bir alanda, grup içindeki kayıtlarda belirtilen sütunda yer alan değerlerin toplamını bulur. Avg (Ortalama): Sayısal bir alanda, grup içindeki kayıtlarda belirtilen sütunda yer alan değerlerin aritmetik ortalamasını bulur. Min (EnAz): Sayısal bir alanda, grup içindeki kayıtlarda belirtilen sütunda yer alan değerlerin en küçük olanını verir. Max (EnÇok): Sayısal bir alanda, grup içindeki kayıtlarda belirtilen sütunda yer alan değerlerin en büyük olanını verir. Count (Say): Grup içindeki kayıtlarda belirtilen sütunda yer alan değerlerin (dolu hücreler) adedini verir. Eğer o alanda boş hücreler var ise onları saymaz. StDev (Stsapma): Sayısal bir alanda, grup içindeki kayıtlarda belirtilen sütunda yer alan değerlerin standart sapmasını verir. Var (Değişken): Sayısal bir alanda, grup içindeki kayıtlarda belirtilen sütunda yer alan değerlerin Varyansını verir. Gruplama işlemlerinde örneğin sorguda Adres alanı gruplandırılırsa her şehirden birer adet görünecektir. Bunun yanına ilave olarak her şehirde kaç kişi olduğunu da göstermek gerekirse, sorgu tasarımında şu işlemler yapılmalıdır. Adres alanı sorguya eklenir. Bu alanın Group By özelliği Group By olarak ayarlanır (Bu sayede şehirler gruplandırılarak gösterilir). Her şehirde kaç kişi olduğunu göstermek için Count fonksiyonu kullanılabilir. Sayma işlemi için de herhangi bir alan sorguya eklenir. Örneğin Adı Soyadı alanı. Bu alanın Group By özelliği Count seçilir (Bu sayede her gruptaki Adı Soyadı alanındaki kayıtları sayar ve adedini grup için gösterir). Her şehirdeki maaş ortalamalarını da göstermek istersek, sorguya maas alanı da eklenir. Bu alanın Group By özeliği Avg olarak seçilir. Örnek sorular: GenelDers tablosunda, teorik ve Uygulama saatlerinin ayrı ayrı toplamlarını gösteriniz. Notlar tablosunda her ders için en düşük ve en yüksek final notlarını listeleyiniz. Hangi şehirden kaçar öğrenci vardır. 0314111091 numaralı öğrencinin girmiş olduğu derslerde en düşük final notu kaçtır. 0314111091 numaralı öğrencinin girmiş olduğu derslerde en yüksek vize notu kaçtır. Genelders Tablosunda her bir dersin haftalık ders saati sayısını listeleyiniz. Notlar tablosunda her bir öğrencinin başarı notlarının en düşüklerini listeleyiniz. 0314111056 numaralı öğrencinin Vize not ortalaması nedir 0314111113 numaralı öğrenci kaç ders alıyor, adedini gösteriniz Tüm öğrencilerde en yüksek vize notlarını gösteriniz. 55..66.. S SQ QLL S Seerrvveerr’’ddee S Sttoorreedd PPrroocceedduurree Programlama dilleri iki şekilde veri tabanlarına bağlanırlar. Birincisinde devamlı bağlı bağlantıdır. Bunda program çalıştığı sürece veri tabanına bağlantı vardır. Yapılan bir işlem hemen veri tabanına işlenir. Fakat bunun dezavantajı vardır. Çok kullanıcı bağlantı sağladığında veri tabanı aşırı yüklenir. Ve iyi bir performans gösteremez. Özellikle internet üzerinden veri tabanına bağlantı yapıldığında bu bağlantı türü kullanılması programı aşırı yavaşlatacaktır. İkinci bağlantı türünde ise veri tabanına sadece veri okuma ve yazma için bağlanılır ve işlem bitince bağlantı kesilir. Bu durumda veri tabanı kullanılmadığında serbest bırakılmış olur. Bu sayede veri tabanı performansı artar. Özellikle internet üzerindeki bağlantılarda büyük performans artışı sağlar. Günümüzde artık ikinci tip bağlantı daha çok tercih edilmektedir. İkinci tip veri tabanı bağlantısı kullanıldığında, örneğin veri tabanında bir tabloda yer alan veriler ekranda süzülerek listelenecek olsun. Süzme işlemi iki şekilde yapılabilir. Birincisinde veriler veri tabanından bilgisayarımıza çekilir ve sonra süzme işlemi yapılır. İkincisinde ise Veriler veri tabanında süzülür, süzme sonucu bilgisayarımıza çekilir. İlkinde özellikle çok yüksek sayıda kaydı olan bir tablodaki veriler alınıp süzülecekse işlem yavaşlamaktadır. Çünkü tüm kayıtlar bilgisayarımıza yüklenir ve sonra süzme işlemi yapılır. İkincisinde ise süzme işlemi veri tabanında yapılır ve süzme sonucunda elde edilen veriler bilgisayarımıza yüklenir. İlkinde çok yüksek miktarda veri aktarılmaktadır. İkincisinde ise sadece ihtiyacımız olan veriler aktarılmaktadır. İkinci yöntem çok daha hızlı çalışacak bir ortam hazırlamaktadır. Bu amaca yönelik olarak SQL Server’de stored procedure kullanılır. Stored procedur ile veri tabanı üzerindeki tüm işlemler yapılabilir. (Kayıt ekleme, kayıt silme, kayıt düzeltme, süzme, sıralama vb). Stored procedure’ler parametreli olarak ta tanımlanabilir. Örneğin süzme yapan bir stored procedure süzme ölçütünü parametre olarak alabilir. Stored Procedures üzerinde farenin sağ tuşuna basılır, açılan menüden new stored procedure seçilir. Sağ tarafta stored procedure oluşturucak kod hazır olarak gelir. Bu kodlar üzerinde düzeltmeler yapılarak çalıştırılır. Çalıştırıldığında procedure oluşturulmuş olur. new stored procedure işlemi ile aşağıdaki kod oluşturulur. -- ================================================ -- Template generated from Template Explorer using: -- Create Procedure (New Menu).SQL --- Use the Specify Values for Template Parameters -- command (Ctrl-Shift-M) to fill in the parameter -- values below. --- This block of comments will not be included in -- the definition of the procedure. -- ================================================ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: <Author,,Name> -- Create date: <Create Date,,> -- Description: <Description,,> -- ============================================= CREATE PROCEDURE <Procedure_Name, sysname, ProcedureName> -- Add the parameters for the stored procedure here <@Param1, sysname, @p1> <Datatype_For_Param1, , int> = <Default_Value_For_Param1, , 0>, <@Param2, sysname, @p2> <Datatype_For_Param2, , int> = <Default_Value_For_Param2, , 0> AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; -- Insert statements for procedure here SELECT <@Param1, sysname, @p1>, <@Param2, sysname, @p2> END GO Aşağıda bir süzme işlemi için stored procedüre düzenlenmiştir. SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- procedure adı belirlenir CREATE PROCEDURE hareketSuz -- parametreler tanımlanır @musteriNo int AS BEGIN SET NOCOUNT ON; -- süzme işlemini yapan ve parametre kullanan SQL kodu SELECT * FROM hareket WHERE mk = @musteriNo END GO Bu çalıştırılınca aşağıdaki şekilde görünür.