SQL_3: Tablolar ve Veri Tipleri

Tablo neyi ifade ediyor, haydi bakalım.

Tablo verilerin satırlar (row) ve sütunlar (colomn) halinde düzenlenmesiyle oluşan veri grubudur. Veritabanları bir veya daha fazla tablodan oluşurlar. Tablolar arasında ilişkiler düzenlenebilir. Tablonun satırlarındaki her bir bilgi kayıt (record), sütunlar ise alan (field) olarak isimlendirilir. Bir tabloda yer alan her bir kayıt bir satıra karşılık gelir.

   Örneğin personel listesi (yani personel tablosunu) ele alınacak olursa, her bir satırda bir personele ait bilgiler yer alır. Sütunlardaki alanlar (Field) ise yapılandırılmış bilginin her bir kısmını saklamak üzere yapılan tanımlamadır. Bir personele ait bilgilerin her biri sütunlarda tutulur.

Personelin sicil numarası, adı, soyadı, çalıştığı birim, doğum tarihi gibi bilgilerin her biri bir sütun alanıdır. Her bir alan, yapılandırılmış verinin bir birimini tutmak üzere tanımlanır. Her bir sütunun adı ile birlikte diğer bilgilerinin (en fazla kaç birimlik bilgi bu hücrede saklanabilecek, ne tür bilgi saklanacak vs.) ortaya koyduğu tanıma alan denir. Herhangi bir veritabanı programında çalışmaya başlamadan önce yapılacak işe uygun veri tabanı tasarımı yapılmalıdır. Bu işin en önemli aşamasıdır.

Başlangıçta iyi tasarlanmayan bir veritabanı ileride geriye dönüşü olmayan verimsiz bir bilgi yığınına dönüşebilir. En basit hali ile veritabanı tasarımında; hangi tabloların olacağı, bu tablolarda hangi alanların olacağı, tablolar arasındaki alan ilişkilerinin neler olacağı ve alanlara ait özelliklerin tanımlanması yapılır. Alan özelliklerinde alan adı, alan tipi, alanın uzunluğu, alanın varsayılan değeri, bu alana yazılacak verilerin geçerlilik koşulları başlangıçta tasarlanması gerekir.

 

Veritabanının en önemli bileşeni tablodur. Her veritabanında en az bir tablo bulunur. Veritabanı işlemlerinde önce tablo/tablolar tanımlanır. Daha sonra tablolara kaydedilecek bilgilerin neler olacağı ve bu bilgilere ait özellikler tanımlanır. Personelin sicil numarası ve bunun sayılardan oluşması, personelin adı soyadı ve bunun harflerden oluşması gibi. Tanımlamalar bittikten sonra tablodaki bu alanlara ait gerçek bilgiler yazılır. Yazılan bu bilgiler tablolarda tutulur.

Kayıt ile satır arasındaki temel fark, kayıt ile kastedilen yapının sütunlar hakkındaki bilgileri de içermesidir. Tablolara girilmiş bilgilerden belirli şartlara uyanların liste şeklinde alınmasına sorgu adı verilir. Tablolardan gerektiğinde sorgulamalar yapılabilir. Değişik amaçlara göre sorgular hazırlanarak tablodaki bilgilerin tümü, bir kısmı veya belirli şartı sağlayanların listesi alınabilir. Örneğin; muhasebe bölümünde çalışan personelin listesi gibi.

Veri Tipleri [1]

1-Karakter Tabanlı (Metinsel) Veri Tipleri

char: Unicode olmayan sabit uzunlukta karakter verisi saklamak için kullanılır.  Boyutu değişken olmakla birlikte en fazla 8000 karakter veri saklayabilir.

varchar: Unicode olmayan değişken uzunlukta karakter verisi saklamak için kullanılır. Belirlenmiş veri kapasitesi 8000 karakter olmasına rağmen (max) parametresi ile bu değer 2^31 byte’ a kadar genişletilebilir.

text: Daha önceki sql versiyonlarını desteklemek amacıyla Sql Server 2012 içerisinde hala yer almaktadır. Bu veri tipi yerine varchar(max) kullanın.

nchar: Sabit uzunlukta 4000 karakter unicode karakter verisi saklamak için kullanılır. Boyutu değişken olmakla birlikte kısa olan değerler atanan uzunluğa tamamlanır.

nvarchar: Değişken uzunlukta unicode karakter verisi saklamak için kullanılır. Belirlenmiş maksimum uzunluk 4000 karakter olmasına rağmen (max) parametresiyle 2^31 byte’a kadar veri depolanabilir.

ntext: text veri tipi gibi, bu veri tipide sadece eski versiyonları desteklemek amacıyla mevcuttur. Text tipinden tek farkı unicode veri saklayabilir.

Metinsel Veri Tipleri Arasından Seçim Yapmak

1-Sabit uzunluk veya değişken uzunluk veri tiplerine karar vermek: Bir sütuna girilecek verilerin tamamı benzer uzunlukta ise (telefon numarası, tc kimlik no, telefon kodu v.b) char, nchar gibi sabit uzunluktaki veri tipleri kullanılmalıdır. Fakat girilecek verinin uzunluğu önceden belli değilse (isim, soyisim, adres  v.b) değişken uzunlukta olan varchar, nvarchar veri tipleri tercih edilmelidir.

2- Unicode olan ve olmayan veri tiplerine karar vermek: char ve varchar veri tipleri Unicode değildir, yani sadece ASCII tabloda yer alan karakterleri saklayabilirsiniz. Eğer Türkçe karakterli veriler girecekseniz ve Collation ayarları hakkında da bilgi sahibi değilseniz sorun yaşamamak için nchar ve nvarchar veri tiplerini kullanınız.

2-Nümerik (Sayısal) Veri Tipleri

bit: Bir byte uzunluğunda tamsayı veri tipidir. Boyutu aklınızı karıştırmasın. Tablodaki ilk bit, bir byte büyüklüğünde yer kaplar, sonraki yedi bit aynı byte’ı kullanabilir.

tinyint: 1 byte büyüklüğünde 0 ile 255 arasında değer alabilen tamsayı veri tipidir.

smallint: 2 byte büyüklüğünde -32768 ile 32767 arasında değer alabilen tamsayı veri tipidir.

int: 4 byte büyüklüğünde yaklaşık -2 milyar ile +2 milyar arasında değer alabilen tamsayı veri tipidir.

bigint: 8 byte yüyüklüğünde -2^63 ile +2^63 arasında değer alabilen tamsayı veri tipidir.

decimal ve numeric: Decimal ve nümeric veri tipleri adları farklı olmasına rağmen kullanımları aynıdır. Boyutu değişken olmakla birlikte -10^38 ile +10^38 arasında ondalık ve tamsayı türünde verileri saklayabilir.

float: Boyutu ve doğruluğu (ondalık kısım duyarlılığı) aldığı parametreye göre değişen kayan noktalı sayılar için kullanılır.

real: Float veri tipinin parametre olarak 24 değerini aldığında ortaya çıkan halidir. -3.40E+38 ile 3.40E+38 arasında değer alır.

3-Parasal Veri Tipleri

smallmoney: 4 byte uzunluğunda yaklaşık -214 000 ile 214 000 arasında parasal değerleri tutmak için kullanılır. Ondalık kısım duyarlılığı 4 basamaktır.

money: 8 byte uzunluğunda yaklaşık -922 milyar ile 922 milyar arasındaki parasal değerleri tutmak için kullanılır. Ondalık kısım duyarlılığı 4 basamaktır.

4-Tarih-Zaman Veri Tipleri

date: Tarihleri YYYY-MM-DD şeklinde saklayan 3 byte uzunluğunda veri tipidir. 0001-01-01 ile 9999-12-31 tarihleri arasındaki tüm değerleri tutabilir.

smalldatetime: Tarih ve zaman verilerini  YYYY-MM-DD hh:mm:ss şeklinde saklayan 4 byte uzunluğunda veri tipidir. 1900-01-01 00:00:00 ile 2079-06-06 23:59:59 arasındaki tarih ve zaman değerlerini saklar.

datetime: YYYY-MM-DD hh:mm:ss:mmm şeklinde tarih ve zaman verilerini tutan 8 byte uzunluğunda veri tipidir. 1753-01-01 00:00:00.000 ile 9999-12-31 23:59:59.999 arası değerlerini saklar.

datetime2: datetime ile arasındaki fark salise hassasiyetinin daha yüksek olmasıdır.  7 basamağa kadar salise hassasiyeti kullanıcı tarafından belirlenebilir. Kapladığı alan salise hassasiyetine göre değişir. (6-8 byte)

time: Sadece saat verilerini hh:mm:ss:nnnnnnn şeklinde saklayan veri tipidir. Dateteime2 gibi salise hassasiyeti maksimum 7 basamaktır ve kullanıcı tarafından değiştirilebilir. (3-5 byte)

datetimeoffset: Ülkelere göre değişen zaman farkını tutmak için kullanılır.

5-Binary (İkilik) Veri Tipleri

binary: Maksimum 8000 byte boyutunda, sabit uzunlukta binary veri saklamak için kullanılır.

varbinary: Değişken uzunlukta 8000 byte boyutunda binary değer saklamak için kullanılır. (max) parametresiyle tutacağı maksimum değer 2^31 byte’a kadar yükseltilebilir.

image: Önceki sql versiyonlarını desteklemek amacıyla kullanılmaktadır. Bu tip yerine varbinary (max) veri tipi tercih edilmelidir.

6-Diğer Veri Tipleri

timestamp ve rowversion: Tabloya kayıt eklendiğinde ve güncellendiğinde binary türünde özel bir değer alan veri tipidir. Tarih veri tipleriyle alakası yoktur. Kullanıcı bu alanı değiştiremez veya kendisi değer atayamaz.

uniqueidentifier: 16 byte uzunluğunda eşsiz bir GUID değeri saklamak için kullanılır. Guid ve yapısı hakkında internetten bilgi bulabilirsiniz.

xml: XML türünde hiyerarşik verileri saklamak için kullanılır. Bellekteki boyutu saklanan xml verisine göre değişir.

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

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

hierarchyid: Ağaç veri modeli veya hiyerarşik olarak sınıflandırılmış verileri saklamak için kullanılır.

 

Kaynaklar:

[1]:http://www.kodlamamerkezi.com/

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir