Slayt 1 - Trakya Üniversitesi

advertisement
EDİRNE TEKNİK
BİLİMLER MESLEK
YÜKSEK OKULU
VERİ TABANI VE
YÖNETİMİ
BLP 217
Veri Tabanı Nedir?
 Birbiriyle ilişkisi olan verilerin tutulduğu,
 Kullanım amacına uygun olarak düzenlenmiş veriler
topluluğunun,
 Mantıksal ve fiziksel olarak tanımlarının bulunduğu
 Bilgi depolarıdır.
Veri Tabanı Örnekleri
 Üniversite- Öğrenci İşleri Bilgi Sistemi
 Hastane-Hasta, doktor, tedavi, araç-gereç, mali
bilgiler
 Ticari bir şirket- Müsteri, Ürün, Satış, Ödeme, Teslimat
bilgileri
 Banka-Müşteri, mevduat, kredi kartı, kredi bilgileri
Veri tabanı
 Veri tabanı kavramı ilk olarak 1980’li yıllar
 Basit bir web uygulamasından
 uluslararası kuruluşların büyük ve karışık verilerine kadar
 pek çok alanda veri tabanı uygulamalarına ihtiyaç
durulmaktadır.
Veri Tabanı Yönetim Sistemi
Nedir?
 Yeni bir veritabanı oluşturmak,
 Veri tabanını düzenlemek
 Kullanmak,
 Geliştirmek
 Bakımını yapmak için
 Çeşitli karmaşık işlemlerin gerçekleştirildiği bir yazılım
sistemidir.
Veri Tabanı Yönetim
Sistemlerinin Sınıflandırılması
 Veri Modeline Göre
 Hiyerarşik
 Ağ
 İlişkisel
 Nesneye Yönelik
 Kullanıcı Sayısına Göre
 Tek kullanıcılı
 Çok kullanıcılı
Hiyerarşik veritabanları
 Veri tabanları için kullanılan ilk modeldir
 Hiyerarşik veritabanları bilgileri bir ağaç yağısında
saklarlar.
Ağ veritabanları
 Hiyerarşik veritabanları yetersiz kalınca 1960’ların
sonunda verilerin ağaçların daha gelişmiş hali olan
graflar şeklinde saklandığı yapı ortaya çıkmıştır.
İlişkisel veritabanları
 1970’lerin başında geliştirilmiştir.
 Bu sistemde veriler tablo şeklinde saklanır.
 Tablolar arasındaki bağlantılar matematiksel ilişkilerle
gösterilir.
 Günümüzdeki hemen hemen tüm veri tabanı
programları bu yapıdadır.
İlişkisel veritabanları
Nesneye Yönelik
veritabanları
 Günümüzdeki pek çok kelime işlemci ve hesap tablosu programında
kullanılan nesneler artık veritabanlarında da kullanılmaktadır.
 Nesneye yönelik veritabanı C++ gibi nesneye yönelik bir dille
oluşturulan ve yine bu tarz bir dille kulanılan veri tabanı anlamına
gelir.
Neden veri tabanı kullanılır?
 Verilerin tutulması, saklanması ve erişilmesinde
geleneksel yaklaşım verilerin ayrı ayrı dosyalarda
gruplanması yaklaşımını kullanmaktadır.
 Verilerin artması, verilere aynı anda erişme ve
düzenlenme ihtiyacı ile geleneksel yakaşım yetersiz
kalmıştır.
Veri Tabanı Yaklaşımının
Avantajları
 Ortak verilerin tekrarını önIenmesi;
 Verilerin merkezi denetiminin ve tutarlılığının
sağlanması
 Veri payIaşımının sağlanması
 Fiziksel yapı ve erişim yöntemi karmaşıklıklarının, çok
katmanlı mimarilerle kullanıcıdan gizlenmesi,
 Her kullanıcıya yalnız ilgilendiği verilerin, alışık olduğu
kolay, anlaşılır yapılarda sunulması
Veri Tabanı Yaklaşımının
Avantajları
 Sunulan çözümleme, tasarım ve geliştirme araçları ile
uygulama yazılımı geliştirmenin kolaylaşması.
 Veri bütünlüğünün gerekli olanakların sağlanması,
 Güvenlik ve gizliliğin istenilen düzeyde sağlanması
 Yedekleme, yeniden başlatma, onarma gibi işletim
sorunlarına çözüm getirilmesi
Veri Tabanı Yönetim
Sistemleri

Oracle database

IBM DB/2

Adaptive Server Enterprise

Informix

Microsoft Access

Microsoft SQL Server

Microsoft Visual FoxPro

MySQL

PostgreSQL

Progress

SQLite

Teradata

CSQL

OpenLink Virtuoso
Veri Tabanı Yapısı
Veri tabanı
Tablo
Tablo
Tablo
Alan
1
1
2
3
Alan
2
Tablo
Alan3
Alan4
Tablo
Tablo
 Bir veritabanı tablolarda saklanan verilerden oluşur.
 Tablolar verilerin satırlar ve sütunlar halinde
düzenlenmesiyle oluşan veri grubudur.
 Örneğin ders içeriği ve öğrenci bilgilerini veritabanında
saklamak için 2 tablo oluşturulur:
 Ogrenci_bilgileri
 icerik
Tablo
 Tablo içindeki her bir bilgi kayıt,
 Sütunlar ise alan olarak isimlendirilir.
 Örneğin öğrenci bilgileri tablosunda
 Öğrenci numarası,
 adı soyadı,
 doğum tarihi,
 doğum yeri,
 e-mail adresi
bilgileri yer alacaksa
Tablo
Alan
Ogr_no Ad_soyad
d_tarih
d_yeri
e-mail
1
Ayşe Öztürk
01.11.197
9
Konya
ayse@gazi.edu.tr
2
Sema Özdemir
24.05.197
5
Ankara
Alan
sema@gazi.edu.tr
3
Serdar
Gülpınar
06.06.198
3
Adana
serdar@gazi.edu.tr
4
Mehmet Efe
11.02.197
8
Niğde
mehmet@gazi.edu
.tr
5
Zerrin Polat
6
Ulviye Kubalı
Kayıt Antalya
22.08.198
0
12.12.198
4
İstanbul
zerrin@gazi.edu.tr
ulviye@gazi.edu.tr
Veri Türleri
 Veri tabanında tutulan kayıtların yapısı hakkında bilgi
sahibi olmak için
 Alanların bazı özelliklerinin önceden tanımlanması
gerekir.
 Örneğin personel sicil numarası mutlaka tam sayı, ad
soyad harflerden oluşması gibi
SQL Server Veri Tipleri

1. Kesin Sayısal Veri Tipleri (Exact numerics)

bit: 1 bayt yer kaplar. 1 ve 0 değerlerini alır. C#’ta bool’a karşılık gelir. true/false
değerlerini bu tipte saklayabiliriz.

tinyint: 1 bayt yer kaplar. 0 ile 255 arası tam sayıları tutar. C#’ta byte tipine karşılık
gelir.

smallint: 2 bayt yer kaplar. -32.768 ile 32.767 arası tam sayıları tutar. C#’ta short
tipine karşılık gelir.

int: 4 bayt yer kaplar. -2.147.483.648 ile 2.147.483.647 arası tam sayıları tutar. C#’ta
da int tipine karşılık gelir.

bigint: 8 bayt yer kaplar. -9.223.372.036.854.775.808 ile 9.223.372.036.854.775.807
arası tam sayıları tutar. C#’ta long tipine karşılık gelir.

smallmoney: 4 bayt yer kaplar. -214.748,3648 ile 214.748,3647 arası ondalık sayıları
tutar. Virgülden sonra 4 basamak alır. Parasal verileri smallmoney veri tipinde
saklayabiliriz. C#’ta direkt karşılığı yoktur, decimal kullanılır.

money: 8 bayt yer kaplar. kaplar. -922.337.203.685.477,5808 ile
922.337.203.685.477,5807 arası ondalık sayıları tutar. Virgülden sonra 4 basamak
alır. Parasal verileri money veri tipinde saklayabiliriz. C#’ta direkt karşılığı yoktur,
decimal kullanılır.

decimal ve numeric: kapladığı alan kullanılan basamak sayısına göre değişir.
virgülden önce ve sonra toplam basamak sayısı 1-9 arası 5 bayt; 10-19 arası 9
bayt; 20-28 arası 13 bayt; 29-38 arası 17 bayt yer kaplar. – 10^38 +1 den 10^38 – 1
e kadar olan ondalık sayıları tutar. numeric ile decimal birebir aynı veri tipidir.
C#’ta decimal tipine karşılık gelirler.
SQL Server Veri Tipleri
 2. Yaklaşık Sayısal Veri Tipleri (Approximate Numerics)
 float: kullanılmak istenen boyuta göre ortalama değer
alır. float(n) şeklinde kullanılır. mesela virgülden sonra 20 bitlik
bir alan kullanılmasını istiyoruz. o zaman float(20) olarak yazılır
ve verdiğimiz bu boyuta göre kaydetmek istediğimiz sayı
yuvarlanır. kesin değer değil de yaklaşık değer kaydedilmiş
olur. n kısmı 1 ile 53 arasında olmalıdır. C#’ta double tipine
karşılık gelir.
 real: float(24) ile aynı özelliktedir. 4 bayt yer kaplar. – 3.40E+38
ile -1.18E-38, 0 ve 1.18E-38 ile 3.40E+38 arası ondalık sayıları
tutar. C#’ta Single tipine karşılık gelir.
SQL Server Veri Tipleri

3. Tarih ve Zaman Veri Tipleri (Date and Time)

date: YYYY-MM-DD şeklinde tarihi tutar. 3 bayt yer kaplar. 0001-01-01 ile 9999-12-31
arası tarih değerlerini saklar.

datetime: YYYY-MM-DD hh:mm:ss[.mmm] şeklinde tarihi tutar (2011-01-21
12:35:29.123 gibi). 8 bayt yer kaplar. 1753-01-01 00:00:00.000 ile 9999-12-31
23:59:59.999 arası tarih değerlerini saklar.

datetime2: datetime göre daha hassas şekilde YYYY-MM-DD hh:mm:ss[.nnnnnnn]
tarih tutar (2011-01-21 12:35:29.1234567 gibi). saniye bölümünün ondalık kısmında 7
basamağa kadar değer tutabilir. Bu değer sadece datetime2 olarak
kullanıldığında varsayılan olarak 7 basamaktır.datetime(n) şeklinde kullanarak
basamak değerini belirleyebiliriz. eğer n değeri 0 ile 2 arasında ise 6 bayt; 3 veya 4
ise 7 bayt; 5 ile 7 arasında ise 8 bayt yer kaplar.

smalldatetime: YYYY-MM-DD hh:mm:ss şeklinde tarih tutar. 4 bayt yer kaplar. 190001-01 00:00:00 ile 2079-06-06 23:59:59 arası tarih değerlerini saklar.

time: sadece saati hh:mm:ss[.nnnnnnn] şeklinde tutar. 00:00:00.0000000 ile
23:59:59.9999999 arası değer alır. datetime2′de olduğu gibi time(n) şeklinde n
değerini belirleyebiliyoruz. n değeri 0 ile 2 arasında ise 3 bayt; 3 veya 4 ise 4 bayt; 5
ile 7 arasında ise 5 bayt yer kaplar. sadece time olarak kullanılırsak varsayılan n
değeri 7′dir.

datetimeoffset: kullanımı ve tarih aralığı datetime2 ile aynıdır. Ülkelere göre değişen
zaman farkını da tutmamıza olanak sağlar. YYYY-MM-DD hh:mm:ss[. nnnnnnn]
[{+|-}hh:mm] şeklinde tarihi tutar (22.01.2012 02:07:23.1234567 +03:00). Saat farkı 14:00 ile +14:00 arasında değer alır. Yaptığımız uygulamada farklı ülkelerin tarih ve
saat bilgilerini tutuyorsak bu veri tipini kullanabiliriz. datetimeoffset(n) şeklinde
kullanılır. n değeri 0 ile 2 arasında ise 8 bayt; 3 veya 4 ise 9 bayt; 5 ile 7 arasında ise
10 bayt yer kaplar. sadece datetimeoffset olarak kullanılırsak varsayılan n değeri
7′dir.
SQL Server Veri Tipleri
 4. Karakter Veri Tipleri (Character Strings)
 char: sabit uzunlukta karakter dizilerini tutar. char(n) şeklinde kullanılır. n
karakter sayısıdır ve 1 ile 8000 arasında değer alır. belirlediğimiz n
değerinden daha kısa uzunlukta olan veriler boşluk ile belirlediğimiz bu n
değerine tamamlanır. ve bu n değerine göre (n x 1 bayt) yer kaplarlar.
 varchar: sabit uzunlukta karakter dizilerini tutar. varchar(n) şeklinde
kullanılır. n karakter sayısıdır ve 1 ile 8000 arasında değer alır.
belirlediğimiz n değeri alabileceği maksimum karakter sayısıdır. Karakter
sayısı daha kısa veri girersek char gibi boşlukla tamamlanmaz. Kaç
karakter veri girilirse boyutu ona göre değişir.
((kaydedilenVerininKarakterSayisi x 1 bayt) + 2 bayt) olarak yer
kaplar. varchar(MAX) şeklinde kullanırsak maksimum 8000 karakter değil
de maksimum2,147,483,647 karakter veri girilebilir.
 text: varchar(max) ile aynı özelliktedir. maksimum 2,147,483,647 karakter
veri girilebilir. microsoft bu veri tipini gelecek versiyonlarda kaldıracağı
için kullanılması önerilmez. yerinevarchar(MAX) kullanabilirsiniz.
 Not: Eğer oluşturmuş olduğumuz veritabanın dil seçeneği (collation)
türkçe (Turkish_Cl_AS gibi) ise unicode olmayan bu veri tiplerinde
(char,varchar) de türkçe karakter saklayabiliriz. Fakat dil seçeneği
farklıysa türkçe karakter gönderdiğimizde seçtiğimiz dil seçeneğine göre
türkçe karakter kaydedilmeyebilir. (ı’lar i; ş’ler s’ye çevrilebilir). Böyle
durumlarda ya veritabanı özelliklerinden dil seçeneğini (collation)’ı
türkçeye çevirmeliyiz ya da unicode karakter veri
tiplerini(nchar,nvarchar) kullanmalıyız.
SQL Server Veri Tipleri

5. Unicode Karakter Veri Tipleri

nchar: char ile kullanımı aynıdır. char’dan farklı olarak unicode karakterleri
de saklayabilir. nchar(n) şeklinde kullanılır ve n değeri 1 ile 4000 arasındadır.
char’ın iki katı kadar (n x 2 bayt) yer kaplar.

nvarchar: varchar ile kullanımı aynıdır. varchar’dan farklı olarak unicode
karakterleri de saklayabilir. nvarchar(n) şeklinde kullanılır ve n değeri 1 ile
4000 arasındadır. varchar’ın iki katı kadar ((kaydedilenVerininKarakterSayisi x
2 bayt) + 2 bayt) olarak yer kaplar.

ntext: nvarchar(max) ile aynı özelliktedir. maksimum 1,073,741,823 karakter
veri girilebilir. microsoft bu veri tipini gelecek versiyonlarda kaldıracağı için
kullanılması önerilmez. yerinenvarchar(MAX) kullanabilirsiniz.

Not: Eğer veritabanımızdaki kayıtlarda birden fazla dil kullanılacaksa veya
veritabanının dil seçeneğinden (collation) farklı bir dil ile kayıt yapılacaksa
unicode karakter veri tipleri kullanılmalıdır.

6. Binary Veri Tipleri (Binary Strings)

binary: dosyaları(binary data) saklamak için kulanılır. binary(n) şeklinde n
değeri 1 ile 8000 arasında değer alır. n bayt kadar yer kaplar.

varbinary: dosyaları(binary data) saklamak için kullanılır. binary’den farklı
olarak boyutu kaydedilen dosyanın boyutuna göre değişir. varbinary(n)
şeklinde n değeri 1 ile 8000 arasında değer alır. varbinary(MAX) olarak
kullanıldığında maksimum 2,147,483,647 bayt (2 GB) büyüklüğünde dosya
kaydedilebilir.

image: dosyaları(binary data) saklamak için kullanılır. maksimum
2,147,483,647 bayt (2 GB) büyüklüğünde dosya saklayabilir. microsoft, sql
server’ın gelecek versiyonlarında image veri tipini kaldırmayı düşündüğü için
yerine varbinary(MAX) kullanabilirsiniz.
Anahtar (Key)
 Anahtar bir veya birden fazla alanın bir satır için
niteleyici olarak girilmesi için zorlanan bir çeşit
zorlayıcıdır.
 2 çeşit anahtar vardır:
 Birincil Anahtar (Primary Key)
 Yabancı Anahtar (Foreign Key)
Birincil anahtar
 Bir kayıta ulaşmayı sağlayacak anahtar veridir.
 Örneği öğrenciler arasında iki Ahmet var. Arama
yaparken istediğimiz Ahmet’i bulmak için her bir
öğrenciye özel bir numara olmalıdır.
 Örneğin öğrenci numarası
 Birden fazla alanda birlikte birincil anahtar olabilir
Yabancı anahtar
 Bir tabloya girilebilecek kayıtları başka bir tablonun
belli alanındaki verilerle
 sınırlandırmaya ve
 ilişkilendirmeye yarar.
 Örneğin öğrencilerin not verilerinin girildikleri tablodaki
her satıra öğrenci bilgileri tablosundaki öğrenci no ile
eşleşen bir değer girilmesi gibi.
Varlık-bağıntı modeli (Entity–relationship ER -model)
Varlık – Entity – Tablo - Table
Nitelik - Attribute – Sütun - Column
Relationsip – İlişki
Anahtar Nitelik – Primary Key
Çok Değerli Nitelik
Zayıf Varlık Kümesi
Veri tabanı Tasarlama
1. Nesneler tanımlanır
Kütüphane sistemi: kitap, üyeler, türler, ödünç hareketleri
Veri tabanı Tasarlama
2. Her nesne için bir tablo oluşturulur.
kitap,
uyeler,
turler,
odunc_hareketleri
Veri tabanı Tasarlama
3. Her tablo için bir anahtar alan seçilir
Kitap tablosu: kitapno
Üyeler tablosu: uyeno
Veri tabanı Tasarlama
4. Nesnelerin her bir özelliği için tabloya sütun eklenir
Kitap tablosu: kitapno, yılı, yazarı, adı, ilgili olduğu alan
Veri tabanı Tasarlama
5. Tekrarlayan nesne özellikleri için ek tablolar oluşturulur.
İstek tablosu
uyen
o
İstek _tarihi
Kitap_adi
Kitap_yili
Kitap_yazari
ilgili _alan
Veri tabanı Tasarlama
6. Tablo ile doğrudan ilişkili olmayan alanlar belirlenir.
Ödünç hareketleri tablosunda kitabı ödünç alan üyenin
adresi doğrudan bu tablo ile ilişkili değildir.
Bu veri üye bilgilerinin tutulduğu uyeler tablosunda yer
almalıdır.
Veri tabanı Tasarlama
7. Tablolar arasındaki ilişkiler tanımlanmalıdır.
Tanımlanan tablodaki alanların birbiri ile ilişkisi tanımlanır.
Örneğin uyeler tablosundaki uyeno ile
odunç_tablosundaki uyeno alanı ilişkilendirilmelidir.
Kaynaklar
 Köseoğlu, K. (2005). Veri Tabanı Mantığı. Şefik
Matbaası. İstanbul
 Alokoç Burma, Z. (2005). Veritabanı Yönetim Sistemleri
ve SQL / PL - SQL / T – SQL. Seçkin Yayıncılık. Ankara
Download