Veritabanı Tasarımı Veri Türleri Kullanma
Konular TIMESTAMP ve TIMESTAMP WITH TIME ZONE sütun türlerini kullanarak tablo oluşturma INTERVAL YEAR TO MONTH ve INTERVAL DAY TO SECOND sütun türlerini kullanarak tablo oluşturma Bir tarih-saat değeri hangi zaman dilimini gösterdiğini bilmede organizasyon ve kişi durumlarına örnek verme. 2
Amaç Başka bir ülkeye seyahat ettiyseniz, cebinizde bulunan para yerel para birimi ile aynı olmadığını görürsünüz. Bir şey satın almak isterseniz paranızı ülkedeki yerel para birimine dönüştürmeniz gerekir. Bu dönüşüm işlemi SQL deki veri tipleri ile benzerlikler gösterir. Farklı veri türleri hangisinin verimli bir şekilde veri tuttuğunu amaçlayan farklı özelliklere sahiptir. 3
Veri Türü Oracle ile işlenen her değer bir türe sahiptir. Bir değerin veri türü değerin sabit bir özellik kümesi ile ilgilidir. Bu özellikler veritabanının bir veri türünün değerlerini diğer veri türünün değerlerinden sağlamaya neden olur. 4
Veri Türü Farklı veri türleri bazı avantajlar sağlar: Tek tür sütunlar tutarlı sonuçlar üretir. Örneğin, DATE veri türü sütunları her zaman tarih değerleri üretir. Bir sütuna yanlış veri türlü veri ekleyemezsiniz. Örneğin, DATE veri türüne sahip sütunlara NUMBE veri türündeki veri eklenemez. Bu nedenlerden dolayı, bir ilişkisel veritabanının her sütunu sadece bir veri türü tutabilir. Bir sütunda veri türleri karıştırılamaz. 5
Yaygın Veri Türleri En yaygın olarak kullanılan veri türleri sütunları: Karakter değerleri için: CHAR (sabit boyutlu, maksimum 2000 karakter); VARCHAR2 (değişken boyutlu, maksimum 4000 karakter); CLOB (değişken boyutlu, maksimum 128 terabayt) Sayı değerleri için: NUMBER (değişken boyutlu, maksimum hassasiyet 38 basamak) Tarih ve zaman değerleri: DATE, TIMESTAMP., INTERVAL İkili değerler için (örn. multimedya: JPG, WAV, MP3): RAW (değişken boyutlu, maksimum 2000 bayt); BLOB (değişken boyutlu, maksimum 128 terabayt) 6
Yaygın Veri Türleri En yaygın olarak kullanılan veri türleri sütunları: Karakter değerleri için VARCHAR2 ya da BLOB kullanmak CHAR kullanmaktan daha iyidir, çünkü yer tasarruf eder. Örneğin, çalışan soyadı Chang için VARCHAR2(30) sütunu sadece 5 belirli karakter tutulur: C h a n g. Fakat CHAR(30) sütunu 30 karakterli sabit bir boyuta getirmek için 25 boş alan tutar. Numara değerleri pozitif olabileceği gibi negatif de olur. Örneğin; NUMBER(6,2) +9999.99 dan -999.99 a kadar değer tutar. 7
DATE-TIME Veri Türleri DATE veri türü yüzyıldan saniyeye kadar tüm değeri tutar, fakat saniyenin kesirlerini tutamaz. 21/Aug/2003 17:25:30 geçerli iken 21/Aug/2003 17:25:30.255 değildir. TIMESTAMP veri türü, DATE veri türünün saniyenin kesirlerini tutmaya izin veren bir uzantısıdır. Örneğin, TIMESTAMP(3) saniyenin devamında 3 basamak milisaniye tutulmasına izin verir. 8
TIMESTAMP With [LOCAL] Time Zone 17:30 değeri hakkında düşünün. Elbette öğleden sonra beş buçuk anlamına gelmektedir. Fakat hangi zaman bölgesinde. New York şehrine göre mi Beijing şehrine göre mi yoksa İstanbul a göre mi? Birçok farklı ülkede faaliyet gösteren günümüzün küreselleşmiş organizasyonlarında hangi zaman dilimi için tarih-saat değerinin ifade edildiğini bilmek önemlidir. 9
TIMESTAMP With [LOCAL] Time Zone TIMESTAMP WITH TIME ZONE Evrensel Koordine Edilmiş Zamandan ya da UCT den alınmış bir zaman dilimi değerini saklar. 21/Aug/2003 08:00:00 5:00 ifadesinin anlamı UTC nin 5 saat önünde 8:00 dir. Bu US Doğu Standart Saati dir. TIMESTAMP WITH LOCAL TIME ZONE aynıdır fakat tek farklılık: bu sütun SQL komutunda seçildiğinde zaman otomatik olarak seçilen kullanıcı zaman dilimine dönüştürülmektedir. 10
TIMESTAMP With [LOCAL] Time Zone 11
TIMESTAMP With [LOCAL] Time Zone 05:00 saat (EST) zaman değişimi ile iki değerde tutulur. Fakat kullanıcı şimdi İstanbul da çalıştırır: ILK_SUTUN IKINCI_SUTUN 15/Nov/2007 08:00:00 AM -05:00 15/Nov/2007 15:00:00 İstanbul saati EST nin 7 saat ilerisindedir. New York ta saat sabah 8 iken İstanbul da saat öğleden sonra 3 tür. 12
INTERVAL Veri Tipleri Bunlar geçen zamanı ya da iki gün-zamanı değeri arasındaki zaman aralığını tutar. INTERVAL YEAR TO MONTH: yıl ve aylarla ölçülen zaman aralığını tutar. INTERVAL DAY TO SECOND: gün, saat, dakika ve saniye ile ölçülen zaman aralığını tutar. 13
INTERVAL YEAR TO MONTH Sözdizimi: INTERVAL YEAR [(yıl_hassasiyeti)] TO MONTH yıl_hassasiyeti yıl elemanındaki maksimum basamak sayısıdır. Varsayılan değeri 2 dir. 14
INTERVAL YEAR TO MONTH Bu örnek 120 ay aralığını göstermektedir: 15
INTERVAL DAY TO SECOND İki gün değeri arasında daha hassas farklılık istiyorsanız kullanın. Sözdizimi: INTERVAL DAY [gün_hassasiyeti)] TO SECOND [(kesirli_saniye_hassasiyeti)] gün_hassasiyeti gün elemanındaki maksimum sayıdaki basamaktır. Varsayılan değeri 2 dir. kesirli_saniye_hassasiyeti gün-zaman alanının saniye kısmının kesirli kısmının basamak sayısıdır. Varsayılan değeri 6 dır. 16
INTERVAL DAY TO SECOND Bu örnek 25 gün aralığını göstermektedir: 17