Senin, 22 Maret 2010

Keterbatasan Relational DBMS

  • Representation of “Real World” entities

Proses normalisasi pada umumnya akan membuat relasi yang tidak berhubungan

dengan entitas pada “dunia nyata”. Fragmentasi dari entitas “dunia nyata” ke dalam

beberapa relasi, dengan sebuah representasi fisik akan menggambarkan struktur yang

tidak efisien karena akan melakukan banyak join selama proses query.

  • Semantic overloading

Model relasional hanya mempunyai satu konstruksi untuk menggambarkan data dan

keterhubungannya. Sebagai contoh : untuk menggambarkan keterhubungan M : N dari

entitas A dan B, kita membuat 3 relasi, satu untuk menggambarkan masing-masing

entitas A dan B, dan satu menggambarkan keterhubungannya (relationship). Tidak ada

mekanisme untuk membedakan antara entitas dan relationship, atau untuk

membedakan antara jenis relationship yang berbeda yang terdapat di antara entitas.

Sebagai contoh : relationship 1 : M dapat berarti memiliki, mempunyai, mengatur, dsb.

Jika perbedaan seperti itu dapat dibuat, maka mungkin dapat membangun semantik

pada operasi-operasi tersebut. Oleh karena itu model relasional merupakan semantically oevrloaded.

  • Integrity constraints and enterprise constraints

Integrity berhubungan dengan validitas dan kekonsistenan dari data yang disimpan.

Integrity biasanya diekspresikan dalam istilah-istilah yang berhubungan dengan

constraint, dimana aturan-aturan kekonsistenan pada database tidak boleh dilanggar.

Sangat disayangkan bahwa banyak sistem komersial tidak mendukung batasan- batasan itu, dan sistem tersebut lebih mengutamakan membuat batasan-batasannya di dalam aplikasi. Tentu saja hal ini sangat berbahaya dan dapat menimbulkan duplikasi data, dan lebih buruk lagi data berada dalam keadaan tidak konsisten. Lebih jauh lagi, tidak ada dukungan untuk aturan-aturan enterprise dalam model relasional, yang artinya aturan-aturan tersebut harus dibangun ke dalam DBMS atau aplikasi.

  • Homogeneous data

Model relasional mengasumsikan homogenitas horisontal dan vertikal. Homogenitas

horisontal berarti bahwa setiap tuple dari sebuah relasi harus disusun dari atribut- atribut yang sejenis. Homogenitas vertikal berarti bahwa nilai di dalam kolom dari sebuah relasi harus berasal dari domain yang sama (sejenis). Dan irisan (intersection) antara baris dan kolom harus bernilai atomik. Struktur yang tetap seperti ini sangat terbatas untuk beberapa objek “dunia nyata” yang mempunyai struktur kompleks. Sebagai contoh : pesawat terbang.

  • Limited operations

Model relasional merupakan himpunan (set) yang sudah tetap, seperti operasi

himpunan (set) dan operasi tuple-oriented. Operasi-operasi ini disediakan oleh SQL.

  • Recursive Query

Recursive query merupakan proses query dari relationship yang berelasi dengan

dirinya sendiri (baik secara langsung atau tidak langsung). Sebagai contoh : terdapat

relasi sederhana dari relasi Staff yang menyimpan nomor staf dan manajer-nya.

Staff_No

Manager_Staff_No

S5

S4

S4

S3

S3

S2

S2

S1

S1

NULL

Bagaimana mencari para manajer yang secara langsung atau tidak langsung mengatur

(manage) anggota staf no S5 ?

Terdapat 2 tingkat hirarki :

SELECT manager_staff_no FROM staff WHERE staff_no = ‘S5’

UNION

SELECT manager_staff_no FROM staff WHERE staff_no =

(SELECT manager_staff_no FROM staff WHERE staff_no = ‘S5’);

Di dalam contoh ini, pendekatan ini berhasil karena kita mengetahui berapa tingkatan

dalam hirarki yang harus diproses. Tetapi jika untuk mendapatkan hasil yang lain seperti

“untuk setiap anggota staff, tampilkan seluruh manajer baik yang secara langsung

ataupun tidak langsung mengatur (manage) staf tersebut”, maka pendekatan seperti di

atas akan lebih sulit untuk diimplementasikan dengan menggunakan SQL. Untuk

mengatasi masalah ini, SQL dapat ditempelkan (embedded) pada bahasa

pemrograman tingkat tinggi, yang menyediakan konstruksi untuk fasilitas iterasi.

Sebagai tambahan, banyak sistem relasional yang menyediakan report writer dengan

konstruksi yang mirip.

  • Impedance mismatch

Perhitungan dengan menggunakan SQL kurang lengkap. Untuk mengatasi hal ini, SQL

standar menyediakan embedded SQL untuk membangun aplikasi database yang lebih

kompleks. Tetapi pendekatan ini menghasilkan sebuah “Impedance mismatch” karena

kita mencocokan paradigma pemrograman yang berbeda. SQL merupakan sebuah

bahasa yang menangani baris (record), sedangkan sebuah bahasa tingkat tinggi seperti C merupakan bahasa prosedural yang dapat menangani hanya 1 baris pada suatu saat.

Kedua : SQL dan 3 GLs menggunakan model-model yang berbeda untuk

menggambarkan data. Sebagai contoh : SQL bisa berisikan jenis data date dan interval yang tidak tersedia di dalam bahasa pemrograman tradisional. Oleh karena itu

merupakan hal yang sangat penting bagi program aplikasi untuk mengkonversi dua tipe data tadi, sehingga menjadi tidak efisien. Lebih jauh lagi, karena kita menggunakan 2 tipe sistem yang berbeda, maka sangat tidak mungkin secara otomatis menguji aplikasi secara keseluruhan.

Tidak ada komentar:

Posting Komentar