Tablo Oluşturma

advertisement
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.
Download