• Tidak ada hasil yang ditemukan

1 TEKNOLOGI OBJECT-RELATIONAL DBMS pada ORACLE 10g

N/A
N/A
Protected

Academic year: 2021

Membagikan "1 TEKNOLOGI OBJECT-RELATIONAL DBMS pada ORACLE 10g"

Copied!
16
0
0

Teks penuh

(1)

1 TEKNOLOGI OBJECT-RELATIONAL DBMS

pada ORACLE 10g

2

1. Object Types dan User-Defined Types

Object type adalah tipe data yang dapat dibuat sendiri oleh pengguna, hal ini dikenal sebagai user-defined types yang lebih memungkinkan user untuk memodelkan entitas dunia nyata yang komplek (complex real-world).

Metadata untuk user-defined types disimpan di dalam suatu skema yang memungkinkan SQL, PL/SQL, Java dan interface yang lain menampilkannya. Tipe data objek memudahkan untuk bekerja dengan menggunakan data komplek(complex data), seperti : images, video, dan audio.

Pada Oracle, perintah “create type” digunakan untuk membuat suatu tipe data baru (object type) yang nantinya dapat digunakan secara umum pada saat :

 membuat sebuat tabel (menggunakan perintah “create table” )  membuat tipe data lain

Perintah untuk membuat suatu object type :

CREATE [OR REPLACE] TYPE <object schema> AS OBJECT

(attribute attribute type, ...., attribute attribute type)

/

Contoh 1 :

CREATE OR REPLACE TYPE Person_T AS OBJECT

(person_id VARCHAR2(10), person_name VARCHAR2(30)) /

CREATE TABLE Course (course_id VARCHAR2(10), course_name VARCHAR2(20), lecturer Person_T);

Keterangan :

 “As object” harus selalu digunakan setelah statement create/replace sebuah object type.  “or replace” bersifat optional. Dengan menggunakan perintah “or replace” maka suatu

object dengan nama yang sama akan otomatis di-update (diganti) dengan versi yang baru dari object type tsb.

Tujuan Instruksional : Mahasiswa mampu memahami konsep Object-Relational Database yang diimplementasikan menggunakan ORDBMS Oracle 10g.

(2)

 Contoh di atas menunjukkan penggunaan object type Person_T sebagai jenis attribut dalam tabel Course.

Contoh 2 :

Berikut ini pembuatan object type bernama Mahasiswa_objtyp :

Object type

CREATE OR REPLACE TYPE Mahasiswa_objtyp AS OBJECT ( NIM NUMBER,

Nama VARCHAR2(100), Email VARCHAR2(25), Telp VARCHAR2(20)); /

Berikut ini merupakan contoh pembuatan tabel Alumni_objtab dengan sebuah kolom object type. Tabel objek

CREATE TABLE Alumni_objtab (

Mhs_USD Mahasiswa_objtyp, Tgl_lulus DATE );

Sintak di bawah ini menyisipkan satu baris data ke dalam tabel Alumni_objtab : INSERT INTO Alumni_objtab VALUES

( Mahasiswa_objtyp (5314001, 'Elva Evelina', 'elva@yahoo.com', '0815-1234-5678'),

'10 Nov 2008' );

Tabel Alumni_objtab merupakan tabel relational dengan sebuah object type sebagai tipe data dari kolom-kolomnya. Objek yang menempati kolom dari tabel relational disebut dengan objek kolom (column object). Gambar berikut mengilustrasikan tabel Alumni_objtab, yang pada salah satu kolomnya berupa objek kolom :

Objek kolom

Kolom Mhs_USD bertipe objek Mahasiswa_objtyp Kolom Tgl_lulus

bertipe DATE

NIM Nama Email Telp Tgl_lulus

(3)

Latihan :

1. Buatlah Object Type seperti tampak di bawah ini :

2. Buatlah tabel CONTACTS yang terdiri dari field :  Contact bertipe person_typ

 Contact_date bertipe date

3. Isilah Tabel CONTACTS tsb dengan data-data (object instances) yang terdiri dari 2 object instances yaitu Verna Mills dan John Smith.

Masukkan juga data :

 Pada Verna Mills : contact date tanggal 24 Juni 2003  Pada Johns Smith : contact date tanggal 12 Mei 2008

(4)

Perintah umum (general syntax) untuk mendefinisikan suatu object type : CREATE [OR REPLACE] TYPE NamaTipe

[AUTHID {CURRENT_USER | DEFINER}]

{ {IS | AS} OBJECT | UNDER NamaSupertype } (

NamaAtribut TipeData[, NamaAtribut TipeData]... [{MAP | ORDER} MEMBER SpesifikasiFungsi,]

[{FINAL| NOT FINAL} MEMBER SpesifikasiFungsi,]

[{INSTANTIABLE| NOT INSTANTIABLE} MEMBER SpesifikasiFungsi,] [{MEMBER | STATIC} { SpesifikasiSubProgram |

SpesifikasiPemanggilan}

[, {MEMBER | STATIC} { SpesifikasiSubProgram | SpesifikasiPemanggilan}]...]

) [{FINAL| NOT FINAL}] [ {INSTANTIABLE| NOT INSTANTIABLE}]; Keterangan :

- CREATE TYPE :Perintah yang digunakan untuk mendefinisikan object type.

- OR REPLACE TYPE: Perintah yang digunakan untuk melengkapi suatu tipe objek yang belum lengkap(incomplete) atau untuk meng-update tipe objek yang sudah lengkap (complete). - AUTHID CURRENT USER | DEFINER :menspesifikasikan bahwa object type didefinisikan

menggunakan invoker – right : method dieksekusi dibawah hak dari user saat itu(CURRENT USER) atau berdasar hak dari user yang mendefinisikan tipe tersebut(DEFINER).

- UNDER : Pernyataan yang menjelaskan bahwa tipe tersebut diturunkan/mewarisi dari suatu tipe tertentu.

- MEMBER : Pernyataan sifat method yang dapat mengakses ke data object insantace-nya. - STATIC : menyatakan bahwa methods tidak mempunyai parameter SELF dan dipanggil pada

object type-nya bukan pada object instances-nya.

- MAP : Pernyataan yang digunakan untuk membandingkan objek dengan memetakan object instances ke salah satu dari tipe scalar(date, number, varchar2, character atau real).

(5)

- ORDER : Pernyataan yang digunakan method untuk membuat suatu perbandingan secara langsung object-to-object.

- FINAL : Pernyataan yang menjelaskan bahwa object type/method tidak dapat mendefinisikan suatu subtype dari object type/method tersebut.

- NOT FINAL : Pernyataan yang menjelaskan bahwa object type/method dapat mendefinisikan suatu subtype dari object type/method tersebut.

- INSTANTIABLE : Pernyataan yang menyatakan bahwa tidak dapat menginisialisasikan instance dari object type.

- NOT INSTANTIABLE : Pernyataan yang menyatakan bahwa tidak dapat menginisialisasikan instance dari object type.

(6)

2. Methods Object

Sebuah object type (sudah dibahas pada bab 1 di atas) teridiri dari dari 2 bagian, yaitu : 1. attributes

2. methods

seperti tampak pada gambar di bawah ini :

Methods adalah fungsi atau prosedur yang dideklarasikan di dalam object type untuk mengimplementasikan behavior dari suatu objek. Pada prisnispnya method digunakan untuk mengakses data (instance object ) dari objek yang bersangkutan. Method bersifat optional dalam object type, artinya suatu object type boleh tidak memiliki method.

Perintah untuk membuat pendefinisian suatu method :

CREATE [OR REPLACE] TYPE BODY NamaTipe {IS | AS} { {MAP | ORDER} MEMBER BadanFungsi;

| {MEMBER | STATIC} {BadanSubProgram | SpesifikasiPemanggilan};} [{MEMBER | STATIC} { BadanSubProgram | SpesifikasiPemanggilan };]... END;]

Contoh I:

1. Membuat object type dengan nama Mhs_objtyp yang selain memiliki attribut juga memiliki deklarasi method untuk menampilkan NIM.

CREATE OR REPLACE TYPE Mhs_objtyp AS OBJECT ( NIM NUMBER,

Nama VARCHAR2(100), Email VARCHAR2(25), Telp VARCHAR2(20),

(7)

MAP MEMBER FUNCTION get_NIM RETURN NUMBER); /

2. Membuat isi method milik object type Mhs_objtyp. Gunakan perintah CREATE OR REPLACE TYPE BODY sbb:

CREATE OR REPLACE TYPE BODY Mhs_objtyp AS

MAP MEMBER FUNCTION get_NIM RETURN NUMBER IS

BEGIN

RETURN NIM; definisi method

END; END; /

3. Membuat tabel dengan nama alumni_tiusd dimana attribut Mhs_USD bertipe Mhs_objtyp.

CREATE TABLE alumni_tiusd( Mhs_USDMhs_objtyp, Tgl_lulus date);

4. Menyisipkan data alumni pada tabel alumni_tiusd : INSERT INTO alumni_tiusd VALUES

(Mhs_objtyp(5314003, 'Maria', 'maria@yahoo.com', '0856-123456'), '11 Nov 2006');

INSERT INTO alumni_tiusd VALUES

(Mhs_objtyp(5314004, 'Anita', 'anita@yahoo.com', '0856-777777'), '11 Nov 2006');

5. Perintah SQL untuk memanggil method get_NIM() yang berfungsi menampilkan NIM dari tabel alumni_tiusd :

SELECT a.Mhs_USD.get_NIM() FROM alumni_tiusd a;

Keterangan :

 a adalah nama alias dari tabel alumni_tiusd, nama alias

(8)

Pemanggilan method (invoke a method) menggunakan dot

notation object_variable.method() misalnya :

Mhs_USD.get_NIM() dimana Mhs_USD adalah attribut dari tabel alumni_tiusd dan get_NIM adalah nama method pada object type Mhs_objtyp.

Hasil running :

Contoh II :

1. Membuat object type Person2_Typ yang memiliki 2 method yaitu get_idno dan method untuk menampilkan data (instance object).

(9)

3. Buat tabel CONTACTS2 dimana attribut CONTACT bertipe person2_typ :

(10)

5. Perintah SQL untuk menampilkan first_name, last_name, email, dan phone untuk objcet instance yang memiliki first_name Kevin adalah sbb:

(11)

Latihan 2 :

1. Buatlah Object Type seperti tampak di bawah ini :

2. Memanggil (invoke) method untuk menampilkan id_no. 3. Memanggil (invoke) method untuk menampilkan detail.

(12)

3. Inheritance

Suatu object type dapat mewariskan baik attribut maupun method pada sub type di bawahnya. Untuk menerapkan inheritance, suatu obejct type harus didefinisikan ‘NOT FINAL’ pada akhir deklarasi. Keyword ‘UNDER’ yang digunakan bersama statement ‘CREATE TYPE’ berfungsi untuk membuat sub type dari super type di atasnya.

General Syntax yang digunakan untuk inheritance adalah sbb :

CREATE [OR REPLACE] TYPE <super­type object schema> AS OBJECT

(key attribute attribute type, attribute attribute type,...,

attribute attribute type) [FINAL|NOT FINAL]

/

CREATE [OR REPLACE] TYPE <sub­type object schema> UNDER <super­

type object schema> (additional attribute attribute type, ...., additional attribute attribute type) [FINAL|NOT FINAL] /

CREATE TABLE <super­type table schema> OF

<super­type object schema>

(key attribute NOT NULL,

PRIMARY KEY (key attribute));

Contoh : Buatlah object type Person_t dengan sub type seperti tampak pada

(13)

Langkah-langkah :

1) Membuat object type dengan nama Person4_typ yang bersifat NOT FINAL agar object ini dapat memiliki sub type (dapat diwariskan) :

CREATE TYPE person4_typ AS OBJECT ( idno NUMBER,

name VARCHAR2(30), phone VARCHAR2(20),

MAP MEMBER FUNCTION get_idno RETURN NUMBER, MEMBER FUNCTION show RETURN VARCHAR2) NOT FINAL;

/

2) Membuat isi method milik object type Person4_typ. Gunakan perintah CREATE OR REPLACE TYPE BODY sbb:

CREATE OR REPLACE TYPE BODY person4_typ AS

MAP MEMBER FUNCTION get_idno RETURN NUMBER IS BEGIN

RETURN idno; END;

-- function that can be overriden by subtypes

MEMBER FUNCTION show RETURN VARCHAR2 IS BEGIN

RETURN 'Id: ' || TO_CHAR(idno) || ', Name: ' || name; END;

END; /

3) Membuat sub type dengan nama student_typ yang merupakan child (anak) dari object type person4_typ :

CREATE TYPE student_typ UNDER person4_typ ( dept_id NUMBER,

major VARCHAR2(30),

OVERRIDING MEMBER FUNCTION show RETURN VARCHAR2) NOT FINAL;

/

(14)

CREATE TYPE BODY student_typ AS

OVERRIDING MEMBER FUNCTION show RETURN VARCHAR2 IS BEGIN

RETURN (self AS person4_typ).show || ' -- Major: ' || major ; END;

END; /

5) Membuat sub type dengan nama employee_typ yang merupakan child (anak) dari object type person4_typ :

CREATE TYPE employee_typ UNDER person4_typ ( emp_id NUMBER,

mgr VARCHAR2(30),

OVERRIDING MEMBER FUNCTION show RETURN VARCHAR2); /

6) Membuat method milik sub type employee_typ :

CREATE OR REPLACE TYPE BODY employee_typ AS

OVERRIDING MEMBER FUNCTION show RETURN VARCHAR2 IS BEGIN

RETURN ( (SELF AS person4_typ).show|| ' -- Employee Id: ' || TO_CHAR(emp_id) || ', Manager: ' || mgr );

END; END; /

7) Membuat sub type dengan nama part_time_student_typ yang merupakan child (anak) dari sub type student_typ :

CREATE TYPE part_time_student_typ UNDER student_typ ( number_hours NUMBER,

OVERRIDING MEMBER FUNCTION show RETURN VARCHAR2); /

(15)

CREATE TYPE BODY part_time_student_typ AS

OVERRIDING MEMBER FUNCTION show RETURN VARCHAR2 IS BEGIN

RETURN ( (SELF AS person4_typ).show|| ' -- Major: ' || major || ', Hours: ' || TO_CHAR(number_hours));

END; END; /

9) Membuat table dengan nama person4_obj_table yang bertipe object person4_typ : CREATE TABLE person4_obj_table OF person4_typ;

10) Menyisipkan data Bob Jones ke dalam object type person4_typ pada tabel person4_obj_table :

INSERT INTO person4_obj_table

VALUES (person4_typ(12, 'Bob Jones', '111-555-1212'));

11) Menyisipkan data Joe Lane ke dalam sub type student_typ pada tabel person4_obj_table :

INSERT INTO person4_obj_table

VALUES (student_typ(51, 'Joe Lane', '1-800-555-1312', 12, 'HISTORY'));

12) Menyisipkan data Jane Smith ke dalam sub type employee_typ pada tabel person4_obj_table :

INSERT INTO person4_obj_table

VALUES (employee_typ(55, 'Jane Smith', '1-800-555-7765', 100, 'Jennifer Nelson'));

13) Menyisipkan data Kim Patel ke dalam sub type part_time_student_typ pada tabel person4_obj_table :

INSERT INTO person4_obj_table

VALUES (part_time_student_typ(52, 'Kim Patel', '1-800-555-1232', 14, 'PHYSICS', 20));

(16)

SELECT p.show()

FROM person4_obj_table p;

Referensi

Dokumen terkait

Dalam kehidupan di dunia, setiap makhluk hidup ingin menjadi satu dengan yang lainnya, yang pada dasarnya itu bisa di praktekkan melalui interaksi dan komunikasi satu

a. Studi Literatur; langkah awal dari proses suatu perancangan adalah studi literatur, hal ini berguna sebagai landasan teori penelitian, baik itu dalam proses

Menurut penelitian yang di lakukan oleh (Rahayu &amp; Nurhayati, 2016) yang berjudul Faktor Yang Mempengaruhi Tingkat Stres Orang Tua pada berat Badan Lahir Rendah

ability (KSA) terhadap penggunaan Sistem Informasi Sumberdaya Manusia serta kinerja karyawan pada PT PLN (Persero) Distribusi Jatim APJ Malang, sehingga peneliti

sudah memiliki visa), atau yang ditolak oleh perusahaan penerbangan, atau dalam perjalanan menderita sakit, atau ada kelainan jiwa, atau dalam perjalanan mengalami kecelakaan,

Pada kegiatan mengkaji materi modul kelompok kompetensi I (pedagogik), fasilitator memberi kesempatan kepada guru sebagai peserta untuk mempelajari materi yang diuraikan

Dan untuk hasil perhitungan angket implementasi display kelas di sekolah dasar masuk dalam kategori cukup dengan nilai rata-rata sebesar 0,61. Kata Kunci : Guru,

hal yang mendukung lingkungan pembelajaran di Universitas Tanjung Pura, antara lain: penggunaan strategi pembelajaran PBL, dosen yang berpenga- laman sebagai