Anda di halaman 1dari 88

Sistim Basis Data

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 1


Sistim Basis Data

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 2


Sistim Basis Data

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 3


Sistim Basis Data

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 4


Sistim Basis Data

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 5


Sistim Basis Data

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 6


Sistim Basis Data

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.

View Level
View 2 ...
View 1 View N

Logical Level

Physical
Level

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 :

Sistim Basis Data 7


Sistim Basis Data

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 8


Sistim Basis Data

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 9


Sistim Basis Data

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 10


Sistim Basis Data

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


Program Query Skema
Aplikasi Basisdata

DBMS
Pemroses Pemroses Kompiler
DML Query DDL

Kode Obyek Pengatur Pengatur


Program Basisdata Kamus

Metode Pengatur
Akses File

Bufter Basisdata
Sistem Dan kamus
data

Gambar 1.3 Struktur Sistem

Sistim Basis Data 11


Sistim Basis Data

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 12


Sistim Basis Data

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 NamaBarang
KodePegawai
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 13


Sistim Basis Data

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 naf adalah pengguna unsophisticated yang berinteraksi dengan Sistem
menggunakan satu program aplikasi yang telah ditulis sebelumnya. Sebagai contoh, teller
bank yang akan mentransfer uang sebesar Rp500.000,00 dari rekening A ke rekening B
menggunakan sejumlah uang, rekening asal dan rekening tujuan.

Contoh lain adalah seorang pengguna yang akan melihat saldo rekening di internet. Pengguna
bisa mengakses formulir di mana dia mengisi nomot rekeningny. Kemudian, program aplikasi
pada Web server mengambil saldo rekening menggunakan nomor rekening yang diberikan dan
mengirimkan informasi kembali ke pengguna.
Antarmuka pengguna yang umum untuk pengguna naf adalah antarmuka berbentuk formulir,
dimana pengguna dapat mengisi field-field di dalamnya. Pengguna naf dapat pula membaca
laporan yang dihasilkan basisdata.

Programmer aplikasi adalah professional yang menulis program aplikasi. Programmer aplikasi
dapat memilih dari banyak tool untuk membuat antarmuka pengguna. Rapid Aplication
DEveloverment (RAD) adalah tool yang memungkinkan programmer apliksi membuat formulir
dan laporan tanpa menulis program. Ada pula bahasa pemrograman tertentu yang
mengomunikasikan struktur control (misalnya loop, while loop, dan if then else) dengan
pernyataan dari bahasa manipulasi data atau DML. Bahasa-bahasa ini kadang disebut bahasa
generasi keempat, yaitu bahasa yang sering memasukkan fitur khusus untuk memfasilitasi
pembentukan formulir dan penampilan data pada layar.

Pengguna 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 14


Sistim Basis Data

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

DBA
Menentukan dan menjalankan

Prosedur dan
Standar
Mengatur dan memonitor

Digunakan oleh
Menguji
Antarmuka
DBA
Menulis

Pemrograman Program DBMS


Aplikasi

Menggunakan Mengatur
Dan / atau

Pengguna Akhir Manajer dan Antarmuka


DATA
Sekretaris DBMS

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.

Sistim Basis Data 15


Sistim Basis Data

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 16


Sistim Basis Data

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 17


Sistim Basis Data

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.

Penerbit

Pengarang Toko Buku

Judul Daftar Buku Pesanan

Gamabr 1.5 Model basisdata hierarki

Sistim Basis Data 18


Sistim Basis Data

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.

Penerbit
(Pemilik)
(set structure)
Kontrak persedian

(anggota))
Pengarang Toko Buku

Gambar 1.6 Model basisdata jaringan

Sistim Basis Data 19


Sistim Basis Data

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.

Penerbit (tabel akar atau orang tua)

Pengarang Toko Buku (tabel


Anak)

Judul Daftar Buku Pesanan (tabel anak level sebelumnya

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

Sistim Basis Data 20


Sistim Basis Data

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

supply
Penerbit Toko Buku

menjual

menulis stok
Pengarang Judul Daftar Buku

pesanan

Pesanan

Gambar 1.8 Model basisdata relasional

Sistim Basis Data 21


Sistim Basis Data

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 22


Sistim Basis Data

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 23


Sistim Basis Data

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

disk disk printer

CPU Pengontrol Pengontrol Pengontrol


Disk Printer Tape drive

bus sistem

Pengontrol
Memori

Memori

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

Sistim Basis Data 24


Sistim Basis Data

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.

client client
client client

Jaringan

client

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

Antarmuka Antarmuka Penulis Antarmuka Front-end


pengguna Formulir Laporan Grafis
SQL antarmuka
(SQL + API

Mesin SQL

Sistim Basis Data 25


Sistim Basis Data

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 26


Sistim Basis Data

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.

Proses Proses Proses


pengguna pengguna pengguna

Proses Proses Proses


pengguna pengguna pengguna

Buffer pool

Query plan cache

Log buffer Lock table

Database
Log write checkpoint write
proccess proccess proccess

Log disk Log disk

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.

Sistim Basis Data 27


Sistim Basis Data

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 28


Sistim Basis Data

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.

Situs A Situs C

jaringan

Komunikasi
melalui
jaringan

Situs B

Gambar 2.5 sistem terdistribusi

Sistim Basis Data 29


Sistim Basis Data

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 :

Entitas
Persegi panjang mewakili kumpulan entitas

Atribut Elips mewakili atribut

Relasi Belah ketupat mewakili relasi

Garis menghubungkan atribut dengan kumpulan entitas dan kumpulan entitas


dengan relasi

Sistim Basis Data 30


Sistim Basis Data

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.

Nama NamaMTK
Nim Alamat KodeMT SKS
K

MAHASISW MATAKULI
1 M mengambil M 1
A AH

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

Sistim Basis Data 31


Sistim Basis Data

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 32


Sistim Basis Data

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 33


Sistim Basis Data

A B

A1 B1

A2 B2

A3 B3

A4 B4

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.

GURU 1 MENGAJAR 1 SISWA

One-to-Many, sebuah entitas pada A berhubungan dengan nol atau lebih entitas pada B.
sebuah entitas pada B dapat dihubungkan dengan paling banyak satu entitas pada A.

A B

B1
A1
B2
A2 B3
A3 B4

B5

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.

Sistim Basis Data 34


Sistim Basis Data

BAGIAN M PEGAWAI
1 mempekerjakan

Many-to-One, sebuah entitas pada A berhubungan dengan paling banyak satu entitas pada B
dapat dihubungkan dengan nol atau lebih entitas pada A.

A B

A1
B1
A2

A3 B2

A4 B3

A5

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.

BAGIAN IV dipekerjakan 1 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

Sistim Basis Data 35


Sistim Basis Data

A B

A1 B1

A2 B2

A3 B3

A4 B4

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.

MAHASISWA M N MATAKULIAH
mengambil

Pemetaan kardinalitas yang sesuai untuk himpunan relasi tertentu tergantung pada situasi dunia nyata.
Sebagai gambaran, kita mengambil contoh himpunan relasi pepinjam. Jika pada suatu bank, pinjaman
dapat dimiliki oleh hanya satu nasabah dan seorang nasabah dapat mempunyai beberapa pinjaman,
maka himpunan relasi nasabah pinjaman adalah one-to-many. Jika sebuah pinjaman dapat dimiliki
oleh beberapa nasabah, himpunan relasinya adalah many-to-many.

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

Sistim Basis Data 36


Sistim Basis Data

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 37


Sistim Basis Data

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.

Bagian Pengawas
dijalankan

Ditugaskan
ke

Pegawai
Proyek
Bekerja
pada

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.

Sistim Basis Data 38


Sistim Basis Data

Masing-masing proyek dikerjakan oleh paling tidak satu pegawai.


Seorang pegawai bisa mendapat tugas 0 atau beberapa proyek.

Bagian Pengawas
dijalankan

Ditugaskan
ke

Pegawai
Proyek
Bekerja
pada

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.

Sistim Basis Data 39


Sistim Basis Data

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 40


Sistim Basis Data

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 41


Sistim Basis Data

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 42


Sistim Basis Data

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 43


Sistim Basis Data

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 44


Sistim Basis Data

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 pseudoSQLsebagai berikut :
BARANG (b#,b#, qty)
Kunci utama (p#, b#)
Foreign Key (p#) references PEMASOK_KOTA .p#
PEMAOK_KOTA (p#, kota)
Kunci utama (p#)
Foreign Key (p#) references PEMASOK_KOTA . kota
KOTA_STATUS (kota, status)
Kunci utama (kota)
Keuntungan bentuk normal ketiga adalah menghilngkan data berulang sehingga akan menghemat
ruang dan mengulangi anomali.
Sebagai contoh, peningkatan pada contoh tebel di atas adalah :
1. INSERT. Fakta tentang status sebuah kota, semarang mempunyai status 40, dapat
ditambahkan meskipun mereka belum memasok barang.

Sistim Basis Data 45


Sistim Basis Data

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 46


Sistim Basis Data

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 47


Sistim Basis Data

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
Data salah
1211 28 pemrograman
1544 11 pemrograman
Data salah
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.

Sistim Basis Data 48


Sistim Basis Data

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 49


Sistim Basis Data

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 50


Sistim Basis Data

Sistem administrasi Sistem operasi (SA)(root pada Unix, Admin pada Novel) dapat mengontrol
account Sistem operasi dan account basisdata. Sistem adminitrasi maupun Sistem administrator
Basisdata mempunyai potensi melakukan kesalahan. Bagian proses adalah cek and balance untuk
mematikan bahwa yang super tidak disalahgunakan.
Berikut adalah daftar yang menunjukkan tingkatan akses ke sata Sistem informasi :
Pengguna Super (root pada Unix, Admin pada Novell)

Pemilik Basisdata

Pemilik Skema

Pengguna Akhir

Pengguna super adalah account pada Sistem operasi yang mempunyai privilege paling banyak.
Pengguna super memilki akses ke semua file yang disimpan pada Sistem. Pemilik basisdata memiliki
akses ke semua file yang berhubungan dengan software basisdata dan file data pada suatu Sistem.
Meskipun pemilik basisdata dibatasi pada file-file yang berhubungan dengan basisdata, tetapi kita
perlu mengingat bahwa sebagian file pada sebagian Sistem berhubungan dengan basisdata. Pemiliki
skema adalah membuat dan pemilik objek-objek basisdata yang digunakan untuk aplikasi pengguna.
Pemilik skema mempunyai akses tak terbatas ke seluruh objek skema dan bertanggung jawab
mengontrol akses ke account pengguna lainnya. Pengguna akhir mempunyai akses paling sedikit
meskipun basisdata dibust untuk pengguna akhir.
Gambar 5.1 menunjukkan hubungan pengguna dengan basisdata. Objek-objek basisdata dimiliki oleh
skema yang member akses terhadap objek kepada pengguna akhir. Jika pengguna akhir mempunyai
privilege yang cukup, mereka dapat mengakses tabel, view dan objek lainnya di dalam skema.

Pemilik Skema

Ke Pengguna PENGGUNA1

Query PENGGUNA2
TABEL TABEL
1 3 Membuat
Update data
Hapus data
Skema
PENGGUNA3

PENGGUNA4

VIEW1 VIEW2

Gambar 5.1 Hubungan pengguna dengan basisdata

Sistim Basis Data 51


Sistim Basis Data

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 52


Sistim Basis Data

skema bertanggung jawab menggrant privilege objek kepada pengguna dan DBA meng-grant privilege
Sistem.

Grant pada ke

Grant TABEL1
ke PENGGUNA1
SELECT TABEL2
Pemilik Skema INSERT VIEW1
UPDATE VIEW2
DELETE
PENGGUNA2

CREATE PENGGUNA3
Pemilik Skema TABEL
CREATE
INDEX
CREATE VIEW
PENGGUNA4

Gambar 5.2 Proses pengaturan akses pengguna akhir melalui privilege basisdata

Sistim Basis Data 53


Sistim Basis Data

5.2.3 Role
Kombinasi privilege basisdata dan privilege tabel CRUD yang diperlukan untuk menyelesaikan
pekerjaan tetentu dapat diberikan pada pengguna secara individu. Namun, hal ini tidak efektif. Sebagai
bagian perancangan, kita bisa menentukan fungsi pekerjaan yang ada pada aplikasi kita dan privilege
yang ada pada basisdata, tabel-tabelnya, dan objek-objek basisdata lain yang dibutuhkan oleh masing-
masing fungsi pekerjaan. Kemudian, kita bisa membuat objek basisdata yang disebut role. Role
mengikutsertakan seluruh privilege yang dibutuhkan untuk menyelesaikan fungsi pekerjaan.
Lebih lanjut, pengguna di-grant satu atu lebih role. Identitas pengguna digrant pada role yang
dibutuhkan untuk menyelesaikan semua fungsi yang berhak dilakukan oleh pengguna tertentu. Sebagai
tambahan pada SELECT, INSERT, UPDATE, atau DELETE, role bisa pula memasukkan privilege
melalui kunci tamu, atau mengekseskusinya. Menggunakan role akan menyederhanakan pengaturan
akses basisdata dan pengaturan privilege objek basisdata.
membuat
Grant pada ke DBA
TABEL1
SELECT TABEL2
Pemilik Skema INSERT VIEW1
UPDATE
VIEW2
DELETE
Grant

CREATE APP_ROLE
Pemilik Skema TABEL 1
CREATE
INDEX
CREATE VIEW

PENGGUNA PENGGUNA
1 3

PENGGUNA PENGGUNA
2 4

Gambar 5.3 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.

Sistim Basis Data 54


Sistim Basis Data

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 55


Sistim Basis Data

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 56


Sistim Basis Data

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 57


Sistim Basis Data

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 58


Sistim Basis Data

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 59


Sistim Basis Data

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 60


Sistim Basis Data

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 61


Sistim Basis Data

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 62


Sistim Basis Data

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 63


Sistim Basis Data

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 64


Sistim Basis Data

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 65


Sistim Basis Data

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 66


Sistim Basis Data

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 67


Sistim Basis Data

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 68


Sistim Basis Data

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 BETWEENAND 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 69


Sistim Basis Data

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 70


Sistim Basis Data

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 71


Sistim Basis Data

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 72


Sistim Basis Data

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 73


Sistim Basis Data

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 74


Sistim Basis Data

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) Hanya untuk nilai integer. Jumlah
Int (ukuran) angka maksimum ditentukan dalam
Smallant (ukuran) tanda kurung.
Tinylnt (ukuran)
Decimal (ukuran, D) Untuk bilangan pecahan. Jumlah
Numeric (ukuran,D) angka maksimum ditentukan dalam
tanda kurung. Jumlah angka di
belakang koma ditentukan dalan D
Char (Ukuran) Untuk string dengan panjang
Varchar (ukuran) 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 75


Sistim Basis Data

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 76


Sistim Basis Data

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 77


Sistim Basis Data

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 78


Sistim Basis Data

Bab 7
XML dan Basisdata
7.1 Pendahuluan
Subbab 7.1 akan membahas cara menyajikan data terstruktur dengan XML, menyimpan dalam
relational dababase management Sistem (RDBMS), dan mencarinya.
Pembuatan aplikasi model three-tier terdiri ats Web Browser atau aplikasi client sebagai tier 1, Web
server atau aplikasi server sebagai tier 2, dan Sistem basisdata atau Sistem transaksi sebagai tier 3
(lihat Gambar 7.1). sebuah RDBMS seringkali digunakan sebagai tier 3 dalam Sistem three
tier(Maruyama. 2002).
Tier 1 Tier 2 Tier 3
HTML/XML JDBC

Serviet
et
User Agent Aplication
Database
(Browse) Server

Gambar 7.1 RDMBMS digunakan sebagai tier 3 dalam Sistem there tier
Saat ini , java applet yang digunakan dalam pengembangan aplikasi sisi client sangat dominan, begitu
pula java yang digunakan dalam pengembangan aplikasi sisi server. Sekarang, XML semakin sering
digunakan dalam pertukaran data antara aplikasi web. XML Schema memungkinkan kita
mendefinisikan tipe data dan menghubungkannya dengan tabel.
7.1.1 Menyimpan dan Mencari Dokument XML
Sistem menajemen basisdata seperti RDBMS sangat efisien dalam menangani data berjumlah banyak
dan RDBMS pun menyediakan fasilitas untuk menjagaintegritas, konsistensi, dan keteesedian. Model
three tier yang ditunjukkan Gambar 7.1 hanya digunakan pada aplikasi seperti pembelian, pemesanan
tiket, dan lain-lain. Namun, data yang disimpan pada Sistem tidak dalam format XML.
Ada tiga pendapatan untuk menyinpan data dalam format XML di dalam Sistem basisdata, yaitu :
1. Menyimpan dokumen XML sebagai XML sebagai dokumen terstruktur.

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

Sistim Basis Data 79


Sistim Basis Data

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 80


Sistim Basis Data

<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 81


Sistim Basis Data

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 82


Sistim Basis Data

<!DOCTYPE PurchaseOrder [
<!ELEMET purchaseOrder (shipTo, Item)>
<!ATTLIST purchaseOrder invoiceNo CDATA #REQUIRED >
<!ELEMET shipTo (name,street?>
<!ELEMET shipTo Country CDATA #REQUEIED>
<!ELEMET name (#PCDATA)>
<!ELEMET street (#PCDATA?>
<!ELEMET items (item*)>
<!ELEMET item (#PCDATA)>
<!ATTLIST item qty CDATA #REQUIRED >
]>
<purchasesOrder invoiceNo=2001-08-031012345>
<shipto country=US>
<name>Alice Smisth</name>
<street>123 Maple Street</street>
</shipto>
<item>
<item qty=2>thinkPad X21</item>
<item qty=1>ThinPad T22</item>
</purchaseOrder>
Jika skema (DTD) untuk sebuah dokumen sudah dibuat, maka kita dapat menentukan skema tabelnya.
Skema dua table untuk menyimpan dokumen PO.xml ditunjukkan pada Tabel 7.1 dan 7.2. item data
yang muncul sekali pada dokumen (seperti invoiceNo dan name)dapat dinyatakan dalam sebuah table
(lihat Tabel 7.1). item yang muncul lebih dari sekali (seperti item) harus dinyatakan dalam table
terpisah (lihat Tabel 7.2). ini berarti dokumen XML adalah data semi terstruktur sehingga dalam
banyak kasus, kita tidak meungkin mengubahnya ke sebuah table. Jika Anda ingin melakukan query
untuk mencariorang yang memesan ThinkPad X@!, kedua table harus dihubungkan karena elemen
name dan item dipetakan ke table berbeda, jika struktur dokumen XML tidak terlalu kompleks dan
skema dapat ditentukan, maka pendekatan dapat dilakukan.
Jika dokumen XML dapat dipecah menjadi beberapa table, datanya dapat diakses melalui SQL, ini
dapat diintegrasikan dengan data lain (selain XML) yang disimpan dalam basisdata dan aplikasi yang
ada. Hal ini merupakan keuntungan menengani dokumen XML dengan RDBMS.
Seperti dikatakan sebelumnya, perubahan antara dokumen XML dan table adalah pekerjaan yang tidak
mudah. Namun, vendor basisdata seperti IBM dan Oracle menyediakan tool untuk mempermudah
pekerjaan. Misalnya, DB2 XML Extender menyediakan bahasa pemetaan berbasis XML. Oracle
menyediakan XML Develovers Kit (XDK) berisi prosesor XML yang mendukung XML Schema dan
kelas-kelas untuk membuat aplikasi dengan menggunakan XML dan basisdata. Dengan menggunakan
tool-tool, kita dapat mengurangi biaya perancangan dan perubahan skema.

Sistim Basis Data 83


Sistim Basis Data

Table 7.1. Tabel Relasional untuk po.xml (I): PO_TBL


invoiceNO Country Name Street
VARCHAR (32) VARCHAR (32) VARCHAR (128) VARCHAR (128)
2001-08-12345 US Alice Smith 123 Maple Strrt

Table 7.2. Tabel Relasional untuk po.xml (I): PO_TBL


itemID Item Qty Invoice_ID
VARCHAR (32) VARCHAR (32) INTEGER 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 84


Sistim Basis Data

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 85


Sistim Basis Data

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.

R A B C Primary
Key
001
P Q

A B S C
D Foreign Primary
Key Key
D D 001 101
001 102
(a) Metode pemetaan
R
Content XPath Primay
Key
P Q /R(1)P/P(1)A(1) 001
/R(1)/P(1)/B(1) 002
/R(1)/(1)/B/(1) 003
/R(1)/P(1)D/(1) 004
A B S C /R(1)/P(1)D/(2) 005

(b) Metode XPath


D D

Gambar 7.3. Metode Pemetaan dan XPath

Node_ID XPath_String Content_string Document_ID


1 /purchaseOrder[1]/@in 2001-08-31-12345 2001-08-31-12345
voiceNo
2 /purchaseOrder[1]/ship US 2001-08-31-12345
To[1]/@country
3 /purchasesOrder[1]/ship Alice Smith 2001-08-31-12345
To[1]/name[1]
4 /purchaseOrder[1]/ 123 Maple Street 2001-08-31-12345
shipTo[1]street[1]
5 /purchaseOrder[1]/ite 2 2001-08-31-12345

Sistim Basis Data 86


Sistim Basis Data

Ms[1]item[1]@gty
6 /purchaseOrder[1]/ite thinkPadX21 2001-08-31-12345
Ms[1]?item[1]
7 /purchaseOrder[1]/ite 1 2001-08-31-12345
Ms[1]/item[2]/@qty
8 /purchaseOrder[1]/ite ThinkPad T22 2001-08-12345
Ms[1]/item[2]

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 Country Name Street
VARCHAR (32) VARCHAR(32) VARCHAR(128) 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 ProductID Name Street
VARCHAR (32) VARCHAR(128) VARCHAR(128) 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 Name Company ProductID
VARCHAR(32) VARCHAR(128) VARCHAR(64) VARCHAR(32)
Ibm0010 ThinkPad X21 IBM Ibm0010
Ibm0011 ThinkPad T22 IBM Ibm0011

Sistim Basis Data 87


Sistim Basis Data

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

Sistim Basis Data 88

Anda mungkin juga menyukai