SQL Veritabanı Veri Tipleri - Database tasarımında doğru veri tipini Seçmek için bilmeniz gerekenler

Database tasarımı yaparken sıklıkla yapılan hatalar doğru veri tipi seçilmediğinden hem gelen verinin hataya sebep olmasına hem de database boyutunun oldukça uçuk değerlere ulaşmasına sebebiyet vermektedir. 

Genelde verilerimizin artacağız sayıyı kestiremediğimizden bu hataları yaparız. Oysa Google'da Google olacağını kestiremezdi, her zaman en iyisi olacağınızı düşünün bu hem başlangıçta plan yaparken tasarımlarınıza hem de ruhsal olarak size iyi gelecektir 🙂

Şimdi bakalım bu veri tipleri, boyutları neymiş ve karar vermemizi etkileyecek değerleri nelermiş... 

İyi çalışmalar...


1) Metinsel Veri Tipleri

char: Unicode’u desteklemeyip char(n) şeklinde kullanılırlar. 8000 karaktere kadar değer alabilirler.Belirtilenden(n) az karakter girilse dahi giriş yapılan boyut kadar yer kaplar.Veri giriş boyutları benzer,sabit olan veri kümelerinde kullanılması önerilir


nchar: Unicode(uluslararası karakter setini,tanımlı tüm alfabeleri içerirç)destekler.Chardan farklı olarak maksimum 4000 karaktere kadar değer alabilir.


varchar: Chardan farklı olarak verinin boyutu kadar yere kaplar. 8000 karaktere kadar depolama yapar.Birbirinden farklı uzunlukta veri girişi yapılacağı zaman kullanılması önerilir. varchar(MAX) kullanımı ile 2GB’a kadar depolama yapılabilir.


nvarchar:Verinin boyutu kadar yer kaplar.Varchardan farklı olarak unicode’u destekler.4000 karaktere kadar değer alabilir.


text: Belirtilenden az değer girilse bile boyutu kadar yer kaplar.2GB’a kadar metinsel veri depolar.Unicode’u desteklemez.


ntext: Text’den farklı olarak girilen karakter boyutu kadar yer kaplar ve unicode’u destekler.


2) Binary(İkilik) Veri Tipleri

binary: 1 ve 0 ları temsil eden ikilik taban veri tipidir.Sabit uzunluklu veri tiplerinde kullanılırlar.8000 bytre’a kadar depolama yapabilir.


varbinary: Binary’den farklı olarak girilen karakter kadar yer kaplar.Bu yüzden uzunlukların değişken olduğu durumlarda tercih edilir.


image: Resim dosyalarını saklamak için kullanılır. En fazla 2 GB’a kadar veri depolar. Bunun yerine varbinary(MAX) kullanılması tercih edilir.


3) Sayısal Veri Tipleri

bit: Bir byte uzunluğunda tam sayı veri tipidir.Genellikle evet/hayır şeklinde mantıksal bilgileri tutmak için kullanılır.


int: 4 byte büyüklüğünde, -2 milyar /+2 milyar arasında değer tutabilen tam sayı veri tipidir.


bigint: 8 byte büyüklüğünde -2⁶³ ve 2⁶³ arasında değer tutabilen tam sayı veri tipidir.


smallint: 2 byte büyüklüğünde -32.768 ve 32.768 arası değer alabilen tam sayı veri tipidir.


tinyint: 1 byte büyüklğüne sahip, 0–255 arası tam sayı veriler için kullanılan tam sayı veri tipidir.


decimal,numeric: İkisinin de kullanımı aynıdır.Bu veri tipinde saklanacak sayının basamak sayısı tanımlanabilir.Veri tipi boyutu belirtilen basamak sayılarına göre değişkenlik gösterebilir.-38 ve +38 basamak arası verileri depolayabilir. -10³⁸ ,10³⁸ arası ondalık ve tam sayı türünde veri saklayabilir.


4)Parasal Veri Tipleri

money: 8 byte boyutunda, yaklaşı -2⁶⁴ ile 2⁶⁴ arasında parasal değerleri tutmak için kullanılır. 4 basamağa kadar duyarlı ondalık tipli verileri saklar.


smallmoney: 4 byte uzunluğunda yaklaşık -214.000 ile 214.000 arası parasal değerleri tutmak için kullanılır.Money tipinde olduğu gibi 4 basamağa kadar duyarlı ondalık tipli verileri saklarken kullanılır.


5)Tarih-Zaman Veri Tipleri

date: Tarihleri YYYY-AA-GG (yıl-ay-gün) formatında saklar. 3 byte uzunluğunda veri tipidir.


smalldatetime: Tarih ve zaman verilerini yıl-ay-gün ve saat-dakika-saniye-salise şeklide saklar. 4 byte uzunluğunda veri tipidir.


datetime: YYYY-AA-GG şeklinde tarih ve zaman verilerini tutan 8 byte uzunluğunda veri tipidir. 1 Ocak 1753–31 Aralık 9999 arası veriler için kullanılır.


datetime2: Datetime’dan farklı olarak 1 Ocak 0001–31 Aralık 9999 tarihleri arasu verileri tutan ekstra olarak salise hassasiyeti daha yüksektir.Kapladığı alan salise hassasiyetine göre 6–8 byte arası değişebilir.


time: Sadece saat verilerini saat-dakika-saniye-salise(7 basamaklı) şeklinde saklayan , boyutu kullanıcı tarafından değiştirilebilen 3–5 byte arası yer kaplayan veri tipidir.


datetimeoffset: Ülkelere göre değişen zaman farkını hesaplayıp tutarken kullanılır.


6) Diğer Veri Tipleri

sql_variant: sayı,metin, binary gibi farklı veri tiplerini depolamak için kullanılan veri tipidir.Yani bir sütun ya da fonksiyonda birden fazla veri tipi kullanmamız gerektiğinde tercih etmeliyiz.


xml: XML türünde veri saklamak için kullanılır. Kapasitesi 2 GB’dır.Bellekteki boyutu, saklanan XML verisine göre değişkenlik gösterir.


geometry: Öklid koordinat sistemine ait verileri tutmak için kullanılır.Geometrik şekillerin en-boy-yükselik verilerini saklar.


timestamp: Tabloya kayıt eklendiğinde , güncellendiğinde binary türünde özel değer alan veri tipidir.


uniqueidentifier: 16 byte uzunluğunda benzersiz GUID tipinde veri tutar.İki GUID birbirinden tamamen farklıdır eşit olamazlar.


hierarchyid: Ağaç veri modeli ve ya hiyerarşik olarak sınflandırılmış verileri saklamak için kullanılır.


geography: Coğrafi koordinat ve GPS verilerini tutmak için kullanılır.


Kaynakça: https://docs.microsoft.com/en-us/sql/t-sql/data-types/data-types-transact-sql?view=sql-server-2017

Yorumlar

Bu blogdaki popüler yayınlar

Yazıcıda Bekleyen Belgeleri Hızlıca Temizleme

C# ile SQL Veritabanı Yedeğini Alma

SQL SERVER'da sa ve diğer kullanıcıları aktif etme