Veritabanı Tasarımı 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
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
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
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
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
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
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
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
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
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
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
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
Tablo Oluşturma Sözdizimi Aşağıdaki örnekte CREATE TABLE komutu gösterilmektedir: 14
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
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
Alt Sorgu Kullanarak Tablo Oluşturma 17
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
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
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
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. İşletim sistemi seviyesinde bir kez yedeklenir 21
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
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
Harici Tablolar 24
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
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
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
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
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