Professional Documents
Culture Documents
Veri̇ Tabani Uygulamalari
Veri̇ Tabani Uygulamalari
VER‹TABANI UYGULAMALARI
Yazarlar
Yrd.Doç.Dr. Hakan Güray fiENEL (Ünite 1, 5, 8, 9, 10)
Ö¤r.Gör. Reha O¤uz ALTU⁄ (Ünite 2, 3)
Uzm. Tevfik KIZILÖREN (Ünite 4, 7)
Uzm. ‹brahim Erdinç ERGÜN (Ünite 6)
Editör
Yrd.Doç.Dr. Hakan Güray fiENEL
ANADOLU ÜN‹VERS‹TES‹
Bu kitab›n bas›m, yay›m ve sat›fl haklar› Anadolu Üniversitesine aittir.
“Uzaktan Ö¤retim” tekni¤ine uygun olarak haz›rlanan bu kitab›n bütün haklar› sakl›d›r.
‹lgili kurulufltan izin almadan kitab›n tümü ya da bölümleri mekanik, elektronik, fotokopi, manyetik kay›t
veya baflka flekillerde ço¤alt›lamaz, bas›lamaz ve da¤›t›lamaz.
Genel Koordinatör
Prof.Dr. Levend K›l›ç
Ö¤retim Tasar›mc›s›
Yrd.Doç.Dr. Seçil Banar
Grafiker
Nihal Sürücü – Ufuk Önce
Kapak Düzeni
Prof. Tevfik Fikret Uçar
Dizgi
Aç›kö¤retim Fakültesi Dizgi Ekibi
Veritaban› Uygulamalar›
ISBN
978-975-06-0810-0
1. Bask›
‹çindekiler
Önsöz ............................................................................................................ vii
DISTINCT....................................................................................................... 124
GROUP BY .................................................................................................... 125
HAVING ......................................................................................................... 127
Özet ............................................................................................................... 128
Kendimizi S›nayal›m ..................................................................................... 129
Kendimizi S›nayal›m Yan›t Anahtar› ............................................................ 130
S›ra Sizde Yan›t Anahtar› .............................................................................. 131
Yararlan›lan ve Baflvurulabilecek Kaynaklar ............................................... 131
Önsöz
Geçti¤imiz yüzy›lda yaflanan teknolojik, bilimsel ve ekonomik ivmelenmenin
ard›nda, bilgilerin depolanmas›n›, yay›lmas›n› ve veriler üzerinde h›zl› ifllem
yap›lmas›n› sa¤layacak ortamlar›n gelifltirilmesi yatar. Günümüzde, flirketler ifl
süreçlerini elektronik ortamda kaydetmekte, ifl ak›fllar›n› bilgisayar yaz›l›mlar›yla
takip etmektedir. Verilerin depolanmas›, üzerinde ifllemler yap›lmas› ve yeni bil-
gilerin oluflturulmas› sayesinde flirketler geliflme flans› bulmaktad›r. Ellerindeki
verileri yorumlayarak, yeni bilgiler üreten flirketler gelece¤i görme ve buna göre
planlama yapma yetene¤ine kavuflurlar. Planlama yapabilen kurulufllar, beklen-
medik ekonomik olaylara daha dayan›kl› ve sürekli geliflmeye aç›klard›r.
fiirketlerin kendi ifl ak›fllar›n› izlemek ve yeni bilgiler oluflturmak için kul-
land›klar› araçlardan biri veritabanlar›d›r. Veritaban› düzenli veriler toplulu¤udur.
Her ne kadar bu kavram ilk tasarland›¤› y›llardan beri düzenli verilerle birlikte
an›lsa da, günümüzde her türlü verinin depolanmas› için kullan›lmaktad›r.
Veritaban› kullan›m›nda en büyük sorun büyük miktarda verinin depolanmas› ve
etkin bir flekilde kullan›labilmesidir. Veritaban›n›n verimli kullan›m› için verita-
ban› yönetim sistemi ad› verilen yaz›l›mlar gelifltirilmifltir. Yönetim sistemleri
aras›nda ticari olanlarla birlikte, ücretsiz olanlar da bulunur. Geliflen yaz›l›m
teknolojileri sayesinde, ücretsiz olan yaz›l›mlarla ticari olanlar aras›nda, özellikler
ve baflar›m de¤erleri ba¤lam›ndaki farklar h›zla kapanmaktad›r.
Bu kitab›n temel amac›, veritaban› yönetim sistemleri konusunda, okuyuculara
temel kavramlar› anlatmak ve veriler üzerinde yap›labilecek ifllemler konusunda
ayr›nt›l› bilgiler vermektir. Bu amaçla, ücretsiz olan PostgreSQL veritaban› yöne-
tim yaz›l›m› kullan›lacakt›r. Yaz›l›m›n kurulumu, ek yaz›l›mlar ve özelliklerin
tan›t›m› kitab›n ilk bölümünde anlat›lmaktad›r. Veritaban› yönetim sistemlerinde
SQL programlama dili kullan›larak yap›lan ifllemlerle ilgili çok say›da örnek veril-
mifltir.
PostgreSQL yaz›l›m›n›n bu kitap için seçilmesinin ard›nda, ticari anlamda
üretilen yaz›l›mlardaki pek çok özelli¤in, PostgreSQL’de bulunmas› yatmaktad›r.
Bunlar aras›ndaki önemli özelliklerden biri de, OpenGIS standard›na olan uyum-
dur. Veritaban› yönetim sistemleri üzerinde co¤rafi nesnelerin depolanmas› ve
üzerinde co¤rafi anlamda yap›lan hesaplamalar›n yap›lmas›, PostGIS standard›n›
getiren PostGIS eklentisiyle sa¤lanmaktad›r.
Kitaptaki bir çok örnek, co¤rafi bilgi sistemleri perspektifinden haz›rlanm›flt›r.
Kuramsal bilgiler, pratik örnekler ve gerçek hayat uygulamalar›yla bütünlefltiril-
erek sunulmaktad›r. Kitab›n co¤rafi bilgi sistemleri konusunda çal›flan programc›lar
aç›s›ndan önemli bir kaynak olmas› beklenmektedir.
Editör
Yrd.Doç.Dr. Hakan Güray fiENEL
VER‹TABANI UYGULAMALARI
1
Amaçlar›m›z
N
Bu üniteyi tamamlad›ktan sonra;
‹liflkisel veritaban›n›n hangi uygulamalarda yararl› oldu¤una karar verebile
N
ceksiniz.
‹liflkisel veritaban› uygulamalar›n› di¤er veritaban› türlerinden ay›rabileceksi-
N
niz.
Bir veritaban›n› oluflturan temel bileflenleri listeleyebilecek ve iliflkisel verita-
N
ban› yönetim sisteminin nas›l çal›flt›¤›n› aç›klayabileceksiniz.
Temel SQL sorgular› kurabileceksiniz.
Anahtar Kavramlar
• veritaban› • PostgreSQL
• veritaban› yönetim sistemleri • PL/pgSQL
• iliflkisel veritaban› modeli • OLAP
• tablolar • OLTP
• SQL
‹çerik Haritas›
• G‹R‹fi
• VER‹TABANI NED‹R?
Veritaban›
Veritaban› Uygulamalar› • VER‹TABANI TÜRLER‹ VE
Uygulamalar› UYGULAMALARI
• ‹L‹fiK‹SEL VER‹TABANI YÖNET‹M
S‹STEMLER‹N‹N SORUNLARI
Veritaban› Uygulamalar›
G‹R‹fi
Günümüzde bilgi teknolojileri sayesinde depolanan veri miktar› gün geçtikçe art-
maktad›r. ‹nternet sayesinde, veriler dosyalar halinde h›zl› bir yay›l›m göstermekte
ve verilerin birden fazla kopyas› ‹nternet üzerinde yer alan bir çok bilgisayara kop-
yalanmaktad›r. Ancak verilerin büyük bir k›sm› düzenli olmaktan uzakt›r. Birbirin-
den ba¤›ms›z, ayr› dosyalar halinde duran verilerin düzenli hale getirilmesi çabas›
bilgisayarlar›n yayg›nlaflmaya bafllad›¤› ilk y›llara dayan›r. Düzenli hale getirilen ve
birbirleriyle iliflkilendirilen veri parçalar›, verinin bilgiye dönüfltürülmesi için el-
zemdir. Günümüzde kurulufllar, kendileriyle ilgili verileri zaman›nda ve do¤ru fle-
kilde kaydedebilmek, ve bunlar› kullanarak iflletmelerini daha iyi yönetebilmek
için yar›fl içindedir. Verilerini daha iyi yöneten kurulufllar›n yaflama flans› di¤erleri-
ne göre daha yüksektir. Depolanan büyük miktarda verinin bilgiye dönüfltürülme-
si ancak esnek ve h›zl› veritaban› yönetim sistemleriyle mümkündür.
Veritaban› verilerin düzenli flekilde depoland›¤› bir nesnedir. Ancak, veritaba-
n›n›n temel amac› verileri depolamak de¤ildir. Örne¤in, ‹nternet büyük miktarda
metin, video, resim gibi verinin depoland›¤› bir yer olmas›na ra¤men veritaban› ol-
maktan uzakt›r, çünkü ‹nternet’te bulunan veri düzensizdir. Ancak, Google, Yaho-
o, Bing gibi arama motorlar› üzerinden sorgulama gerçeklefltirilebilir. Veritabanla-
r›n›, veri depolama sistemlerinden ay›ran en temel özellik, veriler üzerinde çeflitli
kriterlere göre sorgulama yap›labilmesi ve bu flekilde yeni bilgilerin türetilebilme-
sidir. Geleneksel veritaban› tan›m›nda, verilerin düzenli flekilde depolanmas›na ve
birbiriyle ilgili olmas›na gerek yoktur. Ancak, veritaban›nda verilerin birbiriyle ilifl-
kili öbekler halinde tutulmas› bilgi üretimini kolaylaflt›rmaktad›r.
Gerçek hayatta, veritaban› olarak de¤erlendirilebilecek bir çok veriyi kiflisel ar-
flivlerimizde tutuyoruz. Bir veritaban›n›n dijital ortamda olmas›na gerek yoktur. Ör-
ne¤in, arkadafllar›n›zdan ö¤rendi¤iniz yemek tarifleri, arkadafllar›n›z›n ve akrabala-
r›n›z›n adresleri, telefon numaralar›, do¤um tarihleri, kiflisel veritabanlar› olarak
düflünülebilir. Evinizde, önemli olaylar›n foto¤raflar›n› saklad›¤›n›z foto¤raf albü-
münüz bile bir veritaban› olarak görülebilir. ‹çinde kendinizin bulundu¤u foto¤raf-
lar› aramak zor bir ifltir. Resimleri bir veritaban› haline getirerek, içindeki kiflilerin
isimlerini, çekildi¤i tarihi ve resmin konusunu bir veritaban›na aktarabilseydiniz,
arama ifllemini çok daha k›sa sürede yapabilirdiniz. Dijitalleflen verilerin sa¤lad›¤›
en büyük kolayl›k, verilerin daha kolay sorgulanabilmesidir.
4
D Ü fi Ü N E L ‹ M D Ü fi Ü N E L ‹ M
Veritabanlar›nda farkl› tipte ve miktarda veri bulunabilir. Verilerin nas›l depo-
lanaca¤› ve daha h›zl› flekilde eriflilebilece¤i, uzun y›llar üzerinde çal›fl›lan konular-
S O R U dan biri olmufltur.
S O R U Bu amaçla, çeflitli veritaban› modelleri gelifltirilmifltir. ‹lk uygu-
lamalarda, veriler dosya sisteminde dosyalar halinde tutulurdu. Zamanla, veri mik-
D‹KKAT
tar› ço¤ald›kça D‹KKAT
ve veriler karmafl›klaflt›kça daha h›zl› eriflim çözümlerine olan talep
artm›flt›r. ‹liflkisel veritaban› modeli, flu ana kadar gelifltirilenler aras›nda en iyi çö-
züm olarak evrilmifl ve en yayg›n olarak kullan›lan veritaban› modeli olmufltur.
N N
SIRA S‹ZDE SIRA S‹ZDE
Veritabanlar›, Veritaban› Yönetim Sistemi (VTYS) ad› verilen yaz›l›mlar üzerinden
oluflturulur ve kullan›l›r. Kullan›c›lardan gelen sorgulama komutlar›, verilerde de¤i-
AMAÇLARIMIZ fliklik yap›lmas›
AMAÇLARIMIZtalepleri VTYS taraf›ndan al›n›r ve veritaban›na uygulan›r (fiekil 1).
Bu flekilde kullan›c›lar, VTYS üzerinden veritaban›ndaki veriler üzerinde sorgulama
yapabilirler, yeni veriler ekleyebilirler ve olan verileri de¤ifltirebilirler veya silebilir-
K ‹ T A P ler. VTYS’lerin
K ‹ TenA önemli P ifllevi, veritaban›na kullan›c›lar›n en h›zl› flekilde eriflimini
sa¤lamakt›r ve verdikleri komutlar› çal›flt›rarak sonuçlar› geri döndürmektir.
fiekil 1.1
Sorgulama de¤ifliklik
T EVeritaban›na
LEV‹ZYON gelen TELEV‹ZYON
komutlar›n VTYS
taraf›ndan
ifllenmesi
‹NTERNET ‹NTERNET
Kay›t silme
Veritaban›
Kay›t ekleme
Veritaban› Yönetimi
Sorgulama de¤ifliklik
Microsoft SQL Server, Oracle, IBM DB2, PostreSQL ve MySQL gibi yaz›l›mlar
veritaban› yönetim sistemlerinden baz›lar›d›r. Yönetim yaz›l›mlar›, yeni veritaban›
yaratmak, var olan veritabanlar›nda bilgi öbekleri olan tablolar› oluflturmak, ye-
dekleme yapmak gibi yönetimsel ifllerin yap›lmas›n› sa¤lar. Bununla beraber, ana
ifllevleri kullan›c›lardan veya veritaban› uygulama yaz›l›mlar›ndan gelen sorgula-
malar› ve komutlar› çal›flt›rarak sonuçlar› döndürmektir. Bu çal›flmadaki bütün ör-
nekler, iliflkisel veritaban› yönetim sistemi olan PostgreSQL üzerinde gösterilecek-
tir. PostgreSQL, ücretsiz olmas› ve yayg›n flekilde kullan›lmas› nedeniyle tercih
edilmifltir.
D Ü fi Ü N E L ‹ M D Ü fi Ü N E L ‹ M
S O R U S O R U
D‹KKAT D‹KKAT
1. Ünite - Veritaban› Uygulamalar› 5
Verilerin etkin bir flekilde kullan›lmas›n›n bir kurulufl için neden önemli oldu-
¤u, bir ma¤aza zincirinde yer alan bir ma¤azan›n iflleyifline bakarak anlafl›labilir.
Ma¤azada be¤endi¤iniz bir ürünü kasaya götürdü¤ünüzde, kasiyer ürünün barkot-
lu etiketini barkot okuyucuda okutmaktad›r. Barkot okuyucusunun ba¤l› oldu¤u
bilgisayar, barkotta kodlanm›fl ürünün numaras›n› veritaban› yönetim sistemine ve-
rerek, fiyat›n› sorgulamaktad›r. E¤er ürün sat›n al›n›rsa, veritaban›nda bulunan ma-
¤aza sto¤undan eksiltilmektedir.
Veritaban›nda tutulan bilgiler, ma¤azan›n etkin bir flekilde çal›flmas›n› kolaylafl-
t›rd›¤› gibi, flirketin üst kademelerinde yer alan karar vericiler için de önemli
bilgiler sa¤lar. Stokta azalan ürünler, flirket yönetiminin denetimindeki ana depo-
dan ma¤azalara yollanmaktad›r. Ayr›ca, ana depoda eksilen ürünler için, ma¤aza-
larda çok sat›lan ürünler üreticilerinden siparifl edilirken, sat›fl baflar›s› düflük ürün-
ler için siparifl verilmeme karar› verilebilir. Ürünlerin niteliklerine göre de farkl› ka-
rarlar al›nabilir. Örne¤in, veritaban›nda yer alan sat›fl rakamlar› ve ürünlerin renk-
leri üzerinde yap›lan sorgulamalarda sar› renkli ürünlerin, di¤erlerine göre daha
üst sat›fl rakamlar› yakalad›¤› anlafl›l›rsa, bu niteli¤i tafl›yan baflka ürünlerin de üre-
ticilerden al›nmas› düflünülebilir.
VER‹TABANI NED‹R?
Veritaban›, veri ve metaveriden oluflur. Metaveri, veri hakk›nda veri olarak tan›m-
lan›r. Veritaban› yönetim sistemleri, veritaban›n›n yap›s›n› ve içindeki bilgilerin
cinsini metaveri olarak tutarlar. Veritabanlar›nda veriler, tablolar halinde tutulur.
Metaveri, tablonun her alan›n›n tipini ve anlam›n› tan›mlar. Veritipi ise, tablodaki
her alan›n (kolonun) tipidir. Herhangi bir alan›n veri tipi, say› olabildi¤i gibi, tarih
ve metin de olabilir. Örne¤in, bir personel veritaban›nda kifli bilgilerinin depolan-
d›¤› bir tablo düflünelim (fiekil 2). Tabloda dört kiflinin kayd› bulunmaktad›r. Birin-
ci kolonda sicil numaras›n›n olaca¤›, ard›ndan gelen kolonlarda ad, soyad, do¤um
tarihi ve biriminin bulunaca¤› bilgisi metaveridir. VTYS’leri her tabloda yer alan
kolonlar›n içeriklerinin ne olaca¤› bilgisini kullanarak verileri depolarlar.
N N
SIRA S‹ZDE SIRA S‹ZDE
00165203 Hakan Taner 08.12.1967 Sat›nalma
AMAÇLARIMIZ AMAÇLARIMIZ
Sorgulama, veritaban›nda belirli koflullar› sa¤layan verilerin bulunmas› ifllemi-
dir. Örne¤in, ismi A ile bafllayan flehirler fiehirler tablosunda sorgulama yap›larak
bulunabilir. Sorgulama yan›nda, ekleme, de¤ifltirme ve silme Kgibi ‹ T ifllemler
A P de, ve- K ‹ T A P
ritaban›ndaki bilginin güncel halde tutulmas› amac›yla kullan›l›r.
Veritaban›nda yap›lacak ifllemler, veritaban› yönetim sisteminin anlad›¤› bir bil-
gisayar diliyle yaz›lm›fl komutlarla yap›l›r. Veritaban› ifllemleri
T E Liçin
E V ‹ Zkullan›lan
YON ko- TELEV‹ZYON
‹NTERNET ‹NTERNET
6 Veritaban› Uygulamalar›
mut dillerinden biri ve en yayg›n kullan›lan› SQL (Yap›sal Sorgu Dili - Structured
Query Language) dilidir. Özellikle iliflkisel veritaban› sistemleri için tasarlanan SQL
dili, veritaban› üzerinde sorgulama, de¤ifltirme, silme ve ekleme gibi ifllemlerin ya-
p›lmas›n› sa¤lar. Personel veritaban›nda, Ahmet isimli kiflileri getirmek için kulla-
n›labilecek SQL komutu, fiekil 3’te gösterilmektedir.
fiekil 1.3
fiekil 1.4
D Ü fi Ü N E L ‹ M D Ü fi Ü N E L ‹ M
N N
SIRA S‹ZDE SIRA S‹ZDE
Veritaban›n›n, verilerin depolanmas› ve verinin bilgiye dönüfltürülmesi ifllemin-
de kullan›lan bir yap› olarak etkin flekilde kullan›m› ancak tasar›m› do¤ru yap›ld›-
¤› zaman baflar›l›d›r. Verinin organizasyonel olarak tasnif edilmesi AMAÇLARIMIZ
ve veritaban›n›n AMAÇLARIMIZ
tasar›m› veritaban› modelleme ad› verilen bir süreçle gerçeklefltirilir. Veritaban›
modeli verinin düzenli hale getirilmesi için gerekli kurallard›r ve verilerin veritaba-
n›na nas›l yerlefltirilece¤ini tan›mlar. Model sayesinde, bir veri Ky›¤›n›,
‹ T A birbiriyle
P ilifl- K ‹ T A P
kili ve düzenli bir veri yuma¤› haline getirilebilir.
Do¤ru bir flekilde gerçeklefltirildi¤inde modelleme ifllemi veriler aras›ndaki tu-
T E L E V ‹ hatalar
tarl›l›¤› art›r›r ve verilere daha h›zl› eriflilmesini sa¤lar. Tasar›mdaki Z Y O N ve yan- TELEV‹ZYON
l›fl kararlar, bilginin yanl›fl elde edilmesine kadar varan sorunlar ortaya ç›kar›r. Ve-
ritaban› etraf›na kurulan uygulama yaz›l›mlar› yaz›ld›ktan ve veriler veritaban›na
eklenmeye bafllad›ktan sonra tasar›m›n de¤ifltirilmesi oldukça ‹zordur. NTERNET ‹NTERNET
‹yi bir modelle, verilere daha h›zl› ulafl›labilir ve bilgi üretimi daha kolay ger-
çeklefltirilerek raporlanabilir. Raporlama, veritaban› içinde yer alan verilerin, bilgi
haline getirilerek doküman haline getirilmesi iflidir ve veritaban› üzerinde yap›lan
uygulamalardan biridir.
Yüksek seviyeli dillerden birinde (örne¤in C#, Java, gibi) yaz›lan veritaban› uy-
gulama yaz›l›mlar›, kullan›c›lar›n ayr›nt›lar› bilmeden veritaban›n› kullanmalar›n›
ve di¤er bir deyiflle kullan›c›lar›n veritaban›ndan soyutlanmalar›n› sa¤lar. Çünkü
kullan›c›, VTYS’nin ayr›nt›lar›n› ve veritaban›ndaki veri modelini bilmek zorunda
de¤ildir. Veritaban›n›n soyutlanmas›, bir sürücünün kulland›¤› araban›n motoru-
nun teknik ayr›nt›lar›n› bilmemesine benzetilebilir.
Uygulama yaz›l›mlar› sayesinde elde edilen bilgi kurumlar›n yaflamas› ve gelifl-
mesi için gerekli kararlar›n al›nmas›nda kullan›l›r. Ancak, veritaban› tasar›m›, do¤-
ru bilgi elde etmenin anahtar›d›r. Veritaban› organizasyonundaki hatalar, uyum-
suzluk ve tekrarlayan veriler, ne kadar iyi yaz›l›rsa yaz›ls›n uygulama yaz›l›mlar›-
n›n do¤ru ve h›zl› bir flekilde bilgi sa¤lamas›n› engeller.
N N
SIRA Information
verdi¤i bir yaz›l›m› gelifltirir. 1960’l› y›llar›n sonunda, IBM flirketi, S‹ZDE Ma- SIRA S‹ZDE
nagement System (IMS) ad› verilen bir yaz›l›m› piyasaya sürer. IMS, verinin hiye-
rarflik flekilde modellenmesine dayanan bir sistemdir.
AMAÇLARIMIZ AMAÇLARIMIZ
1970’de, yine IBM flirketinden Edgar Codd isimli araflt›rmac›, günümüzde yay-
g›n bir flekilde kullan›lan iliflkisel veritaban› modellerine öncülük eden bir yakla-
fl›m öne sürer. Codd, verilerin ortak anahtarlar (say›lar) üzerinden K ‹ T iliflkilendirilme-
A P K ‹ T A P
sinin verilerin kolay ulafl›labilir hale getirilmesine yard›mc› olaca¤›n› belirtmekte-
TELEV‹ZYON TELEV‹ZYON
‹NTERNET ‹NTERNET
8 Veritaban› Uygulamalar›
dir. Bu önemli çal›flma, günümüzde kullan›lan çok say›da ticari veritaban› uygula-
mas›na esin kayna¤› olmufltur.
1980’ler, iliflkisel veritaban› yönetim sistemlerinin yayg›nlaflt›¤› dönemlerdir. Bu
sistemler içinde çeflitli ifllemlerin yap›lmas›n› sa¤lamaya yönelik bir dil gelifltirilme-
si düflüncesi, SQL (Yap›sal Sorgu Dili : Structured Query Language) ad› verilen bir
bilgisayar dilinin gelifltirilmesine yol açar. SQL dilinin ilk örne¤i, 1970’lerin sonun-
da IBM’in deneysel anlamda gelifltirdi¤i bir veritaban› üzerinde sorgulama gerçek-
lefltirmek amac›yla gelifltirilmifltir. Baz› isteklere göre gelifltirilen dil, 1980’lerde IBM
SEQUEL (Ard›fl›k ‹ngilizce Sorgu Dili - Sequential English Query Language) ismiy-
le piyasaya sürülmüfltür. Ancak, SEQUEL isminin ticari isim hakk› baflka bir flirket-
te oldu¤u için, isim SQL olarak de¤ifltirilir.
SQL’in bilgisayar endüstrisinde yayg›n bir kullan›m alan› bulmas› ve ticari bafla-
r›s› nedeniyle, Amerika Standartlar Enstitüsü olan ANSI, SQL’in standartlaflmas› için
bir komite kurar. Ard›ndan, 1987’de, Uluslararas› Standartlar Enstitüsünde (ISO),
SQL’in bir Dünya standard› olmas› için çal›flmalar bafllat›l›r. ‹ki y›l sonra, standar-
d›n ilk sürümü olan SQL-89 duyurulur. Talepler do¤rultusunda, SQL-89 daha da
gelifltirilerek, ikinci nesil standart olan SQL-92 yay›nlan›r. Üçüncü nesil standartla
ilgili çal›flmalar, 1999’da tamamlan›r ve SQL-99 ad› alt›nda sunulur. En son olarak
SQL:2003 ve SQL:2006 standartlar› ortaya ç›kar. Ancak, SQL konusundaki standart-
laflma bitmemifltir ve yeni özelliklerin kazand›r›lmas› için çal›flmalar yap›lmaktad›r.
SQL dilinin, bir programlama dilinde yer alan yap›lara (döngüler, “case” yap›la-
r›,vb) sahip olmas› için çal›flmalar sürdürülmektedir.
1980’lerin sonlar› ve 1990’lar çok amaçl› veritaban› yönetim sistemlerinin bilgi-
sayar endüstrisinde görüldü¤ü y›llard›r. Veritaban› yönetim sistemi bu y›llarda ya-
p›lan de¤iflikliklerle, sadece alfanümerik (alfabetik ve nümerik) karakterlerden
oluflan kay›tlar›n depoland›¤› sistemler olmaktan uzaklafl›r. Alfanümerik nitelik ta-
fl›mayan, resim, video, ses dosyalar›n› da depolayan sistemler olarak evrilirler. Ar-
t›k veritaban› yönetim sistemleri, birbiriyle iliflkili her türlü veriyi depolayabilen ve
sorgulanan bilgileri h›zl› bir flekilde sunabilen sistemler haline gelir.
1990’lar, genel amaçl› veritaban› kavram›n›n esnetildi¤i ve yönetim bileflenleri-
nin bir üst katman olarak sunuldu¤u Kurumsal Kaynak Planlama (ERP: Enterprise
Resource Planning) ve Yönetim Kaynak Planlama (MRP: Management Resource
Planning) gibi uygulamalar›n gelifltirildi¤i y›llard›r. Oracle, SAP, PeopleSoft, Siebel
ve Baan gibi flirketlerin oluflturduklar› uygulamalar, veritaban› kavram›n›n da öte-
sine geçer ve kurumsal süreçlerin veritaban›yla bütünlefltirildi¤i sistemler haline
gelir. ERP yaz›l›mlar›, genel olarak, herhangi bir kuruluflun, finans, insan kaynak-
lar›, muhasebe, malzeme tedariki, üretim planlama, stok denetimi gibi faaliyetleri-
nin, bütünleflik bir sistem halinde yürütülmesini sa¤lar. Örne¤in, yap›lan bir sipa-
rifl durumunda, stok kontrol edilir, gerekli üretim planlan›r ve stokta olmad›¤› için
siparifl edilen malzemelerin tedarikinden sonra üretim gerçeklefltirilir. Her ad›m,
veritaban›nda bir dizi verinin sorgulanmas› ve sonuçlara göre yeni verilerin üretil-
mesine neden olur. Bütün faaliyetler, veritaban›nda depolanan veriler üzerinden
gerçeklefltirilir ve her ad›mda yöneticilere üretim maliyetleri, malzeme fiyatlar› gi-
bi bilgiler aktar›l›r.
1980 ve 1990’larda, veritaban› uygulamalar›, genellikle s›n›rl› say›da kullan›c›-
n›n kulland›¤› ve veritaban› üzerindeki yükün s›n›rland›r›labildi¤i sistemlerdi. Uygu-
lama yaz›l›mlar›, masaüstünde çal›flan programlard› ve sunucu/istemci mimarisinde
haz›rlanm›fllard›. 2000’li y›llara do¤ru web siteleri de veritaban› destekli çal›flmaya
bafllar. Web sayfalar›ndaki dinamik içerik veritaban›ndan getirilerek kullan›c›lara
1. Ünite - Veritaban› Uygulamalar› 9
sunulur. Ancak, ‹nternet, veritaban› yönetim sistemleri için zorlay›c› bir unsur ol-
mufltur. Ne kadar kullan›c›n›n web sitesine girece¤i ve dolay›s›yla veritaban› yöne-
tim sistemi üzerinde yarataca¤› yük önceden bilinememektedir. Web üzerinden ça-
l›flan ilk uygulamalar, afl›r› talep durumlar›nda duraklama ve yavafll›k yaflam›fllard›r.
e¤itim almak gerekebilir. Ayr›ca, veritaban› yönetim sisteminde gerçekleflen bir ha-
tada bütün uygulamalar durabilir.
Veri Modelleri
Veri modelleri, di¤er bir deyiflle verilerin birbirleriyle olan iliflkilerinin belirlenme-
si bilgisayar sistemlerinin ilk gelifltirildi¤i y›llardan itibaren gündemde olan bir ko-
nudur. ‹lk veri modellerinde, verileri depolamak için dosyalar kullan›l›rd›. Dosya
sistemi çerçevesinde, veri öbekleri ayr› dosyalarda depolan›r ve dosya dizinleri al-
t›nda yap›land›r›l›rd›. Verilerin tutuldu¤u dosyalar aras›ndaki iliflkilerin de¤erlendi-
rilmesi sürecinde kullan›lan araçlar bu amaçla haz›rlanan programlard›. Yaz›lan
program, aranan veriyi dosya içinde arar ve sonuçlar› kullan›c›ya gösterirdi. Dos-
yan›n yap›s› de¤ifltirildi¤inde ve yeni veri alanlar› eklendi¤inde, program›n yeni-
den düzenlenmesi gerekliydi.
Di¤er bir veritaban› modeli, verilerin hiyerarflik anlamda düzenlenmesini ge-
rektirir. Örne¤in, hiyerarflik olarak modellenmifl co¤rafi bilgi veritaban› örne¤i fie-
kil 5’te gösterilmektedir. Bir köyle ilgili bilgilere eriflmek için, ilk önce ülkesini, ar-
d›ndan ilini ve ilçesini bulmak gerekmektedir. Hiyerarflik düzende, köye iliflkin bil-
giye do¤rudan ulaflmak mümkün de¤ildir. Bu modelin en önemli özelli¤i, veriler
aras›nda birden-çok tipinde modellemeyi mümkün k›lmas›d›r. Örne¤in, bir ülke-
nin alt›nda birden fazla co¤rafi bölge olabilir. Bir ilçeye ba¤l› birden fazla köy bu-
lunabilir. Ancak, çoktan-çoka verilerde, hiyerarflik düzen çal›flmamaktad›r. Çoktan-
çoka verilere örnek olarak, bir kiflinin birden fazla derne¤e üye olmas› verilebilir.
12 Veritaban› Uygulamalar›
fiekil 1.5
Hiyerarflik Ülke
Veritaban› modeli
Bölge
‹l
‹lçe
rilen numaralara, birincil anahtar (primary key) ad› verilmektedir. Her kay›tta, dok-
torun ve hastalar›n eflsiz numaralar› ve randevu tarihi yer almaktad›r. Örne¤in, ilk
kay›tta doktor_no olarak görülen 1717, doktorlar tablosunda “Murat Aflc›”ya kar-
fl›l›k gelmekte, hastan›n da Ahmet Taflç› oldu¤u görülmektedir. Her kayda verilen
eflsiz numaralar üzerinden kurulan iliflkiler, iliflkisel veritaban›n›n temelini olufltur-
maktad›r (fiekil 10).
fiekil 1.10
randevu doktorlar ‹liflkisel veritaban›
örne¤i
hastalar
hasta_no: NUMBER
ad: VARCHAR
soyad: VARCHAR
boy: NUMBER
kilo: NUMBER
lili¤ini sa¤layabilir. Randevu tablosunda, bütün alanlar›n dolu olmas› di¤er bir ko-
fluldur. Örne¤in, randevu tablosundaki bir kay›tta hastan›n numaras›n›n olmamas›,
geçersiz bir kay›t oldu¤unu gösterir. Her hastan›n ve doktorun kay›t numaralar› efl-
siz olmal›d›r. Bir ya da daha fazla doktorun ayn› numaray› almas›, randevu tablo-
sunda s›k›nt› ç›karacak, randevunun gerçekten hangi doktordan al›nd›¤› bilinme-
yecektir. VTYS’leri, yeni bir kay›t eklenirken, bu ve benzeri durumlar› kontrol ede-
cek mekanizmalara sahiptir. Tablo, kullan›c› taraf›ndan VTYS üzerinde oluflturulur-
ken, hangi kolonda ne tür bir verinin beklendi¤i tan›mlanabilir. Eflsiz olmas› gere-
ken kolonlar, bofl olmamas› gereken alanlar›n hepsi, tablonun yarat›lmas› s›ras›n-
da tan›mlan›r ve VTYS konulan kurallar› tabloya yeni kay›t eklendi¤inde iflletir.
Geçersiz bir kay›t eklenmeye çal›fl›ld›¤›nda, kayd› eklemez ve kullan›c›ya hata me-
saj› döndürür.
Veritaban› yönetim sistemlerinin, sorgular› etkin ve h›zl› bir flekilde gerçeklefl-
tirmek için verilere eriflimi h›zland›rmas› için kullan›lan yönteme indeksleme ad›
verilir. ‹nsanlar da, veritaban› yönetim sistemleri gibi ellerindeki veriye eriflimi h›z-
land›rmak için çeflitli yöntemler kullan›l›rlar. Örne¤in, bir grup flehrin içinde baz›
flehirlerin nüfuslar›na gerek duyuluyorsa, yap›lacak en ak›lc› düzenleme, flehirleri
harf s›ras›na sokmakt›r. Bu flekilde, aranan flehrin nüfus bilgileri en h›zl› flekilde el-
de edilebilir.
N N
SIRA S‹ZDE SIRA S‹ZDE
AMAÇLARIMIZ AMAÇLARIMIZ
1. Ünite - Veritaban› Uygulamalar› 15
Özet
N
A M A Ç
‹liflkisel veritaban›n›n hangi uygulamalarda ya- N
A M A Ç
Bir veritaban›n› oluflturan temel bileflenleri liste-
1 rarl› oldu¤una karar verebileceksiniz. 3 leyebilecek ve iliflkisel veritaban› yönetim sistemi-
‹liflkisel veritaban› modeli, günümüzde kullan›- nin nas›l çal›flt›¤›n› aç›klayabileceksiniz.
lan bir çok veritaban› uygulamas›nda baflar›yla ‹liflkisel veritaban› sistemlerinde, veriler tablo ad›
kullan›lmaktad›r. Veri tekrar›n› engelleyecek fle- verilen yap›larda tutulur. Her tablo, farkl› say›da
kilde verilerin birbiriyle iliflkili tablolarda tutul- alandan veya di¤er bir deyiflle özellikten oluflur.
mas›, sorgu h›z›n› art›rmakta ve veritaban› per- Tabloya veri girilirken, alanlara karfl›l›k gelen de-
formans›n› yükseltmektedir. ¤erler, o alan›n veri tipinde girilerek kay›tlar olufltu-
N
rulur. Farkl› tablolar›n kolonlar› aras›ndaki iliflkiler,
‹liflkisel veritaban› uygulamalar›n› di¤er verita- iliflkisel veritaban›n›n en temel tasar›m özelli¤idir.
N
A M A Ç
Kendimizi S›nayal›m
1. Afla¤›dakilerden hangisi bir veritaban› yönetim siste- 6. Bir tabloda, her kayda verilen eflsiz numaralara ne
midir? ad verilir?
a. Microsoft Windows a. ‹ndeks
b. Excel b. Birincil anahtar
c. Oracle c. ‹liflki
d. Linux d. Hiyerarflik veri modeli
e. Unix e. Raporlama
2. Afla¤›dakilerden hangisi bir iliflkisel veritaban› yöne- 7. Çevrimiçi analitik ifllem (OLAP: Online Analytical
tim sisteminde yaflanabilecek sorunlardan biri de¤ildir? Processing) nedir?
a. Kullan›c› say›s›n›n s›n›rland›r›lamad›¤› durum- a. ‹liflkisel raporlama ve veri madencili¤ini içeren
larda, veritaban› yönetim sisteminin afl›r› yük- veritaban› uygulamas›d›r
lenmesi b. Veritaban› içinde yer alan ba¤›ms›z veri öbekle-
b. Tablolar aras›nda yaflanabilecek verilerin tutars›z rinin incelenerek yeni bir veritaban› tasar›m› ge-
lmas›o
lifltirilmesi sürecidir.
c. Metin üzerinde arama yapt›r›lmas›
c. Düzensiz ve büyük miktardaki veriyi bir araya
d. Tablolardaki eriflim yetkilerindeki s›k›nt›lar›n gü-
getiren veritaban› uygulamas›d›r.
venlik sorunlar› yaflatmas›
e. Tablolar›n ilgili kolonlar›nda indeksleme yap›la- d. Verilerin tutarl›l›¤›n› analitik flekilde çözen yön-
mamas› temdir.
e. Bir kuruluflun bütün verisini tutan veritaban› uy-
3. PostgreSQL Veritaban› yönetim sisteminde kullan›- gulamas›d›r.
lan dördüncü nesil programlama dili afla¤›dakilerden
hangisidir? 8. Afla¤›dakilerden hangisi, büyük miktarda veri bulu-
a. C# nan bir veritaban› sunucusundaki veritaban› eriflim h›-
b. PL/pgSQL z›n› art›rmaz?
c. PL/SQL a. Sisteme daha h›zl› sabit diskler takmak
d. Pyton b. Veritaban›n›n bir kopyas›n› alarak di¤er bir sis-
e. Visual Basic teme ayn› verileri yüklemek
c. Sunucudaki merkezi ifllemci birimi say›s›n› art›r-
4. Hiyerarflik veritaban› modelinin kullan›lamad›¤› du- mak
rum afla¤›dakilerden hangisidir? d. Bellek miktar›n› art›rmak
a. Tablolar aras›nda çoktan-çoka iliflki olmas› e. A¤a ba¤lanmak için kullan›lan bak›r kabloyu b›-
b. ‹ndeksleme yap›lmak istenmesi rakarak fiber optik kalo takmak
c. Dosya sisteminin verileri depolamaya müsait ol-
mamas› 9. Veri ambar› nedir?
d. Tablodaki kolonlar›n say›s›n›n çok büyük olmas› a. Tarihsel içerikli verileri depolayan veri merkez-
e. Veri miktar›n›n küçük olmas› leridir.
b. Çok say›da bilgisayar›n bulundu¤u merkezlerdir.
5. Veritaban› indeksleme nedir? c. Büyük depolama kapasitesine sahip bilgisayar
a. Veritaban›nda yap›lan sorgulamalar› h›zland›ran a¤lar›d›r.
bir yöntemdir. d. Da¤›t›k depolama birimidir.
b. Veritaban›nda yer alan tablolar› tek bir tablo ha- e. Üzerinde ayn› anda birden fazla say›da VTYS
linde getirme ifllemidir. çal›flt›r›lan bilgisayarlar›n oluflturdu¤u yap›d›r.
c. Yedekleme yapmakt›r.
d. Veritaban›n› da¤›t›k hale getirme sürecidir.
e. Veritaban›na yeni kay›t ekleme süresini azaltan
bir yöntemdir.
18 Veritaban› Uygulamalar›
Yararlan›lan ve Baflvurulabilecek
Kaynaklar
Raghu Ramakrisnan, Johannes Gehrke, “Database Ma-
nagement Systems”, ‹kinci bask›.
P. Revesz (2010). Introduction to Databases. New
York: Springer.
L. Liu and T. Ozsu (2009). Encyclopedia of database
systems, 1st ed. New York: Springer.
R. Ramakrishnan and J. Gehrke, 2003. Database mana-
gement systems, 3rd ed. Boston: McGraw-Hill.
J. Erickson, (2009). Database technologies: concepts,
methodologies, tools, and applications. Hers-
hey, PA: Information Science Reference.
PostgreSQL web sitesi: http://www.postgresql.org/
Wikipedia web sitesi: http://www.wikipedia.org/Data-
base/
2
VER‹TABANI UYGULAMALARI
Amaçlar›m›z
N
Bu üniteyi tamamlad›ktan sonra;
N
PostgreSQL yaz›l›m›n› herhangi bir bilgisayara kurabileceksiniz.
PostgreSQL yaz›l›m›yla birlikte gelen ek yaz›l›mlar›n neler oldu¤unu
N
listeleyebileceksiniz.
PostgreSQL kurulumuyla birlikte Bafllat menüsüne eklenen programlar›n
neler oldu¤unu aç›klayabileceksiniz.
Anahtar Kavramlar
• PostgreSQL • Veritaban› sürücüleri
• Kurulum dosyas› • PostGIS
• Dil kodlar›
‹çerik Haritas›
• G‹R‹fi
• POSTGRESQL KURULUM
DOSYASININ ‹ND‹R‹LMES‹
Veritaban› PostgreSQL
Kurulumu • POSTGRESQL YAZILIMININ
Uygulamalar›
KURULUMU
• POSTGRESQL YARDIMCI
PROGRAMLARIN KURULUMU
PostgreSQL Kurulumu
G‹R‹fi
PostgreSQL aç›k kaynak kodlu bir iliflkisel veritaban› yönetim yaz›l›m›d›r. 1982
y›l›ndan beri gelifltirilmekte olan yaz›l›m, yayg›n olarak kullan›lmakta olan Win-
dows, Linux ve Unix iflletim sistemlerini desteklemektedir. PostgreSQL yaz›l›m›, ti-
cari veya ticari olmayan ürünlerde kullan›lmas›nda bir sak›nca olmad›¤›n› belirten
BSD lisans›yla birlikte gelmektedir. BSD lisans›yla ilgili ayr›nt›l› bilgiler http://tr.par-
dus-wiki.org/BSD_Lisans› adresinden al›nabilir. Yaz›l›m›n ücretsiz olmas›, ticari ya-
z›l›mlar kadar h›zl› çal›flmas› ve kullan›m kolayl›¤› gibi özellikleri nedeniyle, bu ki-
tapta PostgreSQL yaz›l›m› kullan›lm›flt›r. Yer alan örneklerin ve al›flt›rmalar›n tama-
m›, PostgreSQL v8.4 yaz›l›m› üzerinde denenmifl ve çal›flt›r›lm›flt›r. Bundan sonra-
ki sürümlerde de, burada verilen örneklerin sorunsuz çal›flmas› beklenmelidir. Bu
ünitenin konusunu, PostgreSQL yaz›l›m›n›n kurulumu ve yönetim yaz›l›m› üzerin-
de gerçeklefltirilen temel veritaban› ifllemleri oluflturmaktad›r.
N N
SIRA S‹ZDE SIRA S‹ZDE
AMAÇLARIMIZ AMAÇLARIMIZ
K ‹ T A P K ‹ T A P
TELEV‹ZYON TELEV‹ZYON
SIRA S‹ZDE SIRA S‹ZDE
D Ü fi Ü N E L ‹ M D Ü fi Ü N E L ‹ M
22 Veritaban› Uygulamalar›
S O R U S O R U
N N
SIRA S‹ZDE SIRA S‹ZDE
POSTGRESQL YAZILIMININ KURULUMU
Kurulum dosyas› indirildikten sonra dosyan›n üzerine çift t›klayarak kurulum
AMAÇLARIMIZ ifllemi bafllat›l›r. E¤er iflletim sistemi olarak Windows Vista veya Windows 7 kulla-
AMAÇLARIMIZ
n›l›yorsa sistem sizden yetkilendirme isteyecektir (fiekil 1). E¤er kurulumun yap›-
laca¤› bilgisayarda yönetici yetkisine sahip de¤ilseniz sistem yöneticisiyle iletiflime
K ‹ T A P geçerek kuruluma
K ‹ T A Pdevam edebilirsiniz (fiekil 2).
fiekil 2.1
T E LPostgreSQL
EV‹ZYON TELEV‹ZYON
Kurulumu:
Yetkilendirme izin
ekran›.
‹NTERNET ‹NTERNET
fiekil 2.2
PostgreSQL
Kurulumu:
kurulum bafllangݍ
ekran›.
2. ÜniteSIRA S‹ZDE
- PostgreSQL Kurulumu SIRA S‹ZDE
23
N N
SIRA S‹ZDE SIRA S‹ZDE
ni “C:\PostgreSql\8.4\data” olarak de¤ifltirmelisiniz.
fiekil 2.3
AMAÇLARIMIZ AMAÇLARIMIZ
PostgreSQL
Kurulumu: Dizin
seçim ekran›.
K ‹ T A P K ‹ T A P
TELEV‹ZYON TELEV‹ZYON
‹NTERNET ‹NTERNET
fiekil 2.4
PostgreSQL
Kurulumu: Dizin
seçim ekran›.
24 Veritaban› Uygulamalar›
Dizin seçim ekran›ndan sonra kurulum sihirbaz› veritaban› kullan›c› flifresi iste-
yecektir (fiekil 5). PostgreSQL veritaban› yaz›l›m› çal›flma an›nda otomatik olarak
“postgres” kullan›c› ad›n› ve hesab›n› kullanmaktad›r. PostgreSQL veritaban› kulla-
n›c›s› yani postgres hesab› e¤er sistemde daha önceden tan›mlanm›flsa, bu hesaba
ait flifre girilmelidir.
fiekil 2.5
PostgreSQL
Kurulumu:
Kullan›c› ad› ve
flifre belirleme.
D Ü fi Ü N E L ‹ M D Ü fi Ü N E L ‹ M
D Ü fi Ü N E L ‹ M D Ü fi Ü N E L ‹ M
D‹KKAT Girilen flifreyiD ‹unutmamak
KKAT için bir yere yaz›n›z. Ezberledikten sonra, flifrenin yaz›l› oldu-
¤u ka¤›d› imha ediniz. Veritaban›n›n flifresini bilen herkesin verileri silebilece¤i ve yetki-
S O R U S O R U
siz flekilde de¤ifltirebilece¤ini unutmay›n›z.
N N
SIRA S‹ZDE SIRA S‹ZDE
N N
SIRA S‹ZDE SIRA S‹ZDE
melerden birinin seçilmesinden kaç›n›lmal›d›r. Örne¤in, “merhaba”, “123” veya “999999”
K ‹ T A P gibi flifrelerKkolay
‹ T Atahmin
P edilebilece¤inden, veritaban› yöneticileri için güvenlik sorunla-
AMAÇLARIMIZ r› ç›karabilir.
AMAÇLARIMIZ
TELEV‹ZYON T E L E Vsistemleri
Veritaban› ‹ZYON genellikle kurulu oldu¤u sunucu bilgisayar›n d›fl›ndaki
K ‹ T A P K ‹ T Agelecek
uygulamalardan P isteklere cevap verecek flekilde tasarlanm›fllard›r. Bu
günümüzde en yayg›n biçimde kullan›lan sistem olan sunucu istemci mimari ya-
‹NTERNET p›s›d›r. Genellikle
‹ N T E R N E Tgünümüzde, bu mimarinin uygulamas› olarak, veritaban› su-
TELEV‹ZYON T E Lbir
nucusu ayr› E V ‹bilgisayarda
ZYON çal›flmakta ve istemciler a¤ üzerinden sunucuya erifl-
mektedir. Bu yap›n›n kullan›lmas›yla h›z, güvenlik ve güvenilirlik artt›r›lm›fl
olur. Burada unutulmamas› gereken konu, sistemi d›flar›dan gelen ba¤lant›lara
açman›n avantaj sa¤lamas›n›n yan›nda baz› güvenlik tehlikelerini de beraberin-
‹NTERNET ‹NTERNET
de getirmesidir. Sistemin güvenli ve sorunsuz bir flekilde çal›flmaya devam etme-
si için gerekli a¤ ayarlar› yap›lmal› ve bir güvenlik sistemi kurulmal›d›r. ‹flletim
sisteminin ve antivirus yaz›l›m›n›n güncellemeleri sürekli olarak yap›lmal›, sis-
tem kararl›l›¤› s›k s›k incelenmelidir.
SIRA S‹ZDE SIRA S‹ZDE
D Ü fi Ü N E L ‹ M D Ü fi Ü N E L ‹ M
N N
SIRA S‹ZDE SIRA S‹ZDE
Veritaban› sisteminin kurulu oldu¤u sistemin d›fl›ndan gelecek ba¤lant›lar› ka-
bul edece¤i port numaras›n› seçme aflamas› fiekil 6’te görülmektedir. Burada var-
say›lan port numaras› kullan›labilece¤i gibi sald›r›lara karfl› AMAÇLARIMIZ
güvenli¤i biraz daha AMAÇLARIMIZ
artt›rmak için farkl› bir port numaras› da verilebilir. Zararl› yaz›l›mlar ve bilgisayar
korsanlar›, varsay›lan portlara sald›rmay› tercih etmektedir.
K ‹ T A P K ‹ T A P
fiekil 2.6
PostgreSQL
TELEV‹ZYON Kurulumu: T E Uzak
LEV‹ZYON
ba¤lant›lar için
port belirleme.
‹NTERNET ‹NTERNET
fiekil 2.7
PostgreSQL
Kurulumu: Dil
kodu seçimi.
D Ü fi Ü N E L ‹ M D Ü fi Ü N E L ‹ M
S O R U S O R U
N N
SIRA S‹ZDE SIRA S‹ZDE
Oracle ve IBM DB2 gibi veritaban› yönetim sistemlerinde oldu¤u gibi Post-
greSQL sisteminde de dördüncü nesil programlama deste¤i bulunmaktad›r. Post-
AMAÇLARIMIZ greSQL için haz›rlanm›fl olan PL/pgSQL dilini kullanarak veritaban› yönetim siste-
AMAÇLARIMIZ
mi içinde çal›flacak programlar yazmak mümkündür. Bu programlar yordamsal
SQL komutlar›n› çal›flt›rarak sonuçlar›n› tek bir seferde döndürürler. Böylece, uzak-
K ‹ T A P ta bulunanKbir ‹ Tistemcinin,
A P defalarca sorgulama yaparak uzun bir sürede ulaflabile-
ce¤i sonuca daha k›sa bir sürede ulaflmas› sa¤lan›r. Veritaban› örneklerinde kulla-
n›lacak olan flablona PL/pgSQL eklemek için dil seçimi ekran›nda “Install pl/pgsql
TELEV‹ZYON in template1
T E L Edatabase”
V‹ZYON iflaret kutusu iflaretlenmelidir. Bu seçim yap›ld›ktan sonra
template1’in flablon olarak kullan›lmas›yla oluflturulan veritabanlar›nda PL/pgSQL
deste¤i bulunur.
Son ekran seçimler bittikten sonra kuruluma bafllamadan önceki ekrand›r. E¤er
‹NTERNET ‹NTERNET
flimdiye kadar yap›lan seçimlerde bir de¤ifliklik yap›lmas› gerekiyorsa “Back” (ge-
ri) dü¤mesiyle önceki ekranlara dönülebilir ve kurulum parametreleriyle ilgili iste-
nilen de¤ifliklikler gerçeklefltirilebilir. “Cancel” (iptal) tuflu ise kurulumu iptal ede-
cektir. Son olarak “Next” (ileri) tufluna bast›¤›n›zda kurulum bafllayacakt›r. Post-
greSQL yaz›l›m›n›n kurulumu bilgisayar›n›z›n h›z›na göre 2 ile 10 dakika aras›nda
sürebilir (fiekil 8).
2. Ünite - PostgreSQL Kurulumu 27
fiekil 2.8
PostgreSQL
Kurulumu:
Kurulum
bafllamadan önceki
son ekran.
Veritaban› yönetim sistemini verimli olarak kullanabilmek için bir tak›m ek uy-
gulamalar›n kurulmas› gerekebilir. Kurulum bittikten sonra gelen “Completing the
PostgreSQL Setup Wizard” ekran›nda bu yaz›l›mlar› kurmak için kullan›lan “Appli-
cation Stack Builder” program›n›n hemen çal›flt›r›lmas›n›n istenip istenmedi¤i so-
rulmaktad›r. ‹ste¤e göre “Application Stack Builder” program›, ilgili iflaret kutucu-
¤undan iflaret kald›r›larak daha sonra da çal›flt›r›labilir. Böylece kurulum baflar›yla
tamamlanm›fl olur. Art›k, PostgreSQL veritaban› yönetim sistemiyle birlikte gelen
yaz›l›mlara, iflletim sisteminin BAfiLAT menüsünden eriflilebilmektedir (fiekil 9).
Menü, iflletim istemine göre farkl›l›k gösterse de içerik olarak bir farkl›l›k bulunma-
maktad›r. Menü içerisindeki program k›sa yollar›n› incelersek;
• Application Stack Builder: Veritaban› yaz›l›m›na ek olarak kullan›lan prog-
ramlar›n kurulmas›na yarar. Bu yaz›l›mlar›n baz›lar› ücretsiz olabildi¤i gibi,
baz›lar› da ticari ürünler olarak ücretlidir.
• pgAdmin III: Veritaban› yaz›l›m›n›n yönetimle ilgili görsel ara yüzüdür. Prog-
ram üzerinden, yeni veritaban› yaratabilir ve var olan veritabanlar›na yeni
tablolar ekleyebilir. Veritaban› yönetim sistemiyle ilgili pek çok ifli gerçek-
lefltirebilir.
• Reload Configuration: Veritaban› yap›land›rmas›nda yap›lan de¤iflikliklerin
veritaban›n› durdurup tekrar bafllatmadan yüklenmesini sa¤lar.
• Restart Server: Veritaban›n› durdurup yeniden bafllat›r.
• SQL Shell (psql): Veritaban› komutlar›n›n el ile girilip çal›flt›r›laca¤› bir ko-
mut sat›r› penceresi açar. Veritaban› ba¤lant›s› ve program parçalar›n›n ya-
z›lmas› bu komut penceresinde gerçeklefltirilebilir.
• Start Server: Durdurulmufl olan veritaban›n› bafllat›r.
• Stop Server: Çal›flmakta olan veritaban›n› durdurur.
• Documentation: Veritaban› ile ilgili kurulum, yönetim ve iflletim bilgilerini
içeren dokümanlar› içerir.
SIRA S‹ZDE SIRA S‹ZDE
D Ü fi Ü N E L ‹ M D Ü fi Ü N E L ‹ M
28 Veritaban› Uygulamalar›
S O R U S O R U
N N
SIRA S‹ZDE S‹ZDE
fiekil 2.9
Bafllat
AMAÇLARIMIZ AMAÇLARIMIZ
menüsündeki
PostgreSQL dizini
K ‹ T A P K ‹ T A P
TELEV‹ZYON TELEV‹ZYON
‹NTERNET ‹NTERNET
D Ü fi Ü N E L ‹ M D Ü fi Ü N E L ‹ M
S O R U S O R U
D‹KKAT D ‹ K K A TSistemi canl› bir sistem oldu¤u için, di¤er kullan›c›lara haber verme-
Veritaban› Yönetim
den durdurmak veya yeniden bafllatmak beklenmeyen sonuçlar verebilir. O an sistemde ça-
N N
SIRA S‹ZDE l›flt›r›lmaktaSIRA
olanS‹ZDE
komutlar yar›da kalaca¤›ndan, durdurup bafllatma an›nda sistem istek-
lere cevap vermeyecektir. Bu anda istemciler taraf›ndan yap›lan istekler hata mesaj› alacak
ve büyük olas›l›kla uygulama programlar› çal›flmamaya bafllayacakt›r. Çal›flmakta olan ve-
AMAÇLARIMIZ AMAÇLARIMIZve yeniden bafllatmak için bir zaman aral›¤› belirlenmeli ve bu bilgi
ritaban›n› durdurmak
kullan›c›lara bildirilmelidir.
K ‹ T A P K ‹ T A P
POSTGRESQL YARDIMCI PROGRAMLARIN
KURULUMU
Veritaban› yard›mc› programlar›n›n kurulumu “Bafllat” menüsünden “Application
TELEV‹ZYON TELEV‹ZYON
Stack Builder” seçilerek bafllat›l›r. E¤er Windows Vista veya Windows 7 iflletim sis-
temlerinden birini kullan›yorsan›z, bu program› farenin sa¤ tufluna basarak aç›lan
ekrandan “Yönetici olarak çal›flt›r” sekmesini seçerek çal›flt›rman›z gereklidir. Aç›-
‹NTERNET lan ekranda ‹ N Tek
E R programlar›n
NET hangi yaz›l›m için kurulaca¤› seçilecektir. fiu an itiba-
riyle veritaban› yönetim yaz›l›m› kurulmufl oldu¤u için “5432 portu üzerinde Post-
greSQL 8.4” seçilmelidir. Kurulum ifllemini gerçeklefltirmek için bilgisayar›n›z ‹n-
ternet’e ba¤l› olmal›d›r.
2. Ünite - PostgreSQL Kurulumu 29
E¤er ‹nternet’e bir vekil (proxy) sunucusu üzerinden ç›k›yorsan›z, vekil sunucu
bilgileri bu aflamada girilmelidir (fiekil 10).
fiekil 2.10
“Application Stack
Builder” ara yüzü.
fiekil 2.12
Eklenti programlar›
indirmek için
yans›ma sunucusu
seçimi.
fiekil 13’teki kurulum özet ekran›nda yap›lan seçimler son kez kullan›c›ya özet-
lenir. E¤er kurulacak program›n ve eklentilerinin seçiminde bir de¤ifliklik yap›lma-
s› gerekiyorsa “Geri” tufluna bas›larak önceki ekranlara dönülebilir. E¤er istenilen
program ve eklerinin seçimi do¤ruysa, bundan sonraki aflamada ‹nternet’ten indi-
rilecek kurulum dosyalar›n›n geçici olarak saklanaca¤› klasörün seçimi yap›l›r.
32 Veritaban› Uygulamalar›
fiekil 2.13
PostgreSQL
Kurulumu: Eklenti
programlar›
kurulumu öncesi
özet ekran›.
fiekil 2.14
PostgreSQL
Kurulumu: Son
kullan›c› sözleflme
ekran›.
fiekil 2.15
PostgreSQL
Kurulumu: Eklenti
pr›gramlar›n›n
kurulum sonuç
ekran›
fiekil 2.16
Bafllat
menüsündeki
PostgreSQL
eklentileri
2. Ünite - PostgreSQL Kurulumu 35
Özet
N
A M A Ç
PostgreSQL yaz›l›m›n› herhangi bir bilgisayara N
A M A Ç
PostgreSQL kurulumuyla birlikte Bafllat menüsü-
1 kurabileceksiniz. 3 ne eklenen programlar›n neler oldu¤unu aç›kla-
PostgreSQL’in bir bilgisayara kurulumu, yabileceksiniz.
www.postgresql.org adresinden kurulum yaz›l›- PostgreSQL yaz›l›m› kurulduktan sonra, Bafllat
m›n›n istenen iflletim sistemi için en son sürümü menüsüne çeflitli programlar›n linkleri kurulmak-
indirilerek bafllat›labilir. Bu kitaptaki örnekler ve tad›r. “Start Server” ve “Stop Server” programlar›,
uygulamalar, PostgreSQL 8.4.4 sürümü kullan›la- veritaban›nda tutars›zl›k olmamas› için, büyük
rak haz›rlanmas›na ra¤men, gelecekte ç›kmas› de¤ifliklikler öncesinde sunucuyu kapatmak ve
muhtemel sürümlerde sorun ç›karmadan çal›fla- sonras›nda açmak için kullan›l›r. ApachePHP ve
bilecektir. phpPgAdmin yaz›l›mlar›, web sunucusu kurmak
ve gerekirse PostgreSQL veritaban› yönetim sis-
N
A M A Ç
PostgreSQL yaz›l›m›yla birlikte gelen ek yaz›l›m- temini web üzerinden yönetmek için kullan›l›r.
2 lar›n neler oldu¤unu listeleyebileceksiniz.
PostgreSQL, pek çok farkl› amaç için kullan›labi-
lece¤inden, farkl› yükleme modellerini de des-
tekler. Web uygulamalar› için, web sunucusunu
kurarken, co¤rafi bilgi sistemleri için PostGIS op-
siyonunu da kurulum bileflenlerinde kullan›c›ya
sunar.
36 Veritaban› Uygulamalar›
Kendimizi S›nayal›m
1. PostgreSQL yaz›l›m›n›n kurulumu s›ras›nda, varsay›- 6. PostgreSQL yaz›l›m›n›n web üzerinden yönetilmesi-
lan olarak gelen yönetici ismi afla¤›dakilerden hangisidir? ni sa¤layan yaz›l›m afla¤›dakilerden hangisidir?
a. postgres a. ApachePHP
b. admin b. phpPgAdmin
c. root c. psqlODBC
d. Administrator d. phpBB
e. Noone e. PostGIS
2. PostgreSQL’in TCP ba¤lant› port numaras› afla¤›daki- 7. “Stop Server” ve “Start Server” komutlar›n›n ifllevi
lerden hangisidir? nedir?
a. 21 a. Bilgisayar sistemine elektrik verildi¤i zaman
b. 80 PostgresSQL VTYS’ini çal›flt›rmak, bilgisayar ka-
c. 113 pat›lmadan önce de VTYS’ini kapatmak
d. 8080 b. Bilgisayar›n iflletim sistemini kapatmak ve açmak
e. 5432 c. Yönetim yaz›l›m›n›n yetkisiz kiflilerce farkedil-
meden kullan›lmas›n› engellemek ve kontrollü
3. Afla¤›dakilerden hangisi PostgreSQL sisteminin yö- flekilde tekrar çal›flt›rabilmek
netim program› afla¤›dakilerden hangisidir? d. Veritaban› yap›s›nda de¤ifliklikler olaca¤›nda su-
a. pgAdminIII nucuyu eriflime kapatmak ve ifllem bitti¤inde ye-
b. Drupal niden bafllatabilmek
c. Apache e. VTYS’i çal›flmaz hale geldi¤inde kapatmak ve
d. PHPBB yeniden açmak
e. MySQL Migration Wizard
8. PostgreSQL kurulumu bittikten sonra, ek yaz›l›mlar›n
4. PostGIS nedir? kurulabilmesini sa¤layan program afla¤›dakilerden han-
a. PostgreSQL yaz›l›m›n›n co¤rafi nesneleri depo- gisidir?
lamas› için kullan›lan ektir. a. Application Stack Builder
b. Co¤rafi bilgi sistemidir. b. phpBB
c. PostgreSQL yaz›l›m›n›n ayarlar›n› yapan yöne- c. Start Server
tim modülüdür. d. psqlODBC
d. PostgreSQL’in e-Posta uygulamalar›nda kullan›l- e. pgAdmin
mas›n› sa¤layan ek yaz›l›md›r.
e. Aç›k kaynak kodlu yedekleme sistemidir. 9. mediaWiki nedir?
a. Wikipedia sitesinin de kulland›¤› yaz›l›md›r.
5. Veritaban› yönetim yaz›l›m›nda kullan›lan yönetici b. Resim ve videolar›n izlenebildi¤i YouTube ben-
flifrelerinin sa¤lam olabilmesi için afla¤›dakilerden han- zeri bir arayüz sunan yaz›l›md›r.
gisi yap›lmal›d›r? c. Çevrimiçi ansiklopedi yaz›l›m›d›r.
a. Alfanümerik ve noktalama iflaretlerinin birlefli- d. Resim ve videolar›n depolanmas›n› sa¤layan ar-
minden oluflmal›d›r. fliv yaz›l›m›d›r.
b. En az yirmi adet nümerik karakterden türetilme- e. Çevrimiçi harita sistemidir.
lidir.
c. ‹flletim sisteminin Administrator flifresiyle ayn› 10. PostgreSQL kurulumu s›ras›nda yüklenebilen
olmal›d›r. phpBB eklentisinin ifllevi nedir?
d. Sistemde yer alan her veritaban› için ayr› flifre a. Forum sitesi oluflturabilmek
kullan›lmal›d›r. b. Çevrimiçi içerik yönetim sistemi kurabilmek
e. fiifre oluflturulurken, baflka bir kiflinin görmeme- c. Web üzerinden baz› veritaban› komutlar›n› gön-
sine dikkat edilmelidir. dermeyi sa¤lamak
d. Yedekleme sistemi kurmak
e. Co¤rafi modelleri veritaban›nda kullanabilmek
2. Ünite - PostgreSQL Kurulumu 37
Amaçlar›m›z
N
Bu üniteyi tamamlad›ktan sonra;
PostgreSQL’in yönetim paneli olan pgAdmin program›nda sa¤lanan özellik-
N
leri kullanabileceksiniz.
Herhangi bir veritaban› yönetim sistemiyle birlikte gelen yönetim yaz›l›m›n-
N
daki özellikleri kullanabileceksiniz.
Yönetim program› üzerinden yeni bir veritaban›, veritaban› içine yeni tablo-
N
lar, tablolara yeni kolonlar (alan) ekleyebileceksiniz.
Veritaban› sunucusunda yap›labilecek bak›m ifllemlerini gerçeklefltirebile-
N
ceksiniz.
Veritaban›n›n tamam›n› veya bir k›sm›n› yedekleyebilecek, yedeklerden ve-
N
ritaban›n› yeniden oluflturabileceksiniz.
Veritaban›yla ilgili çeflitli raporlar› oluflturabileceksiniz.
Anahtar Kavramlar
• iliflkisel veritaban› yönetim • veritaban› yedekleme
sistemi • veritaban› kopyalama
• PostgreSQL • veritaban›nda raporlama
• pgAdmin
‹çerik Haritas›
• G‹R‹fi
• pgAdmin III PROGRAMINA GENEL
BAKIfi
• YEN‹ VER‹TABANI OLUfiTURMA
Veritaban› Veritaban› • TABLO OLUfiTURMA
Uygulamalar› Yönetimi • PostgreSQL SUNUCU DURUMU
‹NCELEME
• SUNUCU BAKIMI
• VER‹TABANI YEDEKLEME
• RAPORLAMA
Veritaban› Yönetimi
G‹R‹fi
Her sistem gibi veritaban› yönetim yaz›l›m›n›n da sa¤l›kl› çal›flabilmesi için sürekli
olarak bak›ma ihtiyac› vard›r. Sistemde oluflan ufak sorunlar ve sorgularda yaflanan
yavafll›k daha ciddi problemlerin habercisi olabilir. Bu nedenle veritaban› sistemi
düzenli olarak kontrol edilmeli, sa¤l›kl› çal›flmaya devam etmesi için gerekli prog-
ramlar ve komutlar çal›flt›r›lmal›d›r. PostgreSQL ve di¤er bütün veritaban› yönetim
sistemlerinde, kontrol ve denetim amac›yla kullan›c›lara sunulan yönetim modül-
leri bulunmaktad›r. PostgreSQL yaz›l›m›nda, yönetim iflleriyle ilgili olarak pgAdmin
program› bulunur. PgAdmin program›n›n sa¤lad›¤› hizmetlerden baz›lar› flöyledir:
• Yeni veritaban› oluflturma
• Varolan veritaban›na yeni tablolar ekleme
• Tablolarda indeks oluflturma
• Veritabanlar›n›n yedeklenmesi
• Yedeklerden veritaban›n›n yeniden yüklenmesi
• Dosya sisteminde gerçekleflen ve yavafll›k yaratan sorunlar nedeniyle, veri-
taban› dosyalar›ndaki hatalar› onarma
• Veritaban›n›n di¤er bir sunucuya kopyas›n›n al›nmas›
• SQL komutlar›n›n çal›flt›r›lmas›
• PL/pgSQL dilinde yaz›lan program parçalar›n›n çal›flt›r›lmas›
Veritaban› yaz›l›m›n›n üzerinde bulundu¤u donan›m›n veya iflletim sisteminin
bozulmas› durumunda, sistem belirli bir noktadan itibaren tekrar çal›flabilir durum-
da olmal›d›r. Bu tip bir sorun an›nda belirli bir noktaya dönebilmek için sistem ya-
p›land›rmas› ve veritaban› tablolar›ndaki verilerin yedeklerinin al›nmas› gereklidir.
Veritaban› sistemlerinde bak›m, yedekleme ve sistemi yedeklendi¤i ana geri dön-
dürmek için araçlar bulunmaktad›r. Bu ünitede PostgreSQL veritaban› yaz›l›m›n›
yönetmek ve sa¤l›kl› çal›flmas›n› sa¤lamak için kullan›lacak araçlar ve yöntemler
üzerinde durulacakt›r.
rak yapmas› gereken ifllemleri görsel bir ara yüz üzerinden gerçeklefltirmesine ola-
nak verir. Fare yard›m›yla ekranda yap›lan ifllemler pgAdmin taraf›ndan SQL ko-
mutlar›na çevrilerek çal›flt›r›l›r.
pgAdmin üzerinden, sadece yerel bilgisayarda de¤il a¤ üzerinden eriflilebilecek
bilgisayarlardaki PostgreSQL veritaban› sunucular›na da ba¤lant› kurulabilir. Sunu-
cular›n farkl› bir donan›m mimarisine veya iflletim sistemine sahip olmas› sorun de-
¤ildir. pgAdmin program› PostgreSQL veritaban› üzerinde yap›labilecek tüm ifllem-
lerin yap›labilmesini sa¤lar. Ayr›ca kullan›c› kendi yazd›¤› SQL sorgular›n› pgAd-
min üzerinden çal›flt›rabilir.
pgAdmin program›n› açmak için Bafllat menüsünden Programlar seçilerek Post-
greSQL 8.4 sekmesi alt›ndaki pgAdmin eleman› seçilir (fiekil 1). Daha rahat bir eri-
flim için PostgreSQL yard›mc› programlar›ndan s›k kullan›lanlar›n›n görev çubu¤u-
na veya masaüstüne k›sa yollar› konulmal›d›r. Bu sayede s›k kullan›lan bu prog-
ramlara daha h›zl› bir eriflim sa¤lanm›fl olur.
pgAdmin program› bafllat›l-
fiekil 3.1 d›¤›nda henüz herhangi bir ve-
pgAdmin: Program› ritaban›na ba¤lant› yap›lmad›¤›
bafllatma için bofl bir ekranla karfl›lafl›l›r.
Ekran üzerinde üç ayr› bölüm
bulunmaktad›r (fiekil 2). Bun-
lardan ilki sol k›s›mda bulunan
nesne izleme (Object Browser)
bölümüdür. Bu ekranda verita-
ban› sistemi içerisindeki nes-
neler listelenmektedir. Bu nes-
nelerle ilgili ayr›nt›l› bilgiler ise
ekran›n sa¤ k›sm›nda gösteri-
lir. ‹ncelenmek istenilen nes-
nenin türüne göre Özellikler
(Properties) sekmesinin yan›n-
da ‹statistikler (Statistics), Ba-
¤›ml›l›klar (Dependencies) ve Ba¤›ml›lar (Dependents) sekmelerinden bilgiler al›-
nabilir. pgAdmin arayüzü üzerinden yap›lacak olan ifllemlerin SQL dilindeki karfl›-
l›klar› ana ekran›n alt k›sm›ndaki SQL panosunda (SQL Pane) görüntülenmektedir.
Burada gösterilen SQL cümlecikleri kopyalanabilir, gerekirse kay›t edilebilir veya
de¤ifltirilip daha sonra çal›flt›rabilir.
3. Ünite - Veritaban› Yönetimi 41
fiekil 3.2
pgAdmin: Aç›l›fl
ekran›.
fiekil 3.3
PostgreSQL
veritaban›na
ba¤lanma.
Yönetici flifresi do¤ru olarak girilirse, fiekil 3’teki gibi Nesne tarama ekran› içe-
risinde veritabanlar› (Databases), tablo alanlar› (Tablespaces), grup rolleri (Group
Roles) ve Kullan›c› girifl rolleri (Login Roles) dü¤ümleri listelenir. Listelenen nesne-
ler veritaban› sisteminin temel bileflenleridir.
Veritabanlar› (Databases): Bir PostgreSQL veritaban› içerisinde birden fazla
veritaban› örne¤i bulunabilir. Örne¤in, bir flirkette bir veritaban› stok bilgileri için
kurulurken, bir di¤eri personel verileri için oluflturulabilir. pgAdmin ayn› veritaba-
n› sunucusu alt›ndaki farkl› veritaban› örneklerini kullan›c›ya bir arada gösterebil-
mektedir.
Tablo Alanlar› (Tablespaces): Veritaban› içerisinde saklanacak olan verilerin
fiziksel olarak sistemdeki bir disk sürücü üzerinde belirli bir klasör yap›s› alt›nda
dosyalar halinde bulunmas› gerekmektedir. Bu dosyalar›n dosya sisteminde nere-
de bulunaca¤› tablo alanlar› taraf›ndan belirlenir. Sistem ilk defa çal›flmaya baflla-
d›¤›nda varsay›lan tablo alan› kurulum aflamas›nda seçilen klasörü kullan›r. Farkl›
veritaban› örnekleri veya ayn› veritaban› örne¤i içerisindeki farkl› veritaban› nes-
neleri farkl› tablo alanlar›n› kullanabilir. Veritaban› yöneticileri sistemi daha verim-
li bir hale getirmek için, veritaban› dosyalar›n›n farkl› alanlarda tutulmas›na özen
göstermektedir.
Sisteme yeni bir tablo alan› eklemek için tablo alanlar› dü¤ümüne sa¤ tuflla ba-
sarak Yeni Tablo Alan› (New Tablespace) opsiyonu seçilir. Gerekli bilgiler girile-
rek yeni tablo alan› oluflturulabilir. ‹fllemleri basit tutmak amac›yla ünitenin geri
kalan›nda varsay›lan tablo alan› kullan›lacakt›r.
Grup Rolleri (Group Roles): PostgreSQL, veritaban› içerisindeki nesnelere her
bir kullan›c›n›n eriflimini farkl› seviyelerde yetkilendirebilir. Baz› kullan›c›lar verita-
ban›nda sadece sorgulama yapabilirken, baz›lar›n›n de¤ifltirme yetkisi bulunur. An-
cak kullan›c› ve nesne say›s› artt›¤›nda yetkilendirme iflleminin yönetilmesi zorlafla-
bilir. Bu nedenle veritaban› yönetim yaz›l›m› içerisinde kullan›c› gruplar› oluflturma
özelli¤i bulunmaktad›r. Bu flekilde yetkilendirme öncelikle gruplar üzerinden yap›l-
maktad›r. Her grubun içinde kullan›c›lar bulunur. Baz› gruplar belirli tablolar› salt
okunur olarak görürken, di¤er bir grup tabloya eriflemez veya üçüncü bir grup ise
3. Ünite - Veritaban› Yönetimi 43
yine tablo üzerinde tüm ifllemleri yapmaya yetkili olabilir. Yine de baz› durumlarda
kullan›c›lara kendi gruplar›n›n d›fl›nda baz› nesnelere eriflim yetkisi verilmesi gere-
kebilir. Bu durumda kullan›c› ad›yla ayr›ca ek bir yetkilendirme yap›labilir.
Kullan›c› Girifl Rolleri (Login Roles): Sistemde ifllem yapmaya yetkili kulla-
n›c› hesaplar›n› içeren k›s›md›r. Yeni bir kullan›c› tan›mlama, silme veya kullan›c›
yetkileri üzerinde de¤ifliklik yapmak için kullan›l›r. Kurulum aflamas›ndan sonra
sistemde sadece varsay›lan kullan›c› olan “postgres” tan›mlanm›fl durumdad›r. Bu
kullan›c› veritaban› sahibi ve tam yetkili bir kullan›c›d›r. Bu nedenle “postgres”
kullan›c›s›n›n flifresi yaln›zca veritaban› yöneticisinde bulunmal›, di¤er veritaban›
kullan›c›lar›yla kesinlikle paylafl›lmamal›d›r. Yeni bir kullan›c› tan›mlamak için kul-
lan›c› girifl rolleri sekmesine sa¤ tuflla bas›larak Yeni Girifl Rolü (New Login Role)
eleman› seçilmelidir. Sonras›nda aç›lan ekrana gerekli bilgiler girilerek sisteme ye-
ni bir kullan›c› eklenebilir. ‹fllemleri basit tutmak amac›yla ünitenin geri kalan›nda
postgres kullan›c›s› kullan›lacakt›r.
N N
SIRA S‹ZDE SIRA S‹ZDE
Yeni bir veritaban› örne¤i fiekil 3.4
oluflturmak için Veritabanlar› pgAdmin: Sistemde
(Databases) dü¤ümüne sa¤ t›k- AMAÇLARIMIZ AMAÇLARIMIZ
tan›ml› veritaban-
lanarak aç›lan menüden Yeni lar›.
Veritaban› (New Database) op-
siyonu seçilir. Bu aflamada fie- K ‹ T A P K ‹ T A P
kil 4’te gösterilen yeni veritaba-
n› örne¤i oluflturma ekran› gö-
rüntülenir. Yeni veritaban› olufl- TELEV‹ZYON TELEV‹ZYON
turma penceresinin üst k›sm›n-
da birden fazla sekme bulun-
maktad›r. Özellikler (Properti-
‹NTERNET ‹NTERNET
es) sekmesinde ekran üzerinde
oluflturulacak olan veritaban›
örne¤i ile ilgili girilmesi gere-
ken alanlar görülür. Bu alanlar-
dan baz›lar› girilmesi zorunluy-
ken, (örne¤in Veritaban› Ad› - Name gibi), baz›lar› ise zorunlu olmayan alanlard›r (ör-
ne¤in Yorum - Comment alan› gibi).
44 Veritaban› Uygulamalar›
pgAdmin: Yeni
veritaban›
oluflturma ekran›.
D Ü fi Ü N E L ‹ M D Ü fi Ü N E L ‹ M
N N
SIRA S‹ZDE SIRA S‹ZDE
Tüm alanlar girildikten sonra PostgreSQL veritaban›n›n girilen bilgiler do¤rultu-
sunda çal›flt›raca¤› SQL sorgusu pencerenin üstündeki SQL sekmesine bas›larak
görüntülenebilir (fiekil 6). Geri kalan iki sekme, De¤iflkenler (Variables)
AMAÇLARIMIZ ve Ayr›ca- AMAÇLARIMIZ
l›klar (Priviledges) sekmeleridir. Ayr›cal›klar sekmesi sistemdeki grup ve kullan›c›-
lara, oluflturulacak veritaban› üzerinde yetki vermek için kullan›l›r. Yetkilendirme
ifllemi veritaban› örne¤i oluflturulduktan sonra tekrar yap›labilir,
K ‹baz›
T A gruplar›n
P yet- K ‹ T A P
kileri kald›r›l›rken, yeni gruplara yeni yetkiler atanabilir. De¤iflkenler sekmesi ise
bu noktada ifllevsel de¤ildir.
TELEV‹ZYON TELEV‹ZYON
fiekil 3.6
Doldurulmufl yeni
veritaban› olufltur-
‹NTERNET ma ekran›‹ NveT Eçal›fl-
RNET
t›r›lacak SQL cüm-
leci¤i.
t›nda oluflturulmas› daha sa¤l›kl› olacakt›r. Yeni bir flema oluflturmak için fiemalar
dü¤ümüne sa¤ tuflla t›klayarak aç›lan menüden Yeni fiema (New Schema) seçile-
rek, aç›lan ekranda gerekli bilgiler girilir. Bu alanlara girilecek bilgiler fleman›n ad›,
sahibi ve hangi kullan›c› ve gruplar›n hangi yetkilere sahip olaca¤› gibi bilgilerdir.
Kullan›m kolayl›¤› aç›s›ndan ünitenin devam›nda genel (public) flema kullan›la-
cakt›r.
Veritaban› örne¤i dü¤ümünün alt›nda bulunan son eleman ise Kopyalama
(Replication) dü¤ümüdür. Kopyalama, bir veritaban› sistemi çal›fl›rken ayn› anda
en az bir kopyas›n›n da baflka bir sunucu sistemde çal›flt›r›lmas› yöntemidir. Bu sa-
yede e¤er aktif ana veritaban› herhangi bir sebepten dolay› durursa, kopya verita-
banlar›ndan birisi aktif hale geçer ve sistem çal›flmaya devam eder. Bu flekilde ça-
l›flan sunucular›n tamam›na sunucu kümesi ad› verilir. E¤er “Application Stack Bu-
ilder” program› çal›flt›r›larak Slony-I eklentisi kurulduysa, Kopyalama dü¤ümün-
den yeni bir sunucu kümesi oluflturmak veya kurulan sistemi var olan bir sunucu
kümesine eklemek mümkün olabilir.
SIRA S‹ZDE Yukar›da belirtilen ad›mlar› izleyerek, siz de kendi kullan›m›n›z için bir veritaban› olufl-
SIRA S‹ZDE
1 turun.
D Ü fi Ü N E L ‹ M D Ü fi Ü N E L ‹ M
fiekil 3.7
S O R U
Veritaban› örne¤i S O R U
ve içindeki
nesneler.
D‹KKAT D‹KKAT
N N
SIRA S‹ZDE SIRA S‹ZDE
AMAÇLARIMIZ AMAÇLARIMIZ
K ‹ T A P K ‹ T A P
TELEV‹ZYON TELEV‹ZYON
‹NTERNET ‹NTERNET
TABLO OLUfiTURMA
Veritaban› sistemlerinin kullan›m amac› verileri depolamak, gerekti¤inde düzenle-
mek ve sorgulamakt›r. ‹liflkisel veritaban› modelinde, verilerin depolanmas› için
tablolar kullan›l›r. Bir tablo, içinde depolanacak verinin biçimine ve di¤er tablolar-
la olan iliflkilerine göre tasarlan›r. Tablolar SQL dilinde yaz›lm›fl komutlarla olufltu-
rulabilece¤i gibi, pgAdmin üzerinden görsel yöntemlerle de yarat›labilir.
Kitab›n ilerleyen bölümlerinde, iliflkisel veritaban› kavram› ve SQL diliyle ilgili
ayr›nt›l› bilgiler yer almaktad›r. Bu ünitede, iliflkisel veritaban› modelinde tablo ya-
p›s›n›n veri depolamak için kullan›ld›¤›n› kabul ederek, tablolar› pgAdmin üzerin-
3. Ünite - Veritaban› Yönetimi 47
den görsel flekilde oluflturaca¤›z. Tablo oluflturmak için, ilk aflamada veritaban› ör-
ne¤i içinde fiemalar dü¤ümünün alt›ndaki Tablolar (Tables) dü¤ümü seçilmelidir.
Tablolar dü¤ümüne sa¤ fare tufluyla bas›ld›¤›nda aç›lan menüden Yeni Tablo (New
Table) seçene¤i seçilerek, fiekil 8’deki yeni tablo oluflturma ekran› görüntülenir.
Öncelikle özellikler (Properties) sekmesi içerisindeki alanlar doldurulmal›d›r. ‹lk
olarak tabloya bir isim verilmesi gereklidir. Bu isim rakamla bafllamamal› veya ve-
ritaban› sistemi için özel anlam ifade eden bir kelime olmamal›d›r. PostgreSQL,
isimlerde küçük büyük harf ayr›m› yapmaktad›r. Di¤er bir deyiflle, SIRA S‹ZDE
ULKELER ve SIRA S‹ZDE
Ulkeler isimli birbirinden farkl› iki ayr› tablo oluflturulabilmektedir. Ancak, tab-
lolar› olufltururken, bir tarz benimsemeniz yerinde olacakt›r. Örne¤in,
D Ü fi Ü N E L ‹tablo
M isimle- D Ü fi Ü N E L ‹ M
rinin tamam›n›n büyük harf veya ilk harf d›fl›nda di¤erlerinin küçük
SIRA S‹ZDE harf seçilmesi SIRA S‹ZDE
veya bütün harflerin küçük harf olmas› gibi yaklafl›mlar, isimlerde tutarl›l›k sa¤lan-
S O R U S O R U
mas› aç›s›ndan önemlidir.
D Ü fi Ü N E L ‹ M D Ü fi Ü N E L ‹ M
Veritaban›ndaki nesnelerin isimlerinde, ö, ü, ›, ç, ¤ gibi Türkçe karakterler
D ‹ K K Akesinlikle
T kul- D‹KKAT
lan›lmamal›d›r. S O R U S O R U
N N
SIRA S‹ZDE SIRA S‹ZDE
Tablo isimlerinin, tablonun ifllevini aç›klayacak kadar uzun isimlerden
D ‹ Kseçilmesi,
KAT yap›lan D‹KKAT
ifllemlerde hata yap›lmas›n› engeller.
AMAÇLARIMIZ AMAÇLARIMIZ
N N
SIRA S‹ZDE SIRA S‹ZDE
fiekil 8’deki ekranda, tablo sahibi olarak postgres kullan›c›s› ve tablo alan› ola-
rak varsay›lan tablo alan› (default tablespace) seçilmelidir. Doldurma
K ‹ T A Katsay›s›
P (Fill K ‹ T A P
Factor) tablonun yeni kay›t ekleme veya güncelleme için ayr›lm›flAMAÇLARIMIZ depolama alan› AMAÇLARIMIZ
oranlar›yla ilgilidir. Bofl b›rak›larak %100 de¤eri atanmas› uygun olacakt›r. ‹leri se-
viyede, bir tablonun sabit kay›tlar› ve de¤ifltirilen kay›tlar› aras›ndaki
T E L E V ‹ Z Y Ooran
N bilinir- TELEV‹ZYON
se, bu alan daha iyi bir de¤erle de¤ifltirilebilir. K ‹ T A P K ‹ T A P
OID, nesne tan›mlay›c›s› anlam›na gelmektedir. OID’ye sahip mi (Has OIDs)
alan›, e¤er PostgreSQL’in yeni oluflturulacak bir tabloya, otomatik olarak OID isim-
SIRA
‹ENLTEEVRS‹ZDE
li kolonu eklemesi isteniyorsa seçilebilir. Ancak, OID’ler ileri Tveritaban› ‹ ZNYEOT Nuygulama- T‹SIRA
ENLTEEVRS‹ZDE
‹ NZ YE OT N
lar›nda kullan›lan nesnelerdir. Burada, “OID’ye sahip” bölümü iflaretlenmemelidir.
Tablo ile ilgili aç›klamalar, hangi tarihte ne amaçla oluflturuldu¤uD Ü fi Ügibi
N E L ‹ Mbilgiler, yo- D Ü fi Ü N E L ‹ M
rumlar (Comments) alan›na girilebilir. Türetim (Inherits) sekmesi ‹NTERNET
yeni tablo, var ‹NTERNET
olan bir tablo baz al›narak oluflturulacaksa kullan›l›r ve üzerinde çal›flt›¤›m›z örnek
S O R U S O R U
için bofl b›rak›lacakt›r.
N N
SIRA S‹ZDE SIRA S‹ZDE
AMAÇLARIMIZ AMAÇLARIMIZ
K ‹ T A P K ‹ T A P
TELEV‹ZYON TELEV‹ZYON
‹NTERNET ‹NTERNET
48 Veritaban› Uygulamalar›
fiekil 3.8
pgAdmin: Yeni
tablo oluflturma
ekran›.
Tabloya yeni bir kolon eklemek için, öncelikle tablo ekleme ekran›nda (fiekil
8) Kolonlar (Columns) sekmesi seçilir. Yeni bir kolon (alan, sütun) eklemek için
Ekle (Add) dü¤mesine bas›l›r. Bu aflamada fiekil 9’da görülen Yeni Kolon (New
Column) penceresi aç›l›r. Bu pencerede eklenecek sütunla ilgili girilmesi gereken
bilgi alanlar› bulunmaktad›r. ‹lk kolon ismi olarak UlkeID girilir. Veri tipi olarak
tamsay› (integer) seçilir. UlkeID sütunu tamsay› tipinde oldu¤u için Uzunluk
(Length) ve Hassasiyet (Precision) alanlar› kapal› olarak görülecektir.
Kullan›c› veri girifli yaparken kolona bir de¤er girmedi¤inde kullan›c› ad›na
otomatik bir de¤er atanmas› isteniyorsa, bu de¤er Varsay›lan De¤er (Default valu-
e) alan›na girilmelidir. Kolon ile ilgili aç›klamalar, örne¤in kolonlar› oluflturan kifli-
nin ad›, oluflturulma amac› gibi bilgiler Yorum (Comment) alan›na girilebilir. Ta-
mam (OK) dü¤mesine bas›larak ilk sütun oluflturulur. Ayn› ifllemler UlkeAdi ko-
lonu için de gerçeklefltirilir ancak bu sefer tamsay› (integer) tipi yerine de¤iflken
uzunlukta karakter dizisi anlam›na gelen “character varying” tipi seçilmelidir.
Uzunluk alan›na 50 de¤eri girilebilir. pgAdmin, Tablo 1’de görülen “varchar” ti-
3. Ünite - Veritaban› Yönetimi 49
pini “character varying” olarak göstermektedir. Asl›nda iki veri tipi de ayn›
anlama gelir. Bu fark sadece okunuflu kolaylaflt›rmak için kullan›l›r. UlkeID, her
bir ülkeye verilecek eflsiz bir numara olacakt›r. Bu de¤erin bofl b›rak›lmas›n› en-
gellemek için, penceredeki “Not NULL” bölümü iflaretli olmal›d›r. NULL ifadesi,
bofl b›rak›lm›fl de¤er anlam›na gelir.
fiekil 3.9
pgAdmin: Tabloya
yeni sütun ekleme.
Tablo için iki kolon eklendikten sonra, UlkeID sütunu birincil anahtar (primary
key) olarak tan›mlanmal›d›r. Primary key kavram›, kolondaki bilginin her kayd›
temsil eden eflsiz bir numara oldu¤unu belirtmektedir. Tablodaki kolonlardan biri
için birincil anahtar tan›mlamak için, K›s›tlamalar (Constraints) sekmesinden (fiekil
8), Birincil Anahtar seçiliyken Ekle (Add) dü¤mesine bas›l›r ve birincil anahtar ek-
leme penceresi aç›l›r. Birincil anahtar ismi olarak, daha aç›klay›c› olsun diye PK_UL-
KEID verilebilir. Varsay›lan tablo alan› kullan›larak Kolonlar (Columns) sekmesine
geçilir. Bu ekranda alttaki seçim alan›nda UlkeID sütunu seçilerek Ekle (Add) dü¤-
mesine bas›l›r. OK dü¤mesine bas›larak pencere kapat›ld›¤›nda UlkeID kolonu
birincil anahtar olarak belirlenmifl olur (fiekil 10). Bu sayede UlkeID kolonunda
bir ülke numaras› yaln›zca bir kere girilebilir, birden fazla kay›tta ayn› de¤erin giril-
mesine PostgreSQL izin vermez. E¤er birincil anahtar olarak veritaban›n›n otomatik
üretti¤i bir de¤er kullan›lacaksa, bu sütunun tipi “serial” olarak verilmelidir.
50 Veritaban› Uygulamalar›
fiekil 3.10
UlkeID kolonunun
birinci anahtar
olarak girilmesi
D Ü fi Ü N E L ‹ M D Ü fi Ü N E L ‹ M
S O R U S O R U
N N
SIRA S‹ZDE SIRA S‹ZDE
pgAdmin içerisinde oluflturulan tablolara veri girmek, girilen verileri görüntüle-
mek ve SQL komutlar› yazmak için Veri düzenleme (Edit data) ve SQL düzenleyi-
AMAÇLARIMIZ cisi (SQL Editor) araçlar› bulunmaktad›r.
AMAÇLARIMIZ
fiekil 3.11
Sunucu durumu
menüsünün
seçilmesi
Kilit mekanizmas›, tablodaki verilerin belirli bir anda tek bir kullan›c›
D ‹ taraf›ndan
KKAT de¤iflti- D‹KKAT
rilmesini sa¤lad›¤› için verilerin tutarl›l›¤›n› sa¤lar.
N N
SIRA S‹ZDE SIRA S‹ZDE
Veritaban› üzerinde çal›flt›r›lan baz› komut dizilerinin bölünemez di¤er bir de-
yiflle atomik olmas› gerekebilir. Bir baflka ifadeyle, komut dizisindeki komutlardan
herhangi biri hata vererek çal›flt›r›lamazsa kendisinden önce AMAÇLARIMIZ
çal›flt›r›lm›fl komutla- AMAÇLARIMIZ
r›n da iptal edilmesi gerekir. Bu durumdaki komutlar ayn› hareket (transaction)
içerisinde çal›flt›r›lmal›d›r. Sistemde var olan aktif hareketler sunucu durumu pen-
ceresinin hareketler alan›nda görüntülenir. K ‹ T A P K ‹ T A P
TELEV‹ZYON TELEV‹ZYON
‹NTERNET ‹NTERNET
52 Veritaban› Uygulamalar›
pgAdmin: Sunucu
durumunu incele-
me.
SUNUCU BAKIMI
PostgreSQL sunucusunun yüksek baflar›mla ve kapasiteyle çal›flmaya devam etme-
si için yap›lmas› gereken bak›m ifllemleri bulunmaktad›r. Veritaban› üzerinde ger-
çeklefltirilen büyük çapl› ifllemler veritaban›n›n ilgili tablolar hakk›nda tutulmufl
olan istatistik verilerin güncelli¤ini bozabilir. Büyük silme ifllemlerinden sonra, ar-
t›k kullan›lmayan disk alan› hemen boflalt›lmayabilir. Veritaban› yönetim sistemi-
nin, bu tip durumlarda istatistik bilgilerini güncellemesi, yeni durum için gerekli
bilgileri toplamas› ve gereksiz disk alan›n› boflaltmas› gereklidir. Bu ifllemler oto-
matik hale getirilebildi¤i gibi, kullan›c›n›n bafllatmas›yla da gerçeklefltirilebilir. Bu-
nun için pgAdmin ekran›nda veritaban› örne¤i üzerine sa¤ tuflla bas›larak aç›lan
menüden Bak›m (Maintenance) eleman› seçilerek (fiekil 12) Bak›m program›
çal›flt›r›l›r. Bak›m program›n›n ara yüzü fiekil 13’te görülmektedir.
3. Ünite - Veritaban› Yönetimi 53
fiekil 3.13
Veritaban› üzerin-
de bak›m iflleminin
(maintenance) se-
çilmesiVeritaban›
üzerinde bak›m ifl-
leminin (mainte-
nance) seçilmesi
fiekil 3.14
Sunucu bak›m
modülü.
VER‹TABANI YEDEKLEME
Her sistemde olabilece¤i gibi PostgreSQL veritaban› sistemi de çal›flmaz hale gele-
bilir. Bu durum, ço¤unlukla sabit disk gibi donan›m birimlerinin bozulmas›ndan
SIRA S‹ZDE
veya iflletimSIRA S‹ZDE
sistemindeki sorunlardan kaynaklanmaktad›r. Düzenli olarak bak›m›n
yap›lmas› veya sürekli olarak sistemin izlenmesi sistemde verilerin tutuldu¤u dis-
D Ü fi Ü N E L ‹ M kin bozulmas›n›
D Ü fi Ü N E engelleyemez.
L‹M Yaz›l›m veya donan›m sorunlar›ndan dolay› siste-
min çal›flmamas› durumuna karfl› verinin sa¤l›kl› bir flekilde yedeklenmifl olmas›
hayati önem tafl›maktad›r. PostgreSQL içinde bulunan verilerin ve nesnelerin ye-
S O R U S O R U
deklenmesi için pgAdmin üzerinde kullan›labilecek çeflitli araçlar bulunmaktad›r.
N N
SIRA S‹ZDE SIRA S‹ZDE
pgAdmin kullanarak veritaban›n›n yede¤ini almak için veritaban› örne¤inin
üzerine sa¤ tuflla bas›larak Yedekle (Backup) eleman› seçildi¤inde, fiekil 14’teki
AMAÇLARIMIZ veritaban› AMAÇLARIMIZ
yedekleme penceresi görüntülenir.
K ‹ T A P K ‹ T A P
TELEV‹ZYON TELEV‹ZYON
‹NTERNET ‹NTERNET
3. Ünite - Veritaban› Yönetimi 55
fiekil 3.15
pgAdmin: Veritaba-
n› yedek alma
program›.
N N
SIRA S‹ZDE SIRA S‹ZDE
Veritaban› sisteminde herhangi bir yaz›l›m veya donan›m ar›zas› oldu¤unda, önem-
li veriler bir flekilde silindi¤inde veya sistemin belirli bir andaki haline geri döndü-
rülmesi gerekti¤inde, sistem en son yedek al›nd›¤› duruma döndürülebilir.
AMAÇLARIMIZ Bunun AMAÇLARIMIZ
K ‹ T A P K ‹ T A P
TELEV‹ZYON TELEV‹ZYON
56 Veritaban› Uygulamalar›
için bir yedek dosyas›na ihtiyaç vard›r. Ayr›ca yedek al›rken yedek dosyalar›n›n
isimlerini yede¤in içerdi¤i veritaban› ve yede¤in al›nd›¤› tarihi içeren bir birleflim-
le verilmesi, eski haline alma an›nda yedek dosyalar›n›n hangisinin kullan›laca¤›-
n›n bulunmas›n› kolaylaflt›r›r.
pgAdmin kullanarak veritaban›n›n yede¤inden sistemi eski durumuna döndür-
mek için öncelikle bir veritaban› oluflturulmal›d›r. Bu ifllem için var olan bir verita-
ban› da kullan›labilir ancak geri yükleme ifllemi var olan tablolar›n üzerine yazaca-
¤›ndan bofl bir veritaban› oluflturmak daha iyi olacakt›r. Sonras›nda nesne izleme
alan›ndan yede¤in yüklenmek istenildi¤i veritaban› örne¤inin üzerine sa¤ fare tu-
fluyla bas›larak Eski Haline Getir (Restore) eleman› seçilerek fiekil 15’teki eski ha-
line getirme penceresi görüntülenir.
fiekil 3.16
pgAdmin: Veritaba-
n› yedek geri yükle-
me ekran›
RAPORLAMA
Veritaban› yönetim sisteminde, raporlama veritaban› yöneticilerinin yapt›klar› ifller
aras›nda önemli bir yer tutmaktad›r. Sistemde bulunan nesnelerin yap›s›n› belge-
lendirmek için pgAdmin içerisindeki raporlama araçlar› kullan›labilir. Bu yöntem-
le istenilen nesne ile ilgili bilgiler belgelendirilmifl olur.
Az önce oluflturulan AUDB veritaban›n›n özellikleriyle ilgili bir rapor olufltura-
l›m. Raporlama ifllemine bafllamak için Nesne ‹zleme bölümünde (Object Browser)
3. Ünite - Veritaban› Yönetimi 57
AUDB veritaban› nesnesinin üzerine sa¤ fare tufluyla t›klanarak aç›lan menüdeki
Raporlar (Reports) grubunun içinden, özellikler (Properties) rapor türünü seçelim.
Bu ifllemden sonra raporun kaydedilece¤i dosyan›n ad› ve raporun özelliklerinin
girilece¤i bir pencere ç›kacakt›r (fiekil 16). Pencerede, ç›k›fl biçimi (Output format)
olarak, XML türünün seçilmesi, raporun herhangi bir ‹nternet izleyicisi üzerinden
kolayl›kla görüntülenmesini sa¤layacakt›r. Ç›k›fl dosyas› ad› olarak uzant›s› “.xml”
olacak flekilde herhangi bir isim yaz›labilir. Tamam butonuna bas›ld›¤› zaman In-
ternet Explorer veya Firefox izleyicilerinden biri raporu ekranda görüntüleyecektir
(fiekil 17). Raporda, veritaban›n› olufltururken girilen bütün veriler görülmektedir.
XML türü dosya biçimi hakk›nda, ilerideki ünitelerde ayr›nt›l› bilgi verilecektir.
fiekil 3.17
Özellikler (properti-
es) raporunun olufl-
turulmas›
58 Veritaban› Uygulamalar›
fiekil 3.18
Veritaban› özellik-
lerinin görüldü¤ü
özellikler raporu
3. Ünite - Veritaban› Yönetimi 59
Özet
N
A M A Ç
PostgreSQL’in yönetim paneli olan pgAdmin N
A M A Ç
Veritaban› sunucusunda yap›labilecek bak›m ifl-
1 program›nda sa¤lanan özellikleri kullanabile- 4 lemlerini gerçeklefltirebileceksiniz.
ceksiniz. Veritaban›, sunucu sisteminde çal›flan bir yaz›l›m
pgAdmin, PostgreSQL yaz›l›m›n›n yönetimi için ve verilerin tutuldu¤u dosyalardan oluflur. Baz›
kullan›lan programd›r. Veritaban› ifllemlerini gör- durumlarda, veri dosyalar› içinden silinen veriler
sel olarak yapmam›z› sa¤lar. pgAdmin görsel ya- nedeniyle boflal›r ve içinde arama yapmak ya-
p›lan ifllemleri SQL diline çevirerek çal›flt›r›r. vafllar. Bu nedenle, dosyalar›n VACUUM denilen
pgAdmin yaz›l›m› çal›flt›r›ld›¤›nda, program pen- bir ifllemle daha küçük hale getirilmesi ve gerek-
ceresi üzerinde menü, nesne izleyicisi, nesnele- siz bilgilerin silinmesi gerekebilir.
rin özelliklerini gösteren özellikler ve SQL pa-
nosu bölümleri görülür. Nesne izleyicisi, pgAd- N
A M A Ç
Veritaban›n›n tamam›n› veya bir k›sm›n› yedek-
min taraf›ndan idare edilen veritabanlar›n› ve 5 leyebilecek, yedeklerden veritaban›n› yeniden
bunlar›n alt›ndaki nitelikler üzerinde gezinmemi- oluflturabileceksiniz.
zi sa¤lar. Herhangi bir nesne üzerine t›klanarak Yedekleme ifllemi, verilerin kaybolmas›n› engel-
seçilirse, özellikler bölümünde nesneyle ilgili bil- leyen temel ifllemlerden biridir. Günümüzde, ve-
giler görülebilir. SQL panosu, görsel yap›lan iflle- ritaban› yöneticileri veritaban›nda yer alan tablo-
rin SQL karfl›l›¤›n› görmemizi sa¤lar. lalar› s›k aralarla yedeklerler ve yedek dosyalar›
baflka sistemlere tafl›rlar. Sistemde olabilecek bir
N
A M A Ç
Herhangi bir veritaban› yönetim sistemiyle bir-
likte gelen yönetim yaz›l›m›ndaki özellikleri kul-
ar›zada yedek dosyalar›nda yer alan veriler tek-
rar veritaban›na yüklenir.
2
N
lanabileceksiniz.
Bütün veritaban› yönetim sistemlerinin yönetim Veritaban›yla ilgili çeflitli raporlar› oluflturabile-
A M A Ç
yaz›l›mlar› bulunmaktad›r. pgAdmin program›n- 6 ceksiniz.
da oldu¤u gibi, SQL komutlar›n›n yaz›lmas›, ye- Veritaban›nda raporlama, veritaban›yla ilgili bil-
ni veritaban› oluflturulmas›, yeni tablolar eklen- gilerin al›nmas› ve saklanmas›d›r. Veritaban›n›n
mesi gibi ifllemler yönetim yaz›l›mlar› sayesinde temel ifllevi, veritaban›n›n yap›s›na dayan›r. Her
gerçeklefltirilebilmektedir. Yönetim programlar›- tablonun yap›s›n›n ve bu tabloyu oluflturan SQL
n›n bir di¤er özelli¤i de, veritaban›n›n sa¤l›kl› fle- komutunun raporlanmas›, veritaban› yöneticile-
kilde kullan›labilmesi için rutin bak›m ifllemleri- rine büyük kolayl›k sa¤lamaktad›r.
nin yap›labilmesini sa¤lamas›d›r.
N
AM A Ç
Yönetim program› üzerinden yeni bir veritaba-
n›, veritaban› içine yeni tablolar, tablolara yeni
3
kolonlar (alan) ekleyebileceksiniz.
‹liflkisel veritabanlar› içindeki temel veri öbekle-
ri tablolard›r. Tablo pgAdmin yaz›l›m› üzerinden
oluflturulabilir. Tablonun ismi, alfanümerik de-
¤erlerden oluflur ve ilk harfi alfabeden al›nmal›-
d›r. Veritaban›ndaki di¤er bir tablo, yeni olufltu-
rulacak tabloyla ayn› ismi tafl›yamaz. Tablo olufl-
turulurken, kolonlar›n her birinin ismi ve veritip-
leri belirlenmelidir. E¤er istenirse, tablo alanla-
r›ndan biri her kay›t için eflsiz bir numara içer-
mesi için birincil anahtar olarak tan›mlanabilir.
60 Veritaban› Uygulamalar›
Kendimizi S›nayal›m
1. Afla¤›dakilerden hangisi pgAdmin program›n›n gö- 5. PosgreSQL veritaban›nda tablo oluflturmakla ilgili
revlerinden biri de¤ildir? afla¤›daki ifadelerden hangisi do¤rudur?
a. Veritaban› yedeklemesi a. Tablo isimlerinde küçük-büyük karakter ayr›m›
b. Tablo oluflturma yap›lmaktad›r.
c. Kullan›c› silme b. Bir veritaban›ndaki bütün tablolar ayn› tablo ala-
d. Tablolar›n bulundu¤u disk hatalar›n› onarma n› içerisinde bulunmal›d›r.
e. Kay›t dosyalar›n› inceleme c. Tablo isimlerinde 25 karakterlik uzunluk s›n›r›
bulunmaktad›r.
2. pgAdmin ile ilgili afla¤›daki ifadelerden hangisi do¤- d. Oluflturulan tabloya yaln›z tabloyu oluflturan kul-
rudur? lan›c›n›n eriflim hakk› vard›r.
a. pgAdmin, PostgreSQL veritaban›n›n temel bir e. Tablo oluflturulma ekran›nda bofl girifl alan› b›-
bileflenidir. rak›lamaz.
b. Veritaban› eriflimi için pgAdmin program›n› aç-
mak yeterlidir. 6. Tablo oluflturma iflleminde oluflturulacak kolonlarla
c. pgAdmin ile uzaktaki veritaban› sunucular› da ilgili afla¤›daki ifadelerden hangisi do¤rudur?
yönetilebilir.
d. pgAdmin, veritaban› üzerinde yap›lan de¤iflik- a. Kolonlar isim s›ras›na göre oluflturulmal›d›r.
likleri do¤rudan dosya sistemi üzerinde yapar. b. Kolon isimlerinin ilk karakterleri kolonlar›n s›ra
e. pgAdmin, veritaban› nesnelerini kullan›c›dan numaras› olarak verilmesi bir zorunluluktur.
gizleyerek güvenli¤i artt›r›r. c. Tablo oluflturulduktan sonra yeni bir kolon ek-
leme ifllemi gerçeklefltirilebilir.
3. Afla¤›dakilerden hangisi pgAdmin ile oluflturulan d. Tamsay› tipinde kolon oluflturulurken uzunluk
gruplar›n özelliklerinden biri de¤ildir? bilgisi girilebilecek en büyük tam say›y› belirle-
a. Sistemde birden fazla grup olabilir. mede kullan›l›r.
b. Her bir gruba farkl› yetkiler atanabilir. e. Kolon özelliklerinde “Not Null” seçildi¤inde tab-
c. Bir kullan›c› birden fazla grupta yer alabilir. loda o kolona ait sat›rlara varsay›lan olarak s›f›r
d. Bir grupta birden fazla kullan›c› bulunabilir. de¤eri atan›r.
e. Bir veritaban› üzerinde en fazla bir grup yetki-
lendirilebilir. 7. pgAdmin ile PostgreSQl veritaban› sunucusu duru-
munu izleme arayüzünden afla¤›daki bilgilerden hangi-
4. Yeni bir veritaban› oluflturlurken seçilen özelliklerle sine ulafl›lamaz?
ilgili afla¤›daki ifadelerden hangisi yanl›flt›r? a. Aktivite
a. Veritaban› ismi, oluflturulacak veritaban›n› sis- b. Günlük dosyalar›
temdeki di¤er veritabanlar›ndan ay›rt etmek için c. Tablolar›n kaplad›¤› disk alan›na
kullan›l›r. d. Kilitlere
b. Veritaban› oluflturulduktan sonra oluflturma ek- e. Birim-ifllemlere
ran›nda girilen baz› özellikler de¤ifltirilebilir.
c. Veritaban›na farkl› dillerde veri girifli yap›lacak-
ca karakter kodlamas› olarak UTF8 seçilir.
d. Alan ad› verisi veritaban›n›n saklanaca¤› dizini
belirlemekte kullan›l›r.
e. Ba¤lant› s›n›r› -1 olarak b›rak›l›rsa veritaban›na
geçici olarak ba¤lant›lar engellenir.
3. Ünite - Veritaban› Yönetimi 61
4
Amaçlar›m›z
N
Bu üniteyi tamamlad›ktan sonra;
N
‹liflkisel veritaban›n›n hangi uygulamalarda yararl› oldu¤una karar verebileceksiniz.
N
‹liflkisel veritaban› uygulamalar›n› di¤er veritaban› türlerinden ay›rabileceksiniz.
Bir veritaban›n› oluflturan temel bileflenleri listeleyebilecek iliflkisel veritaban›
N
yönetim sisteminin nas›l çal›flt›¤›n› aç›klayabileceksiniz.
N
Temel SQL sorgular› kurabileceksiniz.
Veritaban› tasarlarken, temel normalizasyon kurallar›n› uygulayabileceksiniz.
Anahtar Kavramlar
• ‹liflkisel veritabanlar› • SQL
• Tablo • Birincil anahtar
• Kay›t • Yabanc› anahtar
• Kolon • Normalizasyon
• Çokuzlu veri
‹çerik Haritas›
• G‹R‹fi
• ‹L‹fiK‹SEL VER‹TABANLARI
• ‹L‹fiK‹SEL VER‹TABANLARININ
TEMEL B‹LEfiENLER‹
• ‹L‹fiK‹SEL VER‹TABANI YÖNET‹M
S‹STEMLER‹N‹N ÖZELL‹KLER‹
‹liflkisel Veritabanlar› • YAPISAL SORGU D‹L‹NE (SQL)
Veritaban› ve Veritaban› G‹R‹fi
Uygulamalar› Tasar›m› • B‹R ‹L‹fiK‹SEL VER‹TABANI
TASARIMI VE OLUfiTURMA
• B‹R‹NC‹L ANAHTAR (PRIMARY
KEY) KAVRAMI
• YABANCI ANAHTAR (FOREIGN
KEY) KAVRAMI
• VER‹TABANI NORMAL‹ZASYO-
NUYLA VER‹TABANI TASARIMI
‹liflkisel Veritabanlar› ve
Veritaban› Tasar›m›
G‹R‹fi
Profesyonel yaz›l›m uygulamalar›n›n ço¤unlu¤u büyük miktarda veri kullanarak
çal›fl›r. Özellikle çevrimiçi çal›flan uygulamalar, iflle ilgili verileri bir yerde depola-
mak ve tüm bu verilere ihtiyaç duyuldu¤u anda h›zla eriflmek zorundad›r. Veriler
bir metin dosyas›nda veya bir hesap tablosu dosyas›nda da tutulabilir; ancak bü-
yük miktardaki veri içinden arama yapmak ve istenen bilgiye ulaflmak büyük bir
ifllem gücü gerektirebilir. Kullan›lan ve de¤iflen verilerin depolanabilmesi için gü-
nümüzde kullan›lan en iyi yöntem, veritaban› yönetim sistemi kullanmakt›r.
Verilerin gitgide fazlalaflmas› ve veri öbekleri aras›ndaki iliflkilerin karmafl›klafl-
mas›, tarihsel süreç içinde yeni veritaban› modellerinin ortaya ç›kmas›na neden ol-
mufltur. ‹liflkisel veritaban› modelinin gelifltirilmesi ve bu modelin çal›flt›r›lmas› için
gerekli altyap›y› sa¤layan veritaban› yönetim sistemlerinin çeflitli yaz›l›m firmalar›
taraf›ndan sunulmas›yla, iliflkisel veritaban› uygulamalar› yayg›nlaflm›flt›r. ‹liflkisel
veritaban›nda, bilgiler, tablo ad› verilen veri öbeklerinde tutulmakta ve tablolarda
yer alan birbiriyle iliflkili kolonlar sayesinde, veri öbekleri aras›nda iliflkiler kurul-
maktad›r.
Bu bölümde iliflkisel veritabanlar›n›n temel özellikleri incelenecek ve SQL di-
lindeki komutlarla temel veritaban› ifllemlerinin nas›l yap›laca¤› anlat›lacakt›r. Ay-
r›ca, iliflkisel veritabanlar›n› etkin bir flekilde tasarlayabilmek için, tekrar eden ve-
rilerin ortadan kald›rmay› sa¤layan normalizasyon ifllemi üzerinde durulacakt›r.
‹L‹fiK‹SEL VER‹TABANLARI
‹liflkisel veritabanlar›, verilerin hiyerarflik olmayan bir yap›da ve sistematik bir fle-
kilde grupland›r›larak depolanmas›na izin verir. ‹liflkisel veritabanlar›nda veriler
tablolar halinde gruplan›r. Tablolar aras›ndaki iliflkiler, tablolarda bulunan kolon-
lar›n birbirleriyle iliflkilendirilmesiyle kurulur. Kurulan iliflkiler sayesinde, iliflkisel
veritabanlar› büyük miktarda verinin verimli bir flekilde yönetilmesine izin verirler.
Örnek olarak kiflilerin nüfus bilgileri bir tabloda, adres bilgileri ikinci bir tabloda,
maafl bilgileri de baflka bir tabloda tutulabilir. Kiflinin sicil numaras› ile iliflkilendi-
rerek farkl› tablodaki verilere eriflebilir, birlefltirebilir, yönetebilir ve de¤ifltirebiliriz.
Veritaban› Yönetim Sistemleri (VTYS), veritabanlar›n› bar›nd›ran ve bunlar›n
d›fl dünya ile ba¤lant›s›n› kuran sistemlerdir. Bu sistemler sayesinde veritabanlar›-
na hangi kullan›c›lar›n ba¤lanaca¤›, bu kullan›c›lar›n veritaban›na hangi bilgisayar-
lardan veya IP adreslerinden eriflebilece¤i, hangi kullan›c›lar›n hangi tablolara ne
64 Veritaban› Uygulamalar›
tür eriflim izinlerinin oldu¤u (örne¤in salt okuma, okuma-yazma, silme gibi) belir-
lenebilir. Yine bu sistemler veritaban› üzerindeki tablolar›n yedeklenmesi, kopya-
lanmas› ve raporlanmas› gibi bak›m ifllemlerini de yürütürler. Bir önceki ünitede,
iliflkisel veritaban› yönetim sistemi olan PostgreSQL yaz›l›m› üzerinde durulmufl ve
bir VTYS’nin kullan›c›lara sa¤lad›¤› olanaklarla ilgili pratik bilgilere sahip olmufl-
tuk. Ücretsiz bir yaz›l›m olarak PostgreSQL, ticari iliflkisel veritaban› sistemlerinde
sa¤lanan özelliklerin büyük bölümünü kullan›c›lar›na sunmaktad›r. Bu ünitedeki
örnekler ve uygulamalar, PostgreSQL VTYS kullan›larak gerçeklefltirilecektir.
‹liflkisel veritabanlar›n›n yönetildi¤i sistemlere ‹liflkisel Veritaban› Yönetim Sis-
temi ad› verilir. Ticari olarak sunulan çok say›da iliflkisel veritaban› yönetim siste-
mi bulunmaktad›r. Bunlardan baz›lar›, Oracle, IBM DB2, Microsoft SQL Server,
PostgreSQL, MySQL, Apache Derby, Firebird, FrontBase, HSQLDB, Informix Dyna-
mic Server, Ingres, InterBase, Microsoft Access, Microsoft Visual Foxpro, Msql,
Openbase, Panaroma, SmallSQL, SQLLite, Teradata, TxtSQL, Unidata ve Valenti-
na’d›r. Bu sistemlerin hepsinin kendine özgü özellikleri, avantajlar› ve dezavantaj-
lar› vard›r. Oracle, IBM DB2, Microsoft SQL Server gibi yaz›l›mlar ticari ürünlerdir
ve ücretlidir. Baz›lar›n›n iflletim sistemi k›s›tlar› vard›r. Örne¤in, Microsoft SQL ser-
ver, Microsoft Access ve FoxPro gibi sistemler sadece Microsoft iflletim sistemlerin-
de kullan›labilmektedir. Apache Derby ve PostgreSQL gibi yaz›l›mlar›n kaynak
kodlar› aç›kt›r ve ücretsiz olarak kullan›labilir. Uygulama gelifltiricileri taraf›ndan
kullan›lacak olan veritaban› yönetim sistemi proje isterlerine göre do¤ru bir flekil-
de seçilmeli ve uygulama buna göre gelifltirilmelidir.
fiekil 4.1
Örnek bir
Ulkeler Tablosu iliflkisel
veritaban›
UlkeID UlkeAdi yap›s›
1 A.B.D.
90 Türkiye
93 Afganistan
Tablolardaki kay›tlar›n her biri matematiksel aç›dan çokuzlu veri (tuple) halin-
dedir. Her bir çokuzlu, tan›mlanm›fl veri tiplerine sahip alanlardan (field) oluflan s›-
ral› bir gruptur. Tablo içinde yer alan tüm çokuzlular ayn› say›da bileflene sahiptir.
Örne¤in fiekil 1’deki Sehirler tablosu için her bir kay›t {SehirID, UlkeID, Sehi-
rAdi} biçiminde olmal›d›r. Bu biçime uygun olan kay›t örnekleri olarak, {1, 93, “Ka-
bil”} ve {2, 1,”New York City”} verilebilir. Çokuzludaki alanlar, tablodaki kolonlar-
la s›ras›yla eflleflir. Çokuzludaki ilk alan kay›ttaki SehirID kolonuna, ikinci alan
flehrin hangi ülkeye ait oldu¤unu belirten flehir kodunu gösteren UlkeID alan›na,
üçüncüsü de fiehrin Ad›na karfl›l›k gelmektedir. Tablolardaki kay›t say›s› tablonun
tasar›m›na göre de¤iflkenlik gösterebilir. Örne¤in bir tablodaki kay›t say›s› 10 iken,
bir di¤erinde milyonlarca say›da olabilir.
Bir tabloda, ayn› kolonda bulunan bütün de¤erler ayn› veri tipinde girilmelidir.
Örne¤in bir kolonun veri tipi karakter olarak tan›mlanm›flsa ilgili sütundaki tüm
veriler karakter tipindedir. Sehirler tablosunda bulunan kay›tlar›n birinci ve
ikinci kolonlar› tamsay› (INT) biçiminde olmal›d›r. Üçüncü kolonda bulunan alan
ise uzunlu¤u de¤iflken bir karakter dizisi (VARCHAR) olarak tan›mlanm›flt›r. Bu ta-
n›mlamalar tabloyu olufltururken bir defaya mahsus olarak yap›l›r ve gerekmedik-
çe de¤ifltirilmezler.
Özellikler (attributes), tablodaki kolonlar›n bafll›klar› olarak tan›mlanabilir. Ör-
ne¤in Ulkeler tablosunda ilk kolonunu tan›mlamak için kulland›¤›m›z UlkeID
sözcü¤ü, bu tablonun ilk kolonundaki verilere eriflebilmek için kullan›l›r. Ayn› fle-
kilde Daglar tablosundaki DagAdi sütunu Daglar tablosunun 3’üncü kolonu-
na verilmifl k›sa bir isim olarak düflünülebilir.
66 Veritaban› Uygulamalar›
N N
SIRA S‹ZDE SIRA S‹ZDE
Anahtar kelimelerin büyük ve küçük harflere hassas olmamas›na ra¤men,
D ‹ K Kkomutu
AT okuyan D‹KKAT
kiflinin komutu daha rahat anlayabilmesi için büyük harf kullan›lmas› iyi olacakt›r.
AMAÇLARIMIZ AMAÇLARIMIZ
N N
SIRA S‹ZDE SIRA S‹ZDE
Karakter dizileri (string) tek t›rnak içinde tan›mlan›r. Örne¤in yukar›daki örnek-
te, “INSERT INTO” ile bafllayan sat›rdaki ‘Güney Afrika Cumhuriyeti’ ifadesi bir ka-
rakter dizisidir. Nümerik de¤erler, tan›ml› veri tiplerine göre farkl›
K ‹ Tflekilde
AMAÇLARIMIZ A P yaz›labi- K ‹ T A P
AMAÇLARIMIZ
lirler. Örne¤in, tamsay› (integer) olarak tan›mlanm›fl bir alana yaz›labilecek de¤er-
ler flöyle olabilir: 3, 12, -45, +1001. Gerçek say›lar için yaz›labilecek de¤erler flöy-
ledir: -1.23, .001, 1.4e-23, -1.2e+12. TKE L‹E VT ‹ ZA Y OP N T KE L ‹E VT‹ ZAY OPN
TELEV‹ZYON TELEV‹ZYON
‹NTERNET ‹NTERNET
‹NTERNET ‹NTERNET
68 Veritaban› Uygulamalar›
D Ü fi Ü N E L ‹ M D Ü fi Üveri
Tablolara NEL‹M
ekleme (INSERT): ‹liflkisel veritabanlar›nda, genellikle tablolar
dinamik içeri¤e sahiptir ve yeni kay›tlar›n eklenmesi gerekebilir. SQL dilinde ta-
S O R U n›ml› olan INSERT
S O R U komutu, herhangi bir tabloya yeni bir kay›t eklemek için kulla-
n›lmaktad›r. Örne¤in, Ulkeler tablosuna yeni bir ülke eklenecekse, afla¤›daki
komut kullan›labilir:
D‹KKAT D‹KKAT
N N
SIRA S‹ZDE SIRA S‹ZDE
AMAÇLARIMIZ AMAÇLARIMIZ
TELEV‹ZYON TELEV‹ZYON
S O R U S O R U
D‹KKAT D‹KKAT
‹NTERNET ‹NTERNET
4. Ünite - ‹liflkisel Veritabanlar› ve Veritaban› Tasar›m› 69
N N
SIRA S‹ZDE SIRA S‹ZDE
Tablo birlefltirme (JOIN): SELECT komutu ile birlikte kullan›lan bu yap› saye-
sinde birden fazla tablodaki birbiriyle iliflkili verilerin birlefltirilerek
AMAÇLARIMIZ getirilmesi sa¤- AMAÇLARIMIZ
lanmaktad›r. Bu ifllemi gerçeklefltirmenin birden fazla yolu vard›r. S›kl›kla kullan›-
lan yöntemlerden biri SELECT sorgusuyla birlikte INNER JOIN ve OUTER JOIN ifa-
delerini kullanmakt›r. Birbiriyle iliflkili tablolar›n tek bir tabloK olarak
‹ T A Pgösterilmesi, K ‹ T A P
ilerideki ünitelerde ayr›nt›l› bir flekilde anlat›lacakt›r.
Tablo yap›s›n› de¤ifltirme (ALTER): Bu ifllem veritaban›nda tan›ml› olan tab-
lolar›n yap›s›n›n de¤ifltirilmesini sa¤lar. Bu ifllemi var olan tabloya
T E L E V ‹ Z Yyeni
O N kolonlar TELEV‹ZYON
eklemek veya olan bir kolonu tan›mdan ç›karmak için kullanabiliriz. ‹fllemin ger-
çeklefltirilmesi için kullan›lan ALTER TABLE komutudur. Afla¤›daki SQL komutu,
Ulkeler tablosuna integer tipinde nufus isimli yeni bir alan eklemektedir.
Alanlar›n özelliklerinde yap›lmas› istenen de¤iflikliklerinde ALTER ‹ N T E R NTABLE
ET komu- ‹NTERNET
tu kullan›labilmektedir.
S O R U S O R U
D‹KKAT D‹KKAT
70 Veritaban› Uygulamalar›
Tablo silme (DROP): DELETE iflleminden farkl› olarak DROP anahtar kelimesiyle
yap›lan ifllem bir tablonun veya herhangi bir veritaban› nesnesinin tamamen veritaba-
n›ndan ç›kar›lmas›d›r. Afla¤›daki SQL komutu, Ulkeler tablosunu silmektedir:
N N
SIRA S‹ZDE SIRA S‹ZDE
B‹R ‹L‹fiK‹SEL VER‹TABANI TASARIMI VE
OLUfiTURMA
AMAÇLARIMIZ AMAÇLARIMIZ
Veritaban›ndaki tablolar tasarlanmadan önce depolanmas› istenen verinin düzenli
bir flekilde modellenebilmesi son derece önemlidir. Modelleme esnas›nda dikkat
edilmesi gereken en önemli noktalardan biri depolanacak verilerin do¤ru bir flekil-
K ‹ T A P K ‹ T A PÖrne¤in fiekil 1’deki tasar›mda depolanacak verilerin, Ulkeler,
de gruplanmas›d›r.
Sehirler ve Daglar olmak üzere 3 grup ya da baflka bir ifadeyle 3 ayr› tablo
alt›nda topland›¤› görülebilmektedir.
TELEV‹ZYON T E L E Vdikkat
Tasar›mda ‹ Z Y O N edilmesi gereken bir di¤er özellik ise gruplanan veriler aras›n-
daki iliflkilerin nas›l kuruldu¤udur. Örne¤in Sehirler tablosunda depolanan bir
flehir bilgisinin hangi ülkeye ait oldu¤unu gösterecek bir sütun bulundurulmal›d›r.
T E R N E Tbulundu¤u ülkenin UlkeID de¤eri referans gösterilerek, tablolar
Bu sütunda‹ Nflehrin
aras›nda iliflki kurulmal›d›r. Bu alandaki bilgiler arac›l›¤›yla Sehirler ve Ulke-
‹NTERNET
ler tablolar› kullan›larak bir flehrin bulundu¤u ülkeye kolayca eriflim sa¤lanabilir.
Ülkeler Tablosu
Bu tablo ülke kodlar› ve ülke isimlerinin tutulmas› için tasarlanm›flt›r. UlkeID ko-
lonunda, her bir ülke için eflsiz bir ülke kodu verilmektedir. ‹kinci kolonda ise ül-
kelerin isimleri tutulmaktad›r. Bu tablonun tasar›m yap›s› Tablo 1’de verilmifltir. Ül-
kelerin nüfuslar›, yüzölçümleri gibi özellikler de bu tabloya eklenebilirdi, fakat ta-
sar›m›n basit olmas› aç›s›ndan Ulkeler tablosu sadece ülke isimlerini tutacak fle-
kilde tasarlanm›flt›r. Tablonun ilk sütunu olan UlkeID, Birincil Anahtar (Primary
Key) olarak tan›mlanm›flt›r. Birincil anahtar kolonu, her kay›t, di¤er bir deyiflle her
ülke için eflsiz bir numara bulundurur. ‹lerideki ünitelerde birincil anahtar konusu
ayr›nt›l› flekilde incelenecektir.
Tablo 4.1 Sütun Ad› Sütun Tipi
Ulkeler tablosunun
yap›s› UlkeID(Birincil Anahtar) integer
UlkeAdi varchar(50)
Tablo Ad›: Ulkeler
4. Ünite - ‹liflkisel Veritabanlar› ve Veritaban› Tasar›m› 71
Ulkeler tablosunu oluflturmak için gerekli olan SQL komutu afla¤›da verilmifltir.
CREATE TABLE Ulkeler
(
UlkeID integer PRIMARY_KEY,
UlkeAdi varchar(50) NOT NULL
);
Tablo 1’de görülen sütun tipleri, kolondaki içeri¤in hangi veri tipinde oldu¤u-
nu belirler. Örnek olarak UlkeID sütunu integer olarak belirlenmifltir. Bu ifade,
tabloya eklenecek sat›rlardaki UlkeID’ye karfl›l›k gelen sütunlar›ndaki bütün de-
¤erlerin tamsay› cinsinden olmas› gerekti¤ini belirtir. Tablodaki di¤er sütun olan
UlkeAdi ise, ülke isimleri de¤iflken uzunlukta olabilece¤i için varchar(50)
olarak tan›mlanm›flt›r. Bu ifade de¤iflken uzunluktaki karakter dizilerini temsil
eder. Varchar ifadesinin yan›ndaki 50 say›s› bu sütünda bulunan karakter dizile-
rinin 50 karakteri aflmamas›n› garanti alt›na al›r.
Sehirler Tablosu
Ulkeler tablosuna benzer olarak Sehirler tablosu flehir bilgilerini depolamak
için tasarlanm›flt›r. Tablo, 3 sütundan oluflmaktad›r. ‹lk sütun olan SehirID’de her
bir flehir için farkl› olacak flekilde bir tamsay› de¤er tutulur. Bu de¤erin tabloya
kaydedilen Sehirler için farkl› olmas› gerekmektedir. Bunu garanti alt›na almak
için SehirID alan› birincil anahtar olarak tan›mlanm›flt›r. Tablonun ikinci sütunu
olan UlkeID ise tabloda kay›tl› bulunan flehirlerin hangi ülkenin flehri oldu¤unu
tutar. Bu sütundaki kay›tlar›n her biri Ulkeler tablosundaki UlkeID alan›na bir
referans olarak düflünülebilir. Tan›mlanan referans de¤er sayesinde Sehirler tablo-
sundaki flehir bilgisi Ulkeler tablosundaki veriyle birlefltirilerek bir flehrin hangi
ülkeye ait oldu¤u bulunabilir. Üçüncü sütun olan SehirAdi’na ise flehir isimleri
tutulmaktad›r. Sehirler tablosunun tasar›m› Tablo 3’te verilmifltir.
Tablo 3’deki tasar›mda dikkat edilmesi gereken en önemli nokta UlkeID sü-
tununun yan›ndaki yabanc› anahtar ifadesidir. Bu ibare Sehirler tablosundaki
UlkeID kolonunun Yabanc› Anahtar (Foreign Key) olarak tan›mland›¤›n› gösterir.
Yabanc› anahtar olarak tan›mlanan sütunlarda bulunan de¤erler genelde baflka
tablolarda bulunan birincil anahtarlara referans göstermek için kullan›l›r. Referans
gösterme ifllemi sayesinde birincil anahtarda yap›lacak de¤ifliklikler üzerinde çeflit-
li ön tan›ml› yap›land›rmalar yap›labilir. Örne¤in Ulkeler tablosunda bir ülkenin
UlkeID’si de¤iflti¤inde otomatik olarak Sehirler tablosunda o UlkeID’ye sa-
hip olan flehirlerde UlkeID de¤erlerinin de¤iflmesini sa¤layabiliriz. Yabanc› anah-
tar kavram› üzerinde ünitenin ilerleyen k›s›mlar›nda detayl› olarak durulacakt›r.
Daglar Tablosu
Daglar tablosu yap› olarak Sehirler tablosunun benzeridir. Bu tablo ülkeler-
de bulunan da¤lar›n isimlerini depolamak için tasarlanm›flt›r. Daglar tablosu 3
sütundan oluflmaktad›r. ‹lk sütun olan DagID’de her bir da¤ için farkl› olacak fle-
kilde bir tamsay› de¤er tutulur. Bunu garanti alt›na almak için DagID alan› birin-
cil anahtar olarak tan›mlanm›flt›r. Bunun sayesinde Daglar tablosuna ayn› DagID
de¤erine sahip kay›tlar›n eklenmesi engellenmifl olur. Her kay›t için farkl› bir nu-
mara olmas›n› veritaban› yönetim sistemi sa¤lamaktad›r. Tablonun ikinci sütunu
olan UlkeID ise tabloda kay›tl› bulunan da¤›n hangi ülkeye ait oldu¤unun bilgi-
sini tutar. Bu sütundaki kay›tlar›n herbiri Ulkeler tablosundaki UlkeID alan›na
bir referans olarak düflünülebilir. Tan›mlanan bu referans de¤er sayesinde Daglar
tablosundaki flehir bilgisi Ulkeler tablosundaki veriyle birlefltirilerek bir da¤›n
hangi ülkeye ait oldu¤u bilgisi bulunabilir. Üçüncü sütun olan DagAdi’nda ise
da¤lar›n isimleri tutulmaktad›r. Tablonun tasar›m› Tablo 4’te verilmifltir:
SehirAdi varchar(50)
Daglar tablosunu oluflturmak için gerekli olan SQL komutu flöyle olmal›d›r:
Tablo 2’deki tablo verileri göz önüne al›n›rsa, bu flekilde tan›mlanan Ulkeler
tablosuna UlkeID de¤eri 49 olan baflka bir kay›t eklenemeyecekti. Çünkü Ulke-
ID sütunu birincil anahtar olarak tan›mlanm›flt›r ve bu sütunda 49 de¤erine sahip
sadece tek bir kay›t olabilir. Bu kay›t tabloda oldu¤u için tasar›m nedeniyle ayn›
numaradan yeni bir ülke kayd›n›n eklenmesine VTYS izin vermez.
74 Veritaban› Uygulamalar›
ÖRNEK 4.1 Ulkeler tablosunda bulunmayan bir ülke için Sehirler tablosuna flehir bilgisi girile-
mesin.
ÖRNEK 4.2 Ulkeler tablosundan bir ülke silindi¤inde Sehirler tablosunda o ülkeye ait olan ka-
y›tlar›n da otomatik olarak silinmesini sa¤layal›m.
Ulkeler tablosundan bir ülke silinmek istendi¤inde, e¤er Sehirler tablosunda o ül- ÖRNEK 4.3
keyi referans gösteren baflka kay›tlar bulunuyorsa silme iflleminin gerçeklefltirilme-
mesini sa¤layal›m.
Ulkeler tablosundan bir ülkenin UlkeID de¤eri de¤iflti¤inde Sehirler tablosunda o ÖRNEK 4.4
ülkenin içindeki flehirlerin kay›tlar›n›n UlkeID de¤erleri otomatik olarak de¤iflsin.
rilmesi için, veritaban› normalizasyonu (ayr›flt›rma) olarak bilinen bir süreç iflletilir.
Normalizasyon, çok say›da kolondan oluflan tablolarda veri tekrar›n› engelleye-
bilmek için bu tablolar›n daha az kolondan oluflan atomik tablolara ayr›flt›r›lmas›
ifllemi olarak tan›mlanabilir. Normalizasyon veritaban›nda bulunan tablolardaki
kolonlar›n hangi alanlardan oluflaca¤›na karar vermeyi de içerir. Genel olarak ka-
bul görmüfl 5 normalizasyon kural› vard›r. Veritaban› tasar›m› yaparken, bu kural-
lar›n uygulanmas› zorunlu olmamakla beraber ilk 3 tanesinin kullan›m›nda büyük
fayda bulunmaktad›r. Bu bölümde, bahsi geçen 5 normalizasyon kural›n›n ilk 3 ta-
nesinden bahsedilecektir. Son iki normalizasyon kural› her ne kadar veri tekrar›n›
azaltsa da tablolar›n okunabilirli¤ini düflürdü¤ü için nadiren kullan›l›r.
1. Normalizasyon Kural›: Veritaban›ndaki tablolarda bir sat›rda bulunan bir
alan sadece tek bir bilgi içerebilir. Örne¤in bir YONETMENBILGILERI tablosunda
yönetmenlerin çekmifl olduklar› filmlerin bilgisini tutmak istedi¤imizi düflünelim.
Bu filmleri FILM1, FILM2 diye ayr› ayr› sütunlarda tutmak ilk normalizasyon ku-
ral›na ayk›r›d›r. Afla¤›da bu kurala uygun olmayan bir tablo tasar›m› verilmektedir.
Tablo 4.5
Birinci YONETMENID YONETMENADI UYRUK FILM1 FILM2 FILM3
normalizasyon
kural›na uymayan Er Ryan’› Az›nl›k
1 Steven Spielberg A.B.D E.T.
tablo tasar›m› Kurtarmak Raporu
Gelece¤e Forrest
2 Robert Zemeckis A.B.D Mesaj
Dönüfl Gump
Yedi
3 Akira Kurosowa Japonya Yojimbo Rashomon
Samuray
TabloAd›: YONETMENB‹LG‹LER‹
Tablo 5’te gösterilen tasar›mdaki s›k›nt›, 100 tane film çekmifl bir yönetmen için
100 ayr› sütunun tan›mlanmas›n›n gerekmesidir. Böyle bir tasar›m, hem tablo yöne-
timini zorlaflt›racak, hem de tek bir film çekmifl yönetmen için 99 tane bofl sütun
oluflmas›na sebep olacakt›r. Tasar›m›n bir numaral› kurala uygun olmas› için, yönet-
menlerin çektikleri film bilgilerinin kolonlara de¤il de sat›rlara yay›lmas› gereklidir.
Tablo 4.6 YONETMENID YONETMENADI UYRUK FILM
Birinci
normalizasyon 1 Steven Spielberg A.B.D. Er Ryan’› Kurtarmak
kural›na uygun
tablo tasar›m› 1 Steven Spielberg A.B.D. E.T.
1 Steven Spielberg A.B.D. Az›nl›k Raporu
2 Robert Zemeckis A.B.D. Gelece¤e Dönüfl
2 Robert Zemeckis A.B.D. Mesaj
3 Robert Zemeckis A.B.D. Forrest Gump
3 Akira Kurosowa Japonya Yedi Samuray
3 Akira Kurosowa Japonya Yojimbo
3 Akira Kurosowa Japonya Rashomon
... ... ... ...
Tablo Ad›: YONETMENLER
4. Ünite - ‹liflkisel Veritabanlar› ve Veritaban› Tasar›m› 77
Tablo 4.8
FILMID YONETMENID FILMADI
YONETMENLER
1 1 Er Ryan’› Kurtarmak tablosunun ikinci
k›sm›d›r.
2 1 E.T.
3 1 Az›nl›k Raporu
4 2 Gelece¤e Dönüfl
5 2 Mesaj
6 2 Forrest Gump
7 3 Yedi Samuray
8 3 Yojimbo
9 3 Rashomon
... ... ...
TabloAd›: FILMLER
UYRUKBILGISI
TabloAd›:U
Tablo 4.10
YONETMENBILGISI YONETMENID YONETMENADI UYRUKID
tablosunun üçüncü
1 Steven Spielberg 1
normalizasyon
kural›na göre 2 Robert Zemeckis 1
ayr›flt›r›ld›ktan
3 Akira Kurosowa 2
sonraki durumu.
... ...
TabloAd›: YONETMENBILGISI
Özet
N
A M A Ç
‹liflkisel veritaban›n›n hangi uygulamalarda ya- N
A M A Ç
Bir veritaban›n› oluflturan temel bileflenleri liste-
1 rarl› oldu¤una karar verebileceksiniz. 3 leyebilecek ve iliflkisel veritaban› yönetim sistemi-
‹liflkisel veritaban› modeli, günümüzde kullan›- nin nas›l çal›flt›¤›n› aç›klayabileceksiniz.
lan bir çok veritaban› uygulamas›nda baflar›yla ‹liflkisel veritaban› sistemlerinde, veriler tablo ad›
kullan›lmaktad›r. Veri tekrar›n› engelleyecek fle- verilen yap›larda tutulur. Her tablo, farkl› say›da
kilde verilerin birbiriyle iliflkili tablolarda tutul- alandan veya di¤er bir deyiflle özellikten oluflur.
mas›, sorgu h›z›n› art›rmakta ve veritaban› per- Tabloya veri girilirken, alanlara karfl›l›k gelen de-
formans›n› yükseltmektedir. ¤erler, o alan›n veri tipinde girilerek kay›tlar olufl-
N
turulur. Farkl› tablolar›n kolonlar› aras›ndaki ilifl-
‹liflkisel veritaban› uygulamalar›n› di¤er verita- kiler, iliflkisel veritaban›n›n en temel tasar›m özel-
AM A Ç
N
Hiyerarflik ve a¤ modellerinde, çoktan çoka veri
modellerinde s›k›nt›lar yaflanmakta ve iliflkisel A M A Ç Temel SQL sorgular› kurabileceksiniz.
4
veritaban› modeli daha iyi sonuç vermektedir. SQL (Yap›sal Sorgu dili), 1980’lerde gelifltirilen
Ancak, birbirine ba¤l› binlerce tablonun bulun- ve günümüzde yayg›n flekilde kullan›lan ulusla-
mas› ve çok say›da tabloyu ilgilendiren sorgula- raras› bir standarda dayal› veritaban› sorgu dili-
malarda, örne¤in veri madencili¤i gibi uygula- dir. Veritaban› yönetim sistemlerinin büyük bir
malarda, iliflkisel veritaban› modeli iyi çal›flma- k›sm›, SQL dilini standartlara uygun flekilde des-
maktad›r. Bu nedenle, veri madencili¤i uygula- tekler. SQL diliyle, veritaban› ve içinde tablolar
malar›nda farkl› modeller kullan›lmaktad›r. oluflturulabilir, farkl› koflullara dayal› sorgular ku-
rulabilir, veritaban› veya tablo silinebilir, kay›t
eklenebilir, silinebilir ve de¤ifltirilebilir. Bir kaç
sat›rl›k komutlar sayesinde, veritaban›nda çok
say›da kayd› ilgilendiren ifllemler kolayl›kla ger-
çeklefltirilebilir.
80 Veritaban› Uygulamalar›
Kendimizi S›nayal›m
1. ‹liflkisel veritaban› sistemlerinde iliflkiler afla¤›dakiler- 5. SQL komutlar›nda kullan›lan SERIAL anahtar kelime-
den hangisiyle sa¤lan›r? sinin ifllevi nedir?
a. ‹ki ayr› veritaban›nda yer alan ve ayn› isimdeki a. Kolonun birincil anahtar olarak kullan›lmas›n›
tablolar›n kullan›lmas›yla sa¤lamak
b. Tablo içinde yer alan kolonlar›n özelliklerine b. Eklenen kay›tlar›n, s›rayla veritaban›na eklen-
göre mek
c. Farkl› tablolarda tekrar eden kay›tlar›n eklenme- c. Yabanc› anahtar de¤erlerinin otomatik olarak
siyle oluflturulmak
d. Farkl› tablolardaki kolonlar aras›ndaki iliflkilerle d. Yeni bir kay›t eklendi¤inde, eflsiz bir say›n›n bir
e. ‹ndeks dosyalar›n›n kullan›lmas›yla kolon için otomatik olarak üretilmesini sa¤la-
mak
2. Veritaban›nda sorgu yapmaya yarayan SQL komutu e. Kolonlara tamsay› de¤erini vermek
afla¤›dakilerden hangisidir?
a. SELECT 6. CREATE TABLE iflleminin içinde yer alan, “FOREIGN
b. UPDATE KEY (UlkeID) REFERENCES Ulkeler(UlkeID)” ifadesi-
c. DROP nin anlam› afla¤›dakilerden hangisidir?
d. INSERT INTO a. Ulkeler tablosunda sadece yabanc› anahtar bu-
e. CREATE lundu¤unu belirtir.
b. Ulkeler tablosundaki UlkeID kolonunun birincil
3. Veritaban›n›n silinmesi için kullan›lan SQL komutu anahtar oldu¤unu gösterir.
afla¤›dakilerden hangisidir? c. Tablo içinde yer alan UlkeID kolonunun, Ulke-
a. DELETE ler tablosundaki UlkeID kolonuyla iliflkili oldu-
b. DROP ¤unu belirtir.
c. UPDATE d. UlkeID alan›n›n yabanc› anahtar ve birincil anah-
d. INSERT INTO tar olarak tan›mland›¤›n› anlat›r.
e. ALTER TABLE e. Ulkeler tablosunda yabanc› anahtar bulunmad›-
¤›n› gösterir.
4. ID de¤erinin iki ayr› tabloda birbiriyle iliflkili flekilde
tutuldu¤uvarsay›m›yla, bir tablodaki bir ID de¤eri de- 7. Çeflitli SQL komutlar›n›n içinde bulunan WHERE
¤iflti¤inde di¤er tabloda yer alan kay›tlardaki ID de¤eri- anahtar kelimesinin ifllevi nedir?
ninde de¤iflmesi için, CREATE TABLE komutunda yer a. Hangi tablo üzerinde ifllem yap›laca¤›n› belirt-
almas› gereken komut afla¤›dakilerden hangisidir? mek
a. ON UPDATE CASCADE b. ‹fllemin yap›lmas› için gerekli koflulu göstermek
b. ON DELETE RESTRICT c. ‹fllemin, hangi veritaban›nda uygulanaca¤›n›
c. ON DELETE CASCADE göstermek
d. ON UPDATE RESTRICT d. Hangi sunucuda ifllemin gerçeklefltirilece¤ini be-
e. ON UPDATE DELETE lirtmek.
e. Hangi kolonlar aras›nda iliflki oldu¤unu göster-
mek.
4. Ünite - ‹liflkisel Veritabanlar› ve Veritaban› Tasar›m› 81
Yararlan›lan ve Baflvurulabilecek
Kaynaklar
P. Revesz (2010.) Introduction to Databases. New York,
Springer,
G. C. Simsion and G. C. Witt (2005.) Data modeling es-
sentials, 3rd ed, Amsterdam ; Boston: Morgan Kauf-
mann Publishers,
www.vikipedi.org
Seminer.linux.org.tr
Belgeler.linux.org.tr
PostgreSQL dokümanlar› http://www.post-
gresql.org/docs/8.4/
5
VER‹TABANI UYGULAMALARI
Amaçlar›m›z
N
Bu üniteyi tamamlad›ktan sonra;
SQL diliyle ve C++, C# ve Java gibi yordamsal diller aras›ndaki fark› aç›kla-
N
yabileceksiniz.
N
Bir anda yap›lmas› gereken SQL komutlar›ndan oluflan hareketi kurabilecek-
N
siniz.
N
Tetik fonksiyonlar›n ifllevini aç›klayabileceksiniz.
PL/pgSQL dilinde yaz›lm›fl programlar› çal›flt›rabileceksiniz.
SQL proglamlama dilinde s›k kullan›lan komutlar› listeleyebileceksiniz.
Anahtar Kavramlar
• SQL dili • SELECT
• INSERT • UPDATE
• DELETE • Hareket (transaction)
• PL/PgSQL • Tetikler (triggers)
‹çerik Haritas›
• G‹R‹fi
• SQL KOMUTLARI NASIL
ÇALIfiTIRILIR
• SQL KAVRAMLARI
Veritaban› Temel Sol
Kavramlar› ve • SQL VER‹ T‹PLER‹
Uygulamalar› Komutlar› • SQL D‹L‹NDE FONKS‹YONLAR VE
‹fiLEÇLER
• SQL KOMUTLARI
• SELECT, INSERT INTO, UPDATE,
DELETE
Temel SQl Kavramlar› ve
Komutlar›
G‹R‹fi
SQL (Yap›sal Sorgu Dili), iliflkisel veritabanlar›yla ilgili bütün ifllemleri gerçeklefltir-
mek üzere gelifltirilen standartlaflm›fl bir programlama dilidir. Yazd›¤›m›z SQL ko-
mutlar›yla veritaban› yönetim sistemine ne istedi¤imizi belirtiriz. ‹stedi¤imiz verile- Programlama dillerinin
rin nas›l getirilece¤i, SQL komutlar›nda bulunmaz. Bu anlamda, Java, C#, C ve C++ seviyesi, insan diline olan
yak›nl›¤›yla ölçülür. En
gibi programlama dillerinde yaz›lan programlardaki gibi, yap›lacak ifl ad›mlar ha- yüksek seviyeli programlama
linde, di¤er bir deyiflle, algoritmik olarak belirtilmez. Veritaban› yönetim sistemle- dili insan dilidir. E¤er
bilgisayarlar insan dilini
ri verileri nas›l bulaca¤›n› kendisi belirler. Bu anlamda, SQL dili Java ve C# gibi anlayacak ve insanlar›n
programlama dillerine göre daha üst seviyeli bir dildir. cümlelerle belirtti¤i iflleri
yapabilecek duruma
Bir önceki ünitede, temel SQL komutlar›yla ilgili k›sa bir girifl yapm›fl ve SE- geldiklerinde, günümüzde
LECT, UPDATE, INSERT INTO gibi komutlar› tek tablo üzerine uygulayarak çeflit- kulland›¤›m›z programlama
dillerine gerek
li örnekler vermifltik. Ancak, birden fazla tablodan veri getirilmesi söz konusu ol- duyulmayacakt›r.
du¤unda, SQL komutlar› oldukça karmafl›k olabilir. SQL dilinde çeflitli amaçlarla
kullan›lan çok say›da anahtar kelime ve komut oldu¤u unutulmamal›d›r. Bu ünite-
de, temel SQL kavramlar› anlat›ld›ktan sonra yayg›n olarak kullan›lan SELECT, UP-
DATE ve INSERT INTO gibi komutlar›n kullan›m› ayr›nt›l› flekilde ifllenecektir.
Ünitenin içinde verilecek örneklerin uygulanmas› için, Türkiye ‹statistik Kuru-
mu (TÜ‹K) verilerine dayanan ve dört tablodan oluflan örnek bir veritaban› olufl-
turulmufltur. TÜ‹K, Türkiye’yle ilgili istatistikler üreten ve kamuya web sitesi üze-
rinden sunan bir kurumdur. ‹statiksel bilgilere, http://www.tuik.gov.tr/ adresinden
“veritabanlar›” ba¤lant›s›na t›klanarak eriflilebilir. Site, web sayfalar›nda girilen kri-
terlere göre, Excel veya PDF doküman› üretmektedir. Bu bilgiler kullan›larak bu
kitapta kullan›lacak örnek veritaban› oluflturulmufltur.
Yedek (backup) olarak kaydedilen bu veritaban›, http://www.anado-
lu.edu.tr/kitap/ornek.backup adresinden indirilebilir. ‹lk olarak, pgAd-
min program›yla AUDB isimli veritaban› yarat›lmal›d›r. Nesne izleyicisi (Object
Browser) içinden AUDB veritaban› üzerine sa¤ t›klayarak, “Restore” (yedekten
yükleme) opsiyonu seçilmeli (fiekil 1) ve ard›ndan gelen pencerede ornek.bac-
kup dosyas› seçilerek OK (tamam) tufluna bas›lmal›d›r.
86 Veritaban› Uygulamalar›
fiekil 5.1
Örnek
veritaban›n›n
yüklenmesi
dogumist2008 ogrdurum
Tablo 5.1
iller iller tablosu örnek
veriler
id iladi nufus nufuserkek nufuskadin
Tablo 5.2
dogumist2008 2008 y›l›n do¤um
istatistikleri örnek
ilid sayierkek sayikadin veriler
1 19670 40621
2 6169 12718
3 5094 10556
4 6383 13428
Tablo 5.3
ilogrdurum ilogrdurum
tablosunun içeri¤i
durumid ilid ogrdrmid sayitoplam sayierkek sayikadin
1 1 1 148634 29472 119162
2 1 2 398108 197196 200912
3 1 3 480531 235663 244868
4 1 4 211000 111116 99884
5 1 5 84733 51534 33199
. . . ... ... ... ... ... ... ... ... ...
258 26 8 4220 2173 2047
. . . ... ... ... ... ... ... ... ... ...
Tablo 5.4
ogrdurum Ö¤renim durumu
listesi
ogrdrmid aciklama
pgAdmin SQL
editörünün
seçilmesi
fiekil 5.4
SQL editörü
5. Ünite - Temel SQL Kavramlar› ve Komutlar› 89
SQL KAVRAMLARI
SQL dili, ilk kullan›ld›¤› dönemden itibaren düzenli bir geliflim seyri izlemifltir.
Standartlar, iliflkisel veritabanlar›n› kullanan uygulama gelifltiricilerin yeni talepleri-
ne ve gereksinimlerine göre ilerleme göstermifltir. Bu bölümde, tarihsel geliflim
içinde gereksinimlere göre standartlara eklenen kavramlar anlat›lacakt›r.
Hareket (Transaction)
Hareket (transaction), ayn› anda s›rayla yap›lmas› gereken birden fazla ifllemin tek
bir seferde yap›lmas›d›r. Yar›da kesilmesi durumunda veri tutars›zl›¤› gerçekleflen
ifllemlerden oluflur. Örne¤in, yeni il yap›lan bir ilçenin oldu¤u bir durumu düflüne-
lim. ‹l yap›lan ilçenin nüfusunun, daha önce ba¤l› oldu¤u il nüfusundan ç›kar›lma-
s› ve ard›ndan da iller tablosuna yeni bir kay›t eklenmesi gereklidir. Bu iki ifllemin
yap›lmas› s›ras›nda, ifllemlerden birinin hata vererek yap›lamamas›, tablodaki veri
tutarl›l›¤›n› ortadan kald›racakt›r. Yap›lamayan ifllem nedeniyle, iller tablosundaki
nüfus de¤erlerinin toplam› Türkiye’nin nüfusuna karfl›l›k gelmeyecektir. Hareket
kullanan bir SQL komutunun örne¤i, fiekil 6’da gösterilmektedir. fiekil’de de gös-
90 Veritaban› Uygulamalar›
Veritaban› terminolojisinde, terildi¤i gibi, hareketlerin gerçeklefltirilmesiyle ilgili çal›flt›r›lan SQL komutlar›n›n
hareketin bölünmeyen
(atomic), tutarl› s›ras› flöyledir:
(consistent), izole (isolated) 1. Hareketi bafllatmak için BEGIN komutu kullan›l›r
ve dayan›kl› (durable)
olmas› ve koflullar›n ilk 2. Birden fazla sorgu ve veri de¤iflikli¤i ifllemi arka arkaya yap›l›r.
harfleri bir araya 3. E¤er hata yoksa, di¤er bir deyiflle bütün ifllemler hatas›z gerçeklefltiyse, ha-
reket içinde yer alan ifllemler veritaban›na, COMMIT komutuyla uygulan›r ve
getirildi¤inde ACID (Türkçe
olarak AS‹T) olarak bilinen
koflulu sa¤lamas› gereklidir.
d›flar›daki kullan›c›lar ancak bundan sonra de¤ifltirilen verilere eriflirler.
4. E¤er hata varsa ve ifllemlerden biri bile yap›lamad›ysa, daha veritaban›na
uygulanmadan ROLLBACK komutuyla hareket sonland›r›l›r ve yap›lan ifl-
lemler iptal edilir.
fiekil 5.6
Antalya’n›n
de¤erlerini BEGIN;
de¤ifltiren ve UPDATE iller SET nufus=755427, nufuserkek=374990, nufuskadin=380437 WHERE id = 7;
Alanya ilinin INSERT INTO iller VALUES (82, ‘Alanya’, 102553, 51443, 51110);
bilgilerini COMMIT;
ekleyen
hareket
fiekil 5.7
fiekil 5.8
AUDB veritaban›
alt›nda tan›ml›
fonksiyonlar
Tetik fonksiyonlar
Tetik (trigger), veritaban›nda tablolarda veya görüntülerde (view) gerçekleflen de-
¤ifliklik durumlar›nda otomatik olarak veritaban› yönetim sistemi taraf›ndan çal›flt›-
r›lan fonksiyonlard›r. Tetikler tablolardaki veri tutarl›l›¤›n› sa¤layan önemli özellik-
lerden biridir. Örne¤in, iller tablosundaki illerden biri silindi¤inde, ilogrdurum
ve dogumist2008 tablolar›ndan da silinen ille ilgili kay›tlar›n kald›r›lmas› gere-
kecektir. Bu flekilde, iller tablosunda gerçekleflen bir silme ifllemiyle tetiklenen
bir fonksiyonla, tablolardaki veri tutarl›l›¤› sa¤lanabilir.
Genellikle tetik fonksiyonlar›n› tetikleyen INSERT, UPDATE, DELETE komutla-
r›d›r. SQL komutundan önce veya sonra çal›flt›r›lmak üzere iki flekilde tan›mlana-
bilirler. Tetik fonksiyonlar, C dilinde veya PL/pgSQL dilinde yaz›labilirler. Dosya
sisteminde tutulan PL/pgSQL program›n›n, INSERT, UPDATE ve DELETE komutla-
r›n›n herhangi birinin çal›flt›r›lmas›ndan önce tetiklenmesi için yap›lmas› gerekli ta-
n›m fiekil 9’da gösterilmektedir.
fiekil 5.9
PL/pgSQL Dili
SQL dilinde yordamsal özellikler bulunmaz. SQL sorgular›nda, veritaban›ndan
hangi verilerin istendi¤i tarif edilir ve veritaban› yönetim sistemi SQL komutunda-
ki ifadeyi yorumlayarak talep edilen verileri getirir. Yordamsal dillerde iflin nas›l
yap›laca¤› algoritmik olarak anlat›lmal›d›r. Her iki yaklafl›m›n da kendine özgü
avantajlar› ve dezavantajlar› bulunur. Ancak, yordamsal dillerle, SQL sorgular› bir-
lefltirilirse iki yaklafl›m›n da en iyi taraflar› bir araya getirilmifl olur. Verilerin verita-
ban›ndan getirilmesi SQL komutlar›yla yap›l›rken, üzerinde yap›lacak karmafl›k ifl-
lemler için yordamsal özellikler kullan›l›r.
Di¤er veritaban› yönetim sistemleri gibi PostgreSQL de yordamsal dillere (pro-
cedural language) destek verir. Yordamsal bir dilde yaz›lan program›, veritaban›
yönetim sistemi çal›flt›ramaz ve çal›flt›racak olan yorumlay›c› yaz›l›ma yönlendirir.
Yorumlay›c›, veritaban› yönetim sistemiyle bütünleflik flekilde çal›fl›r. PL/pgSQL,
PL/Tcl, PL/Perl ve PL/Python dillerinin yorumlay›c›lar› PostgreSQL da¤›t›m›yla be-
raber gelmektedir. Oracle ve IBM DB2 gibi yayg›n kullan›lan ticari veritaban› yö-
netim sistemlerinde kullan›lan PL/SQL diline benzedi¤i için, PL/pgSQL di¤er yor-
damsal dillere göre daha genifl bir programc› kitlesi taraf›ndan kullan›l›r.
PL/pgSQL’in tasar›m amaçlar› flöyledir:
1. Kullan›c›lar›n tan›mlayaca¤› yordamlar›n ve tetik fonksiyonlar›n oluflturul-
mas›
2. SQL diline, for döngüsü, while döngüsü gibi kontrol yap›lar›n›n eklenmesi
3. Karmafl›k hesaplamalar›n yordamsal mant›kla yap›labilmesi
4. Veritaban› yönetim sisteminin güvenlik mekanizmalar›n›n yavafllat›c› etkisi
olmadan, veritaban›na bütünleflik flekilde program çal›flt›rabilmesi
5. Kolay ö¤renilme ve kullan›m kolayl›¤› sa¤lama
PL/pgSQL programlar›yla gerçeklefltirilen ifllerde elde edilen kazan›mlar flunlar-
d›r:
1. PL/pgSQL programlar› veritaban› sunucusu içinde çal›flt›r›ld›¤›ndan, sunucu
ve istemci aras›nda a¤ sistemi üzerinden akan trafik miktar›n› azalt›r. Veri-
nin a¤ üzerinden aktar›lmas›, sunucu sistem içinde verinin transfer edilme-
sine göre çok daha yavaflt›r.
2. Uygulama yaz›l›m› ve sunucu aras›nda, ara sonuçlar›n aktar›m› gerekebilir.
Gelen sonuçlara göre, farkl› sorgular›n gönderilmesi s›ras›nda gerçekleflen
a¤ üzerinden yap›lan iletiflimi engeller.
3. Sunucu ve istemci aras›nda gerçekleflen ard›fl›k sorgulamalar› azalt›r. SQL
sorgular›yla yap›labilen basit hesaplamalar, yordamsal programlarla yap›ld›-
¤›nda ek sorgulamalara gerek duyulmaz.
Bir PL/pgSQL program›n›n yap›s› flöyledir:
[ <<etiket>> ]
[ DECLARE
değişken tanımları ]
BEGIN
Komutlar;
END [ etiket ];
5. Ünite - Temel SQL Kavramlar› ve Komutlar› 93
fiekil 5.10
PL/pgSQL program
editörü ve program›
çal›flt›rma
94 Veritaban› Uygulamalar›
fiekil 5.11
PL/pgSQL
fonksiyonunun yer
ald›¤› bölüm
fiemalar (schemas)
PostgreSQL, birden fazla veritaban›n› kullan›c›lara sunabilmektedir. Ancak, her-
hangi bir tablo tan›ml› oldu¤u veritaban› d›fl›ndaki bir veritaban›nda yer alamaz.
Di¤er bir deyiflle, veritabanlar› aras›nda veri paylafl›m› söz konusu de¤ildir. Her bir
istemci, VTYS’ne gönderdi¤i komutlarla tek bir veritaban›na eriflebilmektedir. Bu
k›s›t› esnetmenin yolu, veritabanlar›nda flema kullan›m›d›r. Bir veritaban›, içinde
tablolar bulunan ve flema (schema) ad› verilen birden fazla yap›ya sahip olabilir.
Her flema içinde, tablolarla birlikte veri tipleri, fonksiyonlar ve iflleçler de tan›ml›-
d›r. Ayn› tablo, farkl› flemalarda bulunabilir. Veritabanlar›na eriflim konusundaki
k›s›t›n aksine, kullan›c› birden fazla flemaya eriflebilir.
PostgreSQL veritaban› yönetim sisteminde, bir veritaban› oluflturuldu¤unda
public ad› verilen bir flema da otomatik olarak yarat›lmaktad›r. Ancak, kullan›c› bu-
nun yan›na farkl› flemalar da oluflturabilir. fiemalar›n kullan›lmas›ndaki avantajlar
flöyle özetlenebilir:
5. Ünite - Temel SQL Kavramlar› ve Komutlar› 95
N N
SIRA S‹ZDE SIRA S‹ZDE
SELECT id, iladi from iller;
‹NTERNET ‹NTERNET
96 Veritaban› Uygulamalar›
fiekil 5.13
Görüntünün
çal›flt›r›lmas›yla
elde edilen kay›tlar
‹mleçler (Cursors)
Veritaban› yönetim sistemlerinin ve uygulama yaz›l›mlar›n›n karfl›laflt›klar› en
önemli sorunlardan biri, bir sorgu gönderildi¤inde gelen veri miktar›n›n, bilgisa-
yardaki belle¤in kald›ramayaca¤› kadar çok olmas›d›r. ‹mleç ad› verilen özellikle,
uygulamalar›n geri dönen kay›tlar› birer birer veya iflleyebilecekleri miktarda alma-
lar› sa¤lanabilmektedir. ‹mleç, sorgunun getirdi¤i sat›rlar› tutan ve kay›tlar› birbiri
arkas›na gelen sat›rlar halinde almas›n› sa¤layan bir veri yap›s›d›r. ‹mleçler, özel-
likle PL/pgSQL programlar›nda, büyük tablolar üzerinde yap›lan ifllemlerde karfl›-
lafl›labilecek sistem belle¤inin yetmemesi durumunu engellemektedir.
t›r. Sekiz baytl›k bigint veri tipinde tutulabilen maksimum say›, integer’a gö- numeric ve decimal
re çok daha büyüktür. numeric ve decimal tipindeki de¤erlerin çözünürlü¤ü
tipindeki tan›ml› alanlara
konulabilecek en küçük ve
kullan›c› taraf›ndan belirlenebilmektedir. en büyük de¤erleri
bulunmamaktad›r. Kullan›c›
PostgreSQL içinde, ilerideki ünitelerde gösterilece¤i gibi, geometrik nesnelerin
tutuldu¤u veri tipleri de tan›mlanm›flt›r. Box, circle, line, lseg, path,
istedi¤i aral›kta de¤er
tan›mlayabilmektedir.
point ve polygon tipleri kullan›larak, geometrik nesnelerin bulundu¤u harita- Ancak, bu tiplerdeki
de¤iflkenler üzerinde ifllem
lar ve co¤rafi modeller oluflturulabilir. yapmak real ve
Zaman dilimi (time zone), her ülkenin yer ald›¤› boylama göre olan saat dilimini double precision
biçimlerine göre daha
göstermektedir. Örne¤in, ayn› anda, Almanya’daki saatle Türkiye’deki saat aras›nda yavaflt›r.
1 saat fark olmaktad›r. Uluslararas› ifller yapan bir firman›n veritaban›nda, ifllem za-
man›n›n kaydedilmesi için sabit bir zaman diliminin referans al›nmas› gereklidir. ‹fl-
lem zaman›n›n tutulaca¤› alan›n tan›mlanmas›nda, Türkiye saatine göre ifllem yap›l-
d›¤›n› gösterebilmek için timestamp with time zone ifadesi kullan›lmal›d›r.
Tablo 5’te gösterilen veri tipleri kullan›larak bir tablo flöyle oluflturulabilir:
D Ü fi Ü N E L ‹ M D Ü fi Ü N E L ‹ M
PostgreSQL’de tan›ml› karfl›laflt›rma iflleçleri Tablo 6’da gösterilmektedir. Bu ifl-
leçler kullan›larak karmafl›k sorgular kurulabilir. Tablo 7’de aritmetik iflleçler ve
S O R U Tablo 8’de SQL’de
S O R U s›k kullan›lan fonksiyonlar görülmektedir.
iller tablosunda yap›lan sorguda, ‹stanbul ili d›fl›ndaki, nüfuslar› bir milyon-
dan fazla olan illerin nüfuslar›n›n toplam› flöyle bulunabilir:
D‹KKAT D‹KKAT
SELECT SUM(nufus) FROM iller WHERE id<>34 AND
nufus>1000000;
N N
SIRA S‹ZDE SIRA S‹ZDE
SUM fonksiyonu, nufus kolonunda sorgu sonucu gelen bütün de¤erlerin top-
AMAÇLARIMIZ
sa¤lar. SUM fonksiyonu gibi alanlar üzerinde y›¤›n ifllem yapan di¤er
lanmas›n› AMAÇLARIMIZ
fonksiyonlar, kitab›n ilerleyen bölümlerinde anlat›lacakt›r.
‹ NDT‹EKRKNAETT ‹ NDT‹EKRKNAETT
N N
SIRA S‹ZDE SIRA S‹ZDE
AMAÇLARIMIZ AMAÇLARIMIZ
5. Ünite - Temel SQL Kavramlar› ve Komutlar› 99
% Mod ifllemi 12 % 5 2
^ üstel 2^5 32
|/ karekök |/ 25 5
! faktöryel 4! 24
Ad uzunlu¤u 5 karakter olan illeri bulan SQL komutunu yaz›n›z. SIRA S‹ZDE SIRA S‹ZDE
4
SQL KOMUTLARI
PostgreSQL veritaban› yönetim sisteminin SQL standartlar› içindeD Ü fi Üdestekledi¤i
NEL‹M çok D Ü fi Ü N E L ‹ M
say›da SQL komutu bulunmaktad›r. Desteklenen SQL komutlar›, befl ana bafll›kta
incelenebilir: S O R U S O R U
1. ALTER komutlar›: veritaban› nesneleri üzerinde de¤ifliklik yap›lmas› için kulla-
n›l›r.
a. ALTER DATABASE : veritaban›n›n özelliklerini de¤ifltirir. D ‹ K K A T D‹KKAT
b. ALTER DEFAULT PRIVILEGES : veritaban›na varsay›lan eriflim yetkilerini de-
N N
¤ifltirir. SIRA S‹ZDE SIRA S‹ZDE
c. ALTER FUNCTION - Bir fonksiyonun tan›m›n› de¤ifltirir.
d. ALTER GROUP - Eriflim grubu içindeki rolleri veya isimleri de¤ifltirir.
e. ALTER INDEX - bir tablo indeksinin tan›m›n› de¤ifltirir.AMAÇLARIMIZ AMAÇLARIMIZ
f. ALTER SCHEMA - fleman›n tan›m›n› de¤ifltirir.
g. ALTER SERVER - a¤a ba¤l› uzak sunucunun tan›m›n› de¤ifltirir.
h. ALTER TABLE - tablonun tan›m›n› de¤ifltirir. K ‹ T A P K ‹ T A P
i. ALTER TABLESPACE - tablo isim alan›n›n tan›m›n› de¤ifltirir.
j. ALTER TRIGGER - teti¤in özelliklerini de¤ifltirir.
k. ALTER USER - veritaban› rolünü de¤ifltirir. TELEV‹ZYON TELEV‹ZYON
l. ALTER VIEW - görüntünün tan›m›n› de¤ifltirir.
2. CREATE komutlar›: yeni veritaban› nesnesi yarat›r.
a. CREATE DATABASE - yeni bir veritaban› oluflturur.
b. CREATE FUNCTION - yeni bir fonksiyon oluflturur. ‹NTERNET ‹NTERNET
c. CREATE GROUP - yeni bir veritaban› rolü oluflturur.
d. CREATE INDEX - yeni indeks oluflturur.
e. CREATE ROLE - yeni bir veritaban› rolü oluflturur.
f. CREATE SCHEMA - yeni bir flema oluflturur.
g. CREATE SERVER - a¤a ba¤l› uzak sunucuyu tan›mlar.
h. CREATE TABLE - yeni tablo tan›mlar.
i. CREATE TABLESPACE - yeni bir tablo alan› tan›mlar.
j. CREATE TRIGGER - Yeni bir tetik tan›mlar.
k. CREATE USER - yeni bir veritaban› rolü tan›mlar.
l. CREATE VIEW - yeni bir görüntü tan›mlar.
3. DROP komutlar›: veritaban› nesnesini silmek için kullan›l›r.
a. DROP DATABASE - veritaban›n› kald›r›r.
b. DROP FUNCTION - fonksiyonu kald›r›r.
c. DROP GROUP - veritaban› grup rolünü kald›r›r.
d. DROP INDEX - indeksi kald›r›r.
102 Veritaban› Uygulamalar›
SELECT
Bir SELECT komutu, üç ana bölümden oluflur ve genel olarak yaz›m› flöyle gerçek-
lefltirilebilir:
Yukar›daki sorguda, * harfi bütün alanlar›n getirilece¤ini gösteren özel bir sem-
boldür. Sorgu içindeki alanlar bölümünde alanlar›n nümerik oldu¤u varsay›l›rsa,
de¤erler üzerinde aritmetik ifllem yapt›ktan sonra veriler döndürülebilir.
SELECT 4 * 5;
SELECT cos(3.14159);
benzer isimle
(alias) sorgu
oluflturma
WHERE Koflullar›
WHERE bölümü, SELECT komutuyla getirilecek olan de¤erlerin sa¤lamas› gereken
koflullar›n belirtilmesi için kullan›l›r. Koflullar oluflturulurken, aritmetik de¤erlerin
karfl›laflt›r›lmas› yap›labildi¤i gibi, SQL dilinin sa¤lad›¤› küme ifllemlerinden ve alt-
sorgulardan da yararlan›labilir.
WHERE ifadesinde IN kelimesi, parantez içindeki küme setinin içindeki de¤er-
ler için sorgunun çal›flt›r›lmas›n› sa¤lamaktad›r:
N N
SIRA S‹ZDE SIRA S‹ZDE
AND 100000
AMAÇLARIMIZ AMAÇLARIMIZ
Sorgu çal›flt›r›ld›¤›nda sonuç olarak, nüfusu 83061 olan Tunceli ile 74710 nüfus-
lu Bayburt döndürülecektir.
K ‹ T A P K ‹ T A P
Sorgular›n Birlefltirilmesi
Baz› durumlarda, iki veya daha fazla sorgunun sonuçlar›n›n bir araya getirilmesi
gerekir. Bir araya getirme ifllemi üç farkl› flekilde gerçeklefltirilebilmektedir:
TELEV‹ZYON TELEV‹ZYON
1. Birleflim (UNION): iki sorgunun sonuçlar›n›n birlefltirilmesidir.
2. Kesiflim (INTERSECT): iki sorgunun kesiflim kümesinin getirilmesidir.
3. Hariç (EXCEPT): bir sorgunun getirdikleri d›fl›nda di¤er sorgunun de¤erle-
rinin getirilmesidir. ‹NTERNET ‹NTERNET
Sorgu birlefltirmeyle ilgili komutlar›n yaz›mlar› flöyle yap›labilmektedir:
Bu sorguda, her iki sorgunun getirdi¤i kay›tlar aras›nda ortak olan 54 numara-
l› Sakarya ili döndürülmektedir.
SIRA S‹ZDE EXCEPT kelimesini kullanarak yukar›daki sorguyu de¤ifltirin ve sonucu not edin.
SIRA S‹ZDE
6
INSERT INTO
D Ü fi Ü N E L ‹ M D Ü fi Ü N E L ‹ M
Veritabanlar›n›n güncel kalabilmesi için her zaman yeni verilerin eklenmesi gere-
kir. SQL dilinde veri eklemek için kullan›lan komut INSERT INTO komutudur. Afla-
S O R U S O R U iller tablosuna yeni bir kay›t eklemektedir:
¤›daki SQL komutu,
N N
SIRA S‹ZDE
VALUESSIRA S‹ZDE
komutu, bir kayd› oluflturmak için kullan›l›r. INSERT INTO, VALUES
içinde yer alan de¤erleri s›ras›yla tablodaki alanlara yükler. Bu komutun en büyük
AMAÇLARIMIZ k›s›t›, alanlar›n s›ras›n›n bilinmesinin gerekli olmas›d›r. Ancak, alanlar›n s›ras› bilin-
AMAÇLARIMIZ
meden de yeni kayda de¤erler yüklenebilir. Örne¤in, afla¤›daki komut s›ras› bilin-
meden de¤erlerin eklenmesini sa¤lamakt›r.
Yukar›daki sorguda, yeni kay›t sadece iladi ve id alanlar› dolu flekilde ek-
TELEV‹ZYON TELEV‹ZYON
lenmekte ve di¤er alanlara NULL de¤eri girilmektedir. E¤er CREATE TABLE komu-
tuyla tablo tan›m› yap›ld›¤› s›rada, NULL de¤erinin girildi¤i alanlar için NULL ola-
mayaca¤› k›s›t› konulsayd›, bu sorgu hata verecekti.
‹NTERNET
Tek bir ‹INSERT
NTERNET
komutuyla birden fazla yeni kay›t tan›mlanabilmektedir. VALU-
ES içinde, virgüllerle ayr›lm›fl flekilde yaz›lan kay›tlar, tek bir komutla veritaban›na
eklenebilir.
UPDATE
Veritaban›nda yer alan kay›tlardaki alanlar›n de¤ifltirilmesi ifllemi UPDATE komu-
tuyla gerçeklefltirilmektedir. Varolan bir kay›t üzerinde düzeltme yapmak için üç
bilgi gereklidir:
1. Tablonun ve alan›n isimleri
2. Alana konulacak yeni veri
3. Veritaban›ndaki hangi kayd›n de¤ifltirilece¤i
5. Ünite - Temel SQL Kavramlar› ve Komutlar› 107
Hat›rlanaca¤› gibi, veritaban›nda her kayd› temsil eden eflsiz say›lar›n tutuldu-
¤u bir alan›n olmas›na her zaman için gerek yoktur. Her kayd› temsil eden eflsiz
bir say›n›n olmas› ancak tablodaki bir alan›n birincil anahtar olarak tan›mlanmas›y-
la gerçekleflir. Örne¤in, iller tablosundaki id kolonu birincil anahtard›r. Birin-
cil anahtar kolonunda her kay›t farkl› bir numarayla temsil edilir ve di¤erlerine ay-
n› de¤er verilmez. Birincil anahtar kolonundaki de¤erler kullan›larak, UPDATE ko-
mutuyla sadece istenen kay›t de¤ifltirilebilmektedir.
Eskiflehir ilinin nüfus bilgisi de¤ifltirilmek istenirse, id kolonunun birincil anah-
tar olmas› kullan›larak flöyle bir komut kullan›labilir:
UPDATE iller
SET nufus=755427,
nufuserkek=374990,
nufuskadin=380437
WHERE id = 26;
DELETE
Veritaban›nda tutulan bir kay›t kullan›lmayaca¤› zaman silinebilir. Veritaban› uy-
gulamalar› gelifltirenler, genellikle verilerin silinmesini istemezler. Veriler silindik-
leri zaman geri getirilemezler ve tablonun yeniden indekslenmesi gerekir. Bunun
yerine, tabloda yer alan bir kolona verinin kullan›lmad›¤›n› belirten bir kod koyar-
lar ve belirli aralarla, örne¤in günde bir, bu koda sahip kay›tlar› temizlerler. Ancak,
DELETE komutu, gerek duyulmayan ve ara ifllem sonuçlar›n› tutan kay›tlar›n te-
mizlenmesi için yararl›d›r. INSERT INTO komutuyla eklenen yeni bir il olan Alan-
ya’y› iller tablosundan silelim:
Özet
N
A M A Ç
SQL diliyle ve C++, C# ve Java gibi yordamsal dil- N
A M A Ç
SQL programlama dilinde s›k kullan›lan komut-
1 ler aras›ndaki fark› aç›klayabileceksiniz. 5 lar› ve veritiplerini listeleyebileceksiniz.
SQL (Yap›sal Sorgu Dili), uluslararas› standartlar Veritaban›nda farkl› çözünürlükteki de¤erlerin
çerçevesinde tan›ml›, veritabanlar›nda ifllem yap- tutulabilmesi için, SQL dilinde çok say›da veriti-
mak üzere tasarlanm›fl bir programlama dilidir. pi tan›ml›d›r. Yayg›n kullan›lan veri tipleri ola-
C++, C#, Java gibi di¤er bilgisayar dillerinde ve- rak, tamsay›lar, gerçek say›lar ve karakter dizile-
rilerin nas›l oluflturulaca¤› ad›m ad›m tarif edilir- ri verilebilir. Ayr›ca, aritmetik ve karakter dizileri
ken, SQL’de veritaban› yönetim sistemine hangi üzerinde uygulanan çeflitli fonksiyonlar da veri-
verileri getirece¤i tarif edilir. Veritaban› yönetim taban› yönetim sistemiyle birlikte gelmektedir.
sistemi, SQL komutunda tarif edilen veri setini SQL programlama dilinde, en yayg›n flekilde kul-
getirir veya varolan kay›tlar üzerinde ifllemleri lan›lan komutlar, SELECT, INSERT INTO, UPDA-
gerçeklefltirir. TE ve DELETE komutlar›d›r. SELECT genel amaç-
l› sorgu komutudur. INSERT INTO, veritaban›na
N
A M A Ç
Bir anda yap›lmas› gereken SQL komutlar›ndan yeni veri eklemek için kullan›l›r. VALUES anah-
2 oluflan hareketi kurabileceksiniz. tar kelimesiyle birlikte kullan›ld›¤›nda, farkl› fle-
SQL, hareket (transaction) yöntemiyle atomik ifl- killerde veri girifline izin verir. UPDATE, verita-
lemler oluflturulabilmesini sa¤lar. Hareket, bir ban›nda var olan verilerin düzeltilmesinde kulla-
arada yap›lmas› gereken komut dizisidir. Komut- n›l›rken, DELETE var olan verilerin silinmesini
lardan biri bile yap›lamazsa hareket sonlanmaz sa¤lar.
ve yap›lan ifllemler de veritaban›na ifllenmeden
yok edilir. Bu flekilde veri tutarl›l›¤› sa¤lan›r.
N
AM A Ç Tetik fonksiyonlar›n ifllevini aç›klayabileceksiniz.
3
Tetik fonksiyonlar, veri tutarl›l›¤›n› sa¤lamak için
kullan›lan özelliklerden bir di¤eridir. Tabloda
gerçekleflen herhangi bir ifllem sonras›nda veya
öncesinde çal›flt›r›lmak üzere haz›rlan›rlar. Post-
greSQL, gerek hareket, gerek tetik ve gerekse
genel amaçl› olmak üzere, kullan›c›lar›n fonksi-
yon yazmalar›na izin verir.
N
AM A Ç
PL/pgSQL dilinde yaz›lm›fl programlar› çal›flt›ra-
4 bileceksiniz.
Fonksiyonlar, karmafl›k ifllemlerin yordamsal
programlama mant›¤›yla gerçeklefltirilmesini sa¤-
layan yap›lard›r. PL/pgSQL programlama dili,
fonksiyon yazmak ve karmafl›k ifllemleri gerçek-
lefltirmek için, PostgreSQL veritaban› yönetim sis-
temi taraf›ndan kullan›c›lara sunulan programla-
ma dillerinden en yayg›n flekilde kullan›lan›d›r.
5. Ünite - Temel SQL Kavramlar› ve Komutlar› 109
Kendimizi S›nayal›m
1. Afla¤›dakilerden hangisi, hareket (transaction) kav- 5. substring(‘merhaba’ from 4 for 2) fonksiyonun getir-
ram›n› eksiksiz aç›klar? di¤i de¤er afla¤›dakilerden hangisidir?
a. Yar›da kesilmesi durumunda veri tutars›zl›¤› a. haba
oluflturacak ifllemlerin tamam›d›r. b. merh
b. S›rayla gerçeklefltirilmesi gereken komut grubu- c. ha
dur. d. ba
c. Ayn› anda çal›flt›r›lmaya bafllanarak bitirilmesi e. aba
gereken komutlard›r.
d. Alternatif olarak çal›flan komutlard›r. 6. ‹ki sorgudan gelen de¤erlerin birlefltirilmesi için kul-
e. ‹ndeksleme gerektirmeden çal›flan komut dizisidir. lan›lan anahtar kelime afla¤›dakilerden hangisidir?
a. INTERSECT
2. Yeni eklenen bir fonksiyon veritaban›nda hangi bö- b. SUBTRACT
lüme eklenir? c. INSERT
a. ‹flleçler (operators) d. EXCEPT
b. Genel fiema (Public Schema) e. UNION
c. Triggers
d. Tablolar (Tables) 7. Veritaban› rolü nedir?
e. Görüntüler (views) a. Veritaban› eriflim izinleridir.
b. Kullan›c› isimleridir.
3. Görüntü (View) nedir? c. Veritaban›nda eriflilebilecek flemalard›r.
a. Bir veritaban›n›ndaki bütün de¤erlerin olufltur- d. Birden fazla veritaban›na eriflen kullan›c›lard›r.
du¤u kümedir. e. Tablolar üzerinde sorgulama, ekleme, silme, dü-
b. Tablolarda yer alan bütün verilerdir. zeltme gibi yetkilere sahip kullan›c›lard›r.
c. Bir kullan›c›n›n eriflime yetkili oldu¤u tablolar›n
8. SELECT komutunda alanlara benzer isim (alias) ata-
isimleridir.
mak için kullan›lan anahtar kelime afla¤›dakilerden han-
d. Bir SQL sorgusunun getirdi¤i de¤erlerdir.
gisidir?
e. Bir SQL sorgusunun SQL Editöründeki görüntü-
a. BETWEEN
südür.
b. SET
SELECT iladi FROM iller c. VALUES
WHERE nufuserkek BETWEEN
d. AS
WHERE ilid = 34 AND ogrdrmid=9) 9. SQL komutlar›nda mutlak de¤er hesaplamak için
AND 5000 kullan›lan iflleç afla¤›dakilerden hangisidir?
a. !
b. >>
4. Yukar›daki SQL sorgusunun ifllevi afla¤›dakiler- c. @
den hangisidir? d. %
a. Erkek nüfusu, ‹stanbul’un nüfusundan küçük il- e. ^/
lerdeki bayan nüfusunu getirir.
b. ‹stanbul’daki ilkö¤retim mezunu erkeklerin sa- 10. Tetik (trigger) nedir?
y›s›n› getirir. a. Yeni veri eklendi¤inde çal›flt›r›lan k›s›tlar› kon-
c. ‹stanbul d›fl›nda, erkek nüfusu 1000 ve 5000’den trol eden komutlard›r.
büyük olan illerin adlar›n› getirir. b. Tablolarda veya görüntülerde gerçekleflen de¤i-
d. ‹stanbul’da doktora derecesine sahip kiflilerin fliklik durumlar›nda otomatik olarak çal›flt›r›lan
say›s›ndan büyük ve 5000’den küçük erkek nü- yordamlard›r.
fusu olan illerin isimlerini getirir. c. PL/pgSQL dilinde yaz›lan program parçalar›d›r.
e. ‹stanbul’daki doktoral› kiflilerin say›s› 5000’den d. Karmafl›k ifllemleri gerçeklefltirmek için kullan›-
büyükse, ‹stanbul d›fl›ndaki bütün illerin erkek lan yordamsal bir dille yaz›lan ifllemlerdir.
nüfuslar›n› getirir. e. Yeni bir kay›t eklendi¤inde, en eski kayd› sile-
rek veritaban›nda yer açan SQL komutudur.
110 Veritaban› Uygulamalar›
S›ra Sizde 5
“SELECT ilid FROM ilogrdurum WHERE ogrdrmid = 9
AND sayitoplam>1000” komutu çal›flt›r›ld›¤›nda, 15 ilin
kodlar› döndürülmektedir.
S›ra Sizde 6
Sorgu hiç bir kay›t döndürmeyecektir.
Yararlan›lan Kaynaklar
SQL komutlar› için, http://developer.post-
gresql.org/pgdocs/postgres/sql-commands.html
6
VER‹TABANI UYGULAMALARI
Amaçlar›m›z
N
Bu üniteyi tamamlad›ktan sonra;
Bir tablo içinde yer alan bir kolondaki maksimum, minimum, ortalama de-
N
¤erleri hesaplayabilmek için SQL komutlar› oluflturabileceksiniz.
‹liflkisel veritaban›nda tablolar aras›ndaki iliflkilerin birlefltirme iflleminde na-
N
s›l kullan›ld›¤›n› aç›klayabileceksiniz.
N
Sorgu içinde baz› kay›tlar› grupland›rabileceksiniz.
Sorgudan dönen kay›tlar›n baz› kriterlere göre s›ralanmas›n› sa¤layabile-
ceksiniz.
Anahtar Kavramlar
‹çerik Haritas›
• G‹R‹fi
• YI⁄IN ‹fiLEM FONKS‹YONLARI
• TABLOLARIN B‹RLEfiT‹R‹LMES‹
(JOINING TABLES)
Veritaban› Temel SQL • TABLO B‹RLEfiT‹RMEYLE ‹LG‹L‹ B‹R
Uygulamalar› Komutlar› ÖRNEK
• ORDER BY
• DISTINCT
• GROUP BY
• HAVING
Temel SQL Komutlar›
G‹R‹fi
Önceki ünitelerde SQL ifllemlerinden baz›lar›n› yapmak için kullan›lan Select, In-
sert, Update, Delete, Alter ve Create komutlar› ayr›nt›l› olarak anlat›lm›flt›r. Bu ko-
mutlar, veritaban› üzerinde uygulama gelifltiren programc›lar›n s›k kulland›klar›
komut kümesini oluflturmaktad›r. SQL komutlar› aras›nda, bu komutlara ek olarak,
sorgulama ifllemlerini kolaylaflt›racak baz› özellikler de bulunmaktad›r. Bu ünitede
birden fazla tablodaki bilgilerin birlefltirilmesi için kullan›lan y›¤›n ifllem (aggregade
functions) komutlar› anlat›lacakt›r. Y›¤›n ifllem fonksiyonlar›, bir kolondaki bütün
verileri kullanarak baz› hesaplamalar yap›lmas›n› sa¤layan komutlard›r. Örne¤in,
bu komutlar kolonlardaki en küçük ve en büyük de¤erlerin hesaplanmas›n› sa¤-
lar. Birlefltirme, iki veya daha fazla tabloya da¤›lm›fl verileri, iliflkisel veritaban›
özelliklerini kullanarak birlefltirmek için yap›lan bir ifllemdir.
Fonksiyon Tan›m›
count (*) Sorgu sonucunda gelen kay›t say›s›n›n elde edilmesini sa¤lar
min (alan_adı) Tablo içinde alan ad›yla belirtilen sütundaki en küçük de¤eri verir
max (alan_adı) Tablo içinde alan ad›yla belirtilen sütundaki en büyük de¤eri verir
sum (alan_adı)
Tablo içinde alan ad›yla belirtilen sütundaki de¤erlerin toplam›n›
verir
avg (alan_adı)
Tablo içinde alan ad›yla belirtilen sütundaki de¤erlerin ortalamas›n›
verir
114 Veritaban› Uygulamalar›
fiekil 6.1
iller
‹ller
Tablosunun
Yap›s› id iladi nufus nufuserkek nufuskadin
Türkiye’de bulunan illerin say›s›n› bulmak için, count(*) içeren bir SQL komutu
afla¤›daki gibi oluflturulabilir. Komut çal›flt›r›l›nca, il say›s› olarak 81 döndürülecektir.
E¤er, nüfusu en fazla olan ilin bilgilerine eriflmek istersek, alttaki SQL komutu-
nu çal›flt›rmam›z gerekecektir. Sonuç olarak ‹stanbul’un il nüfusu olan 12.915.158
de¤erini buluruz.
Parantez içinde yer alan sorgu, nufus kolonundaki en büyük de¤eri getirmekte
ve WHERE bölümünde parametre olarak kullan›lmaktad›r. Görüldü¤ü gibi y›¤›n kü-
me ifllemleri, ihtiyaç duyulan bilgilerin tek bir komutla elde edilmesini sa¤lamaktad›r.
Her iki tablonun birbiriyle ba¤lant› noktas› olan il kodlar› kullan›larak, ilin ad›,
nüfusu ve ö¤renim durumuyla ilgili say›lar tek bir sorguda döndürülebilmektedir.
fiekil 2’de “SQL editor” program›nda yukar›daki komutun çal›flt›r›lmas›ndan sonra
elde edilen de¤erler görülmektedir. E¤er tablolardaki kolon isimleri birbirlerinin
ayn›s› olsalard›, yukar›daki sorguda hangi tablonun hangi kolonunun kastedildi¤i
kar›flacakt›. Bunu engellemek ve sorgunun okunabilirli¤ini art›rmak için, kolon
isimlerinden önce tablo isimleri kullan›lmal›d›r. Yukar›daki sorgu, ayn› sonucu ve-
recek flekilde tablo isimleriyle birlikte flöyle yaz›labilir:
116 Veritaban› Uygulamalar›
fiekil 6.2
‹ller ve ‹logrdurum
Tablolar›n› ‹çeren
SQL Sorgusu ve
Dönen De¤erler
INNER JOIN ifllemi, her il için 10 adet ö¤renim durumu bilgisi olmak üzere 810
kay›t döndürür. Bu birlefltirme iflleminde, id ve ilid de¤erlerinin eflit olmas› önem-
lidir. Di¤er bir birlefltirme ifllemi olan CROSS JOIN, bütün tablolar› çaprazlayarak bir-
lefltirir ve ON’la bafllayan koflulu kabul etmez. Örne¤in, yukar›daki sorguda INNER
JOIN yaz›lan yere CROSS JOIN yaz›ld›¤›nda ve ON’la bafllayan k›s›m yaz›lmad›¤›nda
oluflturulan sorgu çal›flt›r›l›nca 81 x 81 x 10 = 65610 adet kay›t döndürülecektir.
D Ü fi Ü N E L ‹ M D Ü fi Ü Nsorgu
JOIN içeren E L ‹ M komutlar› üç farkl› flekilde yaz›labilir:
JOIN T2
N N
SIRA S‹ZDE SIRA S‹ZDE
AMAÇLARIMIZ AMAÇLARIMIZ
K ‹ T A P K ‹ T A P
6. Ünite - Temel SQL Komutlar› 117
fiekil 6.3
LEFT OUTER JOIN
ifllemiyle iller ve
ilogrdurum
tablolar›n›n
birlefltirilmesi
FULL OUTER JOIN komutu, LEFT OUTER JOIN ve RIGHT OUTER JOIN komut-
lar›yla elde edilen kümenin birleflimini verir. Di¤er bir deyiflle, T1’de olup da T2’de
olmayan, T2’de olan ama T2’de bulunmayan bütün kay›tlar, efllenemeyen yerlere
NULL konularak getirilir.
“SELECT * FROM iller FULL OUTER JOIN ilogrdurum ON id = ilid” SIRA S‹ZDE
sorgusundan kaç adet SIRA S‹ZDE
kay›t döndürülecektir? 2
D Ü fi Ü N E L ‹ M D Ü fi Ü N E L ‹ M
S O R U S O R U
D‹KKAT D‹KKAT
118 Veritaban› Uygulamalar›
Binalar Mahalleler
tablosu Binalar Mahalleler tablosu
fiekil 6.7
Binalar Binalar
tablosundaki
BinaID SehirID IlceID MahalleID .... KatAdedi .... BinaTuru veriler
1 26 1 1 1 1
2 26 1 1 2 2
3 26 2 2 7 2
... ... ... ... ... ...
BinaTurleri Mahalleler
tablosundaki BinaTurleri Mahalleler tablosundan
veriler veriler
BinaTuruID BinaTuru MahalleID SehirID MahalleAdi
1 Ahflap 1 26 Hoflnudiye
2 Betonarme 2 26 ‹stiklal
... ... ... ... 3 26 Viflnelik
4 26 Akarbafl›
... .... ... ...
‹htiyaç duyulan, bir di¤er tablo da binalarda oturan kiflilerin bilgilerini içeren
tablodur. fiekil 10’da flehirdeki mükelleflerin bilgilerinin tutuldu¤u Mukellefler
tablosu görülmektedir.
Mukellefler Mukellefler
lesindeki betonarme binalar›n listesini elde etmek olacakt›r. fiekil 12’de afla¤›daki
sorgudan dönen verilerin örnekleri görülmektedir.
fiekil 6.12
2 26 1 3 .... ....
12 26 1 3 .... ....
.... .... .... .... .... ....
Sorgular birbiri arkas›na çal›flt›r›ld›¤›nda elde edilen örnek veriler fiekil 13’te
gösterilmektedir.
fiekil 6.13
Daha önce iki tabloya ayr› sorgular göndererek elde edilen veriler, yukar›daki
sorgu sayesinde art›k tek bir sorguyla halledilmektedir. Tablo birlefltirme koflulla-
r› iki veya daha fazla tabloya uygulanabilir. Bu birden fazla tablodan verilerin el-
de edilmesini sa¤lamaktad›r. Yukar›daki SQL sorgusu incelendi¤inde, Binalar H›z aç›s›ndan, SQL
ve Mukellefler tablosundan istenen alan adlar›n›n sorgu içinde yer ald›¤› gö- sorgulamalar›
oluflturulurken sadece
rülmektedir. Tablolarda yer alan bütün alanlardaki verileri çekmek verinin büyük- gerekli tablo alanlar›n›n
lü¤ünü art›raca¤› için sisteme daha çok yük getirecek bu da performans düflüklü- istenmesine özen
gösterilmelidir.
¤üne neden olacakt›r.
Birden fazla tabloyu ilgilendiren SQL sorgular›nda dikkat edilmesi gereken
noktalardan biri, FROM etiketinden sonra iki tane tablo isminin yer almas›d›r.
Daha önceki bölümlerde verilen örnek sorgularda FROM kelimesinden sonra sa-
dece bir tablo ismi yer almaktayd›. Verinin çekilece¤i tüm tablolar FROM kelime-
sinin arkas›ndan belirtilmelidir. SQL sorgusunun son bölümündeki WHERE eti-
ketinden sonraki bölüm, sorgulama için gerekli olan koflullar›n yaz›ld›¤› bölüm-
dür. Burada girilmesi gereken kriterler, birbiriyle iliflkilendirilecek olan tablolar›n
aras›nda yer alan ba¤lant› koflullar›d›r. Yukar›daki sorguda, Mukellefler tab-
losunda yer alan OturduguBinaID de¤eri ile Binalar tablosunda bulunan
BinaID alanlar› iliflkilendirilerek tablolar aras›nda ba¤lant› oluflturulmufltur. Bu
kriterin yan›nda daha baflka koflullar da tan›mlanarak daha detayl› sorgulamalar
gerçeklefltirilebilmektedir.
Yukar›da görülen sorgu sadece iki tablodan gelen verileri birlefltirebilmektedir.
Bu ifllem birden fazla tablo için de yap›labilmektedir. Örne¤in yukar›daki sorgu so-
nucuna bak›ld›¤›nda, kay›tlar›n flehir, ilçe, mahalle ve bina türü de¤erleri ile listelen-
di¤i görülmektedir. Bunlar di¤er tablolar ile birlefltirilerek do¤rudan anlaml› hale dö-
nüfltürebilir. Yukar›daki SQL sorgusu yeniden düzenlenirse afla¤›daki komut olufltu-
rulabilir. Sorgu çal›flt›r›ld›¤›nda fiekil 14’te görülen veri kümesi elde edilmektedir.
fiekil 6.14
ti¤i durumlarda yararl›d›r. Afla¤›daki SQL komutunu uygularsak, elde edilen veri
kümesi fiekil 17’de gösterilmektedir.
ORDER BY
Sorgulamalar sonucunda elde edilen veri öbeklerindeki kay›tlar›n s›ras›n›n, verita-
ban›na ekleme s›ras›na göre belirlendi¤i görülmektedir. Örne¤in flehirde bulunan
betonarme binalar›n listesinin elde edilmesinin istendi¤ini düflünelim. ‹stenen ve-
rilerde binalar›n ilçe ad›, mahalle ad›, yüz ölçümü ve kat adeti bilgilerinin buluna-
ca¤›n› varsayal›m. Veritaban›nda bulunan Binalar tablosundan, türü betonarme
olan binalar afla¤›daki SQL komutuyla sorgulanabilmektedir. Sorgu sonucu, fiekil
18’de gösterilmektedir.
fiekil 6.18
1 2 2 10 123
2 1 1 5 245
4 1 1 2 110
124 Veritaban› Uygulamalar›
fiekil 18’de görülen sorgu sonucu incelendi¤inde, binalar›n ilçe kodu, mahalle ko-
du, kat adedi ve yüz ölçümü bilgilerinde herhangi bir s›ralaman›n olmad›¤› görülmek-
tedir. Sorgu, belli bir s›rayla takip edilebilecek bilgiler vermemektedir. Gerek duyulan
kay›tlar›n elde edilmesine ra¤men, bilginin düzgün kullan›lamamas›na neden olmak-
tad›r. Bu gibi durumlarda ORDER BY komutu ihtiyaç duyulan kay›tlar›n s›ral› flekilde
al›nmas›n› sa¤lamaktad›r. Komutun, SQL sorgular›nda kullan›m biçimi flöyledir:
fiekil 6.19
4 1 1 1 1
2 1 1 1 1
1 2 2 2 2
DISTINCT
Tablolarda bir kolon içinde ayn› de¤erin birden fazla kere tekrarland›¤› durumlar
olabilmektedir. Sorgulamalar sonucu gelen verilerde baz› de¤erlerin tekrarlanma-
6. Ünite - Temel SQL Komutlar› 125
GROUP BY
Veritaban›nda yap›lan sorgulamalarda s›k kullan›lan bir di¤er SQL komutu da
GROUP BY komutudur. Komut, veritaban›ndan getirilen verilerin grupland›r›larak
elde edilmesini sa¤lar. Verilerin grupland›r›lmas›ndaki amaçlar flöyledir:
• Bir grupta bulunan kay›t say›s›n›n bulunmas›
• Grupta yer alan bir alandaki de¤erlerin toplam›n›n hesaplanmas›
• Grupta yer alan bir alandaki de¤erlerin ortalamas›n›n bulunmas›
• Gruplanan verilerdeki en büyük veya en küçük de¤erin hesaplanmas›
Kullan›m yap›s› flöyledir:
Görüldü¤ü gibi GROUP BY, sorgunun son bölümünde yer al›r ve sorgulama
sonras› elde edilecek verinin tablonun hangi alan› ile grupland›r›laca¤›n› belirtmek
için kullan›l›r. Örnek olarak mahallelerde bulunan binalar›n say›s› elde edilmek is-
tenirse, oluflturulmas› gereken SQL komutu afla¤›daki gibidir. Sorgu sonucu fiekil
20’de gösterilmektedir.
323 1 323 1
122 2 122 2
...... ...... ...... ......
126 Veritaban› Uygulamalar›
fiekil 6.22
minKatAdedi mahalleID
2 1
5 2
...... ......
Mahallelere göre en büyük kat say›s›n›n bulunmas› için, yukar›daki sorgu flöy-
le de¤ifltirilebilir:
Toplam kat say›s›n›n hesaplanmas› için, MAX, MIN, AVG komutlar› gibi di¤er
bir y›¤›n ifllem olan SUM komutu kullan›labilir:
HAVING
HAVING komutu, GROUP BY ile gruplanan veriler üzerinde koflullar koymak ve
bu koflullara ba¤l› olarak veri üzerinde k›s›tlamalar yapmak amac›yla kullan›l›r ve
GROUP BY ifadesinden ba¤›ms›z olarak kullan›lamaz.
Binalar tablosunda, 5 kattan daha yüksek kaç adet bina oldu¤unu mahalleler
baz›nda hesaplamam›z gerekti¤ini varsayal›m. Bu durumda ilk yapmam›z gereken,
GROUP BY komutu ile veritaban›nda bulunan kay›tlar› mahalle ve kat say›s› baz›nda
grupland›rmakt›r. HAVING komutunu kullanarak koflul belirtmeden önce, Mahal-
leID ve KatAdedi’ne göre grupland›rarak, afla¤›daki gibi bir sorgu oluflturabiliriz.
Sorgu sonucu, fiekil 23’te gösterilmektedir.
fiekil 6.23
1 2 51
1 5 153
1 6 225
2 3 175
... ... ...
Özet
N
A M A Ç
Bir tablo içinde yer alan bir kolondaki maksi- N
A M A Ç
Sorgu içinde baz› kay›tlar› grupland›rabilecek
1 mum, minimum, ortalama de¤erleri hesaplaya- 3 ve y›¤›n ifllemleri bu gruplar üzerine uygulaya-
bilmek için SQL komutlar› oluflturabileceksiniz. bileceksiniz.
Y›¤›n ifllemler, tablo içinde yer alan bir kolonda- Y›¤›n ifllemlerin, sadece baz› kay›tlar üzerinde
ki bütün de¤erler üzerinde yap›lan hesaplama- uygulanmas› GROUP BY komutu sayesinde ya-
lard›r. Bir kolondaki en küçük, en büyük de¤er- p›labilir. GROUP BY, bir kolonda yer alan her
lerin hesaplanmas›, kay›t say›s›n›n bulunmas› gi- bir farkl› de¤er için y›¤›n ifllemlerin gerçekleflti-
bi ifllemlerden oluflur. Yordamsal programlama rilmesini sa¤lar. GROUP BY komutunun bir ko-
dillerinde döngülerle yap›labilen bu tür ifllemler, flula göre gruplama yapmas›, HAVING ifadesiyle
SQL dilinde bir sat›rl›k komutlarla gerçeklefltirile- gerçeklefltirilir.
bilmektedir.
N
N
Sorgudan dönen kay›tlar›n baz› kriterlere göre
AM A Ç
‹liflkisel veritaban›nda tablolar aras›ndaki iliflki- 4 s›ralanarak döndürülmesini yapabileceksiniz.
A M A Ç
2 lerin birlefltirme iflleminde nas›l kullan›ld›¤›n› ORDER BY komutu, bir sorgudan döndürülen
aç›klayabileceksiniz. kay›tlar›n s›ralanmas›n› sa¤lar. ASC ve DESC ko-
‹liflkisel veritabanlar›nda tablolar aras›ndaki ilifl- mutlar›, s›ras›yla, kay›tlar› küçükten büyü¤e ve
kiler, ortak de¤erler içeren alanlar sayesinde ku- büyükten küçü¤e s›ralar.
rulur. ‹lçelerin bilgilerinin oldu¤u bir tablodaki
bir alanda ilçenin ba¤l› bulundu¤u ilin kodu var-
sa, ilçe tablosundaki bilgiler kullan›larak ilin ismi
de bulunabilir. SQL dili, SELECT sorgusuyla bir-
den fazla tabloda arama yap›lmas›n› sa¤lar. Di-
¤er bir yöntem de JOIN ad› verilen komutun kul-
lan›lmas›d›r. Çeflitli kullan›m amaçlar›na göre, IN-
NER JOIN, OUTER JOIN, CROSS JOIN gibi türev-
leri bulunmaktad›r.
6. Ünite - Temel SQL Komutlar› 129
Kendimizi S›nayal›m
5. ORDER BY komutunun ifllevi nedir?
SELECT mahalleID, katAdedi,
count(*) as toplamBinaSayisi
a. Tablolar› birlefltirmek
FROM Binalar
b. Eflsiz kay›tlar› döndürmek
GROUP BY katAdedi;
c. Sorgunun tablodaki bir yada birden fazla alana
göre s›ralanm›fl flekilde döndürülmesini sa¤la-
mak
1. Afla¤›dakilerden hangisi yukar›daki sorguyu aç›klar? d. ‹çinde NULL de¤eri bulunmayan kay›tlar› dön-
a. Bir kat say›s›n›n kaç mahallede yer ald›¤›n› bü- dürmek
tün mahalleler için döndürür. e. Kay›tlar› grupland›rmak
b. Mahallelere göre toplam kat say›s›n› döndürür.
c. Tablodaki toplam mahalle ve kat say›lar›n› ayr› 6. ASC ve DESC komutlar› hangi komutla birlikte kulla-
kolonlarda döndürür. n›l›r?
d. Ortalama kat say›lar›n› mahallelere göre hesap- a. HAVING
lar. b. INNER JOIN
e. En büyük kat say›s›ndan en küçü¤e do¤ru ma- c. OUTER JOIN
hallelerdeki toplam kat say›s›n› döndürür. d. ORDER BY
e. WHERE
2. HAVING komutunun temel ifllevi nedir?
a. Belirli bir alan›n hangi tablo referans al›narak 7. Afla¤›dakilerden hangisi, OUTER RIGHT JOIN komu-
kullan›laca¤›n› belirtmek tuyla oluflturulan sorguya göre daha az kay›t döndürür?
b. GROUP BY ifadesine koflul eklemek a. INNER JOIN
c. NULL bulunmayan de¤erleri hesaplamak b. OUTER JOIN
d. Birlefltirilecek tablolar›n isimlerini tan›mlamak c. CROSS JOIN
e. Tablo içinde yer alan minimum ve maksimum d. OUTER LEFT JOIN
de¤erlere göre HAVING ifadesinden sonra ta- e. LEFT CROSS JOIN
n›mlanan alanlar› s›ralamak
8. Afla¤›dakilerden hangisi, tablo birlefltirirken, sa¤ ve
3. DISTINCT komutunun ifllevi nedir? sol taraftaki tablolarda birbirine eflleflen verilerin getiril-
a. Kullan›lacak tablolar›n isimlerini belirtmek di¤i ifllemi yapar?
b. Sorguda dönen kay›tlar› tek bir alana göre grup- a. RIGHT OUTER JOIN
land›rmak b. CROSS JOIN
c. Toplam kay›t say›s›n› hesaplamak c. OUTER JOIN
d. Tekrar olan kay›tlar aras›ndan sadece bir tane d. LEFT OUTER JOIN
farkl› kay›t getirmek e. INNER JOIN
e. Döndürülen kay›tlar içindeki alanlarda yer alan
de¤erler için koflul koymak 9. Afla¤›dakilerden hangisi, GROUP BY komutunun ko-
laylaflt›rd›¤› ifllemlerden biri de¤ildir?
4. Afla¤›dakilerden hangisi y›¤›n ifllem komutlar›ndan a. Bir grupta bulunan kay›t say›s›n›n bulunmas›
biri de¤ildir? b. Grupta yer alan bir alandaki de¤erlerin toplam›-
a. max n›n hesaplanmas›
b. min c. Grupta bulunan kay›tlardaki baz› alanlar›n orta-
c. count lamas›n›n bulunmas›
d. avg d. Grupta bulunan kay›tlar içinde birbirinden fark-
e. distinct l› olan de¤erleri bulmak
e. Gruplanan verilerdeki en büyük veya en küçük
de¤eri elde etmek
130 Veritaban› Uygulamalar›
S›ra Sizde 2
iller ve ilogrdurum tablolar›nda eflleflmeyen kay›t
olmad›¤›ndan toplam 810 adet kay›t dönecektir.
Yararlan›lan ve Baflvurulabilecek
Kaynaklar
SQL komutlar› için
http://developer.postgreSQL.org/pgdocs/postgres/sql-
commands.html/
7
VER‹TABANI UYGULAMALARI
Amaçlar›m›z
N
Bu üniteyi tamamlad›ktan sonra;
‹ndekslemenin ifllevini aç›klayabilecek, avantajlar›n› ve dezavantajlar›n› liste-
N
leyebileceksiniz.
N
‹ndeks kullan›rken, kullanma kurallar›na uyacaks›n›z.
SQL sorgulamalar›nda k›s›tlamalar› kullanabileceksiniz.
Anahtar Kavramlar
• ‹ndeksleme • Alan k›s›tlar›
• Eflsiz indeks • NULL de¤eri
‹çerik Haritas›
• G‹R‹fi
Veritaban› ‹ndeksleme ve • VER‹TABANI ‹NDEKSLER‹
Uygulamalar› K›s›tlama • KISITLAR VE KISITLAMALAR
(CONSTRAINTS)
‹ndeksleme ve K›s›tlama
G‹R‹fi
Veritaban› yönetim sistemlerinin performanslar›nda art›fl sa¤layan yöntemlerden
biri tablolarda s›k kullan›lan alanlar için indeks oluflturmakt›r. ‹ndeks, veritaban›n-
daki eriflimi h›zland›rmaya yönelik tasarlanm›fl bir veri yap›s›d›r. ‹ndeks bilgisi sa-
yesinde, tablolardaki kay›tlara eriflim h›zlan›r. ‹ndeksleme yöntemi do¤ru bir flekil-
de kullan›ld›¤›nda veritaban›n›n arama performans›n› art›r›r. Yanl›fl kullan›mda ise
sorgulama h›z›n›n düflmesine sebep olur.
Veritaban›nda yer alan verilerin tutarl›l›¤› veri giriflinin yap›ld›¤› s›rada kontrol
edilmelidir. Örne¤in, ülkelerle ilgili bilgilerin tutuldu¤u bir tabloda, herhangi bir
ülkenin nüfusu s›f›r veya negatif bir say› olmamal›d›r. Verilerin tutarl›l›¤›n› sa¤la-
mak için, tablolardaki baz› alanlara de¤erlerin kontrolü için k›s›t mekanizmalar›
konulabilir. Bu ünitede, h›zl› eriflim için kullan›lan indeksleme yöntemi ve verile-
rin tutarl›l›¤›n› sa¤lamak için kullan›lan k›s›t yöntemleri tan›t›lacakt›r.
VER‹TABANI ‹NDEKSLER‹
Veritaban› indeksleri çok say›da kay›t içeren tablolardan h›zl› bir flekilde veri çeki-
lebilmesini sa¤lamak için kullan›l›r. ‹ndeksler, bir kitap için yap›lm›fl içindekiler
sayfas› gibi düflünülebilir. Bir kitapta s›k aranan terimler için içindekiler sayfas›
oluflturuldu¤unda aranan veriye daha h›zl› ulafl›labilir. Benzer flekilde veritabanla-
r›nda s›k kullan›lan alanlar üzerinde indeks oluflturuldu¤unda bu alanlar› kullana-
rak yap›lan aramalarda önemli performans art›fllar› elde edilebilir.
Veritabanlar›nda birincil anahtarlar ve elemanlar› eflsiz (unique) olarak tan›m-
lanm›fl kolonlar otomatik olarak indeksleme ifllemine tabi tutulurlar. Bu ifllemin ya-
p›lmas›n›n nedeni, tabloya yeni bir kay›t eklendi¤inde, eflsiz olarak tan›mlanan ko-
londaki de¤erin di¤er bir kay›t içinde zaten olup olmad›¤›n›n h›zl› flekilde kontrol
edilmesidir. Di¤er kolonlar için indeksleme iflleminin kullan›c› taraf›ndan yap›lma-
s› gerekmektedir. SELECT komutunun kullan›ld›¤› sorgu komutlar›nda sa¤lanan h›-
za ra¤men, indeks kullan›m›n›n baz› dezavantajlar› da bulunmaktad›r.
• ‹ndeks ek disk alan›na ihtiyaç duyar. Çünkü oluflturulan indekslerin, di¤er
bir deyiflle içindekiler tablosunun veritaban› içinde bir yerlerde kaydedilme-
si gerekmektedir.
• ‹ndeksleme, SELECT sorgular›nda çok yüksek bir performans art›fl› sa¤lasa
da, UPDATE ve DELETE komutlar›nda ayn› baflar›y› göstermez. Aksine bu
komutlarda bir miktar performans düflüflü yaflan›r. Çünkü her bir UPDATE
134 Veritaban› Uygulamalar›
Tablonun kullan›m amac›, web temelli ö¤renci bilgi sistemine giriflte, kullan›c›
ad›n› ve flifresini sorgulamakt›r. Böyle bir tablo üzerinde KULLANICIADI alan›
için indeks oluflturmak istedi¤imizde afla¤›daki SQL komutunu kullanmam›z gere-
kecektir:
E¤er OGRENCILER tablosunun kay›t say›s› az ise sa¤lanan performans art›fl› düflük
düzeyde olabilir. Ancak, tabloda onbinlerce kayd›n bulundu¤u durumlarda, yukar›da
oluflturmufl oldu¤umuz indeks dikkat çekici bir performans art›fl› sa¤layacakt›r.
7. Ünite - ‹ndeksleme ve K›s›tlama 135
‹ndekslerin bir baflka kullan›m› da, iki veya daha fazla tablo üzerindeki verile-
rin birlefltirilerek arama yap›ld›¤› durumlarda karfl›m›za ç›kar. Veritaban›m›zda ö¤-
rencilerin not bilgilerinin tutuldu¤u NOTLAR isimli ve yap›s› afla¤›daki gibi olan bir
tablo bulundu¤unu varsayal›m:
N N
SIRA S‹ZDE SIRA S‹ZDE
Eflsiz ‹ndeks (Unique Index) Kavram›
‹ndekslerin üzerinde durulmas› gereken özel bir biçimi de eflsiz (unique) indeks-
AMAÇLARIMIZ lerdir. Eflsiz indeksler yap› itibariyle normal indekslerle ayn› ifli görürler. Aralar›n-
AMAÇLARIMIZ
daki tek fark eflsiz indeks oluflturmak için kullan›lan sütunlardaki de¤erlerin birbir-
lerinden farkl› olmas› zorunlulu¤udur. Bir baflka deyiflle, e¤er bir sütun üzerinde
K ‹ T A P eflsiz indeks K ‹oluflturulmufl
T A P ise bu sütundaki tüm de¤erler birbirinden farkl› olmak
zorundad›r. Bu yönüyle eflsiz indeksler birincil anahtarlara benzerler.
Birincil anahtarlar›n eflsiz indekslerden fark› ise bir tabloda sadece bir tane bi-
TELEV‹ZYON rincil anahtar
T E L Eolabilirken
V‹ZYON birden fazla eflsiz indeks olabilmesidir. Eflsiz indeksler ve-
ri bütünlü¤ünü sa¤lamak için s›kl›kla kullan›l›rlar. Eflsiz indeks oluflturulmufl bir sü-
tunda ayn› de¤erin ikinci defa oluflmas›n›n engellenmesi garanti alt›na al›nm›fl olur.
Bir önceki bölümde birincil anahtarl› olarak oluflturulan sütunlarda otomatik
‹NTERNET ‹NTERNET
olarak indeksleme yap›ld›¤›n› ö¤renmifltik. Yap›lan bu indeksleme asl›nda eflsiz in-
dekslemedir. Eflsiz indeksleme sayesinde o sütun üzerinde yap›lan arama ifllemle-
rinde bir performans art›fl› görülür. Ayr›ca sütundaki de¤erlerin birbirlerinden fark-
l› (eflsiz) olmas› garanti alt›na al›n›r.
7. Ünite - ‹ndeksleme ve K›s›tlama 137
Eflsiz indeks oluflturma örne¤i için bir önceki Ünitede kullan›lan Cografi-
Bilgiler veritaban›n› göz önünde bulundural›m. Bu veritaban›ndaki Ulkeler
ve Sehirler tablosunun içeri¤i Tablo 1’de gösterilmektedir. ULKEID’nin yan›n-
da yer alan PK ifadesi, kolonun birincil anahtar (Primary Key) oldu¤unu göster-
mektedir.
Ulkeler tablosunun ilk sütunu olan ULKEID sütunu birincil anahtar olarak ta-
n›mland›¤› için bu sütunundaki tüm de¤erlerin birbirinden farkl› olmas› garanti al-
t›na al›nm›fl demektir. Ulkeler tablosundaki ULKEADI sütunundaki de¤erlerin
de birbirlerinden farkl› olmas› gerekmektedir. Tabloda sadece bir tane birincil
anahtar bulunabilece¤i için ve birincil anahtar olarak ULKEID sütunundaki kulla-
n›ld›¤› için ULKEADI sütunundaki de¤erlerin eflsiz olmas›n›, bu sütun üzerinde bir
eflsiz indeks tan›mlayarak sa¤layabiliriz.
Böyle bir durumda art›k ülke ad› sütunu tüm de¤erlerin de birbirinden farkl› ol-
mas› garanti alt›na al›nm›flt›r. Örne¤in, içeri¤i Tablo 1’de verilen Ulkeler tablo-
suna yeni bir kayd›n INSERT komutuyla eklenmesi flöyle gerçeklefltirilebilir:
Yukar›daki komut ULKEDETAY isimli befl sütundan oluflan bir tablo oluflturur.
Bu komutta 3 farkl› kontrol ifadesi kullan›lm›flt›r. Bu ifadelerin karfl›l›klar› afla¤›da-
ki gibidir:
140 Veritaban› Uygulamalar›
Yukar›daki komut KITAPLAR ad›nda befl sütundan oluflan bir tablo yarat›lma-
s›n› sa¤lar. “Not Null” k›s›tlamas›n› yapabilmek için, içeri¤inin null olmas› istenme-
yen sütunlar›n arkas›na “NOT NULL” ifadesi eklenmelidir. Bu flekilde tabloda yer
alacak olan kay›tlar›n hiçbir sütununun bofl olarak girilmemesi sa¤lan›r. “Not Null”
k›s›tlar› kontrol k›s›tlar›yla da bir arada kullan›labilir:
CREATE TABLE KITAPLAR (
KITAPID integer NOT NULL,
KITAPADI text NOT NULL,
YAYINEVI text NOT NULL,
YAZAR text NOT NULL,
FIYAT numeric NOT NULL CHECK(FIYAT > 0)
);
Yukar›daki komutta FIYAT sütunu için kontrol ve “not null” k›s›tlar› birlikte ta-
n›mlanm›flt›r. Hangi k›s›t›n daha önce tan›mland›¤›n›n bir önemi bulunmamaktad›r.
Yukar›daki komut ile oluflturulan tabloda ISBNNO sütunu üzerinde bir eflsizlik
k›s›t› oluflturulmufltur. ISBN, her kitaba verilen eflsiz bir numarad›r. Bu ifade arac›-
l›¤›yla daha tablo yarat›l›rken ISBNNO sütunu üzerinde otomatik olarak eflsiz in-
deks oluflturulur. Böylece ISBNNO sütunu alt›ndaki tüm de¤erlerin birbirinden
farkl› olmas› garanti alt›na al›nm›fl olur. Eflsiz indeks oluflturulurken birden fazla
sütun bir arada kullan›labilmektedir.
Eflsiz indeksler konusu ifllenirken, örne¤i verilen Sehirler tablosunu eflsizlik
k›s›t› kullanarak oluflturmak için Tablo 3’ü inceleyelim. Tabloda sol tarafta bulunan
komut eflsizlik k›s›t›n› kullan›r ve sütundaki de¤erlerin birbirlerinden farkl›l›¤›n›
sa¤lamak için tek bafl›na yeterlidir. Sa¤ tarafta bulunan komut ise eflsiz indeks olufl-
turmay› sa¤lar. Tablo 3’te sa¤ ve sol tarafta yap›lan ifllemler birbirinin ayn›s›d›r.
E¤er eflsiz indekslerin kullan›lmas› istenirse Tablo 3’ün sa¤ taraf›nda da göste-
rildi¤i gibi ilk önce tablonun oluflturulmas› daha sonra da CREATE UNIQUE IN-
DEX komutuyla bir eflsiz indeks yarat›lmas› gerçeklefltirilebilir.
SEHIRADI varchar(30),
‹ndeks Oluflturma
SEHIRADI varchar(30), (Sa¤ taraf).
UNIQUE(SEHIRID, SEHIRADI) )
) CREATE UNIQUE INDEX ON
SEHIRLER(ULKEID, SEHIRADI)
Özet
N
AM A Ç
‹ndekslemenin ifllevini aç›klayabilecek, avantaj- N
A M A Ç
SQL sorgulamalar›nda k›s›tlamalar› kullanabile-
1 lar›n› ve dezavantajlar›n› listeleyebileceksiniz. 3 ceksiniz
Veritaban›n›n performans›, buna ba¤l› olarak ça- Veri bütünlü¤ünün ve geçerlili¤inin sa¤lanmas›,
l›flan uygulama yaz›l›mlar›n›n da h›zlar›n› etkiler. veritaban› sistemleri için son derece önemlidir.
Kullan›c› say›s›n›n ve depolanan veri miktar›n›n Kifli bilgilerinin tutuldu¤u bir tabloda, kiflinin ya-
art›fl› veritaban›n›n ifllem yükünü art›r›r. Verita- fl›n›n negatif olmamas› istenen bir kofluldur. Di-
ban› yönetim sistemlerine gönderilen SQL sorgu- ¤er bir örnek kiflinin ad ve soyad›n›n bofl
lar›n›n en k›sa sürede yan›tlanabilmesi ancak ve- b›rak›lmamas›d›r. Veri tutarl›l›¤›n› veritaban› yö-
ritaban› içinde yer alan verilere en k›sa sürede netim sisteminin kontrol etmesi için, tablodaki
ulafl›lmas›yla gerçekleflir. Veritaban› yönetim sis- veri alanlar›na k›s›tlar konulabilir. Veritaban›na
teminin tablo içindeki verilerde gerçeklefltirdi¤i kay›t eklenirken, VTYS k›s›tlar› kontrol eder, e¤er
arama ifllemini h›zland›ran yönteme indeksleme uymayan bir durum varsa hata mesaj› döndüre-
ad› verilmektedir. ‹ndeksleme, bir kitaptaki için- rek veri kayd›n› engeller.
dekiler sayfas›na benzetilebilir.
N
AM A Ç
‹ndeks kullan›rken, kullanma kurallar›na uya-
2 caks›n›z.
‹ndekslemenin afl›r› kullan›m›, özellikle indeks-
lerin veritaban›ndaki veri miktar›n› geçmesi, ve-
ritaban› tepki süresini azaltmak yerine art›rabilir.
‹ndekslemenin sadece s›k sorgulanan kolonlar
üzerinde yap›lmas›, nümerik de¤er içeren kolon-
lar›n tercih edilmesi, s›k de¤iflen kolonlarda uy-
gulanmamas› önerilmektedir. Birincil anahtar
olan kolonlar otomatik olarak indekslendi¤in-
den, indeksleme gerekli de¤ildir.
144 Veritaban› Uygulamalar›
Kendimizi S›nayal›m
1. ‹ndeks nedir? 6. Bir kolondaki de¤erlerin eflsiz olmas› için kullan›lan
a. Veritaban› içindeki bütün veriler için içindekiler yöntem afla¤›dakilerden hangisidir?
sayfas›d›r. a. Yabanc› anahtar kullan›m›
b. Sorgular› h›zland›rmak için kullan›lan bir veri b. Eflli indeks
yap›s›d›r. c. Eflsiz indeks
c. Birincil anahtar kolonunda yer alan bilgilerdir. d. Yabanc› indeks
d. Eflsiz kolon de¤erleridir. e. Referans k›s›t› kullan›m›
e. Her kay›t için verilen özel numaralard›r.
7. Eflsiz k›s›t yöntemi yerine kullan›labilecek yöntem
2. ‹ndeksleme ifllemi yap›ld›¤›nda, afla¤›daki SQL ko- afla¤›dakilerden hangisidir?
mutlar›ndan hangisi daha h›zl› çal›flabilir? a. Eflsiz referans
a. SELECT b. ‹kincil anahtar
b. UPDATE c. Yabanc› anahtar kullan›m›
c. INSERT INTO d. Koflullu k›s›t
d. CREATE TABLE e. Eflsiz indeks
e. CREATE DATABASE
8. Afla¤›dakilerden hangisi, birincil anahtar kullan›m›-
3. NULL’›n anlam› nedir? n›n sorunlar›ndan biridir?
a. Bir de¤er atanmad›¤›n› gösterir. a. Birden fazla tabloda ayn› isimde bulunan kolon-
b. Birincil anahtarl› alanlara girilen de¤erlerdir. lar birincil anahtar olarak tan›mlanamazlar.
c. ‹ndeks veri yap›s›d›r. b. Tablodaki sadece bir kolon birincil anahtar ola-
d. Negatif de¤er anlam›na gelir. rak tan›mlanabilir.
e. Eflsiz bir say›d›r. c. Birincil anahtar kolonlar› sadece nümerik de¤er
içeren kolonlardan oluflur.
4. Hangi kolonlar›n indekslenmesi, VTYS’lerinin h›z›n› d. Birincil anahtar olarak tan›mlanan kolon yaban-
art›r›r? c› anahtar olarak tan›mlanamaz.
a. S›k de¤iflen e. Yabanc› anahtar ve birincil anahtar ayn› tabloda
b. ‹çinde karakter dizisi bulunduran olamaz.
c. S›k veri eklenen
d. S›k sorgulanan 9. KITAPLAR ve SIPARIS adl› tablolar, s›ras›yla kitap ta-
e. ‹çinde evet ve hay›r gibi iki de¤er içeren n›mlar›n› ve siparifl edilen kitaplar› içermektedirler. Bu-
na göre, olmayan bir kitab›n siparifl edilmesini engelle-
5. Referans bütünlü¤ü nedir? mek için, SIPARIS tablosunun tan›m›nda kullan›lmas›
a. ‹ki tabloda yer alan bilgilerin bir araya getirile- gereken anahtar kelime afla¤›dakilerden hangisidir?
rek tek tablo halinde bütünlefltirilmesidir. a. REFERENCES
b. Tabloya kay›t eklerken, di¤er bir tabloya veri b. SELECT
eklenmesidir. c. PRIMARY_KEY
c. Birbirlerine referans gösterilen alanlar›n bulun- d. FOREIGN_KEY
du¤u farkl› tablolardaki kay›tlar›n bütünlü¤üdür. e. CREATE TABLE
d. Kolonlardaki verilerin belli k›s›tlarla kontrol edil-
mesidir. 10. Eflsiz indeks yaratmak için kullan›lan SQL komutu
e. Birincil anahtar ve yabanc› anahtar aras›ndaki afla¤›dakilerden hangisidir?
iliflkinin kurulmas›d›r. a. CREATE TABLE
b. CREATE TABLENAMESPACE
c. FOREIGN_KEY
d. CREATE UNIQUE INDEX
e. REFERENCES
7. Ünite - ‹ndeksleme ve K›s›tlama 145
8
Amaçlar›m›z
N
Bu üniteyi tamamlad›ktan sonra;
N
Co¤rafi bilgi sistemlerindeki standartlar›n önemini aç›klayabileceksiniz.
N
XML veri biçimini kullanabileceksiniz.
N
Bafll›ca OpenGIS standartlar›n›n nas›l uyguland›¤›n› göreceksiniz.
Web üzerinden sa¤lanan haritalar›n nas›l oluflturuldu¤unu anlayacaks›n›z.
Anahtar Kavramlar
• OpenGIS • GML
• Co¤rafi Bilgi Sistemleri • OpenGIS Standartlar›
• XML veri tipi
‹çerik Haritas›
• G‹R‹fi
• B‹LG‹ TEKNOLOJ‹LER‹NDE
Veritaban› OpenGIS STANDARTLARIN ÖNEM‹
Uygulamalar› Standartlar› • OpenGIS STANDARTLARI
• OpenGIS REFERANS MODEL‹ VE
ÖRNEKLER
OpenGIS Standartlar›
G‹R‹fi
Co¤rafi konumlar› bilgiyle birlefltiren sistemlere Co¤rafi Bilgi Sistemleri ad› verilmek-
tedir. ‹nternet ve web, co¤rafi bilgi sistemlerinde on sene öncesine göre ciddi de¤i-
fliklikler gerçekleflmesine neden olmufltur. Birbiriyle ba¤lant›l› bilgisayarlar›n olufltur-
du¤u bir yap› olan ‹nternet, sistemler aras›ndaki veri al›flveriflini kolaylaflt›rmaktad›r.
Art›k veri farkl› yerlerde de olsa, ‹nternet sayesinde bu veriler derlenebilmekte ve
bilgi haline getirilebilmektedir. Google Earth ve Google Maps gibi uygulamalar, ‹n-
ternet kullan›c›lar›n›n co¤rafi bilgi sistemlerinden yararlanmalar›n› kolaylaflt›rm›flt›r.
Web temelli sistemler ve ucuzlayarak cep telefonlar›na giren GPS al›c›lar›, co¤-
rafi hizmetlerin yayg›n flekilde kullan›lmas›na ve çeflitlenmesine yol açm›flt›r. Yay-
g›nlaflmayla birlikte gelen en büyük sorunlardan biri, co¤rafi nesnelerin her sis-
temde farkl› flekilde tutulmas› olmufltur. Geçti¤imiz on y›l içinde Open Geospatial
Konsorsiyumu (OGC) ad› verilen bir kuruluflun çal›flmalar›yla, co¤rafi veri model-
leri ve dosya biçimleri standartlaflm›flt›r.
Bu bölümde, standartlaflt›r›lan co¤rafi veri modellerinin sa¤lad›¤› yararlar›,
OpenGIS konsorsiyumunun gelifltirdi¤i standartlar›, bir co¤rafi veri modelinin nas›l
kurulmas› gerekti¤i, OpenGIS standartlar›n› sa¤layan veritaban› yönetim yaz›l›mla-
r›n› ve OpenGIS standartlar›n› kullanan aç›k kaynak kodlu sistemleri inceleyece¤iz.
XML nedir?
XML, metin temelli veri dosyas› biçimidir. XML dosyalar›n›n en önemli özelli¤i, ye-
ni özellikler eklendikçe, eski biçimin de okunabilmesidir. Etiketlerin aç›lmas› ve
kapanmas› ve aralar›na verilerin konulmas›yla oluflturulur. Örne¤in, <boy-
lam>30.52082243817922</boylam> ifadesi, boylam etiketi aras›nda boylam
de¤erini ifade etmek için kullan›lmaktad›r. XML dosyas›, içiçe girmifl etiketlerden
oluflur. Aç›lan her etiketin alt›nda, veri bulunabildi¤i gibi içiçe girmifl etiketlerden
oluflan bir yap› da bulunabilir (fiekil 1)
8. Ünite - OpenGIS Standartlar› 149
fiekil 8.1
<kisi> XML veri örne¤i
<ad>Ahmet</ad>
<soyad>Ercan</soyad>
<yas>21</yas>
</kisi>
fiekil 8.2
OPENGIS STANDARTLARI
Uzamsal veritaban›, co¤rafi nesnelerin özelliklerinin depolanmas› için kullan›l›r.
Geleneksel anlamda bir veritaban› olmakla birlikte, geometrik nesneler de tutul-
makta ve co¤rafi hesaplamalar konusunda yordamlar bulunmaktad›r. Sa¤lad›¤›
avantajlar flunlard›r:
• fiekillerin geometrik özellikleri depolan›r. Veritaban›nda, bir binan›n koordi-
natlar›yla birlikte kaç katl› oldu¤u, kaç daire bulundu¤u, binan›n boyas›n›n
rengi gibi nitelikler de tutulur.
• Uzamsal anlamda gerçeklefltirilen indeksleme, çok büyük ölçeklerde flekille-
rin seçilmesini kolaylaflt›r›r. Koordinatlar düflünülmeden indekslenen verita-
banlar›nda, iki koordinatla belirlenen bir dikdörtgen flekilli alan içinde kalan
nesnelerin bulunmas› bütün veritaban› içinde aramay› gerektirebilir. Ancak
uzamsal olarak indekslenmifl veritabanlar›nda, belirli bir noktaya yak›n olan
nesneler seçildi¤inden, arama boyutu küçülür ve sorgular h›zlan›r.
• Uzamsal anlamda sorgulamalar yap›labilir. Örne¤in, bir okul binas›na bir ki-
lometreden daha yak›n olan binalar h›zl› bir flekilde sorguyla döndürülebilir.
150 Veritaban› Uygulamalar›
fiekil 8.3
xmlns:gx="http://www.google.com/kml/ext/2.2"
metre
yükseklikten
xmlns:kml="http://www.opengis.net/kml/2.2" gösterilmesini
xmlns:atom="http://www.w3.org/2005/Atom"> sa¤layan KML
<Document> dosyas›
<name>Eskisehir.kml</name>
<Placemark>
<name>Eskisehir</name>
<LookAt>
<longitude>30.52082243817922</longitude>
<latitude>39.77662108800603</latitude>
<altitude>0</altitude>
<range>100</range>
<tilt>0</tilt>
<heading>0</heading>
<altitudeMode>relativeToGround</altitudeMode>
<gx:altitudeMode>relativeToSeaFloor
</gx:altitudeMode>
</LookAt>
<Point>
<coordinates>30.51837232350782,39.77650863996553,0
</coordinates>
</Point>
</Placemark>
</Document>
</kml>
KML dosyas›, popüler ve ücretsiz bir yaz›l›m olan Google Earth içinden okuna-
bilir. Uzant›s› kml olarak herhangi bir dizine kaydedilen dosya, üzerine çift t›klan-
d›¤›nda Google Earth taraf›ndan aç›l›r ve Eskiflehir’in merkezi olan Köprübafl› mev-
kii 1000 metre yukar›dan kullan›c›ya gösterilir (fiekil 4). Genel olarak KML örne-
¤inde oldu¤u gibi, OGC standartlar› farkl› yaz›l›m flirketlerinin üretti¤i yaz›l›mlar›n
ç›kt›lar›n›n di¤er yaz›l›mlara aktar›labilmesini sa¤lamaktad›r.
fiekil 8.4
Koprubasi.kml
dosyas›na
t›kland›¤›nda
Google Earth
program›
152 Veritaban› Uygulamalar›
<CData>
8345.53552,309375.875432
8345.53645,309375.875432
8345.53645,309375.894323
8345.53552,309375.894323
</CData>
</LineString>
</Polygon>
</Feature>
Line LinearRing
1..*
8. Ünite - OpenGIS Standartlar› 153
fiekil 8.8
<Point>
<coord><X>5.0</X><Y>40.0</Y></coord>
Bir nokta (point)
</Point>
nesnesi
fiekil 8.9
<LineString>
<coord><X>0.0</X><Y>0.0</Y></coord>
Çizgi dizisi
(LineString) tan›m›
<coord><X>20.0</X><Y>35.0</Y></coord>
<coord><X>100.0</X><Y>100.0</Y></coord>
</LineString>
fiekil 8.10
s s s e s e çizgi dizisi
(LineString)
örnekleri
e
a) b) c) d)
Nokta (fiekil 8), e¤ri, çizgi dizisi (fiekil 9, 10), çizgi, çizgi halkas›, GML içindeki
temel geometrik yap›lard›r. Bunlar›n bir araya getirilmesiyle çoklu veri yap›lar›
oluflturulabilir. Örne¤in, çoklu çizgi dizisi (MultiLineString), birden fazla çizgi di-
zisinin birlefliminden oluflmaktad›r. fiekil 11, bu veri yap›s›n›n biçimini göster-
mektedir.
154 Veritaban› Uygulamalar›
fiekil 8.11
Örne¤in, bir yol nesnesi, geometrik olarak ortas›ndan geçti¤i düflünülen bir dizi
çizgiyle modellenebilir. ‹smi ve yüzey tipi, yolu tan›mlamam›za yarayan ek özellik-
lerdendir. Yolun hangi flehre do¤ru uzand›¤›n›n da tan›ma eklenmesi iyi olacakt›r.
Yolla ilgili, örne¤in çift fleritli olmas›, geniflli¤i, üzerinde trafik iflaretlerinin bulun-
du¤u gibi bilgiler de tan›ma eklenebilir. Model fiekil 12’de ifade edilmektedir.
fiekil 8.12
Feature
LineString
centerLine
destination
Town
fiekil 8.13
<?xml version="1.0" encoding="UTF-8"?> Eskiflehir’in flehir
<CityModel> modeli
<gml:name>Eskisehir</gml:name>
<gml:boundedBy>
<gml:Box>
<gml:coord>
<gml:X>0.0</gml:X><gml:Y>0.0</gml:Y>
</gml:coord>
<gml:coord>
<gml:X>100.0</gml:X><gml:Y>100.0</gml:Y>
</gml:coord>
</gml:Box>
</gml:boundedBy>
<cityMember>
<River>
<gml:description>Eskisehir
icinden gecer</gml:description>
<gml:name>Porsuk</gml:name>
<gml:centerLineOf>
<gml:LineString>
<gml:coord>
<gml:X>0</gml:X><gml:Y>50</gml:Y>
</gml:coord>
<gml:coord>
<gml:X>70</gml:X><gml:Y>60</gml:Y>
</gml:coord>
<gml:coord>
<gml:X>100</gml:X><gml:Y>50</gml:Y>
</gml:coord>
</gml:LineString>
</gml:centerLineOf>
</River>
</cityMember>
</CityModel>
WMS hizmeti
sunan sunucunun
dinamik olarak Web
haritalar› Internet Sunucusu
oluflturmas›
Veritaban›
Sorgu
Harita
‹stemci
WFS (Web Feature Service), veritaban›nda yer alan co¤rafi nesnelere ve bunla-
r›n özelliklerine web üzerinden eriflimi sa¤layan bir standartd›r. Web üzerinden
veritaban› içinde bulunan kay›tlara eriflimi sa¤lar. Örne¤in, flehir nesnesinin özel-
likleri talep edildi¤inde (fiekil 15), WFS flehrin nüfusunu, merkezinin koordinatla-
r›n›, deniz seviyesinden yüksekli¤ini XML format›nda göndermektedir. Her bir de-
¤erin özellikleri, örne¤in de¤erin tamsay› m› gerçek say› m› olmas› gerekti¤i, de-
¤erin geçerli oldu¤u say› aral›¤› gibi genel özellikleri de XML dosyas›nda gelmek-
tedir. Gelen XML dosyas› incelenerek, veritaban›nda herhangi bir flehir sorguland›-
¤›nda ne tür bilgilerin gelece¤i de ö¤renilmifl olmaktad›r.
fiekil 8.15
</DescribeFeatureType>
al›nmas›n›
sa¤layan XML
komut
Web kapsama servisi (WCS: Web Coverage Service) bir sunucu taraf›ndan su-
nulan bilgilere, yaz›l›mlar›n eriflimini sa¤layan bir standartt›r. Sunucu taraf›ndan
imge veya vektörel olarak harita döndürüldü¤ü WMS’in aksine, WCS GML tipinde
veri döndürür (fiekil 16). Bu veriler istemci taraf›nda haritaya dönüfltürülerek kul-
lan›c›ya gösterilebildi¤i gibi, veri ifllendikten sonra baflka amaçlar için de kullan›-
labilir. Co¤rafi nesnelerin baz› özellikleri sorgulamaya yarayan WFS standard›n›n
aksine, WCS bir kapsama alan›ndaki bilgileri bir bütün halinde elde etmeye yarar.
8. Ünite - OpenGIS Standartlar› 157
fiekil 8.16
WCS özelli¤iyle
istemci taraf›nan
Web yap›lan sorguya
Internet Sunucusu karfl›l›k HTTP
sunucusunun GML
olarak veriyi
sa¤lamas›
Veritaban›
Sorgu
GML
veri
‹stemci
Sensör Standartlar›
Belirli bir co¤rafya üzerinde baz› de¤erleri (örne¤in ›s›, bas›nç, rüzgar fliddeti, günefl
›fl›¤›n›n fliddeti gibi) okumaya yarayan sensörlerin modellenmesi ve co¤rafi nesneler-
le iliflkilendirmesi için oluflturulan standartlardan biri, GML standard›n›n bir eki olan
Sensor Model Dilidir (Sensor Model Language: SensorML). Co¤rafi modelin güncel-
lenmesi ve çeflitli amaçlarla kullan›labilmesi için sensörlerden al›nan veriler gereklidir.
Örne¤in, bir bölgenin rüzgardan ne kadar enerji üretebilece¤inin belirlenmesi, ancak
bölgede kurulu rüzgar ölçerlerden (anemometre) al›nan veriler kullan›larak yap›labi-
lir. Kullan›lan sensörlerin uzamsal koordinatlar›n›n yan›nda, ölçüm s›kl›¤›, çözünürlük
ve hassasiyet gibi özelliklerinin kodlanmas›n› sa¤lar. Verilerin co¤rafi modellere göre
ifllenmesi için di¤er yaz›l›mlara destek sa¤lar.
Dönüfltürücü ‹flaret Dili (TML: Transducer Markup Language), yaz›l›mlar›n dönüfl-
türücülerle ilgili ifllemler yapmas›n› sa¤layan GML’e dayal› bir dildir. Dönüfltürücüle-
rin elektronik ve mekanik özellikleri, hassasiyetleri, hata oranlar› bu dil içinde flema-
larla tan›mlanm›flt›r. Dönüfltürücüler, bir fiziksel özelli¤i bir di¤erine çeviren araçlard›r.
Örne¤in, sensörleri s›cakl›k de¤erini elektrik sinyaline çevirirler. Motorlar elektri¤i
mekanik enerjiye çevirmekte kullan›lan dönüfltürücülerdir.
Di¤er bir standart olan O&M standard›, gözlem ve ölçümlerin standardizasyonu-
nu (O&M standard›) sa¤lamaktad›r. Gözlem, bir zaman aral›¤›nda veya belirli bir
anda gerçekleflen bir olaya atanan bir say›, de¤er veya semboldür. Sensör verileri,
ölçülen co¤rafi nesnelerin nitelikleri, toplam olarak gözlemi oluflturur. Örne¤in, bir
selin gözlemi, belirli bir nehirdeki su seviyelerinin ölçümleri, nehir yata¤›n›n taflma
miktar› ve ekili alanlardaki kay›p miktar› toplam olarak bir gözlem olarak tan›mla-
nabilir. Gözlemler, co¤rafi olarak önemli olaylard›r ve OGC’nin gelifltirdi¤i O&M
standard›, gözlemlerin standart bir flekilde tan›mlanmas›n› sa¤lamaktad›r.
Sensörlerin tan›mlanmas› ve özelliklerinin kodlanmas› d›fl›nda, bu sensörlere
veya dönüfltürücülere olan eriflimin de web servisleri üzerinden sa¤lanmas› için
çeflitli standartlar OGC taraf›ndan tan›mlanm›flt›r. OpenGIS SOS (Sensör Gözlem
Servisi: Sensor Observation Service), gözlemlerin sorgulanmas›, getirilmesi ve çe-
flitli özelliklerin süzülmesi için gelifltirilmifltir. SOS kullan›larak, su seviye sensörle-
ri, dünya gözlem uydular› gibi dinamik sensörlerin verileri belirli bir co¤rafi bölge
için al›nabilmektedir.
158 Veritaban› Uygulamalar›
SPS (Sensör Planlama Servisi: Sensor Planning Service), yine web servisleri
üzerinden, sensörlerin çeflitli özelliklerinin de¤ifltirilmesi ve kalibrasyonlar›n›n ya-
p›lmas›n› sa¤lar. Sensörlerden yeni bir veri al›nd›¤›nda, istemcide çal›flan yaz›l›-
m›n haberinin olabilmesi için SAS (Sensör Uyar› Servisi: Sensor Alert Servisi) stan-
dard› gelifltirilmifltir. Örne¤in, bir sel bask›n› tehlikesi oldu¤unda, su seviye sen-
sörlerindeki anormal bir art›fl, bu flekilde istemci sistemine bir uyar› olarak gön-
derilebilmektedir.
Özet
N
AM A Ç
Co¤rafi bilgi sistemlerindeki standartlar›n öne- N
AM A Ç
Bafll›ca OpenGIS standartlar›n›n nas›l uygulan-
1 mini kavrayacaks›n›z. 3 d›¤›n› göreceksiniz.
Bilgi teknolojilerindeki standartlar, farkl› ifllem Co¤rafi nesneler ve veriler, sabit harita bilgilerin-
sistemlerine ve donan›m birimlerine sahip bilgi- den ve üzerinde yer alan co¤rafi nesnelerden
sayarlar›n birbirleriyle iletiflim kurabilmesine ve oluflmaz. Bazen, canl› bilgilerin harita üzerine ifl-
veri de¤iflimi yapabilmesini sa¤lar. Örne¤in, web lenmesi ve gerekti¤inde bu bilgilerin kullan›la-
ve ‹nternet standartlar› sayesinde milyarlarca bil- rak baz› ifllemler yap›lmas› gerekebilir. Bu amaç-
gisayar bir arada çal›flabilmektedir. Benzer flekil- la, OGC sensörler ve dönüfltürücülerle ilgili, Sen-
de, co¤rafi verilerin modellenmesi ve standart- sorML, SML ve O&M gibi çeflitli standartlar gelifl-
laflmas› için, OGC (Open Geospatial Consorti- tirmifltir.
N
um) konsorsiyumu, yüzlerce kuruluflun katk›la-
r›yla çal›flmaktad›r. Web üzerinden sa¤lanan haritalar›n nas›l olufl-
N
AM A Ç
4 turuldu¤unu anlayacaks›n›z.
A M A Ç XML veri biçimini kullanabileceksiniz. Belirli bir anda gerek duyuldu¤unda, belirli bir
2
Gelifltirilen standartlar içinde, co¤rafi nesneleren co¤rafi bölgedeki istenen özellikleri gösteren ha-
XML dosya biçiminde tutulmas›n› yarayan GML ritalar›n oluflturulmas› için, Web Harita Hizmeti
biçimi önemli yer tutar. Sistemler aras›nda veri (Web Map Service) standard› gelifltirilmifltir. Ha-
aktar›m› için OGC taraf›ndan gelifltirilen standart- ritalar›n WMS hizmeti veren sunucuda dinamik
lar›n büyük k›sm› GML’ye dayan›r. Web üzerin- olarak oluflturulmas›n› ve talepte bulunan yaz›l›-
den bilgi aktar›m› için, web servisi standartlar› ma aktar›lmas›n› sa¤lar. Hizmet, servis seviyesin-
gelifltirilmifltir. Örne¤in, web harita hizmeti, ‹n- deki metaverinin sunulmas›n›, co¤rafi ve uzam-
ternet izleyicisi üzerinden kullan›c›n›n haritalara sal özellikleri iyi belirlenmifl haritan›n oluflturul-
eriflmesini ve ekran›nda göstermesini sa¤lamak- mas›n› kolaylaflt›r›r. Web harita ifllemlerine, stan-
tad›r. dart bir ‹nternet izleyicisi üzerinden ‹nternet URL
adresleri (URL: Universal Resource Locator) kul-
lan›larak ulafl›labilir.
160 Veritaban› Uygulamalar›
Kendimizi S›nayal›m
1. OpenGIS nedir? 5. Web kapsama servisi ve Web Harita Servislerinin
a. Co¤rafi Bilgi sistemlerinin altyap›s› için gelifltiri- aras›nda döndürdü¤ü veri aç›s›ndan fark› afla¤›dakiler-
len standartlar›n genel ad›d›r. den hangisidir?
b. Aç›k kaynak kodlu co¤rafi bilgi sistemi yaz›l›m- a. Web harita servisi GML veri döndürürken, Web
lar›d›r. Harita Sistemi CityML türünde dosya getirir.
c. Uzamsal verilerin, biçimi XML türevi biçimde tu- b. Web kapsama servisi imge döndürürken, Web
tulmas›n› tarif eden bir standartt›r. harita sistemi GML türünde veri döndürür.
d. Co¤rafi bilgi sistemleri için standartlar gelifltiren c. Web kapsama sistemi, arka planda yer alan im-
bir vak›f kurulufludur. ge ve üst katman olarak sensör verilerini döndü-
e. Web üzerinden harita uygulamalar› gelifltirmek rürken, Web Harita Servisi sadece vektörel veri
için kurulmufl ticari bir flirkettir. döndürür.
d. Web kapsama servisi bilgi döndürürken, Web
2. GML dilinin türetildi¤i dosya biçimi nedir? Harita Servisi imge ve vektörel dosya getirir.
a. SHP e. Web harita servisi JPG imge dosyas› türünde bil-
b. HTML gi döndürürken Web kapsama servisi SVG for-
c. Adobe Flash mat›nda dosya döndürür.
d. DOC
e. XML 6. SensorML dilinin temel ifllevi afla¤›dakilerden hangi-
sidir?
3. Web harita hizmeti (Web Map Service) nedir? a. Sensörlerin parametrelerinin de¤ifltirilmesini
a. Web üzerinden haritalara bakmak için kullan›- sa¤lamak
lan yaz›l›md›r. b. Sensörlerin de¤erlerinin ö¤renilmesini sa¤lamak
b. ‹stemci taraf›ndan belirlenen kriterleri sa¤layan c. Haritalar›n üzerinde bir katman olarak, sensör-
haritalar› sunucuda oluflturmak için kullan›lan lerden gelen gerçek zamanl› verinin kul-
hizmettir. lan›lmas›n› sa¤lamak
c. Belirli bir koflula uyan co¤rafi bir bölgedeki d. Yeni sensör eklemek
uzamsal nesnelerin niteliklerini istemciye akta- e. Çal›flmayan veya yanl›fl veri veren sensörlerin
ran servistir. belirlenmesini sa¤lamak
d. Web üzerinden uzamsal veritaban› tasarlamak
için kullan›lan bir araçt›r. 7. Web Kapsama Servisi (WCS) ve Web Özellik Servisi
e. Veritaban› yönetim sistemlerinin co¤rafi nesne- standartlar› aras›ndaki temel fark afla¤›dakilerden han-
leri depolayabilmesini sa¤layan standartt›r. gisidir?
a. WFS GML türünde dosyalar döndürürken, WCS
4. Web kapsama servisinin (WCS: Web Coverage Ser- üzerine özelliklerin ve verilerin ifllendi¤i imge
vice), bir istemcinin talebi do¤rultusunda oluflturarak dosyalar›n› getirir.
döndürdü¤ü verinin biçimi nedir? b. WFS, co¤rafi nesnelerin baz› özellikleri sorgula-
a. GML maya yararken, WCS bir kapsama alan›ndaki bil-
b. HTML gileri bir bütün halinde elde etmek için kullan›-
c. SHP l›r.
d. Tablo c. WFS çeflitli koflullara göre co¤rafi nesnelerin
e. CityML özelliklerini harita olarak getirirken, WCS verita-
ban›ndaki bütün bilgileri döndürür.
d. WCS, veritaban› kullanarak ifllevini gerçekleflti-
rirken, WFS bütün verileri XML biçiminde dos-
yalarda tutar.
e. WCS web servisi olarak çal›fl›rken, WFS SQL ko-
mutlar› üzerinden çal›flt›r›labilir.
8. Ünite - OpenGIS Standartlar› 161
Yararlan›lan ve Baflvurulabilecek
Kaynaklar
Sherman, G. E. (2008). Desktop GIS Mapping the Pla-
net with Open Source Tools, The Pragmatic Books-
helf.
Consortium, O. G. (2005). The Importance of Going
Open. An Open Geospatial Consortium White Pa-
per
Consortium, O. G. (2007). Data Models and Interopera-
bility. An Open GIS Consortium (OGC) White Pa-
per
Buehler, K. (2007) Data Models and Interoperability.
An Open GIS Consortium (OGC) White Paper
Consortium, O. G. (2002). OpenGIS Geography Mar-
kup Language (GML) Implementation Specification,
version 2.1.2.
OpenGIS’le ilgili dokümanlar için
http://portal.opengeospatial.org/
9
VER‹TABANI UYGULAMALARI
Amaçlar›m›z
N
Bu üniteyi tamamlad›ktan sonra;
N
PostGIS yaz›l›m›n› herhangi bir bilgisayar üzerine kurabileceksiniz.
N
PostGIS Veritaban› flablonundan yeni bir veritaban› yaratabileceksiniz.
Yeni bir tablo yaratabilecek ve geometrik özellikli yeni bir kolon ekleyebile-
N
ceksiniz.
Uzamsal referans sistemlerinin neden yararl› oldu¤unu aç›klayabileceksiniz.
Anahtar Kavramlar
• PostGIS • Co¤rafi ‹ndeksleme
• Geometry Veri Tipi • Uzamsal Referans Sistemi
‹çerik Haritas›
• G‹R‹fi
• POSTGIS KURULUMU
• UZAMSAL VER‹TABANININ
KURULMASI
Veritaban› PostGIS Kurulumu ve
Uygulamalar› • TABLOLARIN OLUfiTURULMASI
Uygulamalar›
• TABLOYA VER‹LER‹N YÜKLENMES‹
• UZAMSAL REFERANS S‹STEMLER‹
VE DÖNÜfiÜMLER
• ‹NDEKSLEME
PostGIS Kurulumu ve
Uygulamalar›
G‹R‹fi
Bir yaz›l›m sisteminin kurulmas› s›ras›nda karfl›lafl›lan en önemli sorunlardan biri,
yaz›l›m taraf›ndan oluflturulacak verilerin veritaban›nda hangi biçimde saklanaca¤›
konusudur. Veri modeli, gerçek hayattaki nesnelerin, veritaban›nda nas›l depola-
naca¤›n› aç›klar. Yaz›l›m gelifltirilirken, yeni ç›kan gereksinimlere göre veri mode-
linin de¤ifltirilmesi s›k karfl›lafl›lan bir durumdur. Ancak, veri modelinde yap›lan
de¤ifliklikler yaz›l›m kodlar› üzerinde çok büyük de¤iflikliklere neden olabilir. Bu
nedenle, veri modelinin yaz›l›m gelifltirilmeden önce bilinmesi, yaz›l›m›n gelifltir-
me süresini azaltt›¤›ndan yaz›l›m firmalar› için çok önemlidir.
PostGIS, PostreSQL veritaban› yönetim yaz›l›m›na co¤rafi nesnelerin depolana-
bilmesi ve çeflitli co¤rafi sorgulamalar›n yap›lmas›n› sa¤layan aç›k kaynak kodlu
bir yaz›l›md›r. PostGIS, SQL için Basit Nitelikler (Simple Features for SQL) standar-
d›n› desteklemektedir. PostGIS’in özellikleri flöyle özetlenebilir:
• Noktalar, çizgi dizileri, poligonlar, çoklu noktalar, çoklu çizgi dizileri ve
geometrik derlemelerin, geometrik veri yap›lar› olarak veritaban›nda tan›m-
lanmas›n› sa¤lar.
• Geometrik nesnelerin birbirleriyle etkileflimini belirleyen yüklemler (predi-
cate) tan›mlar.
• Co¤rafi nesneler üzerinde uzamsal ölçümler yapmak için, alan, çevre hesap-
lamalar› gibi yordamlar sa¤lar.
• Co¤rafi anlamda kesiflim, birleflim ve fark gibi küme ifllemleri yapan yor-
damlar tan›mlar.
• Uzamsal sorgulamalar için uzamsal indeksleme sa¤lar.
• Uzamsal ve uzamsal olmayan sorgulamalar›n ayn› anda yap›labilmesini
kolaylaflt›r›r.
Bu ünitede, PostGIS’in nas›l kurulaca¤› ifllenecek ve sa¤lad›¤› temel yordamlar
anlat›lacakt›r. Ünitenin ilk bölümünde PostgreSQL veritaban›na PostGIS kütüpha-
nesinin nas›l yüklenece¤i gösterilecektir. Geometrik nesnelerin depolanabilece¤i,
uzamsal_db isimli bir veritaban› kurulacak ve üzerine co¤rafi nesnelerin eklene-
ce¤i tablolar oluflturulacakt›r. Tablolar›n oluflturulmas›yla ilgili konular, indeksle-
me ifllemi, veritaban› flablonlar›ndan veritaban› oluflturulmas› ve PostgreSQL’in yö-
netici program› üzerinden basit sorgulamalar yap›lmas› yine bu Ünitenin kapsam›
içindedir. Bu ünitede, PostGIS’in 1.5.1 sürümü kullan›lmakla birlikte, verilen ör-
nekler gelecekte ç›kacak sürümlerde de çal›flacakt›r.
166 Veritaban› Uygulamalar›
POSTGIS KURULUMU
PostGIS uzant›s›, PostgreSQL veritaban› yönetim yaz›l›m› kurulduktan sonra kurul-
maktad›r. PostGIS 1.5.1, http://postgis.refractions.net/downloads/windows adre-
sinden temin edilebilir. PostGIS paketi içinde, kendisi için gerekli çerçeve kütüp-
haneleri olan PROJ ve GEOS paketleri de oldu¤undan PostgreSQL yaz›l›m› için
olan PostGIS paketinin indirildi¤inden emin olunmal›d›r.
PostGIS kurulum dosyas› üzerine t›kland›¤› zaman, ilk pencerede (fiekil 1) ya-
z›l›m›n kullan›m lisans› koflullar› gösterilmekte ve kurulumun devam› için lisans
koflullar›n›n kabul edildi¤ine iflaret eden “I Agree” (kabul ediyorum) butonuna ba-
s›lmas› beklenmektedir. Yaz›l›m›n lisans› olan “GNU General Public License”, aç›k
kaynak kodu esas›na dayal› kullan›m politikas›d›r.
fiekil 9.1
Lisans koflullar›n›n
kabul edilmesi
ekran›
Bir sonraki aflamada, PostGIS paketi içinde yer alan alt birimler seçilmelidir.
PostGIS’le birlikte, uzamsal veritaban›n›n kurulumu (Create Spatial database) da
talep edilmelidir (fiekil 2). Bu flekilde, PostGIS kurulurken, postgis isminde
uzamsal özellikli bir veritaban› kurulurken, yeni veritaban› türetmek için de bir
flablon, template_postgis oluflturulmaktad›r.
fiekil 9.2
PostGIS ve uzamsal
veritaban›n›n
kurulumunun
istenmesi
9. Ünite - PostGIS Kurulumu ve Uygulamalar› 167
fiekil 9.3
PostgreSQL
kurulum dizinin
seçilmesi
fiekil 9.4
PostgreSQL
kurulumu
s›ras›nda verilen
postgres
kullan›c›s›n›n
flifresinin girilmesi
fiekil 9.5
Kurulacak uzamsal
veritaban›n›n
isminin verilmesi
168 Veritaban› Uygulamalar›
fiekil 9.6
Kurulumun
tamamlanmas›
Varsay›lan flekilde
PostgreSQL ve
PostGIS’le birlikte
gelen
veritabanlar›
9. Ünite - PostG‹S Kurulumu ve Uygulamalar› 169
fiekil 9.8
template_postgis
flablonundan
uzamsal_db isimli
veritaban›n›n
türetilmesi
TABLOLARIN OLUfiTURULMASI
Veritaban› oluflturulduktan sonra, tablolar›n oluflturulmas› gereklidir. Geometrik
özellikli bir tablo oluflturmak için ilk önce standart bir tablo oluflturmakla bafllan-
mal›d›r. Örne¤in, içinde yol_no (tamsay›) ve yol_isim (karakter dizisi: string)
kolonlar› bulunan yollar isimli bir tablo olufltural›m. Tablonun oluflturulmas›,
uzamsal_db seçili olarak SQL penceresi aç›larak, afla¤›daki komutla sa¤lanabilir:
Ancak, geometrik özellikli bir kolonun tabloya eklenmesi gerekecektir. Bu da, tab-
lo oluflturulduktan sonra, afla¤›daki komut verilerek uzamsal bilgilerin konulaca¤›
yol_geom kolonu eklenerek gerçeklefltirilebilir (fiekil 9). AddGeometryCo-
lumn() yordam›nda, co¤rafi referans sisteminin tan›ms›z, di¤er bir deyiflle -1 ola-
ca¤› ve geometrinin üç boyutlu olmas› gerekti¤i belirtilmektedir:
SELECT AddGeometryColumn( 'yollar', 'yol_geom', -1,
'GEOMETRY', 3 );
fiekil 9.9
yollar tablosunun
ve geometrik
bilgilerin
konulaca¤›
yol_geom
kolonunun
eklenmesi
170 Veritaban› Uygulamalar›
fiekil 9.10
yollar tablosu
eklendikten sonra
uzamsal_db
veritaban›.
CONSTRAINT enforce_dims_bina_geom
CHECK (st_ndims(bina_geom) = 3)
CONSTRAINT enforce_srid_bina_geom
CHECK (st_srid(bina_geom) = (-1))
SIRA için,
yol_geom kolonunda geometrik bilgilerin nas›l kaydedildi¤ini görmek S‹ZDESQL panelin- SIRA S‹ZDE
de “select * from yollar” komutunu vererek, yol_geom kolonunda tutulan veri- 1
leri listeleyiniz.
D Ü fi Ü N E L ‹ M D Ü fi Ü N E L ‹ M
N N
SIRA S‹ZDE SIRA S‹ZDE
SELECT ST_IsValid(ST_GeomFromText('LINESTRING(0
T E L E V ‹ Z Y O N 1, 1 TELEV‹ZYON
1)'))
Di¤er yandan, geçersiz bir nesne olan “LINESTRING(1 1, 1 1)” SQL ko-
‹NTERNET ‹NTERNET
mutuyla denetlenirse, sonuç yanl›fl olarak gelecektir. Ancak, denetimin tabloya her
yeni kay›t eklendi¤inde otomatik olarak gerçeklefltirilmesi istenirse, yeni bir k›s›t
(CONSTRAINT) tablo tan›m›na eklenmelidir. Bu durum, her veri giriflinde geo-
metrik özelliklerin denetlenerek bilgisayar zaman›n› harcamas›na neden olacakt›r.
Geometrik geçerlili¤in kontrolünün her yeni kay›t eklenmesi s›ras›nda otomatik
olarak yap›lmas› için afla¤›daki SQL komutu çal›flt›r›labilir:
SQL komutu verildi¤inde, Türkiye’yi de kapsayan 36. UTM bölgesi için kullan›-
labilen referans sistemleri görülmektedir. Türkiye için kullan›lan referans sistemle-
rinden birinin, numaras› 32636’d›r. Referans sistemiyle ilgili bilgi srtext kolo-
nunda belirtilmekte ve proj4text kolonunda da referans sistemiyle ilgili teknik
ayr›nt›lar yer almaktad›r (fiekil 11).
fiekil 9.11
Belirli bir referans sistemine göre tan›ml› bir tablonun geometrik kolonlar›n›n
referans sistemi ST_SetSRID() yordam›yla de¤ifltirilebilir. Bu yordam, koordi-
natlar› yeni referans sistemine göre de¤ifltirmez. Örne¤in, yukar›daki örnekler ara-
s›nda Referans sistemi, tan›ms›zdan “WGS84 /UTM 36. Bölge” sistemine flöyle ak-
tar›labilir. ST_SetSRID() yordam›, yanl›fll›kla konulan referans sistemlerini dü-
zeltmek için kullan›lmaktad›r.
Bir referans sisteminde tan›ml› verilerin di¤er bir referans sistemindeki karfl›l›k-
lar›n›n bulunmas› için, ST_Transform() yordam› kullan›labilir. Co¤rafi bilgi sis-
temlerinde farkl› bilgi kaynaklar›ndan elde edilen farkl› referans sistemine göre ta-
n›mlanm›fl verilerin bir araya getirilmesi, bütün verilerin tek bir referans sistemine
dönüfltürülmesiyle gerçeklefltirilebilir. PostGIS’in dönüflüm özelli¤inin veritaban›
düzeyinde yap›labilmesi, co¤rafi bilgi sistemlerinde istemci taraf›nda yer alan yaz›-
l›mlar›n yükünü önemli ölçüde azaltmaktad›r.
Referans sistemindeki de¤iflikli¤i gözleyebilmek için, di¤er bir yordam›n kullan›-
m›n›n ö¤renilmesi gereklidir. Geometrik verinin metin haline getirilmesi için
ST_AsEWKT() yordam› kullan›labilir. Bu yordam›n özelliklerinden biri, metin hali-
ne getirilen verinin geçerli oldu¤u referans sistemini de göstermesidir. Örne¤in, afla-
¤›daki SQL cümleci¤inde geometrik verinin dönüfltürülmesi flu flekilde yap›labilir:
9. Ünite - PostG‹S Kurulumu ve Uygulamalar› 173
SELECT
ST_AsEWKT('0103000020E610000001000000050000000000000000
00000000000000000000000000000000000000000000000000F03F0
00000000000F03F000000000000F03F000000000000F03F00000000
0000000000000000000000000000000000000000'::geometry);
SELECT ST_AsEWKT(
ST_Transform(
ST_GeomFromEWKT('SRID=4326;POINT(39.462 30.300)'),
32636))
SELECT yollar.yol_isim
FROM yollar, otoyollar
WHERE ST_Crosses(yollar.yol_geom,
otoyollar.otoyol_geom);
FROM binalar
S O R U S O R U
ST_Area() yordam›, kullanarak bir tablo içindeki en büyük yüzölçümüne sa-
hip binan›n ismini ve yüzölçümünü alttaki SQL cümleci¤inde oldu¤u gibi döndü-
D‹KKAT D‹KKAT
rebiliriz. “ORDER BY” komutu, yüzölçümü hesaplanarak metrekare de¤iflkenine
konulan binalar› s›ralar. “LIMIT 1” deyimiyle sadece en üstte bulunan ve en büyük
N N
SIRA S‹ZDE yüzölçümüne SIRAsahip
S‹ZDEbina gösterilir.
SELECT
AMAÇLARIMIZ
binalar.bina_isim,
AMAÇLARIMIZ
ST_Area(binalar.bina_geom) AS metrekare
FROM
K ‹ T A P binalar
K ‹ T A P
ORDER BY metrekare DESC
LIMIT 1;
TELEV‹ZYON TELEV‹ZYON
‹NDEKSLEME
‹ndeksleme, sorgulama baflar›m›n› art›ran önemli ifllemlerden biridir. Geleneksel
‹NTERNET veritaban› ‹tablolar›nda
NTERNET indeksleme genellikle sorgulanan kolonlar üzerinde ger-
çeklefltirilir. Örne¤in, ö¤renci bilgi sistemi veritaban›nda ö¤renci tablosunda arama
ifllemi daha çok ad ve soyad›na göre gerçeklefltiriliyorsa, ad ve soyad kolonlar›
üzerinde indeksleme gerçeklefltirilerek, baflar›m art›r›labilir. Yeni kay›tlar tablolara
eklendikçe, tablonun s›k aralarla indekslenmesi gerekebilir.
Uzamsal özellikli tablolarda, geometrik ve konumsal bilgi bir karakter dizgisi
fleklinde saklanmaktad›r. Tabloda, koordinatlar› belirli bir bölge içinde yer alan ba-
z› kay›tlar üzerinde geometrik bir ifllem gerçeklefltirilecekse, uzamsal anlamda ya-
p›lacak bir indeksleme, arama süresini en aza indirebilir. Bu flekilde, tablo içinde
yer alan bütün kay›tlar›n incelenmesi yerine, sadece istenen bölgede yer alan ka-
y›tlara ifllem uygulanabilecektir. Uzamsal anlamda indeksleme ifllemi için, indeks
olarak geometrik nesneleri çevreleyen kutunun koordinatlar›n› indeks olarak kul-
lanan gist yöntemi kullan›lmaktad›r. Örne¤in, yollar tablosunun indekslenmesi
flöyle gerçeklefltirilebilir:
fiekil 9.12
yollar tablosu
üzerinde indeks
oluflturma ifllemiyle
oluflturulan
idx_yollar_geom
indeksi
Sorgulama h›z›n› art›rmakla birlikte, indeksleme her zaman do¤ru flekilde kul-
lan›lmayabilir. Göz önünde bulundurulmas› gereken baz› konular ve indeksleme-
nin yarataca¤› sorunlar flöyle özetlenebilir:
• Kay›tlarda indekslenen alanlar›n UPDATE ifllemiyle güncellenmesi zaman
al›r.
• ‹ndeksleme veritaban›n›n kulland›¤› belle¤i art›r›r ve veritaban›n›n yer kap-
lad›¤› disk alan›n› geniflletir.
• Tabloda yer alan sorgulama yap›ls›n veya yap›lmas›n bütün alanlar›n in-
dekslenmesi, sorunlu bir yaklafl›md›r.
• S›k de¤ifltirilen ve güncellenen alanlar üzerinde indeks yarat›lmas›, yarardan
çok zarar getirebilir. Her güncellenen kay›t, indeksleri zay›flat›r ve veri gün-
celleme süresini art›r›r.
• Uzamsal indekslemede kullan›lan gist yöntemi, karmafl›k nesneler bar›nd›ran
tablolarda çok verimli çal›flmayabilir. Çünkü gist yöntemi nesneleri kapsayan
çerçevenin koordinatlar›n› kullanarak indeksleri oluflturdu¤undan, karmafl›k
ve birden çok ba¤lant›s›z nesneden oluflan yap›larda sorun ç›karabilir.
176 Veritaban› Uygulamalar›
Özet
N
A M A Ç
PostGIS, PostgreSQL veritaban› yönetim sistemi- N
A M A Ç
Uzamsal referans sistemlerinin neden yararl› ol-
1 nin OpenGIS standartlar›na uygun flekilde co¤ra- 4 du¤unu aç›klayabileceksiniz.
fi veriler üzerinde ifllem yapabilmesi için geliflti- Uzamsal referans sistemleri, dünya üzerindeki
rilmifl ek bir kütüphanedir. Kurulum yaz›l›m› is- herhangi bir konumun, bir model üzerinden co¤-
tenen iflletim sistemi platformu için, http://post- rafi koordinatlar›n›n belirlenmesi amac›yla kulla-
gis.refractions.net/ sitesinden indirilebilmekte- n›lan flemalard›r. PostGIS’te, bir referans sistemi-
dir. PostGIS, PostgreSQL veritaban› yönetim ya- ne göre elde edilmifl koordinatlar› bir di¤erine
z›l›m›na baz› özellikler ekledi¤i gibi, kullan›c›la- çevirmek için çeflitli yordamlar bulunmaktad›r.
r›n co¤rafi özellikte veritabanlar› ve tablolar olufl- Önceki ünitelerde, indeksleme kavram› üzerinde
turabilmesi için flablonlar da tan›mlar. ayr›nt›l› flekilde durulmufltur. Ancak, co¤rafi nes-
N
nelerin indekslenmesi koordinatlara göre ger-
PostGIS Veritaban› flablonundan yeni bir verita- çekleflmektedir. ‹ndekslemekteki amaç, belirle-
AM A Ç
NA M A Ç
Yeni bir tablo yaratabilecek ve geometrik özellik-
3 li yeni bir kolon ekleyebileceksiniz.
Tabloya, AddGeometryColumn() yordam›yla
eklenen geometry tipindeki alana, OpenGIS
standartlar›nda tan›ml›, çizgi, nokta, çoklu çizgi,
poligon ve benzeri nesneler depolanabilir. Geo-
metry veri tipi, karmafl›k ve nümerik karakter-
lerden oluflur. Tabloya veri eklenmesini kolay-
laflt›rabilmek için, metin olarak yaz›lan nesnele-
ri geometry nesnesine çevirmek için ST_Geom-
FromText() yordam› kullan›lmaktad›r. Benzer
flekilde, PostGIS kütüphanesi, kullan›c›lar›n ve-
ri giriflini sa¤l›kl› yapabilmeleri için çeflitli yor-
damlar sunar.
9. Ünite - Postgis Kurulumu ve Uygulamalar› 177
Kendimizi S›nayal›m
1. PostGIS kurulumu gerçeklefltirildikten sonra, verita- 5. ‹ndekslenen alan› bulunan tablolar›n UPDATE iflle-
ban› içinde görülen template_postgis ile ilgili afla¤›daki miyle güncellenmesinin, indekslenmemifl tablolarda ya-
ifadelerden hangisi do¤rudur? p›lan iflleme göre daha yavafl olmas›n›n nedeni afla¤›da-
a. PostGIS’in kurulum parametrelerinin ilk orijinal kilerden hangisidir?
de¤erlerine döndürülmesi için kullan›lan SQL a. Güncellemeden sonra indeksin s›f›rlan›p yeni-
komutudur. den yap›land›r›lmas›n›n gerekmesi
b. Örnek bir veritaban›d›r. b. ‹ndekslenen tablolarda güncelleme iflleminde
c. Co¤rafi nesneler üzerinde uzamsal ifllemler yap- hem kayd›n hem de indeksin güncellenmesi
mak için gerekli fonksiyonlar›n örneklerinin ve- c. ‹ndekslenen tablolar›n sabit diskte tutulurken,
rildi¤i yard›m dosyas›d›r. indekslenen tablo kay›tlar›n›n ana bellekte de-
d. Uzamsal veritaban› yaratmak için kullan›lan bir polanmas›
flablondur. d. Tablodan sorgulama süresini art›rmas›
e. PostGIS’in veritaban›ndan kald›r›lmas› için kul- e. ‹ndekslenmeyen tablolardaki kay›tlar›n yerleri-
lan›lan komuttur. nin daha düzenli olmas›
3. ST_Length() co¤rafi nesnelerin hangi özelli¤ini 7. Uzamsal özellik verilecek bir tabloya eklenecek bir
hesaplar? alan›n veri tipi afla¤›dakilerden hangisi olabilir?
a. Uzunlu¤unu a. 3D
b. Boyunu b. character varying
c. Geniflli¤ini c. integer
d. En genifl bölümünün uzunlu¤unu d. geometry
e. Çevre uzunlu¤unu e. XY
4. ST_Crosses() yordam›n›n ifllevi nedir? 8. Metin olarak yaz›lan bir co¤rafi nesnenin do¤ru ya-
a. ‹ki co¤rafi nesne kesifliyorsa do¤ru döndürmek z›ld›¤›ndan emin olmak için afla¤›daki yorgamlardan
b. ‹ki co¤rafi nesnenin kesiflim kümesinin uzunlu- hangisi kullan›labilir?
¤unu getirmek a. ST_isInteger()
c. ‹ki co¤rafi nesnenin üst üste geldi¤i alan› co¤ra- b. ST_doesCross()
fi bir nesne olarak getirmek c. ST_isValid()
d. Birden fazla co¤rafi nesnenin kefliflim kümesini d. ST_isGeometry()
hesaplamak e. ST_isTrue()
e. MultiPolygon olarak tan›mlanan nesneleri biribi-
rine ba¤lan çizgiyi döndürmek
178 Veritaban› Uygulamalar›
Amaçlar›m›z
N
Bu üniteyi tamamlad›ktan sonra;
Co¤rafi bilgi sisteminde oluflturulmufl flekil dosyalar›n› veritaban›na aktarabi-
N
leceksiniz.
Co¤rafi bilgi sistemine veritaban›nda yer alan tablolar› katman olarak ekle-
N
yebileceksiniz.
PostGIS yordamlar›n› kullanarak, istenen sorgu kriterlerine göre SQL ko-
N
mutlar› oluflturabileceksiniz.
Birden fazla tablodaki verileri iliflkilendiren SQL komutlar› oluflturabilecek-
siniz.
Anahtar Kavramlar
• Uzamsal sorgulamalar • PostGIS
• Co¤rafi bilgi sistemleri • OpenGIS standartlar›
• Koordinat referans sistemleri
‹çerik Haritas›
• G‹R‹fi
• CO⁄RAF‹ B‹LG‹ S‹STEMLER‹
Co¤rafi Veritaban› YAZILIMI: QUANTUM GIS
Veritaban›
Üzerinde • ÖRNEK VER‹ SET‹N‹N VER‹
Uygulamalar› Sorgulamalar TABANINA YÜKLENMES‹
• GERÇEK VER‹ SET‹ ÜZER‹NDE
CO⁄RAF‹ SORGULAMALAR
Co¤rafi Veritaban› Üzerinde
Sorgulamalar
G‹R‹fi
Co¤rafi bilgi sistemi (CBS) yaz›l›mlar› temel olarak co¤rafi nesnelerin gösterimi, in-
celenmesi ve sorgulanmas› amac›yla gelifltirilen sistemlerdir. Bu ünitede, ücretsiz
olarak sunulan Co¤rafi Bilgi Sistemlerinden biri olan QuantumGIS yaz›l›m›n›n,
PostGIS’e dayal› bir veritaban›na ba¤lant› kurmas› sa¤lanacakt›r. Örneklerde, Qu-
antum GIS yaz›l›m›yla birlikte sunulan Amerika Birleflik Devletlerindeki Alaska
eyaletiyle ilgili co¤rafi veri kümesi kullan›lacakt›r.
Ünitenin ilk bölümünde, Quantum GIS k›saca tan›t›lacakt›r. Bu yaz›l›m, benzer
ticari yaz›l›mlara göre daha basit olmas› ve ücretsiz olarak temin edilebilmesi ne-
deniyle tercih edilmifltir. Ancak, ünitenin ana amac›n›n veritaban› üzerinde yap›lan
co¤rafi sorgulamalar olmas› nedeniyle, Quantum GIS’in tüm özellikleri anlat›lma-
yacakt›r.
Alaska veri kümesi, Quantum GIS yaz›l›m›n› gelifltiren ekip taraf›ndan, e¤itim
amac›yla kullan›ma aç›lan verilerden oluflur. Bu veri kümesinde yer alan göller,
yerleflim alanlar›, nehirler, çay›rl›k alanlar ve benzeri co¤rafi nesneleri içeren flekil
dosyalar›, PostgreSQL veritaban› yönetim sistemine tablolar halinde yüklenecektir.
Veritaban›nda yer alan her tablo, co¤rafi bilgi sistemleri için bir katmana karfl›l›k
gelir. Quantum GIS yaz›l›m›nda bu verileri görsellefltirebilmek için, veritaban› ba¤-
lant›s› kurulacak ve her bir tablo bir katman halinde projeye eklenecektir.
Ünitenin devam›nda, Co¤rafi nitelikte sorgulamalar için PostgreSQL’in pgAdmin
yaz›l›m›n›n nas›l kullan›labilece¤i gösterilecektir. ‹lk aflamada, Alaska’daki tren yol-
lar›n›n toplam uzunlu¤u, yüzölçümü en büyük gölün ad› gibi tek bir tablo veya di-
¤er bir deyiflle tek bir katman üzerinde sorgulamalar yap›lacakt›r. Ard›ndan birden
fazla tabloyu ilgilendiren, bir gölün etraf›nda yer alan yerleflim merkezlerinin isim-
lerinin bulunmas› gibi karmafl›k sorgulamalar›n nas›l kurulaca¤› anlat›lacakt›r.
¤i GML uzant›l› dosya biçimleriyle birlikte SHP (shape: flekil dosyas›), DBF ve ER-
DAS flirketinin gelifltirdi¤i IMG dosyalar›n› okuyabilmektedir. Kullan›c› arayüzü,
30’dan fazla dili destekleyecek flekilde gelifltirilmifltir. Bir bilgisayara kurulurken,
iflletim sisteminin diline göre kullan›c› arayüzü uyarlanmaktad›r. Bu ünitedeki bü-
tün uygulamalar Quantum GIS’in Türkçe arayazü kullan›larak gerçeklefltirilecektir.
Kurulum ‹fllemi
Quantum GIS yaz›l›m›, resmi web sitesindeki (http://www.qgis.org/) “download”
bölümünden elde edilebilmektedir. Yaz›l›m›n en son sürümü “Current Version”
bölümüne t›klayarak, http://qgis.org/en/download/current-software.html sitesin-
den indirilmelidir. Ayr›ca, “download” bölümünde, “Sample Data” bölümüne t›kla-
yarak, Amerika’n›n Alaska eyaletiyle ilgili örnek veriler de s›k›flt›r›lm› zip dosyas›
olarak http://www.qgis.org/en/download/sample-data.html/ sitesinden indirilme-
li ve bir dizine aç›lmal›d›r. Bu ünitede, co¤rafi bilgi sistemi ve veritaban› aras›nda
kurulacak iliflkide, Alaska veri seti kullan›lacakt›r.
Kurulum yaz›l›m›n› çal›flt›rmadan önce, bilgisayar›n ‹nternet’e ba¤l› oldu¤un-
dan emin olunmal›d›r. Kurulum program› çal›flt›r›l›nca, “Express Setup” ve “Advan-
ced Setup” seçeneklerini kullan›c›ya sunar (fiekil 1). “Express Setup” opsiyonu, ya-
z›l›m›n s›k kullan›lan özelliklerle birlikte bilgisayara kurulmas›n› sa¤lad›¤›ndan ter-
cih edilmelidir. Bir sonraki aflamada hangi alt paketlerin kurulaca¤› sorulacakt›r.
“Quantum GIS” ve “Grass GIS” opsiyonlar› seçili olarak ileri butonuna bas›lmas›,
kurulum ifllemine devam etmemizi sa¤layacakt›r (fiekil 2). Gerekli paketler ‹nter-
net’den indirilerek bilgisayara kurulacakt›r.
fiekil 10.1
Quantum GIS
kurulum program›
(ilk aflama)
10. Ünite - Co¤rafi Veritaban› Üzerinde Sorgulamalar 183
fiekil 10.2
Quantum GIS
kurulum program›,
seçilmesi gereken
paketler
D Ü fi Ü N E L ‹ M D Ü fi Ü N E L ‹ M
S O R U S O R U
N N
SIRA S‹ZDE SIRA S‹ZDE
fiekil 10.3
SHP dosyalar›n›n
PostgreSQL
yönetici panelinde
veritaban›na
yüklenmesi
10. Ünite - Co¤rafi Veritaban› Üzerinde Sorgulamalar 185
fiekil 10.4
lakes.shp
dosyas›n›n
seçilmesi
fiekil 10.5
SHP dosyas›n›n
tablo olarak
yüklenmesi
(import)
SIRA S‹ZDE SIRA S‹ZDE
D Ü fi Ü N E L ‹ M D Ü fi Ü N E L ‹ M
N N
SIRA S‹ZDE SIRA S‹ZDE
N N
SIRA S‹ZDE SIRA S‹ZDE
yelim. Bunun için, Quantum GIS program›n›n menüsündeki “Katman” seçene¤ine
t›klarak, “PostGIS katman› ekle”yi seçmemiz gereklidir. Ç›kan pencerenin üst k›s-
AMAÇLARIMIZ m›nda (fiekilAMAÇLARIMIZ
7), “PostgreSQL ba¤lant›s›” bölümünün içinde yer alan “Ba¤lan” buto-
nuna bas›ld›¤›nda, veritaban›nda yer alan geometrik özellikli tablolar görülecektir.
Tablolar içinde, az önce Alaska veri kümesinden yüklenen tablolar seçilerek “Ekle”
K ‹ T A P K ‹ T A P
butonuna bas›lmal›d›r. Tablolar›n katmanlar olarak projeye eklenmesi zaman alabi-
lir. Quantum GIS penceresinde, sol tarafta katmanlar ve sa¤ tarafta ise Amerika bir-
TELEV‹ZYON
leflik Devletlerinin
TELEV‹ZYON
Alaska eyaletinin co¤rafi modeli görülecektir (fiekil 8). Art›k, Qu-
antum GIS’le veriler üzerinde yap›lan de¤ifliklikler, veritaban›na yans›t›lmaktad›r.
fiekil 8’de, ekran›n sol taraf›nda bulunan lejand isimli bölüm, katmanlar›n ek-
randa gösterim s›ras›n› da belirlemektedir. En altta kalan katman, airports kat-
man› olarak görülmektedir. Ancak, bütün katmanlar›n alaska isimli tabloya kar-
‹NTERNET ‹NTERNET
fl›l›k gelen siyasi harita üzerinde yer almas› gerekti¤inden, airports katman›n›n
bir üste ç›kar›lmas› gereklidir. Bu amaçla, lejand bölümünde airports katman›
üzerine fare imlecini getirerek sol fare butonuna bas›lmal› ve bas›l› tutarak fare im-
leci alaska katman›n›n üstüne getirilmelidir. Bu flekilde, alaska katman› en alta
inecek ve airports bir üst seviyeye yerleflecektir.
10. Ünite - Co¤rafi Veritaban› Üzerinde Sorgulamalar 187
fiekil 10.6
Bütün flekil
dosyalar›
yüklendikten sonra
veritaban›nda
oluflan tablolar
fiekil 10.7
Quantum GIS
yaz›l›m›nda,
PostGIS
katman›n›n
eklenmesi
188 Veritaban› Uygulamalar›
fiekil 10.8
Alaska eyaletinin
katmanl› modeli
Alaska’da yer alan demiryolu hatlar›, çizgiler olarak railroads isimli tabloda
tan›ml›d›r. Bütün çizgilerin toplam uzunlu¤unu mil cinsinden bulmak için afla¤›da-
ki SQL komutu yaz›labilir:
10. Ünite - Co¤rafi Veritaban› Üzerinde Sorgulamalar 189
Her çizgi fit (feet) cinsinden tan›mland›¤›ndan ve her mil içinde 5280 fit bulun-
du¤undan, elde edilen sonucu mile çevirmek için 5280’e bölmek gerekmektedir.
Demiryollar›n›n toplam uzunlu¤u, yaklafl›k 524 mil olarak bulunmaktad›r.
Yüzölçümü en büyük gölün sorgulanmas› için lakes tablosunda afla¤›daki
SQL komutu yaz›labilir:
SELECT airports.name,
ST_Distance('SRID=2964;POINT(733000 4164000)'::geometry,
the_geom)/5280 AS mesafe
FROM airports
ORDER BY mesafe ASC LIMIT 10
S O R U S O R U
D‹KKAT D‹KKAT
N N
SIRA S‹ZDE SIRA S‹ZDE
AMAÇLARIMIZ AMAÇLARIMIZ
K ‹ T A P K ‹ T A P
TELEV‹ZYON TELEV‹ZYON
190 Veritaban› Uygulamalar›
fiekil 10.9
Sadece airports ve
alaska
katmanlar›n›n aç›k
oldu¤u, 733000
4164000
koordinatlar›n›n
merkezde
bulundu¤u harita
SELECT airports.name
FROM airports
WHERE
ST_DFullyWithin('SRID=2964;POINT(733000
4164000)'::geometry,
the_geom, 52800)
SELECT airports.name
FROM airports, grassland
WHERE ST_Within(airports.the_geom,
grassland.the_geom)
yer al›rsa, SQL sorgusu havaalan›n›n ismini döndürmektedir. SQL komutu e¤er ça-
l›flt›r›l›rsa, 13 adet havaalan›n›n çay›rl›k alanlar üzerinde kuruldu¤u görülecektir.
N N
SIRA S‹ZDE
rivers.the_geom)
AMAÇLARIMIZ AMAÇLARIMIZ
Alaska’daki nehirlerin kaç milinin çay›rl›k alanlardan geçti¤ini bulmaya çal›fla-
l›m. Bunun için, birbiriyle kesiflen iki geometrik nesne verildi¤inde do¤ru yan›t›n›
veren ST_Intersects() yordam› kullan›lacakt›r. Afla¤›daki K ‹ T ASQL
P komutu, K ‹ T A P
grassland ve rivers tablolar›n› kullanarak, sonucu yaklafl›k 2414 mil olarak
vermektedir:
TELEV‹ZYON TELEV‹ZYON
SELECT sum(ST_length(rivers.the_geom))/5280
FROM grassland, rivers
WHERE ST_Intersects(rivers.the_geom,
grassland.the_geom)
‹NTERNET ‹NTERNET
N N
SELECT popp.type,
SIRA S‹ZDE SIRA S‹ZDE
ST_Distance(lakes.the_geom, popp.the_geom)/5280
AS mesafe
FROM lakes, popp
AMAÇLARIMIZ AMAÇLARIMIZ
TELEV‹ZYON TELEV‹ZYON
‹NTERNET ‹NTERNET
192 Veritaban› Uygulamalar›
Sorgu, gölün isminin ‘Iliamna Lake’ olmas› koflulunu kontrol etmekte ve popp
tablosundaki yerleflim yerlerini kullanmaktad›r. Sorgudan geri dönen yerler, mesa-
feye göre ço¤alan s›rada s›raland›¤›nda (fiekil 10), gölün etraf›nda yer alan yerle-
flim merkezlerinin göle olan uzakl›¤›n›n bir milden az oldu¤u görülmektedir.
fiekil 10.10
Iliamna gölünün
etraf›ndaki
yerleflim
merkezlerinin
bulunmas›
10. Ünite - Co¤rafi Veritaban› Üzerinde Sorgulamalar 193
Özet
N
A M A Ç
Co¤rafi bilgi sisteminde oluflturulmufl flekil dosya- N
A M A Ç
PostGIS yordamlar›n› kullanarak, istenen sorgu
1 lar›n› veritaban›na aktarabileceksiniz. 3 kriterlerine göre SQL komutlar› oluflturabilecek-
PostGIS/PostgreSQL yaz›l›m› ve dayand›¤› Open- siniz.
GIS standartlar›, veritaban›nda uzamsal sorgula- PostGIS, sa¤lad›¤› çeflitli komutlarla co¤rafi ifl-
malar yap›lmas› için kullan›c›lara ve programc›- lemlerin yap›labilmesini sa¤lamaktad›r. ST_Area
lara büyük kolayl›k sa¤lamaktad›r. pgAdmin komutu, bir geometrik nesnenin kaplad›¤› alan›
program›nda, “Plugins” bölümünde yer alan, bulabilmektedir. ST_Length fonksiyonu da, çiz-
“PostGIS Shapefile and DBF loader” ö¤esi, shp gi fleklindeki co¤rafi nesnenin uzunlu¤unu he-
uzant›l› flekil dosyalar›n›n veritaban›na tablo ola- saplayabilmektedir. Bunlar gibi çok say›da fonk-
rak eklenmesini sa¤lar. siyon, SQL komutlar› içinde uzamsal hesaplama-
lar yap›lmas›n› kolaylaflt›rmaktad›r.
N Co¤rafi bilgi sistemine veritaban›nda yer alan
N
A M A Ç
2 tablolar› katman olarak ekleyebileceksiniz. Birden fazla tablodaki verileri iliflkilendiren SQL
A M A Ç
PostGIS eklentisi, PostgreSQL veritaban›nda co¤- 4 komutlar› oluflturabileceksiniz.
rafi veriler üzerinde sorgulama yap›lmas›n› sa¤- Birden fazla tabloda yer alan kay›tlar, PostGIS ta-
lamaktad›r. Co¤rafi Bilgi Sistemleri, veri kayna¤› raf›ndan sa¤lanan yordamlar›n kullan›lmas›yla
olarak dosyalar› kullanabildikleri gibi, veritaba- ifllenebilmekte ve yeni bilgiler oluflturulabilmek-
n›nda yer alan co¤rafi özellikli tablolar› da kat- tedir. PostGIS kütüphanesi ve OpenGIS standart-
man olarak ekleyebilmektedir. Ücretsiz bir yaz›- lar› talepler do¤rultusunda her geçen gün yeni
l›m olan Quantum GIS yaz›l›m› www.qgis.org si- özelliklerle güncellenmekte ve yeni yordamlar
tesinden indirildikten sonra, kurulumu gerçek- komut listesine kat›lmaktad›r.
lefltirilmifltir. Ayn› sitede, e¤itim ve deneme amaç-
l› olarak Amerika Birleflik Devletlerinin Alaska
eyaletiyle ilgili bir veri seti bulunmaktad›r. Veri
setinde yer alan çeflitli co¤rafi nesnelere iliflkin
veri dosyalar›, PostgreSQL veritaban›na PostGIS
kullanarak yüklenebilmektedir. Veritaban›nda
yer alan co¤rafi nesnelerin bulundu¤u tablolar,
Quantum GIS taraf›ndan, katman olarak de¤er-
lendirerek görsellefltirilebilmektedir.
194 Veritaban› Uygulamalar›
Kendimizi S›nayal›m
1. SHP uzant›l› dosyalar› pgAdmin’de okumak için kul- 4.
lan›lan özellik afla¤›dakilerden hangisidir? SELECT
a. Open Database sum(ST_length(railroads.the_ge -
b. Import om))/5280
FROM grassland, railroads
WHERE ST_Intersects(rivers.the_ge-
c. Export
om, railroads.the_geom)
d. PostGIS Shapefile and DBF loader
e. pl/pgSQL Komut Sat›r›
Yukar›daki SQL komutunun ifllevi nedir?
2. a. Çay›rl›k alanlar›n, demiryollar›n›n geçti¤i alana
SELECT oran›n› hesaplamak
names, ST_Area(the_geom)/27878400 AS
alan
b. Çay›rl›k alandan geçen ve demiryolunu olufltu-
FROM lakes
ran çizgileri döndürmek
WHERE ST_Within
Wikipedia, http://en.wikipedia.org/wiki/Postgis
(airports.the_geom, http://www.bostongis.org/PrinterFriendly.aspx?content
tundra.the_geom) _name=postgis_tut01
S›ra Sizde 4
SELECT
sum(ST_length(rivers.the_geom))/5280
FROM grassland, rivers
WHERE nam = ‘TOGIAK RIVER’ AND
ST_Intersects(rivers.the_geom,
grassland.the_geom)