You are on page 1of 94

VER TABANI YNETM SSTEMLER I

Alako BURMA

VER TABANI YNETM SSTEMLER I

Alako BURMA

NDEKLER
VER TABANI YNETM SSTEMLER...................................................................... 2 1. TEMEL VER TABANI KAVRAMLARI ................................................................. 2 1.1. Veri Nedir? ................................................................................................... 2 1.2. Veri Taban Nedir ? ...................................................................................... 3 1.3. Veri Modeline Gre Veritaban Ynetim Sistemleri ...................................... 4 1.4. Neden Veritaban Kullanlr? ........................................................................ 6 1.5. Veri Taban Ynetim Sistemlerinin Salad Yararlar ................................. 7 1.6. Bilinen VTYS Programlar ............................................................................ 7 1.7. Proje ve VTYS arasndaki iliki..................................................................... 8 2. VER ve VER MODELLER .............................................................................. 10 2.1. Model Nedir? .............................................................................................. 10 2.2. Veri Kavram .............................................................................................. 11 2.2.1. Veri Gvenlii...................................................................................... 12 2.2.2. Veri Tekrar ve Veri Btnl ............................................................ 12 2.3. Veri Modeli ................................................................................................. 13 2.3.1. Yaplar................................................................................................. 13 2.3.2. Kstlar ................................................................................................. 14 2.3.3. lemler ............................................................................................... 14 2.4. Balca Veri Modelleri................................................................................. 15 2.4.1. Basit Veri Modelleri ............................................................................. 15 2.4.2. Gelitirilmi Veri Modelleri ................................................................... 16 3. VER TABANI TEMEL KAVRAMLARI ............................................................... 22 3.1. Tablo ve Elemanlar ................................................................................... 22 3.2. Veri Tipi (Data Type) .................................................................................. 23 3.2.1. Access Veri Taban Veri Tipleri ........................................................... 23 3.2.2. MySQL Veri Taban Veri Tipleri........................................................... 24 3.2.3. Oracle Veri Taban Veri Tipleri ............................................................ 24 3.3. Zorlayc (Constraint).................................................................................. 25 3.4. Anahtar (Key) ............................................................................................. 26 3.5. Index (ndeks) ............................................................................................ 27 3.6. View (Grnt) ........................................................................................... 27 3.7. Joining (ilikilendirme) ................................................................................ 28 4. VER TABANI TASARIMI ve NORMALZASYONU ........................................... 29 4.1. Veri Taban Tasarm.................................................................................. 29 4.2. Veri Taban Normalizasyonu ...................................................................... 33 4.3. likisel Veri Taban Ynetim Sistemleri ..................................................... 35 5. RNEK BR VER TABANI TASARIMI ve NORMALZASYONU ...................... 37 5.1. rnek Personel Projesi Veri Taban Tasarm ............................................ 37 6. SQL VER LEME DL .................................................................................... 41 6.1. SQL Nedir? ................................................................................................ 41 6.2. Veri Taban Programlarnda ve SQL de Deiken Tanmlama .................. 42 6.3. SQL Program altrlmas ve Yazm Kurallar ........................................ 43

VER TABANI YNETM SSTEMLER I 7.

Alako BURMA

TEMEL SQL KOMUTLARI-I .............................................................................. 48 7.1. CREATE (Yarat) Komutu ........................................................................... 48 7.2. ALTER (Dzenle) TABLE Komutu.............................................................. 51 7.3. DROP (Sil) TABLE Komutu........................................................................ 52 7.4. DESCIRIBE Komutu................................................................................... 52 7.5. INSERT (Ekle) Komutu .............................................................................. 53 8. TEMEL SQL KOMUTLARI-II ............................................................................. 60 8.1. SELECT (Se) Komutu .............................................................................. 60 8.1.1. SQL Operatrleri ................................................................................. 62 8.1.2. Order By.............................................................................................. 65 8.1.3. Distinct ................................................................................................ 67 8.2. UPDATE (Gncelle) Komutu ...................................................................... 68 8.3. DELETE (Sil) Komutu................................................................................. 70 9. SQL de FONKSYONLAR ................................................................................ 71 9.1. SUM (Topla) Fonksiyonu............................................................................ 71 9.2. AVG (Ortalama) Fonksiyonu ...................................................................... 71 9.3. MAX (En Byk) Fonksiyonu ..................................................................... 72 9.4. MIN (Em Kk) Fonksiyonu...................................................................... 72 9.5. COUNT (Say) Fonksiyonu.......................................................................... 73 10. SQL de GRUPLANDIRMA ............................................................................ 75 10.1. GROUP BY (Gruplandr) Deyimi............................................................. 75 10.2. HAVING (Sahip) Deyimi ......................................................................... 77 11. SQL de JOIN (BRLETRME) LEM......................................................... 79 11.1. JOIN (Birletirme) lemi......................................................................... 79 11.2. JOIN lemine Ait rnekler ..................................................................... 83 12. SQL de YNETMSEL FONKSYONLAR..................................................... 87 12.1. VIEWS ( Tablo Grnm) ..................................................................... 87 12.2. CREATE TABLESPACE (Tablo Uzay = Veri Alan)............................... 89 12.3. CREATE USER (Kullanc) ..................................................................... 89 12.4. CREATE ROLE ...................................................................................... 90 12.5. CREATE INDEX ..................................................................................... 90 12.6. CREATE SEQUENCE ............................................................................ 91 12.7. GRANT ................................................................................................... 91 12.8. REVOKE................................................................................................. 91 KAYNAKLAR..92

VER TABANI YNETM SSTEMLER I

BLM 1

Alako BURMA

VER TABANI YNETM SSTEMLER


Veritaban kavram ilk olarak 1980li yllarda ortaya atlm olmasna ramen; gnmzde hemen hemen tm veri kullanlan alanlarda Veritaban Ynetim Sistemleri (VTYS) olmadan hibir ey yaplamaz hale gelmitir. Basit bir Web uygulamasndan, devasa kurulularn ar verilerine kadar, gnmzde bir ok alanda veritaban uygulamalarna ihtiya duyulmaktadr. letim sistemlerinden sonra en popler ve en ok gelir getiren yazlmlar Veritaban Ynetim Sistemi Yazlmlardr. Gnmzde, bir ok alandaki veri ilemlerinde pek ok Veri Taban Ynetim Sistemleri programlar yaygn olarak kullanlmaktadr. Birbirinden farkl isimler ad altnda anlan bu programlar iin bir ok nesne birbiri ile ayn temel ilevi yerine getirmekte olup, yaklak olarak ayn teorilere dayanarak alrlar. Veri taban, bir kuruluun uygulama programlarnn kulland operasyonel verilerin btndr. Veritaban Ynetim Sistemleri, verilerin fiziksel hafzadaki durumlarn, kullanclarn eriimlerini dzenleyen sistemlerdir. likisel VTYSler gnmzde yaygn olarak kullanlmaktadr.

1. TEMEL VER TABANI KAVRAMLARI


1.1. Veri Nedir? Bilgi (information) kavram yeni biimlenmeye balayan bir kavramdr; zerindeki dnce ekolleri henz yeterince gelimediinden, ngilizcede bile, bir ok anlama ekilmektedir. Bu kavram, daha nce de deinildii gibi, eitli alardan balca u ekillerde aklanmaktadr: Bilgi, bir nesne veya olayda veya bunlara ilikin raporlarda ortaya kan mesaj ile ilgilidir. Bu adan ele alndnda, sadece kaynan bir fonksiyonu olma zellii tar ve bazen veri olarak da ifade edilir. Dier bir adan bilgi, mesajn iletilmesini aklayan bir kavramdr. Bu adan ele alndnda bilgi, mesajn iletilmesi ile ilgili ihtimal hesaplarna dayanan, belirsizliin azaltlmas iin gerekli olan bir kavramdr. Bir baka ifadeyle, bu anlamda bilgi iletiim kanalnn da bir fonksiyonudur. Dier bir adan ise, bilgi bir alc tarafndan kazanlan anlam ile ilgilidir. Bu anlamdaki bilgi, hem iletiim kaynann hem de alcnn bir fonksiyonudur. Bu grlerin birincisi, literatrde fazla benimsenmeyen bir grtr. Genellikle veri ile bilgi arasnda farkllk olduu ve verinin bilgi elde etmeye yarayan ilenmemi ham malzeme olduu kabul edilir. Kii; bilmek, renmek istedikten ve veriyi kullanmaya baladktan sonra bilgi ortaya kar.

VER TABANI YNETM SSTEMLER I

Alako BURMA

kinci gr en yaygn olandr. Buna gre bilgi anlaml biimde derlenen ve birletirilen veridir ve imdiki zamanda ve gelecekte verilecek kararlar iin varolan gerek bir deerdir. Bir baka ifade ile, bir kaynaktan, bir alcya iletilen mesajn ieriidir. Bu anlamda bilgi, karar verme ile balantldr ve dolaysyla veriye gre daha etkin bir kavramdr. Veri kelimesinin tekil hali (datum) Latinceden gelmektedir. Szlk anlam gerek tir. Fakat, veri her zaman somut gerekleri gstermez. Bazen, kesin deildirler veya hi olmam eyleri, rnein bir fikri tarif etmek iin kullanlrlar. Burada bahsedildii ekliyle veri, bir kiinin formlletirmeye veya kayt etmeye deer bulduu her trl olay ve fikir anlamndadr. Bilgisayarda veri depolanaca zaman, ounlukla veri taban ynetim sistemleri kullanlarak gerekletirilir. nk bu tip sistemlerde yanl verinin depolanmasn ve/veya verinin istenmeyen kiilerin kullanmna sunulmasn engelleyen bir takm imkn bulunmaktadr. 1.2. Veri Taban Nedir ? Veritaban en genel tanmyla, kullanm amacna uygun olarak dzenlenmi veriler topluluudur. Birbirleriyle ilikileri olan verilerin tutulduu, mantksal ve fiziksel olarak tanmlarnn olduu bilgi depolardr. Veritabanlar gerekte var olan ve birbirleriyle ilikisi olan nesneleri ve ilikileri modeller. Veri taban, bir kuruluun uygulama programlarnn kulland operasyonel verilerin btndr (toplamdr). Burada; kurulu, bir okul, niversite, banka, bir retim irketi, hastane, devlet kuruluu, vb. olabilir. Operasyonel veri bir kuruluun alabilmesi, ileyebilmesi iin kullanlan ok eitli verilerdir. Ticari bir irket iin mteri bilgileri, sat bilgileri, rn bilgileri, deme bilgileri, vb., okul iin renci bilgileri, alan dersler, kimlerin kaydolduu, retmen bilgileri, bo ve dolu derslikler, snav tarihleri, vb., hastane iin hasta bilgileri, doktor bilgileri, yataklarn doluluk boluu, tehis-tedavi bilgileri, mali bilgileri, vb Belirli bir konu hakknda toplanm veriler bir veritaban program altnda toplanr. stenildiinde toplanan bilgilerin tm veya istenilen zelliklere uyanlar grntlenebilir, yazdrlabilir hatta bilgilerden yeni bilgiler retilerek bunlar eitli amalarla kullanlabilir. Veri taban ynetim sistemi(VTYS), yeni bir veritaban oluturmak, veri tabann dzenlemek, gelitirmek ve bakmn yapmak gibi eitli karmak ilemlerin gerekletirildii birden fazla programdan olumu bir yazlm sistemidir. Veri taban ynetim sistemi, kullanc ile veri taban arasnda bir arabirim oluturmaktadr ve veri tabanna her trl eriimi salar. Veri tabannn tanmlanmas: veri tabann oluturan verilerin tip ve uzunluklarnn belirlenmesidir. Veri tabann oluturulmas ise veri iin yer belirlemesi ve saklama ortamna verilerin yklenmesini ifade eder. Veri taban zerinde ilem yapmak; belirli bir veri zerinde sorgulama yapmak, meydana gelen deiiklikleri yanstmak iin veri tabannn gncellenmesi ve rapor retilmesi gibi ileri temsil eder. Ayrca veri taban ynetim sistemi, verinin geri arlmasn salar. Veri tabanna yeni kayt eklemek, eskileri armak ve gerekli dzeltmeleri yapmak yoluyla, verinin bakmn ve srekliliini gerekletirir, kaytlara yeni veri eklemek ve yeni kaytlar oluturmakla, veri tabann geniletir. 5

VER TABANI YNETM SSTEMLER I

Alako BURMA

Bir veritabanndan beklenen zellikler, verileri korumas, onlara eriilmesini salamas ve baka verilerle ilikilendirilmesi gibi ilemleri yapabilmesidir. Veritaban kullanlarak, verilerden daha kolay yararlanlabilir, istenilen veriye ok kolay eriilebilir, eitli sorunlarn zmnde yardmc olacak yeni bilgiler retilebilir. En nemlisi veriler bir merkezde toplanabilir, herkesin bu verilere yetkileri lsnde erimesi, dzeltmesi, silmesi veya grebilmesi salanabilir. Bylece veri giriinde ve veriye eriimde etkinlik ve gvenirlilik salanr. Veri taban kullanld zaman bir kurulua ait tm operasyonel veriler merkezi bir yerde ve merkezi kontrol altnda tutulmu olur. Veri tabanlarn kurmay, yaratmay, tanmlamay, iletmeyi ve kullanmay salayan programlar topluluuna veri taban sistemi ya da veri taban ynetim sistemi (VTYS) data base management system (DBMS) denir. Bir veritaban zerinde birden fazla veritaban bileeni vardr; bu bileenler, saklanmak istenen ham bilginin, belli bir formatta alnarak, veri haline gelmesi ileminde etkin rol oynarlar. VTYSler fiziksel hafzay ve veri tiplerini kullanclar adna ekillendirip denetleyen ve kullanclarna standart bir SQL arayz salayarak onlarn dosya yaplar, veri yaps, fiziksel hafza gibi sorunlarla ilgilenmek yerine veri giri-k iin uygun arayzler gelitirmelerine olanak salayan yazlmlardr. VTYSde verileri tutmak zere bir ok trde nesne ve bu nesnelere eriimleri dzenlemek zere kullanclar, roller ve gruplar yer alr. Her bir kullancnn belli haklar vardr. Bu haklar, kstlanabilir. rnein bir tablo ya da programc bir kullanc kullanabilirken bir bakasnn haklar veritaban yneticisi tarafndan kstlanm olabilir. 1.3. Veri Modeline Gre Veritaban Ynetim Sistemleri Yapsal olarak btn veri tabanlar bir deildir. Veri tabanlar verileri saklama ve onlara erime bakmndan farkl tiplere ayrlr. Hiyerarik Veri Tabanlar : Bu veritaban tipi, ana bilgisayar ortamlarnda alan yazlmlar tarafndan kullanlmaktadr. Bu trde en ok kullanlan yazlm, IBM tarafndan karlan IMS' dir. Uzun bir gemie sahip olmasna ramen, PC ortamna uyarlanan hiyerarik veri tabanlar yoktur. Hiyerarik veri tabanlar, bilgileri bir aa (tree) yapsnda saklar. Kk (Root) olarak bir kayt ve bu kke bal dal (Branch) kaytlar bu tip veritabannn yapsn oluturur. Aada byle bir veri tabannn yaps gsterilmektedir.

ekil 1.3.1. Hiyerarik Veri Taban Yaps

VER TABANI YNETM SSTEMLER I

Alako BURMA

A Veri Tabanlar : Hiyerarik veri tabanlarnn yetersiz kalmasndan dolay bilim adamlarnn ortak almas sonucu ortaya konulmu bir veri taban trdr. A veri tabanlar verileri aalarn daha da gelimi hali olan graflar (aacn kendiside zel bir graftr.) eklinde saklarlar. Bu yap en kark yaplardan biridir. likisel Veri Tabanlar : E.F. Codd Tarafndan Gelitirilmitir. Bu sistemde veriler tablo eklinde saklanr. Bu veri taban ynetim sisteminde; veri al verii iin zel ilemler kullanlr. Bu ilemlerde tablolar operandlar olarak kullanlr. Tablolar arasnda ilikiler belirtilir. Bu ilikiler matematiksel bantlarla (ilikilerle) temsil edilir. Gnmzde hemen hemen tm veri taban ynetim sistemleri ilikisel veri modelini kullanrlar. likisel modeli 1970 ylnda Codd nermitir. Bu model, matematikteki iliki teorisine (the relational theory) dayanr. likisel veri modelinde (Relational Data Model) veriler basit tablolar halinde tutulur. Tablolar, satr ve stunlardan oluur

ekil 1.3.2. likisel Veri Taban Yaps Nesneye Ynelik Veri Tabanlar : Gnmzde nesne kavram her yerde kullanlmaktadr. Pek ok kelime ilemci ve hesap tablosu programlarnn altmz grnmlerine artk bir de nesneler eklenmitir. Ancak bu gerek anlamda bir nesneye ynelik yazlm demek deildir. Yzde yz nesneye ynelik bir yazlmn tamamen nesneye temelli almas gerekir. Yazlmn mutlaka nesneye ynelik bir dilde yazlm olmas beklenir. Fakat Windows gibi iletim sistemi zerinde alan yazlmlar bu zelliklere tmyle sahip deillerdir. Sadece nesne kavramn kullanarak baz ek zellikler sunarlar. Nesneye ynelik veri taban da , C++ gibi nesneye dayal bir dille (OOPL) yazlm olan ve yine C++ gibi nesneye dayal (OOPL) bir dille kullanlan veri taban anlamna gelir. Gnmz teknolojisinde yzde yz nesneye ynelik bir veri taban yaygn olarak kullanma sunulmu deildir. Ancak nesneye ynelik veri tabanlarnn baz stnlkleri olacandan sz ediliyor. likisel veri tabanlar ile karlatrldnda; nesneye ynelik veri tabanlarnn sahip olmas gereken stnlkler unlardr: 1. Nesneler, bir tabloda yer alan bir kayttan ok daha karmak yapya sahiplerdir ve daha esnek bir yapda ok daha kullanl dzenlenebilirler. 2. Nesneye dayal bir veri tabannda, yaps gerei arama ilemleri ok hzl yaplabilir. zellikle byk tablolarla urarken ilikisel veri tabanlarndan ok daha hzl sonuca ularlar. Ancak alma mant tmyle deiir

VER TABANI YNETM SSTEMLER I

Alako BURMA

Tm bu zellikler tamamen nesneye ynelik olan veri tabanlar iin geerlidir. Baz ilikisel veri tabanlar ile alan yazlmlarda da nesnelerin baz zellikleri ni kullanrlar, ama nesneye ynelik veri taban bunu kendini ilikisel veri taban kurallarna uydurarak gerekletirebilir 1.4. Neden Veritaban Kullanlr? Bilgisayar ortamnda veri saklama ve eriiminde gemiten gnmze deiik yntemler ve yaklamlar kullanlmtr. Bunlardan Geleneksel Yaklam (Dosya lem Sistemi) verileri ayr ayr dosyalarda gruplamaya dayanr. Verileri saklamak iin programlama dillerinde kullanlan sral (Sequential) ve rastgele (Random) dosyalama sistemleri gibi. Birbiriyle ilgili olan ve ayn gruba dahil olan veriler bir dosyada, bir baka gruba dahil olan veriler de baka bir dosyada tutulurdu. Geleneksel Yaklamn birok sakncas vardr ve bu sakncalarn beraberinde getirdii sorunlarn stesinden gelebilmek iin de Veri Taban Yaklam zamanla Geleneksel Yaklamn yerini almtr. Gnmzde veriler artk Veri Taban Yaklam ilkesine gre VTYS lerde tutulmakta ve ilenmektedir. Geleneksel Yaklamn (Dosya - lem Sistemi) Sakncalar

Veri tekrar ve veri tutarszl Verinin paylalamamas Uygulamalardaki her yeni gereksinimin ve deiikliin yalnz uzman kiiler tarafndan karlanabilmesi Veriye eriim ve istenen veriyi elde etme glkleri Karmak veri saklama yaplar ve eriim yntemlerini bilme zorunluluu Btnlk (integrity) sorunlar Gvenlik, gizlilik sorunlar Tasarm farkllklar, standart eksiklii Yedekleme, yeniden balatma, onarma gibi iletim sorunlar

Veri Taban Yaklamnn Yararlar


Ortak verilerin tekrarnn nlenmesi; verilerin merkezi denetiminin ve tutarllnn salanmas Veri paylamnn salanmas Fiziksel yap ve eriim yntemi karmaklklarnn, ok katmanl mimarilerle kullanclardan gizlenmesi Her kullancya yalnz ilgilendii verilerin, alk olduu kolay, anlalr yaplarda sunulmas Sunulan zmleme, tasarm ve gelitirme aralar ile uygulama yazlm gelitirmenin kolaylamas. Veri btnl iin gerekli olanaklarn salanmas, mekanizmalarn kurulmas Gvenlik ve gizliliin istenilen dzeyde salanmas Yedekleme, yeniden balatma, onarma gibi iletim sorunlarna zm getirilmesi

VER TABANI YNETM SSTEMLER I 1.5. Veri Taban Ynetim Sistemlerinin Salad Yararlar -

Alako BURMA

Ayn veri deiik kiilerin PClerinde veya deiik bilgisayarlarda tekrar tekrar tutulmaz; veri tekrar (data redundancy) azaltlr ya da yok edilir. Veri tutarll (data consistency) : Ayn verinin deiik yerlerde birka kopyasnn bulunmas bakm zorluu getirir: bir yerde gncellenen bir adres bilgisi baka yerde gncellenmeden kalabilir ve bu durum veri tutarszlna (data inconsistency) yol aar. Veri paylam / Ezamanllk (concurrency) : Veri taban ynetim sistemi (VTYS) kullanlmad durumlarda veriye sral eriim yaplr. Yani birden ok kullanc ayn anda ayn veriye eriemez. Bir VTYSde ise verinin tutarlln ve btnln bozmadan ayn veritabanlarna saniyede yzlerce, binlerce eriim yaplabilir. Veri btnl (data integrity): Bir tablodan bir renci kayd silinirse, renci varolduu dier tm tablolardan silinmelidir. Veri gvenlii (data security) : Verinin isteyerek ya da yanl kullanm sonucu bozulmasn nlemek iin ok sk mekanizmalar mevcuttur. Veri tabanna girmek iin kullanc ad ve ifreyle korumann yan sra kiiler sadece kendilerini ilgilendiren tablolar ya da tablo iinde belirli kolonlar grebilirler. Veri Bamszl (data independence) : Programc, kulland verilerin yaps ve organizasyonu ile ilgilenmek durumunda deildir. VER BAIMSIZLII, VTYSlerinin en temel amalarndandr. 1.6. Bilinen VTYS Programlar

MS SQL Server: Bir orta ve byk lekli VTYSdir. ANSI SQLe eklentiler yazmak iin T-SQLi destekler. Oracle: Daha ok yksek lekli uygulamalarda tercih edilen bir VTYSdir. ANSI SQLe eklentiler yapmak iin PL/SQL gelitirilmitir. Sybase: Bir orta ve byk lekli VTYSdir. ANSI SQLe eklentiler yazmak iin T-SQL komutlarn destekler. lkemizde daha ok bankaclk ve kamusal alanlarda tercih edilmektedir. Informix: Bir orta ve byk lekli VTYSdir. MySQL: Genellikle Unix-Linux temelli Web uygulamalarnda tercih edilen bir VTYSdir. Ak kod bir yazlmdr. Kk-orta leklidir. zellikle Web iin gelitirilmi bir VTYSdir denilebilir. Postrage SQL: Bu da MySQL gibi ak kod bir VTYSdir.

VER TABANI YNETM SSTEMLER I

Alako BURMA

MS Access: oklu kullanc destei yoktur. letim sisteminin salad gvenlik seeneklerini kullanr. Bunun yannda belli sayda kayda kadar (1000000 civar) ya da belli bir boyutun (yaklak 25MB) altna kadar bir sorun kartmadan kullanlabilecek bir kk lekli VTYSdir. Advantage: Trk programclar tarafndan gelitirilen bir orta ve byk lekli VTYSdir. DB/2: IBMin frameworklere ynelik byk lekli VTYSdir. Bu ders notunda popler olan VTYS programlarnn isimleri yazlmtr. Bunlarn dnda daha bir ok VTYS program mevcuttur. VTYSlerin Avrupa genelindeki pazar paylar yaklak olarak aada listelenmitir. En byk Pazar pay IBM(DB/2) ile Oracle arasndadr. Hemen arkasndan MS SQL Server, Informix ve Sybase gelmektedir. Yeni balayanlar iin; hangi VTYSyi renmem en iyisi olur sorusunu yantlamak gerekebilir. lkemizde insan kaynaklar asndan en ok kalifiye elaman aranan VTYS Oracle ve arkasndan da MS SQL Server gelmektedir. IBM ....................... %37.8 Oracle .................... %26.3 Microsoft ................ %15.4 Informix ................. %3.2 Sybase ................... %3 Digerleri ................. %14.3
2001 ylnda bir aratrmaya gre Avrupa apnda VTYSlerinin pazar paylar [kaynak: Gartner]

VTYSlerin bir ou ANSI SQLin karlayamad durumlarda kullanlmak zere ek programlama komutlar barndrrlar. Bu i iin MS SQL Server ve Sybase SQL Server Transact SQL (T-SQL) denilen komut takmlarn ierir. Oracle ise PL/SQL ile bu ie zm getirmitir. Bu diller sayesinde, bu konu ierisinde renmeyeceimiz Stored Procedure (sakl prosedrler), Trigger, Fonksiyon gibi veritabanlar iin vazgeilmez olan nesneler yazlabilmektedir. 1.7. Proje ve VTYS arasndaki iliki Herhangi bir veritaban programnda almaya balanlmadan nce, yaplacak ie uygun veri taban tasarm yaplmaldr. Bu iin en nemli aamasdr. Balangta iyi tasarlanamayan bir veritaban, ileride geriye dn olmayan verimsiz bir bilgi ynna dnebilir. En basit hali ile veritaban tasarmnda; hangi tablolarn olaca, bu tablolarda hangi alanlarn olaca, tablolar arasndaki alan ilikilerinin neler olaca ve alanlara ait zelliklerin tanmlanmas yaplr. Alan zelliklerinde alan ad, alan tipi, alann uzunluu, alann varsaylan deeri, bu alana yazlacak verilerin geerlilik koullarnn balangta tasarlanmas gerekir. Bir projede hangi veritabannn seilecei, projenin ap ile ilgili bir karardr. Aadaki sorulara verilecek cevaplar projenin ap konusunda karar vermede yardmc olurlar.

10

VER TABANI YNETM SSTEMLER I

Alako BURMA

Projede ka tablo kullanlacak? Her bir tabloda en fazla ka satr yer alabilir? (tablodaki bilgi saysdr) Projeye ayn anda en fazla ka kullanc balanacak? Proje gnlk ka transaction (INSERT-DELETE-UPDATE) gerekletirecek? Proje en fazla ne kadarlk yer kaplayacak ne kadarlk bir veritaban dosyasna ihtiya duyulacak? Proje iin gvenlik ne derece nemli? Ancak bir VTYS kullanlarak proje gelitirilecekse, hangisinin seilmesi gerektiinin dnda, hangi srmlerinin kullanlaca ya da hangi donanmlar stnde altrlaca da nemlidir.

11

VER TABANI YNETM SSTEMLER I

BLM 2

Alako BURMA

2. VER ve VER MODELLER


2.1. Model Nedir? Model kelimesi; isim, sfat ve fiil olarak ve her birinde olduka farkl armlar yapacak ekilde kullanlmaktadr. sim olarak model, bir temsili ifade eder. Bu temsil; bir mimarn, bir binann kk lekli modeli veya bir fizikinin bir atomun byk lekli modelini oluturmas anlamndadr. Sfat olarak model, mkemmeliyetin veya idealin lsn ifade eder. Model ev, model renci ve model e ifadelerinde olduu gibi. Fiil olarak model ise, bir eyin nasl olduunu ispat etmek, aklamak, gstermek anlamndadr. Bilimsel modeller btn bu armlar bnyelerinde bulundururlar. Onlar; durumlarn, nesnelerin ve olaylarn temsilleridir. Gereklerden daha az karmak ve bylece aratrma amacyla kullanlmalar daha kolay olduundan, bu anlamda ideal hale getirilmilerdir. Gerek durumlarla karlatrldklarnda, modellerin basitliinin sebebi, gereklerin sadece uygun zelliklerini temsil etmelerinden kaynaklanmaktadr. rnein, yeryznn bir ksmnn modeli olan bir yol haritasnda, bitki rts gsterilmez. nk bu durum, o haritann bir yol haritas olarak kullanm asndan uygun deildir. Gne sisteminin bir modelinde, gezegenleri temsil eden toplarn, gezegenlerle ayn maddeden yaplm olmalar veya ayn scakla sahip olmalarna ihtiya yoktur. Bilimsel modellerden, gereklerin farkl boyutlar hakkndaki bilgiyi artrmak ve birbirleri ile ilikilendirmek iin faydalanlr. Modeller, gerei ortaya karmak ve bundan daha fazla olarak, gemii ve imdiki durumu aklamak ve gelecei tahmin ve kontrol etmek iin kullanlr. Modeller uygulanarak, gerekler zerinde bilimin kontrol salanr. Modeller gerein tarifi ve aklamasdr. Bir bilimsel model, aslnda, gerek hakknda bir veya bir dizi ifadelerdir. Bu ifadeler olaylara dayanan, kanun benzeri ya da teorik olabilir. Bilimde, sradan ilemlerde olduu gibi, deiik tipte modeller kullanlr: Simgesel Model, Benzetim Modeli ve Sembolik Model. Simgesel Modeller, durumlarn byk veya kk lekli temsilleridir. Gerek eylerin uygun zelliklerini temsil ederler. ekilleri, temsil ettikleri eylere benzer. Yol haritalar, hava fotoraflar bu tip modellere rnek verilebilir. Benzetim Modelleri, baz durumlarda ise; haritada ykseltiler, yol genilikleri gibi zellikleri belirtmek gerekebilir. O zaman, renkler ve kontur izgileri gibi bir takm aklayc zelliklere ihtiya duyulur. Bu tip modeller Benzetim Modelleri olarak isimlendirilir. Sembolik Modellerde, temsil edilen eylerin zellikleri sembollerle ifade edilir. Bylece, bir grafik ile gsterilen iliki (benzetim modeli), bir eitlik olarak da ifade edilebilir. Bu tip modellere Matematiksel Modeller de denilmektedir.

12

VER TABANI YNETM SSTEMLER I

Alako BURMA

Bu tip modelden benzetim modeli, soyut ve geneldir. Matematiksel model ise en soyut ve en genel modeldir. zerinde dzenleme yaplabilmesi daha kolaydr. Simgesel modellerin ise anlalmas dierlerine gre daha kolaydr. Biliim sistemlerinin oluturulmas iin kullanlan veri modelleri, benzetim modelleri ve sembolik modellerdir. Bir biliim sisteminin kullancs, zellikle bir karar verici, kendisini sonsuz denebilecek boyutta bilgi karsnda bulur. Bir biliim sistemi modeli, gerek bilgi kmesinin alt kmesini oluturur ve onun daha basit bir eklidir. Bu ekil, ilenebilmeye imkn verir ve bunu kullanarak elde edilen zm veya cevap, gerek hayatta uygulanmaya allr. Model, var olan bilgi ynna bir dzen getirmeyi, hatta bir yap oluturmay amalar. Tek bir model yoktur. Var olan bilgi ynna, uygulanan farkl modeller doal olarak farkl yorumlar getirir. Gerek hayattan alnan bir olayn modelinin iki tip zelliinin olmas gerekir. Birincisi, statik zellikler, ikincisi de dinamik zelliklerdir. Statik zellikler zamana gre deiiklik gstermez yada ok az gsterir. Dinamik zellikler ise bunun tam tersi olarak devaml deikendirler. Bu durumda, herhangi bir model (M), o modeli oluturan kurallar kmesi (K) ve ilemler kmesinin () bir fonksiyonu olarak tanmlanabilir. M = f (K,) Modeli oluturan kurallar kmesi (K), veri modelinin statik zelliklerini temsil eder ve Veri Tanmlama Diline (VTD) karlk gelir. (M) veri modeli iinde, veri iin izin verilen yaplarn tanmlanmas iin kullanlr. Mmkn olan yaplar, birbirini tamamlayan iki ekilde belirlenir. Nesneler ve ilikiler, kategorilerinin belirlenebilmesi iin genel kurallar kullanlarak tespit edilir. Modelde bulunmasna izin verilmeyecek olan nesneler veya ilikiler, snrlar tespit edilerek hari tutulur. rnein, bir ii veri tabannda, her iinin bir sigorta numarasnn olmas ve yneticisinden fazla kazanmamas gibi snrlar tespit edilebilir. Gerek hayattaki dinamik zelliklerin modelde kullanlabilmesini ilemler kmesi salar ve Veri Ynlendirme Diline (VYD) karlk gelir. Di gibi bir veri taban oluumundan Dk gibi baka bir veri taban oluumu elde etmek iin yaplmasna izin verilen ilemleri tanmlar. 2.2. Veri Kavram Birinci blmde veri kelimesi tanmlanm ve yanl verinin depolanmasn ve/veya verinin istenmeyen kiilerin kullanmna sunulmasn engelleyen bir takm imknlarn olmas gerektii belirtilmiti. Yanl verinin iki trl kayna olabilir: Programlama hatalar, klavyeden hatal giri nedeniyle oluan yanllklar ve veri taban programnn kt niyetli kullanm. Veri tabanlarnn korunmas iki balk altnda incelenebilir 1. Veri gvenlii, 2. Veri btnlnn salanmas.

13

VER TABANI YNETM SSTEMLER I

Alako BURMA

2.2.1. Veri Gvenlii Veri gvenliinin konusu, veri tabann, dolaysyla veriyi yetkisiz kullanmlara kar korumaktr. Bu konuda ok eitli yaklamlar vardr. Hem verinin istenmeyen ekilde deitirilmesine veya zarar grmesine hem de yetkisiz kullanmlara engel olmak gerekir. Bunu salamak iin baz genel teknikler gelitirilmitir. Kullanclarn tanmlanmas: ok kullancl ortamlarda farkl yetkilere sahip kullanclar vardr. Farkl yetkilere sahip kiilerin, veri tabannda ulaabilecekleri veri farkldr. rnein, bilgisayara veri girii yapan bir iletimcinin, kurumun muhasebe kaytlarna, muhasebe mdr kadar yetkiliymi gibi girerek deiiklikler yapmas engellenmelidir. Bu amala, hangi kullanclarn hangi yetkilerinin olduu ve bu yetkilerini kullanabilmek iin gerekli ifreler daha nceden tespit edilmelidir. Fiziksel koruma: ifre sisteminin yeterli olmad durumlarda, verinin fiziksel koruma altna alnmas gerekir. Yangn veya hrszla kar verinin yedeklenmesinin yaplmas gibi. Kullanc haklarnn temin edilmesi: Sistemde hangi kullancnn hangi yetkilere ve haklara sahip olduu ve neler yapabileceinin nceden belirlenmi olmas gerekir. Bir kiinin yetkisini veya hakkn baka bir kiiye vermesi ise, sistemin mdahalesi dnda gerekleen bir durumdur. zellikle veri tabannn sorgulanmasnda gvenlik problemleri ortaya kmaktadr. Hangi tr kullancnn, hangi sorgu tiplerini sisteme yneltebileceinin daha nceden tespit edilmesi gerekmektedir. Fakat, yukarda bahsedilen nlemlerden hi biri tam bir koruma salamaz. Bu yzden, birden fazla nlem kullanarak gvenlik artrlabilir. 2.2.2. Veri Tekrar ve Veri Btnl Bir veri taban ynetim sisteminde farkl veri dosyalarnda; isim, adres, numara gibi bilgilerin bulunmas gerekebilir. rnein, hem mteri bilgilerini ieren bir veri taban dosyasnda, hem de satlan mallarn sevkiyatnn yaplaca adreslerin bulunduu baka bir veri dosyasnda, mteri adresi bilgilerinin yer almas gerekebilir. Yani, pek ok durumda, ayn verinin birden fazla veri dosyasnda bulunmas gerekebilir. Bu durum, veri tekrar olarak ifade edilmektedir. Byle bir durum,veri btnlnn bozulmasna neden olur. Veri zerinde yaplacak deiiklik, silme, ekleme gibi ilemlerin, o verinin bulunduu btn dosyalarda gerekletirilmesi gerekir. zellikle ok kullancl ortamlarda bu ilem olduka nemlidir. Aksi taktirde, veri tabannda uygun olmayan veri ile allm olur. Veri btnlnn bozulmasnn bir sebebinin, veri tekrar olduu sylenebilir. Bir baka sebep de, verinin zayf geerlilik kontroldr. Bunun sebepleri de u ekilde sralanabilir: Veri gvenliinin yetersiz oluu, Veri tabannn zarar grmesi durumunda kurtarma yntemlerinin yetersiz oluu, Uzun kaytlarn idaresinin zorluu, Deiikliklerin esnek olmamas, Programlama ve bakm masraflarnn yksek olmas, nsandan kaynaklanan hatalar.

14

VER TABANI YNETM SSTEMLER I

Alako BURMA

Gnmzde kullanlan eitli veri taban ynetim sistemi programlar, yukarda saylan btn problemlerin stesinden hemen hemen gelebilecek zmler retmiler ve bunlar kolay kullanlabilir hale getirmilerdir. Kullanclarn, bir veri taban olutururken, ayrca bu problemler iin nlem almalarna gerek kalmamaktadr. 2.3. Veri Modeli Bir veri modeli, verinin hangi kurallara gre yaplandrldn belirler. Fakat yaplar, verinin anlam ve nasl kullanlacaklar hakknda tam bir aklama vermezler. Veri zerinde yaplmasna izin verilen ilemlerin belirlenmesi de gerekir. lemler, yapnn sunduu ereve iinde altrlrlar. 2.3.1. Yaplar Veriyi yaplandrma ve grntleme mekanizmalarndan biri soyutlamadr. Soyutlama, detaylar gizleme ve genel zerinde younlama yeteneidir. Veri modellemesinde soyutlama, veri kategorilerini elde etmek iin kullanlr. Veri yaplarnn oluturulmasnda kullanlan kavramlardan biri de kmelerdir. Bir kme, dzgn bir ekilde tanmlanm ve bir yelik koulu tarafndan temsil edilen nesneler topluluudur. yeleri az ya da ok homojen olan kmeler vardr. rnein, 10 ile 20 arasndaki tam saylar, uzunluu 20 karaktere kadar olabilen alfanmerik deerler gibi. Bu homojen kmeler, tanm kmesi olarak isimlendirilirler. Semantik adan bir anlam tayan nesneyi temsil eden, isimlendirilmi bir tanm kmesi (rnein, MAALAR), znitelik olarak isimlendirilir. Veri yaplarnn unsurlarndan biri de ilikilerdir. liki, kmelerin toplanmasn ifade eder. Ayn zamanda kendisi de bir kmedir ve semantik olarak belirli bir karl yoktur. Fakat, veri modellemesinde iliki, iki nesne arasndaki ilikiyi gsteren bir tip olarak tanmlanabilir. rnein, ve YER arasnda bir ilikisi vardr. Bir ilikiye uygulanabilecek semantik bir tercme, her satr bir varla karlk gelecek ekilde belirlemektir. Varln tam bir tanm olmamasna ramen, objektif bir gereklii olan veya olduu dnlen ey olarak tarif edilmektedir. rnein, bir varlk tipi olarak belirlenebilir. Bu varlk tipinin zellikleri de, VEREN, SM, ADRES, YA, BLM, TECRBE ve MAA olabilir. Bir veri yaps oluturulurken, verinin bir ekilde bilgisayara yerletirilmesi sz konusu olduu iin, nesneler ve onlar arasndaki ilikilerin temsil edilmesi gerekir. Bu tr bir temsil tablolarla yaplabilir. Bir tabloda stun balklar olarak znitelikler ve satrlarda da bu zniteliklerin ald deerler (kayt birimleri) yer alr. Tablodaki her bir stun, bir veri birimidir. Dz bir dosyadan oluan veri tabanlar olabilecei gibi (rnein isim ve adres alanlarndan oluan adres veri tabanlar), birden fazla dosyadan oluan veri tabanlar da vardr ve daha yaygn bir ekilde kullanlmaktadr. Bir veri tabannda temsil edilebilecek genel kayt ilikilendirme tipleri vardr. Bunlar u ekilde sralanabilir: Bire bir ilikiler (one-to-one relationships): Aralarnda bir iliki olan iki tablo arasnda, tablolardan birindeki asl anahtar alann kayt deerinin, dier tablodaki sadece bir kaytta karlnn olmas durumunu gsteren iliki tipi. rnek : bir iinin doum yeri bilgisinin doum yerleri tablosunda bir ehre karlk gelmesi gibi. 15

VER TABANI YNETM SSTEMLER I

Alako BURMA

Tekil oklu ilikiler (one-to-many relationships): Aralarnda bir iliki olan iki tablo arasnda, asl anahtar alann kayt deerinin, dier tablodaki birden fazla kaytta karlnn olmas durumunu gsteren iliki tipi. rnek : Bir rencinin birden fazla alm olduu derse ve bu derse ait vize final snav sonular gibi. Bir renciye karlk birden fazla ders notu. oul tekli ilikiler (many-to-one relationships): Aralarnda bir iliki olan iki tablo arasnda, tablolardan birindeki bir kaydn deerinin, asl anahtar alann olduu dier tabloda, birden fazla kaytta karlnn olmas durumunu gsteren iliki tipi. oklu ilikiler (many-to-many relationships): Aralarnda bir iliki olan iki tablo arasnda, tablolardan herhangi birindeki herhangi bir kaydn, dier tablodaki birden fazla kayt ile ilikilendirilebildii iliki tipi. 2.3.2. Kstlar Veri zerindeki mantksal snrlamalara kst ad verilir. Kstlarn genel olmas tercih edilen bir durumdur. rnein, Tm yneticilerin maalar, iilerinden daha fazladr ifadesi, Ali Beyin maa Veli Beyin maandan daha fazladr ifadesinden daha geneldir ve dolaysyla daha kullanldr. Kstlar, veri modellerinde btnlk salamak ve semantik nedenlerle kullanlr. Kmeler zerinde kullanlabilir. rnein, varlk tipinin YA znitelii 15 ve 65 arasnda deer alabilir eklinde bir kstlama veri modelinde uygulanabilir. Bu sayede gerek dnyada karlalan bir zellik, oluturulacak veri tabanna yanstlabilir. Bir iliki, iki veya daha fazla kmenin elemanlar (nesneler) arasnda mmkn olabilecek tm kombinasyonlar ierir. Bu ileme haritalandrma denir. Kstlamalar ilikiler zerinde belirlendii zaman, nesneler arasndaki bir takm anlam ifade etmeyen, fakat teorik olarak mmkn olabilen ilikilerin, gereksiz yere modele yerletirilmeye allmas nlenmi olur. Tablolarda kstlarn kullanlmas, fonksiyonel bamllklarn belirlenmesi amacn tamaktadr. rnein, varlk tipinde _NO znitelii bir aday anahtar olabilir. nk, dier znitelikler, bu znitelie bal olabilir. Baka aday anahtarlar da olabilir (SM, ADRES gibi). Bir tabloda, aday zniteliklerinden biri asl anahtar olarak belirlenir. ki ayr iliki tipi arasnda bir balant kurabilmek, o ilikinin bir tablosundaki bir anahtarn, dier tabloya eklenmesi ile mmkn olur. Buna tretme, ikinci tabloya eklenen anahtara da yabanc anahtar denir. 2.3.3. lemler lemler, bir veri taban durumundan, bir baka veri taban durumu elde etmek iin yaplan ilemlerdir. Bunlar, verinin arlmas, gncellenmesi, eklenmesi veya silinmesi ile ilgili ilemlerdir. ok kesin seimler zerinde yaplr. Bunlarn yannda, daha genel ilemler de vardr. rnein; btnlk mekanizmas, toplam fonksiyonlar (istatistiksel fonksiyonlar da bunlar arasndadr), veriye ulam kontrolleri gibi. Bu mekanizmalara veri taban yntemleri denir. Bu mekanizmalar, CODASYL tarafndan yaynlanmtr.

16

VER TABANI YNETM SSTEMLER I 2.4. Balca Veri Modelleri

Alako BURMA

Veri modellemesi yapmak amacyla pek ok veri modeli gelitirilmitir. Fakat, btn modeller ayn zellikleri tamaz. Her modelin farkl durumlara uygun olan eitli zellikleri vardr. O yzden, modeller arasnda tam bir sralama yapmak mmkn deildir. Bununla birlikte, yetersiz de olsa bir snflama yaplabilir. 2.4.1. Basit Veri Modelleri Basit veri modelleri olarak ayrlan ilk grup veri modelleri, bilgisayarlarda veri ileme ihtiyacnn ortaya kmasyla, dosyalama sistemleri oluturmak amacyla kullanlmaya balanan Hiyerarik ve ebeke veri modelleridir. 2.4.1.1. Hiyerarik Veri Modelleri Hiyerarik veri modellerinde oklu ilikileri temsil edebilmek iin, varlk tiplerinin her iliki iin ayr ayr tanmlanmas gerekir. Bu da gereksiz veri tekrarna sebep olur. Hiyerarik model, bir aa yapsna benzer. Model dahilindeki herhangi bir dm, altndaki n sayda dme balanrken, kendisinin stnde ancak bir dme balanabilir. Hiyerarik yapnn en tepesindeki dm noktasna kk denir ve bu dmn sadece baml dmleri bulunur. Bu veri yapsn gsteren grafie de hiyerarik tanm aac denir.

ekil 2.4.1.1.1. Hiyerarik Tanm Aac 2.4.1.2. ebeke Veri Modelleri ebeke veri modelleri, tablo ve grafik temellidir. Grafikteki dmler varlk tiplerine karlk gelir ve tablolar eklinde temsil edilir. Grafiin oklar, ilikileri temsil eder ve tabloda balantlar olarak temsil edilir. Spesifikasyonu, 1971 ylnda DBTGCODASYL tarafndan belirlenmitir. ki ayr veri yaplandrma arac vardr: Kayt tipi ve balant. Kayt tipleri varlk tiplerini belirler. Balantlar ise, iliki tiplerini belirler. Bu yapy gsteren grafie de veri yaps grafii ad verilir.

17

VER TABANI YNETM SSTEMLER I

Alako BURMA

ekil 2.4.1.2.1. ebeke Veri Yaps Grafii ebeke veri modeli, veri modelleri iinde en genel olanlarndan biridir. ebeke iinde bir eleman, herhangi bir baka elemana balanabilir. Hiyerarik yaplardan farkl olarak, ebeke yaplarnda balant asndan herhangi bir snrlama yoktur. ebeke veri modelleri, dmler arasnda oklu ilikiler kurulamad iin, kstl bir veri modeli olarak kabul edilir. Hiyerarik veri modelleri ise, daha da kstl bir veri modelidir. ebeke veri modelinde kullanlan ilemler, ilikisel veri modelinde kullanlan ilemlerin benzeridir. Fakat, ebeke veri modellerinde balantlar tarafndan belirlenmi ilikiler dnda, kayt tipleri arasnda iliki belirlenemez. 2.4.2. Gelitirilmi Veri Modelleri 1960 ve 1970li yllarda hiyerarik veri modeli zerine gelitirilmi veri taban ynetim sistemleri ile, daha sonra, ebeke veri modeli ile alan VTYS yaygn kullanmda iken, teorik temelleri ve deneysel uygulama ve gelitirme aamalar, 1970li yllarda tamamlanm olan ilikisel veri modeline dayal VTYS, 1980li yllarda ticari kullanma girerek ok hzla yaygnlamlardr. Gelitirilmi veri modelleri, Varlk-liki Veri Modelleri, likisel Veri Modelleri ve Nesne Ynelimli Veri Modelleri olarak sralanabilir. 2.4.2.1. Varlk-liki Veri Modelleri (V Modeli) Bir veri taban uygulamas iin varlk, hakknda tanmlayc bilgi saklanabilen herey olarak kabul edilmektedir. Varlk, bamszdr ve tek bana tanmlanabilir. Bir varlk, ev, renci, araba gibi bir nesne ya da futbol ma, tatil, sat gibi olaylar olabilir. En anlaml ekilde kendi znitelikleri tarafndan temsil edilir. rnein, bir EV; znitelikleri olan ADRES, STL, RENK ve MALZEME ile tanmlanabilir. Eer bir zniteliin kendisi tanmlayc bilgi ieriyorsa, onu varlk olarak tanmlamak gerekir. rnein, eer evin malzemesi hakknda ek bilgi depolamak gerekiyorsa MALZEMEyi de varlk olarak snflamak gerekir. Varlk-liki veri modelleri (V), stunlarnda, znitelikleri temsil eden deikenlerin yer ald ve satrlarnda da enstantanelerin temsil edildii tablolar, varlklar ve aralarndaki ilikileri oklarla gstermek iin kullanlan grafikler zerine kurulmu veri modelleridir.

18

VER TABANI YNETM SSTEMLER I

Alako BURMA

Ticari veri tabanlarnda yaygn olarak kullanlan veri modellerinden biridir. ebeke ve hiyerarik veri modelleri ile ortak noktalar vardr. Fakat, veri taban tasarm sreleri iin kullanlmak maksadyla gelitirildiklerinden bu iki modelin genelletirilmi eklidir. oklu iliki tiplerinin dorudan modelde kullanlmasna izin verir. Bu modelde, kurum emas kavram sz konusudur. Bu ema, kurumun tm verisinin grnmn temsil eder ve fiziksel snrlamalardan bamszdr. Ayn zamanda, bu ema ANSI/X3/SPARC kavramsal emasna ok benzemektedir. Aralarndaki temel fark, kavramsal emann, dahili ema ve harici ema arasnda haritalandrma yapabilmesidir. Temelde, V veri modeli, veri tabannn mantksal zelliklerinin bir dokmantasyonudur. V modeline gre dzenlenen veri tabannn yaps, Varlk-liki Diyagram ile gsterilir. ebeke ve hiyerarik veri modellerinde, sadece ikili fonksiyonel balantlara izin verilmektedir. V veri modelinde ise, varlklar arasnda n adet iliki tanmlanabilir. Bu ilikiler, bire bir, fonksiyonel veya oklu olabilir. Tekrar eden balantlar da kullanlabilir. znitelik, varlk veya iliki ile bunlarn ald deerler arasndaki haritalandrmay temsil eder. Baz zniteliklerin birden fazla deeri olabilir. rnein, telefon numarasn bir znitelik olarak kabul edersek, bir irketin birden fazla numaras olabilir. Fakat, doum gn znitelii ele alndnda, her bir kiinin bir doum gn olduundan, bu znitelik, ok deere sahip deildir.

ekil 2.4.2.1.1. Varlk liki Diyagram

19

VER TABANI YNETM SSTEMLER I

Alako BURMA

V modeli ilk olarak ortaya konulduunda (1976) bir veri dili gelitirilmemiti. Bunun anlam, bilgi sorgulamalarnn kme ilemleri ile yaplmas demekti. Daha sonra, veri modeli iin CABLE (ChAin-Based LanguagE) dili gelitirildi. V modellerinin en byk avantajlarndan biri, uzman olmayan kiiler tarafndan da anlalabilecek yapda olmasdr. zerinde dzeltme ilemleri kolayca yaplabilir. Bu adan belirli bir veri taban ynetim sistemine bal deildir. 2.4.2.2. likisel Veri Modelleri likiler ve onlarn temsilleri olan tablolardan oluan veri modelleri ilk olarak 1970 ylnda Codd tarafndan ortaya atlmtr. likisel veri modelleri formle edilirken, veri ynetimi ihtiyalarn karlayabilmek iin ilikinin matematiksel teorisi, mantksal olarak geniletilmitir. likisel veri modellerinde kullanlan tek yaplandrma arac ilikidir. likinin tanm, veri taban ilikilerinin zamana bal olmas dnda, matematiksel tanm ile ayndr. Yani, bir veri taban ilikisinde satrlar, eklenebilir, deitirilebilir yada dzeltilebilir. Aadaki rneklerde byk harflerle yazlan ifadeler iliki isimlerini, parantez iindeki ifadeler de tanm kmesi isimlerini gstermektedir.

ekil 2.4.2.2.1. Tanm Kmesi Yukardaki satrlar, basit bir hastane veri tabannn ilikisel emasn gstermektedir. likisel ema, iliki isimlerinin ve karlk gelen tanm kmesi isimlerinin listesidir. Varlk tiplerini belirlemekte kullanlr.

ekil 2.4.2.2.2. likisel Tablo likisel ema listesini oluturan her bir satr, bir tablo olarak temsil edilir. Tablonun stunlar znitelik olarak isimlendirilir. rnein, HASTANE tablosunun znitelikleri; Hastane_Kodu, Hastane_Ad, Adres, Tel_No ve Yatak_Saysdr. Tablonun satrlarnda btn zniteliklerin ayn deerler ald iki satr olamaz. Her satr dierinden mutlaka farkldr. Aksi halde veri tekrar sz konusu olur. Veri tabanlarndaki iliki kavram, matematikteki kme kavramn esas ald iin ayn satrn bir tabloda birden fazla yer almas mmkn deildir. Bu nedenle, iliki iin bir anahtar kullanmak gerekir. Anahtar, bir satr tek bana tanmlayabilen znitelikler kmesidir. Anahtar kavram, ilikisel veri modelinde kullanlan nemli bir ksttr.

20

VER TABANI YNETM SSTEMLER I

Alako BURMA

Bu kurallar kullanlarak hazrlanan bir ilikisel modelde, yine de belirsizlikler ve uyumsuzluklar bulunabilir. Bunlar gidermek iin de bir dizi dzgleme ilemine gerek duyulabilir. Dzglemek, veri taban tasarm prensiplerini yapsallatrmay amalar. likiler ve znitelikler arasndaki fonksiyonel bamllklar dzenler. Birbirini takip eden be ilemden oluur. Fonksiyonel bamllk u ekilde tarif edilebilir: x ve y znitelikleri arasndaki iliki R ile gsterildiinde, her bir x deerine bir tek y deeri karlk geliyorsa, Rnin y zniteliinin, Rnin x zniteliine fonksiyonel olarak baml olduu sylenir. Veri zerinde yaplacak ilemler iin, ilikisel veri modellerinde tip dil kullanlr. Birincisi, matematikteki ilikisel ilemlere dayanr. Bu tip dillere rnek olarak INGRES ve QUEL verilebilir. kinci tip dil, grnt ynelimlidir. Boluk doldurma yntemiyle alr. rnein, QBE (Query By Example) ve CUPID bu tr dillerdendir. nc tip dil, haritalandrma ynelimli dildir. Bu tip diller, bilinen bir zniteliin ya da znitelik kmesinin, aranan bir zniteliin ya da znitelik kmesinin zerinde, bir iliki yoluyla haritalandrlmas prensibiyle alr. rnein, yapsal sorgulama dili (SQL) bu tip bir veri dilidir. SQL ilerleyen blmlerde detaylar ile anlatlacaktr 2.4.2.3. Nesne Ynelimli Veri Modelleri Nesne ynelimli sistemler, bir istatistiksel sistem iinde, esnek veri yaplarnn gelitirilmesi ve istatistiksel modellerin sunumunda da kullanlmaktadr. Nesne ynelimli programlamann balangc, 1960'larn sonu ve 1970'lerin ba arasnda gelitirilen simlasyon dili Simula'ya kadar uzanr. Nesne ynelimli veri modelinde, bir sorgunun karlnda mutlaka nceden tanmlanm belirli bir nesne kmesi olmas gerekir. Bir sorgunun sonucu olarak tesadfi bir nesne kmesinin elde edilmesi mmkn deildir. nk btn nesnelerin, modelde nceden tanmlanm olmas gerekmektedir. likisel modeldeki iliki kavram, nesne ynelimli modelde snf kavramna karlk gelmektedir. Nesne ynelimli modellemenin en nemli faydalarndan bir tanesi de, modeldeki nesneleri tanmlarken, ortak znitelik ve metotlara sahip nesnelerin kullanldklar her farkl ortamda, tekrar tanmlanmalarna gerek duyulmamasdr. Aksi taktirde bu durum, hem tekrardan dolay yer kaybna, hem de modeldeki dinamik deiikliklerin pratik olmamasna sebep olacaktr. Nesne ynelimli veri modelindeki snf hiyerarisi ve kaltm zellii, bu olumsuz durumu ortadan kaldrarak, nesnelerin zniteliklerinin ve metotlarnn yeniden kullanmna imkn vermektedir. nk bir snf, ait olduu st snfn tm zelliklerini tar ve o snftaki nesneler, modelin baka bir yerinde kullanlaca zaman yeniden tanmlanmaya gerek kalmadan tekrar kullanlabilir.

21

VER TABANI YNETM SSTEMLER I

Alako BURMA

ekil 2.4.2.3.1. Snf Hiyerarisi

Genellikle soyutlama olarak anlan bu tip ilemler, u balklar altnda toplanabilir: Snflandrma ve elemanlarna ayrma: Snflandrma, nesne ynelimli veri modeli yaklamnn temelini oluturmaktadr ve ayn zellik ve davranlara sahip nesnelerin nesne snflar iinde gruplanmas ile ilgilidir. Bir snftaki nesneler, o snfn tanmna gre tarif edilebilir. Bylece her nesneyi ayr ayr tarif etmeye gerek kalmaz. Elemanlarna ayrma ise snflandrma ileminin tersidir ve bir snf iinde farkl nesneler oluturulmas ile ilgilidir. Aadaki nesne ynelimli veri modeli buna bir rnektir.

Bu rnekteki sahibi, adres, servis gibi nesneler, Otel snfnn elemanlardr ve tanmlar da birbirinden farkldr. rnein, Otel snfnn bir eleman,

22

VER TABANI YNETM SSTEMLER I

Alako BURMA

eklinde tanmlanrken, kurum nesnesinin bir eleman, aadaki gibi,

ynetici nesnesinin bir eleman da, aadaki gibi tanmlanabilir.

Tanmlama: Bu ilem hem soyut kavramlarn (snf), hem de somut kavramlarn (elemanlar), teker teker tanmlanmas ile ilgilidir ve anahtar deerler yardmyla yaplr. Toplam: Nesneler arasndaki ilikilerin daha st dzeyde, bir toplam nesne (veya tip) tarafndan temsil edilmesi ile ilgili bir soyutlama yntemidir. Bu toplam tipe genellikle anlaml bir isim verilir ve bu isim modelin baka yerlerinde, ona ait zellikler referans olarak verilmeden kullanlabilir. Genelletirme: Ayn zelliklere sahip bir grup nesnenin, soysal nesne olarak temsil edilmesi ile ilgili bir soyutlama yntemidir. rnein, bir kurumda alan personel u ekilde dzenlenebilir:

Bilgisayar Ekibi nesnesi; Analizci, Programc ve letimci nesneleri iin bir soysal nesnedir. Ayn ekilde alanlar nesnesi de Bakm Ekibi, Bilgisayar Ekibi ve Ynetici nesneleri iin soysal nesne durumundadr. Nesne ynelimli veri modellerinin, ilikisel veri modellerine kar stnlkleri vardr. Bunlar; NYVMnde veri tiplerinin (tamsay, gerek say, alfanmerik deer, tarih vb.) LVMe gre daha esnek olmas, nesne tanmlarnda soyutlama yaplabilmesine imkn vermesi ve bu tanmlarn semantik ieriklerinin de olmas sayesinde, veri btnlnn daha kolay salanabilmesi ve ilikisel veri modellerine gre, mevcut veri yapsnda daha fazla genileme ve yeniden dzenleme imknlarna sahip olmas saylabilir.
Not : Bu blm http://iletisim.marmara.edu.tr/bilisim/veri%20modelleri(csutcu%20dr%20tezinin%20bir%20bolumu).pdf adresindeki dosyadan alnmtr.

23

VER TABANI YNETM SSTEMLER I

BLM 3

Alako BURMA

3. VER TABANI TEMEL KAVRAMLARI


Veritaban (DataBase) : En genel tanmyla, kullanm amacna uygun olarak dzenlenmi veriler topluluudur. Mteri adres defterleri, rn sat bilgilerinin sakland dosyalar, renciler ve renciler ait har ve not bilgileri gibi, personel bilgi dosyalar gibi bilgi dzenleri veritabanlarna rnek olarak verilebilir. Belirli bir konu hakknda toplanm veriler; bir veritaban program altnda toplanrlar. stenildiinde toplanan bilgilerin tm veya istenilen zelliklere uyanlar grntlenebilir, yazdrlabilir hatta bilgilerinden yeni bilgiler retilerek bunlar eitli amalarla kullanlabilirler. Veriler fiziksel hafzada Veri Dosyalar (DataFiles) halinde saklanrlar. Dosya, bilgisayarlarn bilgileri birbirinden ayrarak saklamak iin kulland temel bilgi depolama yapsdr. Bir dosyada, bir ok veri yer alabilir. Bir personel otomasyonu ele alnacak olursa, personel ile ilgili bilgiler, personelin alt birimler, meslekleri, ald maa ile ilgili bilgiler ayn veri dosyasnda ama farkl tablolar ierisinde yer alabilirler. Bu blmde veri taban ile ilgili temel kavramlar zerinde durulacaktr. ncelikle bu kavramlar tanmlanacak ve hangi amala kullanld anlatlacaktr. Bu kavramlarla ilgili detayl rnek ve aklamalar sonraki blmlerde yaplacaktr. 3.1. Tablo ve Elemanlar Tablo verilerin satrlar (row) ve stunlar (colomn) halinde dzenlenmesiyle oluan veri grubudur. Veritabanlar bir veya daha fazla tablodan oluurlar. Tablolar arasnda ilikiler dzenlenebilir. Tablonun satrlarndaki her bir bilgi kayt (record), stunlar ise alan (field) olarak isimlendirilir. Bir tabloda yer alan her bir kayt bir satra karlk gelir. rnein personel listesi (yani personel tablosunu) ele alnacak olursa, her bir satrda bir personele ait bilgiler yer alr. Stunlardaki alanlar (Field) ise yaplandrlm bilginin her bir ksmn saklamak zere yaplan tanmlamadr. Bir personele ait bilgilerin her biri stunlarda tutulur. Personelin sicil numaras, ad, soyad, alt birim, doum tarihi gibi bilgilerin her biri bir stun alandr. Her bir alan, yaplandrlm verinin bir birimini tutmak zere tanmlanr. Her bir stunun ad ile birlikte dier bilgilerinin (en fazla ka birimlik bilgi bu hcrede saklanabilecek, ne tr bilgi saklanacak vs.) ortaya koyduu tanma alan denir. Herhangi bir veritaban programnda almaya balamadan nce yaplacak ie uygun veri taban tasarm yaplmaldr. Bu iin en nemli aamasdr. Balangta iyi tasarlanmayan bir veritaban ileride geriye dn olmayan verimsiz bir bilgi ynna dnebilir. En basit hali ile veritaban tasarmnda; hangi tablolarn olaca, bu tablolarda hangi alanlarn olaca, tablolar arasndaki alan ilikilerinin neler olaca ve alanlara ait zelliklerin tanmlanmas yaplr. Alan zelliklerinde alan ad, alan tipi, alann uzunluu, alann varsaylan deeri, bu alana yazlacak verilerin geerlilik koullar balangta tasarlanmas gerekir.

24

VER TABANI YNETM SSTEMLER I

Alako BURMA

Veritabannn en nemli bileeni tablodur. Her veritabannda en az bir tablo bulunur. Veritaban ilemlerinde nce tablo/tablolar tanmlanr. Daha sonra tablolara kaydedilecek bilgilerin neler olaca ve bu bilgilere ait zellikler tanmlanr. Personelin sicil numaras ve bunun saylardan olumas, personelin ad soyad ve bunun harflerden olumas gibi. Tanmlamalar bittikten sonra tablodaki bu alanlara ait gerek bilgiler yazlr. Yazlan bu bilgiler tablolarda tutulur. Kayt ile satr arasndaki temel fark, kayt ile kastedilen yapnn stunlar hakkndaki bilgileri de iermesidir. Tablolara girilmi bilgilerden belirli artlara uyanlarn liste eklinde alnmasna sorgu ad verilir. Tablolardan gerektiinde sorgulamalar yaplabilir. Deiik amalara gre sorgular hazrlanarak tablodaki bilgilerin tm, bir ksm veya belirli art salayanlarn listesi alnabilir. rnein, muhasebe blmnde alan personelin listesi gibi. Sorgular SQL; ilerleyen blmlerde detaylar ile anlatlacaktr. 3.2. Veri Tipi (Data Type) Bilgisayar, kaytlar tablolarda yapsal olarak tutarken, onlarn yaplar hakknda fikir sahibi olabilmek iin baz zelliklerinin nceden tanmlanmas gerekir. rnein, personel sicil numaras alannn mutlaka bir tam saydan oluaca, personel ad ve soyadnn harflerden oluaca, personelin alt blmn harf ya da rakamlardan oluaca, personelin doum tarihinin tarih bilgilerinden oluaca gibi. Bir veritaban oluturulurken, nce tablolar ve sonrada bu tablodaki her bir alann veri tiplerinin ne olaca tanmlanmak zorundadr. Bir tablo alanna veri girii yaplmadan nce o alann tamsay m yoksa harf mi; tarih mi yoksa ondalkl bir say m olaca tanmlanmal ve veriler daha sonra tabloya yazlmaldr. Ayrca, bir alann uzunluu ne kadar olacak, harf girilebiliyorsa en fazla ka harf girilebilecek?, rakam ise en fazla ka basamakl olabilir? trnden sorular yantlamak iin de yine VTYS bir alan iin veri tipi belirlenmesini ister. Her Veri Taban Programnn veri tipleri farkldr. Aada Ms Access, MySQL ve Oracle veri taban program rnek veri tipleri verilmitir.

3.2.1. Access Veri Taban Veri Tipleri Metin : Yazlacak bilgiler harflerden veya hem harf hem de saylardan meydana geliyorsa kullanlacak veri trdr. Bu alana bolukta dahil olmak zere en fazla 255 karakter bilgi yazlabilir. Bu alana yazlan bilgiler sadece saylardan da oluabilir, ama yazlan saylar hesaplama ilemlerinde kullanlamazlar. Not : Uzun metin yada metin ve say bileimi kullanlabilir. Genelde aklama ya da uzun bir not yazlacaksa bu alan kullanlr. 64.000 karakterle snrldr. Say : renci numaras, rencinin snf gibi saysal bilgiler iin kullanlr. Saysal alanlar matematiksel hesaplamalarda kullanlabilir. Bor, alacak, renci harc gibi. Tarih/Saat : 100 ile 9999 arasndaki yllar iin tarih ve saat deerleridir.

25

VER TABANI YNETM SSTEMLER I

Alako BURMA

Para Birimi : Bir ile drt arasndaki ondalk basama olan, matematik hesaplamalarnda kullanlan para birimi deerleri ve saysal veriler. Otomatik Say : Tabloya yeni bir kayt eklendiinde, Access tarafndan atanan benzersiz ardk (birer birer artan) ya da rasgele saylar. Otomatik say alanlar deitirilemez. Evet/Hayr : Yalnzca iki deerden birini ieren alanlar Evet / Hayr, Doru / Yanl, Ak / Kapal gibi alanlar gibi. OLE Nesnesi : Access tablosuna balanm ya da kattrlm bir nesne. (Microsoft Word veya Excel alma sayfas gibi) Kpr : Tklandnda kullancy baka bir dosyaya, dosyadaki bir konuma veya Internetteki (www) bir blgeye ynlendiren balant. Arama Sihirbaz : Deerleri baka tablo, sorgu ya da deerler listesindeki deerlerden seilen bir alan yaratmamza yardmc olan sihirbaz.

3.2.2. MySQL Veri Taban Veri Tipleri MySQL'de bir ok veri tr oluturulabilir. Ancak Web programlar asndan nemli olan bir ka ve zellikleri yle sralanabilir: INT : Tamsay: -2147483648'den 2147483647 kadar deien diziye "signed" (iaretli), 0'dan 4294967295'e kadar deienine "unsigned" (iaretsiz) denir. VARCHAR(n) : n saysn gememek artyla deien boyutta karakter olabilir CHAR(n) : Kesinlikle n says kadar karakter olabilir. TEXT : En fazla 65535(2^16-1) karakter alabilen metin alan. MEDIUMTEXT : En fazla 16777215(2^24-1) karakter alabilen metin alan. DATE : 1000-01-01'den 9999-12-31'e kadar deiebilen tarih alan. TIMESTAMP : 1 Ocak 1970'den 18 Ocak 2038'e Yl+Ay+Gn+Saat+Dakika+Saniye biimindeki zaman bilgisi. kadar olan ve

3.2.3. Oracle Veri Taban Veri Tipleri CHAR(say): Sabit uzunluktaki alfasaysal verilerin tutulabildii alanlar iin kullanlr. Oracle 7 ve daha nceki srmler iin bu alann uzunluu en fazla 255 karakter olabilir. Oracle 8 ve sonrasnda 2000 karakter uzunluundadr. Eer, say ile ifade edilen numaradan daha ksa uzunlukta veriler girilirse Oracle kaydn sonuna boluk ekleyerek sabit uzunlua kadar getirir. rnek char(20).

26

VER TABANI YNETM SSTEMLER I

Alako BURMA

VARCHAR2(say): Deiken uzunluklu alfasaysal verilerin tutulduu alanlar iin kullanlr. Oracle 7 ve nceki srmlerinde 2000 karakter, Oracle 8 ve sonraki srmlerinde 4000 karakter uzunluunda bilgi girilebilir. rnek varchar2(30). NUMBER(n,p): Tamsay ve Gerel saylar iin kullanlan saysal veri tipidir.Tam ksm en fazla 38 basamak olabilir. Ondalk ksmn basamak says da 84 ile 127 arasnda deimektedir. Number veri tipinden tretilmi int[eger], dec[imal], smallint ve real veri tipleri de kullanlabilmektedir. DATE: Tarih tutan alanlar iin kullanlr. Bu tip alanlarda, tarih bilgileri ve saat bilgileri tutulabilir. Tarih formatlar Oracle yklenilirken seilen dile gre deiir. Amerikan standart iin DD-MON-YY dir. Yani bir tarih 03-MAY-01 eklinde grnr. NLS_DATE_FORMAT parametresi ile tarih format deitirilebilir. Tarihsel alanlar zerinde aritmetiksel ilemler yaplabilir. Sistem tarihi SYSDATE fonksiyonu kullanlarak renilebilir. Saysal veya karakter olarak tanml bir alandaki veriler TO_DATE fonksiyonu ile tarih tipine evrilebilir. LONG: 2 GB a kadar bilgi tutabilen karakter alanlar iin kullanlr. Bir tabloda bu tipten ancak bir adet alan tanmlanabilir. Long veri tipine sahip alanlar iin index oluturulamaz. Not: Oracleda boolean veri tipi yoktur. Bunun iin char(1) ya da number(1) eklinde tanmlama yaplp kullanlabilir. Not: Bir tablonun alanlar kendi veri tipine uygun deerler alabildii gibi bir de NULL deer alabilirler. NULL deeri saysal olarak 0dan ve karakter olarak ta bo karakterden( ) fakldr.

3.3. Zorlayc (Constraint) Herhangi bir alan iin girilebilecek verileri kstlayc kurallara zorlayclar denir. lgili alana girilebilecek deerleri snrlayan bir deyim yazlr. Kullanm bazen ok faydaldr ve zellikle yanl bilgi giriini engeller ve verilerin doru girilmesini zorunlu hale getirir. Kullanc, zorlaycda belirtilen kural dnda bir veriyi tabloya yazmaya altnda, VTYS hata verir. Bylelikle veritabanna kullancnn keyfi deerler girmesi nlenmi olur ve veri tabannda tutarllk salanm olur. rnein, bir rencinin snf bilgisine ait deerler yazlrken bu alan iin rakamsal 1 ile 6 arasnda bir zorlayc deer tanmlanrsa; veri girii srasnda 1 ile 6 arasndaki deer dnda bir deerin snf bilgisi alanna yazlmas engellenmi olur. Dolays ile snf iin yazlmamas gereken bir deer; bilgi girii balangcnda kontrol edilmi olur. ekil 3.3.1. de mavi izgilerle evrelenmi alanda Ms Access veri taban programnda bir kstlaycnn tanmlanmas yaplm ve zellikle kullanc tarafndan yanl bilgi girii engellenmi ve verilerin doru yazlmas zorunlu hale getirilmitir.

27

VER TABANI YNETM SSTEMLER I

Alako BURMA

ekil 3.3.1. MS Access de tanmlanm zorlayc ekran

3.4. Anahtar (Key) Anahtar bir veya birden fazla alann bir satr iin niteleyici olarak girilmesi iin tanmlanan zel bir eit zorlaycdr. Tekrarlamayacak bir anahtar alan tanmlandnda, bu anahtar alana birincil anahtar alan denir. Primary Key, Unique Key ve Foreign Key olmak zere 3 eit anahtar vardr. Primary Key (Birincil Anahtar) : Bir tablodaki, her bir satrn yerine vekil olabilecek bir anahtar veridir. Tabloda bu alana ait bilginin tekrarlanmamas gerekir. Standart olarak bir tabloda verilerin, fiziksel hafza stnde de hangi alana gre dizileceini de primary key belirler. Bu, bazen bir tek alan olabilecei gibi, bazen birden fazla alan da birleerek bir birincil anahtar oluturabilir. rnein programda personelin sicil numaras alanna gre aramalar yaplacaksa Primary key personel sicil numaras olmaldr. Personelin ad ve soyadna gre aramalar yaplacaksa ad ve soyad alanlar birletirilerek iki alandan tek anahtar alan tanmlamas yaplr. Unique Key(Tekil Anahtar): Unique Key olarak tanmlanan alan iin bir deer sadece bir kere girilebilir. Bir baka satra daha ayn verinin girilmesine izin verilmez. Primary Key den farkl olarak Unique Key, NULL (boluk) deerini alabilir. rnein programda her personele ait bir sicil numaras olaca iin bu alan Unique key olarak tanmlanabilir. Ama isim alan birden fazla ayn isme sahip personel olabilecei iin bir Unique key olarak tanmlanamaz. Ali isimli birden fazla personel olabilecei gibi.

28

VER TABANI YNETM SSTEMLER I

Alako BURMA

Foreign Key (Yabanc Anahtar) : Bir tabloya girilebilecek deerleri baka bir tablonun belli bir alannda yer alabilecek veri grubu ile snrlandrmaya ve en nemlisi de ilikilendirmeye yarar. rnein, olmayan bir kitabn dn tablosuna eklenememesi ve dn tablosuna eklenen bir kitabn numaras araclyla detay bilgilerine eriilmesi gibi. Burada Kitap.KitapNo birincil anahtar alan; Odunc.kitapNo ise yabanc anahtardr. 3.5. Index (ndeks) Ktphanelerdeki kitaplarn raflardaki dizililerini ele alalm. Bir kitap arandnda, kitaplar bir kurala gre dizilmemilerse, her bir kitaba teker teker baklmas gerekir. Kitaplar raflara alfabetik dizilirse, her bir kitap tek tek gzden geirilmek zorunda kalnmaz. Aranlan kitap ile baklmakta olunan kitabn isimleri karlatrlr, saa ya da sola ynelip aramaya devam edilir. Ayn ekilde yazarlarna ya da ktphane numarasna gre sralanm birer liste olursa, bu kriterlere gre de aranlan kitap kolayca bulunur. Veritabanlarnda indeks oluturularak, veriler veritabanndaki kaytl olduklar sradan baka bir srada gsterilebilir ve tpk ktphanedeki bir kitaba ulamada olduu gibi istenilen veriye daha ksa srede ve kolayca ulalabilir. Temelde indekslerin ilikisel veritabannda u ilevi vardr: 1.Tekil indeksler, veri ilikilerini ve veri btnln salayan birincil anahtar alanlar oluturmada kullanlr. 2. ndeks olan alann deerine gre bir kaydn kaytlar arasndaki srasn gsterirler. 3.Sorgularn neticelenme srelerini ksaltrlar. Constraintler (zorlayclar) aslnda indexlere benzerler ama indekslerden farkl olarak bir tek tablo stnde etkili olmayabilirler. zellikle yabanc anahtar zorlaycs ilikisel veri girii iin olduka etkili bir zorlaycdr. Ancak bir Foreign Key tanm yapabilmek iin, FOREIGN KEY yabanc anahtarnn asl tablosunda birincil anahtar olmas gerekir. 3.6. View (Grnt) Bazen, tablolar olduklarndan farkl gsterecek filtrelere ihtiya duyulur. Bu trden ilevler iin VIEW kullanlr. VIEW ler, saklanm sorgulardan ibarettirler. Aslnda tablo gibi kullanlsa da halihazrda byle bir tablo veritabannda bulunmaz, sadece view(grnts) bulunur. VIEW ler u grevler iin kullanlr: * Kullanclarn baz kritik tablolarn sadece belli stunlarn veya satrlarn grmesi istenildiinde, * Kullanclarn, eitli birim dnmlerinden gemi deerler grmeleri gerektiinde, * Halihazrdaki tablolarda var olan verilerin baka bir tablo formatnda sunulmas gerektiinde ok kompleks sorgular basitletirmek iin

29

VER TABANI YNETM SSTEMLER I

Alako BURMA

rnein Kitap tablosunda sadece Bilgi Teknolojileri trndeki kitaplarn yer alaca bir VIEW u ekilde oluturulabilir:
CREATE VIEW view_adi [(kolon1, kolon2...)] AS SELECT tablo1.kolon_adi_1, tablo2.kolon_adi_1 FROM tablo_adi_1, tablo_adi_2 ;

Not : MSAccess de VIEW oluturulamaz. SQLServer, SyBase, Oracle gibi orta ve byk lekli VTYS lerde oluturulabilir. 3.7. Joining (ilikilendirme) ki veya daha fazla tabloyu birlikte sorgulama ilemine join ismi verilir. likisel veritabannn en temelinde birden fazla tablo stnde birlikte ilem yapabilmek yatar. Bu sayede verilerin tekrarlanmas nlenmi olur ve sonuta veri ynetimi kolaylar. rnein, Kitap tablosunda, Kitabn bir tekil numara ile listesini tutmak ve dn listesinde de bu Kitabn kim tarafndan alndnn, geri getirilip getirilmediinin kayd tutulmaktadr. Bazen, bu iki tablodaki bilgilere de bir tek sorgu sonucu olarak ihtiya duyulabilir. rnein; elimizde yle bir sonu olmaldr ki, hangi kitabn kim tarafndan dn alndn bir listede grme ihtiyac duyulsun. Bu iki tablo birbirine, kitapNo alan ile baldr. nk, dn verilen bir kitap hakknda detayl bilgi edinilmek istenildiinde, dn listesinden kitap numarasn alp, daha sonra Kitap tablosundan ayn numaray bulmak ve karlndaki kitap hakkndaki detaylar grmek.

30

VER TABANI YNETM SSTEMLER I

BLM 4

Alako BURMA

4. VER TABANI TASARIMI ve NORMALZASYONU


4.1. Veri Taban Tasarm Iyi bir veritaban tasarm yapabilmek iin yetenek, bilgi ve tecrbe ok nemlidir. ncelikle, ilikisel veritabannn tanmn ve bununla ilgili 5 Normalizasyon kuraln ok iyi bilmek gerekir. 5N, tasarm aamasnda yol gstermek yerine hangi artlara uygun tasarm yaplmas gerektiini anlatr. Bazen, bu kurallardan vazgemek durumunda olunabilir ancak, veritabannda saklanacak verilerin hacmi arttka yani veri taban bydke bu kurallarn daha sk uygulanmasn gerekir. Bir veri taban ile proje yaplrken iin en nemli aamas veri tabannn tasarlanmasdr. Balangta yanl tasarlanan bir veri taban ile yaplan projede sonradan yaplacak dzenlemelerle geri dn yaplamaz. O nedenle Veri taban tasarm yaplrken aadaki maddelere uyularak yaplmas gerekir. 1. Nesneler Tanmlanr: Nesne, eitli zellikleri bulunan bir varlktr. Herhangi bir proje de ncelikle nesneler tanmlanr. Birka proje iin nesnelere rnek verilecek olunursa, Ktphane sistemi : Kitap, yeler, trler, dn hareketleri E-ticaret sistemi : rnler, mteriler, sipariler, teslimat, fatura bilgileri, reticiler, tedarikiler, datclar... Futbol Ligi : Takmlar, sahalar, oyuncular, fikstr, hakemler, antrenrler Okul Sistemi : renciler, retmenler, dersler, derslikler Personel Sistemi : alanlar, meslekler, allan birimler, maalar, izinler Szlk : kelimeler, anlamlar, diller Not : Tablolara isim verilirken mmknse tekil isimler kullanlmaldr. Byle yaplrsa; hem daha anlalr bir tasarm yaplm olur hem de daha sonra kodlama aamasnda karkln nne geilmi olur. rnein iinde Kitap ile ilgili bilgiler bulunduran tablonun adn Kitap koymak olduka mantkldr. 2. Her nesne iin bir tablo oluturulur: Her nesne iin bir tablo oluturulur ve her bir tabloya ierecei veriyi en iyi anlatan bir isim verilir. Tablo oluturma ii, bir kat stnde sembolik olarak gsterilebilir veya dorudan MS Access, SQL Server, MySQL, Oracle ... gibi kullanlmakta olunan VTYS stnden de oluturulabilir. Tm proje bitirilinceye kadar bu tablolar zerinde muhtemel deiiklikler yaplabilir. 3. Her bir tablo iin bir anahtar alan seilir: Veritabanndaki herhangi bir veriye eriilmeden nce tabloya eriilir. Bir veritabannda zerinde en ok ilem yaplan nesne grubu genellikle tablolardr. Bu aamaya kadar hangi tablolarn oluturulacana karar verildi. Her bir tablonun iinde hangi bilgilerin saklanlaca kabaca tasarlanr. Bu aamada, tabloda yer alacak her bir kayd bir dierinden ayrabilecek bir stuna ihtiya duyulur.

29

VER TABANI YNETM SSTEMLER I

Alako BURMA

rnein bir kitap seilmek istenildiinde, bu kitabn hangi kitap olaca yle bir anlatlabilmeli ki, baka hibir kitap ile karmamaldr. Bunu yapmann tek yolu, bir alan birincil anahtar alan olarak belirlemektir. Anahtar alan seilirken, kstlamad srece, doal alanlar seilmeye dikkat edilmelidir. rnein aralar ile ilgili bir tablo yaplrken, plakalar anahtar alan olarak belirlenebilir. nk her bir plakadan bir tek ara trafie kabilir ve plakalar kstlamaz. renci tablosu iin, renci numaras doal bir anahtar alandr nk ayn okulda, ayn numaradan bir rencinin daha bulunmas sz konusu deildir. Personel tablosu iin, personel sicil numaras doal bir anahtar alandr nk ayn iyerinde, ayn numaradan bir personel daha bulunmaz. Kitap tablosu iin ISBN numaras anahtar alan olarak tanmlanabilir ama, ayn kitaptan iki adet olduunda, ISBN numaras bizi kstlar. Elimizde iki adet nmzdeki Yol kitab varsa, her iki kitabn da ISBN numaras ayndr. Kitaplardan birisi eski dieri yeni olabilir. Bu bir kargaaya neden olabilir. nk eski kitab kime, yeni kitab kime verdiimizin takibini ISBN numaras ile yapmak mmkn deildir. Ancak bir E-Ticaret sitesi tasarlanrken, stoktaki tm kitaplar birbiri ile edeer olacandan ya da yle olduu varsayldndan ISBN numaras birincil anahtar alan olabilir. Bu durumda, adet diye bir niteliin ayn tabloda yer almas gerekecektir. 4. Nesnelerin gerekli her bir zellii iin tabloya bir stun eklenir: Tablo adlar tanmlandktan ve anahtar adlar belirlendikten sonra, tablolara srasyla adn veren nesnelerin her bir zellii iin bir alan (stun) eklenir. rnein, kitap iin; Kitap no, ISBN no, kitap ad, yazar, tr, sayfa says, zeti, fiyat, bask yl... ye iin; UyeNo, ad, soyad, e-mail adresi, ev telefonu, cep telefonu, i telefonu.... Personel iin; Personel sicil No, ad, soyad, e-mail adresi, meslei, alt birim, maa.... Bu hazrlklar yaplrken yaplmas istenilen proje ile ilgili basl formlar vs. varsa, onlarn incelenmesi tabloya eklenecek stunlarn hangi zellikler olmas gerektii konusunda karar verilmesinde yardmc olurlar. PUCU : 1. En baa birincil anahtar olarak belirlenen alan eklemek bir kural deildir, ancak tablonun anlalrl ve gze ho grnmesi asndan tercih edilmesi faydal olacak bir tekniktir. 2. Genellikle, yapay birincil anahtar alanlar tablo ad ile balar ve sonunda ID vardr. Ogrenci tablosu iin ogrenciID, Personel tablosu iin personelID gibi. 5. Tekrarlayan nesne zellikleri iin ek tablolar oluturulur : Aklda hep u soru olmaldr: veri tekrar olacak m? Veri tekrar olacaksa bir yerlerde hata yaplyor demektir. Bu durumda eldeki tablonun en az bir tabloya daha ayrlmas gerekiyor demektir. u da unutulmamaldr, her projeye uyacak evrensel bir veritaban tasarm teknii yoktur. Yani her ey belli kurallar erevesinde ne kadar detayyla dnlp tasarlandna baldr.

30

VER TABANI YNETM SSTEMLER I

Alako BURMA

rnein, her bir kitap iin tr belirledik ama, bir kitap hem kiisel geliim kategorisine hem de hikaye kategorisine girebilir. Ya da e-ticaret sisteminde bir rnn birden fazla reyonda yer almas gerekli olabilir. Veya bir kitap birden fazla kii tarafndan yazlm olabilir. Bir kitap iin birden fazla tr kaydedebilme ele alnsn: Bu trden bir sorunu zmek iin ilk akla gelen ey, Kitap tablosunda tr alan iin 2.stun daha eklemek olabilir. Bu tabloya 2.Tr ve 3.Tr diye iki stun alan daha eklemek. Ama ou kitap bir tek trdendir ve bu kitap iin eklenen 2 alan hep bo kalacaktr. te yandan, 4.tre birden giren bir kitap olduunda 4.tr bilgisi nereye yazlacaktr? Ayn alana m? Ya da drt adet blm m alacak? Bunlar, veritaban tasarmnn doasna terstir. 2.zm yolu ise, bir kitab iki kere kaydedip, birincisini, Kiisel Geliim tr olarak; ikincisini de Hikaye olarak girmektir. Bu durumda tabloda ayn kitaba ait iki kayt olacaktr ve kitap tr dndaki dier tm bilgiler tekrar edecektir. Ya da bir sre sonra, kitap hakknda girilen bilgilerin yanl olduu fark edildi. Hangi kayt gncellenecektir? Ya biri dzeltip dieri unutulursa? Sonuta veri tekrar ve veri btnlnn bozulmas sz konusudur. Bu da yine ilikisel veritaban tasarmnn doasna terstir. Bu durumda, trler diye bir yeni tablo oluturup, bir de kitap_turler diye 2.tablo yu oluturduktan sonra bu trden bilgileri burada tutmak gerekecektir. Bylelikle, hibir trde yer almayan kitaptan 10 ayr trde yer alan kitaba kadar btn olaslklar iin bir zm gelitirilmi olur. Ayn ilem renci ve renciye ait ders notlar iin dnlebilir. renciye ait ders not bilgilerinin yazld tabloya ait stunlarn aadaki gibi olduunu varsaylrsa; renciNo DersinAd VizeNotu FinalNotu Ortalama

Bir renci ald dersten baarl olursa vize ve final notu yazlarak ortalamas hesaplanr ve sorun yaanmaz. Ama renci bu dersten baarsz olursa bu dersi yeniden almak zorundadr. Yeniden ald bu derse ait ders notlarnn nereye yazlacann dnlmesi gerekir. Eski notlarnn da kalmas gerektii dnd bu durumda tablo aadaki gibi tasarlanabilir. renciNo DersinAd 03101001 BILGISAYAR VizeNotu FinalNotu Ortalama VizeNotu FinalNotu Ortalama 37 40 45 48

Tabloda 2 adet not yazlabilecek alan vardr. Peki ama rencinin dersi ikiden fazla kere tekrar etmesi gerekirse ne olacak? Bu durumda yeni stun alanlar m eklemek gerekecek? Tabloya 3 tane not yazma alan eklendiinde dersi bir kere alan ve baarl olan renciler iin 2. ve 3.alanlar bo kalacaktr. Bu her renci iin deiebilecek bir durum olduu iin tablo tasarmnda bu mantkla dnmek doru deildir. Yukarda ki rnekte de akland gibi bu ekilde bir tasarm yaplmaz.

31

VER TABANI YNETM SSTEMLER I

Alako BURMA

Ayrca; tabloda tanmlanan her stun alan, bu alana hibir bilgi yazlmasa bile HDde yer kaplayaca iin;diskte tanmlanan bu alanlar bouna kullanlm olacaktr. Dolays ile diskte de bo yere alan igal edilmi olacandan tabloda gereksiz stun alanlarnn tanmlanmamas gerekir. rnein, tabloda gereksiz tanmlanan bir stun alan diskte 4byte yer kaplyor ise ve tabloda toplam 15 bin renci var ise; gereksiz kullanlan toplam HD alan 4 * 15.000 = 60.000 byte olacaktr. Sadece tek bir alan iin bu kadar alann bo yere kullanlm olmas ho bir durum deildir. Bu durumda tablo tasarmnda yaplmas gereken dzenleme aadaki gibi olmaldr. Bir renciye ait dersler yazlrken alt alta satrlar eklinde kayt (record) olarak yazlarak yaplmaldr. renciNo 03101001 03101002 03101001 03101001 DersinAd BILGISAYAR INGILIZCE BILGISAYAR BILGISAYAR VizeNotu 37 56 45 69 FinalNotu 40 58 48 78 Ortalama

Doru tablo tasarm ve kayt girii yukardaki tabloda olduu gibi olmaldr. Burada 03101001 numaral rencinin BILGISAYAR dersine ait notlar bu tablodan ilerleyen blmde anlatlan SQL cmlecii ile seilerek bulunabilir. 6. Anahtar Alana Bal Olmayan Alanlar Belirlenir : likisel veritabannda, tablodan herhangi bir tek kayda erimek iin mutlaka bir farkl zellik salanmaldr ve bu zellik de anahtar alan tarafndan salanr. Ancak bazen, anahtar alan ile ayn satrda yer ald halde, anahtar alan ile birebir ilikisi olmayan bir alan yer alabilir. Bu trden alanlarn elimine edilip ayr tablolara ayrlmas gerekir. rnein, dn tablosu ele alnacak olursa, dn verilen her kitap iin dn alann adresi de bilinmek istenirse, bu dn tablosuna yazlamaz. nk dn tablosunun birincil anahtar alan oduncNo dur ve bu alan, dn verme ilemi ile ilgilidir. Oysa dn alann adresi, dn alan kiinin kendisine bal bir zelliktir. Bu kiinin her ald kitap iin adresini tekrar yazmaya gerek yoktur. Ayn ekilde otomasyon ierisinde baka yerlerde de bu kiinin adres bilgilerine muhtemelen ihtiya duyulabilir nk adres, yenin bir zelliidir. dn verilen kitabn adresi renilmek istenildiinde, yeler adnda bir tablo daha alp, burada herkesin adres bilgisi tutulmak zorunda kalnr. dn tablosunun ise, oduncAlan bilgisi olarak, yeler tablosunun birincil anahtar alanna bir balant (yabanc anahtar) iermesi daha doru olur.

32

VER TABANI YNETM SSTEMLER I

Alako BURMA

7.Tablolar arasndaki ilikiler tanmlanr : Her biri bir nesneye dair zellikleri barndran tablolarn tm gz nne alnr ve birbirleri ile olan ilikileri tanmlanmaya allr. rnein kitab dn verebiliriz. Bu durumda, dn tablosu ile Kitap tablosu ilikili olacaktr. Kitap yelere dn verilir. Bu durumda, dn ile yeler arasnda da bir iliki vardr. Trler ile Kitap arasnda bir iliki vardr, bir kitabn en az bir tre dahil olmas gerekir. Bu projedeki nesneler (tablolar) arasnda ilikiler aada yer almaktadr:

ekil 4.1.1. rnek Projenin SQL Server 2000 deki diyagram likili her iki tablo bir birincil alan ve bir yabanc anahtar alan stnden birbirine balanr. Ayn diyagramn bir benzeri Ms Access veya Oracle veri tabanlarnda da hazrlanabilir. Farkl tablolardaki iki alan ayn veriyi tutuyorsa, iki alana da ayn ad vermek, karkla yol aabilir gibi grnse de aslnda daha dzgn bir yap ortaya kar. KitapNo alan kitap tablosunda da dn tablosunda da kitap numarasn tutmaktadr. Bu alanlardan birine KitapNo, dierine oduncGidenKitapNo demek, kafa karklna neden olabilir. En nemlisi de her alan iin her tabloda farkl isimler kullanmak deikenlerin isminin aklda tutulmasn zorlatracak ve daha sonraki tablolar zerinde ilem yaparken ilemleri zorlatracaktr. Her seferinde ilgili alann hangi isimle kaydedildiine bir listeden bakmak zorunda kalnacaktr. nk byk bir veritaban projesinde 250 den fazla tablo bulunabilir. Her tabloda da bir ok alann bulunaca dikkate alndnda her alana ait isimlerin aklda tutulmas mmkn olmamaktadr. Birden fazla tabloda olan alanlar iin; ayn ismi kullanmak bu zorluu ortadan kaldracaktr. En mantkls her ikisine de KitapNo demektir.

33

VER TABANI YNETM SSTEMLER I

Alako BURMA

4.2. Veri Taban Normalizasyonu Aslnda ilikisel veri taban tasarmndan ziyade, bir tablo ierisinde yer alacak kaydn nelerden olumasna karar vermeye yarayan normalizasyon kurallar bal bana bir ilemdir. Normalizasyon; veritaban tasarm aamasnda gerekli bir ilem olduundan bu blmde incelenecektir. Genel kabul grm 5 normalizasyon kural vardr. Burada her bir kural tam olarak anlatmak mmkn deildir. Ancak bu kurallar, ilikisel veritabannn tanm ile birlikte ortaya konulmutur. zet olarak fikri vermesi asndan normalizasyon kurallarna aada yer verilmitir. 1. Normalizasyon Kural : Bir satrdaki bir alan yalnzca bir tek bilgi ierebilir. Birden fazla yazar olan kitap iin yazar1, yazar2 ve yazar3 diye alanlarn almas ile bu kurala uyulmam olunur. Byle bir durumda, ayrca yazarlar tablosu da oluturularak kural inenmemi olur. Veri taban tasarmnda; verileri virgl veya bir baka karakter ile ayrlp ayn alana girilmesi ve daha sonra program ierisinde split ile bu deerlerin ayrlmas genellikle sk yaplan hatalardan birisidir. Ancak bu ilikisel veritabannn doasna terstir. Bunun yaplmamas gerekir. 2. Normalizasyon Kural: Bir tablo iin, anahtar olmayan her alan, birincil anahtar olarak tanml tm alanlara bal olmak zorundadr. rnein, dn tablosuna KitapAdi diye bir alan eklense idi, bu sadece dn verilen kitap ile ilgili bir bilgi olacakt ve oduncNo na bal bir nitelik olmayacakt. Bunu zmek iin, kitap adlar ayr bir tabloda tutularak sorun zlebilir. Ya da anahtar alann birden fazla alandan olutuu tablolarda, anahtar alanlardan sadece birine bal veriler tabloda yer almamal, ayr bir tabloya tanmaldr. Bunun tersi de geerlidir. Yani iki ya da daha fazla tablonun birincil anahtar ayn olamaz. Byle bir durum sz konusu ise, bu iki tablo tek tabloya indirilmelidir. 3. Normalizasyon Kural: Bir tablo iin, anahtar olmayan bir alan, anahtar olmayan baka hi bir alana bal olamaz. rnein, kitaplar iin cilt tipi adnda bir alan eklenip burada da karton kapak iin K, deri cilt iin D, spiral cilt iin S yazlsayd, bu kodlama, kitap tablosunun birincil anahtar olan kitapNo alanna bal bir kodlama olamazd. nk bu kodlama bir baka anahtar olmayan alana baldr. Bunun sonucunda da veritabannda, karl olmayan bir kodlama yer alm olurdu. Cilt tipi bilgisini kodlu olarak tutan alan aslnda cilt tipi aklamas olan baka bir alana baldr. Bu iliki baka bir tabloda tutulmaldr. Bu durumda, cilt ekillerini tutan bir tablo almas gerekir. Bu tablonun alanlar da ciltTipKodu ve ciltSekli olabilir. Ancak bundan sonra, kitaplar tablosunda ciltTipi adnda bir stun ap buraya da D,S,K gibi kodlar yazlabilir.

34

VER TABANI YNETM SSTEMLER I

Alako BURMA

4. Normalizasyon Kural: Birincil anahtar alanlar ile anahtar olmayan alanlar arasnda, birden fazla bamsz bire-ok ilikisine izin verilmez. rnein, tabloda yer alan bir kitap, hem hikaye kitab hem de kiisel geliim kitab olabilir. (Bu durumda kitabn ad, kiisel geliim hikayeleri olurdu her halde) Bu durum Kitap tablosunda nasl ifade edilebilir? 4.Normal formu salamak iin, her bamsz bire ok iliki iin ayr bir tablo oluturulmas gerekir. Bu rnekte, trler iin yeni bir tablo almas gerekir. Tablonun adna trler denilebilir. Daha sonra kitapTurleri diye bir baka tablo daha almas gerekir. Kiisel Geliim Hikayeleri adl kitap iin, ncelikle kitap numaras, Hikaye blmnn kodunun yer ald bir satr; ardndan da yine kitap numaras, ardndan da kiisel geliim trnn kodunun ald yeni bir satrn daha eklenmesi gerekir. 5. Normalizasyon Kural: Tekrarlamalar ortadan kaldrmak iin her bir tablonun mmkn olduunca kk paralara blnmesi gerekir. Aslnda ilk 4 kural sonuta bu ie yarar ancak, bu kurallar kapsamnda olmayan tekrarlamalar da 5 normalizasyon kural ile giderilebilir. rnein, kitaplar iin bir edinme ekli bilgisi girilecek stun eklenmek istenebilir: Bu blme girilebilecek bilgiler bellidir: Ba veya satn alma. Bu bilgiler baka bir tabloda tutulabilir. Bylelikle, kullanclarn bu alana gelii gzel bilgiler girmesi engellenmi olur. Bu da sorgulama esnasnda veriler arasnda bir tutarllk salar. Bu ilem sonucunda, tutarszlklara neden olabilecek ve sk tekrarlayan veriler baka bir tabloya tanm olur. Bu tablo iin, veritaban programlamada look-up table terimi kullanlr. Ancak, veritaban normalizasyon kurallar, bir ilikisel veritabannn tasarlanma aamalarn deil de ilikisel veritabannda yer alacak kaytlarn ilikisel veritaban ile uyumlu olup olmadn denetlemeye yneliktir. zetle ilikisel bir veritaban tasarm u drt eyi barndrmaldr. 1. 2. 3. 4. Veri tekrar yaplmamaldr. Bo yer mmkn olduunca az olmaldr. Veri btnl salanmaldr. Veriler, aralarnda bir iliki tanmlanmaya msait olmaldr.

4.3. likisel Veri Taban Ynetim Sistemleri Veritaban Ynetim sistemlerinden gnmzde kullanm en yaygn olan ilikisel veritabandr ve en yaygn veritaban ynetim sistemleri, ilikisel Veritaban Ynetim Sistemleri (VTYS) dir. likisel veritabannn en nemli yan, tablolardan olumasdr. Daha nemli yan da bu tablolarn birbiri ile ilikilerinin olmasdr. VTYS lere ilikisel denmesinin anlam budur.

35

VER TABANI YNETM SSTEMLER I

Alako BURMA

Bir veritabannda ilikiden sz edebilmek iin en az iki tablonun yer almas gerekir ve bu iki tablodaki verilerin birbiri ile bir ekilde ilikilendiriliyor olmas gerekir. Yine bir nceki rnek olaya dnecek olursak, Kitap listesi ile dnler listesi arasnda bir iliki vardr. nk Kitap listesinde olmayan bir kitap bizde yoktur ve dn verilemez. Haliyle de mantk olarak bu trden bir dn bilgisi dn listesinde yer almamaldr. Olaya tersten baklacak olursa, geri dnmeyen bir kitap hakkndaki detaylar renilmek istenildiinde dn listesindeki kitap numaras alnr. Daha sonra ayn numaraya karlk gelen kitap, Kitap tablosundaki satrda bulunur. Bu satrdaki bilgiler, bize kitap hakkndaki tm detaylar verir. Kitap tablosundaki kitapNo alan aday anahtar (indeks)tir. Odunc tablosundaki KitapNo alan, yabanc anahtar (foreign key) alandr, nk Kitap tablosundaki bir kayd sembolize etmektedir. Tm bunlarn ardndan VTYS leri hakknda zet olarak diyebiliriz ki; Bir Ilikisel Veritaban Ynetim Sistemi tablolar stnde u ilevi yerine getirmek zorundadr. 1.Seme : Herhangi bir tabloda (listede) yer alan tm bilgileri gsterebilmelidir. rnein, Kitap tablosunun bir dkmn verebilmelidir ya da kitap listesinden baz kitaplarn bilgilerini getirip dier bir ksmn getirmeyebilmelidir. 2. zdrme : Herhangi bir tablodan sadece belli stunlarn yer ald seme ilevlerini yerine getirebilmelidir. rnein, can isteyen bir kullanc kitabn sadece adn ve ka sayfa olduunu seebilmelidir. 3.Birletirme : Birden fazla tabloda yer alan bilgiler, yeri geldiinde tek bir tabloymu gibi sunulabilmelidir. rnein, dn alnp da geri getirilmeyen kitaplarn adlar ve kimler tarafndan alnd bir tek tabloymu gibi gsterilebilmelidir. VTYS bu 3 temel ilevi yerine getirebilmelidir. Bunlardan , ikisi veya biri ayn anda yerine getirilmek durumunda kalnabilir. rnein, sayfa says 200 den byk kitaplarn sadece ismi grlmek istenirse, hem izdrme hem de seme ilemine ihtiya duyulur. Veriler ve depolanma ekilleri farkl olabilir. nemli olan, VTYSnin SQL ile ynetilebilir olmasdr. Bylelikle, verilerin bilgisayarda fiziksel olarak ne ekilde depoland, kullanc bilmek zorunda deildir. Yani, kullanc temel veri saklama ilem ve yntemlerinden izole edilmi olur. Kullancnn verileri etkili olarak kullanmas iin bilmesi gereken tek ey SQL olmaldr. SQL ilerleyen blmlerde anlatlmtr.

36

VER TABANI YNETM SSTEMLER I

BLM 5

Alako BURMA

5. RNEK BR VER TABANI TASARIMI ve NORMALZASYONU


Bir veri taban ile proje yaplrken iin en nemli aamasnn veri tabannn tasarlanmas olduundan ve bunu yaparken hangi kurallara gre yaplacandan bahsedilmiti. 4.blmde veri taban tasarmnda tablolar ve stunlardan bahsedilmi, normalizasyon ile de tablolara kaydedilecek bilgilerin zelliklerinden ve hazrlanma kurallarndan bahsedildi. Bu ders notu kapsamnda veri taban ynetim sistemleri ve SQL komutlar anlatlmaktadr. Bu blmde rnek bir veri taban tasarlanacak ve veri taban normalizasyon ilemi yaplacaktr. Tanmlanan ve veri girii yaplan bu veri taban ilerleyen blmlerde kullanlacak ve rneklerle konularn daha iyi anlalmas salanacaktr. rnek proje bir iyerinde alan personel ve personele ait meslek, allan birim ve maa ilemlerini kapsamaktadr. Burada personel projesindeki ilere ait bir ksm ilemler rnek olarak verilecektir. Unutulmamaldr ki bir iyerindeki personel ilemleri ok daha fazla tablo, stun ve ilemlerden meydana gelmektedir. Burada konunun anlalabilmesi asndan projenin bir ksm zerinde allacaktr. 5.1. rnek Personel Projesi Veri Taban Tasarm rnek projemizin ad personel ileri ve projemiz 4 adet tablodan meydana gelmektedir. Bunlar; Personel Bilgileri, Personelin alt Birimler, Personele Ait Meslekler ve Personele Ait Maa bilgilerinin tutulduu tablolar. Bu tablolar ve bu tablolara ait alan (stun) bilgileri aada listelendii gibi dzenlenmitir. TabloAd Personel Meslekler allanBirim Maaslar TabloAlanlar SicilNo,Ad,Soyad,MeslekKodu, BirimKodu, DoumTarihi, Adres MeslekKodu, MeslekAd BirimKodu, BirimAd SicilNo, MaasAy, Maas

Veritabanlarnda tablolar matris yapsnda tutulurlar. Stunlar tablo alanlarn, satrlar ise tablodaki kaytlar (record) tekil ederler. Ders notlarnn ilerleyen blmlerinde tablolar matris yapsnda grntleneceklerdir. Burada normalizasyon kurallarna gre bilgiler ayr tablolarda tutulmulardr. Meslekler ve allanBirim iin iki ayr tablo tanmlanmtr. Bunun nedeni personel tablosunda meslek ve allan birim alanna bilgi yazlrken veri btnl ve standart salanabilmesi iindir. Bu tr bilgi girilerinde ayr tablolarn tanmlanmas gerektii 3.normalizasyon kuralnda sylenmiti. Personel tablosunda kiiye ait meslek bilgisi de veri btnl ve standardn salanmas asndan kodlanarak yazlacaktr. Veri tabannda bu kural ok nemlidir. 39

VER TABANI YNETM SSTEMLER I

Alako BURMA

Meslekler personel tablosuna yazlrken kod eklinde tanmlanmayp; personel tablosunda isim olarak yazlsayd bilgilerde sorun yaanrd. rnein : Mdr yardmcs meslei yazlrken kullanc bu bilgiyi kendine gre ksaltarak veya byk kk harf dikkate almayarak yazabilir. Bir kii iin Md.Yar, yazarken bir dieri iin M.Yard. bir dieri iin Mdr Yardmcs veya MDR YARDIMCISI yazabilir. Veri tabannda bu 4 bilgi birbirinden farkl bilgilerdir. Daha sonra Mdr Yardmcs olan kiilerin sorgusu yaplacak olursa bu 4 bilgi birbirinden farkl olaca iin doru bir sonu elde edilemeyecektir. Halbuki bu alana mdr yardmcs iin 2 gibi bir kodlama yaplr ve bu alana 2 bilgisi yazlrsa meslei 2 olanlarn sorgusu iin elde edilecek veriler doru olacak ve ekrana 4 kiiye ait bilgi gelecektir. Bu nedenle Meslekler tablosu ayr yaratlmaldr. Ayn ey allanBirim iinde yaplm ve bu alan da kodlanmtr. rnein : alt birim Bilgi lem olan personele ait bilgiler tabloya yazlrken kullanc bunu da kendine gre ksaltarak veya byk kk harf dikkate almayarak yazabilir. Bir kii iin Bilgi lem, yazarken bir dieri iin B.lem bir dieri iin BLG LEM veya Bil.l. yazabilir. Veri tabannda bu 4 bilgi birbirinden farkl bilgilerdir. Daha sonra Bilgi lem de alan kiilerin sorgusu yaplacak olursa bu 4 bilgi birbirinden farkl olaca iin doru bir sonu elde edilemeyecektir. Halbuki bu alana Bilgi lem iin 3 gibi bir kodlama yaplr ve bu alana 3 bilgisi yazlrsa alt birim 3 olanlarn sorgusu iin elde edilecek veriler doru olacak ve ekrana 4 kiiye ait bilgi gelecektir. Meslek ve allan birim iin ayr tablo tanmlanmasa ve bu alanlar kodlanmadan personel tablosu alan ierisine dahil edilmi olsayd tablo yaps aadaki gibi olurdu.

ekil 5.1.1. Personel tablosu iin ayr tablo tanmlanmam hali

ekil 5.1.2. Personel tablosu iin ayr tablo tanmlanm hali

40

VER TABANI YNETM SSTEMLER I

Alako BURMA

Bir dier zellikte maa tablosunda maasAy bilgisinin olmasdr. Bu bilgi maan hangi ay iin dendii bilgisidir. Bir personel bir ylda birden fazla maa alacana gre ilgili maann hangi aya ait olduu bilgisi bu alanda tutulacaktr. Bu alandan; istenilen personele ait birden fazla ay maa bilgisi elde edilebilir. rnein; personelin ilk 6 ay ald toplam maa miktar bulunabilir. Ya da bir ylda 10 milyardan fazla maa alan personel listesi elde edilebilir. Bu sorgular SQL dili ile yaplacaktr. Buradan u sonu karlmaldr : Veritabannda meslek, allan birim gibi birok bilgi iin standart olan bilgi girii yaplacak alanlarda kodlama yaplmaldr. Bu hem bilgilerin daha ksa srede yazlmasn salayacak hem de verilerde btnlk ve tutarllk salayacaktr. Bu kodlamalar numara veya harflerden veya her ikisinin karmndan oluabilir. Bir nceki blmde anlatlan 3.Normalizasyon kuralndaki kitap iin cilt tipi alan gibi. Cilt tipinde kitap iin K, deri cilt iin D ve spiral cilt iin S kodlamasnn kullanlmas gibi. Dikkat edilmesi gereken nokta kodlamann ksa karakterlerden olumasdr. Ders notlarnda; tablolar ve tablo alanlar tabloAd.TabloAlan eklinde ifade edilecektir. rnek; personel tablosundaki SicilNo alan Personel.SicilNo gibi. Buradaki bir dier noktada farkl tablolardaki ayn ama iin kullanlan alanlarn ayn isimle isimlendirilmesidir. Bu konu ile ilgili bilgi Farkl tablolardaki iki alan ayn veriyi tutuyorsa, iki alana da ayn ad vermek, karkla yol aabilir gibi grnse de aslnda daha dzgn bir yap ortaya kar. fadesiyle daha nce aklanmt. Personel tablosundaki SicilNo ile Maaslar tablosundaki SicilNo ayn isim ve ayn amala kullanlmtr. Personel tablosundaki MeslekKodu ile Meslekler tablosundaki MeslekKodu ayn isim ve ayn amala kullanlmtr. Yine Personel tablosundaki BirimKodu ile allanBirim tablosundaki BirimKodu ayn isim ve ayn amala kullanlmtr. Aada projemizdeki tablolar arasndaki iliki (balant) verilmitir. Tablo Ad.Alan Personel.SicilNo Personel.MeslekKodu Personel.BirimKodu likili TabloAd.Alan Maaslar.SicilNo Meslekler.MeslekKodu CalslanBirim.BirimKodu

Projedeki bir dier tanmlanmas gereken nokta da tablo iin tanmlanan alanlarn (stunlarn) hangi veri tipinden ve ka karakterden oluacadr. Sicil Numarasnn rakamlardan, ad ve soyadn harflerden, doum tarihinin tarih bilgisinden, adresin hem rakam hem de harflerden oluacann tanmlanmas gibi. Bu tanmlamalarn kullanlan veri tabanna gre yaplmas gerektii ve her veritabannda bu tanmlamalarn farkl olduu 3.blmde anlatlm ve MS Access, MySql ve Oracle veri taban veri tiplerinden rnekler verilerek anlatlmt. rnek veri tabanndaki tablolar, tablo alanlar ve veri tipleri aadaki gibidir. Bu tablolarn nasl yaratld ve tablolar zerinde hangi ilemlerin ve nasl yaplaca sonraki blmlerde anlatlmtr. 41

VER TABANI YNETM SSTEMLER I

Alako BURMA

TabloAd Personel

TabloAlanlar SicilNo, Ad, Soyad, MeslekKodu, BirimKodu, DoumTarihi, Adres MeslekKodu, MeslekAd BirimKodu, BirimAd SicilNo, MaasAy, Maas

Veri Tipi Say(4) Karakter(15) Karakter(15) Say(3) Say(3) Tarih Karakter(25) Say( 3) Karakter(20) Say(3) Karakter(20) Say(4) Say(2) Karakter(12) Tablolar arasndaki ilikiyi belirten izgi

Meslekler allanBirim Maaslar

ekil 5.1.3. rnek Personel Projenin MS Access deki diyagram Drt tablo ve tablolar arasndaki likiler yukardaki ekilde gsterilmitir. Mavi izgi ile tablolar arasndaki ilikiler gsterilmitir. Ayn diyagramn bir benzeri SQLServer veya Oracle veri tabanlarnda da hazrlanabilir. Bundan sonraki blmlerde bu tablolar, tablo alanlar, veri tipleri ve ilikileri zerinde ilem yaplacaktr.

42

VER TABANI YNETM SSTEMLER I

BLM 6

Alako BURMA

6. SQL VER LEME DL


SQL insanlarn veritaban sistemleri ile konumasn salayan popler bir dildir. Bu dil tm veritaban programlarnda kullanlabilmektedir. Bu dil sayesinde, bir veritabanndan kaytlar alnabilir, deitirilebilir ya da yeni kaytlar eklenebilir. SQL bir dildir; ancak bir programlama dili deildir. Program gelitirme aamasnda SQL den faydalanlr, ancak tek bana bu i iin yeterli deildir. PHP, Asp, Visual Basic, Delphi, C, c++ gibi bir ok programlama dili SQL komutlarn desteklemektedirler. Yani bir program gelitirme aamasnda; SQL komutlarn bilmek gerekmektedir ama SQL tek bana bir programlama dili olmad iin ayrca bir programlama diline de ihtiya duyulmaktadr. 1983 l yllarda IBM laboratuarlarnda yaplan almalarda SQL (Structural Query Language) standartlar tanmlanm ve ardndan 1987 de ISO ardndan da ANSI tarafndan bir standart olarak kabul edilmitir. Daha sonra, bu standartlar erevesinde bir ok veritaban ynetim sistemleri gelitirilmitir. Bunlardan belli ballar, Oracle, Sybase, MS SQL Server, Informix ve MySQL dir. Bu VTYS lerin ilerin daha kolay yrmesi iin kendi adlarna standart dilden uzaklaan taraflar vardr. Ancak genel ilemlerde kullanlan dil tm veri taban programlar iin de ortaktr ve bu SQL dir. VTYSde saklanan veriler SQL komutlar ile insanlarn istekleri erevesinde iler ve yeniden ekillendirilir. 6.1. SQL Nedir? Alm Structured Query Language yani Yapsal Sorgulama Dili olan SQL, veritaban ilemleri ile ilgili komutlardan oluan bir dildir. Bu dil ile veri taban zerinde; veritabannn kendisini oluturmak, tablo, indeks, kullanc oluturmak gibi komutlar ve kayt ekleme, silme, dzeltme gibi ilemler yaplabilir. SQL dilindeki komutlar Pascal, C, Visual Basic, Delphi ve benzeri dillerdeki fonsiyon ve prosedr oluturarak bir program yazmaktan biraz farkldr. Yani kullanc SQL kullanrken fonksiyon ve prosedr yazamaz. Yine SQL kullanmnda artl ifadeler ve dallanmalar bulunmaz. Yani kullanc dier programlama dillerindeki f, Case, next, do gibi ifadeler kullanamaz. artl ifadeler, dngler, karlatrmalar SQL de bulunmaz. SQLde kullanlamayan procedr, fonksiyon, artl ifadeler, dngler ve karlatrmalarn eksikliini giderebilmek iin; Oracle PL/SQL (Programming Language/SQL), MS SQLServer ve Sybase de T-SQL dilini gelitirilmitir. Oracle tarafndan kullanlan PL/SQL komutlar ile T-SQL bir ok noktada hemen hemen ayndr ve SQLde kullanlamayan procedr, fonksiyon, artl ifadeler, dngler ve karlatrmalar kullanlabilmektedir, PL/SQL ve T-SQL if,case,for..next gibi programlama iin gereken ilemleri kullanmay olanakl klar.

43

VER TABANI YNETM SSTEMLER I

Alako BURMA

Grld gibi SQL karar yaplar, dngler ve benzeri gibi bir programlama diline zg yetilerden yoksundur. Ancak bir ok VTYS'de bu yetiler Transact-SQL veya PL/SQL gibi dil tanmlar ile bir noktaya kadar desteklenmitir. Verilerin hacmi arttka daha gelimi VTYS'lere ihtiya duyulur. PL/SQL ve T-SQL sadece ierisinde SQL komutlar kullanlabilen bir dildir. Yani SQLin yapsn deitirmemitir. Komut modunda yazlan bir SQL cmlesi alnp PL/SQL ve T-SQL bloklar arasna yazlabilir. Veri taban programlar tm uygulamalarda SQL kullanmay esas almtr. Kullanc veri taban rnlerini kullanarak yapt tm ilemlerin arkasnda SQL komutlarn altrr. SQLin veritaban ilemleri iin kullanlan komutlar 5 kategoride toplanabilir: Veri sorgulama komutlar Tabloya veri ekleme,deitirme ve silme komutlar Veritaban nesneleri oluturma,deitirme ve silme komutlar Veritabanna ve veritaban nesnelerine eriimi kontrol etme komutlar Veritabannn tutarlln ve btnln koruma komutlar

SQL(Structred Query Language) ile bir ok yerde kastedilen ey, ANSI 'nin 1992 ylnda yaynlad standarttr. Ancak SQL bir programlama dili deildir. Bir kullanc arayz tanmlayamaz ya da bir dosya ynetimi yapamaz. Temelde 3 alt ifade grubundan oluur. 1. Veri Tanmlama Dili : (Data Defination Language = DDL) : Bu gruptaki komutlar kullanlarak, tablo, trigger, view gibi veritaban nesneleri tanmlanr. temel ifade, CREATE ile bir nesne tanmlanr, ALTER ile nesne stnde deiiklik yaplr ve DROP ifadesi ile bir nesne silinebilir. 2. Veri leme Dili : (Data Manuplation Language = DML) : Veri stnde dzenlemeler yaplr. Bu alt dil bir tabloya veri ekleme(INSERT), silme(DELETE) ve gncelleme(UPDATE) yapmann yan sra verileri semek ve raporlamak iin SELECT ifadesi ve SELECT ifadesi ile birlikte kullanlan, INTO, FROM, WHERE, LIKE, GROUP BY, ORDER BY, HAVING... gibi ok yan ifade vardr. Bu ifadelere ait rnekleri bir ok yerde bulmak mmkndr. 3. Veri Kontrol Dili : Temel 2 ifadeden oluur. VTYS'de tanml Roller ve kullanclar iin ifade ve nesne kullanma izni tanmlar. Eriim(GRANT) ve eriim kaldrma(REVOKE) ifadeleri ile bu haklar ayarlanr. Oracle, SQL Server 2000 gibi VTYS'lerinde bunlara ek olarak eriim engelleme(DENY) ifadesi de yer almaktadr. 6.2. Veri Taban Programlarnda ve SQL de Deiken Tanmlama SQL de tablo adlar, alan(field), veritaban dosyas, indeks vb. isimler deiken isimleridir. Genel deiken isimlendirme kurallar burada da geerlidir. 1. Deiken isimleri,harf ile balamak zorundadr. 2. Deiken isimleri,harf,rakamlar ve _ dan olumak zorundadr.

44

VER TABANI YNETM SSTEMLER I

Alako BURMA

3. Deiken isimlerinde Trke noktal harflerin (,,,,,,,,,,,) ilerde dil problemi yaanmamas asndan kullanlmamas gerekir. 4. Komut olarak ayrlm kelimeler deiken ad olamazlar (select, like, not, or, delete, update vs.) 5. SQL byk-kk harf duyarl deildir. 6. Deiken isimlerinde boluk yer alamaz. Deiken isimlendirme notasyonlar: 1. Deve notasyonu : degiskenAdi eklinde yazlr. 2. Alt izgi notasyonu : degisken_adi eklinde yazlr. Veritaban programlamada, byk-kk harf duyarll olmadndan genellikle alt izgi notasyonu kullanlr ve deiken adlar kk harf olarak verilir. Ancak bu bir kural olmayp sadece okunurluu artrmak iin programclarn bir ou tarafndan tercih edilen bir yoldur. NULL mu, boluk mu? Bir kayt iin, alanlardan biri hi girilmedii iin bo olabilir veya bilgisayardaki space tuunun karl ASCII deeri girilmi olabilir. Space (ASCII-32 karakteri) tuuna baslarak elde edilmi boluk ile daha hibir bilgi girilmemi olan boluk bilgisayar dilinde birbirinden farkldr. Daha nce hibir ey girilmemi alan iin NULL terimi kullanlr. 6.3. SQL Program altrlmas ve Yazm Kurallar SQL programn altrabilmek iin bilgisayara veri taban program ve daha sonra bu veritaban ile balant salayacak zel olarak bir SQL program yklenmelidir. Oracle, Sybase gibi byk veri taban programlar client / Server (istemci / Sunucu) yapda altklar iin server zerine yklenen veritaban programlarndan baka kiisel almalar iin zel PC programlar da vardr. Veritaban program yklenirken SQL i de ykleme seenekleri vardr. Bilgisayara buradan veri taban program ile SQL program ayn anda yklenebilir. Genelde izlenen metot budur. Bu ders notu kapsamnda rnekler ORACLE veri tabannda hazrlanm ve SQL Oracle veri taban ile kullanlmtr. Bilgisayara Personel Oracle 8 ve SQL yklenmitir. Buradaki 8 rakam veri tabannn versiyon numarasdr. Oracle u anda 11. versiyonunu piyasaya srmtr. Ders notlar kapsamnda Oracle 8 ile alacaz. Veritabannn balatlmas ve SQL i renmek asndan pek bir deiiklik olmayan bu versiyon kullanlmtr. Oracle programnn bilgisayara yklenme ileminden sonra programlar ksmnda iki adet alt seenek oluur. Bunlar : 1. Oracle8 Personel Edition ve onun alt seenekleri : Burada veritaban ve ynetimi ilemleri yaplabilir. Veri tabannn balatlmas, durdurulmas, yedeinin alnmas, veri tabanndaki bozulmalarn dzeltilmesi, veri taban ynetim ekran gibi.

45

VER TABANI YNETM SSTEMLER I

Alako BURMA

ekil 6.3.1. Oracle8 Personel Edition Ekran 2. Oracle for Windows95 ve onun alt seenekleri : Burada veritabanna farkl metotlarla balanmak iin gereken ayarlamalarn yaplabilecei programlar, yardm dosyalar ve SQL ile ilgili programlar bulunur. SQL Plus 8.0 program SQL yazmak iin kullanacamz program olacaktr. 8.0 programn versiyonudur. SQL ile almaya balanmadan nce veritaban 1.seenekten balatlmaldr.

ekil 6.3.2. Oracle for Windows95 Ekran SQL almak iin Bu ekrandan SQL Plus 8.0 altrldnda ekrana

46

VER TABANI YNETM SSTEMLER I

Alako BURMA

ekil 6.3.3. SQL Plus 8.0 Balang Ekran Bu ekranda ilgili alanlara ait bilgiler yazldktan sonra OK tuuna basldnda SQL alma ekran karmza gelir. Artk Veri tabanna balant salanmtr ve SQL cmlecikleri yazlarak altrlabilir. Bu alanlara nelerin yazlaca Veri Taban Yneticisi tarafndan ayarlanmaktadr.

ekil 6.3.4. SQL Plus 8.0 alma Ekran

47

VER TABANI YNETM SSTEMLER I Bu ekranda SQL> yazsnn hemen yanna komutlar yazlr.

Alako BURMA

ekil 6.3.5. SQL Plus 8.0 Komut Yazlm Ekran Bir komut yazlrken birden fazla satra komutun istenilen bir yerinden blnerek yazlabilir. Yukardaki ekranda olduu gibi birinci satra bir eyler yazdktan sonra ENTER tuuna baslarak istenirse alt satra geilir. Alt satra geerken satr numarasn belirten 2 rakam kendiliinden ekrana gelir ve 2.satr komutlar yazlmaya devam edilir. Tekrar alt satra geilmek istenildiinde ENTER tuuna baslr, ekrana 3 yazs gelir ve yazma ilemine bu ekilde devam edilir. Komut yazm ilemi bittikten sonra en sona noktal virgl (;) yazlarak ENTER tuuna baslr ve komut altrlr. SQL yazma ileminin bitip komutun altrlmaya balayacan noktal virgl iaretini grdkten sonra anlar ve bu iaretten sonra yazlan hi bir eyi dikkate almadan komutu altrr. Komutu altrdktan sonra yapt ile ilgili ekrana bilgi mesaj verir ve tekrar SQL> konumuna gelir. SQL komutlar bu ekilde yazlmaya devam edilerek ilemler yaplr. SQL komut satrnda komutlar tek tek yazmak yerine bu komutlar herhangi bir editrde yazlp kopyala-yaptr ile veya dosya ad yazlarak da SQL de altrlabilir.

ekil 6.3.6. NOTEPAD ile yazlm SQL Komut Ekran

48

VER TABANI YNETM SSTEMLER I

Alako BURMA

Yukardaki rnekte olduu gibi NOTEPAD editr programna yazlan SQL komut satrlarnn hepsi kopyala komutu ile alnarak SQL programna yaptr yaplabilir ve komutlarn direk almas salanabilir. NOTEPAD ile yazlarak yaplan kopyalama ilemi zellikle uzun komutlarn yazlmas ve iletilmesinde byk pratiklik salar. nk SQL ortamnda yanl yazlm satrlar iin ENTER tuuna bastktan sonra yukar veya aa doru olan satrlara gidi veya geri dn mmkn deildir. SQL de bu yanllklar dzenlemenin farkl yntemleri vardr. Bu da biraz zaman alcdr ve SQLin baz kullanm zelliklerini bilmek gerektirir. NOTEPAD ile yazmak ve daha sonra bunu kopyalayarak kullanmak daha pratik bir yntemdir. Hangi metodun kullanm tercihi kullancnn isteine baldr. Not : Oracle ve Sybase gibi baz veritaban programlarnda her bir SQL cmleciinin sonuna noktal virgl (;) konulmas gerekir. Microsoft tabanl sistemlerde bu trden bir zorunluluk bulunmamaktadr.

49

VER TABANI YNETM SSTEMLER I

BLM 7

Alako BURMA

7. TEMEL SQL KOMUTLARI-I


SQL (Structured Query Language) kendisi bir programlama dili olmamasna ramen bir ok kii tarafndan programlama dili olarak bilinir. SQL herhangi bir veri taban ortamnda kullanlan bir alt dildir. (sub language) SQL ile yalnzca veri taban zerinde ilem yapabiliriz. SQL cmlecikleri kullanarak veri tabanna kayt ekleyebilir, olan kaytlar deitirebilir, silebilir ve bu kaytlardan listeler oluturabiliriz. SQL cmlecikleri genellikle ayn olmakla birlikte farkl veri taban ortamlarnda deiebilmektedir. Ayrca veri tabanlarnn kendilerine zg sql komutlar da vardr. Bu blmde her ortamda geerli olan temel sql komutlar retilecektir. imdi 5. blmde tasarladmz rnek personel veritabann SQL ile kullanalm. rnek Veri Tabanmzdaki tablolar ve tablolara ait alan ile alanlarn veri tipleri aada listelenmitir. TabloAd Personel TabloAlanlar SicilNo, Ad, Soyad, MeslekKodu, BirimKodu, DoumTarihi, Adres MeslekKodu, MeslekAd BirimKodu, BirimAd SicilNo, MaasAy, Maas Veri Tipi Say(4) Karakter(15) Karakter(15) Say(3) Say(3) Tarih Karakter(25) Say( 3) Karakter(20) Say(3) Karakter(20) Say(4) Say(2) Karakter(12)

Meslekler allanBirim Maaslar

7.1. CREATE (Yarat) Komutu Database, tablo, index, view, vb. veri taban objelerini yaratmada kullanlan komuttur. SQL komutlar ile veri tabannda ilem yaplabilmesi iin nce veri taban sonra da veri tabannda kullanlacak tablolar tanmlanmaldr. Veri tabannn yaratlmas aada verilmitir. CREATE DATABASE database_name [ON {DEFAULT | database_device} [= size] [, database_device [= size]]...] [LOG ON database_device [= size] [, database_device [= size]]...][FOR LOAD]

50

VER TABANI YNETM SSTEMLER I database_name : Bu yaratlacak olan veri tabannn ismidir.

Alako BURMA

ON : Yaratlacak olan veri tabann hangi device zerinde yer alacan belirten bir parametredir. Burada ayn zamanda bu device zerinde size (alan,l) parametresi ile database'in ne kadar yer kaplayacan belirtilmi olur. Eer device tanmlanmazsa SQL server default device zerinde 5 mb bir veri taban yaratr. Bu parametre ierisinde birka device ismi kullanlarak veri tabannn bir ka device zerinde yer almas salanabilir. LOG ON : Yaratlacak olan veri tabann log'unun hangi device zerinde yer alacan belirten bir parametredir. Burada ayn zamanda bu device zerinde size (alan, l) parametresi ile database'in log'unun ne kadar yer kaplayaca belirtilir. Eer device tanmlanmazsa SQL server default device zerinde bir log tutar. Bu parametre iinde birka device ismi kullanlarak veri taban log'unun bir ka device zerinde yer almasn salanabilir. rnek 1 : CREATE DATABASE personel_isleri Bu komut ile SQL Server zerinde personel_isleri isimli bo bir database yaratlm olur. Bu disk zerinde fiziksel bir isimdir ve yaratlacak tablolar bu isimli veritabannn altnda yaratlacaktr. Daha sonra bu veritaban zerinde verilerin yazlaca tablolar tanmlanr. Tablo yaratmak iin de create komutu kullanlr. Yazl aadaki gibidir. CREATE TABLE tablo_ad (stun_ad_1 veri_tipi, stun_ad_2 veri_tipi, ..........); SQL programnda Create komutu ile meslekler tablosu aadaki gibi yaratlr.

ekil 7.1.1. Tablo Yaratlmas Ekran-1 Tablo yaratlm ve tablo yaratld mesaj alnmtr. SQL bilgisayara kurulurken dil seenei olarak Trke seildii iin ekrandaki program men seenekleri ve Tablo Yaratld bilgi mesaj ekrana Trke olarak gelmitir. Dil olarak ngilizce seilmi olsayd ekran grnts aadaki gibi olurdu. Burada tablo yaratld deil Table created bilgi mesaj ve ngilizce men seenekleri bulunmaktadr. 51

VER TABANI YNETM SSTEMLER I

Alako BURMA

ekil 7.1.2. Tablo Yaratlmas Ekran-2 Tablo yaratlrken yazlan cmlelerde yazlm yanl yaplrsa aadaki gibi hata mesaj alnr ve komut almaz. Buradaki hata create komutunda her bir tanmlanan alanlar arasna virgl konulmas gerektii halde 2.satr sonuna virgl iareti yazlmas unutulmutur.

ekil 7.1.3. Tablo Yaratlmas Yanl Yazm Ekran Aadaki ekranda CalisilanBirim, maaslar ve personel tablolar SQL komutlar ile yaratlmtr. Personel tablosu yaratlrken (SicilNo number(4) NOT NULL, ifadesi kullanlmtr. NOT NULL ifadesi tabloya bilgi yazlrken bu alann bo braklamayaca, muhakkak bilgi yazlmas gerektii durumlarda kullanlr. Kullanc bilgi girii yaparken Personel SicilNo alann bo brakamaz ve muhakkak bir deer yazmak zorundadr. Bu tanmlama ile veri tabanndaki bilgilerin tabloyu tanmlama aamasnda doru yazlmas salanabilir. Burada NOT NULL ifadesi kullanlmam olsayd; kullanc personel sicil no alann bo brakabilirdi. Sicil nosu olmayan bir personel olamayaca iin kullancya hata yapma imkan verilmi olurdu. Bu durumda kullancya bo geme izni vermediimiz iin oluabilecek hatay batan engellemi oluruz. Not : SQL komutlar iin oracle veritaban kullanldndan veri tipleri Oracle veri tipleridir. Char yerine varchar2 veri tipi kullanlabilir. Oracle veri tabanna has olan bu deiken tipinde ayrlan yer kadar deil bu alana yazlan karakter says kadarlk alan veri tabannda yer tutar. Dolays ile diskten yer kazanlacaktr. 52

VER TABANI YNETM SSTEMLER I

Alako BURMA

ekil 7.1.4. Tablo Yaratlmas Ekran-3 7.2. ALTER (Dzenle) TABLE Komutu Daha nceden oluturulmu bir tablonun yapsn deitirmek iin ALTER TABLE komutu kullanlr. ALTER TABLE tablo_ad ADD | MODIFY | DROP (<stun ad> veri tipi <stun kstlamas>) ENABLE ifade1 DISABLE ifade2 ALTER komutuyla tablolara yeni bir alan ve kstlama eklenebilir, var olan alan ve kstlamalarn durumu deitirilebilir veya tablodan kstlamalar silinebilir. ALTER TABLE tbl_ogr ADD CONSTRAINT cst_Bolum FOREIGN KEY(Bolum) REFERENCES usr_gazi.tbl_bol(BolKod); Yukardaki rnekte tbl_ogr adl tablonun yaps deitiriliyor. Bir baka kullancnn bir tablosu ile iliki kuruluyor.

53

VER TABANI YNETM SSTEMLER I

Alako BURMA

ekil 7.3.1. Tablo Yapsnn Deitirilmesi Ekran Bu rnekte meslekler tablosunun MeslekAdi alannn uzunluu 20 den 10 karaktere drlmtr. Kullanc bu alan iin 10 karakterden fazla bilgi yazamaz. 7.3. DROP (Sil) TABLE Komutu DROP TABLE table_name [CASCADE CONSTRAINTS] Bir Tabloyu silmek iin DROP deyimi kullanlr. Keli parantez ierisindeki tanm kullanlrsa mater-detay ilikili tablolarda master tablo silinince detay tablolarnda otomatik olarak silinmesi salanr. Eer bu seenek kullanlmazsa dier tablolarla ilikisi bulunan bir tablo silinemez. Tablo ancak ilikiler kaldrldktan sonra silinebilir.

ekil 7.3.1. Tablo Silinmesi Ekran 7.4. DESCIRIBE Komutu Bir tablonun yapsn grmek iin DESC[IRIBE] komutu kullanlr. Bu komut ile tanmlanan tablolarn alan bilgileri alnr. Tablo alanlar, alanlarn veri tipleri unutulduunda veya kontrol edilmek istenildiinde ska kullanlan bir komuttur. DESC table_name 54

VER TABANI YNETM SSTEMLER I

Alako BURMA

ekil 7.4.1. Tablo Yapsn Grntleme Ekran 7.5. INSERT (Ekle) Komutu Bir tabloya bilgi eklemek iin kullanlan komuttur. Genel kullanm ekli aadaki gibidir ; INSERT INTO table_name VALUES (deger1, deger2, deger3,...)

Eer sadece belirli alanlara (stunlara) deer yazlmas isteniyorsa INSERT INTO komutu aadaki gibi de kullanlabilir. Stunlara yazlan alanlarn deerleri saylardan oluuyor ise, say direk olarak yazlmal, karakterlerden oluuyor ise ifade tek trnak iareti arasna alnarak yazlmaldr. Her alan iin yazlacak deerler tablodaki stun srasna gre ve her bir deer yazldktan sonra aralarna virgl iareti konularak yazlmaldr. INSERT INTO table_name ( stun_ad_1, stun_ad_2, ..) VALUES(deer1, deer2, );

ekil 7.5.1. Personel Tablosuna Kayt Ekleme Ekran

55

VER TABANI YNETM SSTEMLER I

Alako BURMA

Aada personel tablosuna INSERT komutu ile kayt eklerken yaplan hatalar ve ekrana gelen bilgi mesajlarndan rnekler verilmitir. Hatann olduu yere * iareti otomatik olarak gelir ve hatann hangi satrda olduu ve hatann ne olduuna dair bir aklama satr ekrana gelir. Aada hata mesaj dikdrtgen kutu ierisine alnmtr.

ekil 7.5.2. Personel Tablosuna Kayt Ekleme Hata Ekran-1 Burada personelin doum tarihi iin yazlan deer yanl formatta yazlmtr.

ekil 7.5.3. Personel Tablosuna Kayt Ekleme Hata Ekran-2 * olduu noktada bir adet virgl fazla yazlarak yazlm yanl yaplmtr.

ekil 7.5.4. Personel Tablosuna Kayt Ekleme Hata Ekran-3 Personel tablosunda 7 tane stun(alan) olmasna ramen burada 6 tane deer yazlmtr. Bu nedenle yeterli deer yazlmam olduundan hata vermitir. 56

VER TABANI YNETM SSTEMLER I

Alako BURMA

ekil 7.5.5. Personel Tablosuna Kayt Ekleme Hata Ekran-4 Burada da adres alan iin 20 karakterlik yer ayrlmasna ramen daha uzun karakter saysnda bir adres deeri yazlmtr. Stun iin uzun bir deer hata mesaj alnmtr. Tabloya eklenecek kaytlar bu ekilde tek tek INSERT komutu ile yazlarak yaplr. imdi srasyla tablolarmza deerlerini yazalm. Burada her kayt iin INSERT komutu tek tek yazlabilecei gibi daha nceden de belirtildii gibi bunlar bir editrde yazlarak kopyala-yaptr yntemi de kullanlabilir. rnek aadaki gibidir.

ekil 7.5.6. Personel Tablosuna Kayt Eklemek iin Yazlan Personel.sql dosyas 57

VER TABANI YNETM SSTEMLER I

Alako BURMA

Bir dier metot ise bilgileri bir editrde yazp bunu dosya uzants .SQL olarak dosyaya kaydetmek ve daha sonra SQL> @ c:\tablolar.sql veya SQL> START c:\tablolar.sql Komutlar ile altrmaktr. Bu rnekte INSERT komutu iin tm tablo kaytlar yukarda ekran grnts olan personel.sql isimli bir dosyaya yazlp, daha sonra bu dosya yukarda anlatlan ekilde altrlarak kaytlarn daha kolay yazlmas salanmtr.

ekil 7.5.7. Personel.sql dosyasnn altrlarak Tabloya Kayt Eklenmesi 1 row created mesaj her bir insert komutundan sonra tabloya eklenen kayt in verdii mesajdr. Kaytlar sorunsuz eklenmitir.

ekil 7.5.8. Personel.sql dosyasndan Kopyala-Yaptr ile Kayt Eklenmesi Yukardaki ekranda personel.sql dosyasnda yazlan komutlar kopyala-yaptr metodu ile kullanlmtr.

58

VER TABANI YNETM SSTEMLER I

Alako BURMA

Kopyala-Yaptr yntemindeki en byk farkn; her bir komut satrnn ekranda grntleniyor olmasdr. Bu ekranda birde ERROR satr bulunmaktadr. Bu satr; soyad alan iin Yksek deeri yazlrken balangtaki trnak iaretinin unutulmu olmasdr. Personel tablosuna ait 30 adet personelin bilgilerinin girii tamamlanmtr.

ekil 7.5.9. Personel Tablosuna Ait Kaytlar.

ekil 7.5.10. Meslekler Tablosuna Ait Kaytlar. 59

VER TABANI YNETM SSTEMLER I

Alako BURMA

ekil 7.5.11. CalisilanBirim Tablosu Kaytlar ve Insert komutu ile kayt eklenmesi.

ekil 7.5.12. Maaslar Tablosuna Insert komutu ile kayt eklenmesi.

60

VER TABANI YNETM SSTEMLER I

Alako BURMA

ekil 7.5.13. Personele ait 1. ay Maaslar Tablosu Kaytlar.

Yukarda daha nce tanmlanan personele ait Maaslar tablosunun kaytlar bulunmaktadr. (Maaslar maas*100.000 olarak ksaltlmtr). Personel tablosunda 30 kii bulunmakta ama buna karlk 29 adet personel maa bulunmaktadr. 1 personelin maas bilgisi zellikle eksik girilmitir. Daha sonraki blmlerde buna ait dzenleme yaplacaktr.

61

VER TABANI YNETM SSTEMLER I

BLM 8

Alako BURMA

8. TEMEL SQL KOMUTLARI-II


8.1. SELECT (Se) Komutu Veri tabanndaki tablo veya tablolardan istenilen zellikteki verileri seip listeleme iin kullanlan komuttur. Genel kullanm aadaki gibidir. SELECT [ DISTINCT | ALL ] <stun(lar)> FROM <tablo ad (lar)> [ WHERE <art (lar)> ] [ GROUP BY <stunlar>] [ HAVING < grup kstlamas>] [ ORDER BY <stun(lar) [ ASC | DESC ]> ] Select komutundan sonra listelenmesi istenilen stunlarn isimleri aralarna virgl iareti konularak yan yana yazlr. Tablonun btn stunlarnn listelenmesinde * karakteri kullanlr. FROM dan sonra listeleme yaplacak tablo / tablolarn isimleri yazlr. Eer ayn sql cmlecii ile bir ka tablo zerinde ilem yaplmak istenirse tablo isimleri arasna virgl konulmaldr. Personel tablosundaki tm kaytlarn listelenmesi istenirse ;

ekil 8.1.1. Personel Tablosundaki Tm Kaytlarn Listelenmesi

62

VER TABANI YNETM SSTEMLER I

Alako BURMA

Tablo ierisinde istenilen bir arta uygun kaytlarn listelenmesi istenirse WHERE yardmc szc kullanlr ve szcn yanna gerekli art yazlr. Ayrca select szcnn yanna sadece listelenmesi istenilen alanlarn adlar yazlabilir. SQL dilinde where ifadesinden sonra yazlan artta karlatrlan alan bilgisi rakamsal ifade ise aynen yazlarak, karakter ise alan bilgisi tek trnak iareti arasna alnarak yazlmaldr.

ekil 8.1.2. Personel Tablosundan stenilen Kaytlarn Listelenmesi Yukardaki rnekte personel tablosundan sadece sicilno, ad, soyad ve adres alanlar listelenmitir.

63

VER TABANI YNETM SSTEMLER I

Alako BURMA

ekil 8.1.3. Personel Bilgilerinin Seilerek Listelenmesi-1 Sicil numaras 960 olan personel ait tm bilgiler listelenmitir. 8.1.1. SQL Operatrleri Her programlama dilinde olduu gibi SQL'de de operatrler bulunur. eit operatr mevcuttur. Karlatrma operatrleri, mantksal operatrler ve kmeleme operatrleri. Karlatrma operatrleri aadaki gibidir; a>X ... X... a'dan kk a<X ... X... a'dan byk a=X ... X... a'ya eit a=>X ... X... a'dan kk eit a<=X ... X... a'dan byk eit a<>X ... X... a'ya eit deil Mantksal operatrler ise AND, OR, NOT olarak verilebilir. Bu operatrler standart btn dillerde ayn olan operatrler olduu iin ayrca anlatlmayacaktr. Kmeleme operatrleri ise datalar zerinde gruplama yapmay salayan operatrlerdir. Bunlar Between, In, Like operatrleridir. Bu operatrlerin hepsi where ile birlikte kullanlmaldr.

ekil 8.1.1.1. Personel Bilgilerinin Seilerek Listelenmesi-2 Burada birimKodu 101 ve soyad Kantar olan personele ait sicilno, ad, soyad, birimKodu ve adres bilgileri seilerek listelenmitir. 64

VER TABANI YNETM SSTEMLER I

Alako BURMA

ekil 8.1.1.2. Personel Bilgilerinin Seilerek Listelenmesi-3 Between Aralkl sorgulama yaplmak istenildiinde kullanlan bir operatrdr. Burada sicil numaras 300 ile 500 arasnda olan personele ait sicilno, ad, soyad, birimkodu ve adres bilgileri between and deyimleri ile seilerek listelenmitir.

ekil 8.1.1.3. Personel Bilgilerinin Seilerek Listelenmesi-4 IN operatr ile belli bir kolonun kmesi verilerek ilerin daha kolay yaplmas salanr. Burada meslekKodu 1,2,3 ve 7 olan personele ait sicilno, ad, soyad, meslekKodu ve adres bilgileri IN operatr ile seilerek listelenmitir. SQL> select sicilno, adi, soyadi, birimkodu, adres from personel 2 where meslekkodu=1 or meslekkodu=2 or meslekkodu=3 or meslekkodu=7; IN operatr kullanlmadan bu komut yukardaki gibi de yazlabilirdi. Her iki komutta ayn ii yapar. Ama IN ile sorgunun yazlmas daha kolaydr. 65

VER TABANI YNETM SSTEMLER I

Alako BURMA

ekil 8.1.1.4. Personel Bilgilerinin Seilerek Listelenmesi-5 Like operatr iinde belli bir karakter dizisi bulunan kaytlara ulamak iin kullanlr. Like operatrnde % iareti kullanlr. Burada personelin ad ierisinde S harfi geen personele ait sicilno, ad, soyad, meslekkodu ve adres bilgileri Like deyimi ile seilerek listelenmitir. Eer art where adi like Se% olarak yazlm olsayd ad sadece Serpil ve Selim olan personel listelenirdi. rnek-1) SELECT * FROM personel WHERE adres LIKE '%stanbul%'; Bu sorgulama ile adres alannda stanbul geen kaytlar listelenir. rnek-2) SELECT * FROM personel WHERE adres LIKE '%stanbul'; Bu sorgulama ile adres alannn sonunda stanbul geen kaytlar listelenir. rnek-3) SELECT * FROM personel WHERE adres LIKE 'stanbul%'; Bu sorgulama ile adres alannn banda stanbul geen kaytlar listelenir. rnek-4) SELECT * FROM isci WHERE isciadi LIKE 'mu__%'; i tablosunda ad mu ile balayan kaytlarn listesi. rnek-5) SELECT * FROM isci WHERE isciadi LIKE 'mu___%'; i tablosunda ad mu ile balayan kaytlarn listesi.

ekil 8.1.1.5. Like Operatr ile Tablodaki Bilgilerin Seilerek Listelenmesi 66

VER TABANI YNETM SSTEMLER I

Alako BURMA

Bu rnekte _ alt tire iareti tek bir karaktere ve % iareti birden fazla karaktere karlk gelir. Birinci sorguda iki alt tire iareti kullanldnda 3 adet kayt listelenmi, ikinci sorguda alt tire iareti e karldnda iki kayt listelenmitir. nk ikinci sorguda istenen kaytlarn isciadi alannn uzunluu en az 5 karaktere karlm oluyor. 8.1.2. Order By Bu komut ile belirtilen stuna gre artan veya azalan bir sralama ile sorgulama yaplabilir. Sralama yaplacak olan alan saylardan oluuyorsa rakamsal deerler zerinden artan veya azalan sralama yaplr. Eer alan karakterlerden oluuyorsa sralama A dan Z ye veya Z den A ya gre bir sralama olacaktr. ASC : kullanarak kkten bye doru artan sralama yaplabilir. DESC : kullanarak bykten ke doru azalan sralama yaplabilir. Ancak ASC kullanmak zorunlu deildir. nk default sralama tipi ASC'dir. Ayn anda birka kolon zerinden de sralama yaplabilir. rnek-1) SQL> SELECT * FROM personel ORDER BY sicilno; Tm personel sicil numaras alanna gre kkten bye doru sralanr. rnek-2) SQL> SELECT * FROM personel ORDER BY sicilno ASC; Tm personel sicil numaras alanna gre kkten bye doru sralanr. rnek-3) SQL> SELECT * FROM personel ORDER BY sicilno DESC; Tm personel sicil numaras alanna gre bykten ke doru sralanr. rnek-4) SQL> SELECT * FROM ii WHERE 2 soundex(isciadi)=soundex(ercin);

ekil 8.1.2.1. Soundex Operatr ile Tablodaki Bilgilerin Seilerek Listelenmesi Eer tablodan listelenecek kaydn bir alannn ierii tam olarak bilinmiyorsa ilgili kelimenin yakn telaffuzu yazlarak soundex fonksiyonu ile listeleme yaplabilir. rnek-5) SQL> SELECT sicilno, adi, soyad, adres FROM personel 2 ORDER BY adi, soyadi ASC; Tm personele ait sicilno, ad, soyad ve adres bilgisi ad ve soyad alanna gre; bykten ke doru sralanr. Burada birden fazla alana gre sralama yaplmtr. Birden fazla alana gre sralama yapldnda nce birinci alan zerinde sralama yaplr. Daha sonra belirtilen ikinci alan da birinci alanlar iinde sralanr. 67

VER TABANI YNETM SSTEMLER I

Alako BURMA

Bu rnekte nce isimler sralanm sonra ayn isimli olan personel kendi ierisinde soyadlarna gre sralanmtr. rnein 3 tane Fatma isimli personel vardr. Bunlar alt alta sralanm olup soyadlarna gre de bir alfabetik sralama yaplmtr.

ekil 8.1.2.2. Personel Bilgilerinin Seilerek Listelenmesi-6 Sorgu sadece personelin ad alanna gre yaplm olsayd soyadlar isimlere gre alfabetik srada olmayacaklard. Daha uzun listelerde birden fazla alana gre sralama yapmak listenin kontrol ve kullanl asndan her zaman daha avantajldr. Bu duruma faklte, blmler, snf ve snfta okuyan rencilerin numaralarna gre sralanmas rnei verilebilir. Bir niversitede okuyan 15 bin renci bu kritere gre sralanmadan; dzensiz bir srada liste alnrsa aranlan kiinin nasl bulunacan dnn. 68

VER TABANI YNETM SSTEMLER I

Alako BURMA

ekil 8.1.2.3. Personel Bilgilerinin Seilerek Listelenmesi-7 Sorgu sadece personelin ad alanna gre yaplmtr. Soyadlar isimlere gre alfabetik srada deillerdir. rnein Fatma isimli personel isime gre sralanm ama Fatmalar kendi ierisinde soyadna gre alfabetik sralanmamtr. rnek-6) SQL> SELECT * FROM personel 2 ORDER BY dogumtarihi DESC, adi, soyadi; Bu sorguda da birden fazla alana gre yani 3 alana gre sralama yaplmtr. Birinci alan azalan sralama iken dier iki alan artan sralamadr. Burada personel kaytlar doum tarihine gre bykten ke doru sralanyor. Yani nce en gen eleman'dan balanarak en yal elemana doru bir sralama yaplyor. Doum tarihleri ayn olanlarda ise ad ve soyada gre Adan Zye artan bir sralama yaplmaktadr. Doum tarihi ayn olanlar nce isimlere gre sralanr. Burada ayn isimli olanlar alt alta gelecek ekilde sralanr. Daha sonra da ayn isimliler kendi ierisinde soyadlarna gre sralanrlar. 8.1.3. Distinct SQLde bir tablo iinde baz alanlarda birbirinin ayn olan kaytlar bulunabilir. Ayn satrlarn listeleme esnasnda bir kez yazlmas iin DISTINCT kullanlr. rnek-1) SQL> SELECT DISTINCT soyad FROM personel ; Personel tablosundan soyad'lar tekrarsz olarak listelenecektir. Yani ayn soyada sahip iki kii varsa sadece ilk kii listelenir. Tekrarlar engellenmi olur. rnek-2) SQL> SELECT DISTINCT meslekKodu FROM personel ; Bu sorgu sonucunda Personel tablosunda farkl olan meslek gruplar listelenir. Bu tr durumlarda DISTINCT ok kullanl bir operatrdr.

69

VER TABANI YNETM SSTEMLER I

Alako BURMA

ekil 8.1.3.1. Personel Bilgilerinin DISTINCT ile Seilerek Listelenmesi-1 Burada personel tablosunda olan birim kodlar tekrarsz olarak listelenmitir. Distinct operatr kullanlmasayd; 30 adet personelimiz olduu iin birim kodlar tekrarlanarak ekrana 30 adet birim kodu bilgisi gelirdi.

ekil 8.1.3.2. Personel Bilgilerinin DISTINCT ile Seilerek Listelenmesi-2 Burada da personel tablosunda alan ve meslek kodu 2 olan mesleklerin birimleri tekrarsz olarak listelenmitir. Bu sorgu sonucunda 2 nolu meslekten 3 farkl birimde alan personel olduunu reniyoruz. 401 nolu birimde meslekkodu 2 olarak alan personel bulunmamaktadr. 8.2. UPDATE (Gncelle) Komutu Tablodaki bir kayt veya kaytlar deitirilmek istenirse UPDATE komutu kullanlr. Genel kullanm ekli aadaki gibidir ; UPDATE tablo_ad SET stun_ad_1=deger1, stun_ad_2=deger2,... WHERE kosul; rnek-1) SQL> UPDATE personel 2 SET adres=Mezitli-Mersin WHERE sicilno=849 ; Personel tablosunda sicil numaras 849 olan personelin adresi deitirilmitir.

70

VER TABANI YNETM SSTEMLER I

Alako BURMA

rnek-2) SQL> UPDATE maaslar SET maasay=2 ; Maalar tablosunda btn personelin maa ay 2 olarak deitirilmitir. rnek-3) SQL> UPDATE maaslar SET maas=maas*1.20 ; Maalar tablosunda btn personelin maana %20 zam yaplmtr. rnek-4) SQL> UPDATE maaslar SET maas=maas*1.20 where sicilno=267 ; Maalar tablosunda 267 sicil numaral personelin maana %20 zam yaplmtr. Dier personelin maalarnda bir deiiklik yaplmamtr.

ekil 8.2.1. Update Komutunun Kullanm Ekran Burada nce 267 sicil numaral personele ait 2000 olan maa listelenmi ve update komutu ile kiiye %20 zam yaplmtr. Daha sonra da zam aldktan sonraki maa olan 2400 ekranda listelenmitir. rnek-5) SQL> UPDATE personel SET 2 soyadi=Bakay, birimkodu=101, adres=Mezitli-Mersin 3 WHERE sicilno=849 ; Personel tablosunda sicil numaras 849 olan personelin soyad Bakay, birimKodu 101 ve adresi Mezitli-Mersin olarak deitirilmitir. rnek-6) SQL> UPDATE personel SET soyadi=Bakay; Personel tablosundaki tm personelin soyadn Bakay olarak deitirir. NOT : Eer yukardaki gibi bir SQL sorgu cmlesi yazlp altrlrsa tablodaki btn personelin soyad Bakay olarak deiir. Eer bir yerde yedek bilginiz yoksa bilgilere yeniden ulalmas sz konusu deildir. Bu nedenle UPDATE komutu kullanlrken ok dikkat edilmelidir.

71

VER TABANI YNETM SSTEMLER I

Alako BURMA

8.3. DELETE (Sil) Komutu Tablodaki bir kayt veya kaytlar silinmek istenirse DELETE komutu kullanlr. Genel kullanm ekli aadaki gibidir ; DELETE FROM tablo_ad WHERE kosul; rnek-1) SQL> DELETE FROM personel WHERE sicilno=849 ; Personel tablosunda sicil numaras 849 olan personeli siler.

ekil 8.3.1. Delete Komutunun Kullanm Ekran Burada sicil numaras 849 olan personeli personel tablosundan silinmitir. Daha sonra bu personel listelenmeye alldnda byle bir kayt bulunamadna dair No rows selected bilgisi ekrana gelmitir. rnek-2) SQL> DELETE FROM personel WHERE birimkodu=101 ; Personel tablosunda birimkodu 101 olan personelleri siler. Burada 101 nolu Birimde alan 9 personel olduu iin tablodan 9 adet personelin bilgisi silinecek ve geriye 21 adet personel bilgisi kalacaktr. rnek-3) SQL> DELETE FROM personel WHERE adi IS NULL ; Personel tablosundan ad alan bo olan personeli siler. IS NOT ile istenilen alan bo olan bilgiler silinebilir. IS NOT NULL ise bo olmayan alanlar iin kullanlr. rnek-4) SQL> DELETE FROM personel; Personel tablosundaki tm bilgileri siler. NOT : Eer yukardaki gibi bir SQL sorgu cmlesi yazlp altrlrsa tablodaki btn kaytlar silinir. Eer bir yerde yedek bilginiz yoksa bilgilere yeniden ulalmas sz konusu deildir. Bu nedenle DELETE komutu kullanlrken ok dikkat edilmelidir.

72

VER TABANI YNETM SSTEMLER I

BLM 9

Alako BURMA

9. SQL de FONKSYONLAR
9.1. SUM (Topla) Fonksiyonu Belirtilen stundaki btn deerlerin toplamn alr. Genel kullanm aadaki gibidir. Select SUM(stun_ad) FROM tablo_ad; rnek-1) SQL> SELECT SUM(maas) FROM maaslar; Tm personele denen toplam maa miktarn verir.

ekil 9.1.1. Sum Fonksiyonu Ekran rnek-2) SQL> SELECT SUM(maas) FROM maaslar WHERE maasayi=1; Personele ait 1. ay iin denen toplam maa miktarn verir. 9.2. AVG (Ortalama) Fonksiyonu Belirtilen stundaki btn deerlerin ortalamasn alr. Genel kullanm aadaki gibidir. Select AVG(stun_ad) FROM tablo_ad; rnek-1) SQL> SELECT AVG(maas) FROM maaslar; Tm personele denen maalarn ortalamasn verir. rnek-2) SQL> SELECT AVG(maas) FROM maaslar WHERE maasayi=1; Personele ait 1. ay iin denen maalarn ortalamasn verir.

73

VER TABANI YNETM SSTEMLER I

Alako BURMA

ekil 9.2.1. Avg Fonksiyonu Ekran 9.3. MAX (En Byk) Fonksiyonu Belirtilen stundaki en byk deeri verir. Genel kullanm aadaki gibidir. Select MAX(stun_ad) FROM tablo_ad; rnek-1) SQL> SELECT MAX(maas) FROM maaslar; En yksek maa bilgisini verir.

ekil 9.3.1. Max Fonksiyonu Ekran rnek-2) SQL> SELECT MAX(maas) FROM maaslar WHERE maasayi=1; 1. ay en yksek maa bilgisini verir. 9.4. MIN (Em Kk) Fonksiyonu Belirtilen stundaki en kk deeri verir. Genel kullanm aadaki gibidir. Select MIN(stun_ad) FROM tablo_ad; rnek-1) SQL> SELECT MIN(maas) FROM maaslar; En dk maa bilgisini verir.

74

VER TABANI YNETM SSTEMLER I

Alako BURMA

ekil 9.4.1. Min Fonksiyonu Ekran rnek-2) SQL> SELECT MIN(maas) FROM maaslar WHERE maasayi=1; 1. ay en dk maa bilgisini verir. 9.5. COUNT (Say) Fonksiyonu Tablo iinde, her hangi bir sayma ilemi gerekletirmek iin kullanlr. COUNT fonksiyonu sorgu sonucu dnen kayt saysn verir. Eer parametre olarak * girilirse tablodaki tm kayt saysn verir. Parametre olarak bir stun ad verilirse, o stundaki ierii NULL (boluk) olmayan tm kayt saysn verir. Genel kullanm aadaki gibidir.; Select COUNT(stun_ad) FROM tablo_ad; rnek-1) SQL> SELECT COUNT(*) FROM personel; Ka tane personelimiz olduunu listeler.

ekil 9.5.1. Count Fonksiyonu Ekran-1 rnek-2) SQL> SELECT COUNT(*) FROM personel WHERE birimkodu=301; Birim kodu 301 olan Bilgi lem blmnde alan personel saysn verir.

75

VER TABANI YNETM SSTEMLER I

Alako BURMA

ekil 9.5.2. Count Fonksiyonu Ekran-2 rnek-3) SQL> SELECT COUNT(*) FROM maaslar WHERE maas>=1300; Maa 1300 e eit ve daha fazla olan personel saysn verir. DISTINCT fonksiyonu COUNT fonksiyonu ile birlikte kullanlabilir. Verilen kolondaki unique record saysn geri dndrr. Genel yazm biimi aadaki gibidir ; Select COUNT(DISTINCT stun_ad) FROM tablo_ad; rnek-4) SQL> SELECT COUNT(DISTINCT adi) FROM personel; Ka farkl isme sahip personel saysn verir. rnek-5) SQL> SELECT COUNT(DISTINCT maas) FROM maaslar; alan personele denen ka farkl maa olduunun saysn verir. rnek-6) SQL> SELECT COUNT(DISTINCT birimKodu) FROM personel; Ka farkl birimde alan olduunun saysn verir. rnek-7) SQL> SELECT COUNT(DISTINCT meslekKodu) FROM personel; irkette alan ka farkl meslek grubu olduunun saysn verir. Not : SQLde bu blmde anlatlan fonksiyonlarn dnda pek ok fonksiyon bulunmaktadr. rnek olarak; SUBSTR, LENGTH, LTRIM, RTRIM, to_char, to_number, to_date gibi. Bu blmde en ok kullanlan fonksiyonlar anlatlmtr.

76

VER TABANI YNETM SSTEMLER I

BLM 10

Alako BURMA

10. SQL de GRUPLANDIRMA


10.1. GROUP BY (Gruplandr) Deyimi GROUP BY yardmc szc bir alana gre kaytlar gruplamak iin kullanlr. Genel kullanm aadaki gibidir. SELECT [ DISTINCT | ALL ] <stun(lar)> FROM <tablo ad (lar)> [ WHERE <art (lar)> ] [ GROUP BY <stunlar>]

ekil 10.1.1. Group By Ekran-1

77

VER TABANI YNETM SSTEMLER I

Alako BURMA

Maalar tablosunda bulunan personelin bazlarna group by ifadesini aklamak zere 2. ve 3.aya ait maa bilgileri eklenmitir. Yukardaki ekranda yaplan eklemeler sonunda 5 adet sorgu yaplmtr. Bunlar ve aklamalar aadaki rnekte aklanmtr. Buradaki rneklerden de grld gibi bir sorguda birden fazla fonksiyon bir arada kullanlabilmektedir. rnek-1) SQL> select count(*) from maaslar; Maaslar tablosunda bulunan toplam kayt says 58 olarak bulunmutur. Tabloda 58 personeler ait 1., 2. ve 3. ay maa bilgileri bulunmaktadr. COUNT(*) --------------58 rnek-2)SQL>SELECT maasayi,COUNT(maas) from maaslar group by maasayi; Her bir ay iin ka personele maa denildiini listeleyen sorgu. MAASAYI COUNT(MAAS) --------------- --------------1 29 2 18 3 11 rnek-3) SELECT maasayi,SUM(maas) FROM maaslar group by maasayi; Her bir ay iin personele denen toplam maa miktarn hesaplayan sorgu. MAASAYI SUM(MAAS) --------------- --------------1 30935 2 18585 3 11950 rnek-4) SQL> SELECT maasayi, COUNT(maas), SUM(maas) FROM maaslar group by maasayi; Her bir ay iin ka personele, ne kadar toplam maa dendiini hesaplayan sorgu. MAASAYI COUNT(MAAS) SUM(MAAS) --------------- ------------------------------ -------------------1 29 30935 2 18 18585 3 11 11950 rnek-5) SQL> SELECT maasayi, COUNT(maas), SUM(maas), AVG(maas) FROM maaslar group by maasayi; Her bir ay iin ka personele, ne kadar toplam maa dendii ve her ayn maa ortalamasn hesaplayan sorgu. MAASAYI COUNT(MAAS) SUM(MAAS) AVG(MAAS) -------------- ------------------------- -------------------- -----------------------1 29 30935 1066.724137931 2 18 18585 1032.5 3 11 11950 1086.3636363636

78

VER TABANI YNETM SSTEMLER I

Alako BURMA

ekil 10.1.2. Group By Ekran-2 Yukardaki rnekte; personel tablosu birim koduna gre gruplandrma yaplarak her bir birimde alan personel says listelenmitir.

ekil 10.1.3. Group By Ekran-3 Yukardaki rnekte; personel tablosu meslek koduna gre gruplandrma yaplarak her bir meslek grubunda alan personel says listelenmitir. 10.2.HAVING (Sahip) Deyimi Gruplandrarak kmeleme fonksiyonu kullanlrken, sorguda bir koulunda verilmesi gerekiyorsa kullanlr. Bu durumda grup zerindeki hesaplamalarla ilgili koul belirtilirken HAVING (SAHP) szc kullanlr. HAVING yardmc szc GROUP BY yardmc szc ile gruplanan kaytlar zerinde kstlama yapma iine yarar. Genel kullanm aadaki gibidir. SELECT [ DISTINCT | ALL ] <stun(lar)> FROM <tablo ad (lar)> [ WHERE <art (lar)> ] [ GROUP BY <stunlar>] [ HAVING < grup kstlamas>] 79

VER TABANI YNETM SSTEMLER I

Alako BURMA

HAVING szc SELECT komutunda GROUP BY bulunmad zaman geersizdir. HAVING szcn izleyen ifade iinde SUM, COUNT(*), AVG, MAX yada MIN fonksiyonlarndan en az biri bulunmaldr. HAVING szc sadece gruplanm veriler zerindeki ilemlerde geerlidir. WHERE szc bir tablonun tek satrlar zerinde ilem yapan koullar iinde geerlidir. Baz durumlarda HAVING ve WHERE szckleri ile birlikte SELECT komutu iinde kullanlabilir.

ekil 10.2.1. Having Ekran-1 rnek-1) SQL> SELECT maasayi, MAX(maas), AVG(maas) FROM maaslar GROUP BY maasayi HAVING MAX( maas)>1200 ; En yksek maan 1200 den fazla olduu aylardaki personele ait en yksek maa ve ortalama maa listeler. Maa aylara gre gruplandrlmtr. rnek-2) SQL> SELECT maasayi, MAX(maas), AVG(maas) FROM maaslar GROUP BY maasayi HAVING MAX( maas)>1000 ; En yksek maan 1000 den fazla olduu aylardaki personele ait en yksek maa ve ortalama maa listeler. Maa aylara gre gruplandrlmtr. rnek-3) SQL> SELECT bl_no, AVG (brt) FROM isciler WHERE cins= .T. GROUP BY bl_no HAVING AVG (brt) > 9000000; sci tablosu iinde her blmde erkek personele ait maalar iin ortalamann 9000000dan fazla olduu blmleri listeler. Bu tabloda cins isimli bir tablo alan olduu ve onunda mantksal bir alan olarak tanmland varsaymtr. Mantksal alann true olmas durumunda cinsiyetin erkek, false olmas durumunda cinsiyetin bayan olduu varsaylarak sorgu yazlmtr. Mantksal veriler iin mmkn olabilen sadece iki deer sz konusudur. DORU D(TRUE T), YANLI Y (FALSE F) ile simgelenir. Mantksal alanlar .T. veya .F. olarak karlatrlrlar.

ekil 10.2.1. Having Ekran-2 rnek; isci tablosunda ikiden fazla kii tarafndan yaplan ilerin listesini verir. 80

VER TABANI YNETM SSTEMLER I

BLM 11

Alako BURMA

11. SQL de JOIN (BRLETRME) LEM


11.1. JOIN (Birletirme) lemi Veri taban kaytlar oluturulurken btn bilgiler bir tabloda deil de, birka tablo zerinde tutulur. Bu datalarn daha dzenli olmasn, gereksiz veri tekrarlarnn engellenmesini ve veri ynetimini kolaylatrr. Daha nce bu konu ile ilgili 4. ve 5.Blmde veri taban ve normalizasyon konusundan detaylar ile bahsedilmi ve rnekler verilmitir. Bu blme kadar yazlan tm sorgularda tek tablo zerinde ilem yapld. Bu blmde, ilikisel veri tabanlarnn ve SQLin ok nemli ve yararl bir zellii olan birletirme (join) ilemi anlatlacaktr. likisel veri tabanlarna ilikisel denmesinin nedeni olan Birletirme ilemi iki veya daha ok tablo arasnda balant (link) kurarak tek bir tablo oluturur ve sorgu bu tablo zerinde alr . Birden fazla tablo zerinde ilem yaplaca zaman; select cmleciinden sonra tabload.tablo_alanlar aralarna virgl konularak yazlr ve kullanlacak tablolar from cmleciinden sonra aralarna virgl konularak yazlr. Daha sonra da WHERE art ile tablolar arasndaki ilikili ortak alanlar eitlenir. Buradaki en nemli zelliin iki tablo arasnda ilikili ortak bir alann olmas gerektiidir. Aada projemize ait tablolar ve ilikili alanlar belirtilmitir. Tablolar arasndaki ilikiyi belirten izgi

ekil 11.1.1. rnek Personel Projenin MS Access deki diyagram Tablo simleri Personel-Maa tablosu Personel-Meslekler tablosu Personel-CalslanBirim tablosu Ortak Alanlar SicilNo MeslekKodu BirimKodu

81

VER TABANI YNETM SSTEMLER I

Alako BURMA

Projedeki her tablonun bir alan ana tablo olan personel tablosunun bir alan ile ortaktr ve tanmlanan alanlar ayn zelliktedir. rnek-1) SQL> select * from personel where birimkodu=301; BirimKodu 301 olan personelin listesini verir.

ekil 11.1.2. Join Sorgu Ekran-1 Bu sorgu sonucunda personele ait birimler birimKodu 301 olarak ve mesleklerde meslekkodu olarak listelenmektedir. Kod olarak listelenen bilgiler ok aklayc deildirler. rnein Salih Baar isimli personelin meslekkodu 6 olarak grntlenmekte ama 6 kodunun hangi meslek olduu anlalamamaktadr. Personel tablosundaki meslekkodunun karl olan deer meslekler tablosundan bulunarak getirilmelidir. Bu meslekkodlarnn hangi meslee denk geldiini bulmak iin personel ve meslekler tablosu arasnda join yaplmaldr. yleki; personel tablosunda Salih Bayar isimli personele ait 6 olan meslek kodu meslekler tablosunda aranacak ve meslekler tablosunda meslekkodu 6 olan kaytta bulunan programc meslei personelin meslei olarak yazlacaktr. Bu ilemden sonra meslek alanna programc yazlacak ve veriler daha anlaml hale gelecektir. Bu karlatrma ilemini yapan ifade WHERE karlatrmasndan sonra kullanlacak olan ifadedir.

ekil 11.1.2. Join Sorgu Ekran-2 82

VER TABANI YNETM SSTEMLER I

Alako BURMA

Sorgu ok uzun ve kark gibi grnmesine ramen aslnda ok basittir. Select komutunun ardndan birden fazla tablo kullanld iin alann hangi tabloya ait olduunu bildirmek iin listelenecek her alan iin tabload.tablo_alan kullanlmtr. Personel.sicilno veya meslekler.meslekkodu gibi. From komutundan sonra kullanlan tablolar virgl ile ayrlarak yazlmtr. Daha sonra personel tablosundaki meslekkodunun meslekler tablosundaki karln bulmak iin where personel.meslekkodu=meslekler.meslekkodu karlatrmas yaplmtr. and personel.birimkodu=301 alan personelin listelemesi iindir. and ifadesi tm personel yerine 301 nolu birimde

And ile iki art birbiri ile birletirilmitir.

Yukardaki sorgu aadaki gibi de yazlabilir.

ekil 11.1.3. Join Sorgu Ekran-3 ki sorguda ayndr. Tek fark yazlm farkdr. Dikkat edilirse p.sicilno gibi ifadeler vardr. Burada olduu gibi from szcnden sonra yazlan tablo adlar iin bir boluk braktktan sonra ksa bir isim verilebilir. Bylece uzun tablo adn srekli yazmaktansa o tablo ad iin alias olarak adlandrlan ksa isim kullanlabilir. Alias olarak verilen tablo ismi alanlar listelenirken yazm olarak byk kolaylk salamaktadr. Burada personel tablosu iin p, meslekler tablosu iin m kullanlmtr. En ok kullanlan yntem ilk tabloya a harfinden balamak, dierlerine de b,c, gibi alias isimler vermektir. NOT : where personel.meslekkodu=meslekler.meslekkodu Bu ifade kodun karln bulmak asndan en nemli olan ifadedir. kullanlmaz ise sorgu sonucu yanl kacaktr. yleki; her bir personel meslek tablosundaki tm mesleklere karlk gelecek ekilde listelenecektir. 83

VER TABANI YNETM SSTEMLER I

Alako BURMA

ekil 11.1.4. Join Sorgu Ekran-4 Yukarda where artnda eksik yazlan sorgu ekrannn bir ksm bulunmaktadr. Listelenen kayt says 56 dr. Bu say 7 (meslek says) * 8 (301 de bulunan personel says) arpmdr. Bu sorgu alan 30 personel ait bir liste olsayd ve where personel.meslekkodu=meslekler.meslekkodu art yazlmasayd liste 7*30 = 210 tane olurdu. Bu nedenle Where koulunda ilikili ortak alanlarn karlatrlmasna ok dikkat edilmelidir.

84

VER TABANI YNETM SSTEMLER I 11.2. JOIN lemine Ait rnekler

Alako BURMA

rnek-1) Personel tablosundaki her meslek grubunda ka personel olduunun listesini veren sorgu.

ekil 11.2.1. rnek Join Sorgu Ekran-1

rnek-2) Personel tablosundaki her birimde alan ka personel olduunun listesini veren sorgu.

ekil 11.2.2. rnek Join Sorgu Ekran-2

85

VER TABANI YNETM SSTEMLER I

Alako BURMA

rnek-3) Tm personelin ald maalarn listesini veren sorgu. Bu sorguda 30 personel olmasna ramen 29 personele ait maa bilgisi listelenmitir. Daha nce de bunun zellikle yapld belirtilmiti. Birletirme ilemleri yaplrken karmza yle bir problem kmaktadr. Birletirme yaplan tablolardan ikinci tabloda birinci tablodaki her kaydn karl olmazsa, karl olmayan kaytlar sorgu sonucunda sadece olmayan kaytlar deil bilakis hi kayt gelmez. Bunun iin d birletirme kullanlr. D birletirme ilemi, kaytlar eksik olan tablonun art tarafna (+) iareti konularak yaplr. rnek 4 de buna ait uygulama yaplmtr.

ekil 11.2.3. rnek Join Sorgu Ekran-3

86

VER TABANI YNETM SSTEMLER I

Alako BURMA

rnek-4) Tm personelin ald maalarn listesini veren sorgu. Maalar tablosunda 1077 sicil numaral Orhan Sezgin isimli personele maa bilgisi yazlmas unutulmutur. Buradan SQLin ayn zamanda bir kontrol mekanizmas olarak da kullanlabileceini karabiliriz.

ekil 11.2.4. rnek Join Sorgu Ekran-4

87

VER TABANI YNETM SSTEMLER I

Alako BURMA

rnek-5) Aylk creti 1300 den byk olan personelin listesini veren sorgu.

ekil 11.2.5. rnek Join Sorgu Ekran-5 NOT : Bu blm sonuna kadar temel SQL komutlar anlatlmtr. SQL komutlar ok kullanl ve yararldr. rnein: personel bilgileri ierisinden maa 1500 den byk olanlarn listesi ve says alnrken SQL dili deil de klasik programlama dili kullanlm olsayd byle bir liste hangi programlama mant ile elde edilebilirdi. Sonuca ulaabilmek iin birok satrdan meydana gelen kod yazlmas gerekirdi. Programlama dilleri ile elde edilecek sonuta izlenebilecek yntemlerden biri u olabilirdi : Bilgilerin yazld dosyann ilk kaydna gidilir, sonra dosyann sonuna gelinene kadar her bir personel maann 1500den byk olup olmad art sorulur ve bu arta uyan elemanlar listelenir. Ka kii olduunun bilgisini bulmak iinde bu bilgi bir deikende tutularak deikenin deeri 1er artrlarak arta uyan ka eleman olduu bilgisine ulalr. Ayn ekilde; her blmde alan personel says nedir veya ka farkl blm vardr? SQL sorgusu iin dnlecek olursa bu tip sonularn klasik programlama mant ile yaplabilmesinin ne kadar zor ve vakit alc olduunu dnn. COUNT, AVG, SUM, DISTINCT, GROUP BY ve HAVING ile elde edilen sorgu sonularnn klasik programlama mant ile nasl yaplabileceini dnn. Bu rneklerden sonra SQL ile ilem yapmann ne kadar kolay olduu, SQLin ne kadar yetenekli bir dil olduu ve SQLin nemi anlalabilir. Bu nedenle V.Basic, Delphi, Asp, PHP gibi programlama dillerinde SQL desteini kullanarak ilemlerinizi kolaylatrnz.

88

VER TABANI YNETM SSTEMLER I

BLM 12

Alako BURMA

12. SQL de YNETMSEL FONKSYONLAR


12.1. VIEWS ( Tablo Grnm) Tablo grnmleri veri tabannda tanm olan tablolardan sorgulama sonucunda elde edilir. Tablolarn tersine fiziksel bir yer tutmazlar. Uygulamalarda pek ok pratiklik salarlar. Grnt oluturabilmek iin Select cmlesi kullanlmas gerekir. Bir grnt bir yada daha fazla tablodan oluturulabilecei gibi bir baka grntden (view) de oluturulabilir. rnek-1) SQL> CREATE VIEW personel_maas AS 2 select a.sicilno, a.adi, a.soyadi, b.maas 3 from personel a, maaslar b 4 where a.sicilno=b.sicilno; Personele ait sicilno, ad ve soyad bilgisi Personel tablosunda, maa bilgisi ise maaslar tablosunda bulunmaktadr. Personele ait maalar listelenmek istenildiinde; her seferinde sorgu yazlmas gerekmektedir. Bunun yerine bir view yaratlarak bu view listelenirse her seferinde sorgu yazmaya gerek kalmaz. Bu view daha sonra form veya rapor almnda da kullanlabilir ve burada olduu gibi byk kolaylk salar.

ekil 12.1.1. View Ekran-1 Personel_maas oluturulan view ismidir. As deyiminden, sonra view alanlarnn hangi bilgilerden oluaca yazlr. Bu ise select komutu ile renilen klasik select sorgusudur. Tablo grnmleri, tablolarda yaplan deiikliklerden etkilenmezler. Tabloya yeni bir kaytn eklenmesi, kaytlarn silinmesi veya deitirilmesi, tabloya viewde olmayan yeni bir kolonun eklenmesi veya silinmesi gibi bir deiiklik viewlerin (grnmlerin) yapsn deitirmez. rnek-2) SQL> SELECT * FROM personel_maas; Personel ve personele ait maa bilgisi personel_maas grnmnden listelenmitir.

89

VER TABANI YNETM SSTEMLER I

Alako BURMA

ekil 12.1.2. View Ekran-2 View ler tpk tablolar gibi ilem grrler. Ama fiziksel olarak diskte yer kaplamazlar. Viewlerin faydalar aada sralanmtr. 1. Tablolardan deiik kullanc gruplarna uygun alanlarn ayrlmas salanr. Bu da gvenlik asndan nemlidir. 2. Birka tablodan elde edilen srekli kullanlan karmak sorgulardan view oluturularak srekli hazr tutulur ve her seferinde bu karmak sorgu yazlmak yerine view den seim yaplr. 3. Karmak sorgular iin yada tabloda bulunan zel satrlar iin tablo grnmleri oluturularak uygulamalarda pratiklik salanr.

90

VER TABANI YNETM SSTEMLER I 12.2. CREATE TABLESPACE (Tablo Uzay = Veri Alan)

Alako BURMA

Kullanclara ait olan nesnelerin veritabannda mantksal olarak tutulduu yere tablo uzay ismi verilir. Bir tablo uzay oluturulurken, bu tablo uzaynn verilerinin hangi veri dosyasna konulaca ve bu dosyann dizini ile bykl bildirilmelidir. CREATE TABLESPACE tbs_esef DATAFILE 'c:\orasql\tbs_esef.dat' SIZE 10M DEFAULT STORAGE (INITIAL 10K NEXT 50K MINEXTENTS 1 MAXEXTENTS 999) ONLINE; Tbs_esef tablespace iin verilen isimdir. C:\orasql veri alannn yaratlaca dizin ve tbs_esef.dat ise diskte grntlenecek olan veri alannn ismidir. SIZE bilgisi veri dosyasnn diskte fiziksel olarak kaplayaca yeri belirler. Burada 10M, 5K gibi deerler girilebilir. INITIAL bildirisi tablo uzay oluturulduunda, ilk alaca genilemenin bykln belirler. Next tablo uzay oluturulduktan sonra alaca genilemelerin bykln belirler. MINEXTENTS tablo uzay oluturulduunda ilk olarak alaca minimum genileme saysnn belirtildii blmdr. MAXEXTENTS bir tablo uzaynn ilk olarak ald genileme de dahil olmak zere alabilecei maksimum genileme saysnn belirtildii blmdr. 12.3. CREATE USER (Kullanc) Kullanc veritaban nesnelerinin sahibidir. Kullanclar, nesneleri oluturur, kullanr ve silerler. Oracle veritaban ilk kurulduunda standart olarak kullanc tanmlanr. Bunlardan bir SYS kullancsdr. SYS kullancs veri szlnn sahibi olan kullancdr. Tm nesneleri oluturma hakkna sahiptir ve dier btn kullanclarn nesnelerine eriebilir. SYS kullancsnn ilk ifresi change_on_install olarak belirlenmitir. kinci kullanc SYSTEM kullancsdr. SYSTEM kullancs veri szln kullanma hakkna sahiptir. nemli nesneleri oluturma hakkna da sahiptir. lk ifresi manager olarak belirlenmitir. Dier kullanclarn nesnelerine erime hakkna da sahiptir. nc kullanc SCOTT kullancsdr. SCOTT kullancs veritabanna balangta yklenen demo tablolarn sahibidir. Bu kullancnn nesneleri kullanlarak SQL denemeleri yaplabilir. CREATE USER komutunu SYS ve SYSTEM kullanclar standart olarak kullanabilir. Bu hak dier kullanclara da verilebilir. Her kullancnn nesnelerini tutmak iin bir tablo uzay oluturmak sistemin performans asndan gereklidir. Kullanc oluturulurken bu tablo uzay o kullancya atanr. CREATE USER ogrenci IDENTIFIED BY ogrenci1 DEFAULT TABLESPACE tbs_esef QUOTA UNLIMITED ON tbs_esef

91

VER TABANI YNETM SSTEMLER I

Alako BURMA

Yukardaki rnekte ogrenci adnda bir kullanc oluturulmutur. Kullancnn ifresi IDENTIFIED BY ile ogrenci1 olarak belirtilmitir. Kullancnn kendi nesnelerini oluturaca tablo uzay iin ise tbs_esef tablo uzay bildirilmitir. Kullancnn bu tablo uzayndaki tm alan kullanabilecei QUOTA UNLIMITED ile belirlenmitir. 12.4. CREATE ROLE Rol veritabanndaki haklarn toplanm haline denir. Veritaban yneticisi rolleri kullanarak sistemin gvenliini daha kolay salayabilir. Roller Oracle tarafndan nceden tanmlanm roller ve kullanc tanml roller olarak iki ekilde dnlebilir. Oracle tarafndan nceden tanmlanan roller be tanedir: Atanm Haklar ALTER SESSION,CREATE CLUSTER, CREATE DATABASE LINK, CREATE SEQUENCE, CREATE CONNECT SESION, CREATE SYNONYM, CREATE TABLE, CREATE VIEW CREATE CLUSTER, CREATE PROCEDURE, CREATE RESOURCE SEQUENCE, CREATE TABLE, CREATE TRIGGER DBA WITH ADMIN OPTION ile birlikte btn sistem haklar SELECT ANY TABLE, BACKUP ANY TABLE, SYS.INCVID, EXP_FULL_DATABASE SYS.INCFIL ve SYS.INCEXP tablolarna INSERT, UPDATE veDELETE hakk IMP_FULL_DATABASE BECOME USER, WRITEDOWN CREATE ROLE tablo_incele GRANT SELECT ON personel TO tablo_incele Yukardaki rnekte tablo_incele isimli bir rol oluturulmutur. Daha sonra bu role personel tablosu zerinde listeleme ilemi yapma hakk verilmitir. Bylece bu roln atand kullanc personel tablosu zerinde SELECT komutunu altrabilir. Bunun dndaki insert, updatei delete vb. komutlar altramaz. Rol

12.5. CREATE INDEX Daha ncede bahsedildii gibi indeks tablodaki kaytlara daha hzl eriim iin kullanlan nesnelerdir. Bir indeks oluturabilmek iin CREATE ANY INDEX sistem hakkna sahip olmak gerekir. ndeks bir tablonun bir alan zerinde tanmlanabilecei gibi birden fazla alan zerinde de tanmlanabilir. CREATE INDEX indeks1 ON personel(sicilno) Personel tablosu zerinde sicilno alan iin index1 isimli bir index yaratlmtr.

92

VER TABANI YNETM SSTEMLER I 12.6. CREATE SEQUENCE

Alako BURMA

Sra, sral olarak artan alanlar iin veritabannda tutulan nesnedir. Sra tekrarlamayan saysal bilgi elde etmek iin kullanlr. rnein sicil numaralar, rgenci numaralar, abone numaralar, mteri numaralar gibi. rnein birden balayan ve birer birer artan bir sra yaratmak iin: CREATE SEQUENCE sicilno START WITH 1 INCREMENT BY 1 12.7. GRANT Sistem ya da nesne haklarnn kullanclara veya rollere atanmas iin kullanlan komuttur. GRANT DELETE ON personel TO ogrenci Yukardaki rnekte ogrenci kullancsna personel tablosunda silme yapma yetkisi verilir. 12.8. REVOKE Sistem ya da nesne haklarnn kullanclardan veya rollerden geri alnnmas iin kullanlan komuttur. REVOKE DELETE ON personel FROM ogrenci Yukardaki rnekte ogrenci kullancsndan personel tablosunda silme yapma yetkisi geri alnr.

93

VER TABANI YNETM SSTEMLER I

Alako BURMA

KAYNAKLAR
Yaar Gzdereli, Veritaban Programlamaya Giri, Byte Dergisi Eitim Dizisi, Temmuz 2003 Yaar Gzdereli, Veritaban Programlama II, Byte Dergisi Eitim Dizisi, ubat 2004 Osman Nihat en, Oracle, SQL, SQL*Plus, PL/SQL ve Veritaban Ynetimi, kinci Bask, Beta Yaynlar, stanbul, 2000 Aydn ekihanov, Oracle8i A Practical Guide To SQL, PL/SQL, Developer 6, Atlm University Publications, 2001 Oracle 8i Enterprice Edition Documentation Bilkent niversitesi Bilgisayar Merkezi, Veri Taban Ynetim Sistemine Giri ve SQL, Temmuz 1996 http://iletisim.marmara.edu.tr/bilisim/veri%20modelleri(csutcu%20dr%20tezinin%20bi r%20bolumu).pdf http://www.yazilimgrubu.com/dokuman.php?sayfa=2&no=%2010 http://www.yazilimgrubu.com/dokuman.php?sayfa=2&no=%2011 http://www.yazilimgrubu.com/dokuman.php?sayfa=2&no=%2012 http://www.farukcubukcu.com/downloads/sqlkomutlar.doc http://www.farukcubukcu.com/downloads/sqlkomutlari.doc http://www.bto.yildiz.edu.tr/dosyalar/ebt2_konu5.doc http://www.bto.yildiz.edu.tr/dosyalar/ebt2_konu4.doc http://www.verivizyon.com http://www.verivizyon.com/detail.asp?cid=110 http://www.verivizyon.com/detail.asp?cid=96 http://cisn.odtu.edu.tr/2002-7/veritabani.php http://serdar.ktg.com.tr/oracle.htm http://www.geocities.com/cakmak_cengiz/ http://www.olgun.com/main_sql_destek.asp www.oracle.com

94

You might also like