VERI TABANI MANTIGI

VERI TABANI MANTIGI

Fevzi BOZKURT
Felsefe


Veritabani bir kuruma ait verileri bir yapi çerçevesinde  saklandigi yazilim olarak nitelendirebilir.Veritabani kelimesinin Ingilizce karsiligi “DATABASE”.Bir okul,ögretmen ve ögrencilere ait kimlik bilgilerin veritabaninda saklayabilir bununla ilgili birçok örnek verilebilir.
Veritabanin Avantajlari :Bilgileri kagit ve kalem gibi  araçlar ile saklanabilseydi  suan  veritabani diye bir sey olmazdi.Veritabanlari,bize son derece güvenilir ortamlar sunmaktadir veritabanlari ile saklanan bilgileri kaybetme riskini SQL Server ve Oracle gibi büyük yedekleme çözümleri ile bu sorunlar büyük ölçüde azaltir. Veritabanindaki
Bilgileri sadece yetkili kisilerin girmesini saglamak mümkündür.
Popüler Veritabanlari
Acces:Microsoft’un Office paketi içerisinde sundugu veritabani yazilimidir.Dosyalarini son derece tasinabilir olmasi ve Office lisansi disinda hiçbir lisans ücreti olmamasi,Access’i küçük ve orta çapli projelerde oldukça cazip hale getiriyor. Buna karsilik,büyük ölçekli kurumsal projelerde ihtiyaç duyulacak özelliklerin büyük bir kismina sahip degildi;Bu yüzden sirketler tarafindan pek tercih edilmemektedir.
Mysql: Linux’un sahip oldugu ve Access’e rakip oldugu kabul edilen Mysql gittikçe gelisen özellikleriyle birlikte,Access’den daha güçlü oldugu söylemek mümkündür.
Kaynak kodunun açik olmasi ve kisisel kullanim için herhangi bir lisans ya da ücrete tabii olmamasi veritabani kullanicilari için cazip hale gelmektedir.
SQL Server: 2000 yilinda piyasaya sürülen versiyonunda hertürlü özellige yer verilmistir.SQL Server piyasada oldukça yaygin olarak kullanilmaktadir.Express Edition, Enterprise Edition ,Personal Edition gibi farkli lisanslara sahip oldugu için herkes ve her keseye uygun SQL Server bulmak mümkündür.
Oracle: “En büyükler tarafindan tercih edilen en büyük veritabani” diye tanimlayabiliriz .Oracle; Linux,Windows,Unix gibi farkli platformlarda çalisabilmektedir.yalniz Oracle kullanabilmek için konusunda uzman ve ne yaptigini bilen bir veritabani yöneticisiyle çalismak gerekmektedir.kullanimi SQL Server katar kolay degildir bunun ciddi teknik tecrübe gerekmektedir.
Bir Veritabani Yapisi:
TABLO:Tablolar,ihtiyaçlar dogrultusunda kullanicilar veya programcilar tarafindan kullanabilir.
Simdide ürünlere ait  örnek bir tablo görelim
                     Ad
                 Görsel
Bos CD
Cd jpg
A4 Kagidi
Kagit jpg
Bos DVD
Cd jpg
HP Laptop
Hp jpg
Toshiba Laptop
Toshiba jpg
Programcilik Mantigi
Program.jpg
Nokia 6260
6260.jpg
Siemens SX1
Sx1.jpg
Veritabani mantigi çerçevesinde ;tablo en önemli fonksiyonu,verileri birbirinden ayirmasidir.Örnegimizde ürün tablosuna bakarak ihtiyacim olan bilgilere ulasabiliriz.yani “Hangi Cep Telefonlari Satiyoruz” sorusunun cevabini alabiliriz.
ALAN (Sütün):Tablolarin en önemli fonksiyonun nesne tiplerini birbirinden ayirmak ve standarizide etmek oldugunu açiklamistik.alanlarin en önemli fonksiyonu ise,belli bir tablodaki bilgileri birbirinden ayirmak ve standardize etmektedir.
Allanlarin ikinci faydasi ise, belli bir sütuna girilecek verilerin standardizasyonunu saglamasidir.Benzer bir mantikla,alanlarin bize sagladigi diger fayda;sirket çalisanlarina ait ad,soyad,dogum günü maas gibi bilgilere ulasabiliriz.
KAYIT(Satir):Bir tablo içerisinde bulunan her bir kayit adi verilmektedir PERSONEL tablosunda Mehmet Çelik,Selçuk Çaliskan,Mehmet Özkan gibi kisilere ait birer kayit bulunmaktadir.
           Ad
Soyad
Selçuk 
Çaliskan
Mehmet
Özkan
Ahmet
Çelik
Bir veri tablosunda sonsuz kayit yapilabilir Pratikte kayit sayisi, veritabanini çalistigi bilgisayarlarin disk alani ile sinirlidir.
GELISMIS KAVRAMLAR
Primary Key:Herhangi bir kurumda  çalisan ad ve soyadlari ayni olan iki kisiyi veya birbirine benzeyen verileri ayirmak için numara verilir böylece herhangi bir islem sirasinda zorluk çekilmez bu verilen numaraya Primary Key denir.
ILISKI (Relation):Iliski Veritabani adinda basli basina bir teori vardir.büyük bir kurumda kayit sayisi oldukça fazladir ve ayrintilar üzerinde yanlis bir islem yapmak büyük sorunlar çikarabilir bu yüzden dogru model kurmayi yapmaliyiz.
Veritabani mantigi söyle der:”Her bir nesne tipi için ayri tablo yapmayi dogru bulur ve uygular.
1
Mehmet
Özkan
01.11.1965
2
Ahmet
Altin
03.04.1983
3
Ercan
Iyi
04.05.1960
4
Ayhan
Eser
07.08.1975
5
Selçuk
Çaliskan
19.12.1983
6
Mehmet
Durmaz
12.18.1978
7
Mahmut
Basel
02.03.1963
PERSONEL Tablosuna bakarak istenilen bilgilere ulasabilir. Iki farkli tablo arasindaki baglanti; tablolardan birine,digerinin Primary Key’i eklenerek saglanir.
Foreign Key
PERSONEL tablosundaki DEPARTMAN_ID sütunu,bir baska tablonun Primary Key’ine referans oldugu için Foreign Key diye adlandirabiliriz.
Normalizasyon
Bir veritabanin derli toplu bir hale getirme sürecine normalizasyon denir.normalizasyon çalismalari çerçevesinde ;bir veritabani,genel veritabani prensiplerine uygun hale getirilir.
Veritabani Tasarimi
Haberler: Web sitemizde haberleri yayinlamak istiyoruz böyle bir durumda ilk yapmamiz gereken sey gereken bilgilerin bir listesini çikarmaliyiz. Bu bilgileri saklayacak bir tablo yapmamiz gerekir. Sunu da unutmadan belirtmek isterim ki böyle büyük tablolarda ilk yapmamiz gereken Primary Key olusturmak.
Id
             baslik
                             metin
1
Web Sitemiz Açildi
Yeni web sitemiz açildi.Ziyaretiniz için tessekürler
2
Cd de indirim
Cd reyonunda %50 indirim var.
$
Önceki bölümü incelendigi zaman kisileri karistirmamak için Primary Key vermistik Haber basliginda ise ID adli bir Primary Key verdik bu sekilde istenilen haber karistirilmadan girilmis oldu.simdi de bizden haberlerin hangi tarihe ait oldugu ve haberin kisa bir özeti istediginde eski tablomuza yeni iki tablo eklemek gerekir.  
Id
baslik
tarih
metin
görüntü
özet
1
Websitemiz açildi
06.06.2005
Yeni web sitemiz
1
Yeni web si
2
Yeni indirim
12.02.2005
Bütün ürünlerde in
 2
Bütün ürünl
3
Yine zam yaptik
04.03.2006
Bütün ürünlere za
3
Bütün ürünl
Bütün istekler ve sorunlar çözüldü sanirim Veritabani mantigi için uygun bir is oldu.
Müsteri  Bilgileri
Bizden alisveris yapan müsterilerin ad,soyad,dogum tarihi,yas,sifre ve kullanici adi gibi bilgileri saklayabilecegimiz bir yapi olusturmamizi istiyorlar.ilk adim olarak müsteri gibi bir tablo olusturalim daha sonra müsteri bilgilerin girelim bizden istenilmese de mutlaka Primary Keyi olusturmak zorundayiz ileride karsilasacagimiz sorunlari önleyecegiz.daha sonra her grup için bir tablo olusturmak ve sonuçta büyük bilgi tablosu olusacak.
Id
e-mail
ad
soyad
Dogum
k.adi
Sifre
1
Selcuk
Çaliskan
19.12.1983
Ameta
2dor789yl
2
Ayhan
Eser
14.06.1971
Aeser
1eat76890
3
Mehmet
Özkan
08.07.1960
Mozkan
115igdt87
4
Ali
Gönen
16.11.1985
Kaz
Ati56e709+
5
Merve
Çag
15.12.1984
Dilber
Mrve1984o
6
Tugçe
Deniz
01.03.1984
Çagla
Tgçe657rn
                  
Kurumsal Adres Defteri
Yaptigimiz tabloyla ilgili basimizdaki müdürümüz bize kayitlarla ilgili bir soru sordu mesela 8 numarali kaydin adi,soyadi ve çalistigi birimi ve telefon numarasini  istiyorum dedi bu durumda yaptigimiz tablodan 8 numaraya bakarak bulabiliriz.Ama müdürümüz çalisan firmalarin ve baska illere gidenlerin de kayitlarinin da bulunmasini istiyor Veritabani mantigi prensiplerinden biride “Farkli nesne tiplerini farkli tablolara yerlestir ”der.Simdi de bir firma tablosu yapmamiz gerekecek ama bu tabloda bitis ve baslangiç tarihi olacak çünkü bunlarda tarih tipinde alanlaridir. 
Id
Firma id
Adres
Baslangic
Bitis
Telefon
Faks
1
             1       
Dikmen/ANKARA
01.02.2004
31.12.2004
03124824878
03128764321
2
              2
Tuzla/ISTANBUL
01.02.2004
31.12.2004
02164671458
02122223344
3
              3
Çalli/ANTALYA
01.02.2004
31.12.2004
02423454117
024243651321
4
              4
Sincan/ANKARA
01.02.2004
31.12.2004
03124846721
03124786594
5
              1
Meltem/ANTALYA
01.02.2004
31.12.2004
0242465789
02424356753
3 numarali firma 1 Haziran 2005 tarihinde baska bir yere tasinmis simdi adres degisikligi yapmamiz gerekiyor. Bu islem iki basamakta yapacagiz ilk önce firmanin geçerli olan adresinin 31 Mayis 2005 tarihi ile sinirli tutacagiz,daha sonra bu firma için 1 Haziran 2005 itibariyle geçerli olan yeni bir kayit yaratmak bu sekilde firmanin adresi degistirilmis oldu.
Kullanici Ayarlari
Yapmis oldugumuz veritabani çalismalarinda bir yanlislik oldu ve ziyaretçilerimiz bunu giderilmesini istedi mesela örnek olarak ziyaretçilerimizin arka plan rengi bazilari ile uyumsuzluk yaratmis o halde her ziyaretçimizin kendi arka plan rengini seçip saklayabilecegimiz bir yapi hazirlamamiz gerekiyor.  Elimizdeki tablo zaten var bu tabloya BGCOLOR diye bir alan eklememiz lazim.
Id
Ülke id
Ad
Soyad
     Email
Dogum
Kullanici
Sifre
Bgcolor
 1
TR
Ali
Çinar
01.02.1985
Sap
190rph
00cccc
 2
TR
Isa
Pak
12.10.1986
Peace
435odi
C00cc
 3
TR
Ayse
Seker
03.09.1964
Egsoz
Tak876
Cooff0
 4
TR
Yilmaz
Tek
06.08.1976
Ameta
Ate87i
Ffffff00
 5
TR
Didem
Parlak
09.06.1987
Yavru
Mln981
Cc00ff
 6
TR
Veysel
Savas
14.11.1983
Volki
Lyk906
Fffc00
 7
TR
Tuna
Çalis
15.08.1942
lider
Fb1907
Ffccc0
                               
Özlü Sözler
                      
              Id               
  metin         
                 1
Kisi kendinden bilir isi
                 2
Kargaya yavrusu sahan gibi gözükür
                 3
Kirpi yavrusunu pamugum diye sever
                 4
Öldürmeyen darbe güçlendirir
Anket
Siteye bazi anketler eklemek istiyoruz,bu anketlere verilen cevaplarinda düzenli bir sekilde saklanmasini istiyorum.Ilk önce yapmamiz gereken isleri iki baslik altinda toplamaliyiz.Anket sorulari ve cevap seçenekleri ve müsterilerin verdigi cevaplar.Sitede ilk önce sorular,soru bazinda cevaplar,müsteri bazinda cevaplar seklinde daha ayrintili olarak toplayabiliriz.Sorular için ilk önce  id numarali soru tablosu yapilir.simdi ikinci basamakta ise soru bazinda belirsiz sayida cevap tablosu yapilir eger 3 cevap seçenekli sorular olacak denilse 3 tane yeni alan eklemek gerekecek ama bu çözüm olmayacak bu yüzden ANKET CEVAP diye bir tablo olusturarak bu sorunu halledebiliriz.Bir tabloda zaten yer alan bir bilgiyi bir diger tabloda tekrarlamak ,veri tutarsizligina yol açabilir.
Satis Katalogu
Isyerimizin sattigi ürünlerin isimlerini ve fotograflarini merkezi sunucuda ttmak istiyorum bunun yani sira ürünün fiyatini,hangi tarihte satildigini ve son olarak ürünün hangi gruba girdigini de görmek güzel olacak.Ilk is olarak liste yapmak yani ürünün adi,fotografi,fiyati,ürün grubu ve grup bazinda adi.Simdi içinde AD&ID numarali id’ye iki alan ve fotografi ekleyecegiz ama direk fotograf gösterme olmayacagi ihtimalini degerlendirirsek isim olarak tabloya ekleyecegiz ve bütün yükü programciya yükleyecegiz.
Id
baslangic
Bitis
ürün_id
fiyat
1
01.03.2004
28.02.2005
                    1
                     1
2
01.03.2004
28.02.2005
                    2
                   50
3
01.03.2004
28.02.2005
                    3
                  100
4
01.03.2004
28.02.2005
                   4 
                 1200
5        
01.03.2004
28.02.2005
                    5
                   896
6
01.03.2004
28.02.2005
                    6
                   450
Simdide her bir ürünü bir ürün grubuna baglamam görevi var.URUN tablosuna GRUP_ID seklinde bir alan eklemektedir simdi de URUNGRUP ve URUN hiyerasik bir sekilde görmek gerekir.Bilgisayarlar:HP Laptop,Toshiba Laptop,Casper Masaüstü Bilgisayarlar,Cep Telefonlari:Nokia 6260,siemens SX1,Sarf Malzemeleri:Bos Cd,A4 Kagit,Bos DVD vb.Bir agaç yapisini düz bir veritabani tablosunda saklamanin yolu,ilgili tabloda UST_ ID seklinde bir  alan yaratip,bu alanda her bir kaydin bagli bulundugu kaydin ID’sini yazmaktan geçer.  
Siparis
Bir siparisi hangi müsteri hangi tarihte vermis ve kaç adet istedigini veritabaninda saklamak gerekecek.bu gibi durumlarda ilk önce süzgeci elimize alarak liste yapariz daha sonra SIPARIS_BASLIK adi altinda bir tablo yapmak gerekir.Her bir siparise ID numarasi vermek yeterli olacak.Simdi ise, bir sipariste kaç çesit ürün oldugunu bilmek imkansiz bu sorunu tablomuza sütün eklemekle çözemeyecegimize göre SIPARIS_KALEM adi altinda yeni bir tablo yaparak sorunu halletmis olacagiz ve böylece siparis bazinda hangi üründen kaç tane siparis edilmis olduguna ait bilgiler  elde edilir.
Teslimatlar
Müsterilerimizin siparislerini biriktirilen bir yapi ve her bir teslimatin hangi müsteriye hangi tarih de ve bu teslimatin hangi siparis kalemiyle yapildigini veritabaninda saklamak.Buradaki önemli nokta :Bir müsterinin farkli tarihlerde verdigi farkli siparisler,tek bir teslimat içerisinde postanabiliyor Simdi ilk olarak yapmamiz gereken sey bir liste olusturmak:teslimat tarihi,müsteri,notlari ve siparis kalemi ilk olarak TESLIMAT_BASLIK adi altinda bir tablo olusturmak bu tablonun MUSTERI ID alanin MUSTERI tablosunun ID alanina refere edildigini söylemek gerekir.
Çoklu Dil Destegi
        
Web sitemize Dünyanin dört bir yanindan ziyaretçi gelmekte bu yüzden sitemizdeki ifadeleri Türkçe,Ingilizce, Almanca ve Rusça olarak yayinlanmasini saglamaliyiz. ilk önce yapilacak is olarak elimizdeki ürünleri listelemeliyiz. Bunlar: Diller,Metinler daha öncesinde ülke diye bir tablomuz vardi bu tabloda ülke kodlari ve isimleri yer aliyordu buna ek olarak yeni bir tablo ile dil kodu yaparak karisikligi önleyebiliriz.metin bazinda iilk is olarak WEBICERIK_TANIM seklinde bir tablo yapmak içine ID ve ACIKLAMA seklinde iki alan eklemek.Simdi sirada ;hos geldiniz mesaji,kullanici adi,sifre gibi içerikleri olusturdugumuz dört dilde de  saklanacagi bir yapi olusturmak. WEBICERIK_TANIM tablosuna TR,EN,DE,RUS isimlerinde dört yeni alan olusturmak.Ileride yeni diller eklemek istersek eger tablomuzu sisirmek yerine yeni bir Metin tablosu yapmak olacak.
Id
Tanim_id
Ülke_id
Metin
 1
             1
                     TR
Sitemize hos geldiniz!
 2
             2 
                     UK
Welcome to our Website
 3
             3 
                     DE
Benutzamme
 4
             4
                     TR
Yapim sürecindedir
 5
             5
                     UK
Our profile
 
Organizasyon Agaci
Simdiye kadar yapmis oldugumuz web sitesinde birde ilk olarak yönetici kadrosunu tepeden en alt seviyeye kadar bir Organizasyon Agaci olusturmak ve sitemizde yayinlamak.Burada PERSONAL,DEPARTMAN_ID tablolarindan yardim alacagiz.Ilk is olarak süzgecimiz elimizi alarak bir liste olusturmak ve Organizasyon birimlerini agaç yapisi seklinde saklamak daha sonra Personel bazinda organizasyon birim atamasi yapmak.her personel tek bir id numarasina sahip olacagi için PERSONEL tablosunun içine POZISYON_ID alanini ekleyerek bu sorun da halledilebilir.
SQL
Açilimi Structured Query Language olan SQL;temelde tablolarimizda yatan verdileri düzgün bir sekilde çekip görüntülemek için kullanilir ve tablo yaratmak veya tablo alanlarini modifiye etmek amaciyla da kullanilir.SQL dilini dogru kullandiklari takdirde ,bir dolu karisik ve tehlikeli algoritma yazmak yerine isin zor kismini veritabanina yikabilir ve gelen verileri diledikleri gibi kullanirlar.Bu dilin tanimi yerine veritabaninda yatan bilgilere ulasma ve bilgileri modifiye etmek amaciyla kullanilan bir komut kümesi denilebilir.
Veri Okuma Örnekleri
Veri okuma da elbette bir yol vardir yapilacak ilk is yaptigimiz tablodaki bütün kayitlari bakarak istedigimiz isleri yapabiliriz ,.Mesela çalistigimiz yerdeki müdürümüz personel listesini istedigi zaman PERSONEL tablosundaki bütün kayitlari listelemektir SQL dilinde bir tablodan kayit çekmek için SELECT komutudur. Personelin ad,soyad,maas bilgilerin gerektiginde yine SELECT komutunu kullanarak yapariz.bütün personelin listesin isim sirasina göre istenildiginde ilk is olarak listeyi isim sirasina göre dizmek SQL sorgularinda siralama islemleri ORDER  komutu ile yapilir
SELECT
FROM PERSONEL
ORDER BY ad;
Bu komutla bütün personel siralanir. ORDER komutu listeleri herhangi bir alan bazinda artan ve azalan sekilde siralayabiliriz. Bu seferde ad, soyadi ve maas listesini ters olarak istenildiginde ilk olarak komutlari yazariz
SELECT ad; soyad,maas
FROM personel
ORDER BY ad DESC ,maas 
Burada listeyi birden fazla alani baz alani siralayabiliriz, bazi alanlari artan ve azalan olarak siralariz son olarak bir sorgu içerisinde bir yandan alan isimlerini diger yandan da siralama ölçütlerini belirtmek mümkündür. SQL sorgularinda ,bütün metin degerleri tirnak içerisinde yazilir.Bir sorgu içerisinde kosul eklemenin WHERE komutuyla yapilabilir.
Personelde ismi Mehmet veya Dilek olanlarin listesini çikarilmasi istenildiginde ilk is olarak PERSONEL tablosunu AD alanini Mehmet ve Dilek kayitlari çekmek
SELECT
FROM personel
WHERE ad = ‘Mehmet’ OR ad = ‘DILEK’
OR komutuyla farkli alanlarin degerlerini bir arada ifade edebiliriz.
AND ve OR komutlari .tek bir sorgu içerisinde bir arada kullanabilir.
Sorgu kosullari,parantezler yardimiyla  mantik gruplarina ayrilabilir.
LIKE komutu da gibi anlamina gelir.
“1 Kasim 1978 tarihinde dogmus bütün çalisanlarin ad,soyad ve dogum günü bilgileri istendiginde
SELECT FROM personel
WHERE dogum =11/01/1978;
Bir SQL sorgusunda tarih ifade etmek gerekirse Tarih formati aa/gg/yyyy formatinda uygun bir biçimde yazilir,Tarih alanlari arasindaki ayraç olarak /karakteri kullanilir.
SQL sorgusunda arasindaki degerleri göstermek için BETWEEN komutunu kullaniriz.
Bir sorgu içerisinde ,alanlarindaki degerleri matematik islemleri yapilabilir ve islem sonuçlarini ayri bir sütun olarak görebiliriz.Mesela birden fazla örnek oldugu zaman birden çok  örnek oldugu zaman birden çok OR kullanmaktansa IN(……….) kullanarak bitirilir.çalistigimiz kurumda kaç kisinin çalistigini ögrenmek istenildiginde tek tek saymak yerine COUNT komutunu kullanarak hepsini birden listeleyebiliriz.
SELECT count’(*) AS toplam
FROM personel
Bu sorguyu  çalistirdigimizda birçok isi biranda yapabiliriz.GROUP BY  komutu kayit sayma  islemini diledigimiz alan bazinda yapabiliriz.Kurumumuzda çalisan personele gelecek ay kaç YTL maas verecegimizi ögrenmek için SUM komutunu yazarak toplayabiliriz.Belli bir alandaki degerleri toplamak için SUM komutu kullanilir.Veritabanindan dönecek kayitlari filtrelemek için WHERE komutu kullanilir.Ayrica bu komut hazir tablolarin hazir alanlarinda bulunan degerleri filtrelemek içinde kullanilir.Her bir departmana ortalama kaç YTL ödeyecegiz hesaplamak için her zamankinden farkli bir komutu yazarak bulabiliriz AVG komutu ortalama isine yarayacak.
SELECT departman_id ,AVG(maas) AS ortalama
FROM personel
GROUP BY departman_id;
ROUND komutu hesaplardaki küsuratlari yuvarlamaya yarayacak.Bir tablodaki en büyük ve en küçük degerler MAX ve MIN komutlariyla elde edilebilir.bir soru içerisinde;alanlar arasinda matematik islemi yaptirmak mümkündür.18 id’li personelimizin  özlük bilgilerini görmek istenildiginde iki ayri sorgu kullanilacaktir ama SQL bunu tek bir komut da yapma imkani veriyor.Birden fazla ID’ si olan ve birden fazla kaydi eklenmis olan kisileri tek bir liste haline dönüstürmek için DISTINCT komutu ile yapilir.
SELECT DISTINCT musteri_id
FROM siparis_baslik
IN ve EXISTS komutlari genelde birbirinin yerini alabilir; dolayisiyla,NOT IN ve NOT EXISTS komutlari da birbirinin yerini alabilir.
Mesela iki farkli sorgu islemi elimizde bunu tek sorgu halinde dönüstürmemiz isteniyor aslinda çok uzun gibi görünen bu islemi UNION komutun kullanarak tek bir liste haline dönüstürebiliriz. Bu komutun dikkat edilecek yani komut içeriklerinin ayni olmasi gerekir.
 
Hesaplanarak üretilen bir komuta karsi koymak için HAVING komutudur. Ayrica bu komut listelerde GROUP BY komutundan sonra gelir. Veritabaninda bir komutu silmek için DROP TABLE  komutunu kullanabiliriz.

Benzer Kitaplar