Materi Sistim Basisdata PDF
Materi Sistim Basisdata PDF
Bab 1
PENGANTAR
Kemudian, Silberchatz, dkk,; (2002) mendefinisikan basisdata sebagai kumpulan data berisi informasi
yang sesuai untuk sebuah perusahaan. Sistem menajemen basisdata (DBMS) adalah kumpulan data
yang saling berhubungan dan kumpulan program untuk mengakses data. Tujuan utama Sistem
menajemen basisdata adalah menyediakan cara menyimpan dan mengambil informasi basisdata
secara mudah dan efesien.
Ramakrishnan dan Gehrke (2003) menyatakan basisdata sebagai kumpulan data, umumnya
mendeskripsikan aktivitas satu organisasi atau lebih yang berhubungan. Misalnya, basisdata
universitas mungkin berisi informasi mengenai hal berikut :
Hubungan antar entitas seperti registrasi mahasiswa dalam mata kuliah, fakultas yang
mengajarkan mata kuliah, dan penggunaan ruang untuk kuliah.
Definisi basisdata, menurut McLeod, dkk,(2001) adalah kumpulan seluruh sumber daya berbasis
Komputer milik organisasi. Sistem manejemen basisdata adalah aplikasi perangkat lunak yang
menyimpan struktur basisdata, hubungan antardata dalam basisdata yang dikendalikan oleh Sistem
manejemen basisdata adalah satu set catatan data yang berhubungan dan saling menjelaskan.
Basisdata warisan (legacy database) adalah basisdata yang sedang digunakan oleh sebuah perusahaan.
Istilah warisan menyatakan bahwa basisdata telah dipakai selama beberapa tahun dan basisdata yang
ada tidak sesuai dengan teknologi masa kini. Ketika sebuah perusahaan telah menentukan untuk
merancang sebuah basisdata, basisdata yang ada dianggap sebagai basisdata warisan.
Contoh basisdata yang telah kita kenal adalah :
Buku alamat
Buku telepon
Peta jalan
Beberapa basisdata di atas merupakan statis, sedangkan yang lainnya dinamis. Sebagai contoh, peta
jalan adalah basisdata statis yang mengandung informasi seperti kota, arah, jarak, dan sebagainya.
Dengan melihat sebuah peta, Anda cepat menemukan tujuan relative terhadap posisi Anda sekarang.
Informasi pada peta tidak berubah dalam waktu lama. Buku telepon pun merupakan basisdata statis
karena informasi di dalamnya hanya dicetak setiap tahun.
Buku alamat adalah contoh basisdata dinamis yang banyak digunakan sehari-hari. Buku alamat
merupakan basisdata dinamis karena isinya dapat diubah dengan cepat. Alamat teman baru dapat
ditambahkan dan alamat lama dapat dihapus dengan mudah.
Penerbangan : untuk informasi pemesanan dan jadwal. Penerbangan adalah salah satu yang
pertama yang menggunakan abasisdata meleluai jaringan telepon dan jaringan data lainnya.
Transaksi kartu kredit : untuk membeli dengan kartu kredit dan membuat tagihan bulanan.
Keuangan : untuk menyimpan informasi tentang perusahaan serta menjual dan membeli alat
keuangan seperti saham dan obligasi.
Perusahaan : untuk mengelola menajemen rantai pasokan dan melacak produksi barang-
barang di pabrik, investaris barang-barang di gudang atau toko, dan pesanan barang-barangt.
Sumber daya manusia : untuk informasi tentang pegawai, gaji, pajak, dan pembuatan cek
pembayaran.
Seperti yang sudah diilustrasikan, basisdata membentuk bagian penting semua perusahaan masa kini.
Lebih dari empat dekate lalu, pengguna basisdata meningkat di semua perusahaan. Pada awalnya,
hanya sedikit orang berinteraksi secara langsung dsistem basisdata. Meskipun tidak menyadarinya,
mereka telah berinteraksi dengan baisdata secara tidak langsung, misalnya melalui laporan yang
dicetak seperti tagihan kartu kredit atau melalui agen seperti teller bank dan agen perjalanan.
Sebaliknya, ATM memaksa pengguna berinteraksi secara langsung dengan basisdata.
Revolusi internet pada akhir 1990 meningkatkan jumlah penggunaan yang mengakses basisdata
secara langsung.banyak organisasi mengubah sistem pengaksesan basisdata melalui telepon ke sistem
web dan membuat bermacam layanan dan informasi yang tersedia secara online. Misalnya,ketika
mengakses toko buku online dan mencari koleksi buku atau music, Anda mengakses data yang
disimpan dalam suatu basis data. Ketika anda memesan sesuatu secara online, pesanan disimpan
dalam basis data. Ketika mengakses suatu website, informasi tentang anda bisa diambil dari basisdata
agar dapat memilih iklan yang bisa ditawarkan pada Anda.
Oleh karena itu, sebagian besar orang tidak menyadari apabila telah berhubungan dengan basisdata
pengaksesan basisdata merupakan bagian penting kehidupan hampir semua orang saat ini.
Program aplikasi baru ditambahknan ke dalam Sistem jika dibutuhkan. Misalnya, bank memutuskan
untuk menawarkan pengecekan rekening yang disimpan. Oleh karena itu, dengan berjalannya waktu,
Sistem membutuhkan lebih banyak file dan lebih banyak program aplikasi.
DBMS adalah bagian perangkat lunak yang dirancang untuk membuat tugas sebelumnya menjadi
lebih mudah. Dengan menyimpan data dalam DBMS dari sebuah kumpulan file Sistem operasi, kita
dapat menggunakan fitur DBMS untuk mengola data secara efisien. Karena volume data dan
pengguna terus bertambah, ratusan gigabye dan dan ribuan pengguna merupakan hal biasa dalam
basisdata perusahaan saat ini sehingga dukungan DBMS sangat diperlukan (Ramakrishan dan
Grehke,2003).
Sistem pemrosesan file didukung oleh Sistem operasi konvensional. Sistem file menyimpan record-
record bermacam-macam file, membutuhkan program aplikasi yang berbeda untuk memilih record
file, dan menambah recor ke dalam suatu file. Sebelum Sistem Manajemen basisdata muncul,
perusahaan-perusahaan menyimpan informasi dalam Sistem file (McHaney, 2005)
Menyimpan informasi perusahaan dalam Sistem file memilih sejumlah kelamahan (Silberschatz,
dkk,2002), yaitu :
Karena progremer berbeda membuat file dan program aplikasi dalam waktu lama, ada
kemungkinan berbagai macam file memiliki format berbeda dan program bisa ditulis dalam
beberapa bahas pemrograman. Kemudian, informasi yang sama bisa terduplikasi di beberapa
tempat. Misalnya, alamat dan nomor telepon seorang pelanggan bisa muncul pada file berisi
rekening dan file berisi pengecekan rekening. Pengulangan menyebabkan meningkatnya
kebutuhan penyimpanan dan biaya akses. Lebih lanjut, pengulangan dapat pula menyebabkan
ketidakkonsistenan data, dimana data yang sama ditulis berbeda. Misalnya : perubahan alamat
pelanggan dilakukan pada file rekening, tetapi tidak ditempat lain.
Misalnya seorang petugas bank ingin nama semua pelanggan yang bertempat tinggal di daerah
dengan kode pos tertentu, ia meminta bagian pemrosesan data untuk membuat daftar
pelanggan yang dicari. Karean perancang Sistem tidak mengantisipasi permintaan semacam
itu, tidak ada program aplikasi untuk membuatnya. Program yang ada hanyalah program
apalikasi untuk membuat daftar semua pelanggan. Sekarang, petugas memiliki dua pilihan :
apakah menerima daftar semua pelanggan dan memilah informasi yang dibutuhkan secara
manual atau meminta programmer membuat program aplikasi sesuai kebutuhan. Kedua
alternatif sama-sama tidak memuaskan. Misalnya, program semacam itu dibuat, tetapi
beberapa hari kemudian, petugas yang sama menginginkan daftar yang hanya memasukkan
pelanggan bersaldo lebih besar dari Rp.100.000.000,00. Seperti sudah diduga, program untuk
menampilkan daftar semacam itu tidak ada. Sekali lagi, petugas diharapkan pada dua pilihan
yang tidak memuaskan.
Penekanan disini adalah lingkungan pemrosesan file konvensional tidak memungkinkan data
yang diinginkan mudah diambil. Lebih lanjut, pengguna membutuhkan Sistem pengambilan
data yang memenuhi kebutuhannya.
Kekangan Data
Karena data tersebar diberbagai file yang berbeda format, maka pembuatan program aplikasi
untuk mengambil data yang dibutuhkan menjadi sulit.
Masalah Integritas
Nilai data yang disimpan dalam basisdata harus mengikuti batasan tertentu. Sebagai contoh,
saldo suatu rekening tidak boleh lebih kecil dari nilai tertentu, sebagai contoh, saldo suatu
rekening tidak boleh lebih kecil dari Rp500.000,00. Programmer menjalankan batasan dalam
Sistem dengan menambahkan kode tertentu pada semua program aplikasi. Namun, ketika
batasan ditambahkan, program sangat sulit diubah untuk menjalankan batasan. Masalah
semakin rumit jika batasan melibatkan beberapa data dari file-file berbeda.
Masalah atomik
Sistem Komputer, seperti peralatan mekanik atau listrik lainnya, mudah mengalami kerusakan.
Dalam beberapa aplikasi, jika kerusakan terjadi, data harus bisa dikembalikan seperti sebelum
kerusakan. Sebagai contoh, kerusakan Sistem terjadi saat mentransfer Rp500.000,00 dari
rekening A ke rekening B. ada kemungkinan bahwa uang Rp500.000,00 sudah dikurangkan
dari rekening A, tetapi belum ditambahkan ke rekening B. hasilnya adalah ketidakkonsistenan
data dalam basisdata. Oleh karena itu, konsistensi basisdata penting untuk dijaga, yaitu suatu
proses harus terjadi atau tidak sama sekali. Jadi, dalam hal ini, transfer uang harus atomic.
Artinya, transfer harus terjadi secara utuh atau tidak sama sekali. Memastikan atomisitas pada
Sistem pemrosesan file konvensional memang sangat sulit.
Untuk mempertahankan kinerja Sistem dan respon yang lebih cepat, banyak Sistem
memperbolehkan lebih dari satu pengguna memperbarui data secara bersamaan. Pada
lingkungan semacam itu, memperbarui data secara bersamaan. Pada lingkungan semacam itu
update secara bersamaan bisa menyebabkan ketidakkonsistenan data. Kita mengambil contoh
rekening A yang memilki Rp500.000,00. Jika dua pelanggan mengambil uang
(misalnyaRp50.000,00 dan Rp100.000,00) dari rekening A hampir bersamaan, maka kedua
proses akan menyebabkan saldo rekening menjadi salah. Misalnya, program meng-update
rekening dengan membaca saldo terakhir, mengurangi saldo dengan jumlah uang yang diambil,
lalu menuliskan saldonya pada rekening. Jika kedua proses berjalan secara bersamaan, maka
keduanya akan membaca nilai saldo Rp500.00,00 dan masing-masing menuliskan nilai saldo
terakhir Rp450.000,00, dan Rp 400.000,00. Hal ini tergantung pada proses yang terjadi
terakhir, rekening memiliki saldo terakhir Rp 450.000,00 atau Rp 400.000,00, bukan Rp
350.000,00 seperti yang seharusnya. Untuk mencegah terjadinya kesalahan, Sistem harus
melakukan beberapa bentuk pengawasan. Namun, pengawasan sulit dilakukan karena data bisa
diakses oleh program aplikasi berbeda yang belum dikoordinasikan sebelumnya.
Masalah Keamanan
Tidak semua pengguna sistem basisdata bisa mengakses semua data. Sebagai contoh, dalam
Sistem perbankan, pegawai bagaian penggajian hanya diperbolehkan melihat bagian basis
data yang berhubungan dengan masalah penggajian. Mereka tidak diperkenankan mengakses
informasi tentang rekening pelanggan. Namun, karena program aplikasi ditambahkan ke
dalam Sistem hanya untuk tujuan khusus. Pelaksanaan tindakan pengaman semacam itu
merupakan hal sulit.
Apabila dibandingkan dengan file-file Komputer yang disimpan terpisah di setiap aplikasi
Komputer, DBMS mengurangi jumlah total file dengan menghapus data yang terduplikasi di
berbagai file. Data terduplikasi selebihnya dapat ditempatkan dalam suatu file.
Spesifikasi data disimpan dalam skema pada tiap program aplikasi. Perubahan dapat dibuat
pada struktur data tanpa memengaruhi program yang mengakses data.
Saat file dibentuk sehingga menyediakan kaitan logis maka organisasi fisik bukan merupakan
kendala. Organisasi logis, pandangan pengguna, dan program aplikasi tidak harus tercermin
pada media penyimpanan fisik.
Meningkatkan keamanan
DBMS mainframe maupun Komputer mikro dapat menyertakan beberapa lapis keamanan
seperti kata sandi( password) direktori pemakai, dan bahasa sandi (encryption) sehingga data
yang dikelola akan lebih aman.
DBMS mainframe masih sangat mahal. Walupun harga DBMS berbasis Komputer mikro lebih
murah, tetapi tetap merupakan pengeluaran besar bagi suatu organisasi kecil.
DBMS sering memerlukan kapasitas penyimpan dan memori lebih besar dari pada program
aplikasi lain.
Baik basisdata terkomputerisasi maupun DBMS bukanlah prasyarat untuk memecahkan masalah,
Namun keduanya memberikan dasar-dasar menggunakan Komputer sebagai suatu Sistem informasi
bagi para spesialis informasi dan pengguna.
Supaya suatu Sistem berguna, maka Sistem itu harus bisa mengambil data secara efisien.
Kebutuhan akan efisiensi ini mendorong programmer untuk menggunakan struktur data
kompleks untuk menyajikan data dalam basisdata tidak mahir menggunakan kompuetr,
pengembang( developer) menyembunyikan kompleksitas Sistemnya dari pengguna melalui
beberapa tingkatan abtraksi. Tingkatan abtraksi berguna untuk menyederhanakan interkasi
pengguna dengan Sistem.
Tingkatan fisik, merupkan tingkatan abtrkasi paling rendah dan mengambarakan bagaimana
data sebenarnya disimpan. Tingkatan fisik mengambarkan secara rinci struktur data tingkat
rendah yang kompleks.
Tingkatan Logis, merupakan tingkatan yang setingkat lebih tinggi dari tingkatan fisik dan
menggambarkan data yang disimpan dalam basisdata secara keseluruhan melalui sejumlah
struktur sederhana. Meskipun penerapan struktur pada tingkatan logis bisa mengikuti
sertakan struktur tingkatan fisik yang kompleks, pengguna tingkatan fisik. Administrator
basisdata, yang harus memutuskan informasi yang disimpan dalam basisdata, menggunakan
absraksi tingkatan logis.
Tingkatan View, merupakan tingkatan abstraksi paling tinggi dan hanya menggambarkan
bagian tertentu suatu basisdata. Meskipun tingkatan logis menggunakan struktur lebih
sederhana, tetapi masih komplek karena beragamnya informasi yang disimpan dalam
basisdata. Banyak pengguna Sistem basisdata tidak memerlukan informasi tersebut karena
hany perlu mengakses bagian dari basisdata. Kegunaan abstraksi tingkatan view adalah
menyederhankan interaksi dengan Sistem. Sistem bisa menyediakan banyak view untuk
basisdata yang sama.
View Level
View 2 ...
View 1 View N
Logical Level
Physical
Level
Analogi dengan konsep tipe data pada bahasa pemrograman bisa memperjelas perbedaan ketiga
tingkatan abstraksi. Sebagian besar bahasa pemrograman tingkat tinggi mendukung gagasan tipe.
Misalnya, pada bahasa seprti pascal, kita bisa mendeklarasikan sebuah record sebagai berikut :
Program di atas mendefinisikan record baru yang diberi nama mahasiswa dengan empat field. Masing-
masing field memilki sebuah nama dan sebuah tipe yang berhubungan dengannya. Sebuah unuversitas
bisa memilki beberapa tipe record seperti, antara lain:
Matakuliah, dengan field kodeMK, NamaMK, SKS.
Pada tingkatan fisik, sebuah record pada mahasiswa, mata kuliah, dan dosen dapat digambarkan
sebagai sebuah blok lokasi penyimpanan yang berurutan, misalnya word atau byte. Compiler
menyembunyikan rincian tingkatan fisik dari programmer. Demikian pula, sistm basisdata
menyembunyikan banyak rincian penyimpanan tingkatan paling rendah dari programmer basisdata. Di
lain pihak, administrator basisdata mungkin mengetahui rincian tertentu pengaturan data.
Pada tingkatan logis, masing-masing record digambarkan oleh sebuah definisi tipe (seperti dituliskan
pada kode program di atas) dan hubungan tipe-tipe record didefinisikan pula. Programmer
menggunakan bahasa pemrograman pada tingkatan abstraksi logis. Kemudian, administrator basisdata
sering pula bekerja pada tingkatan abstraksi ini.
Pada tingkatan view, pengguna Komputer melihat kumpulan program aplikasi yang menyembunyikan
rincian tipe-tipe data. Lebih lanjut, pada tingkatan ini, beberapa view basisdata didefinisikan pula dan
pengguna basisdata melihatnya. Selain menyembunyikan keamanan untuk mencegah pengguna
mengakses bagian tertentu basisdata. Misalnya, pegawai administrsi tidak boleh melihat rincian data
mahasiswa dan hanya boleh melihat data pegawai.
disembunyikan dibawah skema lagis dan dapat diubah dengan mudah tanpa mempengaruhi program
aplikasi. program aplikasi disebut telah menunjukkan kemandirian data fisik (physical data
independence) jika tidak tergantung pada skema fisik sehingga tidak perlu ditulis ulang saat skema
fisik berubah.
Pengatur transaksi, memastikan bahwa basisdata tetap konsisten meskipun ada kegagalan
pada Sistem dan eksekusi transaksi yang terjadi bersamaan berlangsung tanpa terjadi konflik.
Pengatur file, mengatur aloksi ruang pada disk dan struktur data yang digunakan untuk
mewakili informasi yang disimpan pada disk.
Pengatur penyimpanan menerapkan beberapa struktur data sebagai bagian penerapan Sistem
fisik,yaitu :
File data, menyimpan basisdata sendiri.
Kamus data, menyimpan metadata tentang struktur basisdata, terutama skema basisdata.
Compiler DML, menerjemahkan perintah DML dalam bahasa query menjadi rencana evaluasi
yang terdiri atas intruksi tingkat rendah yang dimengerti oleh mesin evaluasi query.
Mesain evalusi query, mengeksekusi intruksi tingkatan rendah yang dihasilkan oleh compiler
DML.
Gambar 1.3 menunjukkan komponen pemroses query dan hubungan antara mereka
(Silberschatz,dkk,2002).
DBMS
Pemroses Pemroses Kompiler
DML Query DDL
Metode Pengatur
Akses File
Bufter Basisdata
Sistem Dan kamus
data
Bahasa manipulasi data (DML) adalah bahasa yang memungkinkan pengguna mengakses atau
memanipulasi data seperti yang diatur oleh model data. Ada dua tipe DML, yaitu :
DML Prosedural, mengharuskan pengguna untuk menentukan data yang dibutuhkan dan
bagaimana mendapatkannya.
DML deklaratif lebih mudah dipelajari dan digunakan daripada DML procedural. Namun, karena
pengguna tidak harus menentukan cara mendapatkan data, Sistem basisdata harus mencari alat yang
efektif untuk mengakses data. Komponen DML dari bahasa SQL adalah nonprocedural.
Query adalah pernyataan yang meminta pengguna mengambil informasi. Bagian DML yang terlibat
dalam pengambilan informasi disebut bahasa query. Istilah bahasa query sering disamakan dengan
istilah bahasa manipulasi data.
Query dalam bahasa SQL berikut mencari nama pegawai dengan kodepegawai 04
Select pegawai. Nama depan
From pegawai
Where pegawai.kodepegawai=04
Query di atas menentukan bahwa baris tabel pegawai dengan kodepegawai 04 harus diambil dan
atribut namadepan baris harus ditampilkan. Jika query dijalankan, maka nama Hasan akan tampil.
Query bisa melibatkan informasi dari lebih dari satu tabel. Sebagai contoh, query berikut mencari
nama barang yang dipesan oleh pegawai dengan kodepegawai 02.
Select pegawai.namadepan, pesan.namabarang
From pegawai, pesan
Where pegawai.kodepegawai=pesan.kodepegawai and
Pegawai.kodepegawai=02
Jika query dijalankan pada tabel pegawai dan tabel pesan, Sistem akan menemukan bahwa keyboard
telah dipesan oleh Kiki.
Pengguna basisdata dapat berupa orang atau program aplikasi (McLeod, dkk.,2001). Ada empat tipe
pengguna Sistem basisdata yang dibedakan dari cara mereka mengharapkan interaksi dengan Sistem.
Tipe-tipe antarmuka pengguna yang berbeda sudah dirancang untuk tipe-tipe pengguna yang berbeda
pula.
Pengguna naf adalah pengguna unsophisticated yang berinteraksi dengan Sistem
menggunakan satu program aplikasi yang telah ditulis sebelumnya. Sebagai contoh, teller
bank yang akan mentransfer uang sebesar Rp500.000,00 dari rekening A ke rekening B
menggunakan sejumlah uang, rekening asal dan rekening tujuan.
Contoh lain adalah seorang pengguna yang akan melihat saldo rekening di internet. Pengguna
bisa mengakses formulir di mana dia mengisi nomot rekeningny. Kemudian, program aplikasi
pada Web server mengambil saldo rekening menggunakan nomor rekening yang diberikan dan
mengirimkan informasi kembali ke pengguna.
Antarmuka pengguna yang umum untuk pengguna naf adalah antarmuka berbentuk formulir,
dimana pengguna dapat mengisi field-field di dalamnya. Pengguna naf dapat pula membaca
laporan yang dihasilkan basisdata.
Programmer aplikasi adalah professional yang menulis program aplikasi. Programmer aplikasi
dapat memilih dari banyak tool untuk membuat antarmuka pengguna. Rapid Aplication
DEveloverment (RAD) adalah tool yang memungkinkan programmer apliksi membuat formulir
dan laporan tanpa menulis program. Ada pula bahasa pemrograman tertentu yang
mengomunikasikan struktur control (misalnya loop, while loop, dan if then else) dengan
pernyataan dari bahasa manipulasi data atau DML. Bahasa-bahasa ini kadang disebut bahasa
generasi keempat, yaitu bahasa yang sering memasukkan fitur khusus untuk memfasilitasi
pembentukan formulir dan penampilan data pada layar.
Pengguna Specialized adalah pengguna Specialized yang menulis aplikasi basisdata yang
cocok untuk kerangka kerja pemprosesan data trasionala. Di antara aplikasi ini adalah Sistem
perancangan yang dibantu oleh Komputer Aided Design Sistem (CAD Sistem), Sistem yang
berdas ilmu pengetahuan dan keahlian, Sistem yang menyimpan data dengan tipe data
kompleks (misalnya, data grafik dan data audio), dan Sistem pemodelan lingkungan.
DBA
Menentukan dan menjalankan
Prosedur dan
Standar
Mengatur dan memonitor
Digunakan oleh
Menguji
Antarmuka
DBA
Menulis
Menggunakan Mengatur
Dan / atau
Memodifikasi skema dan organisasi fisik, DBA melakukan perubahan skema dan organisasi
fisik untuk menyatakan perubahan kebutuhan suatu organisasi atau mengubah organisasi
fisik agar kenerja meningkat.
Member otorisasi untuk mengakses data, dengan memberikan tipe otorisasi yang berbeda,
administrator basisdata dapat menatur bagian basisdata yang dapat diakses oleh pengguna.
Informasi otorisasi disimpan dalam struktur Sistem khusus di mana Sistem basisdata akan
selalu mengecek setiap ada seseorang yang mencoba mangakses data dalam Sistem.
Perawatan rutin, contoh aktivitas perawatan rutin yang dilakukan oleh administrator
basisdata adalah:
Secara teratur mem-backup basisdata, baik pada tipe maupun pada remote server,
untuk mencegah kehilngan data saat terjadi bencana alam seperti banjir.
Memastikan bahwa tersedia cukup ruang pada disk untuk operasi normal dan meng-
update ruang disk jika diperlukan.
DBMS adalah perangkat lunak yang digunakan untuk menyimpan data. Sebuah DBMS harus memilki
karakteristik sebagai berikut :
Data disimpan pada perangkat keras dan harus tetap ada setelah akses. Motode akses
termasuk pembuatan data baru, modifikasi data yang sudah ada, dan penghapusan data. Ini
disebut data persistence.
Banyak pengguna harus diizinkan untuk mengakses data secara bersamaan. Hal ini disebut
concurrency.
Transaksi diatur agar Sistem dapat memanipulasi data dan DBMS harus memilki kemampuan
menyimpan sekumpulan pekerjaan.
Bahasa query harus tersedia untuk mengambil data berdasarkan criteria yang diberikan oleh
pengguna.
Data harus dapat dipulihkan setelah terjadi kerusakan. Jika data hilang, DBMS harus memilki
kemampuan untuk mengembalikan data.
Sebelum perusahaan seperti Oracle dan Microsoft mulai mengembangkan Sistem manajeman
basisdata yang dijalankan pada Komputer, banyak perusahaan yang menggunakan Komputer
menyimpan datanya dalam bentuk file. Pengguna file untuk menyimpan data sangat umum pada masa
mainframe. Basisdata file tersusun atas satu atau lebih file dan disimpan dalam format teks. Informasi
dalam file-file teks disimpan sebagai field. Field-field bisa memilki panjang yang tetap atau berubah-
ubah dan terpisahkan oleh beberapa pemisah. Berikut adalah contoh file dengan panjang field yang
tetap.
1234 Megadata Komputer administrasi Sistem di Linux
5678 Doni Ariyus Kamus Hacker
4321 Megadata Komputer Tip dan Trik Meningkatan Kenerja PC
8765 Agfianto Eko Putra Penafis Aktif Elektronik Tecori dan Praktek
4523 Agfianto Eko Putra Belajar Bahasa Assembly dengan EMU8086
3456 Abdul Kadir Panduan Pemrograman Visual C++
Contoh file memilki tiga field, yaitu nomor pengenal, nama pengarang, dan judul buku. Masing-
masing field memilki panjang tetap karena nomor pengenal selalu dimulai dari kolom #1 dan berakhir
pada kolom #4, nama pengarang dimulai dari kolom #6 dan berakhir pada kolom #25, dan sebagainya.
Berikut adalah contoh file dengan panjag field yang berubah-ubah dan dipisahkan oleh pemisah :.
Contoh file kedua memilki pula tiga field. Masing-masing field dipisahkan oleh tanda :. Field-field
memilki panjang yang tidak tetap. Ketika menggunakan pemisah field, Anda harus memastikan bahwa
pemisah field bukan karakter yang ditemukan pada data.
Setiap Sistem basisdata file berbeda karena perusahaan menyimpan data berbeda dan memiliki
keinginan berbeda. Setelah Sistem basisdata file dibuat dan data telah disimpan dalam file-file, satu
metode harus direncanakan untuk mengambil data, membuat Sistem baru, mengubah Sistem, atau
menghapus Sistem. Misalnya, jika ingin mendapatkan daftar judul buku yang dikarang oleh Agfianto
Eko Putra, Anda harus mencari setiap Sistem yang berisi Agfianto Eko Putra. Setelah itu, Anda harus
menyaring data sehingga hanya judul buku yang diambil.
Masalah pengaksesan data membutuhkan sekumpulan program yang dapat mengakses informasi yang
disimpan dalam file. Salah satu masalah utama menggunakan Sistem basisdata file bukan hanya
memerlukan pengetahuan tentang struktur file, melainkan Anda pun harus mengetahui pasti di mana
data disimpan. Sebagai bahan, basisdata Anda akan membutuhkan banyak file di mana data pada satu
file dapat berhubungan dengan data yang disimpan pada file lain. Mengatur hubungan data merupakan
pekerjaan sulit dalam lingkungan basisdata file.
Berikut adalah kekurangan basisdata file:
File tidak menyediakan struktur di mana data mudah dihubungkan.
Mengatur data secara efektif dan memastikan akurasi merupakan hal sulit.
Pengguna perlu menyimpan data secara berulang sehingga menyebabkan lebih banyak
pekerjaan untuk merawat data secara akurat.
Model basisdata hierarki setingkat di atas basisdata file terutama karena kemampuan membuat dan
merawat hubungan antarkelompok data. Arsitektur basisdata hierarki berdasarkan pada konsep
hubungan orangtua dan anak. Pada basisdata hierarki, tabel akar atau tabel orangtua berada pada
puncak struktur dan menunjuk pada tabel anak yang mengandung data yang berhubungan. Struktur
basisdata hierarki tampak seperti pohon terbalik seperti ditunjukkan pada Gambar 1.5.
Penerbit
Pada gambar 1.5, penerbit adalah tabel akar. Penerbit memiliki dua tabel anak, yaitu Pengarang dan
Toko Buku. Sebuah Penerbit memiliki banyak Pengarang yang kontraknya serta banyak Toko Buku di
mana dia menyuplai buku. Pengarang adalah tabel orangtua untuk Tabel Judul, seperti Toko Buku
untuk Tabel Daftar Buku. Judul adalh tabel anak dari pengarang, seperti Daftar Buku dan Pesanan
yang merupakan tabel anak dari toko Buku. Salah satu masalkah menggunakan hierarki adalah
informasi judul buku yang berulang karena harus disimpan pada Tabel Daftar Buku. Hal ini
dikarenakan tidak ada hubungan langsung antara Pengarang dan Toko Buku.
Tabel orang tua dapat memiliki banyak tabel anak, tetapi tabel anak hanya dapat memiliki satu tabel
orangtua. Untuk mengakses tabel anak, Anda harus mengakses tabel orangtua terlebih dahulu. Tabel-
tabel yang berhubungan dalam struktur hierarki dihubungkan dengan pointer, yang menunjuk ke
lokasi fisik recor anak.
Keuntungan model basisdata hierarki disbanding model basisdata file adalah :
Data dapat diambil secara cepat.
Peningkatan terhadap basisdata terhadap hierarki dibuat untuk menghasilkan basisdata jaringan.
Seperti pada basisdata hierarki, tabel-tabel basisdata jaringan berhubungan sattu sama lain. Satu
keuntungan utama basisdata jaringan adalah kemampuan tabel orangtua berbagi hubungan dengan
tabel anak. Ini berarti bahwa anak dapat memiliki beberapa tabel orangtua. Dengan demikian, seorang
pengguna dapat mengakses data mulai dari sembarang tabel dalam struktur, baik ke atas maupun ke
bawah. Pengguna tidak diharuskan mengakses tabel akar terlebih dahulu untuk mengakses tabel anak.
Hubungan antartabel pada jaringan disebut set structure, di mana satu tabel adalah pemilik dan tabel
lainnya adalah anggota. Set structure dapat mewakili hubungan one-to-many antara tabel-tabel.
Program aplikasi yang mengakses basisdata jaringan menggunakan set structure untuk mengarahkan
tabel ke bagian lain basisdata. Oleh karena itu, jika set structure diubah, program aplikasi yang
mengakses basisdata harus diubah pula. Gambar 1.6 mengilustrasikan set structure.
Penerbit
(Pemilik)
(set structure)
Kontrak persedian
(anggota))
Pengarang Toko Buku
Pada Gambar 1.6, Tabel Penerbit memiliki dua table, yaitu pengarang dan Toko Buku. Pengarang dan
Toko Buku masing-masing adalah anggota Tabel penerbit. Penerbit mengontrak pengarang dan
menyuplai buku ke toko Buku Set structure pengarang dan penerbit disebut kontrak.
Gambar 1.7 menunjukkan bagaimana tabel anak atau anggota dapat dimiliki lebih dari satu tabel
orangtua. Pada Gambar 1.7, Tabel Judul dimilki oleh tabel pengarang dan toko Buku. Baik tabel
pengarang maupun toko buku membutuhkan hubungan dengan tabel judul. Meskipun kedua set
structure dapat digunakan untuk mengakses Tabel judul, informasi judul buku hanya disimpan pada
satu tabel sehingga mengurangi perulangan data.
supply
Penerbit Toko Buku
menjual
menulis stok
Pengarang Judul Daftar Buku
pesanan
Pesanan
Bab 2
ARSITEKTUR SISTIM BASISDATA
Arsitektur Sistem basisdata sangat dipengaruhi oleh Sistem Komputer di mana ia dijalankan, terutama
olah aspek arsitektur Komputer seperti jaringan, paralelisme, dan distribusi.
Jaringan Komputer memungkinkan beberapa tugas dieksekusi pada Sistem server dan
beberapa lainnya pada Sistem client. Pembagian pekerjaan memunculkan Sistem basisdata
client-server.
Distribusi data ke seluruh tempat atau depatemen dalam organisasi memungkinkan data
berada di tempat di mana mereka dibuat atau paling dibutuhkan, tetapi masih tetap dapat
diakses dari tempat lain dan dari departemen lain. Dengan menyimpan banyak salinan
basisdata ke beberapa tempat, organisasi besar dapat melanjutkan operasi basisdata mereka
bahkan ketika satu tempat dipengaruhi oleh bencana alam seperti banjir, kebakaran, atau
gempa bumi. Sistem basisdata terdistribusi menengani data yang terdistribusi secara
geografis atau administrasi dan tersebar ke banyak Sistem basisdata.
bus sistem
Pengontrol
Memori
Memori
CPU mempunyai cache memori local yang menyimpan salinan bagian memori untuk mempercepat
akses ke data. Masing-masing pengontrol peralatan bertugas pada tipe peralatan tertentu (misalnya
disk drive, peralatan audio, atau video display). CPU dan pengontrol peralatan dapat melakukan
eksekusi secara bersamaan sehingga terjadi perebutan akses ke memori. Cache memori mengurangi
terjadinya perebutan akses memori karena cache mengurangi jumlah kebutuhan CPU untuk
mengakses ke memori bersama.
Sistem terpusat dapat dibedakan menjadi dua berdasarkan Komputer yang digunakan, yaitu Sistem
pengguna tunggal dan Sistem banyak pengguna. PC dan workstation termasuk pada kategori pengguna
tunggal. Sistem pengguna tunggal yang umum adalah unit desktop yang digunakan oleh satu orang,
hanya satu CPU dan satu atau dua Hardisk serta hanya satu orang yang menggunakan Komputer pada
suatu saat. Sebaliknya, Sistem banyak pengguna yang umum memiliki lebih bayak disk dan memori,
banyak CPU, serta banyak pengguna Sistem operasi. Sistem melayani banyak pengguna yang
dihubungkan ke Sistem melalui terminal.
Sistem basisdata yang dirancang untuk pengguna tunggal tidak menyediakan banyak fasilitas seperti
basisdata banyak pengguna. Sistem pengguna tunggal dapat tidak mendukung control konkurensi
(concurrency control), yang tidak dibutuhkan ketika hanya satu pengguna yang dapat melakukan
update. Pada Sistem semaca ini, tidak ada ketentuan untuk pemulihkan akibat crash. Banyak Sistem
semacam ini tidak mendukung SQL dan menyediakan bahasa query yang lebih sederhana seperti
varian dari QBE. Sebaliknya, Sistem basisdata yang dirancang untuk Sistem banyak pengguna
mendukung fitur transaksi secara penuh.
Meskipun Sistem Komputer untuk tujuan umum sekarang ini memiliki banyak prosesor, mereka
mempunyai coarse-granularity parallelism. Hanya dengan beberapa prosesor (sering dua atau empat),
semua berbagai memori utama. Basisdata yang berjalan pada Komputer semacam ini tidak berusaha
membagi satu query ke beberapa prosesor melainkan menjalankan masing-masing query pada satu
prosesor sehingga banyak query dapat dapat berjalan secara bersamaan. Oleh karena itu, Sistem
semacam ini mendukung troughput yang lebih tinggi. Artinya, Sistem memungkinkan jumlah
transaksi tidak berjalan lebih cepat. Basisdata yang dirancang untuk Komputer ber-prosesor tunggal
sudah menyediakan multi-tasking sehingga banyak proses dapat berjalan pada prosesor yang sama
dangan cara time shared (time shared manner). Cara time shared memberikan pandangan pada
pengguna bahwa beberapa proses berjalan secara parallel. Oleh karena itu, mesin parallel coarse-
granularity secara logis tampak identik mesin time-shared dapat dengan mudah diadaptasi untuk
berjalan pada mesin prosesor tunggal.
Sebaliknya, mesin dengan fine granularity parallelism mempunyai banyak prosesor. Kemudian,
Sistem basisdata yang berjalan pada Sistem semacam ini berusaha untuk memparalelkan satu tugas
(misalnya query) yang dikirmkan oleh pengguna.
client client
client client
Jaringan
client
Fungsi basisdata dapat dibagi menjadi dua bagian, yaitu front end dan back end seperti terlihat pada
Gambar 2.3
Mesin SQL
Back end mengatur struktur akses evaluasi dan optimisasi query, control konkurensi, dan pemulihan.
Front end terdiri atas tool-tool seperti fasilitas formulir, penulisan laporan, dan antarmuka pengguna
grafis. Antarmuka antara front end back end adalah melalui SQL atau melalui program aplikasi.
Standar semacan ODBC dan JDBC dibuat untuk menghubungkan client dengan server. Setiap client
yang menggunakan antarmuka ODBC atau JDBC dapat berhubungan dengan sembarang server yang
menyediakannya.
Pada Sistem basisdata generasi awal, ketiadaan standar semacam ODBC dan JDBC mengharuskan
pengembangan perangkat lunak yang sama menyediakan front end back end. Dengan pertumbuhan
standar, antarmuka pengguna front dan server back end sering disediakan oleh pengembang berbeda
Tool-tool pengembang aplikasi (application development tools) digunakan untuk membuat antarmuka
pengguna. Mereka menyediakan tool grafis yang dapat digunakan untuk membuat antarmuka tanpa
perlu membuat program. Beberapa tool pengembang aplikasi yang popular adalah PowerBuilder,
Magic, dan Borland Delphi. Visual Basic pun banyak digunakan untuk mengembangkan aplikasi.
Program aplikasi tertentu seperti spreadsheet dan paket analisis atatistik menggunakan antarmuka
client-server secara langsung untuk mengakses data dari server back end. Hasilnya adalah mereka
menyediakan front end khusus untuk tugas-tugas tertentu.
Beberapa Sistem pemrosesan transaksi menyediakan antarmuka transactional remote procedure call
untuk menghubungkan client dengan server. Panggilan ini tampak seperti procedure call umum, tetapi
semua remote procedure call client ditempatkan pada transaksi tunggal pada server. Oleh karena itu,
jika transaksi dibatalkan, server dapat membatalkan efek remote procedure call.
Buffer pool
Database
Log write checkpoint write
proccess proccess proccess
Proses penulis basisdata: ada satu atau lebih proses yang mengirimkan block buffer yang sudah
dimodifikasi kembali ke disk secara terus-menerus.
Proses penulis basisdata: ada satu atau lebih proses yang mengirimkan block buffer yang sudah
dimodifikasi kembali ke disk secara terus-menurus.
Proses pencatat log: proses mengirimkan log record dari log record buffer ke penyimpan yang
lebih stabil. Proses server menambah log record ke log record buffer dalam memori bersama
dan jika log record dibutuhkan, mereka meminta proses pencatatan log untuk mengirimkan log
record.
Prose cek poin: proses melakukan cek poin secara teratur.
Proses monitor: proses memonitor proses lain dan jika ada yang gagal, dia akan melakukan
aksi pemulihan untuk prose yang gagal lalu mengulangi proses.
Memori bersama mengandung seluruh data bersama seperti:
Buffer pool
Lock table
Log buffer yang mengandung log record yang menunggu untuk dikirimkan ke log pada
penyimpan yang lebih stabil.
Cache query plan yang dapat digunakan kembali jika query yang sama dikirimkan kembali
Semua proses basisdata dapat diakses pada memori bersama. Karena banyak proses bisa membaca
atau melakukan update pada struktur data memori bersama, harus ada mekanisme untuk meyakinkan
bahwa hanya satu proses yang membaca mengeyampingkan dapat diterapkan dengan fungsi Sistem
operasi yang disebut semafor. Alternatifnya adalah menggunakan instruksi atomic yang didukung oleh
perangkat keras Komputer.
Situs A Situs C
jaringan
Komunikasi
melalui
jaringan
Situs B
Bab 3
ENTITY RELATIONSHIP
DIAGRAM - ERD
Struktur yang mendasari suatu basisdata adalah model data yang merupakan kumpulan alat-alat
konseptual untuk mendeskripsikan data, relasi data, data semantic, dan batasan konsistensi. Untuk
mengilustrasikan konsep model data, berikut disajikan dua model data, yaitu entity relationship dan
relational model. Kedua menyediakan cara mendeskripsikan rancangan basisdata pada tingkatan logis.
3.1.1 Entity Relationship Model
Entity relationship (ER) data model didasarkan pada persepsi terhadap dunia nyata yang tersusun atas
kumpulan objek-objek dasar yang disebut entitas dan hubungan antarobjek. Entitas adalah suatu atau
objek dalam dunia nyata yang dapat dibedakan dari objek lain. Sebagai contoh, masing-masing
mahasiswa adalah entitas dan matakuliah dapat pula dianggap sebagai entitas.
Entity digambarkan dalam basisdata dengan kumpulan atribut. Misalnya atribut nim, nama, alamat,
dan kota bisa menggambarkan data mahasiswa tertentu dalam suatu universitas. Atribut-atribut
membentuk entitas mahasiswa. Demikian pula, atribut kodeMK, dan SKS mendeskripsikan entitas
mata kuliah.
Atribut NIM digunakan untuk mengindentifikasi mahasiswa secara unit karena dimungkinkan terdapat
dua mahasiswa dengan nama, alamat, dan kota yang sama. Pengenal unik harus diberikan pada
masing-masing mahasiswa.
Relasi adalah hubungan antara beberapa entitas. Sebagai contoh, relasi menghubungkan mahasiswa
dengan mata kuliah yang diambilnya. Kumpulan semua entitas bertipe sama disebut kumpulan entitas
(entity set), sedangkan kumpulan semua relasi bertipe sama disebut kumpulan relasi (relationship set).
Struktur logis (skema database) dapat ditunjukkan secara grafis dengan diagram ER yang dibentuk
dari komponen-komponen berikut :
Entitas
Persegi panjang mewakili kumpulan entitas
Nama NamaMTK
Nim Alamat KodeMT SKS
K
MAHASISW MATAKULI
1 M mengambil M 1
A AH
Sebagai tambahan, model ER menyajikan pula batasan di mana isi basisdata harus menyesuaikan
dengan batasan. Salah satu batasan yang penting adalah pemetaan kardinalitas (mapping cardinalities),
yang menggambarkan jumlah entitas yang berhubungan dengan entitas lain melalui relasi. Misalnya,
jika suatu matakuliah dapat lebih dari satu mahasiswa, model ER dapat menunjukkannya.
Model relasional menggunakan sekumpulan tabel untuk menyajikan, baik data maupun relasi, diantara
data-data. Masing-masing tabel mempunyai sejumlah kolom dan masing-masing kolom mempunyai
nama unit. Gambar 3.3 menyajikan contoh basisdata relasional yang terdiri atas tabel, yaitu satu
menunjukkan rincian daftar mahasiswa, kedua menunjukkan daftar mata kuliah dan ketiga
menunjukkan mata kuliah yang diambil oleh mahasiswa.
Tabel pertama, yaitu tabel mahasiswa, menunjukkan misalnya mahasiswa yang mempunyai NIM
21001 adalah Adi tinggal di jl. A. Yani No.233. tabel kedua, yaitu tabel matakuliah, menunjukkan
misalnya KodeMK CS001 Adalah Sistem Basisdata dan CS002 adalah Analisis Algoritma. Tabel
ketiga menunjukkan mata kuliah yang diambil oleh seorang mahasiswa. Sebagai contoh, mata kuliah
Sistem Basisdata dengan kode CS001 diambil oleh mahasiswa yang NIM-nya 21001 bernama Adi.
Model relasional adalah contoh model berdasarkan record, yang disebut demikian karena basisdata
disusun dalam record-record dengan berbagai tipe. Masing-masing tabel berisi record dengan tipe
tertentu. Masing-masing tipe record menentukan jumlah field atau atribut. Kolom suatu tabel
berhubungan dengan atribut tipe record.
Model data relasional adalah model data yang peling banyak digunakan dan sebagian besar Sistem
basisdata yang ada sekarang didasarkan pada model relasional.
Model relasional terletak pada tingkatan abstraksi lebih rendah dari pada model ER. Perancangan
basisdata sering dilaksanakan dalam model ER lalu diubah ke model relasional. Sebagai contoh, kita
melihat bahwa tabel mahasiswa dan matakuliah berhubungan dengan kumpulan entitas bernama sama,
sementara tabel berhubungan dengan kumpulan relasi.
Pemetaan kardinalitas menyatakan jumlah entitas di mana entitas lain dapat dihubungkan ke entitas
tersebut melalui sebuah himpunan relasi.
Pemetaan kardinalitas sangat berguna dalam menentukan himpunan relasi biner meskipun pemetaan
dapat berperan dalam deskripsi himpunan relasi yang melibatkan lebih dari dua himpunan entitas.
Untuk suatu himpuan relasi biner R antara himpunan entitas A dan B, pemetaan kardinalitas harus
salah satu dari berikut :
One-to-One, sebuah entitas pada A berhubungan dengan paling banyak satu entitas pada B dan
sebuah entitas pada B berhubungan dengan paling banyak satu entitas pada A
A B
A1 B1
A2 B2
A3 B3
A4 B4
Contoh :
Aturan bisnis :
a) Pada pengajaran privat, satu guru satu siswa.
b) Seorang guru mengajar seorang siswa, seorang siswa diajar oleh seorang guru.
One-to-Many, sebuah entitas pada A berhubungan dengan nol atau lebih entitas pada B.
sebuah entitas pada B dapat dihubungkan dengan paling banyak satu entitas pada A.
A B
B1
A1
B2
A2 B3
A3 B4
B5
Contoh :
Aturan bisnis :
a) Dalam suatu perusahaan, satu bagian mempekerjakan banyak pegawai.
b) Satu bagian mempekerjakan banyak pegai, satu pegawai kerja dalam satu bagian.
BAGIAN M PEGAWAI
1 mempekerjakan
Many-to-One, sebuah entitas pada A berhubungan dengan paling banyak satu entitas pada B
dapat dihubungkan dengan nol atau lebih entitas pada A.
A B
A1
B1
A2
A3 B2
A4 B3
A5
Contoh :
Aturan bisnis :
a) Dalam suatu perusahaan, banyak pegawai dipekerjakan pada satu bagian.
b) Banyak pegawai dipekerjakan pada satu bagian, satu pegawai bekerja dalam satu bagian.
Many-to-Many, sebuah entitas pada A berhubungan dengan nol atau lebih entitas pada B dan
sebuah entitas pada B dapat dihubungkan nol atau lebih entitas pada A
A B
A1 B1
A2 B2
A3 B3
A4 B4
Contoh :
Aturan bisinis :
a) Dalam universitas, seorang mahasiswa dapatt mengambil banyak mata kuliah.
b) Satu mahasiswa mengambil banyak banyak matakulaih dan satu matakuliah diambil banyak
mahasiswa.
MAHASISWA M N MATAKULIAH
mengambil
Pemetaan kardinalitas yang sesuai untuk himpunan relasi tertentu tergantung pada situasi dunia nyata.
Sebagai gambaran, kita mengambil contoh himpunan relasi pepinjam. Jika pada suatu bank, pinjaman
dapat dimiliki oleh hanya satu nasabah dan seorang nasabah dapat mempunyai beberapa pinjaman,
maka himpunan relasi nasabah pinjaman adalah one-to-many. Jika sebuah pinjaman dapat dimiliki
oleh beberapa nasabah, himpunan relasinya adalah many-to-many.
Partisipasi sebuah himpunan entitas E pada himpunan relasi R dikatakan total jika setiap entitas pada
E berpartisipasi pada setidaknya satu relasi pada R. jika hanya beberapa entitas pada E berpartisipasi
pada relasi di R, partiisipasi himpunan entitas E pada relasi R disebut parsial. Misalnya, kita
mengharapkan setiap entitas pinjaman direlasikan ke setidaknya satu nasabh melalui relasi pinjaman.
Oleh karena itu, partisipasi pinjaman pada himpunan relasi peminjam adalah total. Sebaliknya,
seseorang dapat menjadi nasabah sebuah bank, baik dia mempunyai pinjaman pada bank maupun
tidak. Oleh karena itu, hanya beberapa entitas nasabah dihubungkan ke himpunan entitas pinjaman
melalui relasi peminjam dan partisipasi nasabah pada himpunan relasi peminjam adalah parsial
3.3 Membuat ERD
Entity Relationship Diagram adalah alat pemodelan data utama dan akan membantu mengorganisasi
data dalam suatu proyek ke dalam entitas-entitas dan menentukan hubungan antarentitas. Proses
memungkinkan analis menghasilkan struktur basisdata yang baik sehingga data dapat disimpan dan
diambil secara efisien (www.infocom.cqu.au).
1. Menentukan Entitas
Entitas pada sistem adalah Bagian, Pegawai, Pengawas, dan Proyek. Entitas perusahaan tidak
termasuk dalam sistem karena dia hanya memiliki satu instansi. Entitas yang benar harus mempunyai
lebih dari satu instansi.
2. Menentukan Relasi
Supervisor Menjalankan
Project Menggunakan
Kita menghubungkan entitas yang mempunyai relasi seperti yang ditunjukkan pada matriks relasi
entitas.
Bagian Pengawas
dijalankan
Ditugaskan
ke
Pegawai
Proyek
Bekerja
pada
4. Mengisi Kadinalitas
Dari deskripsi permasalahan, kita mengetahui bahwa:
Masing-masing bagian hanya mempunyai satu pengawas.
Seorang pengawas hanya bertugas pada satu bagian.
Masing-masing bagian memilki paling tidak satu pegawai.
Masing-masing pagawai bekerja paling tidak pada satu bagian.
Bagian Pengawas
dijalankan
Ditugaskan
ke
Pegawai
Proyek
Bekerja
pada
Kunci utamanya adalah Nama Bagian, Nomor Pengawas, Nomor Pegawai, dan nomor Proyek.
Ada dua relasi many-to-many pada ERD sementara, yaitu antara bagian dan pegawai serta antara
pegawai dan proyek. Oleh karena itu, kita harus membuat entitas baru bagian-pegawai dan pegawai-
proyek. Kunci utama Bagian-pegawai adalah gabungan Nama Bagian dan Nomr Pegawai. Kunci
utama Pegawai-Proyek adalah gabungan Nomor Pegawai dan Nomor Proyek.
Bab 4
NORMALISASI
4.1Pendahuluan
Normalisasi adalah teknik perancangan yang banyak digunakan sebagai pemandu dalam merancang
basisdata relasional. Pada dasarnya, normalisasi adalah proses dua langkah yang meletakkan data
dalam bentuk tabulasi dengan menghilangkan kelompok berulang lalu menghilangkan data yang
terduplikasi dari tabel relasioanl (www.utexas.edu).
Teori normalisasi didasarkan pada konsep bentuk normal. Sebuah tabel relasional dikatan berada pada
bentuk normal tertentu jika tabel memenuhi himpunan batasan tertentu. Ada lima bentuk normal yang
telah ditemukan
.
4.2Konsep Dasar
Normalisasi adalah bagaian perancangan basisdata. Tanap normalisasi, Sistem basisdata menjadi
tidak akurat, lambat, tidak efisien, serta tidak memberikan data yang diharapkan (www.microsoft-
accesssolutions.co.uk)
Pada waktu menormalisasi basisdata, ada empat tujuan yang harus dicapai, yaitu :
3. Membuat basisdata yang datanya diakses dan dimanipulasi secara cepat dan efisien tanpa
melupakan integritas data.
4. Mengatur data sedemikian rupa sehingga kita memodifikasi data, Anda hanya mengubah
pada satu tempat.
Perancangan basisdata terkadang menyebut keempat tujuan dengan istilah integritas data,
integritas refernsial, dan pengaksesan data.
Tujuan normalisasi adalah membuat kumpulan tabel relasional yang bebas dari tujuan data
berulang dan dapat dimodifikasi secara benar dan konnisten. Ini berarti bahwa semua tabel pada
basisdata relasional berada pada 3NF jika dan hanya jika hanya semua kolom bukan kunci adalah
(a) saling independen berarti bahwa sepenuhnya tergantung pada kunci utama. Saling independen
berarti bahwa tidak ada kolom bukan kunci yang tergantung pada sembarang kombinasi kolom
lainnya. Dua bentuk normal pertama adalah langkah antara untuk mencapai tujuan, yaitu
mempunyai semua tabel dalam 3 NF (Stephens and Plew,2000).
2. Hilangkan data berulang-jika sebuah atribut hanya tergantung pada sebagian kunci utama
gabungan, pindahkan atribut ke tabel lain.
3. Hilangkan kolom yang tidak tergantung pada kunci-jika atribut tidak tergantung pada kunci,
pindahkan atribut ke tabel lain.
4. Pisahkan relasi majemuk-tidak ada tabel yang bisa mengandung dua atau lebih relasi 1:n atau
n:m yang tidak berhubungan langsung.
5. Pisahkan relasi majemuk yang berhubungan secara semantic-ada batasan pada informasi
yang memperbolehkan pemisahan relasi many-to-many yang berhubungan secara lagis.
Konsep ketergantungan fungsional adalah dasar untuk tiga bentuk normal pertama. Sebuah kolom
y suatu tabel relasional R dikatakan tergantung secara fungsional pada kolom x jika dan hanya jika
setiap nilai x pada R berhubungan dengan tepat satu nilai y pada suatu saat tertentu. X dan y bisa
berupa gabungan dengan mengatakan bahwa kolom y tergantung secara fungsional pada x sama
dengan mengatkan bahwa nilai kolom x menentukan nilai kolom y. jika kolom x adalah kunci
utama, maka semua kolom pada tabel relasional R harus tergantung secara fungsional pada x.
Notasi ketergantungan fungsional adalah :
Notasi dapat dibaca pada tabel relasional bernama R, kolom x secara fungsional menentukan
kolom y.
Ketergantungan fungsional penuh diterapkan pada tabel dengan kunci gabungan. Kolom y pada
tabel relasional R tergantung sepenuhnya pada x jika kolom y tergantung secara fungsional pada x
dan tidak tergantung secara fungsional pada himpunan bagian dari x. fungsional penuh berarti
bahwa ketika sebuah kunci utama adalah gabungan, yaitu terbentuk dari dua atau lbih kolom, maka
kolom lainnya harus ditentukan oleh seluruh kolom yang membentuk kunci utama dan tidak hanya
beberapa kolom.
Secara sederhana, kita dapat mengatkan bahwa normalisasi adalah proses menghilangkan data
berulang dari tabel relasional dengan memecah tabel relasional menjadi tabel-tabel yang lebih
kecil. Tujuannya adalah agar hanya mempunyai kunci utama pada sebelah kiri ketergantungan
fungsional. Supaya benar, pemecahan tabel haruslah lossless. Ini berarti tabel-tabel baru dapat
digabungkan kembali dengan natural join agar menghasilkan tabel asli tanpa membentuk data
berulang.
Contoh yang kita gunakan di sini adalah sebuah perusahaan yang mendapatkan barang dari
sejumlah pemasok. Masing-masing pemasok berada pada satu kota. Sebuah kota dapat mempunyai
lebih dari satu pemasok dan masing-masing kota mempunyai kode status tersendiri. Masing-
masing pemasok menyediakan banyak barang. Tabel relasionalnya dapat dituliskan sabagai berikut
:
PEMASOK (p#, status, kota, b#,qty) di mana
P# : kode pemasok (kunci utama)
Status : kode status kota
Kota : nama kota
B# : barang yang dipasok
Qty : jumlah barang yang dipasok
Supaya bisa menggabungkan jumlah barang yang dipasok (qty) secara unit dengan barang (b#) dan
pemasok (p#), kita menggunakan kunci utama gabungan yang tersusun dari b# dan p#.
Sebuah tabel relasional secara definisi selalu berada dalam bentuk normal pertama. Semua nilai pada
kolomnya-kolomnya adalah atomic. Ini berarti kolom-kolom tidak mempunyai nilai berulang.
PEMASOK
P# Status Kota b# Qtp
P1 20 Yokyakarta B1 300
P1 20 Yokyakarta B2 200
P1 20 Yokyakarta B3 400
P1 20 Yokyakarta B4 200
P1 20 Yokyakarta B5 100
P1 20 Yogyakarta B6 100
P2 10 Medan B1 300
P2 10 Medan B2 400
P3 10 Medan B2 200
P4 20 Yokyakarta B2 200
P4 20 Yokyarta B5 300
P4 20 Yogyakarta B5 400
Meskipun berada pada 1 NF, tabel pemasok mengandung data berulang. Sebagai contoh, informasi
tentang lokasi pemasok dan status lokasi harus diulang untuk setiap barang yang dipasok. Perulangan
menyebabkan apa yang disebut update anomalies. Updata anomalies adalah masalah yang timbul
ketika informasi ditambahkan, dihapus, atau diupdate. Sebagai contoh, anomaly berikut dapat terjadi
pada tabel pemasok :
1. INSERT. Fakta bahwa pemasok tertentu (p5) berlokasi pada kota tertentu (bandung) tidak dapat
ditambahkan hingga mereka memasok barang.
2. DELETE. Jika sebuah baris dihapus, maka yang hilanya tidak hanya informasi tentang barang dan
jumlahnya, tetapi juga informasi tentang pemasok.
3. UPDATE. Jika pemasok p1 pindah dari Yogyakarta ke Jakarta, maka enam baris harus di-update
karena adanya perubahan.
P# kota, status
Kota status
(p#, b#) qty
2. Buat dan beri nama tabel baru untuk masing-masing penentu dan kolom-kolom yang
ditentukannya.
3. Pindahkan kolom-kolom yang ditentukan daritabel asal ke tabel baru. Penentu akan menjadi
kunci utama pada tabel.
4. Hapus kolom yang baru dipindahkan dari tabel asal, kecuali penentu yang akan menjadi kunci
utama pada tabel.
Pada contoh, kita memindahkan kolom p#, status, dan kota ke tabel baru yang disebut PEMASOK2,
kolom p# menjadi kunci utama tabel ini. Gambar 4.2
PEMASOK2
P# Status Kota
P1 20 Yogyakarta
P2 10 Medan
P3 10 Meda
P4 20 Yogkarta
P5 30 Bandung
BARANG
P# B# Qty
P1 B1 300
P1 B2 200
P1 B3 400
P1 B4 200
P1 B5 100
P1 B6 100
P2 B1 300
P2 B2 400
P3 B2 200
P4 B2 200
P4 B2 300
P4 B5 400
2. DELETE. Menghapus sembarang baris pada PEMASOK2 akan menghilangkan informasi status
tentang kota tersebut serta hubungan antara pemasok dan kota.
PEMASOK2.P# PEMASOK2.status
PEMASOK2.p# PEMASOK2.kota
PEMASOK2.kota PEMASOK2.status
Perlu dicatat bahwa PEMASOK2. Statuts ditentukan, baik oleh kunci utama, p#, maupun kolom bukan
kunci utama, kota.
Proses mengubah tabel 3NF adalah:
1. Tentukan semua penentu selain kunci utama dan kolom yang ditentukannya.
2. Buat dan beri nama tabel baru untuk masing-masing penentu dan kolom yang ditentukannya.
3. Pendahkan kolom yang ditentukan dari tabel asal ke tabel baru. Penentu menjadi kunci
utama tabel baru.
4. Hapus kolom yang baru saja dipindahkan dari tabel asal, kecuali penentu yang akan berfungsi
sebagai kunci utama.
Untuk mengubak PEMASOK2 menjadi 3NF, kita membuat tabel baru yang disebut KOTA-STATUS
dan memindahkan kolom kota dan status ke tabel baru. Status dihapus dari tabel asal, kota tetap
dibiarakan karena akan berfungsi sebagai kunci asing bagi KOTA_STATUS, dan tabel asal diberi
nama baru PEMASOK _KOTA. Gambar 4.3 menunjukkan hasilnya.
PEMASOK KOTA
P# Kota
P1 Yogyakarta
P2 Medan
P3 Meda
P4 Yogkarta
P5 Bandung
KOTA_STATUS
KOTA Status
Yogyakarta 20
Medan 10
Bandung 30
Semarang 40
Perubahan ke 3NF menghasilkan tiga tabel dan dapat dinyatakan dalam pseudoSQLsebagai berikut :
BARANG (b#,b#, qty)
Kunci utama (p#, b#)
Foreign Key (p#) references PEMASOK_KOTA .p#
PEMAOK_KOTA (p#, kota)
Kunci utama (p#)
Foreign Key (p#) references PEMASOK_KOTA . kota
KOTA_STATUS (kota, status)
Kunci utama (kota)
Keuntungan bentuk normal ketiga adalah menghilngkan data berulang sehingga akan menghemat
ruang dan mengulangi anomali.
Sebagai contoh, peningkatan pada contoh tebel di atas adalah :
1. INSERT. Fakta tentang status sebuah kota, semarang mempunyai status 40, dapat
ditambahkan meskipun mereka belum memasok barang.
2. DELETE. Informasi tentang barang yang dipasok dapat dihapus tanpa menghilangkan
informasi tentang pemasok atau kota.
3. UPDATE. Perubahan lokasi pemasok atau status suatu kota hanya membutuhkan
modifikasi satu baris.
Setelah 3NF, semua masalah normalisasi hanya melibatkan tabel yang mempunyai tiga kolom atau
lebih dan semua kolom adalah kunci. Banyak praktisi berpendapat bahwa menempatkan entitas pada
3NF sedah culup karena sangat jarang entitas yang berada pada entitas 3NF bukan merupakan 4NF
dan 5NF. Lebih lanjut, mereka berpendapat bahwa keuntungan yang didapat dari mengubah entitas ke
4NF dan 5NF sangat kecil sehingga tidak perlu dikerjakan.
Bentuk Normal Boyce-Code (BCNF) adalah versi 3NF yang lebih teliti dan berhubungan dengan tabel
relasional yang mempunyai (a) banyak kunci kandidat, (b) kunci kandidat gabungan, dan (c) kunci
kandidat yang saling tumpang tindih.
BCNF didasarkan pada konsep penentu. Sebuah kolom penentu adalah kolom di mana kolom-kolom
lain sepenuhnya tergantung secara fungsional. Sebuah tabel relasional berada pada BCNF jika dan
hanya jika setiap penentu adalah kunci kandidat.
Sebuah tabel relasional pada normal keempat (4NF) jika dia dalam BNCF dan sebuah ketergantungan
mulitivalue merupakan ketergantungan fungsional.
Bentuk normal kempat (4NF) didasarkan pada konsep ketergantungan mulitivalue (MVD). Sebuah
ketegantungan multivalue terjadi ketika dalam sebuah tabel relasional yang mengandung setidaknya
tiga kolom, satu kolom mempunyai banyak baris bernilai sama, tetapi kolom lain bernilai berbeda.
Definisi secara formal diberikan oleh C.J Date, yaitu :
Misalnya, ada sebuah tabel relasional R dengan kolom A, B, dan C, maka R.A R.B
dipenuhi jika dan hanya jika R.A R.C dipenuhi pula.
Adalah benar jika dan hanya jika himpunan nilai B yang cocok dengan pasangan nilai A dan
Nilai C pada R hanya tergatung pada nilai A dan tidak tergantung pada nilai C.
MVD selalu terjadi dalam pasangan, yaitu R.A R.B dipenuhi jika dan hanya jika R.A R.C
dipenuhi pula.
Misalnya, pegawai ditugaskan ke banyak proyek dan ia mempunyai banyak keahlian. Jika kita
mencatat informasi ini pada satu tabel, ketiga atribut harus digunakan sebagai kunci karena tidak ada
satu atribut pun yang dapat secara unti mengindentifikasikan sebuah record.
Hubungan antara peg# dan pry# merupakan ketergantungan multivalue karena untuk setiap pasangan
nilai peg#/ahli pada tabel, himpunan nilai pry# yang berhubungan hanya ditentukan oleh peg# dan
tidak tergantung pada ahli. Hubungan antara peg# dan ahli merupakan ketergantungan multivalue
karena himpunan nilai ahli untuk pasangan peg#/pry# selalu hanya tergantung pada peg#.
Untuk mengubah sebuah tabel dengan ketergantungan multivalue ke dalam 4NF, pindahkan masing-
masing pasangan MVD ke tabel baru. Gamabar 4.4 menunjukkan hasilnya.
PEGAWAI PROYEK
Peg# Pry#
1211 p1
211 p3
PEGAWAI AHLI
peg# Ahli
1211 Analisis
1211 Perancangan
1211 Pemrograman
Kemudian, kita menambahkan data pegawai (1544) yang menggunakan keahlian pemrograman pada
proyek 11.
Kemudian, kita dekomposisi tabel menjadi dua tabel seperti yang dilakukan sebelumnya. Ketika kita
menggabungkan kembali, tabel hasil gabungan mengandung data yang salah.
Dengan menambah datu data baru ke tabel yang bukan 5NF, ada dua pernyataan yang salah, yaitu :
Pernyataan pertama :
Pegawai 1211 telah ditugaskan ke proyek 11.
Oleh karena itu, pegawai 1211 harus menggunakan keahlian pemrograman ketika ditugaskan
ke proyek 11.
Pernyataan kedua :
Pegawai 1544 telah ditugaskan ke proyek 11
Oleh kerana itu, pegawai 1544 harus menggunakan keahlian perancangan dalam proyek 11.
Bab 5
PENERAPAN KEAMANAN BASISDATA
Supaya basisdata yang kita rancang mendung perusahaan mencapai tujuannya, basisdata harus bisa
diakses dan diUpdate oleh pengguna. DBA dan pembuat aplikasi harus member pengguna akses
kebasisdata yang mereka butuhkan dalam menyelasikan pekerjaan, sembari meminimalkan kerusakan
yang dapat pengguna lakukan pada Sistem dan menyembunyikan data yang tidak boleh mereka lihat.
Pelanggan
Manajemen
Administrator jaringan
Administrator Sistem
Administrator basisdata
Pemilik skema
Masing-masing pengguna memiliki tingkatan akses berbeda. Cara termudah menerapkan keamanan
adalah member semua pengguna akses maksimum, tetapi kelemahannya adalah adanya kemungkinan
kehilangan atau penyalagunaan data. Pengguna basisdata harus mempunyai akses yang cukup untuk
melaksanakan pekerjaannya. Dengan kata lain, akses yang diberikan kepada pengguna harus sekecil
mungkin untuk menghindari masalah.
Beberapa informasi bisa merupakan informasi rahasia atau sensitive. Jika ada data sensitif, sebaiknya
data diisolokasi dengan memecahnya menjadi tabel terpisah yang dapat dihubungkan dengan tabel-
tabel tidak sensitive atau dengan membuat view yang tidak memasukkan data sensitive. Pengguna
yang ingin melihat semua data akan diberi akses untuk suatu tabel dan pengguna yang tidak
mempunyai akses hanya diberi hak untuk melihat view.
Ketika hak akses pengguna pada suatu data ditentukan, tipe akses pun harus ditentukan. Secara
umum, data dapat dibuat, diambil, di-update dan dihapus dari basisdata. Beberapa pengguna mungkin
ingin melekukan semua operasi pada basisdata. Pengguna lainnya mungkin hanya ingin melakukan
query pada basisdata atau meng-update data tabel tertentu dalam basisdata. Pengguna tertentu tidak
diperbolehkan untuk menghapus data.
Pengguna basisdata diberi identitas pengguna dengan password dan kemampuan untuk berhubungan
dengan basisdata. Mebisdata modern membutuhkan keputusan tentang perncangan yang berhubungan
dengan identitas pengguna dan password. Keamanan digunakan untuk mengontrol akses. Pengguna
mempunyai akses, baik ke data maupun ke sumber data. Keduanya dapat dikontrol pada tingkatan
basisdata.
Apabila pengguna diberi identitas pengguna, mereka dapat mengakses basisdata secara langsung ke
dalam jaringan melalui aplikasi client-server. Mereka dapat pula login melalui aplikasi middle tier
untuk mengakses basisdata. Sebagai contoh, pengguna dapat login ke server aplikasi. kemudian, server
aplikasi web berkomunikasi dengan basisdata dengan cara login menggunakan identitas pengguna
yang mempunyai akses minimum yang dibutuhkan untuk menyelesaikan pekerjaan. Apkasi client
server umumnya hanya mempunyai satu identitas pengguna untuk masing-masing pengguna. Aplikasi
web yang menggunakan server aplikasi web middle tier dapat menggunakan satu atau beberapa
pengguna basisdata. Pada kedua kasus, bagian perancangan basisdata adalah menentukan kombinasi
privilege Create, Retrieve, Update, dan Delete (CRUD atau INSERT, SELECT, UPDATE, DELETE
dalam SQL). Masing-masing kombinasi privielege yang dibutuhkan untuk menyelasaikan pekerjaan
tertentu harus dan dianalisis untuk memastikan bahwa akses yang diberikan tidak melebihi yang
dibutuhkan.
Pada beberapa basisdata, pengguna dapat login ke basisdata berdasarkan otoritas eksternal. Pada
otoritas eksternal, pengguna mempunyai ID pengguna pada Sistem operasi yang dibuat pada Linux,
Novel, atau NT untuk basisdata. Pengguna yang mempunyai identitas Sistem operasi merupakan
pengguna basisdata yang diatur untuk otorisasi eksternal. Dengan menggunakan otorisasi eksternal,
pengguna Sistem operasi yang login ke Sistem operasi dan baisdata yang diatur untuk otorisasi
eksternal adalah DBA atau account basisdata yang menjalankan program eksternal seperti program
C++ yang mengakses basisdata.
Sistem administrasi Sistem operasi (SA)(root pada Unix, Admin pada Novel) dapat mengontrol
account Sistem operasi dan account basisdata. Sistem adminitrasi maupun Sistem administrator
Basisdata mempunyai potensi melakukan kesalahan. Bagian proses adalah cek and balance untuk
mematikan bahwa yang super tidak disalahgunakan.
Berikut adalah daftar yang menunjukkan tingkatan akses ke sata Sistem informasi :
Pengguna Super (root pada Unix, Admin pada Novell)
Pemilik Basisdata
Pemilik Skema
Pengguna Akhir
Pengguna super adalah account pada Sistem operasi yang mempunyai privilege paling banyak.
Pengguna super memilki akses ke semua file yang disimpan pada Sistem. Pemilik basisdata memiliki
akses ke semua file yang berhubungan dengan software basisdata dan file data pada suatu Sistem.
Meskipun pemilik basisdata dibatasi pada file-file yang berhubungan dengan basisdata, tetapi kita
perlu mengingat bahwa sebagian file pada sebagian Sistem berhubungan dengan basisdata. Pemiliki
skema adalah membuat dan pemilik objek-objek basisdata yang digunakan untuk aplikasi pengguna.
Pemilik skema mempunyai akses tak terbatas ke seluruh objek skema dan bertanggung jawab
mengontrol akses ke account pengguna lainnya. Pengguna akhir mempunyai akses paling sedikit
meskipun basisdata dibust untuk pengguna akhir.
Gambar 5.1 menunjukkan hubungan pengguna dengan basisdata. Objek-objek basisdata dimiliki oleh
skema yang member akses terhadap objek kepada pengguna akhir. Jika pengguna akhir mempunyai
privilege yang cukup, mereka dapat mengakses tabel, view dan objek lainnya di dalam skema.
Pemilik Skema
Ke Pengguna PENGGUNA1
Query PENGGUNA2
TABEL TABEL
1 3 Membuat
Update data
Hapus data
Skema
PENGGUNA3
PENGGUNA4
VIEW1 VIEW2
Pengguna dalam suatu basisdata dapat pula mengakses basisdata lainnya dengan menghubungkan dua
basisdata. Hubungan keduanya akan menghubungkan pengguna pada basisdata pertama ke pengguna
pada basisdata kedua. Kemudian, pengguna pada basisdata pertama dapat mengakses basisdata kedua
dengan privilege yang dimiliki pengguna, tetapi harus diatur untuk memastikan tool tidak
disalahgunakan.
5.2.2 Privilege
Privilege digunakan untuk mengontrol akses pengguna. Privilege terdapat pada tingkatan Sistem
operasi, basisdata, dan aplikasi. priveliege basisdata mengontrol akses pengguna dalam lingkungan
basisdata seperti manipulasi struktur basisdata dan akses ke objek skema. Ada dua tipe dasar privilege
dalam basisdata relasional, yaitu :
Privilege Sistem
Privilege objek
Privilege Sistem terdiri atas hal-hal yang memungkinkan pengguna melakukan tugasnya pada ruang
lingkup basisdata, sedangkan privilege objek memungkinkan pengguna melakukan tugasnya pada
ruang lingkup skema. Privilege Sistem meliputi kemampuan membuat tabel, menghapus tabel,
mengubah struktur tabel, membuat indeks dan view, dan memanipulasi account pengguna. Privilege
objek meliputi kemampuan mengambil data dari tabel dan memanipulasi data tabel. Privilege Sistem
berbeda-beda antara satu perangkat lunak basisdata relasional dengan yang lainya. Sebaliknya,
privilege objek lebih standar.
Berikut adalah privilege objek untuk basisdata relasional :
SELECT memungkinkan data diambil daritable.
UPDATE memungkinkan data yang sudah ada dalam tabel untuk dimodifikasi.
REFERENCES memungkinkan kolom dalam tabel untuk diacu kolom lain (seperti melalui
kunci utama).
Privilege di-grant kepada pengguna degan perintah GRANT dan dicabut dari pengguna dengan
perintah REVOKE. Dua pilah dapat digunakan dengan perintah GRANT agar pengguna lain dapat
memberikan grant pada pengguna lainnya. Jika seorang pengguna di-grant privilege objek dengan
WITH GRANT OPTION, dia diberi hak akses khusus ke objek basisdata kepada pengguna lain
meskipun pengguna asli tidak mempunyai objek. Demikian pula, WITH ADMIN OPTION dapat
ditambahkan pada perintah GRANT yang berhubungan dengan privilege Sistem dan memungkinkan
seorang pengguna untuk meng-grant privilege Sistem ke pengguna lain.
Gambar 5.2 mengilustrasikan proses pengaturan akses pengguna akhir melalui privilege basisdata.
Dua tipe privilege ditunjukkan pada gambar, yaitu privilege objek dan privilege Sistem. Pemilik
skema bertanggung jawab menggrant privilege objek kepada pengguna dan DBA meng-grant privilege
Sistem.
Grant pada ke
Grant TABEL1
ke PENGGUNA1
SELECT TABEL2
Pemilik Skema INSERT VIEW1
UPDATE VIEW2
DELETE
PENGGUNA2
CREATE PENGGUNA3
Pemilik Skema TABEL
CREATE
INDEX
CREATE VIEW
PENGGUNA4
Gambar 5.2 Proses pengaturan akses pengguna akhir melalui privilege basisdata
5.2.3 Role
Kombinasi privilege basisdata dan privilege tabel CRUD yang diperlukan untuk menyelesaikan
pekerjaan tetentu dapat diberikan pada pengguna secara individu. Namun, hal ini tidak efektif. Sebagai
bagian perancangan, kita bisa menentukan fungsi pekerjaan yang ada pada aplikasi kita dan privilege
yang ada pada basisdata, tabel-tabelnya, dan objek-objek basisdata lain yang dibutuhkan oleh masing-
masing fungsi pekerjaan. Kemudian, kita bisa membuat objek basisdata yang disebut role. Role
mengikutsertakan seluruh privilege yang dibutuhkan untuk menyelesaikan fungsi pekerjaan.
Lebih lanjut, pengguna di-grant satu atu lebih role. Identitas pengguna digrant pada role yang
dibutuhkan untuk menyelesaikan semua fungsi yang berhak dilakukan oleh pengguna tertentu. Sebagai
tambahan pada SELECT, INSERT, UPDATE, atau DELETE, role bisa pula memasukkan privilege
melalui kunci tamu, atau mengekseskusinya. Menggunakan role akan menyederhanakan pengaturan
akses basisdata dan pengaturan privilege objek basisdata.
membuat
Grant pada ke DBA
TABEL1
SELECT TABEL2
Pemilik Skema INSERT VIEW1
UPDATE
VIEW2
DELETE
Grant
CREATE APP_ROLE
Pemilik Skema TABEL 1
CREATE
INDEX
CREATE VIEW
PENGGUNA PENGGUNA
1 3
PENGGUNA PENGGUNA
2 4
Gambar 5.3 mengilustrasikan pemakaian role basisdata. Terlebih dahulu, DBA membuat role. Ketika
dibuat, role merupakan objek kosong yang ahnya mempunyai nama. Role dapat di-grant ke pengguna
setiap saat setelah dia mempunyai nama.role dapat di-grant ke role terlebih dahulu. Privilege objek
dapat di-grant oleh role ke pemilik skema dan privilege Sistem dapat di-grant oleh DBA. Role dapat
disebut kumpulan privilege yang dapat di-grantdan dicabut dengan mudah pada pengguna basisdata.
Soerang pengguna dapat di-grant satu banyak role, tergantung pada pembagian privilege untuk suatu
aplikasi dan tibgkatan akses pengguna. Ketika login ke basisdata, pengguna mempunyai semua
privilege yang terkandung pada role yang telah di-grant pada role.
Tingkat akses penguna dikontrol oleh administrator Sistem operasi, administrator basisdata, dan
administrator aplikasi. pengguna akhir harus login ke Sistem operasi untuk mengakses aplikasi, yang
selanjutnya mengakses basisdata. Aplikasi maupun basisdata terletak pada lingkungan sistemoperasi.
Namun, sekarang sebagian besar pengguna melewati olentifikasi Sistem operasi dan langsung menuju
basisdata dari aplikasi yang diinstal pada PC atau melalui web browser pada PC.
Tingkatan akses yang berbeda dapat di-grant, tergantung pada kebutuhan pengguna akhir. Sebagian
besar pengguna harus berurusan dengan kombinasi otentifikasi basisdata dan aplikasi. misalnya,
seorang pengguna mengakses basisdata memalului aplikasi Visual Basic di instal pada PC. Dia dapat
diberi akses ke basisdata ynag di-grant oleh pemilik skema. Aplikasi tergantung pada privilege yang
telah diberikan pada pengguna dalam basisdata. Jika otentifikasi penggunan ditangai pada tngkatan
aplikasi, keamanan pada aplikasi lemah dan merupakan perancangan yang butuk. Oleh karena itu,
otentifikasi pengguna harus ditangani pada tingkat basisdata dengan menggunakan privilege dan role.
Keamanan pada palikasi adalah tambahan dan hanya dugunaan untuk meningkatkan keamanan
basisdata.
Account yang dimiliki oleh Sistem operasi akan dibuat untuk file-file basisdata. Orang yang
mempunyai account semacam itu dapat melakukan kesalahan yang sama seperti yang dilakukan oleh
administrator Sistem dengan menghapus, menimpa file basisdata, atau menyalin data secara tidak
tepat.
Pada lingkungan Unix, privilege file basisdata pada Sistem operasi adalah masalah keamanan utama
dan harus dimonitorkan secaraketat. Pada Unix, account pengguna Sistem yang merupakan pemilik
basisdata harus dapat membaca, menulis, dan mengeksekusi semua file basisdata. Pada lingkungan
Windows NT, account administrator akam mempunyai Full Control, sementara pengguna local
membutuhkan akses Read untuk mengeksekusi program dalam basisdata seperti SQL.
Pengguna selain pemilik basisdata seharusnya hanya mempunyai privilege terbatas untuk menghindari
kemungkinan perubahan atau penghapusan file. Pastikan bahwa privile untuk akses file pada tingkat
Sistem operasi diset secara benar, yaitu tidak ada privilege lain yang diberikan selain yang
dibutuhkan.
Keamanan fisik basisdata adalah masalah vital. Ruangan komuter dengan akses terbatas dan kunci
yang baik sangat dibutuhkan. Penjaga dan Sistem keamanan dapat pula disertakan, tergantung pada
tingkat kepentingan data. Hal yang sama bisa dilakukan pada server web atau server aplikasi dan
komponen jaringan utama seperti hub dan router. Sistem backup dengan tape yang disimpan ditempat
lain diperlukan jika keamanan fisik tidak berjalan dengan baik.
5.3.2 Pengaturan tingkat Basisdata
DBA mengontrol dan mengatur basisdata. Pada analisis terhadap akhir, DBA dapat melakukan apa
pun yang ingin dilakukan. DBA pun bertanggung jawab , memastikan bahwa basisdata mempunyai
memori dan ruang disk yang cukupp dan dikonfigurasi secara besar. DBA mengotrol keamanan
basisdata meskipun DBA dapat melimpahkan tugas pengamanan pada orang lain. Sebaliknya, pemilik
tabel dan objek basisdata lainnya mempunyai control langsung pada siaa yang dapat mengakses objek-
objek.
DBA meirip dengan polisi. Dia mempunyai keuasaan besar dan melaakukan banyak hal termasuk
menyediakan infrastruktur dan lingkungan keamanan, tetapi tidak berusaha mengontrol apa yang
terjadi pada lingkungan kecuali kalai ada masalah. Pekerjaan DBA yang pertama adalah mencegah
masalah dengan menyediakan semberdaya dan melaksanakan prosedur keamanan yang baik, dan yang
kedua adalah menyediakan masalah secara cepat ketika timbul masalah.
Kita harus ingat bahwa penting untuk membuat keamanan pada tingkat basisdata, tidak hanya
keamanan pada tingkat aplikasi. membuat role pengguna dalam basisdata lalu membagi kemampuan
mereka melalui keamanan aplikasi hanya bekerja untuk aplikasi tersebut.
internet
firewall
Gambar 5.4, Sebuah firewall pada umumnya, memisahkan jaringan internal dari internet
Firewall jaringan adalah kombinasi perangkat lunak dan perangkat keras yang bertujuan mengusir
hacker dari jaringan anda, tetapi mengizinkan orang-orang yang mempunyai akses. Firewall
menyaring paket data TCP/IP masuk dan keluar berdasarkan pada sumber dan tujuan alamt IP serta
fungsi pembawa paket data. Router jaringan mempunyai daftar alam IP sumber dan tujuan yang
diperkenangkan. Paket dengan alamat yang tidak ada dalam daftar tidak diperbolehkan masuk.
Jaringan utama Anda, di mana basisdata diletakkan, akan berada dibelakang firewall dengan daftar
alamat yang diperkenangkan yang sangat terbatas.
Pelanggaran tak disengaja dapat terjadi ketika secara tidak sengaja, memasuki layar dalam
aplikasi di mana pengguna tidak diperbolehkan mengaksesnya (administrator kadang-kadang
membuat kesalahan ketika menerapkan privilege). Pelanggaran dapat berasal dari luar
organisasi atau dalam perusahaan. Misalnya seorang pengguna mempunyai akses ke data
tertentu dan secara sengaja, membuat perubahan terhadapa data. Ini adalah sebuah contoh
pelanggaran. Contoh lainnya adalah usaha menyuap ke dalam sebuah basisdata.
Berikut adalah langkah-langkah proaktif yang dapat dilakukan untuk mencegah pelanggaran
keamanan :
Mengubah password adminitrasi secara teratur.
Mekanisme keamanan harus dilakukan pada tingkatan berikut tanpa mempengaruhi operasi bisnis
sehari-hari:
Keamanan internet (Web, WAN)
Keamanan basisdata
Bab 6
STRUCTURE QUERY LANGUAGE (SQL)
6.1 Pendahuluan
SQL adalah bahasa Komputer standar ANSI (amarican Natioan Standard Institute) untuk mengakses
dan memanipulasi Sistem basisdata. Pernyataan SQL digunakan untuk mengambil dan meng-update
data dalan basisdata. SQL bekerja dengan program basisdata peserti Ms Access, DB2, Informix, Ms
SQLServer, Oracle, Oracle, Sybase, dan sebagainya.
Tabel memilki empat record ( satu record untuk setiap orang) dan empat kolom (NamaDepan,
NamaBelakang, Alamat, dan kota).
6.4.1 Query
Dengan SQL, kita dapat melakukan query pada basisdata dan mendapatkan hasilnya. Contoh querty
sebagai berikut :
Select NamaDepan FROM pegawai
Hasilnya :
NamaDepan
Suwito
Diana
Hasan
Suardi
Sukma
Beberapa Sistem basisdata menggunakan titik koma pada akhir pernyataan SQL.
NamaDepan NamaBelakang
Suwito Ito
Diana Nuraini
Hasan Martono
Suardi Ibrahim
Sukma Wati
Untuk semilih semua kolom dari tabel pegawai gunakan symbol * seperti ini :
SELECT *
FROM pegawai
Hasilanya :
NamaDepan NamaBelakang Alamat Kota
Suwito Ito Sudiang Makassar
Diana Nuraini Jl.Perintis Kemardekaan Medan
Hasan Martono Jl.Diponegoro Makassar
Suardi Ibrahim Kl.Ir.Sutami Pinrang
Sukma Wati Jl.DR.Wahidin Gowa
6.5.1 Distinct
Untuk memilih hanya nilai yang berbeda, gunakan pernyataan SELECT DISTINCT.
Sintaks :
SELECT DISTINCT nama_kolom
FROM nama_tabel
Untuk memilih semua niali dari kolom, kita meneggunakan pernyataan SELECT seperti ini :
SELECT kota
FROM Pegawai
Hasilnya :
Kota
Makassar
Medan
Makassar
Pinrang
Gowa
Hasilnya memperlihatkan bahwa Yogyakarta muncul dau kali. Untuk memilih hanya nilai yang
berbeda dari kolom kota, gunakan pernyataan SELECT DISTINCT seperti ini:
SELECT DISTINCT kota
FROM Pegawai
Hasilnya :
Kota
Makassar
Pinrang
Gowa
Operator Keterangan
= Sama Dengan
<> Tidak sama dengan
> Lebih besar dari
< Lebih kecil dari
>= Lebih besar atau sama dengan
<= Lebih kecil atau sama dengan
Perlu diperhatikan bahwa kita menggunakan tanda petik tunggal pada contoh di atas. SQL
menggunakan tanda petik tunggal pada nilai teks, sedangkan nilai numeric tidak diberi tanda petik.
Untuk nilai teks :
A. Benar
B. Salah
Pernyataan SQL berikut akan menghasilkan nama pegawai yang mengandung pola di :
SELECT * FROM Pegawai
WHERE NamaDepan
LIKE %di%
Hasilnya :
Untuk memasukkan data hanya pada kolom tertentu, missal Joko dan Jl. Veteran 45, maka pernyataan
SQL-nya adalah :
INSERT INTO Pegawai (NamaDepan, alamat)
VALUE (Suwito , Sudiang )
Hasilnya :
Jika kita ingin mengubah alamat dan menambah nama kota untuk pegawai dengan nama depan joko,
pernyataan SQL-nya adalah :
UPDATE Pegawai
SET Alamat = jl.Makasar 8,
Kota =Makassar
WHERE NamaDepan = Joko
Hasilnya :
NamaDepan NamaBelakang Alamat Kota
Adi Nugroho Jl.Urip Sumoharjo Solo
Diana Nuraini Jl.Perintis Kemardekaan Medan
Hasan Martono Jl.Diponegoro Makassar
Suardi Ibrahim Kl.Ir.Sutami Pinrang
Sukma Wati Jl.DR.Wahidin Gowa
Kita dapat menghapus semua data pada tabel tanpa menghapus tabel.
DELETE FROM nama_tabel
Atau
DELETE * FROM nama_tabel
Jika kita ingin menampilkan nama pegawai dan kotanya berdasarkan urutan abjad, maka pernyataan
SQL-nya adalah :
SELECT * FROM Pegawai
ORDER BY NamaDepan, kota
Hasilnya :
NamaDepan NamaBelakang Alamat Kota
Adi Nugroho Jl.Urip Sumoharjo Solo
Diana Nuraini Jl.Perintis Kemardekaan Medan
Hasan Martono Jl.Diponegoro Makassar
Suardi Ibrahim Kl.Ir.Sutami Pinrang
Sukma Wati Jl.DR.Wahidin Gowa
Jika kita ingin menampilkan nama pegawai dengan urutan abjad terbalik, pernyataan SQL-nya adalah :
SELECT * FROM Pegawai
ORDER BY NamaDepan DESC
Hasilnya :
NamaDepan NamaBelakang Alamat Kota
Adi Nugroho Jl.Urip Sumoharjo Solo
Diana Nuraini Jl.Perintis Kemardekaan Medan
Hasan Martono Jl.Diponegoro Makassar
Suardi Ibrahim Kl.Ir.Sutami Pinrang
Sukma Wati Jl.DR.Wahidin Gowa
Pernyataan SQL untuk menampilkan nama pegawai berdasarkan urutan abjad terbalik dan nama kota
berdasarkan urutan abjad adalah :
SELECT * FROM Pegawai
ORDER BY NamaDepan DESC, Kota ASC
Hasilnya :
NamaDepan NamaBelakang Alamat Kota
Adi Nugroho Jl.Urip Sumoharjo Solo
Diana Nuraini Jl.Perintis Kemardekaan Medan
Hasan Martono Jl.Diponegoro Makassar
Suardi Ibrahim Kl.Ir.Sutami Pinrang
Sukma Wati Jl.DR.Wahidin Gowa
Pernyataan SQL untuk menampilan pegawai dengan nama depan Ita atau kota Makassar adalah:
SELECT * FROM Pegawai
WHERE NamaDepan=Ita OR
Kota=Yokyakarta
Hasilanya :
NamaDepan NamaBelakang Alamat Kota
Suardi Ibrahim Kl.Ir.Sutami Pinrang
Sukma Wati Jl.DR.Wahidin Gowa
6.8.2 Operator IN
Operator IN bisa digunakan jika mengetahui nilai pasti yang akan diambil untuk setidaknya satu
kolom.
Sintaks :
SELECT nam_kolom
FROM nama_tabel
WHERE nama_kolom
IN (nilai1, nilai2,)
Untuk menampilkan pegawai dengan nama depan Hasan atau Adi, gunakan pernyataan SQL berikut :
SELECT * FROM Pegawai
WHERE NamaDepan
IN (Hasan , Adi)
Hasilnya :
NamaDepan NamaBelakang Alamat Kota
Suardi Ibrahim Kl.Ir.Sutami Pinrang
Sukma Wati Jl.DR.Wahidin Gowa
Operator BETWEEN..AND diperlukan secara berbeda pada DMBS berbeda. Pada satu DBMS, data
pegawai yang dimunculkan adalah yang berada di antara Adi dan Ita, tetapi tidak dimunculkan. Pada
lain, pegawai yang dimunculkan termasuk Adi dan Ita. Kemudian, pada DBMS lainya, Adi
dimunculkan, tetapi Ita tidak.
Untuk menampilkan pegawai di luar jangkauan contoh, gunakan operator NOT seperti berikut :
SELECT * FROM Pegawai
WHERE NamaDepan
NOT BETWEEN Adi AND Ita
Hasilnya :
NamaDepan NamaBelakang Alamat Kota
Sukma Wati Jl.DR.Wahidin Gowa
6.8.4 ALIAS
Dengan SQL, ALIAS dapat digunakan untuk mengganti nama_kolom dan nama_tabel.
Sintaks untuk alias nama-kolom :
SELECT nama_kolom
AS nama_alias_kolom
FROM nama_tabel
Sintaks untuk alias nama tabel :
SELECT nama_kolom
FROM nama_tabel
AS nama_alias_tabel
Jika kita ingin membuat nama alias untuk kolom NamaDepan menjadi ND dan NamaBelakang
menjadi NB, gunakan pernyataan SQL berikut :
SELECT NamaDepan AS ND,
NamaBelakang AS NB
FROM Pegawai
Hasilnya :
ND NB
Adi Nugroho
Diana Nuraini
Hasan Martono
Suardi Ibrahim
Sukma Wati
Jika kita ingin membuat nama alias untuk Tabel Pegawai menjadi Karyawan, gunakan pernyataan
SQL berikut :
SELECT *
FROM Pegawai AS Karyawan
Hasilnya :
NamaDepan NamaBelakang Alamat Kota
Adi Nugroho Jl.Urip Sumoharjo Solo
Diana Nuraini Jl.Perintis Kemardekaan Medan
Hasan Martono Jl.Diponegoro Makassar
Suardi Ibrahim Kl.Ir.Sutami Pinrang
Sukma Wati Jl.DR.Wahidin Gowa
Kita dapat memilih data dari dua tabel dengan mengacu pada kedua tabel sebagai berikut :
SELECT Pegawai.NamaDepan, pesan.NamaBarang
FROM Pegawai, Pesan
WHERE Pegawai. KodePegawai = Pesan. KodePegawai
Hasilnya :
NamaDepan NamaBarang
Adi Mouse
Diana Printer
Hasan Keyboar
Untuk mengetahui siapa yang memesan printer, gunakan pernyatan SQL berikut :
SELECT Pegawai.NamaDepan
FROM Pegawai, Pesan
WHERE Pegawai.KodePegawai=pesan,kodepegawai
AND Pesan, NamaBarang=printer
Hasilnya :
NamaDepan
Adi
Kita pun bisa menggunakan kata kunsi JOIN untuk memilih data. Ada tiga macam kunci JOIN, Yaitu :
INNER JOIN, LEFT JOIN, dan RIGHT JOIN>
sintaks untuk INNER JOIN :
Select field1, field2..
FROM tabel INNER JOIN tabel2
ON tabel.kunci_utama=tabel2.kunci_asing.
Misalnya, untuk mengetahui siapa yang telah memesan barang dan apa yang dipesan, kita dapat
menggunakan pernyataan berikut :
SELECT Pegawai.NamaDepan, pesan.NamaBarang
FROM Pegawai INNER JOIN Pesan
ON Pegawai.kodePegawai=Pesan.KodePegawai
INNER JOIN akan memunculkan semua baris kedua tabel jika ada pasangannya. Jika ada baris pada
Tabel Pegawai yang tidak memilih pasangan, maka baris tidak akan dimunculkan pada tabel Pesan.
Hasilnya :
NamaDepan NamaBarang
Adi Mouse
Diana Printer
Hasan Keyboar
NamaDepan
Sukma
Untuk mengetahui siapa yang memesan monitor, jika menggunakan pernyataan berikut :
SELECT pegawai.NamaDEpan
FROM Pegawai INNER JOIN Pesan
ON Pegawai.KodePegawai=Pesan.kodePegawai
WHERE Pesan.NamaBarang=Monitor)
Hasilnya :
NamaDepan NamaBelakang
Adi Nugroho
Diana Nuraini
Hasan Martono
Suardi Ibrahim
Sukma Wati
Untuk menampilkan semua pegawai pada Tabel Pegawai dan Pegawai2, gunakan penyataan berikut :
SELECT NamaDepan FROM Pegawai
UNION
SELECT NamaDepan FROM Pegawai2
Hasilnya :
NamaDepan
Adi
Diana
Hasan
Suardi
Sukma
Perintah tidak dapat digunakan untuk menampilkan semua pegawai pada Tabel Pegawai dan
Pegawai2. Pada contoh, kita mempunyai dua pegawai dengan nama sama (yaitu Hasan Martono) dan
hanya satu yang di munculkan. Perintah UNION hanya memilih nilai unik.
ON nama_tabel (nama_kolom)
Misalnya, kita akan mmbuat indeks sederhana bernama pegawai-indeks pada kolom NamaDepan
Tabel Pegawai.
CREATE INDEX nama-indeks
ON Pegawai (NamaDepan)
Jika anda ingin mengindeks nilai dalam suatu kolom dengan urutan terbalik, anda dapat menambah
kata DESC setelah nama kolom :
CREATE INDEKX pegawai_indeks
ON Pegawai (NamaDepan DESC)
Jika ingin meng-indeks lebih dari satu kolom, Anda dapat mencantumkan nama-nama kolom dalam
tanda kurung dan dipisahkan oleh koma.
CREATE INDEX pegawai_indeks
ON Pegawai (NamaDepan, NamaBelakang)
Misalnya, pernyataan untuk menghapus kolom alamat dari tabel pegawai sebagai berikut :
ALTER TABLE pegawai
6.14.2 HAVING
Sintaks :
SELECT nama_kolom, COUNT (nama_kolom)
FROM Nama_tabel
GROUP BY nama_kolom
HAVING COUNT (nama_kolom) kondisi nilai
Misalnya, pernyataan untuk mencari kota yang ditinggali oleh lebih dari satu pegawai adalah :
SELECT kota, COUNT (kota) AS jumlah
FROM Pegawai
GROUP BY kota
HAVING COUNT (kota) >1
Hasilnya ;
Kota Jumlah
Makassar 2
Bab 7
XML dan Basisdata
7.1 Pendahuluan
Subbab 7.1 akan membahas cara menyajikan data terstruktur dengan XML, menyimpan dalam
relational dababase management Sistem (RDBMS), dan mencarinya.
Pembuatan aplikasi model three-tier terdiri ats Web Browser atau aplikasi client sebagai tier 1, Web
server atau aplikasi server sebagai tier 2, dan Sistem basisdata atau Sistem transaksi sebagai tier 3
(lihat Gambar 7.1). sebuah RDBMS seringkali digunakan sebagai tier 3 dalam Sistem three
tier(Maruyama. 2002).
Tier 1 Tier 2 Tier 3
HTML/XML JDBC
Serviet
et
User Agent Aplication
Database
(Browse) Server
Gambar 7.1 RDMBMS digunakan sebagai tier 3 dalam Sistem there tier
Saat ini , java applet yang digunakan dalam pengembangan aplikasi sisi client sangat dominan, begitu
pula java yang digunakan dalam pengembangan aplikasi sisi server. Sekarang, XML semakin sering
digunakan dalam pertukaran data antara aplikasi web. XML Schema memungkinkan kita
mendefinisikan tipe data dan menghubungkannya dengan tabel.
7.1.1 Menyimpan dan Mencari Dokument XML
Sistem menajemen basisdata seperti RDBMS sangat efisien dalam menangani data berjumlah banyak
dan RDBMS pun menyediakan fasilitas untuk menjagaintegritas, konsistensi, dan keteesedian. Model
three tier yang ditunjukkan Gambar 7.1 hanya digunakan pada aplikasi seperti pembelian, pemesanan
tiket, dan lain-lain. Namun, data yang disimpan pada Sistem tidak dalam format XML.
Ada tiga pendapatan untuk menyinpan data dalam format XML di dalam Sistem basisdata, yaitu :
1. Menyimpan dokumen XML sebagai XML sebagai dokumen terstruktur.
Pendekatan pertama digunakan untuk menyimpan dan mengambil dokumen terstruktur dengan
menggunakan basisdata asli SGML/XML. Misalnya, OpentText (LiveLink) adalah mesin pencari Full-
text (lihat http://www.opentext.com/livelink). Server basisdata XML yang disebut Tamino dari
Software AG menggunakan pula pendekatan pertama (lihat http://www.softwareag.com/tamino).
Tamino menyediakan kemampuan pencariaan dengan menggunakan ekspresi XPath dan mengatur
indeks skema untuk mengoptimalkan proses pencarian. Keuntungan menggunakan basisdata asli
adalah tidak harus merancang pemetaan antara document XML dan table. Document XLM dapat
disimpan begitu saja dalam basisdata dan diambil dengan XPath maupun XQuery. Basisdata asli
menyediakan kemampuan pencarian full-text yang berguna ketika harus menyimpan document yang
kompleks (dan bukan Cuma data).
Pendekatan kedua dapat direalisasikan dengan menggunakan basisdata berorientasi objeks(OODB).
Pada kerangka kerja OODB, sebuah objek data disimpan sebagai objek yang menetap dan sebuah
aplikasi dapat mengalami objek melalui pointer. Pada objek DOM tree dan disimpan dalam tempat
penyimpanannya yang bersifat menetap. Salah satu implementasi pendekatan kedua adalah eXcelon
(lihat http://www.exceloncorp.com). Produk berdasarkan pada OODB umum yang disebut
ObjectStore. Software ObjectStore menyimpan kumpulan objek DOM dan menyediakan fungsi
pencarian dangan menggunakan XPath. Keuntungan utama pendekatan kedua adalah sama dengan
basisdata asli.
Pada pendekatan ketiga, sebuah document XML, disimpan dalam sebuah RDBMS. Pendekatan dapat
mengatur sekumpulan table relasional dan skemanya, yang merupakan salah satu karakterisktik
penting XML. Oleh karena itu, kita tidak mudah mengubah sebuah dokumen XML menjadi satu atau
lebih table.
Pendekatan ketiga lebih banyak digunakan kerena dua alas an. Pertama, sebagian besar aplikasi yang
ada menyimpan data dalam RDBMS. Untuk membuat aplikasi Web berbasis XML yang terintegrasi
dengan sumberdaya yang sudah ada, XML dokumen yang dikirim oleh client disimpan dalam
RDBMS. Kedua, sebagian besar produk RDBMS komersial, seperti Oracle dan DB2, mampu
menengani data dalam jumlah besar dan jumlah akses yang pula. Produk-produk RDBMS komesrsial
menyediakan berbagai macam kemampuan Manajemen, termasuk backup data recovery. Fitur-fitur
mempunyai arti penting ketika Anda harus membuat aplikasi bisnis berskala besar. Terlebih lagi,
banyak teknik untuk mengoptimalkan sistem dan query telah tersedia sehingga pengguna dapat
memanfaatkannya.
Bagaimana mengambil dokumen XML yang tersimpan merupakan masalah besar lain. Ada empat cara
yang dapat dilakukan, yaitu :
Menggunakan bahasa query yang dibuat khusus untuk hal ini seperti OpenText. Misalnya,
ketika ingin mencari element TITLE yang mengandung string XML dengan OpenText, Anda
dapat menggunakan query seperti elemen TITLE berhubungan dengan TITLE region, yang
merupakan topic spesifik pada OpenText)..
Menggunakan XPath. XPath dapat digunakan sebagai bahasa query karena bagian dokement
XML dapat dialamiti dengan menggunakan XPath. Ketika dapat pula mengubah ekspresi
XPath menjadi Srtuctured dokumen XML dipecah menjadi table-tabel dengan menggunakan
JDBC.
Menggunakan XQuery, yang merupakan standar W3C yang masih dalam mengembangkan.
XQuery adalah bahasa query standar untuk dokumen XML. XQuuery dapat menentukan
format keluaran secara fleksibel. Keuntungan XQuery sebagai berikut :
<publisher>
<name {$p/text()} </name>
<avgprice>{$a} </avgprice>
Kata FOR, LEF, WHERE, dan RETURN adalah klausa utama pada AQuery sehingga query
in disebut ekspresi FLWR. Query pada contoh akan menampilkan daftar harga rata-rata buku
untuk masing-masing publisher. Konsep query yang dipakai di sini mirip dengan SQL.
Klausal FOR menentukan bagian tujuan sebuah dokumen XML. FOR seperti SELECT pada
SQL. Klausal LET digunakan untuk menggabungkan sebuah variable dengan hasil sebuah
fungsi(untuk mendapatkan nilai-nilai rata-rata). Klausal WHERE menetukan kondisi query.
Hasil penggunaan kondisi dikembalikan dengan Klusal RETUREN. Ini semacam template
untuk keluaran. Variable dalam template digunakan dalam proses query.
Menggunakan structured Query Language (SQL). SQL adalah bahasa umum untuk mengakses
RDBMS. Jika sebuah dokumen XML diubah menjadi data untuk disimpan dalam sebuah table
sebagai ilai kolom atau jika dokumen XML dihasilkan data yang tersimpan dalam bahasa
basisdata, maka dokumen XML dapat diakses menggunakan SQL.
Or
or
Gambar 7.2 (b) menunjukkan perubahan dari table relasional kie dokumen XML. Dalam kasus ini,
data table diubah kedata terstruktu.
Sebagai contoh, bagaimana kita menentukan skema dokumen XML (po.xm1) agar dapat
menyimpannya dalam sebuah basisdata? Listing program berikut menunjukkan skema untuk sebuah
dokumen XML.
Listing 7.1 Skema suatu dokumen XML
<?xml1 version=1.0?>
<!DOCTYPE PurchaseOrder [
<!ELEMET purchaseOrder (shipTo, Item)>
<!ATTLIST purchaseOrder invoiceNo CDATA #REQUIRED >
<!ELEMET shipTo (name,street?>
<!ELEMET shipTo Country CDATA #REQUEIED>
<!ELEMET name (#PCDATA)>
<!ELEMET street (#PCDATA?>
<!ELEMET items (item*)>
<!ELEMET item (#PCDATA)>
<!ATTLIST item qty CDATA #REQUIRED >
]>
<purchasesOrder invoiceNo=2001-08-031012345>
<shipto country=US>
<name>Alice Smisth</name>
<street>123 Maple Street</street>
</shipto>
<item>
<item qty=2>thinkPad X21</item>
<item qty=1>ThinPad T22</item>
</purchaseOrder>
Jika skema (DTD) untuk sebuah dokumen sudah dibuat, maka kita dapat menentukan skema tabelnya.
Skema dua table untuk menyimpan dokumen PO.xml ditunjukkan pada Tabel 7.1 dan 7.2. item data
yang muncul sekali pada dokumen (seperti invoiceNo dan name)dapat dinyatakan dalam sebuah table
(lihat Tabel 7.1). item yang muncul lebih dari sekali (seperti item) harus dinyatakan dalam table
terpisah (lihat Tabel 7.2). ini berarti dokumen XML adalah data semi terstruktur sehingga dalam
banyak kasus, kita tidak meungkin mengubahnya ke sebuah table. Jika Anda ingin melakukan query
untuk mencariorang yang memesan ThinkPad X@!, kedua table harus dihubungkan karena elemen
name dan item dipetakan ke table berbeda, jika struktur dokumen XML tidak terlalu kompleks dan
skema dapat ditentukan, maka pendekatan dapat dilakukan.
Jika dokumen XML dapat dipecah menjadi beberapa table, datanya dapat diakses melalui SQL, ini
dapat diintegrasikan dengan data lain (selain XML) yang disimpan dalam basisdata dan aplikasi yang
ada. Hal ini merupakan keuntungan menengani dokumen XML dengan RDBMS.
Seperti dikatakan sebelumnya, perubahan antara dokumen XML dan table adalah pekerjaan yang tidak
mudah. Namun, vendor basisdata seperti IBM dan Oracle menyediakan tool untuk mempermudah
pekerjaan. Misalnya, DB2 XML Extender menyediakan bahasa pemetaan berbasis XML. Oracle
menyediakan XML Develovers Kit (XDK) berisi prosesor XML yang mendukung XML Schema dan
kelas-kelas untuk membuat aplikasi dengan menggunakan XML dan basisdata. Dengan menggunakan
tool-tool, kita dapat mengurangi biaya perancangan dan perubahan skema.
Kita dapat terlebih dahulu membuat table untuk elemen akar dokumen XML. Document XML dapat
menggambarkarkan sebuah kontrak, pembelian, laporan, dan sebagainya. Ini dapat dinyatakan dengan
sebuah table yang disebut table induk. Untuk dokumen po.xml, table yang ditunjukkan pada Tabel 7.1
merupakan table induk. Table induk menentukan elemen invoice_ID, country,name, dan street.
RDBMS menyediakan beberapa tipa batasan untuk table. Misalnya, jika sebuah record dalam recor
dalam table induk dihapus, record yang berhubungan harus dihapus dari table anak, batasan berikut
akan melakukannya secara otomatis:
FOREIGN KEY (invoice_ID)
REFERENCES PO_TBL (invoice_ID)
ON DELETE CASCADE);
Batasan menunjukkan bahwa kolom invoice_ID dalam table ITEM_TBL yang menunjukkan table 7.2
adalah tamu yang berhubungan dengan kolom invoice_ID dalam table PO_TBL yang ditunjukkan
Tabel 7.1. jika PO_TBL, semua record dengan nillai invoice_ID yang sama secara otomatis akan
dihapus dari table ITEM_TBL.
R A B C Primary
Key
001
P Q
A B S C
D Foreign Primary
Key Key
D D 001 101
001 102
(a) Metode pemetaan
R
Content XPath Primay
Key
P Q /R(1)P/P(1)A(1) 001
/R(1)/P(1)/B(1) 002
/R(1)/(1)/B/(1) 003
/R(1)/P(1)D/(1) 004
A B S C /R(1)/P(1)D/(2) 005
Ms[1]item[1]@gty
6 /purchaseOrder[1]/ite thinkPadX21 2001-08-31-12345
Ms[1]?item[1]
7 /purchaseOrder[1]/ite 1 2001-08-31-12345
Ms[1]/item[2]/@qty
8 /purchaseOrder[1]/ite ThinkPad T22 2001-08-12345
Ms[1]/item[2]
Sekarang, kita melihat bagaimana kita dapat mengubah tabel dokumen XML menggunakan
metod bersarang dan datar.
Listing 7.2 menunjungkan daftar pembelian dengan metode bersarang (nesting method). Dalam
contoh ini, informasi produk dinyatakan dengan elemen product, yang merupakan elemen anak
dri elemen item. Struktur sangat alamiah dn sangat mudah dibaca. NAmun, daftar memiliki
perulangan karenainformasi produk yang sama muncul berulang kali. Relasi anatar invoice dan
product menggunakan pemetaan many to many sehingga metode bersarang mungkin bukan
metode terbaik untuk dipakai.
Listing 7.2 Dokumen XML yang dihasilkan (metode bersarang), po2.xml
<?xml version="1.0"?>
<purchaseOrderList
<invoice invoiceNo="2001-08-31-12345">
<shipTo country-"US">
<name> Alice Smith</name>
<street>123 Maple Street</street>
</shipTo>
<items>
<item qty="2">
<product>
<name>ThinkPad X21</name>
</product>
</item>
</</items>
</invoice invoiceNo=2001-08-31-123456>
<shipTo country=US>
<name>Bob Miller</name>
<street>1365 Tree Street</street>
</shipTo>
<items>
<item qty=8>
<product>
<name>ThinkPad X21</name>
</product>
</item>
<item qty=10>
<product>
<name>Thinkpad T22</name>
</product>
</item>
</items>
</invoice>
</purchaseOrderList>
Listing 7.3 menunjukkan dokumen XML menggunakan metode datar(flat method). Informasi untuk masing-msing
produk muncul sekali dlam dokumen. Invoice mengacu pada informasi