Plazma sayı 6, sayfa 40
Sayfanın metni

Sayfa 40

* Veritabanındaki veriler ne boyutlara ulaşabilecek? Eğer büyük boyutlara ulaşması söz konusu ise hız arttırımı için ne tür optimizasyonlar gerekecek?

Veritabanı üzerinde ne tür sorgulamalar yapılacak, hangi raporlar üretilecek?

* Kullanıcıların yetki mekanizması nasıl işleyecek?

* Veritabanı güvenliği projemizde ne kadar ön planda olacak? Ne tür tedbirler almamız gerekecek?

Bu maddeler daha da uzatılabilir. Ancak ilk örneğimizde bu maddelerin birçoğunu atlamak için uygulamamızın şifresiz ve tek bir kullanıcı ile kullanılacağını varsayıyoruz. Veritabanındaki bilgiler de telefon rehberinden ibaret olacak ve şu an için bir güvenlik kaygımız yok.

Şimdi ilk soruların yanıtlarını bulalım.

Ortaya çıkarmak istediğimiz uygulama ne tür bilgiler içerecek? Bu bir telefon rehberi uygulaması olacağı için isim, soyad, şirket, telefon kriterleri ilk akla gelen kriterler. Buna bir de numaranın iş mi özel mi olmasıyla ilgili bir tip kriteri ekleyebiliriz. Ayrıca veritabanlarının genel bir kuralı olarak bir kayıda kolayca erişmemizi sağlayacak bir numara (id) vermemiz gerekir. Bu numara her kayıt için özel olmalıdır ki kayıda erişmek istediğimizde "ismi Ahmet, soyadı Kara, telefonu +90 212 222 33 44 olan iş tipindeki kayıt" demekle uğraşmayalım ve kısaca "3 numaralı kayıt" diyebilelim. Bu durumda rehber tablomuzu şu şekilde modelleyebiliriz.

rehber -> id -> isim -> soyad -> şirket -> telefon -> tip

Buradaki "id" alanının otomatik olarak artması için bu alanı birincil anahtar (PRIMARY KEY) olarak tanımlayabiliriz. Bu durumda biz id alanına bir değer vermesek bile o her kayıt için otomatik olarak artacaktır. Örneğin boş bir tabloya ilk kayıt girildiğinde id 1 olacakken, ikinci kayıt için 2, üçüncü kayıt için 3 değerini alacaktır. Bu kayıtlar silinseler bile id alanı son kaldığı değerden 4, 5, 6, ... şeklinde artmaya devam edecektir.

Veritabanını Yaratmak

Artık nasıl bir veritabanı yaratmak istediğimizi biliyoruz. Öncelikle anlaşılması gereken bir nokta var. Tasarlamış olduğumuz tablo veritabanının kendisi değildir. Veritabanı bu tablo ve daha birçok tablo, görünüm (view), yordam (prosedür) v.b. elementleri içeren bir kavramdır. Kısacası bizim öncelikle bir veritabanı yaratmamız ve daha sonra bu veritabanının altına rehber tablomuzu oluşturmamız gerekiyor. Öncelikle veritabanımıza bir isim bulalım. Plazma dergisine ait bir uygulama olacağı için veritabanımızı "plazma_rehber" olarak isimlendirmeyi uygun görüyorum. Tablo ismi içinse "rehber" oldukça uygun. MySQL kullanacağımızı düşünürsek en ideal yöntemlerden biri "phpMyAdmin" isimli MySQL yönetimi için hazırlanmış açık kaynak kodlu projeyi kullanmak olacaktır. Alternatif olarak MySQL'in yeni versiyonlarında gelen gelişmiş MySQL araçlarını da kullanmamız iyi bir alternatif seçenektir. Ancak bu araçlarla yaşayabileceğiniz sorunları göz önüne alarak ve de PHP bilgilerimizi daha da kuvvetlendirmek adına veritabanımızı sadece PHP dilini kullanarak oluşturacağız.

Veritabanını ve tablomuzu oluştururken izlememiz gereken en düzgün adımlar şunlardır.

1. MySQL'e bağlan.

2. Yaratmak istediğimiz veritabanı daha önceden yaratılmışsa yok et.

3. Veritabanını yarat.

4. Bu veritabanını seç. Bu seçimden sonra çalıştıracağımız komutlar artık bu veritabanı üzerinde çalışacaktır.

5. İstediğimiz tabloyu yarat.

Bu 5 adım bize tertemiz bir veritabanı sunacaktır. Unutmayın ki bu işlemi ilk kurulumda ya da baştan kurulumda yapmanız gerekmektedir. Özellikle 2. adım mevcut veritabanları açısından çok tehlikelidir. Bu adımda tüm veritabanı içerisindeki tüm kayıtlar da silinmektedir. Alternatif olarak 2. ve 3. adımlar atlanabilir ve yalnızca yeniden yaratılmak istenilen tablolar silindikten sonra bu tablolar yaratılarak veritabanının geri kalan yapısı korunmuş olur.

Şimdi bu 5 adımı uygulayan PHP programını görelim.

veritabani_olustur.php:

<?php // Tanimlar $mysglHost "localhost"; $mysglKullanicilsmi - "root"; $mysalSifre « $veritabanilsmi - "plazma rehber"; $tablolsmi - "rehber";

// MySOL'e baglanti yap mysgl connect ($mysglHost, $mysglKullaniciIsmi, $mysglSifre) or die(mysal error()); echo "-> mysgl'e baglanti yapildi.<br>";

// Daha onceden yaratilmis ayni isimde // bir veritabani var ise oncekini sil

$sgl - "DROP DATABASE IF EXISTS ".$veritabanilsmi; mysgl guery($sgl) or die(mysal error()); echo "-> ".$veritabaniIsmi.

" veritabani yok edildi.<br>";

Klavyeyle gezinmek için ← ve → tuşları.