SQL-1 Veri Tipleri ve Normalizasyon
Veri tabanlarında tutulan veri yapısal bir veridir. Yapısal verinin ise kendi içinde bir takım sınırlamaları, kısıtlamaları vardır.
Örneğin; bir müşteri listesinde müşteri adını 50 karakter ile sınırladıysak oraya 51 karakter giremeyiz. Ad-Soyad alanı string bir alanken yani herhangi bir karakter bilgisini girebilirken, doğum tarihi alanı date türünde bir alandır ve buraya sadece tarih türünde veriler girebiliriz.
Veri formatını bu şekilde sınırlandırdığımız ve veri tablosunu tasarladığımız işleme normalizasyon denir.
Diğer bir deyişle 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 ; 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 işlemini gerçekleştirirken kısıtlamalar ve kısıtlamaları yaparken doğru veri tipini seçmek çok önemlidir. Doğru veri tipinin seçimini yapmak ve hangi ihtiyaca hangi veri tipi daha uygundur bilmek gerekir. Doğru veri tipini seçerken kaynak kullanımı analizi ve hesaplamasını da yapmamız gerekir. Veri tabanları aslında bir uygulamanın arkasında çalışan işlemlerdir ve uygulamada bir çok şeyi değiştirsek bile veri tabanı üzerinde en başta tasarlanan hali değiştirmek çok zordur. Bu nedenle en başta doğru tasarlamak çok önemlidir.
VERİ TİPLERİ:
Tamsayı Veri Tipleri:
Küçük gibi görünen bu rakamlar hem performans hem de kapladığı yer açısından oldukça önemlidir.
Metin (String) Veri Tipleri:
Char:
- Belirttiğimiz karakter sayısını kabul eder ve girdiğimiz karakter sayısını tamamlamak için sonuna boşluk koyar.
- Örneğin belirttiğimiz sayı 20 olsun ve “Kedi” değerini girelim. Harf sayısını 20 ye tamamlayabilmek için 16 tane boşluk ekler ve hafızada 20 karakterlik yer kaplar.
Varchar:
- Girdiğimiz karakter sayısı ne kadarsa o kadar yer kaplar.
- Örneğin “Kedi” değeri için 4 karakterlik yer kaplar.
Veri tabanlarının en çok yaptığı şey arama işlemidir. Uzunluğu bilinen bir şey üzerinde daha hızlı arama gerçekleştirilir. Char veri tipinde uzunluk bellidir ve belli olan bir uzunlukta arama içerisinde çalışır oysa Varchar’da önce uzunluk tespit edilir ve ona göre bir arama mekanizması içinde çalışılır. Dolayısıyla uzunluğu belli olan; tel no, tc no, pasaport numarası gibi yapılarda Char veri tipini kullanmak mantıklıdır. İsim, e-mail, adres gibi uzunluğu belli olmayan yapılarda ise sistemde çok fazla yer kaplamamak için Varchar tipini kullanmak çok daha iyidir.
- Varchar ve Char veri tipi içerisinde 255 tane karakter tutar. (Büyük harfler, küçük harfler, noktalama işaretleri, rakamlar, vb…)
- Çince, Japonca, Arapça gibi dillerin harfleri bu 255 harfe sığacak şekilde değildir.
- Bu tarz karakterleri veritabanında tutmak istiyorsak veri tipimizin Nvarchar veya Nchar olması gerekir.
- Varchar ve Char tiplerinde en fazla 8000 karakter; Nvarchar veya Nchar tiplerinde ise 4000 karakter girebiliriz.
- Daha fazla karakteri tutmak istersek Varchar(max) veya Nvarchar(max) tiplerini kullanarak 2 GB’ a kadar veriyi tutabiliriz. Fakat bu arama performansını etkileyecektir.
Ondalık Sayı Veri Tipleri:
En çok Decimal ve Float veri tipleri kullanılır.
Tarih-Saat Veri Tipleri:
Diğer Veri Tipleri:
image:
- veritabanında dosya tutmak için kullanılıyordu fakat yeni sürümlerde daha performanslı olan varbinary(MAX) kullanılmaya başlandı.
- Eski sürümlerle uyumluluk sağlamak adına bulunmaya devam etmektedir.
- Maksimum değeri: 2³¹-1(2,147,483,647) Byte
binary:
- veritabanında dosya tutmak için kullanılır.
- Tanımlandığı değer kadar Byte (0 ile 8000 arasında). Binary(10) -> 10 Byte
varbinary:
- veritabanında dosya tutmak için kullanılır.
- Tanımlandığı değer + 2 Byte (0 ile 8000 arasında)
Binary ve varbinary arasındaki fark aslında Varchar ve Char arasındaki farkın aynısıdır. Binary sabit bir değer tutarken varbinary 8000’e kadar girilen değer kadar yer tutar. Daha büyük dosyalar için ise varbinary(MAX) kullanılır. (0 ile 2.147.483.647 arasında)
Xml:
- Xml türünde olan veri tipi ise xml veriler için kullanılır.
Table:
- Sonradan kullanım amacıyla bir sonuç kümesini saklamak için kullanılır.
uniqueidentifier:
- Bir satırda o satırın tekilliğini sağlamak istiyorsak kullanılır.
- GUID(global olarak tekilliği garanti eder) veriyi tutar.
- select NEWID() script’ini çalıştırdığımızda; A4C5DB26–7F18–4B4F-A898-E7DE26A8446A gibi bir GUID veri oluşturur.
- Bazen veritabanlarında tekilliği sağlamak için de kullanılır. Ama bu amaçla kullanıldığında genelde performansı düşürür.
hierarchyid:
- Hiyerarşik yapılarda, hiyerarşideki pozisyonları temsil etmek için kullanılır.
geography:
- Dünyadaki koordinat sistemini tutar
geometry:
- Euclidean(float) sistemi ile koordinat sistemini tutar.
- Sadece 2 düzlem üzerinden hesaplanır.
- Dünyanın eğimlerini hesaba katmaz.
Vakit ayırıp okuduğunuz için teşekkürler, yeni konularda görüşmek üzere 🤩👋🏻