Veritabanı Tasarımı Tablo Oluşturma Tablo Oluşturma Konular • Ana veritabanı nesnelerini listeleme ve kategorize etme • Bir tablo yapısını inceleme • Şema nesnelerinin Oracle veritabanı tarafından nasıl kullanıldığını açıklama • Sayı, tarih ve karakter veri tiplerinin her biri için örnek verme • Her bir sütun için uygun veri tipi kullanarak tablo oluşturma • Harici tabloların kullanımını açıklama • Veritabanı nesnelerinin isimlerini ve diğer niteliklerini elde etmek için veri sözlüğünü sorgulama 2 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Tablo Oluşturma Amaç Bu zamana kadar veritabanındaki var olan tablolarda veriler üzerinde seçme, güncelleme, ekleme ve silme işlemlerini gerçekleştirdik. Veritabanı yöneticisi olarak tabloların nasıl oluşturulacağını da bilmelisiniz. Bu derste, hangi veritabanı nesnelerinin daha sık kullanıldığını, tablo yapısına nasıl bakılacağını ve yeni tabloların nasıl oluşturulacağını öğreneceksiniz. Tablolarınız milyonlarca satır ve yüzlerce sütun içeren tablolara göre küçük olacak fakat küçük tablo oluşturma, çok büyük bir tane oluşturma ile aynı SQL kodlamaları ve söözdizimini içerir. Ayrıca harici tabloları öğreneceksiniz ki bu tablolar normal Oracle tablolarına benzer fakat gerçek verileri harici düz bir dosyada tutulur ve ihtiyaç duyduğunuzda erişilir. 3 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Tablo Oluşturma Veritabanı Şeması Nesneleri Oracle veritabanı bir çok farklı nesne içerir. Bu bölüm en çok kullanılan nesneleri ve Oracle sunucusunun veri sözlüğünde tutulan bilgileri SQL kodlamaları sonucu olarak çalışırken nasıl kullandığını içermektedir. Ana veritabanı nesneleri: • Tablo • Indeks • Kısıtlama • Görünüm • Sıralama • Eşanlam Bunlardan bazıları bağımsız iken diğerleri değildir. 4 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Tablo Oluşturma Veritabanı Şeması Nesneleri Bazı nesneler veritabanında yer kaplarken bazıları kaplamaz. Veritabanı nesneleri ‘Bölütler’ olarak bilinen önemli bir bellek alanı kaplarlar. Tablolar ve indeksler bölütlere örnektir. Her bir satır için sütunlarda tutulan değerler önemli bir fiziksel disk alanı kaplar. Kısıtlama, Görünüm, Sıralama ve Eşanlam nesneleri sadece vertabanınında nesnelerin tanımı sırasında yer kaplar. Bunlarla eşleşen herhangi bir satır yoktur. 5 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Tablo Oluşturma Veritabanı Şeması Nesneleri Veritabanı tüm veritabanı nesnelerinin tanımını veri sözlüğünde tutar. Bu tanımlamalar, veritabanın kendisinin yanı sıra tüm veritabanı kullanıcıları tarafından erişilebilir. Bir sorgudan hangi satırların döneceğini Oracle nasıl bilir? Örneğin ‘SELECT cd_number, title FROM d_cds’ ifadesi yerine ‘SELECT * FROM d_cds’ yazarsak Oracle hangi satırların döneceğini nasıl bilir? Veritabanı sorguda kullanılan tablo tanımına bakar ve ‘*’ ifadesini tüm sütun listesine dönüştürür ve size sonucu döndürür. 6 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Tablo Oluşturma Veritabanı Şeması Nesneleri Veritabanı oluşturduğunuz tüm komutlar için veri sözlüğü kullanır. Hatta ‘*’ kullanmadan sütun adlarını belirtseniz bile. Komutlarınızda belirttiğiniz tablo veritabanında var mı, sütun adları doğru mu, istediğiniz işlemi gerçekleştirmek için ayrıcalığınız var mı diye kontrol eder ve istekleri nasıl gerçekleştireceğini belirten çalışma planına karar vermek için veri sözlüğü kullanır. Veri sözlüğü tüm veritabanı kullanıcılar tarafından sorgulanabilir. Application Express ortamında buralara ‘SQL Workshop> SQL Commands’ ya da ‘SQL Workshop> Object Browser’ ara yüzleri ile erişilebilir. 7 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Tablo Oluşturma Veritabanı Şeması Nesneleri SQL komut penceresinde sorgulamak istediğiniz görünümün adını bilmelisiniz ve ‘Nesne Gözatma’ ekranında nesnelere tıklayarak özelliklerini görebilirsiniz. Yani ‘D_CDS’ tablosunun detaylarını görmek için tıklamanız yeterlidir: 8 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Tablo Oluşturma Veritabanı Şeması Nesneleri Bu örnekte ‘Nesne Gözatma’ kullanılarak ‘D_CDS’ tablosunun detaylarını, veri, indeks, kısıtlama, yetki ve diğer tablo detaylarını görebilirsiniz. SQL Komut penceresi kullanarak tablo açıklamasını sorabilirsiniz. 9 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Tablo Oluşturma Adlandırma Kısıtları İlişkisel veritabanında tüm veriler tablolarda tutulur. Yeni bir tablo oluşturulurken tablo ve sütun adlandırması için şu kuralları kullanın: • Harf ile başlamalı • Karakter uzunluğu 1-30 arasında olmalı • Sadece A-Z, a-z, 0-9, _(altçizgi), $ ve # içermeli • Aynı kullanıcın sahip olduğu başka bir nesne adı ile tekrarlanmamalı • Oracle sunucusu ayrılmış kelimesi olmamalı 10 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Tablo Oluşturma Adlandırma Kısıtları Tablolar ve diğer veritabanı nesneleri için açıklayıcı isimler en iyisidir. Tablo öğrenciler hakkında bilgi tutuyorsa ‘OGRENCILER’ olarak isimlendirilmeli, ‘INSANLAR’ ya da ‘COCUKLAR’ olarak değil. İsimler büyük küçük harfe duyarlı değildir. Örneğin ‘OGRENCILER’, ‘OGrEnciler’ ve ‘ogrenciler’ aynıdır. Tabloyu oluşturma SQL veri tanımlama dilinin (DDL) bir parçasıdır. Diğer DDL komutları (ALTER, DROP, RENAME ve TRUNCATE) tablodaki veri yapısını oluşturmak, değiştirmek ve kaldırmak için kullanılır. 11 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Tablo Oluşturma Tablo Oluşturma Yeni bir tablo oluşturmak için, ‘CREATE TABLE’ yetkiniz ve bunun için bellekte yeriniz olmalı. Veritabanı yöneticisi veri kontrol dili (DCL) komutları kullanarak bu yetkiyi kullanıcılara verir ve bellek alanı atar. Başka kullanıcılara ait tablolar sizin şemanızda değildir. Sizin şemanızda olmayan bir tabloya erişmek için tablo sahibinin adını tablo ön eki olarak kullanmanız gerekir: Bir tablodan seçim yapmak için yetkinizin verilmiş olması gerekir. 12 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Tablo Oluşturma Tablo Oluşturma Sözdizimi Yeni bir tablo oluşturmak için aşağıdaki sözdizimi kullanılır: • tablo: tablo adı • sütun: sütun adı • veritipi: sütun veri tip ve uzunluğu • VARSAYILAN ifade: INSERT ifadesinde bir değer belirtilmemişse varsayılan bir değer belirtir. CREATE TABLE tablo (sütun veritipi [VARSAYILAN ifade], (sütun veritipi [VARSAYILAN ifade], (……[ ] ); 13 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Tablo Oluşturma Tablo Oluşturma Sözdizimi Aşağıdaki örnekte CREATE TABLE komutu gösterilmektedir: 14 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Tablo Oluşturma Alt Sorgu Kullanarak Tablo Oluşturma Tablo oluşturmak için ikinci yöntem alt sorgu deyimi uygulamaktır. Bu sayede hem tablo oluşturulacak hem de alt sorgudan dönen değerler eklenecektir. SQL komutlarında uygulama yapmak için tablo kopyası almak kolay bir yoldur. Dikkat edin, alt sorguda bu sütunlar için takma adlar oluşturmaya ihtiyaç duyarsınız. Alt sorgudan yeni tabloya sadece veri tipleri tanımlamaları ve ‘NOT NULL’ kısıtlaması taşınır. Bunun nedeni yeni tablo farklı bir yapıda kullanılabilir var olan PK-FK ilişkisi aynı olmayabilir. 15 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Tablo Oluşturma Alt Sorgu Kullanarak Tablo Oluşturma Sözdizimi: CREATE TABLE tabloadı [(sütun, sütun, …)] AS altsorgu; Not: Sütun listesi sütun adları alt sorgudaki sütun adlarından farklı olmadığı sürece seçimliktir. 16 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Tablo Oluşturma Alt Sorgu Kullanarak Tablo Oluşturma 17 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Tablo Oluşturma Alt Sorgu Kullanarak Tablo Oluşturma Alt sorgu kullanarak tablo kopyalarken şu kurallar önemlidir: • Sütun takma adları kullanılmadığı sürece yeni tablodaki sütun adları orijinal tablodakiler ile aynıdır. • Yeni tablodaki sütun veri tipleri orijinal tablodakiler ile aynıdır. • Sadece NOT NULL kısıtlaması kopyalanır, diğer kısıtlama tipleri yeni tabloda bulunmaz. 18 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Tablo Oluşturma Harici Tablolar Oracle harici tablo tipini destekler. Harici tabloda veri satırları veritabanı dosyası içinde değil veritabanın haricinde tutulan düz dosyada bulunur. 19 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Tablo Oluşturma Harici Tablolar Harici tablo, bir şirket tarafından kullanılan geçmiş verileri depolamak için veritabanlarının eski sürümlerini tutmak için kullanılır. İşletim sistemi seviyesinde bir kez yedeklenir 20 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Tablo Oluşturma Harici Tablolar Bir şirketin yeni bir uygulama ve veritabanı uygulaması olduğunda, eski sistemlerden verilerin çoğunu okuma yazma erişimi için alması gerekir. Ancak bazı veriler yaygın kullanıma sahip değildir. Bu nedenle, sadece okuma erişimi için erişilebilen veriler olabilir. Bu veriler harici tabloda tutulanlar olabilir. Oracle açısından bir çok fayda sağlayabilir. Bu veriler bir kez yedeklenir, daha sonra değişmediği için gerek olmaz. 21 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. İşletim sistemi seviyesinde bir kez yedeklenir Tablo Oluşturma Harici Tablolar Harici tablo oluşturmak için sözdizimi normal tablo oluşturmaya sonundaki ekstra sözdizimi dışında çok benzerdir. Tablo oluşturmak için standart SQL komutlarında kullanılmayan yeni sözdizimini not alın. ORGANIZATION EXTERNAL – Oracle’a harici tablo oluşturmasını iletir. TYPE ORACLE_LOADER – Oracle yükleyici tipi (Oracle ürünü) DEFAULT DIRECTORY def_dir1 – dosya için klasör adı 22 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Tablo Oluşturma Harici Tablolar ACCESS PARAMETERS – dosyanın nasıl okunacağı RECORDS DELIMITED BY NEWLINE – yeni satırın başladığının nasıl belirleneceği FIELDS – alan adı ve veri tipi özellikleri LOCATION – veriyi içeren gerçek dosyanın adı 23 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Tablo Oluşturma Harici Tablolar 24 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Tablo Oluşturma Veri Sözlüğü Oracle veritabanında iki farklı tablo mevcuttur: Kullanıcı Tabloları ve Veri Sözlüğü tablosu. Bu tablolara erişmek için select, insert, update ve delete gibi SQL sorguları oluşturabilirsiniz. Ayrıca Veri Sözlüğü tablolarındaki verileri seçebilirsiniz. 25 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Tablo Oluşturma Veri Sözlüğü 1. Verinizi içeren kullanıcı tabloları D_CDS, D_SONGS, D_EVENTS, vs. 2. Veri sözlüğü tabloları DICTIONARY, USER_OBJECTS, USER_TABLES, USER_SEGMENTS, USER_INDEXES, vs. 26 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Tablo Oluşturma Veri Sözlüğü Veri Sözlüğü tablolarının sahibi Oracle kullanıcısı olan ve SYS diye adlandırılan kullanıcıdır ve bu tablolarla çalışırken sadece SELECT komutu kullanılabilir. Bu tabloları kullanıcı erişimi kazalarından korumak için veritabanı kullanıcıları tarafından erişilebilen oluşturulmuş bir görünüm olan Veri Sözlüğü kullanılır. 27 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Tablo Oluşturma Veri Sözlüğü Herhangi bir Oracle kullanıcısının Veri Sözlüüğü tabloları üzerinde ekleme, güncelleme ya da silme işlemine karşı işlemler tüm veritbanı bütünlüğü için engellenmiştir. 28 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Tablo Oluşturma Veri Sözlüğü SQL Komut arayüzündeki Veri Sözlüğü görünümü kullanıldığında çalışacağınız sözlük görünümleri isimlerini bilmelisiniz. Oracle’da bu basittir: nesne tipi olan xxx ifadesini sona ekleyerek USER_xxx ve ALL_xxx olarak tanımlarsınız. İndeksleri incelemek isterseniz basit şekilde select from USER_INDEXES, sıralamalar hakkında bilgi isterseniz tablo adı USER_SEQUENCES olur. Hatırlanması gereken iki önemli görünüm: DICTIONARY (DICT) ve DICT_COLUMNS’tur. 29 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur.