Önsöz

12 Temmuz 2007



ÖNSÖZ

Gerçeklikle karşılaştırıldığında, bilimde vardığımız düzey ilkeldir, çocuk oyucağıdır. Ama sahip olduğumuz en değerli şey de odur.

ALBERT EINSTEIN ( 1879-1955)

Daha önce matbaanın, radyonun ve televizyonun gündelik yaşamda yarattıkları devrimlerin bir benzerini bugün internet gerçekleştiriyor. İnternet henüz emekleme aşamasında, ama daha şimdiden dünyayı değiştiriyor. Bugün, ABD deki 1000 den fazla kasabanın ve kentin homepage i , internet de bir sitesi var. 200’den fazlasının şimdiden, birbirine bağlanmış bilgisayarlar kullanarak hayata geçirmeyi planladıkları yerel siyasi enformasyon yurttaş ağı ( civic networking) projeleri var. Sadece Hollanda da, altmış kasaba bilgisayar aracılığıyla iletişimi benimsemiş durumda ve bir çeşit yurttaş ağına sahip.

Database firmalari her geçen gün daha fazla veri depolamak, verileri hiçbir durumda kaybetmemek, verilere kolayca ve daha hızlı ulaşabilmek adina birbirleriyle yarışıyorler. Peki ama neden verilerle uğraşıyoruz ? Çünkü verileri topladiğimizda bir sonuca ulaşmak ve raporlar elde etmek çıkan sonucu görerek geleceği tahmin etmek istiyoruz. Verileri değerlendirme aşamasinda ise işin içine istatistiksel yöntemlerin girmesi kaçınılmaz oluyor.

Database firmalarının bugün hemen hepsinin hedefi ınternet uzerinde databaselerini kullanmak ve degerlendirmek. Database i internet üzerinden çalıştırımayan, uygulamalarını internet’e taşıyamayan firmalar , ürünlerini pazarlayamıyacaklarını biliyorlar.Bu nedenle hem internet hem de database kavramları gelecekte son derece önemli olacaktır.

Okul sırasında ekonomik nedenlerden dolayı piyasadaki bilgisayar firmalarinda çalışmak zorunda kaldık. Bu hem ekonomik anlamda bir rahatlama getirdi hem de okulda ogrendiklerimizi piyasada kullanma olanagı verdi. Çoğu öğrenci okuldaki bilgilerinin iş hayatinda hiç yararli olmadığı düşüncesindedir. Biz bu düşüncede değiliz. İstatistik bolumunde değerli hocamiz Prof.Dr Aziz Bener in bizlere bilgisayar programlama dersinde, iki donem boyunca gosterdiği C programlama dili sayesinde , programlama ve database ile ilgili temel kavramları çok daha hızlı ve çabuk kavradığımızı söyleyebiliriz. Piyasadaki nesneye yönelik programlama araçları ve dördüncü kuşak dilleri kolayca öğrenebiliyorduk çünkü hepsinin mantiği ayni idi ve C programlama dilini bilen bir öğrenci için diğer dillerde uygulama geliştirmek su içmek gibi bir şeydi.

Internet ve database uzerine bir bitirme odevi hazırlamak oldukça zordu ve bu odevin hazırlanması ile bildiklerimizin uzerine yeni bilgiler katmış olduk. Oyle bir odev hazırlamalıydık ki bizden sonra bölüme girecek öğrenciler bu ödevi okuyarak internet üzerinde bir veritabanı uygulaması geliştirebilmeliydi.Umarız bu konuda başarılı olabilmişizdir.Bu ödevin hazırlanması sırasında yardımlarını bizlerden esirgemeyen Progress ve Oracle firması yetkililerine ve değerli hocamiz Sayin Prof.Dr Aziz Bener e sonsuz teşekkürler.

Reşat Bayraktar.

Baran Ertaş.

Veritabanı

Veritabanı ve Akılcı Düşünce Üzerine

Veritabanı bir yazılımdır. Veritabanı bilginin hammaddesinin depolandığı yerdir. Bilgiyi oluşturan bileşenleri sınıflara ayırarak ama aralarındaki ilişkileri de dikkate alarak depolar, istendiği zaman birleştirerek sunar. Bilgi teknolojileri ile ilgili hemen her konunun bileşenlerden birini veritabanı oluşturmaktadır.Kişisel fax yazılımlarından, en gelişmiş fax sunucu sistemlerine kurumsal kaynak planlamasına (Enterprise Resources Planing-ERP) yazılımlarından, döküman arşiv sistemlerine, CAD/CAM uygulamalarından, OT/VT sistemlerine ve nihayet veri ambarı uygulamalarına kadar her sistemin içerisinde mutlaka bir veri tabanı bulunmaktadır. Hatta işletim sistemleri bile sistem bilgilerini özel yapıları olan veritabanlarında tutmaktadır.

Geçmişten günümüze yaklaşımlar ve yapısal özellikler değişime uğramış olsa bile, onlardan beklenen hizmet hep aynı kalmıştır ki o da “Hemen şimdi bilgi” olarak ifade edilebilir. Veritabanı dendiğinde yalnızca verilerin depolandığı bir kavram algılamak çok doğru bir yaklaşım olmayacaktır.

O verinin bilgiye dönüştürülerek diğer verilerle işlendiği koca bir fabrika gibidir. Bugün teknoloji üretenlerin pek anlamlı olmayan düşünce biçimlerinin bir sonucu olarak bazı benzer kavramlar istemeden de ayrı ayrı ele alınıyor olsa bile, (daha fazla ürün satmak adina uygulanan pazarlama stratejilerinin bir sonucu bu belki de !) gelecekte bugünün veri ambarı olarak adlandırılan yaklaşımları da aslına dönerek, veritabanı kavramı içerisindeki olması gereken yere oturacaktır.

Veritabanı kavramını tek başına ele almak kurumsal bilgi teknolojileri profesyonelleri için pek anlamlı olmayacaktır. Çünkü veritabanı mimarileri, algoritmaları, bellek ve kaynak kullanımı gibi konular kimi zaman oldukça ağdalı bir dilin kullanılmasını gerektirecektir. Bu dili anlayacak mühendislik eğitimi almış teknik elemanlar, çoğunlukla bu bilgiler sahiptirler (sahip olmaları gerekir) ve profesyonel yöneticiler, yanlarında çalıştırdıkları bu çalışanlardan dilerlerse bu bilgileri alabilirler. Yanlarında personel çalıştırmayan ve bu tip hizmetleri dış kaynaklı firmalardan alan kurumlar içinde bu hizmeti sağlayan danışmanlık şirketleri mevcuttur. Veritabanı kullanarak kurumlar hangi katma değeri sağlayabileceklerini çok iyi bilmelidirler. Eğer bir profesyonel kurum kullanacağı veritabanı ile teknik ayrıntıları detaylı olarak öğrenmek isterse, bu onun tercihidir. Ancak bu bir zorunluluk değildir.

Devlet kurumlarında ya da yerel yönetimlerin yazılım ve donanım ihalelerine katılan ve bilirkişi olduğunu söyleyen kişiler kendi aralarında veritabanı sistemlerinin üzerine tartışırken içlerinden biri “Benim veritabanım 10 yıllık bilgiyi saklar” derken diğeri “Ama benim veritabanım renkli ekranda çalışıyor” demişti. Dünyaca kabul görmüş veritabanı sistemleri arasında yaptıkları tartışmada sonucun ne olduğunu tahmin etmek zordu, çünkü hangi kriterlere göre karar verildiğini anlamak veritabanı kavramını anlamaktan daha da zordu.

Teknolojiyi takip edenler, eski dergileri karıştırdıklarında daha birkaç yıl öncesine kadar yere göğe sığmayan teknolojilerin bugün anlamını yitirdiğini kavramakta güçlük çekmeyeceklerdir. Birkaç yıl öncesine kadar sözü edilen Client/Server (İstemci/ Sunucu) mimarisi bugün gözden düşmüş durumda. Teknoloji firmalarının profesyonel kurumlara şöyle bir dayatması oluyor.Eğer yeni çıkan teknolojiyi satın almazsan dünyanın gerisinde kalırsın ve bunu satın alan diğer rakip kuruluşlar senin 5 yıl önünden gidecektir. Bu dayatma veya tehdit diyelim bir pazarlama ya da satış staretejisi olarak görülebilir ama bazı durumlarda doğru da olabilir. Bu yüzden kavram kargaşaları yerine yeni teknolojilerin kurumsal katma değerini firmaya uygulanabilirliğini ayırt etmek en doğru yaklaşım olacaktır.

Bugün kullanılan veri tabanları ve geliştirme araçları bazı çekirdek algoritmalarda farklılık gösterse bile, birbirlerine yakın ölçüm değerleri veriyorlar. Bir veritabanı bir test işleminde belli bir kritere göre en yüksek değeri verirken diğeri aynı test işleminde farklı kriterler kullanarak kendisinin en yüksek değeri verdiğini söylemekte. Önemli olan teknik personelin bu bilgileri yorumlayabilme becerisine sahip olmasıdır.Çalıştığı kurum hangi tür işlemleri daha fazla kullanıyor ? Bugün yoğun olarak kullanılan sistem gelecekte neler ihtiyaç duyacak ?

Son zamanlarda büyük mağaza ve alışveriş merkezlerinde local ya da internet müşteri bilgi formları dolduruluyor. Bazı müşterilere o mağazaların manyetik kartları veriliyor.Manyetik kartla mağazadan alışveriş yapan ya da internet üzerinden alışveriş yapan müşteri bilgisini ele geçirdikten sonra o müşterinin hangi saatte, hangi ürünü aldığını , promosyon satışlarından yararlanıp yararlanmadığı gibi bilgiler veri tabanına aktarılıyor. Aslında başlangıçta bir sayfalık form ve döküman arşiv sistemi ile başlayan bilgiler, bir anda veritabanı ve nihayet veri ambarı sistemine dönüşüyor. Eğer bu dönüşüm planlı değilse veritabanı ve sistem değişikliğinin yarattığı lisans ücreti, yazılım ve donanım maliyeti başlangıçta düşünülmeyen pahalı yatırımların yapılmasına neden olur.

Kurumsal firmaların kullandıkları veri tabanları bazen gömülü bazen de açık olmaktadır. Kuruluşun ihtiyaçlarına göre veritabanı üzerinde yeni yazılımlar geliştirmek mümkündür. Çok gelişmiş bir uygulama geliştirme aracınız olabilir ama veritabanı sisteminiz iyi değildir ya da veritabanı sisteminiz çok iyi olmasına rağmen uygulama geliştirme aracınız istediklerinizi karşılamayabilir.

1986 yılında ANSI ( American National Standart Institute) tarafından kabul edilen SQL(Structure Query Language -Yapısal Sorgulam Dili) ile tüm veri tabanları tek bir dil ile ortak sorgulanabilmesi ve belli standart sağlanması hedeflendi. İlerleyen yıllarda veritabanlari giderek daha fazla bilgiyi depolamaya başladı.Başlangıçta düşünülen veri yapılarından çok daha fazlası ile çalışıyordu ve herşey veri olarak saklanabiliyordu. Ses, resim, harita, video ,hesap tabloları gibi pek çok veri vardı ve bu verilerle uğraşmak için her veritabanının kendi özel yazılım geliştirme araçları ortaya çıktı. Bu araçlar ortaya çıkarken her ne kadar yalnızca kendi veritabanları ile değil, tüm sistemlerle uyumlu olduklarını savunsalarda, bazı istisnalar dışında her veritabanı en iyi sonucu kendi uygulama geliştirme aracında veriyordu. Sonuç olarak SQL tüm veri tabanları için ortak bir dil olmasına rağmen günümüzde yalnızca belli başlı basit sorgulamalar için kullanılmakta. Karmaşık uygulamalarda, veritabanı şirketleri kendi yazılım geliştirme araçlarını ve kendi programlama dillerini kullanmaktadır.

Veritabanlarını genel anlamda üç değişik grupta toplanabilir.Birincisi kişisel diyebileceğimiz veritabanı sitemleri. MS-Office Proffessional paketi içerisinde bulunan Access bunun dışında dBase, FoxPro, Paradox ve çok küçük de olsa Excel. Bu veritabanı sistemleri diğerleri ile karşılaştırıldığına dezavantajları olduğu tartışma götürmez. Ancak hataları nedeniyle değil kapasitelerinin yetersizliği nedeniyle böyle. Örneğin xbase tabanlı bu sistemlerde “dbspace” adı verilen özel bir disk bölümü yoktur ve veritabanı dosyaları geleneksel dosya yapılarıyla aynı güvenlik yapısına sahiptir. İkinci grup İlişkisel veritabanları (Relational Database) adiyla bilinen uygulamalar ve bu uygulamalar bugün ve gelecek stratejilei karşılamaktadır.İlişkisel veritabanları bilgiyi saklama, işleme, yedekleme, raporlama ve geri getirme konularında çözümler getirmektedir. Kurumsal firmaların tercihi bu sistemlerdir.Bugün bilinen popüler ilişkisel veritabanları arasında Oracle, DB2, Sysbase, Informix, Progress, Ms SQL Server bulunmakta.Veritabanı ile ilgili üçüncü ve son grup kurumların çok büyük ve boyutlu veri tabanı analizlerine dayalı gereksinimlerini karşılamak amacıyla kurduğu Veriambarı (Datawarehouse) türü teknolojilerdir. Karmaşık veriler ve bu veriler arasındaki analize dayalı teknolojiye OLAP ( On line Analytical Processing) işlemleri veriambarında kullanılmaktadır.İlişkisel veri tabanı kuruluşlarının neredeyse tamamının veri ambarı çözümü bulunmaktadır. Geleneksel anlamdaki veri ambarı projeleri yalnızca veritabanı sistemlerinin değil, donanım ve işletim sistemini de içine almaktadır. Ancak günümüze gelindiğinde tüm eğilimler, veri ambarı kavramının ortam bağımsız bir şekilde günden güne Internet e dayalı teknolojilere üzerinde çalıştığını gösteriyor.

Internet üzerinden veriye ulaşabilen, bu verileri saklayabilen , gerektiğinde istediği raporları bu veriler üzerinden alabilen kuruluşlar güçlü veri tabanı sistemlerine sahip olduklarında kurumsal yapılanmaları ve gelişmeleri çok daha hızlı olacaktır. Günümüzde güç bilgi ile , bilgi de veri ile sağlanmaktadır.Bilgi kimin elindeyse gücün de sahibinin o olması kaçınılmaz görünüyor.

VERİTABANI HAKKINDA GENEL BİLGİLER

Bilgisayar programları, seçilen bir bilgisayar dilinde, bir konu ile ilgili verilerin girildiği ve değerlendirildiği komutlar topluluğudur. Programlamayı öğrenirken bir programcının ilgilenmesi gerekli olan konuları aşağıdaki gibi sıralayabiliriz.

Girilecek verilerin yapılarını tanımlayabilmek(Veritabanı)

Kullanıcı ile irtibatı sağlayan ekranların görüntüsünü (Ekran Dizaynı) ve çıktıların şeklini (Rapor Dizaynı) tasarlayabilmek

Bu iki şık arasındaki bağlantıları gerektiren program parçalarını yazabilmek

Yeni windows tabanli nesneye yönelik programa dilleri ile yukarıda belirtilen 3 şıkkı gerçekleştirmek çok basittir.

Veritabanı tasarımı ve tanımı için, Data Dictionary hizmet programı kulllanılır.

Ekran dizaynları ve bağlantılar, SMARTOBJECTS (Programlanabilir Akilli Nesneler) tanımlama ve onları programlama işlemini gerçekleştiren APPBUILDER (Uygulama Geliştiricisi) hizmet programı ile sağlanır Çıktılar için ise REPORT BUILDER (Çıktı Formları Düzenleyicisi) kullanılır..

Yukarida belirtilen Data Dictionary, Smart Objects , AppBuilder, ReportBuilder programlari her database de aynı isimde olmayabilir.Veritabaninin ozelliklerine gore farkli isimler alabilirler , işleyişleri ve database e ulaşma mantıkları aynıdır.

Netice olarak biz; veritabanı, basit nesne ve SMARTOBJECTS kavramlarını iyi öğrenirsek buna da nesneye dayali proglama dillerin komutlarını eklersek, veritabani uzerinde programlamayı öğrenmiş oluruz.

Veritabanı

Bugün kullanılmamakla beraber, kartoteks sistemini hatırlamayan yoktur. Örneğin müşterilerimizle ilgili bilgileri, aşağıda gösterildiği gibi, kartonlar üzerine kaydederdik. Sonra da bu kartonları çekmecelerde saklardık. Siparişler ve stoklar için aynı yöntem kullanılırdı. Bunu yaşayanlar, karşılaştıkları problemleri çok iyi hatırlarlar (Müşteri bulmak, değişiklikleri yansıtmak,müşteri-stok-sipariş bağlantısını kurmak ve bunu güncelleştirmek vs.)

Müşteri Adı

Borcu

Telefonu

Ali Uyanık

50000000

345 34 34

Bilgisayarda da veritabanı zihniyetini kullanan diller bu yöntemi, tabiyatıyla problemleri ortadan kaldırarak, devam ettirmişlerdir. Fakat bilgisayarın gözü olmadığı için bir kartoteksi görerek değil, ismi ile tanıyabilir, müşteri adı için ayrılan yerin adını ve niteliğini önceden bilmesi gerekir, müşteri-stok-sipariş bağlantılarını kurabilmesi için bu bağlantıları ona önceden tanımlamak gerekir vs.. Kısaca; programcının veritabanı dediğimiz müşteri-sipariş-stok bilgilerinin nereye ve nasıl depolanacağını yani “kalıbını” tanımlayarak bu veriler arasındaki bağlantıları da bilgisayara bildirmesi gerekir. Bu tanımların nasıl yapıldığını az sonra göreceğiz.

Veritabanının bilgisardaki avantajları

Veritabanının bilgisayarda sağladığı avantajları sıralayalım.

Ortaklaşa kullanım : Çekmecelerdeki bir kartotekse, aynı anda iki kişinin yerlerinden kalkmadan bakabilmesi adeta olanaksızdır. Ayrıca, yoğun çalışan kişilerden bazıları iş yerlerindeki dosyaları yüklenerek evlerine taşırlar. Bilgisayar ortamında, birden fazla kişi farklı terminallerden aynı veriye erişebildiği gibi, evde çalışması gereken kişinin de dosyaları eve taşımasına gerek yoktur.

Yerden tasarruf: Kağıt, dosya, klasör gibi çok yer tutan veri depolama ortamlarını büyük ölçüde ortadan kaldırarak yerden tasarruf edilir.

Kolay güncelleştirmek: Örneğin gerçekleşen bir siparişin bilgilerini anında ve otomatik olarak stok ve müşteriye yansıtmak mümkündür.

Kolay erişim: Bir veriyi bulmak, sıralamak, istenen bilgileri ve toplamlarını yazıcıdan almak kartoteks örneği ile kıyaslanmayacak kadar kolaydır.

Emniyet: Girilen verilerin geçerliliğini kontrol etmek, bazı kişilere erişimde kısıtlamalar koymak mümkündür.

Analiz imkanı: Özellikle üretimde çok büyük bir avantajdır. Fakat maalesef genelde, bilgisayardan sadece “takip” ten (ne gitti, ne geldi) yararlanılmaktadır.

Relational Database ya da İlişkili(Bağlantılı) veritabanı

Müşterimizin yaptığı bir ödeme, doğal olarak müşteriyi etkiler. Kartoteks devrinde, bu ödemeyi müşterinin borcundan elle düşüyorduk. Bilgisayarda ise bunun otomatik olarak yapılması gerekir. Bunun için, müşteri bilgilerinin müşteri hareket bilgileri ile bağlantılı olarak tanımlanması gerekir. Diğer bir deyimle, veritabanımızı iyi tanımlarsak, programlamayı çok basit bir şekilde halledebiliriz.

Örneğin, tasarımı tamamlanmış bir veritabanında, aşağıdaki kısa program:

Tüm müşterileri listeler(Müşteri numarası, Unvanı)

Kullanıcının gireceği birkaç harfle başlayan müşteriyi bulur, gösterir

Bu müşteri ile ilgili tüm sipariş bilgisini gösterir(Sipariş ana bilgileri:Sipariş numarası, sipariş tarihi, gerçekleşen tarih vs.)

Bu siparişle ilgili tüm detay bilgilerini gösterir (Sipariş detay bilgileri.:Stok numarası, fiyatı, indirim oranı, miktarı, tutarı vs.)

İlişkili(bağlantılı) veritabanını tasarlamak

Bir veritabanında: müşteri, sipariş, stok vs. ile ilgili tüm bilgilerin bulunduğunu söyledik. Bu kadar çok veriyi içeren bir bütünün içerisinden istenen verileri bulabilmek ve bu verilerin birbirleri ile bağlantılarını kurmak için veritabanını oluştururken, bazı ek tanımların yapılması gerektiği açıktır.

Örneğin; sadece muşteri bilgilerine ulaşabilmemiz gerekir, müşterilerden sadece istenen bir müşteriye hızlı bir şekilde erişebilmemiz gerekir, bu müşterinin siparişlerine erişebilmemiz için bir müşteriye göre müşteri-sipariş bilgilerini ilişkilendirmemiz gerekir.

Bu sebeplerden dolayı, ilişkili bir veritabanı aşağıdaki tanımlardan oluşur:

Veri Tablosu (Table)

Sütun (Column) veya alan (Field)

Satır (Row) veya kayıt (Record)

Anahtar (Key)

İndeksler(Indexes)

Mus-adi

Borcu

Telefonu

Ali Uyanık

50000000

345 34 34

1.Satır, Kayıt (Row,Record)

2.Satır

3.Satır

4.Satır

1.Sütun,Alan (Column,Field)

2.sütun

3.Sütun

Veri Tablosu

Yukarıda gördüğümüz gibi çok basit düzeyde bir müşteri veri tablosu tasarlanmıştır. Bunun gibi sipariş, stok ve uygulamada gerekli olan diğer tablolar aynı çatı altında tasarlanarak bu uygulamanın veritabanını oluşturabiliriz.

Anahtar (Key)

Ana anahtar (Primary Key) , iç anahtar

Bağlantı anahtarı (Foreign Key), dış anahtar

Ana anahtar, bir veri tablosunda bir kaydı tamamen, ve sadece o kaydı, temsil edebilecek sütun veya sütunlardır. Belirlenen bir kaydı ve sadece onu temsil edebilmesi için tek olmalıdır. Örneğin, isme göre bir müşteriye erişmeyi düşünürsek, aynı isimli birden fazla müşteri olabileceği için, erişimde ve bağlantılarda karışıklıklar doğabilir(İstemediğimiz bir “AHMET”in telefonu veya siparişleri ile kaşı karşıya kalabiliriz).Bundan dolayı müşteri kayıtlarını temsil etmek için her bir müşteriye ayrı bir numara vermek uygundur.

Ana anahtarın özelliklerini aşağıdaki gibi sıralayabiliriz.

Tek olma özelliği: İki ayrı müşteri, boş bilgi dahil, aynı bilgiyi içeriyorsa, verdiğimiz anahtarın hangi müşteriyi temsil ettiğini bilemeyiz.

Değişmemesi gerekir: Bir müşteriye bir numara verdikten sonra o numarayı değiştirirsek, müşteriyi temsil eden iki ayrı numara elde ederiz.

Kısa olmalıdır: Çok yer almamalı, ayrıca ne kadar kısa olursa ona erişim daha hızlı olur.

Bu bilgilerin ışığı altında yukarıda tanımlanan musteri veri tablosu aşağıdaki şekli alır.

MUSNO

MUS-ADI

BORCU

TELEFONU

Ali Uyanık

50000000

345 34 34

Aynı şekilde stok veri tablosunda, stok numarası ana anahtar olarak tasarlanabilir.

Bağlantı anahtarı(dış anahtar), adından da anlaşılacağı gibi, veritabanındaki diğer veri tablolarıyla irtibat kurmaya yarayan bir anahtardır. Tabloları birleştirmek için de kullanılır.Bu anahtar, irtibat kurulan veri tablolarının bir tanesinin de ana anahtarıdır.

Anahtar kavramının önemini daha iyi anlamak amacıyla; Stok, Sip-Detay, Siparis ve Musteri veri tablolarının tanımlandığını varsayalım ve bu tablolar arasında bazı ilişkiler kuralım. İlişki kurarken, amaç çok önemlidir. Amaç, verilen bir maldan hangi müşteriye satış yapıldığını bulmak olsun. Bunun için, Stokà musteri ilişkisini ve dolayısıyla ara ilişkiler de dahil olmak üzere, Stok à Sip-Detay à Siparis à Musteri ilişkisini gerektiği gibi kurmamız lazımdır.

Önemli Not: İlişkiler sadece anahtarlarla kurulmayabilir. Başka metodlar da vardır.

Tablo Adı

Ana anahtar

Bağlantı Tablosu

Bağlantı anahtarı

Musteri

MusNo

Siparis

MusNo(Siparis’te)

Siparis

SipNo

Sip-Detay

SipNo(Sip-detay’da)

Sip-Detay

SatNo

Stok

StokNo(Sip-Detay’da)

Stok

StokNo

Ana anahtarlar, bulundukları veri tablosu haricinde, bu tablo ile ilişkili tabloda da dış anahtar(bağlantı anahtarı) olarak tanımlanmalıdır.

Burada görüldüğü gibi, müşteri (Musteri) tablosunda MusNo ana anahtar olmasına karşın, bağlantı kurmak istediğimiz sipariş (Siparis ) tablosunda bağlantı anahtarı olarak tekrar tanımlanmıştır. Aynı şekilde; SipNo hem sipariş(ana anahtar) hem de Sipariş detay(dış anahtar), StokNo da hem Sipariş detay (dış anahtar) hem de Stok tablolarında (ana anahtar) olarak tekrar tanımlanmışlardır.

Basit bir örnek, bunu daha iyi açıklayacaktır. Kayak botu alan tüm müşterilerimizi görelim..

Bunun için:

Stok tablosundan kayak botunun stok numarasını buluruz(I1).

Stok ile sipariş detay tabloları ilişkili olduğu için, I1 ile ilgili sipariş numaraları (SipNo) sipariş detay tablosundan bulunur. (01 ve 04)

Sipariş detay ile sipariş, SipNo ile ilişkili olduğundan, hangi müşterilerin bu stokları aldığını bulmak için (müşteri numaraları önemli) sipariş tablosundan 01 ve 04’e denk gelen müşteri numaralarını buluruz (C1 ve C3).

Müşteri tablosundan C1 ve C3’ün karşılığındaki müşteri isimlerini buluruz (Kemal Öz ve Oya Şafak).

Netice olarak tabloları ilişkilendirmek için, ilişki kurulan tablolarda ortak bir alan (sütun) tanımlanacak ve bu sütun; bir tabloda ana anahtar olarak, diğerinde ise dış anahtar olarak tanımlanacaktır. Başka bir deyimle, ana anahtar olarak tanımlanan sütun (alan) diğer tabloda da tanımlanacak ve bu sütun, bu tabloda dış anahtar görevini üstlenecektir.

Indeks (index)

Bir kitabın sonundaki indeksi hepimiz biliriz. Aranan kelimeyi belirledikten sonra, indeksten bakarak hangi sayfada olduğunu bularak, o kelime ile ilgili tüm bilgileri kitaptan alabiliriz. Bir veritabanındaki indeks de buna benzer. Örneğin müşteri arama ve sıralamalarında, müşteri adını içeren sütunu indeks olarak tanımlarsak, arama çok çabuk gerçekleşir.

Bir sütuna göre indeks oluşturabileceğimiz gibi, birden fazla sütunu birleştirerek birleşik indeks adını verdiğimiz indeksler de oluşturabiliriz. Ana anahtarı içeren sütünla indeks oluşturmak, çok doğaldır(Yukarıdaki örnekte, MUSNO sütunu indeks oluşturmak için iyi bir örnek teşkil edebilir).

Her tabloda bir indeks olmalıdır. Birinci indeks her zaman tablonun ana indeksi olarak otomatik olarak tanımlanır. Örneğin, sipariş veri tablosunda SipNo ana indeks , Sip-Tarih ise tarihe göre bir indeks şeklinde tanımlanabilir.

İndeks oluşturmanın faydalarını aşağıdaki şekilde sıralayabiliriz.

Hızlı kayıt arama: Veri tablosu sıralı ise istenen bilgiye erişim daha hızlı olur.Örneğin sayfası belli olmayan bir kitapta bir bilgiyi aramak zordur.Fakat, sayfası ve aranan bilginin hangi sayfada olduğu belli olan bir kitapta arama doğal olarak kolaydır.

Kayıtların sıralanması: Tüm kayıtlar seçilen indekse göre otomatik olarak sıralanır. Örneğin, bir müşteri veri tablosunu alfabetik sırada listelemek için, müşteri ismini içeren alanın indeks olarak seçilmesi yeterlidir.

İlişkili erişim: Veritabanı içerisindeki veri tabloları birbirleri ile ilişkili oldukları takdirde, bir veri tablosundan itibaren diğer veri tablolarındaki ilgili kayıtlara erişim kolay ve hızlıdır.

Çoklu sütun: Birleştirilmiş bir indeks kullanılırsa, gruplandırma kolaylaşır. Örneğin Türkiye’deki tüm bilgisayar firmalarını içeren bir veritabanında İSTANBUL’un tüm semtlerindeki firmaların listesini alfabetik sırada almak için, indeksi, şehir + semt’e göre yapmamız yeterlidir. (Şehirler ve onun içerisinde semtler otomatik olarak alfabetik sıraya sokulurlar).

Tabloları birleştirmek: İki farklı tablodan bir çıktı alınacaksa, ortak sütunu indeks olarak tanımlamak faydalıdır.

Tabloları ilişkilendirmek: Bir tablodaki bir sütun değeri ile diğer bir tablodaki bir kayda (satıra) erişilebiliyorsa, bu iki tablo ilişkilidir. İkinci tablodaki aramnın hızlı olması için, aranan değere göre indeksli olması arzulanan bir durumdur.

NOT: İki tablo arasındaki ilişkiyi kuran sütunların aynı ismi taşıması gerekmez.

İndeks oluşturmanın bazı zararları da vardır.

Her bir indeks için, diskte bir yer ayırımı yapılır. İndeksin değeri ve bu değeri içeren kayıt numarası ROWID, ağaç yapısını andıran biçimde diskte depolanır. İndeks bölümünden, aranan indekse denk gelen kayıt numarası bulunduktan sonra, bu kayıt numarasını içeren kayıt ana dosyadan bulunur.

Yeni bir kayıt eklendiği veya bir kayıt silindiği zaman, ilişkisel veritabanı indeks bölümünü otomatik olarak yeniden düzenlediği için bir zaman kaybına neden olur.

Ne zaman indeks kullanmalıyız ? sorusu aklımıza gelebilir.

Sıkça silme veya ilave yapılan küçük tablolarda indeks kullanmamalıyız; sıralama yapmalıyız.

Veri aramada, aranan veri oranı tüm verilere oranla büyükse, indeks kullanma yerine sıradan arama yaptırmalıyız(Örneğin, arama neticesinde 20 000 kayıttan 19 000 kayıt bulunacaksa sıradan arama, 20 000 kayıttan 100-200 kayıt bulunacaksa indeks kullanımı tercih edilmelidir).

NOT: Tüm ilşkisel veritabanı sistemleri işletim sistemine göre 1024, 2048, 4096, 8192 byte’lık bloklara ayrılmıştır. Veri erişiminde, sadece bulunan kayıdı içeren blok diğer kullanıcılara kapalıdır(Genelde, diğer dillerde erişim şekline bağlı olarak tüm indeks dosyası kilitlenerek, o anda diğer kullanıcılara kapalıdır).

Hatalı tasarım örnekleri:

MusNo

İsim

Sehir

SipNo

101

Kemal Öz

İSTANBUL

M31, M98, M129

102

Ali Kara

İSTANBUL.

M56

103

Oya Şafak

ANKARA.

M37, M40

104

Filiz Sarı

BURSA.

M41

Doğrusu: Müşteri ana tablosu ve bu müşteri ile ilgili sipariş hareketlerini ayrı ayrı tablolar şeklinde düzenlemektir.

Müşteri tablosu

MusNo

İsim

Sehir

101

Kemal Öz

İSTANBUL

102

Ali Kara

İSTANBUL.

103

Oya Şafak

ANKARA.

104

Filiz Sarı

BURSA.

Sipariş tablosu

SipNo(Ana anahtar)

MusNo (Dış, bağlantı anahtarı)

M31

101

M98

101

M129

101

M56

102

M37

103

M140

103

M41

104

Not: Aynı mantıkla, tüm bilgileri bir dosyada toplamak yerine, güncel değişmeyen bilgileri içeren bir ana bilgi dosyası ve güncel değişen hareket dosyası oluşturmak ve ikisini bağlayan bir anahtar kullanmak en doğal tasarım şeklidir.

Veri tasarımı için pratikte izlenen yol

Kağıt üzerinde veya akıldan:

Uygulamada gerekli olan veriler ortaya dökülür

Bu verilerin veri tablosu şeklinde, paylaşımları tasarlanır (Tablo adedi ortaya dökülür)

Veri tabloları arasındaki bağlantılar tasarlanır

Veri tablolarının kalıbı tasarlanır

Her bir tablo için ana anahtar ve gerekiyorsa, her bir alan için geçerlilik kuralları tasarlanır

Bu aşamadan sonra, veri yapısının daha ayrıntılı tasarımına geçilir.

Ortak kullanılan veriler hangileridir?

İndeks, hangi sütuna göre seçilecek?

Optimizasyon (En verimli durum) nasıl sağlanır?

Performans için, yapı değişikliği gerekir mi? (Örneğin, KDV her zaman miktar ve KDV oranından hesaplanabilir. Normalde, tabloda KDV sütunu açmaya gerek yoktur.Fakat KDV miktarının sıkça istendiği bir şirkette, her defasında, KDV’yi yeniden hesaplatmak performansı düşüreceği için KDV sütunu tabloya eklemek daha mantıklıdır)

Bu bilgilerin işiği altında veritabanını oluşturmadan önce; hangi veriler girilecek, veriler bağlantılı olarak nasıl işlenecek ve hangi raporlar alınacak sorularına yanıtlar verebileceğimiz bir veritabanı kalıbının hazırlanması gerektiğini aklımızdan asla çıkarmamalıyız. Veritabanlari sistemlere install edildiğinde içlerinde ilişkisel veritabanının özelliklerini sağlayan küçük bir prototip bulunmaktadir. Örnek standart ilişkisel veritabani genellikle müşteri, sipariş ve sipariş detay gibi table lar içerir.. Bu veritabanında maçlananlardan bazılarını şu şekilde sıralayabiliriz.

Müşteri, sipariş ve stok bilgi girişlerinin sağlanması.

Kayıt eklemek, silmek ve değiştirmek

Müşteri adreslerini şehir koduna göre sıratmak

Bakiyesi belirli bir miktarı geçen müşterileri alfabetik sıraya göre listelemek

Bir bölgedeki müşterilerin belirli bir tarihe kadar, tüm senelik satiş ve borçlarının listelerini alabilmek

Verilen bir stokla ilgili tüm siparişleri görebilmek

Stoklarımızın son durumlarını görebilmek. Gerekiyorsa, sipariş vermek.

Satılan malların satış tutarlarını gözleyebilmek

Müşterilerimizle ilgili borç alacak takibini yapabilmek

Müşterilerimizle ilgili sipariş bilgilerini gözleyebilmek

Veritabanının özelliğine göre diğer seçenekler

HTML (HyperText Markup Language)

HTML Nedir?

HTML (HyperText Markup Language / Hareketli-Metin İşaretleme Dili) basitçe, browserlarla görebileceğimiz, internet dökümanları oluşturmaya yarayan bir çeşit dildir. Örneğin okuduğunuz bu sayfa HTML dili kullanılarak hazırlandı. Siz de browser’ınızı (Internet Explorer, Netscape Navigator,..) kullanarak bu sayfayı ekranınızda görüntülüyorsunuz. Tanımda geçen “internet dökümanı” ifadesinin yanısıra HTML ile oluşturduğunuz belgeleri harddiskinize kaydedebilir ve internet bağlantınız olmasa bile bu belgeleri görüntüleyebilirsiniz.

HTML, programlama dilleri (pascal, basic,..) gibi bir programlama mantığı taşımadığından öğrenilmesi gayet kolay bir dildir. Dilden ziyade kabaca metinleri ya da verileri biçimlendirmek, düzenlemek için kullandığımız komutlar dizisi bile diyebiliriz HTML için.

HTML’de Temel Unsurlar

HTML nispeten kolay bir dildir dedik. Bu dilde binary veya hexadecimal kodlar yok. Herşey metin tabanlı ve bir HTML dökümanı oluşturmak için ihtiyacınız olan şey bir editör. Hatta sizde herhangi bir HTML editörü bulunmuyorsa bu işi Windows’un Notepad’i ile dahi halledebilirsiniz. Piyasada iki tip editör bulunuyor. Birisi metin tabanlı, kod yazmayı gerektiren fakat bunun yanısıra rutin bazı işlemleri kolaylaştıran editörler (HotDog, HomeSite..) diğeri WYSIWYG (What You See Is What You Get / Ne görürsen onu alırsın) tarzı denen kısaca görsel, kodlamayla uğraştırmayı gerektirmeyen editörler (FrontPage, Dreamweaver, NetObjects Fusion,..). Benim yeni başlayanlara tavsiyem Windows’un Notepad’i. Bu işlerin nasıl yapıldığını öğrendikçe ilerde siz de görsel editörlere geçebilirsiniz. Çünkü bir yerde istenmedik sonuçlar çıkabilir ve kodlara müdahele etmeniz gerekebilir. Üstelik görsel editörler bazen istenmeyen kodlar ekliyorlar, bu da döküman boyutunun büyümesi demek.

Burada şunu da belirtmek gerekiyor; browserlar arasındaki yorum farklarından dolayı sayfanız bir browser’da iyi görünürken bir başka browser’da hiç istemediğiniz bir şekilde görüntülenebilir. Hele yeni bazı teknikleri (css, dhtml gibi) sadece MS Internet Explorer 4 ve üstü desteklerken Netscape henüz bu teknikleri tam olarak desteklemiyor. Yine de piyasayı neredeyse yarı yarıya paylaşan bu iki browser’ın birbirlerine üstün olduğu yönleri var. Sonuçta, ne kadar fiyakalı bir sayfa da yapsanız elde ettiğiniz başarı sayfanızı ziyaret eden kişinin kullandığı browser’a mahkum. Hatta ziyaretçiniz browser’ına verdiği bir talimatla “yalnız şu fontu kullan”, “grafikleri görüntüleme” şeklinde bir ayar yapmışsa emekleriniz boşa gitti demektir. Yine de bu kadar karamsar olmayalım.

İlk sayfam

İşte ilk HTML sayfamızı yapıyoruz.

Öncelikle çalışmalarınızı saklamak için kullanacağınız boş bir klasör oluşturup uygun bir ad verin, mesela html_ders olsun. Daha sonra bu ad bize lazım olacağından kolaylık olması için siz de yeni klasöre bu adı verebilirsiniz.

Şimdi de bu klasörü açıp yeni bir metin belgesi oluşturun (sağ fare/Yeni/Metin belgesi).

Dosyayı çift tıklayarak açın ve şunları yazın:

  

Sayfama Hoşgeldiniz

Şimdi dosyayı kaydedin (Dosya/Farklı Kaydet…). Dosya adı kısmına şöyle yazın: “sayfa1.htm” (tırnaklar dahil) ve Tamam’a basın.

Notepad’i kapatın, metin dosyasını silin ve oluşan yeni dosyayı açın. Dosya varsayılan browser’ınız (Internet Explorer, Netscape Navigator gibi) tarafından açılacaktır. Şöyle bir görüntü elde edeceksiniz:

Tebrikler ilk HTML sayfanızı yaptınız.

Şimdi de bu belgeyi nasıl oluşturduğumuzu birlikte inceleyelim. Birşey dikkatinizi çekti mi? İngilizce bir takım kelimeler var ve bu kelimeleri küçük < ve büyük > sembolleri arasına yazdık. Bu ifadelere tag (etiket) deniyor. Etiketler etki etmesi istenilen metnin önüne ve arkasına yazılıyor. Önce etiketi yazıyoruz, sonra metni yazıyoruz daha sonra aynı etiketi önüne bir bölü işaretiyle tekrar yazıyoruz. Bu son yaptığımız etiketi sonlandırıyor. Bir kaç istisna dışında tüm etiketler belge içerisinde sonlandırılmak zorunda.

Burada kullandığımız etiketler ve anlamları şöyle:

Tarayıcıya HTML dosyasının başladığını ve bittiğini belirtiyor. Diğer tüm kodlar bu iki etiket arasına yazılır.

Bir HTML belgesi iki bölüme ayrılıyor: head(baş) ve body(gövde). … etiketleri arasına sayfa hakkında bilgiler yazıyoruz. meta ve title gibi etiketler burada yeralıyor. Meta etiketlerine ileride değineceğiz. … arası ise sayfamızın gövde bölümü. Ekranda gösterilecek kısımlar bu tagler arasında yeralıyor.

Title sayfanın başlığını belirtiyor. Burada yazılanlar browser’ın üst tarafında browser adıyla beraber gösteriliyor.

Hazırladığımız sayfada dikkat ederseniz sadece temel etiketleri kullandık. Yani metin biçimlendirmeye yarayan hiçbir etiket kullanmadık. Bu yüzden …. arasına yazdığımız Sayfama Hoşgeldiniz yazısı browser’ın varsayılan metin ayarlarıyla gösteriliyor. İşin ilginç tarafı hiçbir kod yazmadan sadece Sayfama Hoşgeldiniz yazıp kaydetsek ve browser’da böyle görüntülesek de aynı neticeyi elde edecektik.

Metin Biçimleme

Bu bölümde öğreneceğimiz etiketler:

• Başlık etiketleri :


• Paragraf etiketi :

• Ortalama :

• Diğer etiketler : ,,

HTML’de metin stillerini üç şekilde belirleyebiliriz:

Düzenlemek istediğimiz metnin hemen önüne koyacağımız bir etiketle biçimleme stili. Buna in-line (satır içi) biçimlendirme denir.

Sayfanın head (baş) kısmına koyulan stillere body (gövde) bölümden atıf yapılarak metin biçimleme. (Embedded-Gömülü biçimlendirme)

HTML dosyasının dışında başka bir stil dosyası oluşturarak stil için bu dosyayı kullanma. Buna Cascading Style Sheets-Yığılmalı Stil Kağıtları deniyor. Kısaca CSS. Bu teknik bize örneğin yüzlerce sayfanın stilini tek bir stil dosyası ile belirleme gibi geniş imkanlar veriyor.

Birinci metotta her metin için ayrı ayrı stil belirtirken ikinci ve üçüncü metodlarda stil bir defa belirleniyor ve bu stilleri istediğimiz metne uygulayabiliyoruz. Burada önemli olan bir diğer husus da ilk metodu tüm browserlar sorunsuz yorumlayabiliyor fakat 2. ve 3. metodu Internet Explorer ve Netscape’in son sürümleri (yorum farklılıkları ile beraber) destekliyorlar.

Burada konumuz birinci metoda göre biçimlendirmeyi öğrenmek. Başlık etiketlerinden başlıyoruz. Notepad’i açıyor ve şu kodları yazıyoruz;

     

     

Başlık 1

     

Başlık 2

     

Başlık 3

     

Başlık 4

     

Başlık 5

     

Başlık 6

Sayfanın işleyişine baktığımızda, önce her zaman yapmamız gerektiği gibi , ,

   

Sayfama Hoşgeldiniz

   

HTML etiketleri ile,

   Yazıları

   koyu

   italik

   ve

   altı çizili

   olarak yazabiliyorum

Etiketleri kullanma mantığını anladınız herhalde. Biçimlendirmek istediğimiz metnin başına ilgili etiketi yazıyoruz ve metnin sonunda da ilgili etiketi sonlandırıyoruz. Etiket biz sonlandırmadığımız müddetçe etkisini göstermeye devam ediyor. Eğer hala tereddütleriniz varsa örnekler üzerindeki kodların yerlerini değiştirerek kaydedin ve diğer taraftan browser’ınızın reload/yenile tuşuna basarak değişiklikleri gözlemleyin.

Yeni öğrendiğimiz kodlara bir göz atalım:

….

Aradaki metinleri sayfaya göre ortalar. (center)

….

Aradaki metni koyu (bold) yazar.

….

Aradaki metni eğik (italic) yazar.

….

Aradaki metni altı çizili (underline) olarak yazar.


….

Başlık (heading) etiketi. h1 en büyük, h6 en küçük.

….

Aradaki metin paragraf özelliği kazanır. Sonlandırıldığında, takib eden metin bir satır boşluk bırakılarak ve satır başına yazılır.

Burada bilmeyenler için küçük bir bilgi; bir html dökümanını açtığımızda ve ekran üzerinde farenin sağ tuşuna tıklayıp kaynağı görüntüle/view source’u seçtiğimizde Internet Explorer için Notepad, Netscape için kendi Source Viewer’ı açılacak ve bize o sayfanın kodunu gösterecektir.

Fontlar

Font etiketinin kullanımı;

face= yazıtipinin adı (arial, tahoma, verdana, …)

size= yazının büyüklüğü (1-7 arası)

color= yazının rengi (red, green gibi renklerin ingilizce karşılığı yada RGB renk değeri)

Bunlara font etiketinin parametreleri diyoruz.

etiketinin yanısıra öğreneceğimiz bir diğer etiket
etiketi. Önce bu etiketin kullanımını göreceğiz.
etiketi bir bakıma enter tuşunun görevini görüyor. Bunu biraz açıklayalım; HTML’de metinleri yazarken kullandığımız editörde bir alt satıra geçmek için Enter tuşunu kullanırız. Fakat HTML dilinde bunun hiçbir anlamı yoktur, tüm kodları ve metinleri tek satırda dahi yazsanız browser açısından farketmeyecektir. Bu yüzden metinleri bölmek, yani ikinci satıra atmak için
etiketini kullanıyoruz. İstisnai etiketlerden birisi bu,
etiketi sonlandırılmıyor.

Buna bir örnek verelim;

   

   pazartesi

   salı

   çarşamba

   
ocak
şubat
mart
nisan

Yukarıdaki örneğimizde “pazartesi, salı ve çarşamba”yı yazarken Enter tuşu ile bir alt satıra geçmemize rağmen browser bunu gözönüne almayarak tüm metni bir satırda yazdı. Fakat ikinci sefer ay adlarını tek bir satıra yazdığımız halde bu kez browser aradaki
etiketine bakarak bir sonraki metni satır başına aldı. Buradan da anlaşıldığı üzere Enter tuşu etkisini
etiketiyle veriyoruz. Bu etiketin bir özelliği de sonlandırılmaması.

Şimdi font etiketinin kullanımını bir örnekle inceleyelim. Eğer kullanmak istediğiniz font bilgisayarınızda yüklü değilse font etiketi ile biçimlemek istediğiniz metin browser’ın varsayılan fontu ile gösterilecektir. Bu yüzden önce sisteminizde yüklü olan fontları inceleyin (Başlat/Ayarlar/Denetim Masası/Yazıtipleri). Buradan yazıtiplerini açarak inceleyebilir ve beğendiklerinizi kullanabilirsiniz. Eğer benim örnekte kullandığım yazıtipleri (tahoma, comic sans ms, verdana, arial) sisteminizde yüklü değilse bunun yerine sizde olan istediğiniz fontu kullanabilirsiniz.

İlkbahar


Yaz


Sonbahar


Kış


Her zamankinden farklı olarak ve ilk defa sayfamızda renk kullandık. Örnekte de gördüğünüz gibi bu işi renk kodlarıyla yaptık. Aslında bunun bir yolu daha var o da renk kodu yerine rengin ingilizce adını yazmak (color=”red” gibi).

Listeler

HTML bize üç tip liste hazırlama imkanı veriyor. Bunlar;

Sıralı Listeler (ordered list)

Sırasız Listeler (unordered list)

Tanımlama Listeleri (definition list)

Sıralı listeler rakam veya harf yada her ikisini içiçe kullanarak liste oluşturmamızı, sırasız listeler rakam/harf yerine madde imleri koyarak liste oluşturmamızı sağlar. Tanımlama listeleri ise bir listeden çok kalabalık metinlerde okumayı kolaylaştırmaya yardımcı olabilecek bir araçtır.

Sıralı Listeler

Liste içine alınacak metinler

etiketleri arasına alınarak yazılır. Bu etiketler listenin başladığını ve bittiğini belirtir. Listenin maddelerinin başına ise

  • (list item) etiketini getiriyoruz. Bu etikette tıpkı
    etiketi gibi sonlandırılmıyor.
      etiketine parametreler ekleyebiliyoruz. Bunlarla listemizin rakamla mı harfle mi başlayacağını (type) yada hangi rakam/harfle başlayacağını (start) belirtebiliyoruz. Compact parametresi ise listenin mümkün olan minimum satır aralığına sahip olmasını sağlıyor.

      Bundan sonraki örneklerimizde sayfa kodunun yalnız body (gövde) bölümünü vereceğiz. Kodun geri kalan kısımlarını kendi sayfanızda tam olarak yazmayı unutmayın.


         

      1. Kimya

           

              

        1. İnorganik

              

        2. Analitik

             

         

      2. Fizik

           

              

        1. Dinamik

              

        2. Statik

             

         

      3. Matematik

           

              

        1. Sayılar

              

        2. Diğer

                 

                     

          1. Türev

                     

          2. İntegral

                   

             

      Kimya

      Organik

      İnorganik

      Analitik

      Fizik

      Dinamik

      Statik

      Matematik

      Sayılar

      Diğer

      Türev

      İntegral

      Listeleri buradaki örnekte olduğu gibi iç içe hazırlamak ta mümkün. Dikkat edeceğimiz nokta, işe

        etiketi ile başlayıp liste maddelerinin her birisinin başına
      1. etiketini getirmek ve listelemeyi bitirmek istediğimiz yerde

      etiketini yazmak. Liste içinde yeni bir liste oluşturmak istediğimizde listelenecek maddeden sonra tekrar

        etiketini yazıyoruz ve bahsedilen kuralları aynen uyguluyoruz. Type parametresinde kullanabileceğimiz değerler şunlar olabilir; sayılar,harfler (küçük/büyük) ve romen rakamları (i,ii,iii gibi)

        Sırasız Listeler

        Bu tip listede de mantık aynı. Fark, listeleme yaparken maddelerin başına harf, rakam gibi unsurlar yerine küçük yuvarlaklar,kareler kullanabilmemiz.

          etiketi yerine
            etiketini kullanıyoruz, liste maddeleri için kullandığımız
          • etiketi burada da geçerli.
              için kullanılabilecek parametreler ise şöyle; type için disc (içi dolu daire), circle (içi boş daire), square (içi dolu kare). Compact parametresi sırasız listelerde de kullanılabiliyor.


                 

              • Kimya

                   

                      

                • İnorganik

                      

                • Analitik

                     

                 

              • Fizik

                   

                      

                • Dinamik

                      

                • Statik

                     

                 

              • Matematik

                   

                      

                • Sayılar

                      

                • Diğer

                         

                             

                  • Türev

                             

                  • İntegral

                           

                     

              Kimya

              Organik

              İnorganik

              Analitik

              Fizik

              Dinamik

              Statik

              Matematik

              Sayılar

              Diğer

              Türev

              İntegral

              Tanımlama Listeler

              Bu listelemede kullanılan etiketler şöyle;

              ,

              ,
              Listenin maddelerini belirtmek için kullandığımız
            1. etiketinin yerini burada
              ve
              etiketleri alıyor. Aynı şekilde

              veya

              etiketleri arasına aldığımız listeyi bu sefer

              arasına yazıyoruz. Yine parametre olarak

              etiketi içinde compact ifadesini kullanabiliriz.

              Renkler

              Metin renklendirmeyi yüzeysel olarak fontlar konusunda öğrendik. Şimdi daha ayıntılı olarak ve bu işin mantığına inerek yeniden ele alacağız. Aynı zamanda sayfamıza artalan rengi vermeyi öğreneceğiz.

              Bu bölümde öğreneceğimiz konular:

              Renk Kodları

              Fontlar konusunda, metnin rengini belirlerken etiketini kullanmıştık ve color komutunun karşısına rengin ingilizce karşılığını yazabiliriz demiştik. Fakat bunun daha karmaşık olan bir başka yolu vardı; o da 16′lık sayı düzeninde renk kodu girmek. Önce sayı düzenleri nedir nasıl olur ona bakalım.

              Günlük hayatımızda kullandığımız sayı sistemine 10′luk sayı sistemi deniyor, tüm sayıları 0-9 arası toplam 10 rakamdan oluşan sembollerle ifade ediyoruz. 10′luk sayı sisteminin yanısıra diğer sayı sistemleri de vardır. Bunlardan bilgisayar alanında kullanılan iki tanesi ikili (binary) ve onaltılı (hexadecimal) sayı sistemleridir.

              İkili sayı sistemi nasıl olur? Bildiğiniz gibi günlük hayatta kullandığımız 10′lu sayı sisteminde 0-9 arası toplam 10 rakam vardır. Aynı şekilde ikili sayı sisteminde de toplam 2 rakam var (bunlar 0 ve 1) ve tüm sayılar bu iki rakamı kullanarak ifade edilebilir, nasıl mı? İşte burada işin içine matematik giriyor. Kısa ve öz olarak belirtmek gerekirse 10′luk düzendeki bir sayıyı ikilik düzene çevirmek için o sayı devamlı olarak 2′ye bölünür ve kalanlar soldan sağa doğru yanyana yazılır.

              Gelelim asıl konumuz olan 16′lık sayı sistemine. Bu sayı sisteminde de toplam 16 rakam var bunlar;

              0 1 2 3 4 5 6 7 8 9 A B C D E F

              [10′un karşılığı A … 15′in karşılığı F’dir.]

              Etikette kullandığımız color=#xxxxxx ifadesi ise RGB (red-green-blue,kırmızı-yeşil-mavi) renklerinin karışım oranlarını belirtir. Bu renklerden herbirinin alacağı değer 00 ile FF aralığında olabilir (FF maksimum, 00 minimum karışımı verir).

              Buna göre; #000000 siyah, #FF0000 kırmızı, #00FF00 yeşil, #0000FF mavi, #FFFFFF beyaz’dır. Diğer renkleri sayıları değiştirerek kendiniz deneyebilirsiniz.

              Artalanı Renklendirmek

              Bu renklerle yalnızca metinleri değil sayfamızın artalananını da renklendirebiliriz.

              Bunun için etiketini kullanıyoruz. Daha doğrusu sayfamızın gövdesini belirtmek için yazdığımız etiketini, şeklinde değiştiriyoruz.

               

                

                Günler

                   

                      

              1. Pazartesi

                      

              2. Salı

                      

              3. Çarşamba

                      

              4. Perşembe

                      

              5. Cuma

                   

                   

                      

              6. Cumartesi

                      

              7. Pazar

                   

                  

               

              Resimler

              Renkleri de öğrendikten sonra geldik en heyecanlı konuların bir diğerine, evet bu konuda sayfamıza ve artalana nasıl resim ekleyebileceğimizi öğreneceğiz. Bu konu aslında tablolar ve bağlantılarla da alakalı, bu yüzden burada genel olarak işleyeceğiz. Resim seçiminde, seçtiğimiz resmin gif yada jpg formatında olması zorunluluğu dışında herhangi bir kısıtlama yok. (telif hakları kanunu dışında tabi)

              Resim ekleme işi gayet kolay. Yapmamız gereken browser’a sayfaya koyacağı resmin nerede olduğunu göstermekten ibaret. Her ne kadar şart olmasa da resmin pixel cinsinden en ve boy uzunluğunu belirtmeniz sizin hayrınıza olacaktır. Kullanacağımız etiket şu şekilde olacak;

              Burada x resmin enini y ise boyunu belirtiyor. Bu bilgileri, resmi herhangi bir grafik editörüyle açarak öğrenebilirsiniz.

              Dikkat Edilecek Hususlar

              Örneğin bu sevimli kediyi sayfamıza ekleyelim, peki işte size bir soru: bu resmin nerede olduğunu browser’a nasıl izah ederiz?

              Diyelim ki resmimizin adı kedi.gif eni 65, boyu da 91 piksel, eğer bu resim html sayfamızla aynı dizinde duruyorsa sorun yok, kod aynen şu şekilde olmalı:

              Bağlantılar

              Geldik HTML’de en önemli unsurlardan birisi olan bağlantılara. Bağlantılar sayesinde hazırladığımız birçok sayfayı birbirleriyle ilişkili hale getirebiliriz. Bir tıklama bizi istediğimiz yere götürecektir. HTML’de metinlere ve resimlere bağlantı kazandırmak mümkündür. Örnek için bu sayfayı incelemeniz yeterli. Sol tarafta konuları veren bir menü bölümü var. Siz bu bağlantılardan birisini tıkladığınızda ilgili konu açılıyor, sayfa sonlarındaki ileri-geri düğmeleriyle de bağlantılar oluşturulmuş, bunlar da tıklandığında ilgili sayfa açılıyor. Bu yolla başka neler yapılabilir? Ses, grafik dosyaları, sıkıştırılmış dosyalar, internet adresleri,.. bunların hepsine bağlantı kazandırmak mümkün. Hatta yapacağımız bağlantı sayfa içinde, yani dahili bir bağlantı da olabilir.

              Şimdi yapmak istediğimiz bağlantıya göre kullanacağımız komutları inceleyim:

              Bu komutla oluşturduğumuz bağlantı ile yeni bir sayfa açabilir, kullanıcıyı farklı bir internet adresine yönlendirebilir, kullanıcının kendisine sunduğunuz bir dosyaya ulaşmasını sağlayabilirsiniz. Yani bu tanıma göre bildiğimiz bağlantıları oluşturmak mümkün.

              Şimdi aşağıdaki örnekleri birlikte inceleyelim, fakat öncelikle bir kuralı belirtelim; etiketi arasına yazdığımız yazılar bağlantı özelliğine sahip olacaktır, yazının bağlantı olduğu eğer aksi belirtilmemişse browser tarafından altı çizili ve mavi renkli gösterilir.

              buraya tıklandığında meyve resmi açılacak

              Birinci örnekte “buraya tıklandığında meyve resmi açılacak” yazısına bağlantı özelliği kazandırdığımızdan browser tarafından altı çizili mavi yazıyla gösterilecek ve kullanıcı fare imlecini yazı üzerine getirdiğinde imleç el şekline dönüşecektir. Kullanıcı bu linke tıkladığında browser o anda açık bulunan sayfa ile aynı dizinde bulunan meyve.gif resmini açacaktır. Tabii ki dosya farklı bir dizinde ise kullanıcı hata mesajıyla karşılaşır.

              midi dosyalarını çekmek için tıklayın

              İkinci örnekte aynı şekilde “sıkıştırılmış midi dosyalarını çekmek için tıklayın” yazısına bağlantı özelliği kazandırdık. Fakat dosya tipinden kaynaklanan bir fark var; ilk örnekte meyve.gif’e tıklandığında browser resmi açacaktır fakat bu örnekte browser kullanıcıya midi.zip dosyasını açmak mı yoksa diske kaydetmek mi istediğini soran bir pencere açar. Bunun sebebi browser htm, txt, jpg, gif,.. uzantılı dosyaları görüntüleyebilirken zip, doc, xls, mp3 gibi dosyaları görüntüleyememesidir.

              2.sayfaya gitmek için tıklayın

              Yine üçüncü örneğimizde oluşturduğumuz linke tıklandığında aynı dizinde bulunan sayfa isimli başka bir html dökümanı açılacaktır.

              kedi resmi

              işte çok güzel bir karanfil

              otomobil resimleri

              Bu 3 örnekte altdizinlere/üstdizinlere verilen bağlantıya misaller görüyorsunuz, resimler konusunda gördüğümüz kurallar burada da geçerli.

              tıklayın sitemi ziyaret edin

              Yedinci örnekte bir internet adresi verdik.

              tıklayın dosyaları indirin

              Bu ise bir ftp adresine verilen link örneği.

              mail atın

              Buradaki linke tıklandığında kullanıcının ilgili mail programı açılacak ve mail’in send to (kime) kısmına verdiğimiz mail adresi otomatik olarak yazılacaktır.

              Resimlere bağlantı özelliği kazandırmak

              Metinlere bağlantı vermeyi öğrendik, peki sayfadaki resimlere nasıl link vereceğiz? Bunun için resmi yerleştirmek için kullandığımız:

              etiketini etiketinin arasına alıyoruz.

              İşte örnek;

              resim.gif tıklanacak resmi, sayfa1.htm resme tıklandığında açılacak sayfayı gösteriyor. Border komutu ise resimde bağlantı özelliği olduğunu belirten çerçeveyi kontrol ediyor, 0 (sıfır) değeri bu çerçeveyi tamamen yok eder. Bu komutu değişik sayılarla deneyebilirsiniz.

              Target parametresi

              Son olarak bağlantının açılacağı pencereyi belirtmek için kullanılan target parametresini öğrenelim. Kullanımı :

              target=”_blank”

              Bağlantı yeni bir pencerede açılır.

              target=”_self”

              Bağlantı aynı pencere içerisinde açılır.

              target=”_top”

              Bağlantı aynı pencere içerisinde en üstten itibaren açılır.

              Target=”_parent”

              Açılan bağlantı, o anda açık sayfayı oluşturmuş bir ana sayfa varsa onun yerine konur.

              ASP (Active Server Pages)

              ASP’nin Unsurları

              ASP tasarımcısı olarak, biz gerçekte ASP’nin Nesneleri ile birşeyler yaparız; başka bir deyişle ASP kodlarımız bu nesnelere yöneliktir, onları kullanma ve onlardan bir sonuç alma veya onlara bir sonuç aktarma amacına yöneliktir. ASP’nin Nesneleri altı grupta toplanır:

              Application/Uygulama: Bir ASP sitesi, gerçekte bir Uygulama Programı olarak görülür. Bu, HTML/CGI geleneğine aşina tasarımcı için yeni bir kavram. ASP’yi icad edenler; bir ziyaretçi bir ASP sayfasından girerek, bir sitede surfing’e başladığında, onu bir programı işleten bilgisayar kullanıcısı olarak görüyorlar. Böylece, sitemiz, her ziyaretçinin karşısına çıktığında “bir program çalışmış” gibi sayılıyor. Bu yaklaşımın Web tasarımcısı olarak bize kazandırdığı imkanları ele alacağız.

              Session/Oturum: Bir ziyaretçi sitemize geldiğinde, hangi sayfamızı talep ederse etsin, bu bağlantı ASP açısından bir oturum sayılır. Her oturumun belirli bir süre devam eden özellikleri, değişkenleri ve değerleri vardır. Site tasarımında oturum özelliklerinden geniş ölçüde yararlanacağız.

              Request/Talep: Browser’dan Server’a ulaşan bütün bilgiler, Request (Talep) nesnesinin ögeleridir. Bu nesneyi kullanarak, istemciden gelen her türlü HTTP bilgisini kullanırız.

              Response/Karşılık: Server’dan ziyaretçinin bilgisayarına gönderdiğimiz bütün bilgiler, çerezler (cookie) ve başlıklar (Header) Response (Karşılık) nesnesinin ögeleridir. Bu nesneyi kullanarak ziyaretçiye göndermek istediklerimizi göndeririz.

              Server/Sunucu: ASP, Web Server programını bir nesne olarak ele alır ve onun bize sağladığı araçları ve imkanları kullanmamızı sağlar.

              ObjectContext/Nesne Bağlamı: Microsoft’un Transaction Server (MTS) programının sunduğu hizmetlere erişmemizi sağlar. MTS, ASP sayfaları içinden, uygulama programlarından yararlanmamızı sağlar. ASP uzmanlığınızı ileri düzeylere ulaştırdığınız zaman MTS ve ObjectContext nesnesinden yararlanabilirsiniz.

              ASP’nin Dili

              ASP, bir teknolojidir. Kendi başına bir yazım kuralı yoktur. ASP tekniğini kullanabilmek için, ASP sayfasının talep edilmesi halinde ziyaretçiye gönderilmeden önce ASP.DLL’ye teslim edilmesi bu teknolojinin kullanılabilmesi için hemen hemen tek şarttır. Bunu, dosya uzantısını .asp yaparak sağlarız.

              ASP.DLL ise, dünyada mevcut bütün Script dilleri ile verilecek komutları kabul edebilir. Sadece ASP.DLL’e sayfadaki kodların hangi dilde olduğunu söylemeniz gerekir. Bunu, ASP sayfasının birinci satırında yaparız. Örneğin ASP’ye VBScript dilini kullanmasını belirtmek için bu satırı şöyle yazarız:

              <% @Language=VBScript %>

              ASP sayfalarında genellikle VBScript, JavaScript ve JScript kullanılır. Ancak örneğin Perl dilinden türetilen PerlScript, PHP’den türetilen PHPScript de giderek ilgi çeken ASP dilleri arasına giriyor.

              Bir ASP sayfası içinde farklı Script dilleri kullanılabilir.

              VbScript (Visual Basic Script)

              VBScript’e Giriş

              Visual Basic dilini biliyorsanız, VBScript biliyorsunuz sayılır. VBScript, güçlü bir dildir; ancak Netscape firmasının hiç bir zaman Browser’ında istemci tarafında çalıştırılabilecek diller arasında kabul etmemesi sebebiyle VBScript, Web’in istemci tarafında kendisinden bekleneni yapamadı. MS’un Browser’ı Internet Explorer ise VBScript ile yazacağınız İstemci-Tarafı kodları okuyabilir ve icra edebilir.

              Ne var ki ASP kodlarımız hiç bir zaman ziyaretçinin Browser’ının yüzünü göremeyeceği ve sadece Server’da çalışacağı için Server’da VBScript desteği bulunduğu sürece, ASP sayfalarınızı VBScript ile yazabilirsiniz. Bir Server’da ASP desteği varsa, VBScript desteği de var demektir.

              VBScript’in hemen hemen bütün komutlarını ve yöntemlerini ASP’de kullanabilirsiniz. Ancak bunun bir kaç kısıtlaması vardır. VB veya VBScript’e ASP dışında aşina iseniz, mesaj kutusu (MsgBox) ve girdi kutusu (InputBox) aracılığı ile programlarınıza kullanıcının bilgi girmesini sağlayabileceğinizi biliyorsunuz demektir. Bu iki komutu ASP içindeki VBScript kodunda kullanamayız. Ayrıca ASP teknolojisi zaten VBScript’in bütün komutlarını ve deyimlerini kullanmanızı da gerekli kılmayacaktır. Göreceksiniz ki, mükemmel ASP sayfaları oluşturmak için bile bir avuç VBScript komutu kullanacağız.

              ASP sayfalarımızdaki HTML kodları ile VBScript (veya diğer Script dillerinin) kodlarını birbirinden ayırmamız gerekir. Bu ASP.DLL’ye, HTML’in nerede bittiğini, Script diliyle yazılmış kodun nerede başladığını gösterebilmemiz için gerekli. Bunu sağlamak için Script diliyle yazılmış herşeyi “<%" ve "%> ” işaretleri arasına alırız. ASP.DLL bu işaretleri görünce, içindekileri “yazmak” yerine “yapar.” Bir ASP sayfanızda HTML’in klasik “<" ve ">” işaretleri arasındaki unsurlar, ASP.DLL tarafından ziyaretçiye gönderilecek olan sayfaya aynen aktarılır; ancak “<%" ve "%> ” arasındaki herşey, başta belirttiğiniz LANGUAGE etiketinde yazılı Script dilinin yorumlayıcısına verilir; yorumlatılarak, gereği yerine getirilir.

              “<%" ve "%>” işaretlerine “sınırlayıcı” denir. Sınırlayıcının içinde bir veya daha çok satır kod bulunabilir. Sınırlayıcılar ve içindeki Script, HTML etiketlerinin içinde veya dışında yer alabilir. Sınırlayıcının içindeki kodlarımızı açıklamak için koyacağımız yorum satırlarının başına tek tırnak işareti (’) koyarız. İşte bu kuralları uyguladığımız bir ASP sayfası örneği:

              <% @LANGUAGE=VBscript %>

              <%

              ‘ Yazı tipi boyutunu tutacağımız bir değişken

              tanımlayalım

              Dim fontBoyut

              %>

              <%

              ‘ yazı tipi boyutunu 1′den 7′ye kadar değiştirelim

              For fontBoyut = 1 To 7

              %>

              >

              Hoşgeldiniz!

              <% Next %>


              Bugün <% =WeekdayName(Weekday(Date)) %>, <% = Date %>.

              Şu anda Server’da saat: <% = Time %>.

              Burada sınırlayıcı arasında tek veya çok satırlı VBScript kodları ile başında tek tırnak olan icra edilmeyen, yorum satırlarını görüyorsunuz. HTML etiketinin içine gömülmüş VBScript kodu ise HTML’in etiketinde yer alıyor: >. Burada karşılaştığımız “<%=" ifadesi, ASP'ye, "Bu değişkenin değerini bul ve tam buraya yaz!" dememizi sağlıyor. Bu ifade daha sonra yakından ele alacağımız Response.Write metodunun kısaltılmış halidir. HTML etiketinin içine yazdığımız VBScript bölümünün kendi sınırlayıcı işaretlerinin yine de kullanıldığına dikkat edin.

              JavaScript

              Javascript Nedir?

              Başlangıçta bazı konulara açıklık getirelim. Java ile JavaScript oldukça fazla derecede karıştırılmakta. Java Sun firması tarafından Pascal ve Delphi dillerinden esinlenerek yazılmış bir programlama dilidir. Sonuçta tarayıcıdan bağımsız bir program elde edersiniz. Yani bir exe veya com uzantılı dosya vardır elinizde. Fakat JavaScript bu tür bir programlama dili değildir. Yorumlanması için bir tarayıcıya ihtiyaç duyar. Bu yüzden script dilidir. Html dosyasını içine gömülüdür. Sonuçta elinizde exe veya com uzantılı bir dosya yoktur. Javascript , Netscape firması tarafından C dilinden esinlenilerek yazılmıştır. Yazılma amacı Html’in sahip olmadığı bazı özelliklerin web sayfalarında kullanılmak istenmesidir. Yani ziyaretçi ile etkileşim gibi önemli unsurlar Html’de yok veya oldukça az kapasitede diyebiliriz. Netscape firması bu konuya ağırlık vererek JavaScript script dilini internet ortamına kazandırmıştır.

              Gelelim Netscape ve Internet Explorer tarayıcılarının JavaScript kodundaki farklı anlayışa. Bu gerçekten doğrudur. Netscape firması JavaScript dilini hazırladığında Microsoft firması bu dilin özelliklerini veya yazılım tarzını tam anlamıyla Internet Explorer’a eklemedi. Kendi yazım kurallarını belirledi. Bu yüzden biz JavaScript kodu yazarken bu iki tarayıcı özelliklerini de göz önünde bulundurmalıyız. Fakat bu her kodda karşımı

              Kategori: Biyoloji