VERİ TABANI YÖNETİM SİSTEMLERİ - · PDF fileVERİ TABANI YÖNETİM SİSTEMLERİ...

Post on 06-Feb-2018

239 views 2 download

Transcript of VERİ TABANI YÖNETİM SİSTEMLERİ - · PDF fileVERİ TABANI YÖNETİM SİSTEMLERİ...

VERİ TABANI YÖNETİM SİSTEMLERİ

Yrd. Doç. Dr. Fırat YÜCEL

Akdeniz Üniversitesi

Enformatik Bölümü

Ders Hakkında

• Dersin Kredisi : Veri Tabanı I : 3+1

Veri Tabanı Yönetim Sistemleri : 3+0

• Dersin Yarıyılı : Güz

• Derse Devam : %70 zorunlu

• Kullanılan Yazılım: Ms SQL Server Management 2014

• Değerlendirme : Mutlak değerlendirme (Ortalama >= 60)• Ara sınav (Vize)……………… %30

• Ödev/Proje……………………. %10

• Yarıyıl Sonu Sınavı…………. %60

Ders İçeriği

o 1. Hafta: Veri Tabanlarına Giriş

o 2. Hafta: Veri Tabanı Sistemi Temel Kavramları ve Mimarisi

o 3. Hafta: İlişkisel Veri Modeli ve İlişkisel Veri Tabanı Kurulumu

o 4. Hafta: Veri Tabanı Tasarımı ve Normalizasyonu

o 5. Hafta: SQL (Yapısal Sorgulama Dili)

o 6. Hafta: SQL (Yapısal Sorgulama Dili)

o 7. Hafta: Aritmetiksel Operatörler ve İşleçler

o 8. Hafta: Karmaşık Sorgular (Birden Fazla Tablo Üzerinde Sorgular)

o 9. Hafta: Karmaşık Sorgular (Birden Fazla Tablo Üzerinde Sorgular)

o 10. Hafta: Tetikleyiciler (Triggers)

o 11. Hafta: Görünümler (Views)

o 12. Hafta: Şema Düzenlemeleri (Schema Modification)

o 13. Hafta: ER Modeli ile Veri Modelleme

o 14. Hafta: XML: Genişletilebilir İşaretleme Dili

Başarılı Olabilmek için Bazı Öneriler

• Derslere düzenli bir şekilde devam etmek

• Verilen proje ve ödev çalışmalarını zamanında ve eksiksiz şekilde teslimetmek

• Derste notlar almak, daha sonradan bu notları incelemek, üzerindedüşünüp anlamak, yeni fikirler üretmek

• Derste uygulamalara katılmak, varsa ders dışında bilgisayar ortamındailgili program üzerinde uygulamaları tekrar etmek

• Ders öğretim üyesi ile sağlıklı bir iletişim ortamı kurmak• Ofis : Akdeniz Üniversitesi Enformatik Bölümü• E-Posta : fyucel@akdeniz.edu.tr• Sosyal ağ• Web sitesi : firatyucel.com

Veri Tabanı Sistemlerine Giriş

Veri Tabanları ve Veri Tabanı Kullanıcıları

Veri Tabanı (Database)

• Veri tabanı, birbiriyle ilişkili verilerin bir koleksiyonudur.

• Modern dünyada hayatımızın birçok alanında kullanılmaktadır. Örneğin;• Bir otel ya da uçak/otobüs rezervasyonunda,

• Banka hesap işlemlerinde,

• Kütüphane katalog taramasında,

• Hastane randevu ve protokol işlemlerinde,

• Elektronik olarak bir ürün sipariş ederken veya satın alırken,

• Marketlerde alışveriş yaptıktan sonra kasada,

• E-devlet işlemlerinde,…

Tarım Sanayi Bilgi

Toplumların Gelişimi

Bir soru

• Aşağıdaki iki cümle anlam bakımından aynı mıdır, farklı mıdır?

1. «Hava durumu ile ilgili verileri aldım.»

2. «Hava durumu hakkında bilgileri aldım.»

10

Bilgi

Veri (Data)

• Veri, kendi başına bir anlam ifade etmeyen işlenmemiş (ham) bilgi parçacığıdır.

• Bilgi, verilerin işlenerek anlamlı bir şekilde bir araya getirilmesiyle oluşur.

bilgisayar

Veri

Geleneksel Veri TabanlarındanModern Veri Tabanlarına…

• Geleneksel veri tabanlarında sayısal ve metinşeklinde veriler tutuluyordu.

• Günümüz modern veri tabanlarında(multimedya veri tabanları) bunlara ilavetenmultimedya öğeleri de yer almaktadır.• Resim

• Video

• Konum (Coğrafi Bilgi Sistemleri)

• Modern veri tabanı sistemlerinde ayrıca çokmiktardaki verilerden (big data) çıkarımlaryapan «karar destek sistemleri» yeralmaktadır.

Veri Tabanının Temel Nitelikleri

• Veri tabanı, gerçek dünyanın birparçasıdır. Çoğu zaman «mini dünya»(miniworld) veya «söylem evreni»(universe of discourse, UoD) olarakadlandırılır.

• Veri tabanı, verilerin mantıksal olarakorganize edilmiş halidir. Rastgele biraraya getirilmiş veriler, veri tabanıkavramı dışındadır.

• Veri tabanı, özel amaçlarla tasarlanan,oluşturulan ve üretilen verilerdenoluşur.

Veri Tabanı Yönetim Sistemi (DBMS)

• Veri tabanı yönetim sistemi (database management system, DBMS)veri tabanını oluşturmak ve işlemek için kullanıcıları yetkilendirenbir program koleksiyonudur.

DB DBMS

Kullanıcı

DBMS’nin İşlevleri

Tanımlama (Defining)

• Veri tabanında saklanan veriler için veri tiplerinin, mimarinin ve veri kurucuların tanımlanması ile ilgili işlemleri içerir.Buradaki tanımlamalar meta-data olarak adlandırılır.

Oluşturma (Constructing)

• DBMS tarafından kontrol edilen bazı saklama medyaları içerisinde verinin saklanması işlemleridir.

Düzenleme (Manipulating)

• Özel verileri geri döndürmek için hazırlanan sorgulamalar, veri tabanının güncellenmesi ve verilerden raporlar oluşturulması işlemleridir.

Paylaşım (Sharing)

• Veri tabanına çok sayıda kullanıcının veya programın eş zamanlı erişimine izin vermektir.

DBMS, değişik kullanıcılar ve uygulamalar tarafından veri tabanı

üzerinde tanımlama, oluşturma, değiştirme ve paylaşma işlemlerini

yöneten genel amaçlı bir yazılım sistemidir.

Meta-Data

• Veri tabanı oluşturma süreci, verilerin saklanması için veri tipleri,yapıları ve veri kurucularının tanımlanması işlemlerini içerir. Veritabanı tanımlamaları, bir katalog formunda DBMS içerisindetutulur. Bu verilere «meta-data» adı verilir.

Uygulama Programı, Sorgu, İşlem

• Uygulama programı (application program), DBMS’ye sorgular ve isteklergöndererek veri tabanına erişim sağlar.

• Sorgu (query), genellikle veri tabanından bazı verilerin dönmesinisağlayan ifadelerdir.

• İşlem (transaction), veri tabanından bazı verileri okumak veya veritabanına bazı verileri yazmak için yapılan işlemlerdir.

• Koruma (protection), DBMS’nin diğer bir işlevidir. Zararlı yazılımlarakarşı donanımsal veya yazılımsal sistem koruması önemlidir.

• Zaman zaman verilerin kaybına karşı veri tabanındaki verilerdenyedekler alınması gerekmektedir. Bu işleme yedekleme (maintaining)denir.

Basitleştirilmiş Veri Tabanı Sistemi

Uygulama Programları/Sorguları

İşlem Yazılımı

Sorgular/Programlar

Erişim Yazılımı

Saklanan Veri

Veri Tabanı

Tanımlamaları

(Meta-Data)

Veri Tabanı

Veri

Tabanı

Sistemi

DBMS

Yazılımı

Kullanıcılar/Programcılar

Bir Veri Tabanı Örneği

• Örnek olarak, UNIVERSITE adlı bir veri tabanı içerisinde yer alanOGRENCI, DERS, DONEM, SINAV_SONUC, ONKOSUL adlı 5 dosyadatutulan aynı türdeki verileri düşünelim.

• Bu veri tabanını tanımlamak için, her bir dosyada tutulacakkayıtların hangi alanlardan oluşacağını belirlemek gerekmektedir.

• Her bir alanın veri türü (string, integer, char,…) belirlenmelidir.

• Orta düzey ve büyük veri tabanları için veriler arasındaki ilişkilerbelirlenmelidir.

Örnek Veri Tabanının Yapısı

Ad Ogrenci_No Sinif Bolum

Mehmet 17 1 YBS

Ayşe 5 2 YBS

Ders_Ad Ders_Kodu Kredi Bolum

Bilgi Teknolojileri Kullanımı ENF101 4 ENF

Veri Tabanı I MBIL103 5 MBIL

Veri Tabanı Yönetim Sistemleri YBS201 4 YBS

Programlama Dilleri I BIL203 3 MAT

Donem_ID Ders_Kodu Donem Yil Ogr_Elemani

85 ENF101 Güz 16 Ahmet

92 YBS201 Güz 16 Sezgin

102 BIL203 Bahar 16 Kamil

112 ENF101 Bahar 16 Ahmet

119 YBS201 Güz 17 Fırat

135 MBIL103 Güz 17 Fırat

Ogrenci_No Donem_ID Not

17 85 AA

17 119 BB

5 85 AA

5 102 BA

5 119 CC

Ders_Kodu Onkosul_Kodu

YBS201 ENF101

BIL203 ENF101

OGRENCI

DERS

DONEM

SINAV_SONUC

ONKOSUL

Örnek Veri Tabanı Üzerinde Bazı Uygulamalar

• Veri tabanı üzerinde yapılabilen bazı işlemlere örnekler;• Transkript alınması

• 2017 yılında alınan Veri Tabanı Yönetim Sistemleri dersini alan tüm öğrencilerin sınav notları

• Önkoşul durumlarının listesi

• Güncelleme işlemlerine örnekler;• Mehmet isimli öğrencinin sınıfının değiştirilmesi

• Yeni yarıyıl için yeni dersler açılması

• Ayşe adlı öğrencinin Veri Tabanı Yönetim Sistemleri dersi notunun CC olarak girilmesi

Veri Tabanı Yaklaşımının Karakteristikleri

• Geleneksel dosya-tabanlı sistemlerde, her kullanıcı kendisi ile ilgiliverileri tanımlayıp bağımsız bir dosyada saklar. Ancak aynıverilerin bir kısmı başka bir kullanıcı tarafından yine tanımlanmakzorundadır. Bu verilerin birbiriyle ilişkilendirilmesi için ise ayrı biruygulama gereklidir.

• Problemler;• Gereksiz yinelenen veriler

• Tutarsızlık

• Güvenlik sorunları

• Veri kaybı

• Veriye erişim zorluğu

• Uygulama geliştirmedeki güçlükler

Veri Tabanı Yaklaşımı

• Veri tabanı yaklaşımında, tanımlamalar en başta bir defaya mahsusgerçekleştirilir ve veri girişi tekrar yapılmaz. Bu veriler çok sayıdakullanıcı ile paylaşılarak ortak kullanılabilir.

Veri tabanı yaklaşımının temel karakteristikleri

Veri tabanı sisteminin kendiliğinden tanımlı doğası

Programlar, veri ve veri tanımlamaları arasında yalıtım

Verilere çoklu rapor desteği

Verilerin paylaşımı ve çok kullanıcılı işlemlerin gerçekleştirilmesi

Veri Tabanı Sistemlerinin Kendinden Tanımlı Doğası

• Veri tabanı yaklaşımının temel karakteristiği, veri tabanı sisteminin yalnızca kendi veri tabanını değil, aynı zamanda veri tabanı yapısının ve kurucularının da tanımlama ve açıklamalarını da içeriyor olmasıdır. Bunlara meta-data denir.

• Dosya tabanlı sistemlerde bu tanımlamalar spesifik olarak program kodları ile tanımlanır.

Veri Tabanı

Tanımlamaları

(Meta-Data)

Veri Tabanı

DBMS Yazılımı

Veri Tabanı Katalog Bilgilerine Bir Örnek

Relation_Name No_of_columns

OGRENCI 4

DONEM 5

DERS 4

SINAV_SONUC 3

ONKOSUL 2

İLİŞKİLER

Column_Name Data_type Belongs_to_relation

Ad Char(150) OGRENCI

Ogrenci_No Char(11) OGRENCI

Sinif Integer(1) OGRENCI

Bolum Char(100) OGRENCI

Donem_ID Integer DONEM

Ders_Kodu XXXXNNNN DONEM

Donem Char(5) DONEM

… … …

Ders_Kodu XXXXNNNN ONKOSUL

Onkosul_Kodu XXXXNNNN ONKOSUL

XXXXNNNN: 4 alfakarakter, 4

sayıdan oluşan biçim.

ALANLAR (SÜTUNLAR)

Programlar, Veri ve Veri Tanımlamaları Arasında Yalıtım

• Geleneksel sistemlerde, veri dosyalarının yapısı uygulamaprogramının içerisinde tanımlanır. Değişiklik gerektiğinde hemdosyaların hem de program yapısının değiştirilmesi gerekir.

• DBMS erişim programlarında tüm durumlarda değişiklik gerekmez.Veri dosyalarının yapısı DBMS kataloğunda yer alır. Bu durum,program-veri bağımsızlığı olarak adlandırılır.

Veri Alan Adı Kaydın Başlama Yeri Karakter Uzunluğu (byte)

Ad 150 150

Ogrenci_No 151 11

Sinif 162 1

Bolum 163 100

Dosya sisteminde

verilerin

tutulmasına

OGRENCI

tablosundan bir

örnek

Programlar, Veri ve Veri Tanımlamaları Arasında Yalıtım

• Bazı nesne yönelimli veya nesne ilişkili veri tabanı sistemlerinde,kullanıcılar veri üzerindeki işlemleri (fonksiyonları, yöntemleri yada parametreleri) de veri tabanı tanımlamalarının bir parçasıolarak tanımlayabilir.

• DBMS’de, arayüz değişse de tanımlanan bu işlemlerde bir aksamasöz konusu olmaz. Bu durum program-işlem bağımsızlığı olarakadlandırılır.

• Hem program-veri bağımsızlığı hem de program-işlem bağımsızlığıözelliğini içeren karakteristik veri yalıtımı (data abstraction)olarak tanımlanır.

Verilere Çoklu Rapor Desteği

• Bir veri tabanı sisteminin birçok kullanıcısı vardır ve bu kullanıcılarfarklı konularda verilerle ilgilenirler. Bu verilerden elde edilenraporlar (views) DBMS’de her kullanıcı için oluşturulabilir.

Ad Ders_Kodu Not Donem Yil Donem_ID

MehmetENF101 AA Güz 16 85

YBS201 BB Güz 17 119

Ayşe

ENF101 AA Güz 16 85

BIL203 BA Bahar 16 102

YBS201 CC Güz 17 119

TRANSKRİPT (RAPOR ÖRNEĞİ)

Verilerin Paylaşımı ve Çok Kullanıcılı İşlemlerin Gerçekleştirilmesi

• Bir DBMS, eş zamanlı olarak çok sayıda kullanıcının veri tabanınaerişimine izin vermelidir.

• Aynı anda veri güncelleme istemlerinin, veri işlem kontroluygulamalarıyla kontrol edilmesi gerekir. Bu uygulamalara, onlinetransaction prosessing (OLTP) uygulamaları denir.

• Veriler üzerinde yapılan işlemlerin sonucu hakkında çıkarımdabulunan sistemlere ise online analytical processing (OLAP)uygulamaları denir.

Sahnedeki Aktörler

Veri Tabanı Yöneticileri (Database Administrators, DBA)

•Veri tabanı kaynaklarını yöneten ve kontrol eden tüm yetkilere sahip kullanıcılardır.

Veri Tabanı Tasarımcıları (Database Designers)

•Verilerin saklanabilmesi için tanımlamaları yapmak, bu verilerin gösterimi ve saklanması için uygun yapıları seçmek ile sorumludurlar.

Son Kullanıcılar (End Users)

•Veri tabanına çeşitli işlemleri gerçekleştirmek üzere erişim sağlayan kullanıcılardır.

Sistem Analistleri ve Uygulama Programcıları (Yazılım Mühendisleri)

•Sistem analistleri, son kullanıcıların gereksinimlerini belirleyen, gereksinimleri bulan kullanıcılardır. Uygulama programcıları, gereksinimlere uygun yazılımı kodlayan, daha sonra test eden derleyen, dokümantasyonunu hazırlayan ve veri işlemlerinin bakımını gerçekleştiren kullanıcılardır.

Sahne Gerisinde Çalışanlar

DBMS sistem tasarımcıları ve geliştiricileri

• DBMS modüllerini ve yazılım paketi arayüzlerini tasarlayan ve geliştiren kişilerdir.

Araç geliştiricileri

• Araç (tool) adı verilen veri tabanı modelleme ve tasarım, veri tabanı sistem tasarım ve performansı yükseltmek için hazırlanan yazılımları geliştiren kişilerdir.

Operatörler ve bakım personeli

• Veri tabanının yer aldığı donanımın çalışması ve bakımı ile yazılım için gereken çevresel gereksinimlerden sorumludur.

DBMS Yaklaşımını Kullanmanın Üstün Yönleri

• Gereksiz verilerin kontrolü

• Yetkisiz erişimlerin engellenmesi

• Program nesneleri için kalıcı saklama

• Etkin sorgulama işlemleri için saklama yapıları ve arama teknikleri

• Yedekleme ve geri yükleme

• Çok kullanıcı erişimi

• Veri üzerindeki karmaşık ilişkilerin tanımlanması

• Bütünlük kısıtlamalarını uygulayabilme

• Kurallara uygun işlemlere ve sonuç çıkarmaya izin verme

• İlave faydalar• Kullanıcılar arasında iş dağılımı, azalan uygulama geliştirme süresi, esneklik, günlük

bilgilerin kullanılabilmesi, ölçeklenmiş ekonomi…

Veri Tabanı Uygulamalarının Kısa Tarihçesi

Hiyerarşik ve Ağ Sistemleri

Tabanlı Veri Tabanı

Uygulamaları

İlişkisel Veri Tabanı Yönetim Sistemi (RDBMS)

XML (eXtended

MarkupLanguage)

Yeni Veri Tabanı Uygulamaları

Bilgi Çıkarım (Information Retrieval, IR)

1970’ler 1980’ler 1990’lar 2000’ler Günümüz

• Bilimsel uygulamalar

• Resim ve video tabanlı veri

tabanları

• Veri madenciliği (data mining)

• Uzay uygulamaları

• Zaman serileri

DBMS’nin Zayıf Yönleri

• Donanım, yazılım ve öğrenme açısından gereksinimler

• Verilerin tanımlanması ve işlenmesi için DBMS’ye gereksinim duyulması

• Güvenlik, eşzamanlı erişim kontrolü, kurtarma ve ileri düzey fonksiyonlara hakim olunması gereksinimi

Veri Tabanı Sistemi Kavramları ve Mimarisi

Veri Modelleri, Şemalar ve Olaylar

Üç Şema Mimarisi

İlişkisel Veri Tabanı

Veri Tabanı Mimarisi

• İlk Veri Tabanı Mimarileri Tek bir bilgisayar (mainframe) üzerine kurulu

• Günümüz Veri Tabanı Mimarileri Sunucu-istemci yapısında

İstemci 1

İstemci 2 İstemci n

Sunucu (DBMS)

Veri TabanıDöndürülen

veri

Veri isteği

LAN veya

WAN

Veri Modeli

• Veri tabanının mimarisini tanımlamak için kullanılan kavramlarbütünüdür. Veri tabanı mimarisi; veri tipleri, ilişkiler ve veri girişkısıtlamalarını ifade eder.

• Varlık (Entity): Bir gerçek dünya nesnesini veya kavramını ifade eder.Örneğin; bir çalışan veya veri tabanı içerisindeki mini dünyadatanımlanan bir proje gibi.

• Nitelik (Attribute): Bir varlığı tanımlayan özelliktir. Örneğin; çalışan adıveya ücreti gibi.

• İlişki (Relationship): İki veya daha fazla varlık (entity) arasındaki ortaknokta ve birleşmeyi ifade eder. Örneğin bir çalışan ile bir projeyiilişkilendirme gibi.

Varlık

Nitelik

İlişki

İlişkisel Veri Modeli (Relational Data Model)

Ad Ogrenci_No Sinif Bolum

Mehmet 17 1 YBS

Ayşe 5 2 YBS

OGRENCİTablo (Table)

Nitelik (Attribute)

Alanlar (Fields, Columns)

Kayıtlar (Records)

Varlık (Entity)

İlişkisel Veri Tabanı Modeli (Relational Database Model)

İlişkisel model, bir veri tabanı üzerinde tanımlanan ilişkilerin koleksiyonudur.

SQL: Structural Query Language

• MS SQL Server

• Oracle

• PostrgreSQL

• MySQL

• Sybase SQL Server

• Informix

Birincil Anahtar ve Yabancı Anahtar

• Birincil Anahtar (Primary Key); bir tabloda her bir kayıt için verilenbenzersiz alandır. Kayıtların birbirinden ayırt edilmesini sağlar.

• Bir tabloda birincil anahtar alanında tanımlanan veriler aynıolamaz.

• Yabancı Anahtar (Foreign Key, Secondary Key, Index); bir tablodadiğer tablodaki kayıtlarla ilişki kurulan alanlardır.

#

Örnek İlişkisel Veri Tabanı Tasarımı

• Bir işletmenin ürünlerini internet üzerinden satmak üzere bir veri tabanı tasarımı• Ürünler; Barkod, Ürün Adı, Marka, Özellikleri, KDV Oranı, Alış Fiyatı, Satış

Fiyatı, Ürün Adedi

• Müşteriler; Müşteri Kodu, Müşteri Adı, Müşteri Soyadı, e-posta, Parola, Adres, Şehir, Telefon

• Siparişler; Sipariş Kodu, Müşteri, Ürün, Sipariş Tarihi, Sipariş Durumu, Sipariş Adedi

Örnek İlişkisel Veri Tabanı Tasarımı

ÜRÜNLERBarkod

Ürün Adı

Marka

Özellikler

KDV Oranı

Alış Fiyatı

Satış Fiyatı

Ürün Adedi

MÜŞTERİLER

Müşteri Kodu

Adı Soyadı

E-Posta

Parola

AdresŞehir

Telefon

SİPARİŞLER

Sipariş Kodu Müşteri Kodu

Ürün Barkodu

Sipariş TarihiSipariş Durumu

Sipariş Adedi

SatışN 1

N

Birincil Anahtar

# Yabancı Anahtar

#

#

Örnek İlişkisel Veri Tabanı Tasarımı

Barkod Ürün Adı Marka Özellikler KDV Oranı Alış Fiyatı Satış Fiyatı Ürün Adedi

35126 Sabit Disk Seagate 500 GB %18 80,12 96,15 21

12525 Anakart Gigabyte GA-Z170X-Gaming 3-EU %18 201,15 250,83 12

18121 RAM OEM 4 GB DDR %18 50,22 75,91 30

ÜRÜNLER

Müşteri Kodu Adı Soyadı E-posta Parola Adres Şehir Telefon

1 Ahmet Akcan akcan@abc.com ****** Ak. Ün. Kampus Antalya 02423212212

2 Hatice Özay hozay@xyz.com ******* KYK Yurdu Kampus Antalya 05333333333

3 Salih Zafer zafer@hotmail.com ***** Dumlupınar Bulvarı Antalya 02423221112

MÜŞTERİLER

Sipariş Kodu Müşteri Kodu Ürün Barkodu Sipariş Tarihi Sipariş Durumu Sipariş Adedi

121 2 35126 22/09/2017 Teslim edildi 3

122 1 12525 30/09/2017 Kargoda 1

SİPARİŞLER

Birincil Anahtar

# Yabancı Anahtar

# #

UNIVERSITE Veri Tabanı için İlişkisel Model

OGRENCİ

Ad Ogrenci_No

SinifBolum

ONKOSUL

Ders_Kodu Onkosul_Kodu

DONEM

DERS

Donem_ID

Ders_Kodu

Ogr_Elemani

Donem

Yil

Ders_Ad

Ders_Kodu

Kredi

Bolum

açılırseçer

1

N

N 1

N

SINAV_SONUC

Ogrenci_No

Donem_ID

Not

Değerlendirme1 N

N

belirlenirN 1

# ##

#

#Birincil Anahtar

# Yabancı Anahtar

Veri Tabanı Şema Diyagramı (Database Schema Diagram)

• Veri tabanındaki varlıkları, nitelikleri ve bunların birbiriyle ilişkisini gösteren şekillerdir.

Üç Şema Mimarisi (Üç Katman Mimarisi)

• Veri tabanının fiziksel saklama yapısını tanımlar.

İç Katman (İç Şema)

• Veri tabanının veri modelini tanımlar, kullanıcı ile iç katman arasında iletişimi sağlar.

Kavramsal Katman (Kavramsal Şema)

• Veri tabanının kullanıcı grubunun erişimi için hazırlanan arayüzüdür.

Harici (Dış) Katman (Dış Şema)

Örnek Veri Tabanı Tasarımı

• Bir kütüphane kitap ödünç verme/sorgulama işlemleri için veri tabanı

• Bir eczane ilaç satışı için veri tabanı

• Bir şehirlerarası otobüs firması bilet satışı için veri tabanı

Temel SQL

SQL

• SQL (Structured Query Language): İlişkisel veri tabanlarında kullanılan Yapısal Sorgulama Dili’dir.

• İlk adı SEQUEL’dir. Daha sonra 1986 yılında ANSI tarafından ilk SQL versiyonu yayınlanmıştır.

• SQL en yaygın kullanılan veri tabanı dilidir. Veri tanımlama, sorgulama ve güncelleme işlemleri için ifadeler içerir.

SQL’de Veri Tanımlama

• SQL’de veri tabanı ve içerisindeki nesneler CREATE ifadesi ile tanımlanır.• CREATE SCHEMA

• CREATE DATABASE

• CREATE TABLE

• CREATE VIEW

• …

Şema ve Katalog Kavramları

• SQL şeması, şema elemanları için yetki tanımı yapmaya yarayan ifadedir. Şema elemanları; tablolar, sınırlamalar, raporlar, alan adları ve diğer kısıtlamalar vb. kavramlarını içerir.

CREATE SCHEMA COMPANY AUTHORIZATION ‘FYucel’;

• Katalog ise şemaların bir koleksiyonudur.

Yeni SQL Veri Tabanı Oluşturma

• Yeni bir SQL veri tabanı oluşturmak için;

CREATE DATABASE Deneme;

• Açılan veri tabanını kullanmaya başlamak için;

USE Deneme;

Yeni SQL Tablosu Oluşturma

• Veri tabanına yeni bir varlık ve bu varlığa ait nitelikleri tanımlamak için, SQL’de tablo oluşturmak gereklidir.

CREATE TABLE Siparisler

( SiparisKodu VARCHAR(10) NOT NULL,

MusteriKodu VARCHAR(10) NOT NULL,

UrunBarkodu VARCHAR(15) NOT NULL,

Tarih DATETIME NOT NULL,

Durum CHAR,

Adet INT,

PRIMARY KEY (SiparisKodu, MusteriKodu, UrunBarkodu),

FOREIGN KEY (MusteriKodu) REFERENCES Musteriler(MusteriKodu),

FOREIGN KEY (UrunBarkodu) REFERENCES Urunler(Barkod)

);

MS SQL Veri Tipleri

Veri Tipi Açıklama Maksimum Uzunluk Saklama

char(n) Sabit uzunluklu karakter dizisi 8,000 karakter Tanımlı uzunluk

varchar(n) Değişken uzunluklu karakter dizisi 8,000 karakter 2 bayt + karakter sayısı

varchar(max) Değişken uzunluklu karakter dizisi 1,073,741,824 karakter 2 bayt + karakter sayısı

text Değişken uzunluklu metin 2GB metin verisi 4 bayt + karakter sayısı

nchar Sabit uzunluklu Unicode karakter dizisi 4,000 karakter Tanımlanan uzunluk x 2

nvarchar Değişken uzunluklu Unicode karakter dizisi 4,000 karakter

nvarchar(max) Değişken uzunluklu Unicode karakter dizisi 536,870,912 karakter

ntext Değişken uzunluklu Unicode metin 2GB metin verisi

binary(n) Sabit uzunluklu binary karakter dizisi 8,000 bayt

varbinary Değişken uzunluklu binary karakter dizisi 8,000 bayt

varbinary(max) Değişken uzunluklu binary karakter dizisi 2GB

image Değişken uzunluklu binary karakter dizisi 2GB

MS SQL Veri Tipleri

Veri Tipi Açıklama Saklama

bit 0, 1 ya da NULL olabilen INTEGER

tinyint 0 ile 255 arasındaki sayılar 1 bayt

smallint -32,768 ile 32,767 arasındaki sayılar 2 bayt

int -2,147,483,648 ile 2,147,483,647 arasındaki sayılar 4 bayt

bigint -9,223,372,036,854,775,808 ile 9,223,372,036,854,775,807 arasındaki sayılar 8 bayt

decimal(p,s)

Sabit hassasiyetli ve ondalıklı sayı. -10^38 +1 ile 10^38 –1 arasındaki sayılar

p: maksimum hane sayısı, 1 ile 38 arasında bir değer olup, varsayılan 18’dir.

s: maksimum virgülün sağındaki hane sayısı. 0 ile p arasında bir değer olup, varsayılan 0’dır.

5-17 bayt

numeric(p,s)

Sabit hassasiyetli ve ondalıklı sayı. -10^38 +1 ile 10^38 –1 arasındaki sayılar.

p: maksimum hane sayısı, 1 ile 38 arasında bir değer olup, varsayılan 18’dir.

s: maksimum virgülün sağındaki hane sayısı. 0 ile p arasında bir değer olup, varsayılan 0’dır.

5-17 bayt

smallmoney -214,748.3648 ile 214,748.3647 arasında parasal veri 4 bayt

money -922,337,203,685,477.5808 ile 922,337,203,685,477.5807 arasında parasal veri 8 bayt

float(n)-1.79E + 308 ile 1.79E + 308 arasında ondalıklı sayı. n parametresi, 4 ya da 8 bayt tutulacağını belirler. float(24)’e

kadar 4 byte, bundan sonra float(53)’e kadar ise 8 byte veri tutulur. Varsayılan n değeri 53’tür.

4 veya 8 bayt

real -3.40E + 38 ile 3.40E + 38 arasında ondalıklı sayı. 4 bayt

MS SQL Veri Tipleri

Veri Tipi Açıklama Saklama

datetime 1 Ocak 1753 ile 31 Aralık 9999 arasında 3.33 ms hassasiyet 8 bytes

datetime2 1 Ocak 0001 ile 31 Aralık 9999 arasında 100 ns hassasiyet 6-8 bytes

smalldatetime 1 Ocak 1900 ile 6 Haziran 2079 arasında 1 dakika hassasiyet 4 bytes

date Yalnızca tarih verisi saklar. 1 Ocak 0001 ile 31 Aralık 9999 arasında 3 bytes

time Sadece zaman verisi saklar. 100 ns hassasiyet 3-5 bytes

datetimeoffset Datetime2 ile aynı olup sadece zaman dilimi içerir. 8-10 bytes

timestamp Zamana göre benzersiz bir tarih damgası değeri üretir.

SQL Alan Adı Tanımlama

• SQL’de yeni Alan Adı (Domain) tanımlamak için;

CREATE DOMAIN PARA AS DECIMAL(10,2)

CHECK (PARA > 0,00 AND PARA < 500000,00);

SQL Veri Tabanı / Tablosu Silmek

• SQL veri tabanı silmek için;

DROP DATABASE DENEME

• SQL tablosunu silmek için;

DROP TABLE Urunler

• SQL tablosunun içindeki verileri silmek için;

TRUNCATE TABLE Urunler

Alan Değişiklikleri

• Tabloya yeni bir alan eklemek için;

ALTER TABLE UrunlerADD Fiyat DECIMAL(10,2);

• Tablodan bir alanı silmek için;

ALTER TABLE UrunlerDROP COLUMN Fiyat;

• Tablodaki bir alanı güncellemek için;

ALTER TABLE UrunlerALTER COLUMN Fiyat MONEY;

Select-From-Where Yapısı

• Veri tabanından verileri getirmek amacıyla kullanılan sorgu deyimidir.

SELECT <Nitelik Listesi>

FROM <Tablo Listesi>

WHERE <Koşullar>;

Örnek:

SELECT Adi, Soyadi FROM Ogrenci WHERE OgrNo = ‘20121105015’;

SELECT OgrNo FROM Ogrenci WHERE Adi = ‘Mehmet’ AND Soyadi = ‘Aslan’;

İlişkisel Cebir Operatörleri

• Karşılaştırmalarda kullanılan operatörler;• = Eşittir

• < Küçüktür

• > Büyüktür

• <= Küçük Eşit

• >= Büyük Eşit

• <> Eşit Değil

• Mantıksal koşulları birleştirirken;• AND: Ve

• OR: Veya

• NOT: Değil

Çoklu Tablo İlişkileri Kurarak Sorgulama

• Birden fazla tablo arasında ilişkiler kurularak bu tablolardan istenen veriler tek bir sorgu ifadesiyle getirilebilir.

SELECT Ogrenciler.Adi, Ogrenciler.Soyadi, Sinavlar.Notu

FROM Ogrenciler, Sinavlar

WHERE Ogrenciler.OgrNo = Sinavlar.OgrNo;

Çoklu Tablo İlişkileri Kurarak Sorgulama

• Bir başka örnek;

SELECT Ogrenciler.Adi, Ogrenciler.Soyadi,

Dersler.DersAdi, Sinavlar.Notu

FROM Ogrenciler, Dersler, Sinavlar

WHERE Ogrenciler.OgrNo = Sinavlar.OgrNo AND

Sinavlar.DersKodu = Dersler.DersKodu;

OgrNo Adi Soyadi OgrNo DersKodu Notu DonemDersKodu DersAdi

OGRENCILER DERSLER SINAVLAR

Adlandırmalar (Alias)

• Sorgularda alan adları ve tablo adları, AS deyimi kullanılarak yeniden adlandırılabilir.

SELECT M.MusteriNo, S.Tutar

FROM Musteriler AS M, Satislar AS SWHERE M.MusteriNo = S.MusteriNo;

• Başka bir örnek;SELECT M.MusteriNo AS ‘Müşteri Numarası’, S.Tutar AS ‘Satış Tutarı’

FROM Musteriler AS M, Satislar AS S

WHERE M.MusteriNo = S.MusteriNo;

Belirsiz WHERE Deyimi ve Asteriks Kullanımı

• WHERE kullanılmadığı takdirde tablodaki belirtilen alanlarda bulunan tüm veriler döndürülür.

SELECT Adi, Soyadi FROM Musteriler

• Asteriks kullanımı ile tablodaki tüm alanlar döndürülür.SELECT * FROM Musteriler

Başka bir örnek;

SELECT * FROM Musteriler WHERE MusteriAdi = ‘Ahmet’;

Başka bir örnek;

SELECT * FROM Musteriler, Birimler;

ALL ve DISTINCT Deyimleri

• Tablodaki tekrarlı verilerin birden fazla kez gözükmesi için;

SELECT ALL Adi FROM Musteriler;

• ALL deyimi kullanmak isteğe bağlıdır.

• Tablodaki tekrarlı verilerin yalnızca bir kez gözükmesi için;

SELECT DISTINCT Adi FROM Musteriler;

Metin İçinde Arama

• LIKE karşılaştırma operatörü kullanılarak, metnin başından,sonundan ve içinden belli bir kısmına göre arama yapan sorgularoluşturmak mümkündür.• LIKE ‘ABC%’ Metnin başında ABC yazan kayıtları bulur.

• LIKE ‘%ABC’ Metnin sonunda ABC yazan kayıtları bulur.

• LIKE ‘%ABC%’ Metnin içinde ABC yazan kayıtları bulur.

• Bir örnek;SELECT * FROM Musteriler WHERE Adi LIKE ‘%AL%’;

Aritmetik İşlemler

• Sorgular içerisinde +, -, *, / operatörleri kullanılarak aritmetiksel işlemler yapılabilir.

SELECT UrunAdi AS ‘Ürün Adı’,

Adet – 1 AS ‘Kalan’,

Fiyat * 1.18 AS ‘KDV Dahil Fiyat’

FROM Urunler;

BETWEEN Operatörü

• Bir aralık tanımı gerçekleştirmek için kullanılır.

SELECT * FROM Satislar

WHERE (Tutar BETWEEN 3000 AND 4000) AND UrunAdi = ‘HDD’

Tutarı 3000 ile 4000 arasında

Sonuçları Sıralama

• ORDER BY deyimi ile gerçekleştirilir. İki seçenek vardır:• ASC: Artan Sıralama

• DESC: Azalan Sıralama

SELECT * FROM Musteriler ORDER BY Adi ASC, Soyadi DESC;

Adına göre artan, soyadına göre azalan sırada

Kayıt Sayısını, Verilerin Ortalamasını ve Verilerin Toplamını Bulma

• Kayıt sayısını bulmak için COUNT() fonksiyonu kullanılabilir.

SELECT COUNT(OgrenciNo) FROM Ogrenciler WHERE Bolumu = ‘YBS’;

• Kayıt ortalamasını bulmak için AVG() fonksiyonu kullanılabilir.

SELECT AVG(Notu) FROM Notlar WHERE DersKodu = ‘ENF101’;

• Kayıt toplamını bulmak için SUM() fonksiyonu kullanılabilir.

SELECT SUM(Tutari) FROM Satislar WHERE Kategori = ‘1’;

Kayıt İşlemleri

Kayıt Ekleme, Silme ve Güncelleme

Kayıt Ekleme

• Veri tabanındaki bir tabloya kayıt eklemek için;

INSERT INTO <Tablo Adı> <(Alan1, Alan2,…)>

VALUES <(‘Değer1’, ‘Değer2’,…)>

Örneğin;

INSERT INTO Musteriler (MusteriNo, Adi, Soyadi, Yasi)

VALUES (‘112’, ‘Metin’, ‘Kaya’, 23);

Kayıt Silme

• Veri tabanındaki bir tablodan kayıt silmek için;

DELETE FROM <Tablo Adı>

WHERE <Koşullar>;

Örneğin;

DELETE FROM Musteriler

WHERE Adi = ‘Metin’ AND Soyadi = ‘Kaya’;

Kayıt Güncelleme

• Veri tabanındaki bir tabloda kayıt güncelleme işlemi için;

UPDATE <Tablo Adı>

SET <Güncellenecek Alan = ‘Yeni Değer’,…>

WHERE <Koşullar>;

Örneğin;

UPDATE Musteriler

SET Adi = ‘Mete’, Soyadi = ‘Kayacan’

WHERE MusteriNo = ‘112’;

Kaynakça

• Fundamentals of database systems / Ramez Elmasri, Shamkant B. Navathe.—6th ed., 2010.