SlideShare uma empresa Scribd logo
1 de 82
Yrd. Doç. Dr. Hidayet Takcı
htakci@sucati.org
http://htakci.sucati.org
 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
 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
 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
   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
   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
   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
Dr. Hidayet Takçı - Veritabanlarına Giriş   8
Dr. Hidayet Takçı - Veritabanlarına Giriş   9
 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
Dr. Hidayet Takçı - Veritabanlarına Giriş   11
 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
   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
   İ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
 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
 İ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
 Ö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
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
 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
   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
   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
 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
 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
 Üç 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
 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
 İ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
 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
 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
 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
 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
 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
   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
 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
 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
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
   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
 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
   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
 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
<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
 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
Dr. Hidayet Takçı - Veritabanlarına Giriş   42
   YAZARTIPLERI(YAZARTIPI, YAZARTIPADI)
   YAZAR(YAZARNO, YAZARADI, YAZARTIPI, DNO)
   NOTLAR(NOTNO, NOTLAR, DNO)
   KONUBASLIK(KONUBNO, KONUB, DNO)
   YAPITADI(YAPITNO, YAPITADI, DNO)
   FIRMA(FIRMANO, FIRMAADI)
   DILLER(DILNO, DILADI)
   KITAP(DNO, KADI, ORNEKAD, BASIM, YY, YE, YT,
    ISBN, OZET, BOLUMNO, UYENO, FOZELIK, DİZİ,
    TASNIFNO, FIYAT, FIRMANO, GELISTAR, DILNO,
    ADET)



              Dr. Hidayet Takçı - Veritabanlarına Giriş   43
   BOLUM(BOLUMNO, BOLUMADI)
   GRUP(GRUPNO, GRUPADI)
   UNVAN(UNVANNO, UNVANADI)
   UYE(UYENO, ADSOYAD, BOLUM, GRUP, UNVAN, ADRES,
    MAIL, TEL, GSM)
   ODUNC(UYENO, DNO, ALISTAR, IADETAR)
   IADE(UYENO, DNO, GELISTAR)




              Dr. Hidayet Takçı - Veritabanlarına Giriş   44
Database Desktop ile Çalışma




      Dr. Hidayet Takçı - Veritabanlarına Giriş   45
SQL Explorer ile Çalışma




       Dr. Hidayet Takçı - Veritabanlarına Giriş   46
   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
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
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
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
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
İlişkisel modelde tablolar arası ilişkinin sunumu




        Dr. Hidayet Takçı - Veritabanlarına Giriş   52
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
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
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
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
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
Ü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
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
BÖLÜM, ÜYE ve KİTAP Tabloları arası
ilişkilerin MS Access’te sunumu.




 Dr. Hidayet Takçı - Veritabanlarına Giriş   60
Ö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
ODUNC, ÜYE ve KİTAP Tabloları arası
ilişkilerin MS Access’te sunumu.
                Dr. Hidayet Takçı - Veritabanlarına Giriş   62
   Ö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
   Ö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
 Ö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
 Ö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
 Ö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
 Ö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
   Ö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
 Ö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
   Ö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
 Ö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
   Ö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
   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
Ü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
<%
 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
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
<
%
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 “update UYELER set UYENO= "&d1&", ADSOYAD='"&d2&"',
   …)", baglanti, adOpenStatic
   set rs=nothing
%>



                  Dr. Hidayet Takçı - Veritabanlarına Giriş           78
Ü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
<%
d1=request.form("d1")
set baglanti=server.createobject("adodb.connection")
baglanti.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" &
   Server.MapPath("db/kutuphane.mdb"))
set rs1=server.createobject("adodb.recordset")
rs1.open "delete from UYELER WHERE UYENO="&d1,baglanti,
   adOpenStatic
set rs1=nothing
%>




                  Dr. Hidayet Takçı - Veritabanlarına Giriş        80
Dr. Hidayet Takçı - Veritabanlarına Giriş   81
<%
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="&param1&" ORDER BY DNO",
   oConn, adOpenStatic
Set rs1 = Server.CreateObject("ADODB.Recordset")
rs1.open "Select *FROM UYELER WHERE
UYENO="&param1, oConn, adOpenStatic
%>

               Dr. Hidayet Takçı - Veritabanlarına Giriş   82

Mais conteúdo relacionado

Semelhante a Veritabanları

Veri tabaniprogramlama 12.10.2012
Veri tabaniprogramlama 12.10.2012Veri tabaniprogramlama 12.10.2012
Veri tabaniprogramlama 12.10.2012Sevdanur Genc
 
BÖLÜM-2-Veri-ve-Veri-Modelleri.pptx
BÖLÜM-2-Veri-ve-Veri-Modelleri.pptxBÖLÜM-2-Veri-ve-Veri-Modelleri.pptx
BÖLÜM-2-Veri-ve-Veri-Modelleri.pptxzealcoco2
 
Veri işleme üzerine, Hakan Sarıbıyık
Veri işleme üzerine, Hakan SarıbıyıkVeri işleme üzerine, Hakan Sarıbıyık
Veri işleme üzerine, Hakan SarıbıyıkHakan Sarıbıyık
 
FPGA ve VHDL Ders - 4
FPGA ve VHDL Ders - 4FPGA ve VHDL Ders - 4
FPGA ve VHDL Ders - 4SerkanDereli2
 
Big Data Analytics
Big Data AnalyticsBig Data Analytics
Big Data AnalyticsMudur Alkan
 
Internet programcılığı 2
Internet programcılığı 2Internet programcılığı 2
Internet programcılığı 2Erol Dizdar
 

Semelhante a Veritabanları (8)

Veri tabaniprogramlama 12.10.2012
Veri tabaniprogramlama 12.10.2012Veri tabaniprogramlama 12.10.2012
Veri tabaniprogramlama 12.10.2012
 
BÖLÜM-2-Veri-ve-Veri-Modelleri.pptx
BÖLÜM-2-Veri-ve-Veri-Modelleri.pptxBÖLÜM-2-Veri-ve-Veri-Modelleri.pptx
BÖLÜM-2-Veri-ve-Veri-Modelleri.pptx
 
Nosql ve mongoDB
Nosql ve mongoDBNosql ve mongoDB
Nosql ve mongoDB
 
Veri işleme üzerine, Hakan Sarıbıyık
Veri işleme üzerine, Hakan SarıbıyıkVeri işleme üzerine, Hakan Sarıbıyık
Veri işleme üzerine, Hakan Sarıbıyık
 
FPGA ve VHDL Ders - 4
FPGA ve VHDL Ders - 4FPGA ve VHDL Ders - 4
FPGA ve VHDL Ders - 4
 
Big Data Analytics
Big Data AnalyticsBig Data Analytics
Big Data Analytics
 
Delphi 7
Delphi 7Delphi 7
Delphi 7
 
Internet programcılığı 2
Internet programcılığı 2Internet programcılığı 2
Internet programcılığı 2
 

Mais de Cumhuriyet Üniversitesi (7)

Gereksinim Analizi Dokümanı Hazırlama
Gereksinim Analizi Dokümanı HazırlamaGereksinim Analizi Dokümanı Hazırlama
Gereksinim Analizi Dokümanı Hazırlama
 
Pascal
Pascal Pascal
Pascal
 
ALGOL ailesi programlama dilleri
ALGOL ailesi programlama dilleriALGOL ailesi programlama dilleri
ALGOL ailesi programlama dilleri
 
Phyton Programlama Dili
Phyton Programlama DiliPhyton Programlama Dili
Phyton Programlama Dili
 
Prolog
PrologProlog
Prolog
 
Teknik Rapor Nasıl Yazılır?
Teknik Rapor Nasıl Yazılır?Teknik Rapor Nasıl Yazılır?
Teknik Rapor Nasıl Yazılır?
 
Veri madenciliği ve ids
Veri madenciliği ve idsVeri madenciliği ve ids
Veri madenciliği ve ids
 

Veritabanları

  • 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
  • 8. Dr. Hidayet Takçı - Veritabanlarına Giriş 8
  • 9. Dr. Hidayet Takçı - Veritabanlarına Giriş 9
  • 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
  • 11. Dr. Hidayet Takçı - Veritabanlarına Giriş 11
  • 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
  • 42. Dr. Hidayet Takçı - Veritabanlarına Giriş 42
  • 43. YAZARTIPLERI(YAZARTIPI, YAZARTIPADI)  YAZAR(YAZARNO, YAZARADI, YAZARTIPI, DNO)  NOTLAR(NOTNO, NOTLAR, DNO)  KONUBASLIK(KONUBNO, KONUB, DNO)  YAPITADI(YAPITNO, YAPITADI, DNO)  FIRMA(FIRMANO, FIRMAADI)  DILLER(DILNO, DILADI)  KITAP(DNO, KADI, ORNEKAD, BASIM, YY, YE, YT, ISBN, OZET, BOLUMNO, UYENO, FOZELIK, DİZİ, TASNIFNO, FIYAT, FIRMANO, GELISTAR, DILNO, ADET) Dr. Hidayet Takçı - Veritabanlarına Giriş 43
  • 44. BOLUM(BOLUMNO, BOLUMADI)  GRUP(GRUPNO, GRUPADI)  UNVAN(UNVANNO, UNVANADI)  UYE(UYENO, ADSOYAD, BOLUM, GRUP, UNVAN, ADRES, MAIL, TEL, GSM)  ODUNC(UYENO, DNO, ALISTAR, IADETAR)  IADE(UYENO, DNO, GELISTAR) Dr. Hidayet Takçı - Veritabanlarına Giriş 44
  • 45. Database Desktop ile Çalışma Dr. Hidayet Takçı - Veritabanlarına Giriş 45
  • 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
  • 52. İlişkisel modelde tablolar arası ilişkinin sunumu Dr. Hidayet Takçı - Veritabanlarına Giriş 52
  • 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
  • 78. < % 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 “update UYELER set UYENO= "&d1&", ADSOYAD='"&d2&"', …)", baglanti, adOpenStatic set rs=nothing %> Dr. Hidayet Takçı - Veritabanlarına Giriş 78
  • 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
  • 80. <% d1=request.form("d1") set baglanti=server.createobject("adodb.connection") baglanti.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("db/kutuphane.mdb")) set rs1=server.createobject("adodb.recordset") rs1.open "delete from UYELER WHERE UYENO="&d1,baglanti, adOpenStatic set rs1=nothing %> Dr. Hidayet Takçı - Veritabanlarına Giriş 80
  • 81. Dr. Hidayet Takçı - Veritabanlarına Giriş 81
  • 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="&param1&" ORDER BY DNO", oConn, adOpenStatic Set rs1 = Server.CreateObject("ADODB.Recordset") rs1.open "Select *FROM UYELER WHERE UYENO="&param1, oConn, adOpenStatic %> Dr. Hidayet Takçı - Veritabanlarına Giriş 82