1 Temel Kavramlar

advertisement
Tekrar
Veritabanı 2
Veritabanı Nedir?
• Veritabanı ortaya çıkış hikayesi
– Saklanan ve işlenen veri miktarındaki artış
– Veri tabanı olmayan sistemin verilerinin kalıcı
olmaması.
• Veritabanı; tanım olarak herhangi bir konuda birbiri
ile ilişkili ve düzenli bilgiler topluluğudur.
– Geleneksel dosyalama sistemine göre verilere erişim
hızlı.
– Gereksiz veri tekrarını engeller.
– Her ihtiyaca, büyük veya küçük bütün otomasyon
sistemleri günümüzde artık veri tabanı
kullanmaktadır.
Veritabanı Kavramları -1
 Tablo;
 Veritabanı içerisinde verilerin tutulduğu kısımdır.
 Satır ve sütunlardan oluşmaktadır.
 Tablo içerisinde her satır bir kaydı ifade ederken , her sütun her
bir kayıta ait bir özelliği ifade eder aynı zamanda her bir sütuna
field yada alan denir.
Personel Tablosu
PerNo
Adı
Soyad
Bölüm
759
Ali
Coşkun
Bilgisayar
760
Mehmet
Kaya
Bilgisayar
786
Kemal
Köse
Büro
Her satır bir kaydı temsil
etmekte
Her sütün farklı bir özelliği ifade eder ,
PerNo,Adı,Soyadı,Bölüm buradaki
alanlarımız.
Veritabanı Kavramları -2
Satır ve Sütun;
 Tabloyu oluşturan temel kavram.
 Sütun tablo içerisinde tutulan her bir veri türüne
verilen isimdir, tablo içerisinde birden fazla kullanılır.
 Satır sütuna ait veri gurubudur. Örneğin bir öğrencinin
no,ad,soyad bilgilerinin tamamı satırı ifade
etmektedir.
Veri Tipleri
 Oluşturulan veritabanında tutulan verilerin hepsi aynı
türden değildir.
 Her veriye göre farklı veri tipi oluşturulur.
VTYS Sağladığı Yararlar -1
•Veri Tekrarı (“Data Redundancy”) :Aynı verinin sürekli
tekrarlanmasını önler.Aynı tablo içerisinde, farklı bilgisayarlarda
vb..; Veri Tekrarı (“Data Redundancy”) azaltılır ya da yok edilir.
•Veri Tutarlılığı (“Data Consistency”): Aynı verinin değişik
yerlerde birkaç kopyasının bulunması “bakım” zorluğu getirir: bir
yerde güncellenen bir adres bilgisi başka yerde güncellenmeden
kalabilir ve bu durum veri tutarsızlığına (“Data Inconsistency”) yol
açar.
•Veri Paylaşımı / Eşzamanlılık (“Concurrency”): Veri tabanı
yönetim sistemi (VTYS) kullanılmadığı durumlarda veriye sıralı
erişim yapılır. Yanı birden çok kullanıcı aynı anda aynı veriye
erişemez. Bir VTYS’de ise aynı veritabanlarına saniyede
yüzlerce, binlerce erişim yapılabilir.
VTYS Sağladığı Yararlar -2
•Veri Bütünlüğü (“Data Integrity”): Bir tablodan bir öğrenci
kaydı silinirse, öğrenci var olduğu diğer tüm tablolardan
silinmelidir.
•Veri Güvenliği (“Data Security”): Verinin isteyerek ya da
yanlış kullanım sonucu bozulmasını önlemek için çok sıkı
mekanizmalar mevcuttur. Veri tabanına girmek için kullanıcı adı
ve şifreyle korumanın yanı sıra kişiler sadece kendilerini
ilgilendiren tabloları ya da tablo içinde belirli kolonları görebilirler.
•Veri Bağımsızlığı (“Data Independence”): Programcı,
kullandığı verilerin yapısı ve organizasyonu ile ilgilenmek
durumunda değildir. VERİ BAĞIMSIZLIĞI, VTYS’lerinin en temel
amaçlarındandır.
Veritabanı Kullanıcıları
• Veritabanı Yöneticisi (DBA-Database Administrator)
Tasarım,oluşturma ve işletiminden sorumludur. Görevleri;
– Tasarımı
– Performans Analizi
– Erişim Yetkilerini Düzenleme ve Erişim Sağlama
– Yedekleme ve Geri Yükleme
– Veri Bütünlüğü Sağlama
– Sistem Sürekliliği Sağlama
• Uygulama Programcısı
Son kullanıcılara yönelik uygulama yazılım geliştirmek. Veri işleme dili ve
geliştirme.
• Sorgu Dili Kullanıcıları
Mevcut sorgular dışındaki diğer sorguları hazırlamak. Veri eklemek,silmek.
• Son Kullanıcılar
Yazılımı kullanan
İlişki Türleri
Tablo yapısına ve içerdiği bilgilere göre ilişkileri farklı
olabilir.
• Bire-Bir (1-1)
• Bire-Çok(1-n)
• Çoğa-Bir(n-1)
• Çoğa-Çok(n-m)
İlişki Türleri
• Bire-Bir (1-1) İlişki ; Tablolar arası ilişki kurulan
alanların her iki tabloda da tek olması anlamına gelir.
KimlikBilgileri
Sifre
TcNo
Ad
Soyad
TcNo
Sifre
121
Ayşe
Berk
121
sifre1
243
Kemal
Kurt
243
asd123
982
Musa
Tufan
982
111111
1
1
• 1 kişiye ait sadece 1 şifre olabilir, 1 şifre 1 kişiye ait
olabilir.
İlişki Türleri
• Bire-Çok (1-n) İlişki ; Tablodaki 1 değer diğer
tabloda birden fazla alana (n) karşılık gelmektedir.
Öğrenciler
Notlar
ogrNo
ad
bolum_id
ogrNo
ders
not
759
Ayşe
1
759
c121
60
760
Kemal
1
759
c122
70
761
Musa
2
760
c121
85
1
n
n
Bölümler
bolum_id
bolum
1
Bilgisayar
2
Büro
1
İlişki Türleri
• Çoğa-Çok (n-m) İlişki ; Tabloların birindeki birçok
kaydın değeri diğer tablolarda birden fazla kayda
karşılık geliyorsa.
Müşteri
Ürün
mus_id
ad
soyad
urun_id Urun
1
Ayşe
Ay
101
Kalem
2
Kemal
Kaya
102
Kitap
1
1
Fatura
faturaNo
mus_id
urun_id
adet
1
1
101
1
1
1
102
2
5
2
101
1
6
2
101
1
n
m
Normalizasyon -Tanım
• Normalizasyon; veri tabanı tasarım
aşamasında veri tekrarını, veri kaybını veya
veri yetersizliğini önlemek için gerçekleştirilen
işlemlerdir.
• Normalizasyon tanım olarak ise ;
(Ayrıştırma), veritabanlarında çok fazla
sütun ve satırdan oluşan bir tabloyu
tekrarlardan arındırmak için daha az satır ve
sütun içeren alt kümelerine ayrıştırma
işlemidir.
Normalizasyon Amaçları
• Veri Bütünlüğünün Sağlanması
– Gereksiz veri tekrarını önleyerek verilerdeki
bozulmaları önlemek
• Uygulamadan Bağımsızlık
– Uygulama değişse bile veritabanı tutarlı
olarak çalışmalı
• Performansı Arttırmak
– Veri tekrarı en aza iner ve arama hızlı olur.
Normalizasyon Kuralları
• Birinci Normal Form (First Normal Form)
1NF
• İkinci Normal Form(Second Normal Form)
2NF
• Üçüncü Normal Form(Third Normal Form)
3NF
Birinci Normal Form -1
•Tekrarlanan sütun yapıları olmamalıdır
•Birden fazla türde bilgi tek bir sütunda olamaz.
•Bir alan içerisindeki bilgi özel karakterlerle
ayrılarak tutulmamalıdır.
Adres Tablosu
Telefon Tablosu
Ad Soyad
Telefon
Ali Coşkun
3710, 3712
Mehmet Kaya 3714, 3715,3716
Ahmet Demir 3750
Ad
Soyad
Ali
Coşkun
Mehmet
Kaya
Ahmet
Demir
Adres1 Adres2
Ordu
Denizli
Adana
Çivril Atasay Kamer
MYO Çivril / Denizli
Birinci Normal Form -2
• 1Nf uyun hale geldi fakat 2NF ve 3NF ye
uygun değil
Telefon Tablosu
Adres Tablosu
Ad
Soyad
Telefon
Ad
Soyad
Ali
Coşkun
3710
Ali
Coşkun Ordu
Ali
Coşkun
3712
Ali
Adres1
Mehmet Kaya
3714
Mehmet Kaya
3715
Coşkun Çivril Atasay Kamer
MYO Çivril / Denizli
Mehmet Kaya
Denizli
Mehmet Kaya
3716
Ahmet Demir
Ahmet
Demir
3750
Adana
İkinci Normal Form -1
1. Tabloda bir birincil anahtar olmalı ve anahtar olmayan
sütunlar birincil anahtara bağımlı olmalı.
2. Birincil anahtar birden fazla sütundan oluşuyorsa
tablodaki veriler her iki sütuna da bağımlı olmalıdır.
OgrenciVeNot Tablosu
ogrNo
Ad
Bolum
759
Ali
Bilgisayar c121
60
759
Ali
Bilgisayar c122
70
760
Mehmet Bilgisayar c121
65
761
Kemal
90
Büro
DersKodu Not
c134
Öğrenci bilgileri ve not bilgileri ayrılmalı.
İkinci Normal Form -2
• İkinci normal forma uygun hali
Ogrenci Tablosu
Not Tablosu
ogrNo
Ad
Bolum
ogrNo
DersKodu Not
759
Ali
Bilgisayar
759
c121
60
760
Mehmet Bilgisayar
759
c122
70
761
Kemal
760
c121
65
761
c134
90
Büro
Üçüncü Normal Form -1
• Anahtar olmayan sütunlar anahtar sütuna
tam bağımlı olmalı. Anahtar olmayan
sütuna bağımlı olmamalı.
Ürün Tablosu
ÜKodu
Ad
Birim
Birim Adı
k001
Alçı
1
Kg
k002
Tel
2
Cm
k003
Boya
3
Lt
Üçüncü Normal Form -2
Ürün Tablosu
Birim Tablosu
ÜKodu
Ad
Birim
Birim
Birim Adı
k001
Alçı
1
1
Kg
k002
Tel
2
2
Cm
k003
Boya
3
3
Lt
Normalizasyon Örnek-1
• 1NF Uygun 2NF değil
musteri
Urun_id
Sehir
SehirKodu
Miktar
M145
U1
Denizli
1
100
M145
U2
Denizli
1
150
M151
U2
Tokat
2
75
M149
U3
Samsun
3
200
M148
U1
Tokat
2
140
Normalizasyon Örnek 1-devam
musteri
Urun_id
Miktar
M145
U1
100
M145
U2
150
M151
U2
M149
M148
musteri
Sehir
SehirKodu
M145
Denizli
1
M151
Tokat
2
75
M149
Samsun
3
U3
200
M148
Tokat
2
U1
140
• 2NF uygun 3NF uygun değil.
Normalizasyon Örnek 1-devam
musteri
Urun_id
Miktar
musteri
SehirKodu
M145
U1
100
M145
1
M145
U2
150
M151
2
M151
U2
75
M149
3
M149
U3
200
M148
2
M148
U1
140
SehirKodu Sehir
1
Denizli
2
Tokat
3
Samsun
Ms SQL Server Veri Tipleri
• Bigint: -9,223,372,036,854,775,808 ile
9,223,372,036,854,775,807 arasındaki sayıları tutar. 8
baytlık yer kaplar.
• Int: -2,147,483,648 ile 2,147,483,648 arasındaki sayıları
tutar. fiziksel olarak 4 baytlık yer kaplar.
• Smallint: -32,768 ile 32,767 arasındaki sayıları tutar. 2
baytlık yer kaplar.
• Tinyint: 0 ile 255 arasındaki sayıları tutar. 1 baytlık yer
kaplar.
Ms SQL Server Veri Tipleri
• Decimal (x,y): Boyutu 5 ile 17 byte arasında değişir.
ondalıklı sayıları tutmaya yarar. İki parametre alır. İlk
parametre (x) sayının kaç karakter uzunluğunda
olacağını, ikinci parametre (y) ise bu karakterlerin
kaçının ondalık kısım olduğunu ifade eder. Örneğin
decimal(4,2) şeklinde tanımlanan bir değişken 12,34
değeri alabilir.
• Numeric (x,y): Kullanımı ve özellikleri decimal ile
aynıdır.
• Float: Çok büyük ve çok küçük kesirli sayılar için
kullanılan veri tipidir. Boyutu 4 ile 8 byte arasındadır.
• Real: Float ile aynı özelliklere sahip.
Ms SQL Server Veri Tipleri
• Money: -922 337 203 685 47,5808 ile 922 337 203 685
477,5807 arası parasal veri tutabilir. 8 baytlık yer kaplar.
• Smallmoney: -214 748,3648 ile 214 748,3647 arası
parasal veri tutabilir. 4 baytlık yer kaplar.
• Datetime: 1 Ocak 1753 ile 31 Aralık 9999 tarihleri
arasındaki herhangi bir tarihi saatiyle birlikte tutar. 3.33
milisaniyelik bir hassasiyete sahiptir. 8 baytlık yer kaplar.
• Smalldatetime : 1 Ocak 1990 ile 6 Haziran 2079 tarihleri
arasındaki herhangi bir tarihi saatiyle birlikte tutar. 10
dakikalık bir hassasiyete sahiptir. 4 baytlık yer kaplar.
Ms SQL Server Veri Tipleri
• ANSI standartlarına uyan herhangi bir karakter 1 byte yer kaplar.
Ancak Unicode karakterler ise hafızada 2 byte yer kaplar. Unicode
karakterler farklı dillere özgü karakterlerdir.Türkçe’ de kullandığımız
ç,ğ,ş,ö gibi harfler bizim dilimize özgüdür ve ANSI standartlarında
yer almamaktadır.
• Char(n): Boyutu1 ile 8000 arasında değişir. Maksimum 8000
karakter tutar.
• Nchar(n): Boyutu 2 ile 8000 arasında değişir. Maksimum 4000
karakter tutar.
• Varchar(n): Boyutu1 ile 8000 arasında değişir. Maksimum 8000
karakter tutar.
• Nvarchar(n): Boyutu 2 ile 8000 arasında değişir. Maksimum 4000
karakter tutar.
• Nvarchar(MAX): Maksimum 2 gigabyte (536.870.912 karakter) veri
saklar.
• Text: Maksimum 2 gigabyte (1.073.741.824 karakter) veri saklar.
• Ntext: Maksimum 2 gigabyte (536.870.912 karakter) veri saklar.
Veri Bütünlüğü
Veri bütünlüğü, bir tabloda veri güncelleme, silme veya
ekleme gibi işlemler yapılırken diğer tablo ya da
tablolardaki verilerin birbirleriyle uyum içinde olması,
dolayısıyla veri tutarlılığının kaybolmamasının garanti
altına alınması demektir.
• Programsal Veri Bütünlüğü
• Tanımsal Veri Bütünlüğü
Veri Bütünlüğü
• Programsal Veri Bütünlüğü:
– Trigger’ler, Stored Procedurler, İş seviyesi Uygulamalar
– Transaction’dan sonra devreye giriyor veya, bir sorgu daha
kullanarak kontrol ediyor. Çok kaynak tüketir. Her türlü kuralı
denetleyebilir.
• Tanımsal Veri Bütünlüğü
– Constraint; Tablo ile birlikte derlenir ve Transaction’dan önce
devreye girer. Etkin ancak dinamik değil, her sorunu
çözemeyebilir.
•
•
•
•
•
Primary Key Constraint
Unique Constraint
Check Constraint
Default Constraint
Foreign Key Constraint
– Rule = Check Constraint Tablo dışında nesne.
– Default = Default Constraint Tablo dışında nesne.
Constraint’ler
• Primary Key Constraint
– Daha önce girilmemiş değerler girmeye zorlar, her satırın tekilliğini
sağlar.
– NULL kalamaz.
– Her tabloda en fazla 1 adet bulunabilir.
– SQL Server Tarafından, arka planda Unique Indeks olarak gerçeklenir.
• Unique Constraint
– Bir tabloda birden fazla sütunda tanımlanabilir.
– SQL Server Tarafından, arka planda Unique Indeks olarak gerçeklenir.
– NULL kalabilir ama NULL değil ise, mutlaka girişmemiş verilerden
gelmelidir.(Ya NULL kal ya tekrarlama)
– Örnek:Kişi kimlik bilgilerinin tutulduğu bir tabloda kişinin sicilNumarası ,
tcKimlikNumarası, vergiNumarası, sosyalGuvenlikNumrası gibi bilgiler
kişiye özel bilgileridir. Fakat bu bilgilerden yanlızca bir tanesi primary
key olabilir. Diğer kişiye özel bilgilerin tekrarını engellemek için unique
key tanımlanır.
•
Constraint’ler
Check Constraint =RULE
– Belli bir formata uygun giriş için,
– Aynı tablonun aynı satırı için, iki farklı sütun değerini karşılaştırmak için,
– Boş geçilemez sütun için,
– Örnek: Doktor bilgilerinin tutulduğu bir tabloda doktorun iseBaşlamaTarihi ve
istenAyrılmaTarihi karşılaştırılmalıdır. Çünkü işten ayrılma tarihi başlama
tarihinden önce olamaz.
•
Default Constraint=DEFAULT
– Bir sütuna girilmek üzere değer verilmezse, girilebilecek bir standart değer
tanımlar. Sadece INSERT’te geçerlidir.
– Örnek :tbl_hastalar tablosunda sisteme yeni bir hasta ekleneceği zaman
eklenme tarihini günün tarihini eklenmesi otomatik olarak sağlanır.
•
Foreign Key Constraint
– Bir tablodaki bir sütuna ait değerlerin, başka bir tablonun belli sütunundan
gelmesini denetler
– CASCADE UPDATE, CASCADE DELETE özelliği var, Trigger’e gerek yok.
•
Constraint’leri geçici olarak açıp kapatabiliriz.
Download