1. Yrd. Doç. Dr. Hidayet Takcı
htakci@sucati.org
http://htakci.sucati.org
2. Basit olarak;
Bilgi depolayan bir yazılımdır.
▪ Bilgi depolayan diğer yazılımlardan farkı, veritabanın
bu bilgiyi verimli ve hızlı bir şekilde yönetip
değiştirebilmesidir.
Bilgi sisteminin kalbidir ve etkili kullanmakla
değer kazanır.
▪ Bilgiye gerekli olduğu zaman ulaşabilmek esastır.
İndeksi olmayan bir kitapta veya katalogu olmayan
bir kütüphanede bilgiye ulaşmak kolay değildir.
Bir veritabanı bir kütüphanenin mükemmel bir
indeks sistemi olduğu gibi, aynı zamanda
kütüphanenin kendisidir.
Dr. Hidayet Takçı - Veritabanlarına Giriş 2
3. Veritabanı sisteminin iki bileşeni vardır:
Veritabanı (VT)
Veritabanı Yönetim Sistemi (VTYS)
Veritabanı (VT)
Fiziksel olarak verilerin tutulduğu kısmı ifade eder.
• Veritabanı Yönetim Sistemi (VTYS)
Veritabanını yönetmek, veritabanına erişim
kurallarını düzenlemek, onu korumak gibi işlevleri
olan yazılımdır.
Dr. Hidayet Takçı - Veritabanlarına Giriş 3
4. Veritabanının yapısını tanımlayabilmek için
kullanılan kavramlar kümesidir.
Veritabanının modeli; veri tipleri, operasyonlar
ve kısıtlamalardan oluşur.
Üç tip veri modeli vardır:
Yüksek Seviyeli Veri Modelleri
▪ Varlık, özellik ve ilişkiler ile gerçek dünyanın sunumu yapılır.
Mantıksal Veri Modelleri
▪ Veri nesnelerinin sunumu tablolar yardımıyla yapılır.
Fiziksel Veri Modelleri
▪ Dosya ve kayıt organizasyonları ile ilgilidir.
Dr. Hidayet Takçı - Veritabanlarına Giriş 4
5. Veri Tanımı Dilleri(DDL)
Veritabanının şema tanımlarını yerine getirmek için
kullanılırlar. Bu diller sayesinde tabloların oluşturulması,
değiştirilmesi gibi işlemler yerine getirilir.
Veri İşleme Dilleri(DML)
Veritabanının işlenmesinde kullanılırlar. İkiye ayrılırlar.
Yüksek Seviyeli DML
▪ Tek başına kullanılan bu tür diller veritabanının karmaşık
operasyonlarını bütün olarak belirtebilmektedir. Bunlar ya direk
komut olarak girilebilmekte ya da genel amaçlı bir programlama dili
içinde tanımlanabilmektedir.
Düşük Seviyeli DML
▪ Bunlar genel amaçlı bir programlama dili içerisinde kullanılırlar.
Dr. Hidayet Takçı - Veritabanlarına Giriş 5
6. Veri Modeline Göre
İlişkisel VTYS’ler – Sybase, Oracle 7.6, SQL Server
Seviyeli VTYS’ler – IMS
Ağ VTYS’ler – DBTG
İlişkisel nesne modelli VTYS’ler – Oracle 8, DB2, Informix
Nesneye-yönelik VTYS’ler – GemStone, O2, ObjectStore
Kullanıcı Sayısına Göre
Tek kullanıcılı sistemler
Çok kullanıcılı sistemler
Yerleşimine Göre
Merkezi VTYS’ler
Dağıtık VTYS’ler
Homojen VTYS’ler – birçok noktada aynı VTYS.
Heterojen VTYS’ler – farklı noktalarda farklı VTYS’ ler
Dr. Hidayet Takçı - Veritabanlarına Giriş 6
7. Bu modeller, veritabanında tutulacak verilerin yüksek
seviyede bir gösterimini ve açıklamasını verir.
Varlık-İlişki (ER) Modeli, kavramsal tasarım için en popüler ve
en çok kullanılan modeldir.
ER’deki notasyonlar oldukça bilgi verici ve uygulamalarla ilgili insan
bakışına yakın özelliklere sahiptir.
ER için en temel kavramlar; nesneler(entities), ilişkiler (relationships)
ve nitelikler (attributes)dir.
ER modelinin bir çok değişik varyasyonu vardır ve notasyonların
gösterimleri çok farklılık gösterir. Ancak burada en çok kabul gören
gösterimi ve kavramları içeren ER modelini ele alınacaktır.
Dr. Hidayet Takçı - Veritabanlarına Giriş 7
10. En geniş kullanım alanına sahip veri modelidir.
Oracle, SQL server ve birçok VTYS bu modeli temel alır
Model iki boyutlu tablolar halinde gösterilir, her
bir tabloya ilişki (relation) adı verilir.
İlişkide gösterilen her bir satır (tuple) bir kayda ait
verileri her bir sütun ise bir niteliğe ait verileri
içerir.
Nitelik verilerinin alındığı havuzlara etki alanı
(domain) adı verilir.
Bir ilişkideki niteliklerin sayısı ise o ilişkinin
derecesini (degree) gösterir.
Dr. Hidayet Takçı - Veritabanlarına Giriş 10
12. Güncelleme İşlemleri
Giriş (insert): Bir tabloya yeni sıraların ilave edilmesi
Silme (delete): Bir tablodan bazı sıraların silinmesi işlemi
Değiştirme (modify): Bazı niteliklerin değerlerinin
değiştirilmesi işlemi
Bu operasyonlar sırasında ilişkisel veritabanı şeması
üzerinde tanımlı bütünlük kısıtlamalarının çiğnenip
çiğnenmediği kontrol edilmek zorundadır.
Dr. Hidayet Takçı - Veritabanlarına Giriş 12
13. Veri girişi
INSERT INTO DOLASIM (DNO, ERISIMNO, ALISTAR)
VALUES (14, 1505, ’02.02.2003’)
Veri silme
DELETE
FROM DOLASIM D
WHERE D.UYENO = 14 AND D.ERISIMNO=1505
Veri güncelleme
UPDATE DOLASIM
SET ALISTAR = ’02.03.2003’
WHERE UYENO= 14 AND ERISIMNO=1505
Dr. Hidayet Takçı - Veritabanlarına Giriş 13
14. İlişkisel veri modelinde anahtar nitelikler önemli bir yere sahiptir.
Süper Anahtar: bir tabloda bütün satırları birbirinden farklı olan
niteliktir.
Örneğin; kitap tablosunda demirbaş numarası veya kimlik tablosunda
kimlik no gibi.
Aday Anahtar: Bir tabloda birden fazla anahtar varsa bunlardan her
birine aday anahtar adı verilir.
Örneğin; ödünç kitap tablosunda üye_no ve erisim_no aday
anahtardır.
Birincil anahtar (primary key): Aday anahtarlardan seçilenidir. Birincil
anahtar tekil olduğu zaman süper anahtar olur.
Dr. Hidayet Takçı - Veritabanlarına Giriş 14
15. Anahtar kısıtlaması: Herhangi bir tablodaki
her bir satır için anahtarın tek olması gerekir.
Varlık bütünlük kısıtlaması: Anahtar niteliği
boş olamaz.
Referanslı bütünlük kısıtlaması: Eğer bir
tablodaki bir satır başka bir tablodaki başka
bir satırı referans ediyorsa referans edilen
satır var olmalıdır.
Dr. Hidayet Takçı - Veritabanlarına Giriş 15
16. İlişkisel Cebir, ilişkisel veri modelindeki bazı
operasyonların matematiksel olarak anlatılması
için kullanılır. İlişkisel cebir işlemleri şöyledir:
Seçme (select) işlemi
Projeksiyon (project) işlemi
Kartezyen çarpım (cartesian product) işlemi
Birleştirme (join) işlemi
Toplama (union) işlemi
Kesiştirme (intersect) işlemi
Çıkarma (difference) işlemi
Bölme (division) işlemi
Dr. Hidayet Takçı - Veritabanlarına Giriş 16
17. Örneğin:
R = (A, B, C, D)
S = (E, B, D)
Sonuç şeması = (A, B, C, D, E)
R ve s aşağıdaki şekilde tanımlanır:
∏r.A, r.B, r.C, r.D, s.E (σr.B = s.B ∧ r.D = s.D (r x s))
Dr. Hidayet Takçı - Veritabanlarına Giriş 17
18. r
r, s ilişkileri:
s
A B C D B D E
α 1 α a 1 a α
β 2 γ a 3 a β
γ 4 β b 1 a γ
α 1 γ a 2 b δ
δ 2 β b 3 b ∈
r s
A B C D E
α 1 α a α
α 1 α a γ
α 1 γ a α
α 1 γ a γ
δ 2 β b δ
Dr. Hidayet Takçı - Veritabanlarına Giriş 18
19. VTYS, verileri yan bellekte tutar. Bu yüzden
veritabanlarında sıklıkla READ (yan bellekten
okuma) ve WRITE (yan belleğe yazma) işlemi
meydana gelir.
READ ve WRITE işlemleri ana bellek işlemlerine
oranla daha yavaştır o yüzden iyi performans için
planlama zorunludur.
Fiziksel tasarım performansı artırıcı çalışmalarla ilgilidir.
VTYS için yan bellek kullanımının iki önemli sebebi
vardır.
Ana bellekte veri tutmak pahalıdır.
Ana bellekteki veriler kalıcı değildir.
Dr. Hidayet Takçı - Veritabanlarına Giriş 19
20. READ ve WRITE işleminin süresi üç işlemin süresine
bağlıdır.
Arama zamanı: disk kolunun okuma yapacağı uygun diski
bulması için gereken zaman.
Dönme zamanı: okuyucu kafanın disk başından okuma /
yazma yapılacak yere ulaşma zamanı.
Aktarım zamanı: verinin iki uç (yan bellek – ana bellek)
arasında iletilme süresi.
Bu sürelerden en çok zaman alanı arama ve dönme
zamanıdır.
Dr. Hidayet Takçı - Veritabanlarına Giriş 20
21. Veritabanı performansı için giriş çıkış işlemlerini en
aza indirmek gerekmektedir. Bunun için diskte
sayfaların yerleşim şekilleri önemlidir.
Performans artımı için veri organizasyon teknikleri
geliştirilmiştir. (ardı sıra vs.)
Performans için bir başka yöntem tampon (buffer)
kullanımıdır. Tampon kullanımında en bilinen
teknikler şunlardır:
Son zamanlarda en az kullanılan verilerin
tampondan atılması (tampon boşaltma).
En son ve sıklıkla kullanılan verilerin tampon
belleğe alınması (tampon doldurma).
Dr. Hidayet Takçı - Veritabanlarına Giriş 21
22. Dosya, kayıt grupları içeren sayfaların toplamıdır.
Yani kayıtlar sayfaları sayfalar da dosyaları
oluşturur.
Sayfaları oluşturan kayıtlar iki tiptir.
Sabit uzunluklu kayıtlar
▪ Her bir kayda ait uzunluk sabittir. Örneğin, her bir kayıt 250
karakterden oluşur gibi.
Değişken uzunluklu kayıtlar
▪ Kayıt uzunlukları eşit olmak durumunda değildir. Değişken
uzunluklu kayıtlarda kaydı oluşturan alanlar birbirinden ayırıcı
karakterlerle ayrılırlar. Ayrıca başta kaydın kaç adet alandan
oluştuğu belirtilir.
Dr. Hidayet Takçı - Veritabanlarına Giriş 22
23. Eğer kayıtların sayfa sınırlarını aşmasına
(başka sayfaya bölünme) izin verilmiyorsa
buna aktarımsız organizasyon adı verilir.
Eğer bir kayıt birden fazla bloğa taşabiliyorsa
buna aktarımlı organizasyon adı verilir.
Dr. Hidayet Takçı - Veritabanlarına Giriş 23
24. Üç teknik
Heap (sırasız)
Sıralı
▪ Sequential (SAM-Sıralı erişimli bellek)
▪ Indexed Sequential (ISAM-İndeksli sıralı erişimli bellek)
Hash edilmiş veya Direct (doğrudan)
Dr. Hidayet Takçı - Veritabanlarına Giriş 24
25. Verilere hızlı erişim tekniklerinden birisi de
indekslemedir.
Bir sıralayıcı alana göre kayıtların bir indeks
dosyasında toplanmasıyla indeksleme
sağlanır.
İndeksleme sayesinde verilerin çeşitli
kategorilere göre sıralanma imkanları vardır.
Tek seviyeli, çok seviyeli, hashed tarzında
indeksleme yapıları vardır.
Dr. Hidayet Takçı - Veritabanlarına Giriş 25
26. İlişkisel şemalardaki problemlerin temelinde
verilerde oluşabilecek tekrarlanma vardır.
Tutarlılık kısıtları, özellikle fonksiyonel
bağımlılıklar şemalarda oluşabilecek bu
problemleri tespit etmede kullanılır.
Veritabanı problemlerini çözebilmenin en iyi
yöntemi ayrıştırmadır.
Yani ABCD niteliklerinden oluşan bir şema AB ve
ACD niteliklerinden oluşan iki farklı şemaya
ayrıştırılabilir.
Ayrıştırmanın tipi önemli bir konudur.
Dr. Hidayet Takçı - Veritabanlarına Giriş 26
27. Niteliklerin anlamları olmalı: her bir niteliğin bir
diğerleriyle olan ilgileri ve nasıl yorumlanmaları
gerektiği belirgin olmalıdır.
Veri giriş ve güncelleme problemleri engellenmeli:
aynı verinin iki kez girilmesi, olmayan verinin
silinmeye çalışılması veya güncellenmeye
çalışılması gibi hatalar engellenmelidir.
Boş değerler minimize edilmeli: veri girişlerinde
mümkün olduğu kadar boş geçmemeye dikkat
edilmeli.
İlave satırlar engellenmeli: tabloların birleştirilmesi
sonucu bazen gereksiz satırlar meydana gelir. İlave
satırların engellenmesi için şart cümlecikleri doğru
yazılmalıdır. (where cümleciğinden sonrası)
Dr. Hidayet Takçı - Veritabanlarına Giriş 27
28. Büyük miktarda veri tutabilmekte ve verilerin
depolandığı alanları ayarlama imkanı vermektedir.
Oracle 8 sürümü ile birlikte on binlerce kullanıcıya
hizmet verebilmektedir.
Günün 24 saati ve haftalar boyu hiç kapatılmadan
çalışabilmektedir.
İşletim sistemi, veri erişim dilleri ve ağ iletişim
protokolleri standartlarıyla uyumludur.
Yetkisiz erişimleri engelleme ve kontrol edebilme
imkanı sağlamaktadır.
Bütünlüğü veritabanı düzeyinde
sağlayabilmektedir, böylece daha az kod
yazılmaktadır.
İstemci/Sunucu mimarisinin bütün avantajlarını
kullanabilmektedir.
Dr. Hidayet Takçı - Veritabanlarına Giriş 28
29. Oracle RDBMS
Oracle ilişkisel veritabanı yönetim sistemi Oracle
şirketinin ana ürünüdür. Bu ürünün şu an en yeni
sürümü Oracle10g RDBMS’dir.
Bu çalışmada Oracle8i esas alınacaktır. Oracle
8i’den bir önceki sürüm Oracle 7 ve onun bir
önceki sürümü de Oracle 6’dır.
Dr. Hidayet Takçı - Veritabanlarına Giriş 29
30. Oracle’ın veritabanı uygulamaları geliştirmek için görsel ürünleri bu grupta yer
alır.
Bu ürünlerinin eski adı Oracle Power Objects idi. Daha sonra Oracle Developer
2000 ve sonra da Oracle Developer 6 ürünleri geliştirildi.
Developer 2000 ve Developer 6 içerisinde;
Form Builder,
Report Builder,
Graphics Builder,
Procedure Builder ve
Schema Builder ürünleri bulunur.
Form Builder kullanıcıya sunulacak arayüzlerin geliştirildiği programdır.
Report Builder ürünü veritabanından elde edilen bilgiler ile raporlar hazırlamaya
yarar (fatura, evrak gibi belgeler)
Procedure Builder sürekli kullanılacak kodların prosedürler halinde oluşturulup,
kütüphaneler olarak kaydedilmesi işlemine yarayan bir programdır.
Schema Builder ise veritabanı nesnelerinin görsel olarak oluşturulabilmesi için
geliştirilmiş bir uygulamadır.
Dr. Hidayet Takçı - Veritabanlarına Giriş 30
31. SQL*Plus, Oracle veritabanında sorgulama
yapmak ve SQL komutlarını çalıştırmak için
kullanılan bir araçtır.
SQL*Plus’da SQL komutlarının yanı sıra
PL/SQL komutları da kullanılabilmektedir.
Dr. Hidayet Takçı - Veritabanlarına Giriş 31
32. PL/SQL (Procedural Language/SQL), yapısal dillere ait
özelliklerin standart SQL’e eklenmesiyle ortaya çıkan
Oracle’a has bir dildir.
PL/SQL Oracle firmasının piyasaya sürdüğü her üründe
önemli bir yere sahiptir. Kullanıcılar PL/SQL’i kullanarak
programlarına bir çok yeni özellikler katmaktadırlar. Bunlar
arasında;
PL/SQL tabanlı kaydedilmiş yordamlar stored procedures)
ve veritabanı tetiklemeleri(triggers) ile önemli iş kurallarını
programlamak
Oracle Developer ürünleri ile güçlü ve kolay kullanılabilir
görsel ortamlarla programları detaylandırmak ve daha
rahat kontrol etmek
Dr. Hidayet Takçı - Veritabanlarına Giriş 32
33. Net8 Oracle’ın bir ağ ürünüdür.
Farklı bilgisayarların veritabanına bağlantı
kurması ve ve istemci-sunucu arasında veri
alışverişinin sağlanabilmesi Net8’in ana
görevidir.
Net8 ağdaki her bilgisayara kurulur. Ağ
bağlantısı sağlandığında NET8 istemci ile
sunucu arasında bir veri taşıyıcısı gibi işlem
görür.
Dr. Hidayet Takçı - Veritabanlarına Giriş 33
34. SQL*Net Net8’in yardımcı programıdır.
Bir istemci bilgisayara Oracle Forms ürününün
yüklendiğini düşünelim.
Bunun için istemci bilgisayar SQL*Net ile oluşturulan
veritabanı takma adını (alias) kullanır. İstemci
bilgisayardaki konfigurasyon ayarlama işi SQL*Net
sayesinde yapılır.
Veritabanına verilecek takma isim, protokol adı, ana
bilgisayar adı(veritabanının bulunduğu) ve veritabanının
SID olarak girilen ismi bilgileri girilerek düzenleme yapılır.
Dr. Hidayet Takçı - Veritabanlarına Giriş 34
35. Bütün önemli nesne tabanlı kavramları
destekleyen veritabanı sistemidir
Nesneler – kullanıcı tarafından tanımlı karmaşık
veri tipleridir.
Bir nesnenin; yapısı veya durumu (variables) ile
ona ait yöntemleri (behavior/operations) vardır
Bir nesne dört karakteristiği ile açıklanır
Identifier: Her bir nesne için sistem tarafından verilen ID
Name: Veritabanında her bir nesneyi benzersiz olarak
tanımlayacak bir isim
Lifetime: Bir nesnenin kalıcı veya geçici bir nesne olup olmadığı
Structure: Tip yapıcılar kullanılarak nesnelerin inşa edilmesi
Dr. Hidayet Takçı - Veritabanlarına Giriş 35
36. Abstract Data Types (soyut veri tipleri)
Class tanımı, karmaşık nitelik tipleri tanımlamaya izin verir.
Encapsulation (kapsülleme)
Operasyonların gerçekleştirimini ve nesne yapısının gizliliğini sağlar
Inheritance (kalıtım)
Hiyerarşi kapsamı içinde verinin paylaşımını sağlar, kodun yeniden
kullanımını destekler
Polymorphism
• Operator overloading destekler (bir nesneye birden fazla görev
yükleme gibi)
Dr. Hidayet Takçı - Veritabanlarına Giriş 36
37. Tasarımcı nesnelerin yapısı ve onların
davranışlarını belirleyebilir
Java ve C++ gibi nesne tabanlı diller ile daha
iyi etkileşim sağlanır
Karmaşık ve kullanıcı tanımlı tipler
tanımlanabilir
İşlemlerin paketlenmesi ve kullanıcı tanımlı
işlemlerin yapılması mümkün hale gelir.
Dr. Hidayet Takçı - Veritabanlarına Giriş 37
38. XML Extensible Markup Language anlamına gelir.
XML World Wide Web Consortium (www.W3C.org)
tarafından geliştirilmiştir.
1996 yılında oluşturulmuş. İlk şartnamesi 1998
yılında W3C tarafından yayınlanmıştır.
Internet üzerinde bilgi alış verişi için
tasarlanmıştır.
XML, HTML gibi bir işaretleme dilidir. Fakat HTML
gibi önceden tanımlı etiketlere sahip değildir.
Kendi elemanlarınızı oluşturabilir ve onlara isimler
verebilirsiniz, bu konuda esneklik vardır.
HTML içeriğin sunumunu açıklar, XML içeriğin
kendini açıklar.
Dr. Hidayet Takçı - Veritabanlarına Giriş 38
39. XML veri takası için kullanılır
XML ile, veri farklı sistemler arasında
değiş tokuş edilebilir.
XML ile, finansal bilgi Internet üzerinden
takas edilebilir
XML veriyi paylaşmak için kullanılabilir
XML veriyi saklamak için kullanılabilir
XML verilerinizi daha faydalı hale
getirebilir
XML yeni dilleri oluşturma için kullanılabilir
Dr. Hidayet Takçı - Veritabanlarına Giriş 39
40. <Bibliography>
<Book>
<Title> Java </Title>
Book <Author> Mustafa </Author>
Title Author year <Year> 1995 </year>
Java Mustafa 1995 </Book>
Pascal Ahmed 1980 …
…
Basic Ali 1975 …
Oracle Emad 1973 <Book>
…. …. <Title> Oracle </Title>
<Author> Emad </Author>
<Year> 1973 </Year>
Tablo </Book>
….
….
</ Bibliography>
XML document
Dr. Hidayet Takçı - Veritabanlarına Giriş 40
41. Kütüphane veritabanı şeması
Tabloların oluşturulması
Tablolar arası ilişkilerin varlık ilişki ve ilişkisel
modeldeki gösterimleri
Sorgu örnekleri
Web+veritabanı kullanımı
Dr. Hidayet Takçı - Veritabanlarına Giriş 41
46. SQL Explorer ile Çalışma
Dr. Hidayet Takçı - Veritabanlarına Giriş 46
47. Bundan sonraki adımlarda doğrudan yapılacak
işlemle ilgili SQL ifadesi yazılıp geçilecektir. Her bir
iş için ayrı ayrı gösterimler kullanılmayacaktır.
Dr. Hidayet Takçı - Veritabanlarına Giriş 47
48. YAZARTIPLERI Tablosu
CREATE TABLE YAZARTIPLERI
(
YAZARTIPI INTEGER NOT NULL,
YAZARTIPADI CHAR (20),
PRIMARY KEY(YAZARTIPI)
)
YAZAR Tablosu
CREATE TABLE YAZAR
(
YAZARNO INTEGER NOT NULL,
YAZARADI CHAR (50),
YAZARTIPI INTEGER NOT NULL,
DNO INTEGER NOT NULL,
PRIMARY KEY(YAZARNO),
FOREIGN KEY (YAZARTIPI) REFERENCES YAZARTIPLERI
FOREIGN KEY (DNO) REFERENCES KITAP,
)
Dr. Hidayet Takçı - Veritabanlarına Giriş 48
49. TABLOYA VERİ EKLEME
INSERT INTO YAZARTIPLERI
VALUES (1, ‘Editör’)
TABLODAKİ VERİYİ DÜZELTME
UPDATE SET YAZARTIPADI=‘Baş Yazar’ WHERE
YAZARTIPI=1
TABLODAN BİR KAYIT SİLME
DELETE FROM YAZARTIPLERI WHERE YAZARTIPI=2
Dr. Hidayet Takçı - Veritabanlarına Giriş 49
50. SEÇME:
SELECT *FROM YAZAR WHERE YAZARTIPI=2
(yazar tipi=2 çevirmeni göstermek üzere, bu sorgu yazar tablosunda yer alan
çevirmenlerin listesini verir.)
PROJEKSİYON:
SELECT YAZARADI, YAZARTIPI FROM YAZAR WHERE DNO=1505
AND YAZARTIPI=1
(demirbaş numarası 1505 olan kitabın editörlerini verir.)
JOIN:
SELECT YT.YAZARTIPADI, Y.YAZARADI FROM YAZARTIPLERI YT,
YAZAR Y WHERE Y.YAZATIPI=YT.YAZARTIPI
Dr. Hidayet Takçı - Veritabanlarına Giriş 50
51. Kavramsal Modelde Varlıklar Arası İlişkiler
YAZARTIPADI DNO
YAZARTIPI YAZARNO
YAZARTIPLERI İLİŞKİ YAZAR
1-M İLİŞKİ
İlişkisel modelde oluşturulan ilişkiler arasındaki ilişkilerin kavramsal modelde sunumu .
Dr. Hidayet Takçı - Veritabanlarına Giriş 51
53. NOTLAR Tablosu
CREATE TABLE NOTLAR
( NOTNO INTEGER NOT NULL,
NOT CHAR (200),
DNO INTEGER NOT NULL,
PRIMARY KEY(NOTNO)
FOREIGN KEY(DNO) REFERENCES KITAP )
KONUBASLIK Tablosu
CREATE TABLE KONUBASLIK
( KONUBNO INTEGER NOT NULL,
KONUB CHAR (100),
DNO INTEGER NOT NULL,
PRIMARY KEY(KONUBNO)
FOREIGN KEY(DNO) REFERENCES KITAP )
Dr. Hidayet Takçı - Veritabanlarına Giriş 53
54. NOTLAR VE KONUBASLIK ARASINDAKİ İLİŞKİ M < -- > 1
NOTNO DNO KONUBNO KONUB
NOT
NOTLAR İLİŞKİ KONUBASLIK
M-1 İLİŞKİ
Dr. Hidayet Takçı - Veritabanlarına Giriş 54
55. CREATE TABLE KITAP
(
DNO INTEGER NOT NULL,
KADI CHAR (250),
ORNEKAD CHAR (200),
BASIM CHAR (20),
YY CHAR (50),
YE CHAR (50),
YT CHAR (10),
ISBN CHAR (50),
OZET CHAR (250),
BOLUMNO INTEGER,
UYENO INTEGER,
FOZELIK CHAR (100),
DIZI CHAR (100),
TASNIFNO CHAR (50),
FIYAT INTEGER,
FIRMANO INTEGER,
GELISTAR DATE,
DILNO INTEGER,
ADET INTEGER,
PRIMARY KEY (DNO),
FOREIGN KEY (BOLUMNO) REFERENCES BOLUM,
FOREIGN KEY (UYENO) REFERENCES UYE,
FOREIGN KEY (FIRMANO) REFERENCES FIRMA,
FOREIGN KEY (DILNO) REFERENCES DILLER
)
Dr. Hidayet Takçı - Veritabanlarına Giriş 55
56. NOTLAR, KONUBASLIK ve YAZAR ARASINDAKİ
ÜÇLÜ İLİŞKİ
NOTNO DNO KONUBNO KONUB
NOT
NOTLAR ÜÇLÜ İLİŞKİ KONUBASLIK
YAZARNO YAZAR
Dr. Hidayet Takçı - Veritabanlarına Giriş 56
57. BÖLÜM TABLOSU
CREATE TABLE BOLUM
( BOLUMNO INTEGER NOT NULL,
BOLUM_ADI CHAR(50) NOT NULL,
PRIMARY KEY (BOLUMNO))
GRUB TABLOSU
CREATE TABLE GRUB
( GRUP_NO INTEGER NOT NULL,
GRUP_ADI CHAR(15) NOT NULL,
PRIMARY KEY(GRUP_NO) )
UNVAN TABLOSU
CREATE TABLE UNVAN
( UNVAN_NO INTEGER NOT NULL,
UNVAN_ADI CHAR(15) NOT NULL,
PRIMARY KEY(UNVAN_NO) )
Dr. Hidayet Takçı - Veritabanlarına Giriş 57
58. ÜYE TABLOSU
CREATE TABLE UYE
(UYENO INTEGER NOT NULL,
ADSOYAD CHAR(40) NOT NULL,
BOLUM INTEGER,
GRUP INTEGER,
UNVAN INTEGER,
ADRES CHAR(150),
MAIL CHAR(100),
TEL CHAR(15)
GSM CHAR(15),
PRIMARY KEY(UYENO),
FOREIGN KEY (BOLUM) REFERENCES BOLUM,
FOREIGN KEY (GRUP) REFERENCES GRUB,
FOREIGN KEY (UNVAN) REFERENCES UNVAN )
Dr. Hidayet Takçı - Veritabanlarına Giriş 58
59. BÖLÜM, ÜYE ve KİTAP TABLOSU
ARASINDAKİ İLİŞKİ
BOLUMADI BOLUMNO ADSOYAD .... Bu ilişki sayesinde
Rezervasyon yaptıran
Üyenin hangi bölümde
Olduğu gibi bilgiler
Elde edilebilir.
BÖLÜM İLİŞKİ ÜYE
UYENO İLİŞKİ
DNO
...
KADI
KITAP
Dr. Hidayet Takçı - Veritabanlarına Giriş 59
60. BÖLÜM, ÜYE ve KİTAP Tabloları arası
ilişkilerin MS Access’te sunumu.
Dr. Hidayet Takçı - Veritabanlarına Giriş 60
61. ÖDÜNÇ TABLOSU
CREATE TABLE ODUNC
(UYENO INTEGER NOT NULL,
ERISIMNO INTEGER NOT NULL,
ALISTAR DATE,
IADETAR DATE,
FOREIGN KEY (UYENO) REFERENCES UYE
FOREIGN KEY (ERISIMNO) REFERENCES KUTUP)
Dr. Hidayet Takçı - Veritabanlarına Giriş 61
62. ODUNC, ÜYE ve KİTAP Tabloları arası
ilişkilerin MS Access’te sunumu.
Dr. Hidayet Takçı - Veritabanlarına Giriş 62
63. Örnek 1: Üye tablosuna bir kayıt eklemek için
gerekli SQL ifadesini yazınız.
INSERT INTO uye
VALUES (360,’Ali Veli’,’Bilgisayar’,’Öğrenci’,
‘Lisans’, ‘Kocaeli’, ‘aveli@yahoo.com’, ‘0800xxx’,
‘0999xxx’)
Örnek 2: Üye numarası, üye adı ve mail adresi
bilgilerini seçen SQL ifadesiniz yazınız.
SELECT uyeno, adsoyad, mail FROM uye
Dr. Hidayet Takçı - Veritabanlarına Giriş 63
64. Örnek 3: odunc tablosundan üye numaralarını ve
kitap tablosundan konu başlıklarını bulacak SQL
ifadelerini yazınız.
SELECT DISTINCT uyeno FROM odunc
SELECT DISTINCT konub FROM kitap
Dr. Hidayet Takçı - Veritabanlarına Giriş 64
65. Örnek 4: bölüm sırasına göre üye bilgilerini gösteren
bir SQL ifadesi yazınız.
SELECT uyeno, adsoyad, bolum FROM uye ORDER
BY bolum ASC
Örnek 5: fiyatı 5 milyon liradan fazla olan kitaplara
ait bilgiler.
SELECT * FROM kitap WHERE fiyat >5.000.000
Dr. Hidayet Takçı - Veritabanlarına Giriş 65
66. Örnek 6: Fiyatı 10.000.000 ’dan daha az olan kitap
isimleri ile kitapların fiziksel özellikleri.
SELECT kitap_adı, fiziksel_ozellik
FROM kitap WHERE fiyat<=1000000
Örnek 7: Bilgisayar bölümü haricindeki üyelerin
listesi.
SELECT * FROM uye
WHERE bolum<> “Bilgisayar”
Dr. Hidayet Takçı - Veritabanlarına Giriş 66
67. ÖRNEK 8: bugün kitap iade etmesi gerektiği halde
kitap iade etmeyenler yani kitap geciktirenlerin listesi
SELECT * FROM odunc
WHERE iade_tar < {9.Ağustos.2012}
ÖRNEK 9: Bilgisayar bölümünde lisans
öğrencilerinin listesini veren SQL ifadesini yazınız.
SELECT * FROM uyeWHERE bolum=“Bilgisayar”
AND grup=“Öğrenci”
Dr. Hidayet Takçı - Veritabanlarına Giriş 67
68. ÖRNEK 10: 1, 2 ve 5 numaralı bölümlerde okuyan
üyelerin listesini veren SQL ifadesini yazınız.
SELECT * FROM uye WHERE bolum IN
(1,2,5)
ÖRNEK 11: fiyatı 5 ile 10 milyon arasında bulunan
kitapların listesini veren SQL ifadesi.
SELECT * FROM kitap
WHERE fiyat>=5000000 AND fiyat <=10000000
veya
SELECT * FROM kitap
WHERE fiyat BETWEEN 5000000 AND
10000000
Dr. Hidayet Takçı - Veritabanlarına Giriş 68
69. Örnek 12: İçinde “programming” veya “database” geçen kitap
isimlerini listeleyen SQL ifadesini yazınız.
SELECT * FROM kitap
WHERE kadi LIKE ‘%Programming’ or kadi
LIKE=‘%database%’
Örnek 13: Bilgisayar kitaplarının fiyatlarını yüzde 20 zamlı
olarak hesaplamak istersek.
SELECT kitap_no, kitap_adı, fiyat*1.20
FROM kitap where bolum=“bilgisayar”
Dr. Hidayet Takçı - Veritabanlarına Giriş 69
70. Örnek 14: eldeki kitapların toplam maliyeti nedir ?
SELECT SUM (fiyat)
FROM kitap
Örnek 15: biyoloji bölümündeki kitapların toplam
maliyeti nedir? (biyoloji için bölüm no=217)
SELECT SUM( fiyat) FROM kitap WHERE
bolum=217
Örnek 16: Bilgisayar kısmında bulunan kitapların fiyat
ortalaması nedir? (bilgisayar için bölüm no=104)
SELECT AVG(fiyat) FROM kitap WHERE
bolum=104
Dr. Hidayet Takçı - Veritabanlarına Giriş 70
71. Örnek 17:Kütüphanedeki en yüksek fiyatlı kitap ne kadardır ?
SELECT MAX (fiyat) FROM kitap
Örnek 18: Bilgisayar kısmındaki en pahalı kitabın fiyatı
nedir?
SELECT MAX (fiyat) FROM kitap WHERE bolum=104
Örnek 19: kütüphaneye 01/01/2004 ten sonra gelen kitapların
minimum fiyatlı olanı hangisidir.
SELECT MIN (fiyat) FROM kitap WHERE
gelistar>{01/01/04}
Örnek 20: kütüphanede 5000000 liradan daha pahalı
kaç tane kitap vardır?
SELECT COUNT (*) FROM kitap WHERE fiyat
>5000000
Dr. Hidayet Takçı - Veritabanlarına Giriş 71
72. Örnek 21: her bir bölümde bulunan kitaplar
için ortalama kitap fiyatları nedir?
SELECT bolum, AVG (fiyat)
FROM kitap GORUP BY bolum
Örnek 22: her bir bölümdeki maksimum fiyatlı
kitap ile o kitabın adı nedir?
SELECT bolum, MAX(fiyat), kitap_adı
FROM kitap GROUP BY bolum
Dr. Hidayet Takçı - Veritabanlarına Giriş 72
73. Örnek 23: ortalama fiyatları 6 milyondan fazla olan kitapların
bölümlere göre fiyat ortalamalarını hesap ediniz.
SELECT bolum, AVG (fiyat)
FROM kitap
GROUP BY bolum
HAVING AVG( fiyat) >6000000
Örnek 24: Demirbaş numarası 1000 ile 2000 arasında olan
kitapları ödünç alan üyeleri listeleyin.
SELECT * FROM uye
WHERE uyeno IN(SELECT uyeno FROM oduncver
WHERE dno>1000 and dno<2000 )
Dr. Hidayet Takçı - Veritabanlarına Giriş 73
74. Web tabanlı uygulamalar geliştirirken sıklıkla web ile
veritabanını buluşturan işler yapmak gerekir. Burada
web formları ile veritabanının kullanımına birkaç
örnek verilecektir.
Dr. Hidayet Takçı - Veritabanlarına Giriş 74
75. Üye bilgileri giriş formu ile üye tablosuna web üzerinden değer göndermek
mümkündür gönderilen bu değerler gönderilen dosyada işlenerek veritabanına
eklenir.
Dr. Hidayet Takçı - Veritabanlarına Giriş 75
76. <%
d1=request.form("d1")
d2=request.form("d2")
d3=request.form("d3")
d4=request.form("d4")
d5=request.form("d5")
d6=request.form("d6")
d7=request.form("d7")
d8=request.form("d8")
d9=request.form("d9")
d10=request.form("d10")
set baglanti=server.createobject("adodb.connection")
baglanti.Open("DRIVER={Microsoft Access Driver (*.mdb)};
DBQ=" &Server.MapPath("db/kutuphane.mdb"))
set rs=server.createobject("adodb.recordset")
rs.open "insert into UYELER
values("&d1&",'"&d2&"','"&d3&"','"&d4&"','"&d5&"','"&d6&"','"&d7&"'
,'“&d8&"','"&d9&"','"&d10&"')", baglanti, adOpenStatic
set rs=nothing %>
Dr. Hidayet Takçı - Veritabanlarına Giriş 76
77. Bu form sayesinde üye bilgilerini güncellemek mümkündür, form eski bilgileri
Ekrana getirmekte ve kullanıcı istediği bilgileri değiştirip güncelleme ile ilgili
Dosyaya verileri göndermektedir.
Dr. Hidayet Takçı - Veritabanlarına Giriş 77
79. Üye kaydını silmek için önce üyenin kaydı çağrılır sonra onay verilerek silme
İşlemi bir sonraki dosyada yerine getirilir.
Dr. Hidayet Takçı - Veritabanlarına Giriş 79
82. <%
param1=request.QUERYSTRING("uyeno")
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open("DRIVER={Microsoft Access Driver (*.mdb)};
DBQ=" & Server.MapPath("db/kutuphane.mdb"))
Set rs = Server.CreateObject("ADODB.Recordset")
rs.open "Select DNO, KUTUP.KADI, ALISTAR from
ODUNCVER, KUTUP WHERE
ODUNCVER.ERISIMNO=KUTUP.DNO AND
ODUNCVER.UYENO="¶m1&" ORDER BY DNO",
oConn, adOpenStatic
Set rs1 = Server.CreateObject("ADODB.Recordset")
rs1.open "Select *FROM UYELER WHERE
UYENO="¶m1, oConn, adOpenStatic
%>
Dr. Hidayet Takçı - Veritabanlarına Giriş 82