• Tidak ada hasil yang ditemukan

2.2. Basis Data Relational Objek

2.2.3. Fitur-fitur yang ada di ORDBMS

a. Object Types and User-Defined Types

Dalam Oracle ™, sebuah pernyataan "create type"

digunakan untuk membuat tipe data baru (tipe objek) yang

kemudian dapat digunakan sebagai generic type untuk membuat

tabel menggunakan pernyataan "create table" atau untuk membuat tipe data lain.

Contoh Oracle™ object type :

Gambar 2. 2 Contoh object type

"as object" digunakan setelah membuat tipe objek. Perhatikan bahwa "or replace" adalah opsional. Dengan memiliki frase tambahan, sebuah objek dengan nama yang sama secara otomatis akan diganti dengan versi terbaru dari jenis objek.

b. Collection Types

Oracle ™ memungkinkan penciptaan sebuah tipe array

(varray atau bervariasi array). Sintaks tersebut dasarnya

tambahan pernyataan "as array (n) of” diikuti oleh obyek atau tipe data.

Contoh tipe varrying array :

Gambar 2. 3Contoh tipe varray

Dari sintaks tersebut memungkinkan untuk memiliki lebih dari satu dosen untuk mata kuliah tertentu, oleh karena itu array baru dari Person dapat didefinisikan:

1. Untuk membuat tabel objek, kita menggunakan “create type

dengan pernyataan tambahan "as table of”.

2. Tabel objek ini kemudian dapat digunakan sebagai kolom

dalam sebuah tabel. Ketika tipe tabel muncul sebagai jenis kolom dalam tabel atau sebagai atribut yang mendasari jenis objek.

3. Tipe data yang disebut Person_Table_T dapat dibuat

berdasarkan tipe data Person_T untuk menyimpan contoh dari person.

Penggunaan varray untuk mnyimpan collection type di Oracle tidak

update, lebih menggunakan Nested table (tabel bersarang). Contoh

Oracle™ nested table:

Gambar 2. 4Contoh nested table

c. Object Identifiers

Dalam sistem berorientasi obyek, OID adalah sistem yang dihasilkan dan digunakan sebagai referensi untuk menemukan

objek tertentu. Dalam Oracle ™, gagasan OID sebagai pointer

logis tidak didukung, namun konsep OID untuk secara unik mengidentifikasi record (sebagai primary key) dapat digunakan.

Hal ini sangat berguna dalam hirarki inheritance, di mana semua subclass harus membawa OID superclass dalam rangka membangun hubungan antara superclass dan subclass.

Gambar 2. 5 Contoh implementasi OID

Syntax tersebut mengilustrasikan implementasi

menggunakan OID untuk menjaga inheritance (pewarisan) antara

superclass dan subclass.

Perhatikan bahwa kita dapat membuat tabel dari obyek dan menentukan primary key dan foreign key dalam tabel ini. Setiap

kali kita menentukan foreign key, kita harus menggunakan

"reference" pernyataan diikuti oleh tabel dan kolom yang sedang dimaksud.

Gambar 2. 6 Contoh relasi menggunakan Object References

Syntax tersebut menunjukkan bahwa tabel yang dibuat berasal dari tipe objek. Dengan demikian, kita tidak harus menentukan tipe atribut lagi. Catatan, kita dapat menambahkan constraint "not null" pernyataan untuk menghindari nilai "null" dari atribut. Hal ini diperlukan untuk atribut tertentu.

d. Relationshipsusing Ref

Untuk referensi dari satu objek ke yang lain dengan menggunakan kata kunci ref. Teknik objek-referensi ini dapat digunakan untuk menggantikan operasi standar "join" untuk melintasi dari satu objek ke yang lain. Kita kemudian dapat menjalankan query:

SELECT C.course_name FROM Course C

WHERE C.lecturer.person_name = 'Rahayu';

Pernyataan "SCOPE IS" digunakan untuk menentukan tabel yang tepat yang direferensikan oleh objek. Setiap kali parameterscope digunakan, mesin database akan melakukan

operasi join, yang dapat dioptimalkan dengan menggunakan indeks. jika parameter scope dihilangkan dan lebih dari satu tabel telah dibuat menggunakan jenis objek yang diberikan, mesin database akan menavigasi melalui seperangkat nilai-nilai referensi obyek untuk mengidentifikasi lokasi dari catatan yang diminta kita tidak akan menggunakan parameter "SCOPE IS" dalam pernyataan table creation. Dalam kebanyakan situasi, kita tidak akan membangun lebih dari satu tabel untuk masing-masing jenis objek yang kita nyatakan, sehingga menghindari situasi di mana Mesin Database harus menavigasi melalui sejumlah referensi objek. Ketika hanya satu tabel yang dibuat untuk jenis objek, operator ref langsung akan menunjuk untuk referensi terkait.

Metode pelaksanaan lain hubungan asosiasi di Oracle ™

menggunakan referensi objek menggunakan REF. Daripada menghubungkan dua tabel melalui nilai-nilai yang terkait kunci primer dan kunci asing, metode ini memungkinkan seseorang untuk secara langsung menghubungkan dua tabel melalui atribut referensi. Dengan demikian, atribut terkait yang menghubungkan dua tabel tidak memegang nilai kunci primer dari tabel lain yang terhubung, tapi referensi dari mana tabel terhubung sebenarnya disimpan.

Gambar 2. 7 Implementasi many to many menggunakan object refrences.

Gambar 2. 8 Implementasi one to many menggunakan object refrences

Gambar 2. 9 Implementasi one to one menggunakan object refrences

Teknik clustering dapat sangat berguna untuk agregasi hubungan. Sebuah cluster dibuat dan akan didefinisikan dalam hal semua komponen yang mengambil bagian dalam hubungan agregasi.

f. Inheritance Relationships using Under

Oracle ™ 9 ke atas memiliki fitur baru yang

mengakomodasi implementasi inheritance-relationship. Kita tidak

harus menggunakan hubungan primery-foreign-key untuk

mensimulasikan hubungan antara superclass dan subclass. Untuk

melaksanakan subtipe, kita perlu mendefinisikan objek sebagai

"not final" di akhir deklarasi jenisnya. Secara default, tanpa kata kunci, jenis objek akan diperlakukan sebagai final dan tidak ada subtype dapat diturunkan dari tipe. Oracle ™ menyediakan kata kunci under untuk digunakan dengan pernyataan "create type" untuk menciptakan subtype dari supertype

Jenis-jenis inheritance (pewarisan):

Union Inheritance

Menyatakan bahwa kesatuan dari kelompok subclass merupakan

seluruh anggota dari superclassnya. Dalam union inheritance, setiap objek dari superclass adalah setidaknya obyek dari satu subclass, dan dapat juga anggota dari suatu subclass adalah anggota dari subclass lain. Dalam union inheritance kita butuh

membuat satu tabel untuk masing-masing superclass dan subclass. Sebagai contoh seorang person dapat merupakan staff dan juga merupakan mahasiswa. Dengan menggunakan kata

kunci “under” biasanya tidak perlu lagi membuat tabel terpisah

untuk subclass karena tabel untuk superclass dapat menyimpan

data subclass. Tetapi karena dalam union inheritance, perlu untuk memungkinkan orang tertentu adalah mahasiswa dan staff, jika kita memasukkan keduanya ke dalam satu tabel superclass maka akan melanggar aturan primary key yaitu dua data dengan ID yang sama. Oleh karena itu, kita perlu membuat

tabel terpisah untuk masing-masing subclass.

Gambar 2. 10 Implementasi union inheritance menggunakan

"under"

Mutual-Exclusion Inheritance

Menyatakan bahwa sekelompok subclass dalam hubungan

seorang pegawai, tidak ada manager yang juga seorang pekerja.

Cara menangani tipe pewarisan ini adalah dengan

menambahkan atribut pada tabel superclass yang berisi jenis subclass atau memiliki nilai null, yaitu atribut tipePegawai yang berisi nilai manager atau pekerja atau null. Tidak ada data superclass yang dapat memiliki dua objek subtye disini. Kita hanya perlu membuat satu tabel untuk superclass, kita tidak

membutuhkan tabel untuk subclass karena objeknya hanya ada

pada satu subclass.

Gambar 2. 11 Implementasi mutual-exclusion inheritance

menggunakan "under"

Patition Inheritance

Menyatakan bahwa sekelompok subclass adalah partisi dari

superclass. Partition inheritance dapat dikatakan kombinasi dari

union dan mutual-exclution inheritance. Contohnya

menggunakan karyawan lagi, tetapi ditambah kelas baru casual, diasumsikan bahwa tiap anggota dari kelas karyawan harus

milik satu dari setiap subclassnya, yaitu sub kelas manager atau pekerja, atau null, dan tidak boleh milik lebih dari satu sub kelas.

Gambar 2. 12 Implementasi partition inheritance menggunakan

"under"

Multiple Inheritance

Bentuk dari multiple inheritance adalah sebagai berikut:

Gambar 2. 13 Multiple inheritance

Sebuah kelas tutor mewarisi dari kelas tumpang tindih karena pada dasarnya tutor bisa seorang mahasiswa dan bisa juga anggota staff. Cara untuk menangani warisan ini adalah dengan

menggunakan satu tabel untuk setiap superclass dan satu tabel untuk subclass. Pada saat penulisan ini, oracle tidak mendukung multiple inheritance menggunakan kata kunci “Under”. Kata kunci ini hanya berlaku untuk jenis warisan tunggal. Namun

konsep multiple inheritance ini sering disimulasikan

menggunakan teknik lain yang sudah ada. Sebagai contoh, kita

dapat menggunakan “Under” untuk mengimplementasi salah

satu orang tua warisan, dan menggunakan jenis asosiasi untuk

menghubungkan parent lainnya. Kelemahan dari menggunakan

teknik ini adalah bahwa hanya jenis parent yang

diimplementasikan menggunakan “under” saja yang dapat

diwariskan, oleh karena itu kita harus berhati-hati saat memilih parent mana untuk inheritance dan yang mana untuk asosiasi.

g. Encapsulation

Sebuah object type terdiri dari dua bagian, yang pertama adalah atribut, dan yang kedua adalah methods. Methods adalah Function atau Procedure yang dideklarasikan di dalam object type

untuk mengimplementasikan behavior dari suatu objek. Pada

prinsipnya 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.

Oracle ™ menyediakan dua jenis enkapsulasi untuk model

objek-relasional. Yang pertama adalah melalui Stored Procedure

or Function. Yang kedua adalah melalui Member Procedure or Function.

1. Stored Procedure or Function

Deklarasi Stored Procedure or Function, dasarnya sangat mirip

dengan standar deklarasi prosedur dalam banyak bahasa prosedural. Enkapsulasi disediakan dengan memberikan hibah untuk peran atau pengguna tertentu untuk mengakses Stored Procedure or Function tertentu. Kita perlu menggunakan pernyataan "create procedure". Seperti dalam pernyataan create lainnya, pernyataan "or replace" adalah opsional.

Prosedur yang tersimpan dapat memiliki variabel lokal di dalamnya. Ini adalah variabel yang hanya digunakan dalam

tubuh prosedur. Dalam tubuh prosedur, kita dapat

menggunakan pernyataan SQL seperti pilih, insert, update, dan menghapus. Dengan demikian, metode yang digunakan untuk memanipulasi tabel database dapat dikemas dalam stored procedure.

2. Member Procedure or Function

Tidak seperti stored procedure, dengan menggunakan

metode member kita dapat mengidentifikasi visibilitas lingkup metode. Ada tiga jenis: public, private, dan protected. Secara default, atribut akan dinyatakan publik. Keuntungan terbesar dari metode over stored routines adalah visibilitas diperoleh dengan menjadi bagian dari kelas. Metode akan memiliki akses ke atribut, prosedur, dan fungsi yang mungkin tidak terlihat pada antarmuka kelas (private atau protected). Di sisi lain, rutinitas yang disimpan tidak memiliki akses ke jenis atribut, prosedur, dan fungsi. Dengan fitur substitusi, sebuah contoh dari subtipe dapat digunakan dalam setiap konteks di mana

contoh dari supertype dapat digunakan (Fortier, 1999).

Konteksnya meliputi penggunaan dari subtipe yang berbeda sebagai parameter fungsi yang sama.

Gambar 2. 15 Sintaks umum member procedure

Gambar 2. 16 Contoh member procedure

Dokumen terkait