Jumat, 09 Januari 2009

SCHEMA PADA ORACLE

Database terdiri dari objek-objek yang disimpan dalam schema dan objek-objek yang tidak
dikelola dalam schema. "Schema dimiliki oleh user database dan nama schema itu sama dengan
nama usernya".

Schema merupakan tempat penyimpanan objek-objek seperti sequence, table, index, database link, view objek lainnya.

Schema adalah struktur logika penyimpanan data dalam suatu table space. "Nama objek pada suatu schema harus unik sehingga tidak boleh terdapat dua table dengan nama sama dalam satu schame".

Schema dihasilkan melalui perintah create user dan objek suatu schema dihasilkan dengan perintah misalnya "create table" atau "create view".

Perintah "create schema" menyediakan cara pembuatan objek dalam suatu schema dimana sejumlah table, view dilakukan sekaligus dalam suatu transaksi.

Berikut contoh membuat objek table dalam schema :

1. membuat Tablespace

SQL> CREATE TABLE SPACE DAFTAR
2 datafile 'C:\oracle\oradata\daftar\produksi.ora'
3 Size 10M ;

2. Membuat dan memberi hak user

SQL> CREATE USER abi
2 IDENTIFIED BY adipass
3 DEFAULT TABLESPACE daftar
4 QUOTA 20M ON daftar;


SQL> GRANT CREATE SESSION, CREATE TABLE TO abi;
SQL> CONN abi/abipass;

3. Membuat table dalam schema

SQL> CREATE SCHEMA AUTHORIZATION abi
2 CREATE TABLE barang(
3 kode_brg CHAR(5), nama_brg CHAR(25),
4 CONSTRAINT pk_kode_brg PRIMARY KEY(kode_brg))
5 TABLESPACE daftar ;

Objek View

View merupakan salah satu objek yang terdapat di dalam schema. View sama dengan table, pada view dapat dilakukan proses insert, update, dan delete. Sumber data view dapat berasal dari table, akan tetapi tidak dapat menyimpan data, view hanya menyimpan definisi query dan tidak memerlukan ruang penyimpan data.

View didefinisikan melalui query pada table denagn perintah "CREATE VIEW" dan dapat dihapus dengan perintah "DROP VIEW".

Sintaks membuat view : CREATE VIEW AS [WITH READ ONLY]

Keterangan dari sintaks : pernyataan [WITH READ ONLY] digunakan untuk menyatakan bahwa view
tidak dapat di insert, update, dan delete (sifatnya hanya dapat
dibaca saja).

Berikut contoh membuat objek view dalam schema :

1. Membuat user baru dengan nama abu

SQL> CREATE USER abu
2 IDENTIFIED By abupass
3 DEFAULT TABLESPACE DAFTAR
4 QUOTA 15M ON daftar ;

2. Memberi hak user

SQL> GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW TO abu;

3. Aktifkan koneksi user

SLQ> CONN abu/pass ;

4. MEMBUAT VIEW DALAM SCHEMA :

SQL> CREATE SCHEMA AUTHORIZATION abu
2 CREATE TABLE Departemen(
3 no_dept CHAR(3) NOT NULL PRIMARY KEY,
4 nama_dept CHAR(25) NOT NULL)
5 CREATE TABLE Karyawan(
6 nik CHAR(3) NOT NULL, no_dept CHAR(3) NOT NULL,
7 nama_kyw CHAR(30), PRIMARY KEY(nik),
8 FOREIGN KEY(no_dept) REFERENCES departemen(no_dept))
9 CREATE VIEW dept_karyawan_rw --- view yang dapat di insert,update dan delete
10 AS SELECT a.nik, no_dept, a.nama_kyw as "Nama Karyawan",
11 b.nama_dept AS "Departemen"
12 FROM Karyawan a, Departemen b
13 WHERE a.no_dept = b.no_dept
14 C CREATE VIEW dept_karyawan_ro --- view yang hanya dapat dibaca
15 AS SELECT a.nik, no_dept, a.nama_kyw as "Nama Karyawan",
16 b.nama_dept AS "Departemen"
17 FROM Karyawan a, Departemen b
18 WHERE a.no_dept = b.no_dept
19 WITH READ ONLY ;


5. Isikan data record ke dalam table Departemen dan Karyawan

SQL> INSERT INTO Departemen VALUES(100, 'SDM');
SQL> INSERT INTO Departemen VALUES(200, 'Produksi');
SQL> INSERT INTO Departemen VALUES(100, 'PEMASARAN');

SQL> INSERT INTO Karyawan VALUES(111,100, 'Sabila');
SQL> INSERT INTO Departemen VALUES(222,100, 'Aufar');
SQL> INSERT INTO Departemen VALUES(333,200, 'Jadid');
SQL> INSERT INTO Departemen VALUES(444,300, 'RINA');

Contoh manipulasi insert yang tidak dapat dilakukan pada "view dep_karyawan_ro" :

1. Melihat isi data dari view dept_karyawan_ro :

SQL> SELECT nik, "Nama Karyawan","Departemen" FROM dept_karyawan_ro ;

Hasil Keluaran :

NIK Nama Karaywan Departemen
------------------------------------------
111 Sabila SDM
222 Aufar SDM
333 Jadid Produksi
444 Rina Pemasaran

2. Tambahkan satu data record ke dalam view dept_karyawan_ro :

SQL> INSERT INTO dept_karyawan_ro(nik,no_dept,"Nama Karyawan")
2 VALUES(555,200,'Reza') ;

akan tampil pesan kesalahan :

ERROR at line 1:
ORA-01733 : virtual column not allowed here

3 komentar:

  1. trims infonya...visit back giriayoga.blogspot.com

    BalasHapus
  2. thanks infonya kalau table space,materialized view, trigger, dan stored procedured apa ya...

    BalasHapus

Komentar Ya......