sistem basis data
DESCRIPTION
PENGANTAR SISTEM BASIS DATATRANSCRIPT
Sistim Basis Data
Sistim Basis Data
1
Bab 1
PENGANTAR
1.1 Apa Itu Basisdata
Basisdata, menurut stephens dan Plew (2000), adalah mekanisme yang digunakana untuk menyimpan informasi atau data, informasi adalah sesuatu yang kita gunakan sehari-hari untuk berbagai alasan. Dengan basisdata, pengguna dapat menyimpan data secara terorganisasi. Setelah data disimpan, informasi harus mudah diambil. Criteria dapat digunakan untuk mengambil informasi. Cara menyimpan data dalam basisdata menentukan seberapa mudah mencari informasi berdasarkan banyak kriteria. Data pun harus mudah ditambahkan ke dalam basisdata, dimodifikasi,dan dihapus.
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 :
Entitas seperti mahasiswa, fakultas, mata kuliah, dan ruang kuliah.
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
Kata log perpustakaan
Took buku online
Peta jalan
Sistim Basis Data
Sistim Basis Data
2
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.
1.2 Aplikasi Sistem Basisdata
Basisdata digunakan secara luas. Berikut adalah beberapa contoh aplikasi :
Perbankan : untuk informasi pelanggan, rekening, peminjaman, dan transaksi perbankan.
Penerbangan : untuk informasi pemesanan dan jadwal. Penerbangan adalah salah satu yang pertama yang menggunakan abasisdata meleluai jaringan telepon dan jaringan data lainnya.
Universitas : untuk informasi mahasiswa, pendaftaran kuliah, dan nilai.
Transaksi kartu kredit : untuk membeli dengan kartu kredit dan membuat tagihan bulanan.
Telekomunikasi : untuk mencatat semua penggilan, membuat tagihan bulanan, mencatat saldo dari kartu prabayar, dan menyimpan informasi tentang jaringan komunikasi.
Keuangan : untuk menyimpan informasi tentang perusahaan serta menjual dan membeli alat keuangan seperti saham dan obligasi.
Penjualan : untuk informasi pelanggan, produk, dan pembelian.
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
Sistim Basis Data
Sistim Basis Data
3
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.
1.3 Sistem Basisdata dan Sistem File
Kita mengambil contoh bagian suatu bank yang menyimpan informasi tentang semua pelanggan dan
rekening. salah satu cara menyimpan informasi pada Komputer adalah menyimpannya pada file-file
Sistem operasi. Agar pengguna dapat memanipulasi informasi, Sistem operasi memiliki sejumlah
program aplikasi untuk memanipulasi file. Contohnya adalah:
Program untuk menambah atau mengurangi jumlah uang dalam rekening.
Program untuk membuat rekening baru.
Program untuk menghitung saldo rekening.
Program untuk membuat laporan bulanan.
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 :
Pengulangan dan ketidakkonsistenan data
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.
Sistim Basis Data
Sistim Basis Data
4
Kesulitan mengakses data
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.
Sistim Basis Data
Sistim Basis Data
5
Anomali pada akses bersamaan
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.
1.4 Sistem Manajemen Basisdata (DBMS)
Ramakrishnan dan Gehrke (2003) menyatakan Sistem Manajemen Basisdata (DBMS) adalah perangkat lunak yang didesain untuk membantu memelihara dan memanfaatkan kumpulan data yang besar. Kebutuhan akan Sistem termasuk pula penggunaanya yang berkembang pesat. Alternatif penggunaan DBMS adalah menyimpan data dalam file dan menulis kode aplikasi tertentu untuk mengatur. Penggunaan DBMS memiliki beberapa manfaat penting.
1.4.1 Kentungan DBMS
DBMS memungkinkan perusahaan maupun pengguna individu untuk:
Mengurangi pengulangan data
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.
Mencapai independensi data
Sistim Basis Data
Sistim Basis Data
6
Spesifikasi data disimpan dalam skema pada tiap program aplikasi. Perubahan dapat dibuat pada struktur data tanpa memengaruhi program yang mengakses data.
Mengintegrasikan data beberapa file
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.
Mengambil data dan informasi dengan cepat
Hubungan-hubungan logis, bahasa manipulasi data, serta bahasa query memungkinkan pengguna mengambil data dalam hitungan detik atau menit.
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.
1.4.2 Kerugian DBMS Keputusan menggunakan DBMS mengikuti perusahaan atau pengguna untuk:
Memperoleh perangkat lunak yang mahal
DBMS mainframe masih sangat mahal. Walupun harga DBMS berbasis Komputer mikro lebih murah, tetapi tetap merupakan pengeluaran besar bagi suatu organisasi kecil.
Memperoleh konfigurasi perangkat keras yang besar
DBMS sering memerlukan kapasitas penyimpan dan memori lebih besar dari pada program aplikasi lain.
Memperkejakan dan mempertahankan staf DBA
DBMS memerlukan pengetahuan khusus agar dapat memanfaatkan kemampuannya secara penuh. Pengetahuaan khusus ini disediakan paling baik oleh para pengelola basis data ( DBA )
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.
1.5 Pandangan Data
Sistem basisdata adalah kumpulan file yang saling berhubungan dan kumpulan program yang memungkinkan pengguna mengakses dan mengubah file-file. Tujuan utama Sistem basis data adalah membveri pengguna pandangan abstrak suatu data. Pandangan berarti Sistem menyenbunyikan cara data disimpan dan dirawat.
Sistim Basis Data
Sistim Basis Data
7
1.5.1 Abtraksi Data
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.
Gambar 1.2 Hubungan antara ketiga tingkatan abstraksi
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 :
View Level
. . .
View 1 View 2
View N
Logical Level
Physical
Level
Sistim Basis Data
Sistim Basis Data
8
Type mahasiswa = record
Nim : string;
Nama : string;
Alamat : string;
Kota : string;
End;
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.
Dosen, dengan field NIP, Nama, Alamat, kota.
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.
1.5.2. Intansi dan Skema Basisdata berupa dari waktu ketika informasi dimasukkan dan dihapus. Kumpulan informasi yang
disimpan dalam basisdata pada suatu waktu disebut intansi (instance) suatu baisdata. Rancangan
basisdata secara keseluruhan disebut skema basisdata.
Konsep instansi dan skema basisdata dapat dimengerti dengan menganalogikan dengan sebuah
program yang tulis dalam suatu bahasa pemrograman. Skema basisdata berhubungan dengan deklarasi
variable maupun definisi tipe sebuah program. Masing-masing variable memiliki nilai tertentu pada
suatu saat. Nilai variavel dalam program pada suatu saat berhubungan dengan instansi skema
basisdata.
Sistem basisdata memilki beberapa skema yang dibagi menurut tingkatan abstraksi. Skema fisik
menggambarkan rancangan basisdata pada tingkatan fisik, sedangkan skema logis menggambarkan
rancangan basisdata pada tingkatan logis. Sebuah basisdata bisa memilki beberapa skema pada
tingkatan view, yang kadang-kadang disebut subskema dan menggambarkan view yang berbeda dalam
basisdata.
Dari ketiga skema, skema logis merupakan skema paling penting dalam hal pengaruhnya pada
program aplikasi karena programmer membuat aplikasi menggunakan skema logis. Skema fisik
Sistim Basis Data
Sistim Basis Data
9
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.
1.6 Struktur Sistem Basisdata
Sistem basisdata dibagi menjadi modul-modul yang berhubungan dengan masing-masing tanggung
jawab Sistem secara keseluruhan. Komponen fongsional Sistem basisdata dapat dibagi menjadi
komponen pengatur penyimpanan dan komponen pemroses query.
Pengatur penyimpanan menjadi penting karena basisdata membutuhkan banyak ruang penyimpanan.
Ukuran basisdata pada perusahaan berkisar dari ratusan gigabyte hingga terabyte data. Karena memori
utama Komputer tidak dapat menyimpan informasi sebanyak itu, maka informasi disimpan dalam
disk. Data dipindah antara penyimpan disk dan memori utama sesuai kebutuhan. Karena pergerakan
data ked an dari disk relative lambat terhadap kecepatan CPU, Sistem basisdata perlu mengatur data
agar meminimalkan kebutuhan memindahkan data dari disk ke kemomri utama.
Pemroses query penting karena ia membantu Sistem basisdata menyederhanakan dan memfasilitsi
akses kedata. View tingkat tinggi membantu mencapai tujuan tersebut sehinggan pengguna Sistem
tidak dibebani detail fisik penerapan Sistem yang tidak perlu. Namun, pemrosesan update dan query
yang cepat merupakan hal penting pula. Tugas Sistem basisdata adalah menerjemahkan update dan
query yang tulis dalam bahasa nonprocedural pada tingkatan logis menjadi urutan operasi pada
tingkatan fisik.
1.6.1 Pengaturan Penyimpanan
Pengaturan penyimpanan adalah modul program yang menyediakan antarmuka antara data tingkat
rendah yang disimpan pada basisdata dengan program aplikasi dan query yang dikirimkan ke Sistem.
Pengatur penyimpanan bertanggung jawab terhadap interaksi dangan pengatur file. Data mentah
disimpan pada disk menggunakan Sistem file yang disediakan oleh Sistem operasi konvensional.
Pengatur penyimpanan menerjemahkan berbagai pernyataan DML menjadi perintah Sistem file
tingkatan rendah. Oleh karena itu, pengatur penyimpanan bertanggungjawab terhadap penyimpanan,
pengambilan, dan perubahan data dalam basisdata. Komponen penyimpanan sebagai berikut:
Pengatur otorisasi dan integritas, menguji batasan integritas dan mengecek otoritas pengguna untuk mengakses data.
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 sementara, bertanggungjawab mengambil data dari disk, memasukkan kememori utama, memutuskan data yang akan disimpan,sementara dalam memori utama, pengatur penyimpanan sementara adalah bagian penting Sistem basisdata karena ini memungkinkan basisdata menangani data berukuran jauh lebih besar dari ukuran memori utama.
Sistim Basis Data
Sistim Basis Data
10
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.
Indeks, menyediakan akses cepat ke data yang memilki nilai tertentu.
Sistim Basis Data
Sistim Basis Data
11
1.6.2 Pemroses Query
Komponen pemrosesan query meliputi:
Interpreter DDL, menerjemahkan perintah DDL dan mencatat definisi-definisi dalam kamus data/.
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).
Programer Pengguna DBA
Gambar 1.3 Struktur Sistem
DBMS
Program
Aplikasi
Query Skema
Basisdata
Pemroses
DML
Pemroses
Query
Kompiler
DDL
Kode Obyek
Program
Pengatur
Basisdata Pengatur
Kamus
Metode
Akses Pengatur
File
Bufter
Sistem
Basisdata
Dan kamus
data
Sistim Basis Data
Sistim Basis Data
12
1.7 Bahasa Basisdata
Sistem basisdata menyediakan bahasa pendefinisian data (data Definition Language-DDL) untuk
menentukan skema basisdata dan bahasa manipulasi data (Data Manipulation Language-DML) untuk
menyatakan query dan update basisdata. Pada praktiknya, DDL dan DML bukan merupakan dua
bahasa yang terpisah melainkan membentuk bagian basisdata, seperti yang umum digunakan pada
bahasa SQL (akan dibahas lebih lanjut pada BAB 6).
1.7.1 Data Definition Language (DDL)
Skema basisdata ditentukan sekumpulan definisi yang dinyatakan dengan bahasa tertentu yang disebut
Data Definition Language (DDL). Sebagai contoh, pernyataan berikut dalam bahasa SQL
mendefinisikan tabel rekening.
Create table rekening
(no_rekening char(10),
Saldo integer)
Eksekusi pernyataan DDL di atas akan membuat tabel rekening. Sebagai tambahan, pernyataan itu
menambah kumpulan tabel yang disebut kamus data atau direktori data. Kamus data adalah istilah
basisdata yang mengacu pada difinisi data yang disimpan dalam basisdata dan dikendalikan oleh
Sistem manajemen basisdata (McLeod, dkk,2001).
Kamus data mengandung metada, yaitu data tentang data. Skema sebuah tabel adalah contoh sebuah
metada. Sistem basisdata akan mengecek kamus data sebelum membaca atau memodifiksi data
sebenarnya. Struktur penyimpanan dan metode akses yang digunakan oleh Sistem basisdata dengan
menggunakan sekumpulan pernyataan dalam tipe DDL tertentu disebut bahasa penyimpanan dan
definisi data. Pernyataan ini menentukan penerapan detail skema basisdata, yang sering
disembunyikan dari pengguna.
Nilai data yang disimpan dalam basisdata harus sesuai dengan batasan tertentu. Sebagai contoh, saldo
pada sebuah rekening tidak boleh di bawah Rp.50.000,00-. DDL menyediakan fasilitas untuk
membuat batasan seperti itu. Sistem basisdata mengecek batasan setiap basisdata diubah.
1.7.2 Data Manipulation Language (DML)
Manipulasi data adalah :
Pengambilan informasi yang disimpan dalam basisdata
Penempatan informasi baru dalam basisdata
Penghapusan informasi dari basisdata
Modifikasi informasi yang disimpan dalam basisdata
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.
Sistim Basis Data
Sistim Basis Data
13
DML Deklaratif (disebut pula DML, nonprocedural), mengharuskan pengguna menentukan data yang dibutuhkan tanpa menentukan bagaiman 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.
Tabel 1.1 Pegawai
kodePegawai NamaDepan NamaBelakang Alamat Kota
01 Ani Mariani Jl.Mawar Makassar
02 Kiki Aditya jl.Kemerdekaan Gowa
03 Fitri Ginting Jl.Pembangunan Maros
04 Hasan Martono Jl. Diponogoro Pinrang
Tabel 1.2 Pesan
KodeBarang NamaBarangKodePegawai
234 Printer 01
657 Monitor 03
456 Keyboard 02
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.
1.8 Pengguna Basisdata dan Administrator
Tujuan utama basisdata adalah mengambil informasi dan menyimpan informasi baru ke dalam
basisdata. Orang-orang yang bekerja dengan basisdata dapat dikelompokkan sebagai pengguna
basisdata atau administrator basisdata.
Sistim Basis Data
Sistim Basis Data
14
1.8.1 Pengguna Basisdata dan Antarmuka Pengguna
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 naïf 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 naïf adalah antarmuka berbentuk formulir,
dimana pengguna dapat mengisi field-field di dalamnya. Pengguna naïf 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 sophisticated berinteraksi dengan Sistem tanpa menulis program. Mereka membuat permintaan dalam bahasa query basisdata. Mereka mengirmkan masing-masing query ke pemprose query yang fungsinya memisahkan pernyataan DML menjadi instruksi-instruksi yang dimengerti oleh storage manager. Analisis yang mengirimkan query untuk mengeksplorasi data dalam basisdata masuk dalam kategori pengguna sophisticated.
Online Analytytical Processing (OLAP) menyederhanakan tugas analis dengan memperbolehkan mereka melihat ringkasan data dalam berbagai cara. Contohnya adalah seorang analis dapat melihat total penjualan berdasar daerah (utara, selatan, barat, timir), barang, atau kombinasi daerah dan barang (total penjualan masing-masing barang pada masing-masing daerah). Tool mengixinkan analis memilih daerah tertentu dan melihat data lebih detail (misalnya, jumlah barang bersama dengan kategori). Tool lain untuk analis adalah tool data mining yang membantu mereka mencari pola data tertentu.
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
Sistim Basis Data
Sistim Basis Data
15
berdas ilmu pengetahuan dan keahlian, Sistem yang menyimpan data dengan tipe data kompleks (misalnya, data grafik dan data audio), dan Sistem pemodelan lingkungan.
1.8.2 Administrator Basisdata
satu alas an utama menggunakan DBMS adalah mendapatkan control penulis baik untuk data maupun
program yang mengakses data (Stephens dan Plew, 2000). Orang yang mendapatkan control semacam
itu disebut administrator basisdata (DBA) (McHaney,2005).
Gambar 1.4 Kegiatan administrasi
Fungsi DBA meliput (Stephens and Plew,2000):
Menentukan skema, DBA membuat skema basisdata dengan mengeksekusi kumpulan pernyataan definisi data dalam DDL.
Menentukan struktur penyimpanan dan metode akses
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.
Prosedur dan Standar
Antarmuka DBA
Menentukan dan menjalankan
Mengatur dan memonitor
Pengguna Akhir
Menguji
Pemrograman
Program
Aplikasi
DBMS
Manajer dan
Sekretaris
Antarmuka
DBMS DATA
Dan / atau Menggunakan
Digunakan oleh
Menulis
Mengatur
DBA
Sistim Basis Data
Sistim Basis Data
16
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.
Memonitor pekerjaan-pekerjaan yang sedang berjalan pada basisdata dan memastikan bahwa kinerjanya tidak menurun karena banyaknya pengguna.
1.9 Tipe-tipe Basisdata
Setiap perusahaan membutuhkan basisdata. Perusahaan dan perorangan membutuhkan basisdata setiap
hari dan beberapa di antaranya tidak sadar menggunakannya. Ada beberapa tipe basisdata, beberapa
basisdata bertipe sederhana, sedangkan yang lainnya sangat kompleks. Ketika mencari sebuah
perusahaan dalam yellow Pages, Anda menggunakan basisdata. Ketika memasan buku dari toko buku
online di internet, Anda mengakses basisdata. Satu bentuk paling sederhana basisdata yang peling
dikenal orang adalah cabinet. Informasi disimpan dalam laci, dalam folder map. Banyak perusahaan
masih membongkar kertas kerja dalam bagian sehari-hari daripada menyimpan informasinya dalam
Komputer. Meskipun semua perusahaan tidak mungkin menghilangkan sama sekali kertas kerja,
keuntungan menyimpan data dalam Sistem Komputer lebih banyak dari pada biaya untuk mempelajari
cara menggunakan program manajeman data.
Langkah-langkah dasar merancang basisdata adalah keputusan perusahaan mengalokasikan
sumberdaya untuk mempelajari basisdata, merancang struktur basisdata, dan menerapkan serta
mengatur basisdata. Setelah basisdata dirancang dan aplikasi telah dibuat atau dibeli, manejemen
basisdata secara keseluruhan menjadi sederhana untuk basisdata administrator basisdata yang
berpengalaman. Setelah perusahaan memutuskan untuk merancang Sistem basisdata, model basisdata
yang akan digunakan harus dibuat.
Berikut adalah tipe basisdata:
1. Model basisdata file (Flat file database model)
2. Model basisdata hierarki (Hierarchical database model)
3. Model basisdata jaringan (Network database model)
4. Model basisdata relasional (Relational database model)
5. Model basisdata berorientasi objek (Object oriented database model)
6. Model basisdata relasi objek (object relational database model)
Sistim Basis Data
Sistim Basis Data
17
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.
1.9.1 Model Basisdata File
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 “:”.
1234:Megadata Komputer.Adminisrasi Sistem di Linux
5678:Doni Ariyus:Kamus Hacker
4321:Megadata Komputer:Tlp dan Trik Meningkatkan Kinerja PC
8765:Agfianto Eko Putra:Penalis Aktif Elektronika Teori dan Praktek
4523:Agfianto Eko Putra:Belajar Bahasa Assembly dengan EMU8086
3456:Abdul Kadir:Panduan Pemrograman Visual C++
Sistim Basis Data
Sistim Basis Data
18
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.
Lokasi fisik field data pada file harus diketahui
Program harus dibuat untuk mengatur data.
1.9.2 Model Basisdata Hierarki
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.
Gamabr 1.5 Model basisdata hierarki
Penerbit
Pengarang Toko Buku
Judul Daftar Buku Pesanan
Sistim Basis Data
Sistim Basis Data
19
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.
Integritas data lebih diatur.
Kekurangan model hierarki adalah:
Pengguna harus memahami struktur basisdatanya.
Terjadi perulangan data.
1.9.3 Model Basisdata Jaringan
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.
(Pemilik)
Gambar 1.6 Model basisdata jaringan
Penerbit
Pengarang Toko Buku
Kontrak persedian
(anggota))
(set structure)
Sistim Basis Data
Sistim Basis Data
20
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.
Gambar 1.7 Berbagi tabel anak
Keuntungan model basisdata jaringan adalah:
Data dapat diaksesdengan cepat
Penguna dapat mengakses data murni dari sembarang table
Penguna lebih mudah membuat model basisdata yang lebih kompleks
Pengguna lebih mudah membuat query yang lebih kompleks untuk mengambil data
Keuntungan model basisdata jaringan adalah:
Struktur basisdata tidak mudah diubah
Perubahan struktur baisdata memengaruhi program aplikasi yang mengakses basisdata
PEngguna harus memahami struktur basisdata
Penerbit
Pengarang Toko Buku
Judul Daftar Buku Pesanan
(tabel akar atau orang tua)
(tabel Anak)
(tabel anak level sebelumnya
Sistim Basis Data
Sistim Basis Data
21
1.9.4 Model Basisdata Relasional
Basisdata relasional adalah tipe basisdata yang paling popular digunakan saat ini. Banyak
perkembangan yang telah dibuat dari model basisdata sebelumnya menyederhanakan manajemen data
dan pengambilan data. Data menjadi lebih mudah diatur, terutama melalui penggunaan batas
integritas. Pengambilan data merupakan proses penyimpangan yang memungkinkan pengguna
memvisualisasikan basisdata melalui struktur table relasional dan meminta data tertentu tanpa perlu
memahami struktur basisdata.
Unit penyimpangan utama dalam basisdata adalah table kelompok data yang saling berhubungan.
Sebuah table terdiri atas baris dan kolom. Baris berhubungan dengan record dalam table dan kolom
mengandung nilai semua baris yang berhubungan dengan field tertentu. Table dapat dihubungkan satu
sama lain melalui nilai kolom yang disebut kunci (key).
Ada tiga hubungan antartabel, yaitu one-to-one, one-to-many, dan many-to-many. Suatu basisdata
harus memiliki lebih dari satu hubungan berbeda. Hubungan antartabel ditentukan oleh integritas
refeensial (referential integrity) yang memerlukan penggunaan batas kunci utama (primary key) dan
kunci tamu (foreign key). Integritas referensial adalah penggunaan batasan di atas untuk membuat
valid data yang dimasukkan ke dalam table dan mengatur hubungan antara table orangtua dengan
anak. Tipe batasan lain dapat pula dibuat untuk mengontrol data yangbisa dimasukkan dalam kolom
tertentu dan membuat hubungan antartabel.
Gabar 1.8 menggambarkan model basisdata relasional. Model relasional tidak memiliki table akar
meskipun hubungan antar kabel anak dan orang tua masih dimungkinkan. Table orangtua dapat
memiliki banyak tabel orangtua (hubungan dua arah).
Gambar 1.8 Model basisdata relasional
Penerbit Toko Buku
Pengarang Judul Daftar Buku
Pesanan
supply
menulis stok
menjual
pesanan
Sistim Basis Data
Sistim Basis Data
22
Keuntungan model basisdata relasional adalah:
Data dapat diakses secara cepat.
Struktur basisdata mudah diubah.
Data disajikan secara logis sehingga pengguna tidak perlu mengetahui bagaimana data disimpan.
Pengguna mudah membuat query yang kompleks untuk mengambil data.
Pengguna mudah menerapkan integritas data.
Data sering lebih akurat.
Pengguna mudah membuat dan memodifikasi program aplikasi.
Bahasa standar (SQL) sudah dibuat.
Kekurangan model basisdata relasional adalah:
Kelompok informasi atau tabel yang berbeda harus dihubungkan untuk mengambil data.
Pengguna harus memahami hubungan antaratabel.
Pengguna harus belajar SQL.
Sistim Basis Data
Sistim Basis Data
23
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.
Pemrosesan parallel dalam Sistem Komputer memungkinkan aktivitas Sistem basisdata dipercepat, respon lebih cepat pada transaksi, serta lebih banyak transaksi yang dapat direspons per detik. Query dapat diproses dengan mengeksploitasi paralelisme yang diitawarkan oleh Sistem Komputer. Kebutuhan akan pemprosesan query parallel memunculkan Sistem basisdata parallel.
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.
2.1 Arsitektur Terpusat dan Client-Server
Sistem basisdata terpusat adalah Sistem yang berjalan pada Sistem Komputer tunggal dan tidak berinteraksi dengan Sistem Komputer lain. Sistem basisdata terpusat meliput Sistem basisdata pengguna tunggal yang berjalan pada PC hingga Sistem basisdata berkinerja tinggi yang berjalan pada Sistem server(high-end server Sistem). Sebaliknya, Sistem client-server mempunyai kemampuan memisahkan Sistem server dan dan Sistem banyak client.
Sistim Basis Data
Sistim Basis Data
24
2.1.1 Sistem Terpusat
Sistem Komputer modern untuk tujuan umum terdiri atas satu hingga beberapa CPU dan banyak
pengontrol peralatan (device controller) yang dihubungkan melalui bus yang menyediakan akses ke
memori bersama. Tape drive
bus sistem
Gambar 2.1 Sistem Komputer terpusat
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
CPU
Pengontrol
Memori
Memori
Pengontrol
Disk
disk disk
Pengontrol
Printer
printer
Pengontrol Tape drive
Sistim Basis Data
Sistim Basis Data
25
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.
2.1.2 Sistem Client-Server
Ketika PC menjadi lebih cepat, lebih bertenaga, dan lebih murah, ada pergeseran arsitektur Sistem
terpusat. PC menggantikan terminal yang pergeseran atsitektur Sistem tepusat. Oleh karena itu, PC
dianggap mempunyai kemampuan sebagai antarmuka pengguna yang sering ditangani langsung oleh
Sistem terpusat. Sebagai hasilnya, Sistem terpusat sekarang ini bertindak sebagai Sistem server yang
melayani permintaan Sistem client. Gambar menunjukkan struktur umum Sistem client-server.
…
Jaringan
Gambar 2.2 fungsi Front end dan back end
Fungsi basisdata dapat dibagi menjadi dua bagian, yaitu front end dan back end seperti terlihat pada
Gambar 2.3
Front-end
antarmuka
(SQL + API
client client client client
client
Antarmuka
pengguna
SQL
Mesin SQL
Antarmuka
Formulir
Penulis
Laporan
Antarmuka
Grafis
Sistim Basis Data
Sistim Basis Data
26
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.
2.2. Arsitektur Sistem Server
Sistem server dapat dikelompokkan menjadi transaksi dan data.
Sistem server transaksi, disebut pula Sistem server query, menyediakan antarmuka di mana dengan antarmuka tersebut, client dapat mengirimkan permintaan untuk melakukan suatu kegiatan. Komputer client mengirimkan transaksi ke Sistem server, di mana transaksi tersebut dieksekusi, dan hasilnya dikirim kembali ke client yang berwenang untuk menampilkan data. Permintaan bisa dilakukan menggunakan SQL atau melalui antarmuka program aplikasi.
Sistem server data,memungkinkan client berinteraksi dengan server dengan membuat permintaan untuk membaca atau meng-update data dalam satuan seperti file atau halaman. Sebagai contoh, server file menyediakan antarmuka Sistem file dimana client dapat membuat, meng-update, membaca dan menghapus file. Server data untuk Sistem basisdata sebuah file. Mereka menyediakan fasilitas pengindeksan data dan fasilitas transaksi sehingga data selalu konsisten jika Komputer client atau prosesnya gagal.
Diantara keduanya, arsitektur server paling banyak digunakan.
Sistim Basis Data
Sistim Basis Data
27
2.2.1 Struktur Proses Server Transaksi
Sistem server transaksi yang umum sekarang ini terdiri atas banyak proses yang mengakses data pada
memori bersama (shared memory) seperti terlihat pada Gambar 2.4.
Gambar 2.4 Berbagai memori dan struktur proses
Proses yang membentuk bagian Sistem basisdata adalah:
Proses server: proses merupakan proses yang menerima query dari pengguna (transaksi),
mengeksekusinya, dan mengirimkan hasilnya, Query bisa dikirimkan ke proses server dari
antarmuka pengguna, dari proses pengguna yang menjalankan SQL, atau melalui JDBC,
ODBC, atau protocol yang mirip. Beberapa Sistem basisdata menggunakan proses terpisah
untuk masing-masing proses pengguna dan beberapa di antaranya menggunakan proses
basisdata tunggal untuk seluruh sesi pengguna, tetapi dengan banyak thread sehingga banyak
query dapat dieksekusi bersamaan. Banyak Sistem basisdata menggunakan arsitektur campuran
dengan beberapa proses di mana masing-masing proses menjalankan banyak thread.
Proses pengatur lock: proses menerapkan fungsi pengaturan penguncian, yang termasuk lock grant, lock release, dan pendekatan deadlock.
Proses
pengguna
Proses
pengguna
Proses
pengguna
Buffer pool
Query plan cache
Log buffer Lock table
Log write
proccess
checkpoint
proccess
Log disk
Database write
proccess
Log disk
Proses
pengguna
Proses
pengguna
Proses
pengguna
Sistim Basis Data
Sistim Basis Data
28
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.
Sistim Basis Data
Sistim Basis Data
29
2.2 Sistem Terdistribusi
Pada Sistem terdistribusi, basisdata disimpan pada beberapa Komputer. Komputer pada Sistem
terdistribusi berkomunikasi sata sama lain melalui media komunikasi seperti jaringan berkecepatan
tinggi atau telepon. Mereka tidak berbagi memori atau disk. Komputer pada Sistem terdistribusi bisa
bervariasi dalam hal ukuran dan fungsi serta berkisar dari Sistem workstation hingga mainframe.
Komputer pada Sistem terdistribusi bisa disebut situs node atau kode tergantung pada konteksnya.
Istilah situs digunakan untuk menyatakan distribusi fisik Sistem. Gambar 2.5 memperlihatkan struktur
umum Sistem terdistribusi.
Gambar 2.5 sistem terdistribusi
Situs A
Situs B
jaringan
Komunikasi
melalui
jaringan
Situs C
Sistim Basis Data
Sistim Basis Data
30
Bab 3
ENTITY RELATIONSHIP
DIAGRAM - ERD
3.1 Model-model Data
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 :
Persegi panjang mewakili kumpulan entitas
Elips mewakili atribut
Belah ketupat mewakili relasi
Garis menghubungkan atribut dengan kumpulan entitas dan kumpulan entitas dengan relasi
Entitas
Atribut
Relasi
Sistim Basis Data
Sistim Basis Data
31
Masing-masing komponen diberi nama entitas atau relasi yang diwakilinya. Sebagai ilustrasi, banyangkan Anda mengambil bagian Sistem basisdata universitas yang terdiri atas
mahasiswa dan matakuliah. Gambar 3.1 menunjukkan diagram ER dari dari contoh. Diagram
menunjukkan bahwa ada dua kumpulan entitas, yaitu mahasiswa dan matakuliah, dan bahwa relasi
mengambil mahasiswa dan matakuliah.
Gambar 3.1 Diagram ER
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.
Gambar 3.2 Model ER
MATAKULI
AH
NamaMTK
SKS KodeMT
K
1 1 M M mengambil
Nim
Nama
Alamat
MAHASISW
A
Sistim Basis Data
Sistim Basis Data
32
3.1.2. Model Relasional
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.
(a) Tabel Mahasiswa
(b) Tabel Matakuliah
(c) Tabel Mengambil
Gambar 3.3 Contoh basisdata relasional
Sistim Basis Data
Sistim Basis Data
33
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.
3.1.2 Model-model Data Lainnya
Model data berorientasi objek (object oriented data model) adalah model data lain yang semakin
menarik perhatian. Model dapat dipandang sebagai pengembangan model ER dengan penambahan
pada pembungkusan (encapsulation), motode (fungsi), dan identitas objek.
Model data relational objek (object relational data model) menggabungkan model data berorientasi
objek dengan model data relasional.
Model data yang semistructured mengizinkan spesifikasi data di mana masing-masing data bertipe
sama bisa mempunyai atribut berbeda. Ini berbeda dengan model data yang disebutkan di atas, dimana
setiap data dengan tipe tertentu harus mempunyai atribut sama.
Dua model data lain, yaitu model data jaringan (network data model) dan model data hierarki (
hierarchiecal data model), telah ada terlebih dahulu sebelum model data relational. Namun, keduanya
jarang digunakan
.
3.2 Batasan
Skema ER bisa menentukan batasan tertentu di mana isi basisdata harus sesuai dengannya.
3.2.1 Pemetaan kardinalitas
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
Sistim Basis Data
Sistim Basis Data
34
A B
Gambar 3.4 Hubungan one-to-one
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
Gambar 3.5 Hubungan one-to-many
Contoh :
Aturan bisnis :
a) Dalam suatu perusahaan, satu bagian mempekerjakan banyak pegawai.
b) Satu bagian mempekerjakan banyak pegai, satu pegawai kerja dalam satu bagian.
1 1 GURU SISWA MENGAJAR
A1
A3
A2
A4
B1
B2
B4
B3
B1
B2
B4
B3
B5
A1
A3
A2
Sistim Basis Data
Sistim Basis Data
35
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
Gambar 3.6 Hubungan many-to-one
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
IV 1 BAGIAN dipekerjakan
BAGIAN
A1
A2
A4
A3
A5
B1
B3
B2
1 M BAGIAN
mempekerjakan PEGAWAI
Sistim Basis Data
Sistim Basis Data
36
A B
Gambar 3.7 Hubungan many-to-many
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.
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.
3.2.2 Batasan Partisipasi
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
M MAHASISWA mengambil
MATAKULIAH N
A1
A3
A2
A4
B1
B2
B4
B3
Sistim Basis Data
Sistim Basis Data
37
memungkinkan analis menghasilkan struktur basisdata yang baik sehingga data dapat disimpan dan diambil secara efisien (www.infocom.cqu.au).
3.4 Metodolgi ERD
1. Menentukan Entitas Menentukan peran, kejadian, lokasi, hal nyata,
dan konsep di mana pengguna akan
menyimpan data.
2. Menentukan Relasi Menentukan hubungan anatarapasangan entitas
menggunakan matriks relasi.
3. Gambar ERD sementara Entitas digambarkan dengan kotak dan relasi
dengan garis yang menghubungkan entitas
4. Isi Kardinalitas Menentukan atribut yang mengindentifikasi
satu dan hanya satu kejadian masing-masing
5. Tentukan Kunci utama Menentukan atribut yang mengidentifikasi satu
dan hanya satu kejadian msing-masing
6. Gambar ERD bersar Kunsi Menghilangkan relasi many-to-many dan
memasukkan primay dan kunci tamu pada
masing-masing entitas.
7. Menetukan Atribut Menulis field-field yang diperlukan oleh
Sistem
8. Pemetaan Atribut Untuk masing-masing atribut, memasangkan
atribut dengan satu entitas yang sesuai.
9. Gambar ERD dengan Atribut Mengatur ERD dari langkah 6 dengan
menambah entitas atau relasi yang ditemukan
pada langkah 8
10. Periksa Hasil Apakah ERD sudah menggambar Sistem yang
akan dibangun
3.5 Contoh Kasus
Sebuah perusahaan mempunyai beberapa bagian. Masing-masing bagian mempunyai pengawas dan
setidaknya, satu pegawai. Pegawai harus ditugaskan pada saling tidak satu bagian, tetapi dapat pula
beberapa bagian. Paling tidak satu pegawai mendapat tugas sebuah proyek. Namun, seorang pegawai
dapat libur dan tidak mendapat tugas proyek. Field-fieldnya adalah Nama Bagian, Proyek, Pengawas,
Pegawai, Nomor Pengawas, Nomor Pegawai, dan Nomor Proyek.
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
Sistim Basis Data
Sistim Basis Data
38
Kita membuat matriks relasi entitas sebagai berikut :
Bagian Pegawai Pengawas Proyek
bagian Ditugaskan ke Dijalankan oleh
Pegawai Pemilik
Bekerja pada
Supervisor Menjalankan
Project Menggunakan
3. Menggambar ERD Sementara
Kita menghubungkan entitas yang mempunyai relasi seperti yang ditunjukkan pada matriks relasi
entitas.
Gambar 3.8 Gambar ERD Sementara
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
Proyek
dijalankan
Bekerja
pada
Ditugaskan
ke
Pegawai
Sistim Basis Data
Sistim Basis Data
39
Masing-masing proyek dikerjakan oleh paling tidak satu pegawai.
Seorang pegawai bisa mendapat tugas 0 atau beberapa proyek.
Gambar 3.8 Mengisi Kadinalitas
5. Menentukan Kunci Utama
Kunci utamanya adalah Nama Bagian, Nomor Pengawas, Nomor Pegawai, dan nomor Proyek.
6. Menggambar ERD berdasar Kunci 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.
dijalankan
Bekerja
pada
Ditugaskan
ke
Bagian Pengawas
Pegawai Proyek
Sistim Basis Data
Sistim Basis Data
40
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 :
1. Mengatur data dalam kelompok-kelompok sehingga masing-masing kelompok hanya menangani bagian kecil Sistem.
2. Meminimalkan jumlah data berulang dalam basisdata.
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).
Sistim Basis Data
Sistim Basis Data
41
4.3 Aturan Normalisasi
Berikut adalah aturan-aturan normalisasi :
1. Hilangkan kelompok berulang-buat tabel terpisah untuk setiap himpunan atribut yang berhubungan dan tentukan munci utama pada masing-masing tabel.
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.
6. Bentuk normal optimal-sebuah model hanya dibatasi oleh fakta sederhana.
7. Bentuk normal domain-key-sebuah model harus terbatas dari sebuah anomaly (www.datamodel.org).
4.4 Ketergantungan Fungsional
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.
Sistim Basis Data
Sistim Basis Data
42
4.5 Bentuk Normal Pertama (1NF)
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
Gambar 4.1 menunjukkan tabel pemasok dalam 1 NF.
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.
Sistim Basis Data
Sistim Basis Data
43
3. UPDATE. Jika pemasok p1 pindah dari Yogyakarta ke Jakarta, maka enam baris harus di-update karena adanya perubahan.
4.6 Bentuk Normal Kedua (2NF)
Definisi bentuk normal kedua menyatakan bahwa tabel dengan kunci utama gabungan hanya dapat
berada pada 1 NF, tetapi tidak pada 2NF. Sebuah tabel relasional berada pada bentuk normal kedua
jika dia berada pada 1NF dan setiap kolom bukan kunci yang sepenuhnya tergantung pada kunci
utama. Ini berarti bahwa setiap kolom bukan kunci harus tergantung pada seluruh kolom pada 2NF
karena status dan kota tergantung secara fungsional hanya pada kolom p# dari kunci gabungan
(p#,n#). Ini dapat digambarkan dengan membuat daftar tergantung fungsional :
P# kota, status
Kota status
(p#, b#) qty
Proses mengubah tabel 1 NF ke 2 NF adalah :
1. Tentukan sembarang kolom penentu selain kunci gabungan dan kolom-kolom yang ditentukannya.
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.
5. Tabel asal bisa diberi nama baru.
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
Sistim Basis Data
Sistim Basis Data
44
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
Gambar 4.2 Tabel bentuk normal kedua (2NF)
Tabel masih mengandung anomaly pada contoh, PEMASOK2, yaitu :
1. INSERT. Fakta bahwa kota tertentu mempunyai status tertentu (semarang mempunyai status 40) tidak dapat dimasukkan hingga ada pemasok di kota tersebut.
2. DELETE. Menghapus sembarang baris pada PEMASOK2 akan menghilangkan informasi status tentang kota tersebut serta hubungan antara pemasok dan kota.
4.7 Bentuk Normal Ketiga (3NF)
Bentuk normal ketiga menghapuskan semua kolom pada tabel relasional tergantung hanya pada kunci
utama. Secara defines, sebuah tabel berada pada bentuk normal ketiga (3NF) jika tabel sudah berada
pada 2NF dan setiap kolom yang bukan kunci tidak tergantung secara transitif pada kunci utamanya.
Dengan kata lain, semua atribut bukan kunci tergantung secara fungsional hanya pada kunci utama.
Table BARANG sudah dalam bentuk normal ketiga. Kolom bukan kunci, qty, tergantung sepenuhnya
pada kunci utana (p#, b#). PEMASOK masih berada pada 2NF, tetapi belum berada pada 3NF karena
dia mengandung keterangan transitif. Ketergantungan transitif terjadi ketika sebuah kolom bukan
kunci, yang ditentukan oleh kunci utama, menentukan kolom lainnya. Konsep ketergantungan transitif
dapat digambarkan dengan menunjukkan ketergantungan fungsional pada PEMASOK2, yaitu :
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.
Sistim Basis Data
Sistim Basis Data
45
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.
5. Tebel asal bida diberi nama baru.
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
Gambar 4.3 Tabel bentuk normal ketiga (3NF)
Perubahan ke 3NF menghasilkan tiga tabel dan dapat dinyatakan dalam “pseudoSQL”sebagai 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.
Sistim Basis Data
Sistim Basis Data
46
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.
4.8 Bentuk Normal Boyce-Code (BCNF)
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.
4.9 Bentuk Normalisasi Keempat (4NF)
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.
Sistim Basis Data
Sistim Basis Data
47
PEGAWAI PROYEK
Peg# Pry#
1211 p1
211 p3
PEGAWAI AHLI
peg# Ahli
1211 Analisis
1211 Perancangan
1211 Pemrograman
Gambar 4.4 Tabel bentuk normal keempat (4NF)
4.10 Bentuk Normal Kelima (5NF)
Sebuah tabel berada pada bentuk normal kelima (5NF) jika dia tidak dapat mempunyai dekomposisi
lossless menjadi sejumlah tabel lebih kecil.
Empat bentuk normal pertama berdasarkan pada konsep ketergantungan fungsional, sedangkan bentuk
normal kelima berdasarkan pada konsep ketergantungan gabungan (join dependence). Ketergantungan
gabungan berarti bahwa sebuah tabel, setelah didekomposisi menjadi tiga atau lebih tabel yang lebih
kecil, harus dapat digabungkan kembali untuk membentuk tabel asal. Dengan kata lain, 5NF
menunjukkan ketika sebuah tabel tidak dapat didekomposisi lagi.
Menambah sebuah record pada sebuah tabel yang bukan 5NF menimbulkan hasil yang salah ketika
tabel didekomposisi lalu digabung kembali. Sebagai contoh, misalnya kita mempunyai pegawai yang
menggunakan keahlian perancangan pada satu proyek dan keahlian pemrograman pada proyek
lainnya. Berikut adalah informasinya :
Peg# pry# ahli
1211 11 perancangan
1211 28 pemrograman
Kemudian, kita menambahkan data pegawai (1544) yang menggunakan keahlian pemrograman pada
proyek 11.
Peg# pry# ahli
1211 11 perancangan
1211 28 pemrograman
1544 11 pemrograman
Sistim Basis Data
Sistim Basis Data
48
Kemudian, kita dekomposisi tabel menjadi dua tabel seperti yang dilakukan sebelumnya. Ketika kita menggabungkan kembali, tabel hasil gabungan mengandung data yang salah.
Peg# pry# ahli
1211 11 perancangan
1211 11 pemrograman
1211 28 pemrograman
1544 11 pemrograman
1544 11 pemrograman
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.
Proyek 11 membutuhkan keahlian pemrograman.
Oleh karena itu, pegawai 1211 harus menggunakan keahlian pemrograman ketika ditugaskan ke proyek 11.
Pernyataan kedua :
Pegawai 1544 telah ditugaskan ke proyek 11
Proyek 11 membutuhkan keahlian perancangan.
Oleh kerana itu, pegawai 1544 harus menggunakan keahlian perancangan dalam proyek 11.
Data salah
Data salah
Sistim Basis Data
Sistim Basis Data
49
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.
5.1 Pentingnya Keamanan pada Perancangan Basisdata
Pengguna yang mengakses Sistem harus bisa mengakses melalui LAN atau WAN dan sekarang paling
banyak melalui Word Wide Web. Aplikasi yang menggunakan aplikasi Web Browser sebagai antar
muka utama sudah umum saat ini ketika kita meletakkan basisata pada web, dia menjadi mudah
diserang Hacker dan penjahat lain dari luar organisai yang akan merusak atau mencuri data.
Bayangkan jika gaji semua orang, data personalia, atau rahasia perusahaan lain ditampilkan untuk
umum melalui website. Bahkan dari dalam perusahaan, seorang pegawai dapat merusak Sistem ketika
ia dipecat.
Sebagian besar basisdata saat ini memungkinkan akses melalui WWW. Bagian perancangan harus
memasukkan objek-objek basisdata (pengguna, kode, tabel, dan role) yang mendukung akses web dan
syarat keamanan yang vital seperti sertivikat dan SSL yang harus disertakan dengan akses.
Kemungkinan terjadinya gannfuan orang-orang, baik dalam maupun luar organisasi, harus dilawan.
Masalh lebih besar dapat terjadi ketika orang-orang dalam perusahaan harus menanggulangi
kemungkinan kesalahan yang tak disengaja. Menghapus atau menimpa suatu file data, menghapus
table, atau meng-update kolom secara tidak benar dengan tidak sengaja dapat menimbulkan masalah
seperti yang ditimbulkan oleh hacker. Oleh karena itu, keamanan harus direncanakan dengan baik dan
diintegrasikan dalam basisdata. Baisdata seharusnya tidak hanya menyediakan data pada pengguna,
tetapi juga menyediakan proteksi pada data.
5.2 Pengakses Basisdata
Sebagian informasi yang dibututuhkan salama perancangan dan penerapan akan dikumpulkan dari
wawancara selama analisis. Supaya dapat merencanakan keamanan basisdata selama perancangan
basisdata dan melaksanakan keamanan setelah penerapan, semua pengguna basisdata harus ditetapkan
terlebih dahulu. Ada beberapa kategori pengguna untuk setiap Sistem informasi, mulai dari pengguna
akhir sampai administrator Sistem informasi pengguna yang mempunyai akses untuk Sistem informasi
adalah :
Pengguna akhir
Pelanggan
Manajemen
Administrator jaringan
Administrator Sistem
Sistim Basis Data
Sistim Basis Data
50
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.
5.2.1 Tingkatan Akses
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.
Sistim Basis Data
Sistim Basis Data
51
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.
Ke Pengguna
Query
Membuat
Update data
Hapus data
Skema
Gambar 5.1 Hubungan pengguna dengan basisdata
Pemilik Skema
TABEL3
TABEL1
VIEW1 VIEW2
PENGGUNA1
PENGGUNA2
PENGGUNA3
PENGGUNA4
Sistim Basis Data
Sistim Basis Data
52
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.
INSERT – memungkinkan pembentukan baris data baru pada tabel.
UPDATE – memungkinkan data yang sudah ada dalam tabel untuk dimodifikasi.
REFERENCES – memungkinkan kolom dalam tabel untuk diacu kolom lain (seperti melalui kunci utama).
USAGE – memungkinkan pengguna domain tertentu.
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
Sistim Basis Data
Sistim Basis Data
53
skema bertanggung jawab menggrant privilege objek kepada pengguna dan DBA meng-grant privilege Sistem.
Grant pada ke
Grant ke
Gambar 5.2 Proses pengaturan akses pengguna akhir melalui privilege basisdata
Pemilik Skema SELECT
INSERT
UPDATE
DELETE
TABEL1
TABEL2
VIEW1
VIEW2
Pemilik Skema CREATE
TABEL
CREATE
INDEX
CREATE VIEW
PENGGUNA1
PENGGUNA2
PENGGUNA3
PENGGUNA4
Sistim Basis Data
Sistim Basis Data
54
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
Grant
Gambar 5.3 Pemakaian role basisdata
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.
Pemilik Skema SELECT
INSERT
UPDATE
DELETE
TABEL1
TABEL2
VIEW1
VIEW2
Pemilik Skema CREATE
TABEL
CREATE
INDEX
CREATE VIEW
PENGGUNA
1
PENGGUNA
4
PENGGUNA
3
PENGGUNA
2
APP_ROLE
1
DBA
Sistim Basis Data
Sistim Basis Data
55
5.3 Penanggungjawab Keamanan
Tidak ada satu orang yang bertanggungjawab penuh terhadap keamanan. Semua pengguna harus
bertanggungjawab pada penerapan, pelaksanaan, dan keputusan terhadap keamanan. Sistem
administrator, DBA, dan pemilik skema bertanggungjawab pada penerapan dan pelaksanaan. Semua
pengguna harus patuh pada keamanan. Lebih lanjut, pengguna harus dapat dipercaya untuk
menggunakan data yang mereka akses dengan benar. Kemudian, administrator harus membagi akses
ke data secara hati-hati dan aturan diikuti oleh semua pengguna.
Aturan keamanan dibuat oleh manajemen dan staf teknis. Aturan harus digunakan sebagai acuan
selama perencanaan dan penerapan Sistem informasi. Staf teknis yang turut serta dalam membuat
aturan keamanan termasuk administrator jaringan, administrator sestem, dan administrator basisddata.
Ada tiga tingkatan dasar pengaturan keamanan yang berhubungan dengan Sistem informasi, yaitu:
a. Pengaturan tingkat Sistem
b. PEngaturan tingkat basisdata
c. Pengaturan tingkat aplikasi
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.
5.3.1 PEngaturan Tingkat Sistem
Administrator Sistem mengontrol host Komputer untuk basisdata dan file-file yang terhadap
dalamnya. Mereka dapat merusak file-file data, baik disengaja maupun tidak.
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
Sistim Basis Data
Sistim Basis Data
56
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.
5.3.3 PEngaturan Tingkat Aplikasi
Pembuat aplikasi menentukan sturktur tabel, menulis program, dan menentukan role yang
memungkinkan pengguna melakukan CRUD pada tabel dan mengeksekusi program.
Aplikasi dapat mengikutsertakan keamanannya sendiri sebagai suatu tambahan pada keamnaan
basisdata. Tabel dapat dibuat pada aplikasi yang memiliki skema untuk menyimpan informasi
pengguna tertentu dan role aplikasi dapat ditentukan dan dikonfirgurasi berdasarkan tabel-tabel. Pada
dasrnya, aplikasi membatasi pilihan untuk pengguna tertentuberdasrkan nilai-nilai pada tabel aplikasi
atau nilai bebrapa kelompok variable dalam aplikasi.
Pembuat aplikasi memutuskan privilege dan tabel yang harus dimasukkan pada masing-masing role
atau kelompok privilege. Jika pengguna tertentu tidak mempunyai privilege untuk mengakses tabel
atau mengeksukusi program, dia tidak dapat melaukannya. Penetuan role yang benar salah satu aspek
penting dalam keamanan. Terlalu sedikit privilefe dalam suatu role akan menyebabkan pengguna tidak
dapat melakukan pekerjaannya. Namun, terlalu banyak privilege membuat pengguna melihat terlalu
banyak informasi dana dapat merusak data.
Perangkat lunak aplikasi dan basisdata modern sekarang memasukkan fasilitas untuk otentifikasi
biometik dari penggunapada saat login melalui sidik jari, scan mata, atau suara. Kartu keamanan atau
kunci fisik lainnya dimasukkan dalam kemampuan otentifikasi login basisdata.
Sistim Basis Data
Sistim Basis Data
57
5.4 Menggunakan View dan Prosedur untuk Meningkatkan Keamanan
View dan stored procedure adalah mekanisme yang berhubungan dengan basisdata relasional yang
m,embuat meningkatkan fleksibilitas penerapan keamanan. Objek-objek sangat berguna untuk
membatasi akses ke data dan menyaring bagian data yang dapat diakses oleh pengguna.
Penggunan view sangat umum pada tool keamanan di taingkat aplikasi. sebuah view adalah tabel
logis. Maksudnya, view merupakan query pada tabel fisik yang telah diberi nama dan disimpan pada
basisdata sebagai objek basisdata terpisah. Privilege dapata di-grant pada pengguna untuk view, bukan
tabel. Kemudian, view dapat dipilih oleh pengguna dengan privilege tertentu seolah-olah view adalah
tabel.
View memungkin pembuat aplikasi membuat tabel logis dengan hanya menampilkan kolom tertentu
yang dapat dilihat oleh pengguna untuk melaksanakan pekerjaan pada saat tertentu. Ini memungkinkan
pembuat aplikasi menyembunyikan kolom-kolom tabel yang tidak bileh dilihat oleh pengguna. Oleh
karena itu, pengguna hanya mempunyai akses ke view, bukan ke tabelnya. Pengguna hanya dapat
melihat kolom pada view, sedangkan kolom pada tabel tidak dapat dilihatnya.
Pengguna hanya dapat melihat data dalam format yang diinginkan oleh pembuat dengan nama kolom
sesuai dnegan pilihan pembuat. Pada kondisi tertentu, data pada tabel dibelakang view dapat di-update
melalui view.
Pembuatan stored procedure merupakan metode yang umum digunakan untuk meningkatkan
keamanan secara keseluruhan. Prosedur dapat dapat dibuat untuk melakukan operasi terhadap satu
atau lebih tabel dalam basisdata. Pengguna yang mengeksekusi prosedur hanya dapat melakukan aksi
seperti program yang tertulis didalamnya. Contohnya, prosedur dibuat untuk mengatur data karyawan.
Prosedur memungkinkan pegawai baru dimasukkan dan perubahan data pegawai seperti alamat.
Prosedur tidak memungkinkan data pegawai dihapus dari basisdata. Seperti pada view, akses di-grant
ke prosedur dan bukan pada tabel.
Pengguna hanya dapat melakukan aktivitas yang diperbolehkan oleh prosedur, yang dieksekusikan di
bawah privilege pemiliknya. Prosedur semacam ini bisa menghalangi pengguna menghapus semua
record dalam tabel.
5.5 Perancangan Sistem Manajemen Keamanan
Meskipun ada fitur keamanan built in seperti role, beberapa pengembangan meskipun membuat
Sistem pengaturan keamanan. Sistem pengaturan meliputi perencanaan dan membuat tabel basisdata
yang digunakan untuk menentukan akses pengguna tertentu kedata. Kemudian, Sistem pengaturan
keamanan diperlukan hanya jika fitur built in perangkat lunak basisdata yang digunakan tidak
memenuhi kebutuhan keamanan organisasi. Sistem keamanan seperti ini sering hanya sebagai
tambahan fitur pada perangkat lunak basisdata.
5.6 Tindakan Pencagahan Tambahan
Saat ini, basisdata dan jaringan berhubungan erat. Dengan perkembangan palikasi berbasis web, tern
semakin berkembang. Keamanan web sanagat utama pada sebagian besar aplikasi. komunikasi
internet basisdata hamper sesalu berdasarkan pada protocol TCD/IP.TCP/IP adalah protocol
kemudian data standar untuk web. Sayangnya, TCP/IP tidak mempunyai pengamanan. Data Anda non
nomor kartu kredit seseorang dapat dicuri apabila menggunakan TCP/IP. Pengamanan harus
ditambahkan pada TCP/IP dari sumber lain agar basisdata web moder lebih aman.
Sistim Basis Data
Sistim Basis Data
58
5.6.1 Keamanan Jaringan
Keamanan jaringan adalah barisan pertahanan paling depan. Jika dapat menghindari orang jahat
mengambil alamat IP basisdata Anda, Anda telah menjauhkan mereka dari basisdata Anda. Ini disebut
menyembunyikan. Network Address Translation (NAT) akan menerjemahkan alamat IP asli yang
digunakan Sistem anda dan menyembunyikannya dari pengguna web. NAT dimasukkan pada bagian
besar produk firewall dan akan membuat hacker tidak berpengalaman tidak bisa memasuki Sistem
anda. Sayangnya, menyembunyikan tidak menghentikan hacker berpengalaman, tetapi hanya
memperpanjang proses.
Memiliki file konfigurasi jaringan workstation berbeda, tergantung pada kebutuhan kelompok tertentu,
adalah ide bagus. Setiknya, Anda tidak menempatkan alamat-alamat IP untuk seluruh perusahaan
dalam sati file.
5.6.2 Firewall Jaringan
Firewall jaringan adalah pertahanan Anda yang sebenarnya dari hacker. Setting firewall yang benar
akan melindungi jaringan Anda, tetapi dapat pula memperlambat kinerja jaringan di mana aplikasi
berjalan sangat lambat. Konfigurasi firewall yang tidak tepat akan menyebabkan operasi berbasis web
Anda berhenti. Oleh karena itu, Anda memerlukan orang yang mengetahui apa yang harus dilakukan
untuk merawat firewall jaringan (chapman dan Zwickly, 1995).
Sebuah firewall memberikan suatu organisasi cara mebuat ruang antara jaringan yang terisolasi dari
jaringan luar, seperti internet, dan jaringan yang terhubung dengan jaringan luar. Firewall
menyediakan cara mudah mengontrol jumlah dan macam lalulintas yang akan melewati ruang antara
jaringan internal dalam organisasi dan jaringan luar.
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.
Sistim Basis Data
Sistim Basis Data
59
5.6.3 Secure Socket Layer (SSL)
Kemampuan tambahan yang dapat digunakan untuk mengamankan TCP/IP adalah Secure Socket
Layer (SSL) atau Internet Engineering Task Force Transport Layer Security (IETF TLS).
SSL menyediakan enkripsi data sehingga data tidak dapat dirusak ketika data bergerak melalui router
internet. Sistem enkripsi sering menggunakan Sistem kunci rahasia yang digunakan untuk mengacak
data saat pengiriman dan mengembalikan data ke keadaan semula seampainya di tujuan.
SSL menggunakan metode ekripsi kunci public. Sistem SSL menghasilkan pasangan kunci, satu untuk
public dan satu untuk pribadi, yang secara bersama-sama dapat digunakan untuk meng-enkripsi atau
men-dekripsi data. Kunci public digunakan untuk berkomunikasi melaluiweb dan kunci public
digunakan untuk meng-enkripsi data yang dikirimkan prang lain dan mendekripsi data yang kita
kirimkan. Kunci pribadi digunakan untuk mengenkripsi data yang anda kurimkan dan men-dekripsi
data yang dikirimkan pada Anda. Anda menerima data yang di-enkripsi oleh orang lain dengan kunci
public relative labat sehingga SSL menggunakannya selama pembetukan sesi awal lalu menghasilkan
dan bertukan kunci rahasia, yang disebut kunci sesi. Kunci sesi digunakan oleh kedua pihak untuk sesi
selanjutnya. Enkripsi kunci rahasia relative cepat dibandingkan enkripsi kunci public.
Bagian setting website yang aman adalah mendapatkan surat kepercayaan situs elekronik yang disebut
sertifikat dari perusahaan pihak ketiga terpercaya, yang disebut pihak yang berwenang memberikan
sertifikat (Certifying Authority). Settifying Authority akan memvalidasi Anda termasuk organisasi
yang sah sebelum mereka memberikan sertifikat pada Anda. Kemudian, sesi komunikasipengguna
mengakses sertifikat Anda sebagai langkah otentifikasi awal ketika mengakses basisdata Anda
mealalui web. SSL pun mmvalidasi integritas data pada kedua ujung komunikasi.
5.7 Pelanggaran Keamanan
Pelanggaran keamanan kadang diketahui melalui pengamatan basisdata secara teratur atau selama
pemecahan masalah. Pelanggran bisa disengaja maupun tidak disengaja.
Pelanggaran disengaja ditimbulkan oleh maksud jahat atau keinginan untuk melihat-lihat.
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.
Memaksa pengguna sering mengubah password.
Melarang pengguna passwaord bersama-sama.
Menghapus account pengguna yang tidak aktif.
Menghapus account pengguna yang bukan pegawai.
Sistim Basis Data
Sistim Basis Data
60
Melakukan pengawasan acak terhadap semua aktivitas.
Melakukan audit basisdata.
Member pengertian pada pengguna akhir.
Melukukan pelatihan keamanan.
Mekanisme keamanan harus dilakukan pada tingkatan berikut tanpa mempengaruhi operasi bisnis
sehari-hari:
Keamanan internet (Web, WAN)
Keamanan jaringan internal (Intranet, LAN)
Keamanan Sistem operasi.
Keamanan basisdata
Keamanan objek skema
Keamanan aplikasi pengguna
Keamanan PC (Log in Windows NT)
Sistim Basis Data
Sistim Basis Data
61
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.
6.2 Sejarah SQL
SQL (Structured Query Language) pertama kali dikembangkan pada akhir tahun 1970-an di
Laboratorium IBM San Jose, California. SQL umumnya dibaca “sequel” dan mulanya, dikembangkan
untuk produk DB2 yang generasi ketiga (third Generation Language/3GL).
Karakteristik yang membedakan RDBMS dari DBMS adalah RDBMS menyediakan bahasa basisdata
yang set-oriented (bahsa yang memproses beberapa set data dalam grup). Pada sebagian besar
RDBMS, bahasa yang dipakai adalah SQL. Di sini terlihat sangat pentingnya SQL untuk membangun
sebuah RDBMS.
Dua organisasi internasional, American Standard Instute (ANSI)
Dan international Standard Organization (ISO) mempromosikan SQL sebagai standar industry pada
oktober 1986.
6.3 Apa Itu SQL
SQL adalah kependekan Structure Language (DDL) yang merupakan bahasa basisdata standar
industry (www.school.com).
SQL menyediakan Data Definition Language (DDL) dan manipulation Language (DML). Walaupun
dalam beberpa bagian saling berkaitan, perintah DDL memungkinkan kita membuat dan
mendefinisikan tabel (CREATE TABLE), dan indeks (CREATE INDEX). Sebaiknya, perintah DML
memungkinkan kita memanipulasi data dan membangun query untuk mengambil data (SELECT)
beberapa tabel, menyisipkan (INSERT) data baru, memperbaiki (UPDATE) data, dan menghapus
(DELETE) data.
6.4. Tabel Basisdata Sebuah basisdata terdiri atas satu lebih tabel dan masing-masing tabel diberi nama. Tabel memiliki
baris data.
Berikut contoh tabel yang bernama “pegawai”:
Tabel 6.1 Tabel Pegawai
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
Sistim Basis Data
Sistim Basis Data
62
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.
6.4.2 Bahasa Manipulasi Data SQL
SQL adalah sebuah sintaks untuk mengekseskusi query. Bahasa SQL mengikutsertakan sintaks untuk
update, insert, dan delete record.
Perintah query dan update secara bersama membentuk bagian bahasa manipulasi data SQL.
SELECT – memilih data dari tabel basisdata.
UPDATE – meng-update data dalam tabel basisdata.
DELETE – menghapus data dari tabel basisdata.
INSERT INTO – memasukkan data baru ke dalam tabel basisdata.
6.4.3 Bahasa Definisi Data SQL
Bagian bahasa data dari SQL memungkinkan tabel basisdata dibuat atau dihapus. Kita dapat pula
membuat indeks, membuat hubungan antartabel, dan membuat batasan antartabel basisdata.
Yang termasuk pernyataan bahasa data adalah :
CREATE TABEL – membuat tabel basisdata baru.
ALTER TABLE – mengubah tabel basisdata
DROP TABLE- menghapus tabel basisdata.
CREATE INDEX- membuat indeks.
DROP INDEX-menghapus indeks.
Sistim Basis Data
Sistim Basis Data
63
6.5 Pernyataan SELECT Pernyataan SELECT digunakan untuk memilih data dari tabel. Hasilnya disimpan dalam tabel hasil
yang disebut Result Set.
Sintaks :
SELECT nama_kolom
FROM nama_tabel
Untuk memilih beberapa kolom, misalnya NamaDepan dan NamaBelakang, gunakan pernyataan
SELECT sebagai berikut :
SELECT NamaDepan, NamaBelakang
FROM Pegawai
Hasilnya :
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
Sistim Basis Data
Sistim Basis Data
64
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
6.5.2 Klausa WHERE
Klausa WHERE digunakan untuk menentukan criteria seleksi. Untuk memilih data suatu tabel dengan
criteria tertentu, klausa WHERE dapat ditambahkan pada pernyataan SELECT.
Sintaks :
SELECT nama_kolom
FROM nama_tabel
WHERE kolom Operator nilai
Dengan klausa WHERE, operator berikut dapat digunakan :
Operator Keterangan
= Sama Dengan
<> Tidak sama dengan
> Lebih besar dari
< Lebih kecil dari
>= Lebih besar atau sama dengan
<= Lebih kecil atau sama dengan
Pada beberapa versi SQL, Operato <> bisa tulis !=
Sebagai contoh, untuk memilih hanya pegawai yang tinggal di medan, kita menambahkan klusa
WHERE pada pernyataan SELECT :
SELECT * FROM pegawai
WHERE kota= „Pinrang‟
Hasilnya :
NamaDepan NamaBelakang Alamat Kota
Suardi Ibrahim Kl.Ir.Sutami Pinrang
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
SELECT * FROM Pegawai
WHERE kota=‟Medan‟
Sistim Basis Data
Sistim Basis Data
65
B. Salah
SELECT * FROM Pegawai
WHERE kota=medan
Untuk nilai numeric :
A. Benar
SELECT * FROM Pegawai
WHERE tahun > 1965
B. Salah
SELECT * FROM Pegawai
WHERE tahun > „1965‟
6.5.3 Kondisi LIKE
Kondisi LIKE digunakan untuk menentukan pencarian berdasarkan pola tertentu pada suatu kolom.
Sintaks :
SELECT nama_kolom
FROM nama_tabel
WHERE NamaDepan LIKE „A&‟
Tanda “%” dapat digunakan untuk menentukan Wildcard (sembarang hurup), baik sebelum maupun
sesudah pola.
Penyataan SQL berikut akan menghasilkan nama pegawai yang dimulai dengan huruf A:
SELECT * FROM pegawai
WHERE NamaDepan
LIKE
hasilanya :
NamaDepan NamaBelakang Alamat Kota
Suardi Ibrahim Kl.Ir.Sutami Pinrang
Pernyataan SQL berikut akan menghasilkan nama pegawai yang mengandung pola “di” :
SELECT * FROM Pegawai
WHERE NamaDepan
LIKE „%di%‟
Hasilnya :
NamaDepan NamaBelakang Alamat Kota
Suwito Ito Sudiang Makassar
Diana Nuraini Jl.Perintis Kemardekaan Medan
6.5.4 Pernyataan INSERT INTO
Pernyataan INSERT INTO digunakan untuk memasukkan data baru pada tabel.
Sintaks :
INSERT INTO namatabel
VALUE (nilai1, nilai2,…)
Kita bisa menentukan kolom-kolom yang akan diisi dengan data baru, yaitu ;
Sistim Basis Data
Sistim Basis Data
66
INSERT INTO Pegawai VALUE („Sukma‟ , „ wati „, „ jl.
Jl.DR.Wahidin‟ , „ Gowa‟)
Hasilnya :
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
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 :
NamaDepan NamaBelakang Alamat Kota
Suwito Sudiang
Diana Nuraini Jl.Perintis Kemardekaan Medan
Hasan Martono Jl.Diponegoro Makassar
Suardi Ibrahim Kl.Ir.Sutami Pinrang
Sukma Wati Jl.DR.Wahidin Gowa
6.6 Pernyataan UPDATE
Pernyataan UPDATE digunakan untik memodifikasi data dalam tabel.
Sintaks :
UPDATE nama_tabel
SET nama_kolom = nilai_baru
WHERE nama_kolom = nilai
Jika kita ingin menambah nama belakang pada pegawai dengan nama depan Joko, pernyataan SQL-
nya adalah :
UPDATE Pegawai
SET NamaBelakang = „Suwito‟
WHERE namaDepan = „Ito‟
Hasilnya :
NamaDepan NamaBelakang Alamat Kota
Suwito Ito Sudiang
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 mengubah alamat dan menambah nama kota untuk pegawai dengan nama depan joko,
pernyataan SQL-nya adalah :
Sistim Basis Data
Sistim Basis Data
67
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
6.7 Pernyataan DELETE
Pernyataan DELETE digunakan untuk menghapus baris pada tabel. Sintaks:
DELETE FROM nama_tabel
WHERE nam_kolom=nilai
Jika kita ingin menghapus pegawai dengan nama depan Maria, pernyataan SQL-nya adalah :
DELETE FROM pegawai
WHERE NamaDepan = „Maria‟
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
6.8 Klausa ORDER BY Klausa ORDER BY digunakan untuk mengurutkan data.
Jika kita ingin menampilkan nama pegawai berdasarkan urutan abjad, pernyataan SQL-nya adalah :
SELECT * FROM pegawai
ORDER BY namaDepan
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
Sistim Basis Data
Sistim Basis Data
68
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
6.8.1 Operator AND dan OR
AND dan OR menggabungkan dua atau lebih kondisi pada klusa WHERE.
Operator AND menampilkan data jika semua kondisi yang diminta bernilai benar, sedangkan operator
OR menampilkan data jika ada kondisi yang benar.
Pernyataan SQL untuk menampilkan pegawai dengannama depan Ita dan nama kota Makassar adalah :
SELECT * FROM Pegawai
WHERE NamaDepan=‟Ita‟ AND
Kota=‟makassar‟
Hasilnya :
Sistim Basis Data
Sistim Basis Data
69
NamaDepan NamaBelakang Alamat Kota
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
Operator AND OR dapat digunakan secara bersamaan, yaitu :
SELECT * FROM pegawai
WHERE (namaDepan=‟Ita‟ OR
Kota=‟Makassar‟) AND (Alamat=‟jl.jend.Sudirman 3‟)
Hasilnya :
NamaDepan NamaBelakang Alamat Kota
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
6.8.3 Operator BETWEEN……..AND
Operator BETWEEN……AND memilih data antara dua nilai. Nilai dapat berupa angka, teks atau
tanggal.
Sintaks :
SELECT nama_Kolom FROM nama_tabel
WHERE nama_kolom
BETWEEN nilai1 AND Nilai2
Untuk menampilkan pegawai yang namanya di antara (dan termasuk adi dan Ita, Gunakan Pernyataan
SQL berikut :
Sistim Basis Data
Sistim Basis Data
70
SELECT * FROM Pegawai WHERE NamaDepan
BETWEEN „ Ad i‟ AND „ ITA „
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
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
Sistim Basis Data
Sistim Basis Data
71
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
6.9 JOIN dan KUNCI Kita terkadang harus memilih data dari dua tabel atau lebih untuk mendapatkan hasil yang komplit.
Oleh karena itu, kita harus melakukan sebuah JOIN.
Tabel-tabel dalam sebuah basisdata dapat dihubungkan satu sama lain menggunakan kunci. Kunci
utama adalah sebuah kolom dengan nilai unit tanpa mengulangi semua data pada setiap tabel.
Pada contoh Tabel Pegawai, kita menambahkan kolom KodePegawai.
Tabel 6.2 Tabel Pegawai
KodePegawai NamaDepan NamaBelakang Alamat Kota
01 Adi Nugroho Jl.Urip Sumoharjo Solo
02 Diana Nuraini Jl.Perintis Kemardekaan Medan
03 Hasan Martono Jl.Diponegoro Makassar
04 Suardi Ibrahim Kl.Ir.Sutami Pinrang
05 Sukma Wati Jl.DR.Wahidin Gowa
Tabel 6.3 Table Pesan
KodeBarang NamaBarang KodePegawai
234 Printer 01
657 Monitor 02
456 KeyBord 03
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 :
Sistim Basis Data
Sistim Basis Data
72
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
Sintaks untuk LEFT JOIN :
SELECT field1, field2…
FROM tabel LEFT JOIN tabel2
ON tabel.kunci_utama=tabel.kunci_asing.
Misalkan, kita ingin menampilkan semua pegawai dan barang yang dipesan, jika ada. Kia dapat
menggunakan pernyataan berikut :
SELECT Pegawai. NamaDepan, Pesan.NamaBarang
FROM Pegawai LEFT JOIN pesan
ON Pegawai.kodePegawai=pesan.kodePegawai
LEFT JOIN akan memunculkan semua baris tabel pertama (pegawai), bahkan jika tidak ada
pasangannya di tabel kedua (pesan). Jika ada baris pada tabel Pegawai yang tidak ada pasangannya
pada Tabel Pesan, maka ia pun akan dimunculkan.
Hasilnya :
NamaDepan NamaBarang
Adi Mouse
Diana Printer
Hasan Keyboar
Sintaks untuk RIGHT JOIN :
Sistim Basis Data
Sistim Basis Data
73
SELECT field1, field2,…. FROM tabel1 RIGHT JOIN tabel2
ON tabel1.kunci_utama=tabel2.kunci-asing
Misalkan, kita ingin menampilkan semua pegawai dan barang yang dipesan, jika ada. Kita dapat
menggunakan pernyataan berikut :
SELECT Pegawai.NamaDepan, Pesan.NamaBarang
FROM Pegawai RIGHT JOIN pesan
ON Pegawai.kodePegawai=pesan.kodePegawai
RIGHT JOIN akan memunculkan semua baris tabel kedua (pesan), bahkan jika tidak ada pasangannya
di tabel pertama (pegawai). Jika ada baris pada tabel Pesan yang tidak ada pasangannya pada tabel
pegawai, maka ia pun akan dimunculkan.
Hasilnya :
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
6.10 UNION dan UNION ALL 6.10.1 UNION
Perintah UNION digunakan untuk memilih informasi yang berhubungan dari dua tabel, mirip dengan
perintah JOIN. Namun, ketika menggunakan perintah UNION, tipe data semua kolom yang dipilih
harus sama. UNION hanya memunculkan nilai unit.
Sintaks :
Pernyataan 1
UNION
Pernyataan
Misalnya, kita mempunyai tabel baru bernama pegawai2.
Tabel 6.4 Tabel Pegawai2
KodePegawai NamaDepan NamaBelakang Alamat Kota
01 Adi Nugroho Jl.Urip Sumoharjo Solo
02 Diana Nuraini Jl.Perintis Kemardekaan Medan
Sistim Basis Data
Sistim Basis Data
74
03 Hasan Martono Jl.Diponegoro Makassar
04 Suardi Ibrahim Kl.Ir.Sutami Pinrang
05 Sukma Wati Jl.DR.Wahidin Gowa
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.
6.10.2 UNION ALL
Perintah UNION ALL sama perintah UNION, kecuali bahwa UNION ALL memilih semua nilai.
Sintaks :
Pernyataan 1
UNION ALL
Pernyataan 2
Dengan menggunakan Tabel 6.2 dan 6.4, kita dapat menggunakan pernyataan berikut untuk
menampilkan semua pegawai dari kedua tabel :
SELECT NamaDepan FROM Pegawai
UNION ALL
SELECT NamaDepan FROM Pegawai2
Hasilnya :
NamaDepan
Adi
Diana
Hasan
Suardi
Sukma
Sistim Basis Data
Sistim Basis Data
75
6.11 Membuat Basidata dan Tabel 6.11.2 Membuat Tabel
Untuk membuat tabel dalam sebuah basisdata, gunakan pernyataan berikut :
CREATE TABLE nama_tabel
(nama_kolom1 tipe_data,
Nama_kolom2 tipe_data,
….
)
Contoh berikut menampilakan bagaimana kita dapat membuat tabel bernama pegawai dengan empat
kolom. Nama kolomnya adalah NamaDepan, NamaBelakang, Alamat, dan kota.
CREATE TABLE Pegawai
(NamaDepan Varchar (15),
NamaBelakang Varchar15),
Alamat Varchar(30),
Kota Varchar(20))
Tipe data menentukan tipe data yang bisa dimasukkan pada kolom. Tabel berikut berisi tipe yang
umum dalam SQL:
Tabel 6.5 Tabel Tipe Data
Tipe Keterangan
Integer (ukuran)
Int (ukuran)
Smallant (ukuran)
Tinylnt (ukuran)
Hanya untuk nilai integer. Jumlah
angka maksimum ditentukan dalam
tanda kurung.
Decimal (ukuran, D)
Numeric (ukuran,D)
Untuk bilangan pecahan. Jumlah
angka maksimum ditentukan dalam
tanda kurung. Jumlah angka di
belakang koma ditentukan dalan D
Char (Ukuran)
Varchar (ukuran)
Untuk string dengan panjang
tertentu (dapat mengandung huruf,
angka, dan karakter). Panjang
karakter ditentukan dalam tanda
kurung.
Date (yyyymmdd) Untuk tanggal.
6.12 Membuat Indeks
INDEKS dibuat pada tabel yang sudah ada untuk mencari dengan lebih cepat dan lebih efisien. Kita
dapat membuat indeks pada satu atau lebih kolom dalam suatu tabel dan masing-masing indeks diberi
nama. Pengguna tidak dapat melihat indeks karena indeks hanya digunakan untuk mempercepat query.
Meng-update tabel yang mengandung indeks membutuhkan waktu lebih lama daripada tabel tanpa
indeks karena indeks harus di-update. Oleh karena itu, kita lebih baik membuat indeks hanya pada
kolom yang sering digunakan dalam pencarian.
6.12.1 Indeks Unik
Indeks untik berarti bahwa dua baris tidak dapat mempunyai nilai indeks sama.
Sintaks :
CREATE INDEX nama_indeks
Sistim Basis Data
Sistim Basis Data
76
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)
6.12.3 Menghapus Indeks, Tabel, dan Basisdata
Anda dapat menghapus indeks pada tabel dengan pernyataan DROP.
Sintaks :
DROP INDEX nama_tabel.nama_indeks
Kemudian, Anda pun dapat menggunakan DROP untuk menghapus tabel maupun basisdata.
Sintaks untuk menghapus tabel :
DROP BASISDATA nama_tabel
Jika kita hanya ingin menghapus data dalam suatu tabel, bukan tabel, gunakan perintah TRUNCATE
TABLE.
Sintaks :
TRUNCATE TABLE nama_table
6.13 Alter Table
Pernyataan ALTER TABLE digunakan untuk menambah atau menghapus kolom dalam suatu tabel.
Sintaks :
ALTER TABLE nama_tabel
ADD nama_kolom tipe_data
ALTER TABLE nama_table
DROP COLUMN nama_kolom
Misalnya, pernyataan untuk menambah kolom umur pada tabel pegawai sebagai berikut :
ALTER TABLE pegawai
ADD Umur Int
Hasilnya :
NamaDepan NamaBelakang Alamat Kota Umur
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
Misalnya, pernyataan untuk menghapus kolom alamat dari tabel pegawai sebagai berikut :
ALTER TABLE pegawai
Sistim Basis Data
Sistim Basis Data
77
DROB COLUMN Alamat
NamaDepan NamaBelakang Kota Umur
Adi Nugroho Solo
Diana Nuraini Medan
Hasan Martono Makassar
Suardi Ibrahim Pinrang
Sukma Wati Gowa
6.14 GROUP BY dan HAVING 6.14.1 GROUP BY
Sintaks :
SELECT nama_kolom, COUNT (nama_kolom)
FROM nama_tabel
GROUP BY nama_kolom
Untuk mencari banyaknya pegawai yang tinggal di satu kota, gunakan pernyataan berikut :
SELECT kota, COUNT (kota)AS jumlah
FROM Pegawai
GROUP BY kota
Hasilnya :
Kota Jumlah
Medan 1
Semarang 1
Maros 1
Makassar 2
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
Sistim Basis Data
Sistim Basis Data
78
6.15 Pernyataan SELECT INTO
Pernyataan SELECT INTO digunakan untuk membuat backup suatu tabel.
Sintaks :
SELECT nama_kolom INTO nama_tabel_baru
IN basisdata_baru FROM Sumber
Contoh berikut adalah membuat backup Tabel Pegawai
SELECT * INTO pegawai_backup
FROM pegawai
Klausa IN dapat digunakan untuk menyalin tabel ke basisdata lain.
SELECT Pegawai.*INTO Pegawai IN „backup.mdb‟
FROM pegawai
Jika hanya ingin menyalin beberapa field, Anda dapat melakukannya dengan menuliskan field-field
setelah penyataan SELECT.
SELECT NamaDepan, NamaBelakang INTO
Pegawai_backup
FROM Pegawai
Anda dapat pula menambahkan kluasa WHERE.
Contoh berikut adalah membuat tabel pegawai_Backup dengan dua kolom (NamaDepan,
NamaBelakang) dengan memilih pegawai yang tinggal di Yogyakarta dari Tabel Pegawai.
SELECT NamaDepan, NamaBelakang INTO
Pegawai_backup
FROM Pegawai
WHERE kota =‟Yogyakarta‟
Kita pun dapat memilih data lebih dari satu tabel.
Contoh berikut adalah membuat tabel baru pegawai_pesan backup yang mengandung data dua tabel,
Pegawai dan Pesan.
SELECT Pegawai.NamaDepan, Pesan.NamaBarang
INTO pegawai_pesan_backup
FROM Pegawai INNER JOIN Pesan
ON Pegawai.KodePegawai=Pesan.KodePegawai
Sistim Basis Data
Sistim Basis Data
79
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
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.
2. Menyimpan dokumen XML sebagai objek DOM tree.
3. Menyimpan dokuement XML sebagai himpunan tabel relasional.
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
Serviet
et
Sistim Basis Data
Sistim Basis Data
80
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 :
o Menyediakan bahasa query yang umum untuk dokumen XML,.
o Tidak tergantung pada tipe basisdata tertentu (asli, OODB, RDB).
o Dapat diterapkan pada kumpulan dokumen XML.
o Menyediakan sintaks untuk mencari dokumen dan mengubah hasilnya.
Berikut adalah contoh query dengan spesifikasi XQuery 1.0:
For Sp IN distinct(document(“bib.xml”)//publisher)
LET $a :=avg(dokumen(“bib.xml”)//book(publisher = $pl/price)
RETURN
Sistim Basis Data
Sistim Basis Data
81
<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.
Sistim Basis Data
Sistim Basis Data
82
7.1.2 Mengubah Dokument XML Menjadi Tabel
salah satu karakteristik penting XML adalah XML. Merupakan data semi tertruktur. Sulit untuk
mendefinisikan kata semi terstruktur, secara tepat, tetapi artinya adalah data yang skemanya sulit
dibuat. XML memungkinkan adanya jumlah elemen yang tidak tertentu. Fleksibilitas membuat kita
sulit mengubah dokumen XML menjadi satu atau lebih table relasional karena sebuah table
mempunyai skema pasti.
Gambar 7.2 menunjukkan perubahan antara dokumen XML dan table relasional. Gambar 7.2 (a)
menunjukkan perubahan dari dokumen XML ke himpunan table. Sebuah document XML. Dipecah
menjadi satu atau beberapa table dalam kasuys ini, kita memerlukan teknik untuk mengubah data
tertruktur (dan keturunan) ke data table (tidak berurutan). Kita harus menentukan informasi yang harus
disimpan (beberapa informasi tidak diperlukan). Kemudian, kita harus menetukan jumlah table yang
dibutuhkan untuk menempung dokumen XML. Berdasarkan skema XML, tidak ada cara khusus untuk
melakukan perubahan, tetapi ada beberapa pendekatan yang bisa dilakukan.
Or
(a) Perubahan dari dokumen XML ke table
or
(b) Perubahan antara dokumen XML dan table relasional
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”?>
Sistim Basis Data
Sistim Basis Data
83
<!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 mencari”orang 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 Develover‟s 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.
Sistim Basis Data
Sistim Basis Data
84
Table 7.1. Tabel Relasional untuk po.xml (I): PO_TBL
invoiceNO
VARCHAR (32)
Country
VARCHAR (32)
Name
VARCHAR (128)
Street
VARCHAR (128)
2001-08-12345 US Alice Smith 123 Maple Strrt
Table 7.2. Tabel Relasional untuk po.xml (I): PO_TBL
itemID
VARCHAR (32)
Item
VARCHAR (32)
Qty
INTEGER
Invoice_ID
VARCHAR (32)
2001-08-31-12345-1 ThinkPad X21 2 2001-08-31-12345
2001-08-31-12345-2 ThinkPad T22 1 2001-08-31-12345
7.1.2.1 Merancang Tabel Relasional Sebagaian besar dokumen XML (Misalnya pembelian atau kontrak) dinyatakan dalam banyak table.
Struktur dokumen XML terdiri atas komponen-komponen berikut :
Element yang muncul sekali (misalnya harga total dan tanggal kontrak ) dalam sebuah dokumen
Element yang muncul berulang kali (misalnya barang)
Pengenal yang unit pada tiap dokumen
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.
7.1.2.2 Menentukan Kunci Utama dalam Sebuah Tabel Tabel induk berisi kolom bernilai unit sehingga bias digunakan sebagai kunci utama. Kunci utama
adalah nilai atau kumpulan nilai yang dapat secara unit menentukan baris dalam table. Pada po.xml,
nilai atribut invoice_ID dapat digunakan sebagai kunci utama. RDBMS melarang penyimpanan record
yang mempunyai nilai kunci utama sama sehingga kita harus memastikan bahwa nilainya unik. Jika
sebuah dokumen XML tidak mempunyai pengenal yang unik semacam itu, kunci utama harus dibuat
dan ditambahkan kedalam table untuk menghubungkan dengan table lain. Pada Listing 7.6 dan 7.11,
kita menentukan nama kolom yang tidak muncul dalam po.xml. nilainya dibuat sebagai nilai unit
menggunakan kelas java.rmi.UID.
Beberapa batasan yang ditentukan untuk bahasa XML Scheme dapat diubah menjadi batasan untuk
table. Misalnya, jika sebuah elemen tidak optional, batasan NOT NULL harus diterapkan pada kolom
yang berhubungan.
7.1.2.3 Merancang Tabel untuk Elemen yang Muncul Berulang Elemen yang muncul berulang dalam dokumen XML. (dinyatakan dengan menggunakan “*” dan “+”
dalam DTD) dapat dinyatakan dalam table berbeda. Pada po.xml, elemen item dinyatakan dalam table
yang disebut table anak. Sebuah table induk dan table anal dihubungkan jika RDBMS menerima
query. Untuk table anak, penentuan kunci utama sangat penting meskipun dalam sebagian besar kasus,
dokumen XML asli mempunyai pengenal untuk setiap elemen.
Sistim Basis Data
Sistim Basis Data
85
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.
7.1.2.4 Perubahan Tipe Data Sebuah skema basisdata menentukan tipe untuk masing-masing kolom. Namun, DTD tidak
mendukung tipe data seperti data numeric dan karakter dengan panjang tertentu. Oleh karena itu,
untuk menyatakan informasi tipe data pada sebuah DTD, Anda harus menyatakannya secara eksplisit
dalam dokumen XML dengan menggunakan atribut type. XML schema memungkinkan kita
menentukan tipe data pada XML Scheme, begitu pula dengan RELAX, bahasa skema XML Lainnya.
Sebuah DTD tidak membatasi panjang karakter (meskipun XML, Schema mempunyai kemampuan
untuk itu). Anda harus berhati-hati ketika mengekstrak string dari isi sebuah elemen dan
menyimpannya ke dalam basisdata. Misalnya, jika sebuah kolom ditentukan sebagai
CHARACTER(32
), kita dapat menyimpan sembarang string yang melebihi batasan. Jika panjang maksimum data tidak
dapata diperkirakan, Anda harus menggunakan tipe VARCHAR, yang memungkinkan Anda
mengganti ukuran maksimal setelah table dibuat. Jika karakter sangat panjang, Anda dapat
menggunakan tipe data Character Large Object (CLOB) atau Binary Large Object (BLOB).
7.1.2.5 Semantik Data semua elemen yang muncul sekali tidak selalu dinyatakan sebagai table tersendiri. Ketika sebuah table
relasioanal dirancang, ada banyak teknik pemodelan data. Pembuatan ERD adalah salah satu metode
paling umum dalam pemodelan. Perancangan table tergantung pada apa yang dinyatakan oleh sebuah
dokumen XML. Akibatnya, perubahan otomatis antara dokumen XML dan table sulit terjadi tanpa
mengetahui semantik dari data yang akan disimpan.
Sistim Basis Data
Sistim Basis Data
86
7.1.2.6 Dua Pendekatan Sub-subbab 7.1.2 menunjukkan bagaimana mengubah dokumen XML dan table basisdata. Ketika
mengetahui skema dokumen XML, maka kiata dapat menentukan table yang dapat menyimpan
dokumen XML. Kita menyebutnya metode pemetaan/ namun, jika tidak mengetahui skema dokumen
XML, bagaiman kita dapat menyimpan dokumen.
Salah satu penyelesaiannya adalah dokumen XML menggunakan XPath dan menyimpan pasangan
eksperesi XPath dan isinya, yang dialamati oleh okspresi. Kita menyebut pendekatan dengan metode
XPath. Dengan menggunakan metode XPath, kita dapat menyimpan po.xml dalam table seperti
ditunjukkan pada Gambar 7.3.
Gambar 7.3 menunjukkan kedua pendekatan. Metode pemetaan membutuhkan DTD atau XML
Schema untuk menghubungkan nilai titik (node) dengan nilai kolom dalam table bertipe data yang
sesuai. Disisi lain, metode XPath tidak memerlukan skema, tetapi semua nilai titik disimpan dalam
sebuah kolom dengan tipe data sama.
A B C Primary
Key
001
D Foreign
Key
Primary
Key
001 101
001 102
(a) Metode pemetaan
Content XPath Primay
Key /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
/R(1)/P(1)D/(2) 005
(b) Metode XPath
Gambar 7.3. Metode Pemetaan dan XPath
Node_ID XPath_String Content_string Document_ID 1 /purchaseOrder[1]/@in
voiceNo
2001-08-31-12345 2001-08-31-12345
2 /purchaseOrder[1]/ship
To[1]/@country
US 2001-08-31-12345
3 /purchasesOrder[1]/ship
To[1]/name[1]
Alice Smith 2001-08-31-12345
4 /purchaseOrder[1]/
shipTo[1]street[1]
123 Maple Street 2001-08-31-12345
5 /purchaseOrder[1]/ite 2 2001-08-31-12345
R
Q
A B S C
D D
P
R
Q
A B S C
D D
P
Sistim Basis Data
Sistim Basis Data
87
Ms[1]item[1]@gty
6 /purchaseOrder[1]/ite
Ms[1]?item[1]
thinkPadX21 2001-08-31-12345
7 /purchaseOrder[1]/ite
Ms[1]/item[2]/@qty
1 2001-08-31-12345
8 /purchaseOrder[1]/ite
Ms[1]/item[2]
ThinkPad T22 2001-08-12345
7.2 Perubahan dari Tabel ke Dokumen XML Bagian sebelumnya sudah membahas dari dokumen XML ke tabel realsional. Perubahan dari tabel ke
dokumen XML sering diperlukan ketika data asal disimpan dalam basisdata sebagai record dalam
tabel. Pembahasan di atas sangat penting untuk perubahan semacam ini. Misalnya jika banyak tabel
menyatakan konsep tertentu, seperti pembelian, tabel dapat dinyatakan dalam dokumen XML. Kita
dapat mengubah dokumen XML ke tabel satu per satu dengan link yang berhubungan dengan kunci
tamu. Namun, dalam banyak kasus, perubahaan satu per satu menyebabkan masalah karena tidak
mudah untuk menangani banyak dokumen XML. Jika kunci utama dalam tabel tidak penting dalam
dokumen XML, kunci utama tersebut dpat diabaikan.
7.2.1 Penyajian Bersarang(Nested) dan daftar (Flat) Mari kita melihat bagaimna mengubah tabel yang ditunjukan pada tabel 7.4 7.5 dan 7.6 dengan
menggunakan kedua pendekatan. Tabel menyimpan informasi pembelian. Contoh lebih kompleks dari
pada pendekatan Tabel 7.1 dan 7.2 sehingga kita dapat menjelaskan kedua pendekatan. Tabel 7.4, 7.5
dan 7.6 menunjukan informasi tentang address, quantity, dan product. Kolom invoice_ID pada tabel
7.4 merupakan kunci tamu pada tabel 7.5. Kolom product_ID pada tabel 7.6 mengacu pula pada tabel
7.5
Tabel 7.4 Tabel Relasional untuk Purchase Orders (1) ITEM_TBL
Invoice_ID
VARCHAR (32)
Country
VARCHAR(32)
Name
VARCHAR(128)
Street
VARCHAR(128)
2001-08-31-12345 US Alice Smith 123 Maple Street
2001-08-31-12346 US Bob Miller 1365 Tree Street
2001-08-31-12345 US Alice Smith 123 Maple Street
2001-08-31-12346 US Bob Miller 1365 Tree Street
Tabel 7.5 Tabel Relasional untuk Purchase Orders (2) ITEM_TBL
ItemID
VARCHAR (32)
ProductID
VARCHAR(128)
Name
VARCHAR(128)
Street
VARCHAR(128)
000001 Ibm0010 2 2001-08-31-12345
000002 Ibm0011 1 2001-08-31-12345
000003 Ibm0010 8 2001-08-31-12346
000004 Ibm0011 10 2001-08-31-12346
Tabel 7.6 Tabel Relasional untuk Purchase Orders (3) PRODUCT_TBL
ProductID
VARCHAR(32)
Name
VARCHAR(128)
Company
VARCHAR(64)
ProductID
VARCHAR(32)
Ibm0010 ThinkPad X21 IBM Ibm0010
Ibm0011 ThinkPad T22 IBM Ibm0011
Sistim Basis Data
Sistim Basis Data
88
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
“Kami hanya menunjukkan pintunya
Andalah yang harus melewatinya”
© MEGADATA INDONESIA
www.megadata.co.id