sistem basis data

88
Sistim Basis Data Sistim Basis Data 1 Bab 1 PENGANTAR 1.1 Apa Itu Basisdata Basisdata, menurut stephens dan Plew (2000), adalah mekanisme yang digunakana untuk menyimpan informasi atau data, informasi adalah sesuatu yang kita gunakan sehari-hari untuk berbagai alasan. Dengan basisdata, pengguna dapat menyimpan data secara terorganisasi. Setelah data disimpan, informasi harus mudah diambil. Criteria dapat digunakan untuk mengambil informasi. Cara menyimpan data dalam basisdata menentukan seberapa mudah mencari informasi berdasarkan banyak kriteria. Data pun harus mudah ditambahkan ke dalam basisdata, dimodifikasi,dan dihapus. Kemudian, Silberchatz, dkk,; (2002) mendefinisikan basisdata sebagai kumpulan data berisi informasi yang sesuai untuk sebuah perusahaan. Sistem menajemen basisdata (DBMS) adalah kumpulan data yang saling berhubungan dan kumpulan program untuk mengakses data. Tujuan utama Sistem menajemen basisdata adalah menyediakan cara menyimpan dan mengambil informasi basisdata secara mudah dan efesien. Ramakrishnan dan Gehrke (2003) menyatakan basisdata sebagai kumpulan data, umumnya mendeskripsikan aktivitas satu organisasi atau lebih yang berhubungan. Misalnya, basisdata universitas mungkin berisi informasi mengenai hal berikut : Entitas seperti mahasiswa, fakultas, mata kuliah, dan ruang kuliah. Hubungan antar entitas seperti registrasi mahasiswa dalam mata kuliah, fakultas yang mengajarkan mata kuliah, dan penggunaan ruang untuk kuliah. Definisi basisdata, menurut McLeod, dkk,(2001) adalah kumpulan seluruh sumber daya berbasis Komputer milik organisasi. Sistem manejemen basisdata adalah aplikasi perangkat lunak yang menyimpan struktur basisdata, hubungan antardata dalam basisdata yang dikendalikan oleh Sistem manejemen basisdata adalah satu set catatan data yang berhubungan dan saling menjelaskan. Basisdata warisan (legacy database) adalah basisdata yang sedang digunakan oleh sebuah perusahaan. Istilah warisan menyatakan bahwa basisdata telah dipakai selama beberapa tahun dan basisdata yang ada tidak sesuai dengan teknologi masa kini. Ketika sebuah perusahaan telah menentukan untuk merancang sebuah basisdata, basisdata yang ada dianggap sebagai basisdata warisan. Contoh basisdata yang telah kita kenal adalah : Buku alamat Buku telepon Kata log perpustakaan Took buku online Peta jalan

Upload: azhari

Post on 08-Apr-2016

231 views

Category:

Documents


5 download

DESCRIPTION

PENGANTAR SISTEM BASIS DATA

TRANSCRIPT

Sistim Basis Data

Sistim Basis Data

1

Bab 1

PENGANTAR

1.1 Apa Itu Basisdata

Basisdata, menurut stephens dan Plew (2000), adalah mekanisme yang digunakana untuk menyimpan informasi atau data, informasi adalah sesuatu yang kita gunakan sehari-hari untuk berbagai alasan. Dengan basisdata, pengguna dapat menyimpan data secara terorganisasi. Setelah data disimpan, informasi harus mudah diambil. Criteria dapat digunakan untuk mengambil informasi. Cara menyimpan data dalam basisdata menentukan seberapa mudah mencari informasi berdasarkan banyak kriteria. Data pun harus mudah ditambahkan ke dalam basisdata, dimodifikasi,dan dihapus.

Kemudian, Silberchatz, dkk,; (2002) mendefinisikan basisdata sebagai kumpulan data berisi informasi yang sesuai untuk sebuah perusahaan. Sistem menajemen basisdata (DBMS) adalah kumpulan data yang saling berhubungan dan kumpulan program untuk mengakses data. Tujuan utama Sistem menajemen basisdata adalah menyediakan cara menyimpan dan mengambil informasi basisdata secara mudah dan efesien.

Ramakrishnan dan Gehrke (2003) menyatakan basisdata sebagai kumpulan data, umumnya mendeskripsikan aktivitas satu organisasi atau lebih yang berhubungan. Misalnya, basisdata universitas mungkin berisi informasi mengenai hal berikut :

Entitas seperti mahasiswa, fakultas, mata kuliah, dan ruang kuliah.

Hubungan antar entitas seperti registrasi mahasiswa dalam mata kuliah, fakultas yang mengajarkan mata kuliah, dan penggunaan ruang untuk kuliah.

Definisi basisdata, menurut McLeod, dkk,(2001) adalah kumpulan seluruh sumber daya berbasis

Komputer milik organisasi. Sistem manejemen basisdata adalah aplikasi perangkat lunak yang

menyimpan struktur basisdata, hubungan antardata dalam basisdata yang dikendalikan oleh Sistem

manejemen basisdata adalah satu set catatan data yang berhubungan dan saling menjelaskan.

Basisdata warisan (legacy database) adalah basisdata yang sedang digunakan oleh sebuah perusahaan.

Istilah warisan menyatakan bahwa basisdata telah dipakai selama beberapa tahun dan basisdata yang

ada tidak sesuai dengan teknologi masa kini. Ketika sebuah perusahaan telah menentukan untuk

merancang sebuah basisdata, basisdata yang ada dianggap sebagai basisdata warisan.

Contoh basisdata yang telah kita kenal adalah :

Buku alamat

Buku telepon

Kata log perpustakaan

Took buku online

Peta jalan

Sistim Basis Data

Sistim Basis Data

2

Beberapa basisdata di atas merupakan statis, sedangkan yang lainnya dinamis. Sebagai contoh, peta jalan adalah basisdata statis yang mengandung informasi seperti kota, arah, jarak, dan sebagainya.

Dengan melihat sebuah peta, Anda cepat menemukan tujuan relative terhadap posisi Anda sekarang.

Informasi pada peta tidak berubah dalam waktu lama. Buku telepon pun merupakan basisdata statis

karena informasi di dalamnya hanya dicetak setiap tahun.

Buku alamat adalah contoh basisdata dinamis yang banyak digunakan sehari-hari. Buku alamat

merupakan basisdata dinamis karena isinya dapat diubah dengan cepat. Alamat teman baru dapat

ditambahkan dan alamat lama dapat dihapus dengan mudah.

1.2 Aplikasi Sistem Basisdata

Basisdata digunakan secara luas. Berikut adalah beberapa contoh aplikasi :

Perbankan : untuk informasi pelanggan, rekening, peminjaman, dan transaksi perbankan.

Penerbangan : untuk informasi pemesanan dan jadwal. Penerbangan adalah salah satu yang pertama yang menggunakan abasisdata meleluai jaringan telepon dan jaringan data lainnya.

Universitas : untuk informasi mahasiswa, pendaftaran kuliah, dan nilai.

Transaksi kartu kredit : untuk membeli dengan kartu kredit dan membuat tagihan bulanan.

Telekomunikasi : untuk mencatat semua penggilan, membuat tagihan bulanan, mencatat saldo dari kartu prabayar, dan menyimpan informasi tentang jaringan komunikasi.

Keuangan : untuk menyimpan informasi tentang perusahaan serta menjual dan membeli alat keuangan seperti saham dan obligasi.

Penjualan : untuk informasi pelanggan, produk, dan pembelian.

Perusahaan : untuk mengelola menajemen rantai pasokan dan melacak produksi barang-barang di pabrik, investaris barang-barang di gudang atau toko, dan pesanan barang-barangt.

Sumber daya manusia : untuk informasi tentang pegawai, gaji, pajak, dan pembuatan cek pembayaran.

Seperti yang sudah diilustrasikan, basisdata membentuk bagian penting semua perusahaan masa kini.

Lebih dari empat dekate lalu, pengguna basisdata meningkat di semua perusahaan. Pada awalnya,

hanya sedikit orang berinteraksi secara langsung dsistem basisdata. Meskipun tidak menyadarinya,

mereka telah berinteraksi dengan baisdata secara tidak langsung, misalnya melalui laporan yang

dicetak seperti tagihan kartu kredit atau melalui agen seperti teller bank dan agen perjalanan.

Sebaliknya, ATM memaksa pengguna berinteraksi secara langsung dengan basisdata.

Revolusi internet pada akhir 1990 meningkatkan jumlah penggunaan yang mengakses basisdata

secara langsung.banyak organisasi mengubah sistem pengaksesan basisdata melalui telepon ke sistem

web dan membuat bermacam layanan dan informasi yang tersedia secara online. Misalnya,ketika

mengakses toko buku online dan mencari koleksi buku atau music, Anda mengakses data yang

disimpan dalam suatu basis data. Ketika anda memesan sesuatu secara online, pesanan disimpan

Sistim Basis Data

Sistim Basis Data

3

dalam basis data. Ketika mengakses suatu website, informasi tentang anda bisa diambil dari basisdata agar dapat memilih iklan yang bisa ditawarkan pada Anda.

Oleh karena itu, sebagian besar orang tidak menyadari apabila telah berhubungan dengan basisdata

pengaksesan basisdata merupakan bagian penting kehidupan hampir semua orang saat ini.

1.3 Sistem Basisdata dan Sistem File

Kita mengambil contoh bagian suatu bank yang menyimpan informasi tentang semua pelanggan dan

rekening. salah satu cara menyimpan informasi pada Komputer adalah menyimpannya pada file-file

Sistem operasi. Agar pengguna dapat memanipulasi informasi, Sistem operasi memiliki sejumlah

program aplikasi untuk memanipulasi file. Contohnya adalah:

Program untuk menambah atau mengurangi jumlah uang dalam rekening.

Program untuk membuat rekening baru.

Program untuk menghitung saldo rekening.

Program untuk membuat laporan bulanan.

Program aplikasi baru ditambahknan ke dalam Sistem jika dibutuhkan. Misalnya, bank memutuskan

untuk menawarkan pengecekan rekening yang disimpan. Oleh karena itu, dengan berjalannya waktu,

Sistem membutuhkan lebih banyak file dan lebih banyak program aplikasi.

DBMS adalah bagian perangkat lunak yang dirancang untuk membuat tugas sebelumnya menjadi

lebih mudah. Dengan menyimpan data dalam DBMS dari sebuah kumpulan file Sistem operasi, kita

dapat menggunakan fitur DBMS untuk mengola data secara efisien. Karena volume data dan

pengguna terus bertambah, ratusan gigabye dan dan ribuan pengguna merupakan hal biasa dalam

basisdata perusahaan saat ini sehingga dukungan DBMS sangat diperlukan (Ramakrishan dan

Grehke,2003).

Sistem pemrosesan file didukung oleh Sistem operasi konvensional. Sistem file menyimpan record-

record bermacam-macam file, membutuhkan program aplikasi yang berbeda untuk memilih record

file, dan menambah recor ke dalam suatu file. Sebelum Sistem Manajemen basisdata muncul,

perusahaan-perusahaan menyimpan informasi dalam Sistem file (McHaney, 2005)

Menyimpan informasi perusahaan dalam Sistem file memilih sejumlah kelamahan (Silberschatz,

dkk,2002), yaitu :

Pengulangan dan ketidakkonsistenan data

Karena progremer berbeda membuat file dan program aplikasi dalam waktu lama, ada

kemungkinan berbagai macam file memiliki format berbeda dan program bisa ditulis dalam

beberapa bahas pemrograman. Kemudian, informasi yang sama bisa terduplikasi di beberapa

tempat. Misalnya, alamat dan nomor telepon seorang pelanggan bisa muncul pada file berisi

rekening dan file berisi pengecekan rekening. Pengulangan menyebabkan meningkatnya

kebutuhan penyimpanan dan biaya akses. Lebih lanjut, pengulangan dapat pula menyebabkan

ketidakkonsistenan data, dimana data yang sama ditulis berbeda. Misalnya : perubahan alamat

pelanggan dilakukan pada file rekening, tetapi tidak ditempat lain.

Sistim Basis Data

Sistim Basis Data

4

Kesulitan mengakses data

Misalnya seorang petugas bank ingin nama semua pelanggan yang bertempat tinggal di daerah

dengan kode pos tertentu, ia meminta bagian pemrosesan data untuk membuat daftar

pelanggan yang dicari. Karean perancang Sistem tidak mengantisipasi permintaan semacam

itu, tidak ada program aplikasi untuk membuatnya. Program yang ada hanyalah program

apalikasi untuk membuat daftar semua pelanggan. Sekarang, petugas memiliki dua pilihan :

apakah menerima daftar semua pelanggan dan memilah informasi yang dibutuhkan secara

manual atau meminta programmer membuat program aplikasi sesuai kebutuhan. Kedua

alternatif sama-sama tidak memuaskan. Misalnya, program semacam itu dibuat, tetapi

beberapa hari kemudian, petugas yang sama menginginkan daftar yang hanya memasukkan

pelanggan bersaldo lebih besar dari Rp.100.000.000,00. Seperti sudah diduga, program untuk

menampilkan daftar semacam itu tidak ada. Sekali lagi, petugas diharapkan pada dua pilihan

yang tidak memuaskan.

Penekanan disini adalah lingkungan pemrosesan file konvensional tidak memungkinkan data

yang diinginkan mudah diambil. Lebih lanjut, pengguna membutuhkan Sistem pengambilan

data yang memenuhi kebutuhannya.

Kekangan Data

Karena data tersebar diberbagai file yang berbeda format, maka pembuatan program aplikasi

untuk mengambil data yang dibutuhkan menjadi sulit.

Masalah Integritas

Nilai data yang disimpan dalam basisdata harus mengikuti batasan tertentu. Sebagai contoh,

saldo suatu rekening tidak boleh lebih kecil dari nilai tertentu, sebagai contoh, saldo suatu

rekening tidak boleh lebih kecil dari Rp500.000,00. Programmer menjalankan batasan dalam

Sistem dengan menambahkan kode tertentu pada semua program aplikasi. Namun, ketika

batasan ditambahkan, program sangat sulit diubah untuk menjalankan batasan. Masalah

semakin rumit jika batasan melibatkan beberapa data dari file-file berbeda.

Masalah atomik

Sistem Komputer, seperti peralatan mekanik atau listrik lainnya, mudah mengalami kerusakan.

Dalam beberapa aplikasi, jika kerusakan terjadi, data harus bisa dikembalikan seperti sebelum

kerusakan. Sebagai contoh, kerusakan Sistem terjadi saat mentransfer Rp500.000,00 dari

rekening A ke rekening B. ada kemungkinan bahwa uang Rp500.000,00 sudah dikurangkan

dari rekening A, tetapi belum ditambahkan ke rekening B. hasilnya adalah ketidakkonsistenan

data dalam basisdata. Oleh karena itu, konsistensi basisdata penting untuk dijaga, yaitu suatu

proses harus terjadi atau tidak sama sekali. Jadi, dalam hal ini, transfer uang harus atomic.

Artinya, transfer harus terjadi secara utuh atau tidak sama sekali. Memastikan atomisitas pada

Sistem pemrosesan file konvensional memang sangat sulit.

Sistim Basis Data

Sistim Basis Data

5

Anomali pada akses bersamaan

Untuk mempertahankan kinerja Sistem dan respon yang lebih cepat, banyak Sistem

memperbolehkan lebih dari satu pengguna memperbarui data secara bersamaan. Pada

lingkungan semacam itu, memperbarui data secara bersamaan. Pada lingkungan semacam itu

update secara bersamaan bisa menyebabkan ketidakkonsistenan data. Kita mengambil contoh

rekening A yang memilki Rp500.000,00. Jika dua pelanggan mengambil uang

(misalnyaRp50.000,00 dan Rp100.000,00) dari rekening A hampir bersamaan, maka kedua

proses akan menyebabkan saldo rekening menjadi salah. Misalnya, program meng-update

rekening dengan membaca saldo terakhir, mengurangi saldo dengan jumlah uang yang diambil,

lalu menuliskan saldonya pada rekening. Jika kedua proses berjalan secara bersamaan, maka

keduanya akan membaca nilai saldo Rp500.00,00 dan masing-masing menuliskan nilai saldo

terakhir Rp450.000,00, dan Rp 400.000,00. Hal ini tergantung pada proses yang terjadi

terakhir, rekening memiliki saldo terakhir Rp 450.000,00 atau Rp 400.000,00, bukan Rp

350.000,00 seperti yang seharusnya. Untuk mencegah terjadinya kesalahan, Sistem harus

melakukan beberapa bentuk pengawasan. Namun, pengawasan sulit dilakukan karena data bisa

diakses oleh program aplikasi berbeda yang belum dikoordinasikan sebelumnya.

Masalah Keamanan

Tidak semua pengguna sistem basisdata bisa mengakses semua data. Sebagai contoh, dalam Sistem perbankan, pegawai bagaian penggajian hanya diperbolehkan melihat bagian basis data yang berhubungan dengan masalah penggajian. Mereka tidak diperkenankan mengakses informasi tentang rekening pelanggan. Namun, karena program aplikasi ditambahkan ke dalam Sistem hanya untuk tujuan khusus. Pelaksanaan tindakan pengaman semacam itu merupakan hal sulit.

1.4 Sistem Manajemen Basisdata (DBMS)

Ramakrishnan dan Gehrke (2003) menyatakan Sistem Manajemen Basisdata (DBMS) adalah perangkat lunak yang didesain untuk membantu memelihara dan memanfaatkan kumpulan data yang besar. Kebutuhan akan Sistem termasuk pula penggunaanya yang berkembang pesat. Alternatif penggunaan DBMS adalah menyimpan data dalam file dan menulis kode aplikasi tertentu untuk mengatur. Penggunaan DBMS memiliki beberapa manfaat penting.

1.4.1 Kentungan DBMS

DBMS memungkinkan perusahaan maupun pengguna individu untuk:

Mengurangi pengulangan data

Apabila dibandingkan dengan file-file Komputer yang disimpan terpisah di setiap aplikasi Komputer, DBMS mengurangi jumlah total file dengan menghapus data yang terduplikasi di berbagai file. Data terduplikasi selebihnya dapat ditempatkan dalam suatu file.

Mencapai independensi data

Sistim Basis Data

Sistim Basis Data

6

Spesifikasi data disimpan dalam skema pada tiap program aplikasi. Perubahan dapat dibuat pada struktur data tanpa memengaruhi program yang mengakses data.

Mengintegrasikan data beberapa file

Saat file dibentuk sehingga menyediakan kaitan logis maka organisasi fisik bukan merupakan kendala. Organisasi logis, pandangan pengguna, dan program aplikasi tidak harus tercermin pada media penyimpanan fisik.

Mengambil data dan informasi dengan cepat

Hubungan-hubungan logis, bahasa manipulasi data, serta bahasa query memungkinkan pengguna mengambil data dalam hitungan detik atau menit.

Meningkatkan keamanan

DBMS mainframe maupun Komputer mikro dapat menyertakan beberapa lapis keamanan seperti kata sandi( password) direktori pemakai, dan bahasa sandi (encryption) sehingga data yang dikelola akan lebih aman.

1.4.2 Kerugian DBMS Keputusan menggunakan DBMS mengikuti perusahaan atau pengguna untuk:

Memperoleh perangkat lunak yang mahal

DBMS mainframe masih sangat mahal. Walupun harga DBMS berbasis Komputer mikro lebih murah, tetapi tetap merupakan pengeluaran besar bagi suatu organisasi kecil.

Memperoleh konfigurasi perangkat keras yang besar

DBMS sering memerlukan kapasitas penyimpan dan memori lebih besar dari pada program aplikasi lain.

Memperkejakan dan mempertahankan staf DBA

DBMS memerlukan pengetahuan khusus agar dapat memanfaatkan kemampuannya secara penuh. Pengetahuaan khusus ini disediakan paling baik oleh para pengelola basis data ( DBA )

Baik basisdata terkomputerisasi maupun DBMS bukanlah prasyarat untuk memecahkan masalah,

Namun keduanya memberikan dasar-dasar menggunakan Komputer sebagai suatu Sistem informasi

bagi para spesialis informasi dan pengguna.

1.5 Pandangan Data

Sistem basisdata adalah kumpulan file yang saling berhubungan dan kumpulan program yang memungkinkan pengguna mengakses dan mengubah file-file. Tujuan utama Sistem basis data adalah membveri pengguna pandangan abstrak suatu data. Pandangan berarti Sistem menyenbunyikan cara data disimpan dan dirawat.

Sistim Basis Data

Sistim Basis Data

7

1.5.1 Abtraksi Data

Supaya suatu Sistem berguna, maka Sistem itu harus bisa mengambil data secara efisien. Kebutuhan akan efisiensi ini mendorong programmer untuk menggunakan struktur data kompleks untuk menyajikan data dalam basisdata tidak mahir menggunakan kompuetr, pengembang( developer) menyembunyikan kompleksitas Sistemnya dari pengguna melalui beberapa tingkatan abtraksi. Tingkatan abtraksi berguna untuk menyederhanakan interkasi pengguna dengan Sistem.

Tingkatan fisik, merupkan tingkatan abtrkasi paling rendah dan mengambarakan bagaimana data sebenarnya disimpan. Tingkatan fisik mengambarkan secara rinci struktur data tingkat rendah yang kompleks.

Tingkatan Logis, merupakan tingkatan yang setingkat lebih tinggi dari tingkatan fisik dan menggambarkan data yang disimpan dalam basisdata secara keseluruhan melalui sejumlah struktur sederhana. Meskipun penerapan struktur pada tingkatan logis bisa mengikuti sertakan struktur tingkatan fisik yang kompleks, pengguna tingkatan fisik. Administrator basisdata, yang harus memutuskan informasi yang disimpan dalam basisdata, menggunakan absraksi tingkatan logis.

Tingkatan View, merupakan tingkatan abstraksi paling tinggi dan hanya menggambarkan bagian tertentu suatu basisdata. Meskipun tingkatan logis menggunakan struktur lebih sederhana, tetapi masih komplek karena beragamnya informasi yang disimpan dalam basisdata. Banyak pengguna Sistem basisdata tidak memerlukan informasi tersebut karena hany perlu mengakses bagian dari basisdata. Kegunaan abstraksi tingkatan view adalah menyederhankan interaksi dengan Sistem. Sistem bisa menyediakan banyak view untuk basisdata yang sama.

Gambar 1.2 Hubungan antara ketiga tingkatan abstraksi

Analogi dengan konsep tipe data pada bahasa pemrograman bisa memperjelas perbedaan ketiga

tingkatan abstraksi. Sebagian besar bahasa pemrograman tingkat tinggi mendukung gagasan tipe.

Misalnya, pada bahasa seprti pascal, kita bisa mendeklarasikan sebuah record sebagai berikut :

View Level

. . .

View 1 View 2

View N

Logical Level

Physical

Level

Sistim Basis Data

Sistim Basis Data

8

Type mahasiswa = record

Nim : string;

Nama : string;

Alamat : string;

Kota : string;

End;

Program di atas mendefinisikan record baru yang diberi nama mahasiswa dengan empat field. Masing-

masing field memilki sebuah nama dan sebuah tipe yang berhubungan dengannya. Sebuah unuversitas

bisa memilki beberapa tipe record seperti, antara lain:

Matakuliah, dengan field kodeMK, NamaMK, SKS.

Dosen, dengan field NIP, Nama, Alamat, kota.

Pada tingkatan fisik, sebuah record pada mahasiswa, mata kuliah, dan dosen dapat digambarkan

sebagai sebuah blok lokasi penyimpanan yang berurutan, misalnya word atau byte. Compiler

menyembunyikan rincian tingkatan fisik dari programmer. Demikian pula, sistm basisdata

menyembunyikan banyak rincian penyimpanan tingkatan paling rendah dari programmer basisdata. Di

lain pihak, administrator basisdata mungkin mengetahui rincian tertentu pengaturan data.

Pada tingkatan logis, masing-masing record digambarkan oleh sebuah definisi tipe (seperti dituliskan

pada kode program di atas) dan hubungan tipe-tipe record didefinisikan pula. Programmer

menggunakan bahasa pemrograman pada tingkatan abstraksi logis. Kemudian, administrator basisdata

sering pula bekerja pada tingkatan abstraksi ini.

Pada tingkatan view, pengguna Komputer melihat kumpulan program aplikasi yang menyembunyikan

rincian tipe-tipe data. Lebih lanjut, pada tingkatan ini, beberapa view basisdata didefinisikan pula dan

pengguna basisdata melihatnya. Selain menyembunyikan keamanan untuk mencegah pengguna

mengakses bagian tertentu basisdata. Misalnya, pegawai administrsi tidak boleh melihat rincian data

mahasiswa dan hanya boleh melihat data pegawai.

1.5.2. Intansi dan Skema Basisdata berupa dari waktu ketika informasi dimasukkan dan dihapus. Kumpulan informasi yang

disimpan dalam basisdata pada suatu waktu disebut intansi (instance) suatu baisdata. Rancangan

basisdata secara keseluruhan disebut skema basisdata.

Konsep instansi dan skema basisdata dapat dimengerti dengan menganalogikan dengan sebuah

program yang tulis dalam suatu bahasa pemrograman. Skema basisdata berhubungan dengan deklarasi

variable maupun definisi tipe sebuah program. Masing-masing variable memiliki nilai tertentu pada

suatu saat. Nilai variavel dalam program pada suatu saat berhubungan dengan instansi skema

basisdata.

Sistem basisdata memilki beberapa skema yang dibagi menurut tingkatan abstraksi. Skema fisik

menggambarkan rancangan basisdata pada tingkatan fisik, sedangkan skema logis menggambarkan

rancangan basisdata pada tingkatan logis. Sebuah basisdata bisa memilki beberapa skema pada

tingkatan view, yang kadang-kadang disebut subskema dan menggambarkan view yang berbeda dalam

basisdata.

Dari ketiga skema, skema logis merupakan skema paling penting dalam hal pengaruhnya pada

program aplikasi karena programmer membuat aplikasi menggunakan skema logis. Skema fisik

Sistim Basis Data

Sistim Basis Data

9

disembunyikan dibawah skema lagis dan dapat diubah dengan mudah tanpa mempengaruhi program aplikasi. program aplikasi disebut telah menunjukkan kemandirian data fisik (physical data

independence) jika tidak tergantung pada skema fisik sehingga tidak perlu ditulis ulang saat skema

fisik berubah.

1.6 Struktur Sistem Basisdata

Sistem basisdata dibagi menjadi modul-modul yang berhubungan dengan masing-masing tanggung

jawab Sistem secara keseluruhan. Komponen fongsional Sistem basisdata dapat dibagi menjadi

komponen pengatur penyimpanan dan komponen pemroses query.

Pengatur penyimpanan menjadi penting karena basisdata membutuhkan banyak ruang penyimpanan.

Ukuran basisdata pada perusahaan berkisar dari ratusan gigabyte hingga terabyte data. Karena memori

utama Komputer tidak dapat menyimpan informasi sebanyak itu, maka informasi disimpan dalam

disk. Data dipindah antara penyimpan disk dan memori utama sesuai kebutuhan. Karena pergerakan

data ked an dari disk relative lambat terhadap kecepatan CPU, Sistem basisdata perlu mengatur data

agar meminimalkan kebutuhan memindahkan data dari disk ke kemomri utama.

Pemroses query penting karena ia membantu Sistem basisdata menyederhanakan dan memfasilitsi

akses kedata. View tingkat tinggi membantu mencapai tujuan tersebut sehinggan pengguna Sistem

tidak dibebani detail fisik penerapan Sistem yang tidak perlu. Namun, pemrosesan update dan query

yang cepat merupakan hal penting pula. Tugas Sistem basisdata adalah menerjemahkan update dan

query yang tulis dalam bahasa nonprocedural pada tingkatan logis menjadi urutan operasi pada

tingkatan fisik.

1.6.1 Pengaturan Penyimpanan

Pengaturan penyimpanan adalah modul program yang menyediakan antarmuka antara data tingkat

rendah yang disimpan pada basisdata dengan program aplikasi dan query yang dikirimkan ke Sistem.

Pengatur penyimpanan bertanggung jawab terhadap interaksi dangan pengatur file. Data mentah

disimpan pada disk menggunakan Sistem file yang disediakan oleh Sistem operasi konvensional.

Pengatur penyimpanan menerjemahkan berbagai pernyataan DML menjadi perintah Sistem file

tingkatan rendah. Oleh karena itu, pengatur penyimpanan bertanggungjawab terhadap penyimpanan,

pengambilan, dan perubahan data dalam basisdata. Komponen penyimpanan sebagai berikut:

Pengatur otorisasi dan integritas, menguji batasan integritas dan mengecek otoritas pengguna untuk mengakses data.

Pengatur transaksi, memastikan bahwa basisdata tetap konsisten meskipun ada kegagalan pada Sistem dan eksekusi transaksi yang terjadi bersamaan berlangsung tanpa terjadi konflik.

Pengatur file, mengatur aloksi ruang pada disk dan struktur data yang digunakan untuk mewakili informasi yang disimpan pada disk.

Pengatur penyimpanan sementara, bertanggungjawab mengambil data dari disk, memasukkan kememori utama, memutuskan data yang akan disimpan,sementara dalam memori utama, pengatur penyimpanan sementara adalah bagian penting Sistem basisdata karena ini memungkinkan basisdata menangani data berukuran jauh lebih besar dari ukuran memori utama.

Sistim Basis Data

Sistim Basis Data

10

Pengatur penyimpanan menerapkan beberapa struktur data sebagai bagian penerapan Sistem fisik,yaitu :

File data, menyimpan basisdata sendiri.

Kamus data, menyimpan metadata tentang struktur basisdata, terutama skema basisdata.

Indeks, menyediakan akses cepat ke data yang memilki nilai tertentu.

Sistim Basis Data

Sistim Basis Data

11

1.6.2 Pemroses Query

Komponen pemrosesan query meliputi:

Interpreter DDL, menerjemahkan perintah DDL dan mencatat definisi-definisi dalam kamus data/.

Compiler DML, menerjemahkan perintah DML dalam bahasa query menjadi rencana evaluasi yang terdiri atas intruksi tingkat rendah yang dimengerti oleh mesin evaluasi query.

Mesain evalusi query, mengeksekusi intruksi tingkatan rendah yang dihasilkan oleh compiler DML.

Gambar 1.3 menunjukkan komponen pemroses query dan hubungan antara mereka

(Silberschatz,dkk,2002).

Programer Pengguna DBA

Gambar 1.3 Struktur Sistem

DBMS

Program

Aplikasi

Query Skema

Basisdata

Pemroses

DML

Pemroses

Query

Kompiler

DDL

Kode Obyek

Program

Pengatur

Basisdata Pengatur

Kamus

Metode

Akses Pengatur

File

Bufter

Sistem

Basisdata

Dan kamus

data

Sistim Basis Data

Sistim Basis Data

12

1.7 Bahasa Basisdata

Sistem basisdata menyediakan bahasa pendefinisian data (data Definition Language-DDL) untuk

menentukan skema basisdata dan bahasa manipulasi data (Data Manipulation Language-DML) untuk

menyatakan query dan update basisdata. Pada praktiknya, DDL dan DML bukan merupakan dua

bahasa yang terpisah melainkan membentuk bagian basisdata, seperti yang umum digunakan pada

bahasa SQL (akan dibahas lebih lanjut pada BAB 6).

1.7.1 Data Definition Language (DDL)

Skema basisdata ditentukan sekumpulan definisi yang dinyatakan dengan bahasa tertentu yang disebut

Data Definition Language (DDL). Sebagai contoh, pernyataan berikut dalam bahasa SQL

mendefinisikan tabel rekening.

Create table rekening

(no_rekening char(10),

Saldo integer)

Eksekusi pernyataan DDL di atas akan membuat tabel rekening. Sebagai tambahan, pernyataan itu

menambah kumpulan tabel yang disebut kamus data atau direktori data. Kamus data adalah istilah

basisdata yang mengacu pada difinisi data yang disimpan dalam basisdata dan dikendalikan oleh

Sistem manajemen basisdata (McLeod, dkk,2001).

Kamus data mengandung metada, yaitu data tentang data. Skema sebuah tabel adalah contoh sebuah

metada. Sistem basisdata akan mengecek kamus data sebelum membaca atau memodifiksi data

sebenarnya. Struktur penyimpanan dan metode akses yang digunakan oleh Sistem basisdata dengan

menggunakan sekumpulan pernyataan dalam tipe DDL tertentu disebut bahasa penyimpanan dan

definisi data. Pernyataan ini menentukan penerapan detail skema basisdata, yang sering

disembunyikan dari pengguna.

Nilai data yang disimpan dalam basisdata harus sesuai dengan batasan tertentu. Sebagai contoh, saldo

pada sebuah rekening tidak boleh di bawah Rp.50.000,00-. DDL menyediakan fasilitas untuk

membuat batasan seperti itu. Sistem basisdata mengecek batasan setiap basisdata diubah.

1.7.2 Data Manipulation Language (DML)

Manipulasi data adalah :

Pengambilan informasi yang disimpan dalam basisdata

Penempatan informasi baru dalam basisdata

Penghapusan informasi dari basisdata

Modifikasi informasi yang disimpan dalam basisdata

Bahasa manipulasi data (DML) adalah bahasa yang memungkinkan pengguna mengakses atau

memanipulasi data seperti yang diatur oleh model data. Ada dua tipe DML, yaitu :

DML Prosedural, mengharuskan pengguna untuk menentukan data yang dibutuhkan dan bagaimana mendapatkannya.

Sistim Basis Data

Sistim Basis Data

13

DML Deklaratif (disebut pula DML, nonprocedural), mengharuskan pengguna menentukan data yang dibutuhkan tanpa menentukan bagaiman mendapatkannya.

DML deklaratif lebih mudah dipelajari dan digunakan daripada DML procedural. Namun, karena

pengguna tidak harus menentukan cara mendapatkan data, Sistem basisdata harus mencari alat yang

efektif untuk mengakses data. Komponen DML dari bahasa SQL adalah nonprocedural.

Query adalah pernyataan yang meminta pengguna mengambil informasi. Bagian DML yang terlibat

dalam pengambilan informasi disebut bahasa query. Istilah bahasa query sering disamakan dengan

istilah bahasa manipulasi data.

Tabel 1.1 Pegawai

kodePegawai NamaDepan NamaBelakang Alamat Kota

01 Ani Mariani Jl.Mawar Makassar

02 Kiki Aditya jl.Kemerdekaan Gowa

03 Fitri Ginting Jl.Pembangunan Maros

04 Hasan Martono Jl. Diponogoro Pinrang

Tabel 1.2 Pesan

KodeBarang NamaBarangKodePegawai

234 Printer 01

657 Monitor 03

456 Keyboard 02

Query dalam bahasa SQL berikut mencari nama pegawai dengan kodepegawai 04

Select pegawai. Nama depan

From pegawai

Where pegawai.kodepegawai=04

Query di atas menentukan bahwa baris tabel pegawai dengan kodepegawai 04 harus diambil dan

atribut namadepan baris harus ditampilkan. Jika query dijalankan, maka nama Hasan akan tampil.

Query bisa melibatkan informasi dari lebih dari satu tabel. Sebagai contoh, query berikut mencari

nama barang yang dipesan oleh pegawai dengan kodepegawai 02.

Select pegawai.namadepan, pesan.namabarang

From pegawai, pesan

Where pegawai.kodepegawai=pesan.kodepegawai and

Pegawai.kodepegawai=02

Jika query dijalankan pada tabel pegawai dan tabel pesan, Sistem akan menemukan bahwa keyboard

telah dipesan oleh Kiki.

1.8 Pengguna Basisdata dan Administrator

Tujuan utama basisdata adalah mengambil informasi dan menyimpan informasi baru ke dalam

basisdata. Orang-orang yang bekerja dengan basisdata dapat dikelompokkan sebagai pengguna

basisdata atau administrator basisdata.

Sistim Basis Data

Sistim Basis Data

14

1.8.1 Pengguna Basisdata dan Antarmuka Pengguna

Pengguna basisdata dapat berupa orang atau program aplikasi (McLeod, dkk.,2001). Ada empat tipe

pengguna Sistem basisdata yang dibedakan dari cara mereka mengharapkan interaksi dengan Sistem.

Tipe-tipe antarmuka pengguna yang berbeda sudah dirancang untuk tipe-tipe pengguna yang berbeda

pula.

Pengguna naïf adalah pengguna unsophisticated yang berinteraksi dengan Sistem menggunakan satu program aplikasi yang telah ditulis sebelumnya. Sebagai contoh, teller bank yang akan mentransfer uang sebesar Rp500.000,00 dari rekening A ke rekening B menggunakan sejumlah uang, rekening asal dan rekening tujuan.

Contoh lain adalah seorang pengguna yang akan melihat saldo rekening di internet. Pengguna

bisa mengakses formulir di mana dia mengisi nomot rekeningny. Kemudian, program aplikasi

pada Web server mengambil saldo rekening menggunakan nomor rekening yang diberikan dan

mengirimkan informasi kembali ke pengguna.

Antarmuka pengguna yang umum untuk pengguna naïf adalah antarmuka berbentuk formulir,

dimana pengguna dapat mengisi field-field di dalamnya. Pengguna naïf dapat pula membaca

laporan yang dihasilkan basisdata.

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

Pengguna sophisticated berinteraksi dengan Sistem tanpa menulis program. Mereka membuat permintaan dalam bahasa query basisdata. Mereka mengirmkan masing-masing query ke pemprose query yang fungsinya memisahkan pernyataan DML menjadi instruksi-instruksi yang dimengerti oleh storage manager. Analisis yang mengirimkan query untuk mengeksplorasi data dalam basisdata masuk dalam kategori pengguna sophisticated.

Online Analytytical Processing (OLAP) menyederhanakan tugas analis dengan memperbolehkan mereka melihat ringkasan data dalam berbagai cara. Contohnya adalah seorang analis dapat melihat total penjualan berdasar daerah (utara, selatan, barat, timir), barang, atau kombinasi daerah dan barang (total penjualan masing-masing barang pada masing-masing daerah). Tool mengixinkan analis memilih daerah tertentu dan melihat data lebih detail (misalnya, jumlah barang bersama dengan kategori). Tool lain untuk analis adalah tool data mining yang membantu mereka mencari pola data tertentu.

Pengguna Specialized adalah pengguna Specialized yang menulis aplikasi basisdata yang cocok untuk kerangka kerja pemprosesan data trasionala. Di antara aplikasi ini adalah Sistem perancangan yang dibantu oleh Komputer Aided Design Sistem (CAD Sistem), Sistem yang

Sistim Basis Data

Sistim Basis Data

15

berdas ilmu pengetahuan dan keahlian, Sistem yang menyimpan data dengan tipe data kompleks (misalnya, data grafik dan data audio), dan Sistem pemodelan lingkungan.

1.8.2 Administrator Basisdata

satu alas an utama menggunakan DBMS adalah mendapatkan control penulis baik untuk data maupun

program yang mengakses data (Stephens dan Plew, 2000). Orang yang mendapatkan control semacam

itu disebut administrator basisdata (DBA) (McHaney,2005).

Gambar 1.4 Kegiatan administrasi

Fungsi DBA meliput (Stephens and Plew,2000):

Menentukan skema, DBA membuat skema basisdata dengan mengeksekusi kumpulan pernyataan definisi data dalam DDL.

Menentukan struktur penyimpanan dan metode akses

Memodifikasi skema dan organisasi fisik, DBA melakukan perubahan skema dan organisasi fisik untuk menyatakan perubahan kebutuhan suatu organisasi atau mengubah organisasi fisik agar kenerja meningkat.

Member otorisasi untuk mengakses data, dengan memberikan tipe otorisasi yang berbeda, administrator basisdata dapat menatur bagian basisdata yang dapat diakses oleh pengguna. Informasi otorisasi disimpan dalam struktur Sistem khusus di mana Sistem basisdata akan selalu mengecek setiap ada seseorang yang mencoba mangakses data dalam Sistem.

Prosedur dan Standar

Antarmuka DBA

Menentukan dan menjalankan

Mengatur dan memonitor

Pengguna Akhir

Menguji

Pemrograman

Program

Aplikasi

DBMS

Manajer dan

Sekretaris

Antarmuka

DBMS DATA

Dan / atau Menggunakan

Digunakan oleh

Menulis

Mengatur

DBA

Sistim Basis Data

Sistim Basis Data

16

Perawatan rutin, contoh aktivitas perawatan rutin yang dilakukan oleh administrator basisdata adalah:

Secara teratur mem-backup basisdata, baik pada tipe maupun pada remote server, untuk mencegah kehilngan data saat terjadi bencana alam seperti banjir.

Memastikan bahwa tersedia cukup ruang pada disk untuk operasi normal dan meng-update ruang disk jika diperlukan.

Memonitor pekerjaan-pekerjaan yang sedang berjalan pada basisdata dan memastikan bahwa kinerjanya tidak menurun karena banyaknya pengguna.

1.9 Tipe-tipe Basisdata

Setiap perusahaan membutuhkan basisdata. Perusahaan dan perorangan membutuhkan basisdata setiap

hari dan beberapa di antaranya tidak sadar menggunakannya. Ada beberapa tipe basisdata, beberapa

basisdata bertipe sederhana, sedangkan yang lainnya sangat kompleks. Ketika mencari sebuah

perusahaan dalam yellow Pages, Anda menggunakan basisdata. Ketika memasan buku dari toko buku

online di internet, Anda mengakses basisdata. Satu bentuk paling sederhana basisdata yang peling

dikenal orang adalah cabinet. Informasi disimpan dalam laci, dalam folder map. Banyak perusahaan

masih membongkar kertas kerja dalam bagian sehari-hari daripada menyimpan informasinya dalam

Komputer. Meskipun semua perusahaan tidak mungkin menghilangkan sama sekali kertas kerja,

keuntungan menyimpan data dalam Sistem Komputer lebih banyak dari pada biaya untuk mempelajari

cara menggunakan program manajeman data.

Langkah-langkah dasar merancang basisdata adalah keputusan perusahaan mengalokasikan

sumberdaya untuk mempelajari basisdata, merancang struktur basisdata, dan menerapkan serta

mengatur basisdata. Setelah basisdata dirancang dan aplikasi telah dibuat atau dibeli, manejemen

basisdata secara keseluruhan menjadi sederhana untuk basisdata administrator basisdata yang

berpengalaman. Setelah perusahaan memutuskan untuk merancang Sistem basisdata, model basisdata

yang akan digunakan harus dibuat.

Berikut adalah tipe basisdata:

1. Model basisdata file (Flat file database model)

2. Model basisdata hierarki (Hierarchical database model)

3. Model basisdata jaringan (Network database model)

4. Model basisdata relasional (Relational database model)

5. Model basisdata berorientasi objek (Object oriented database model)

6. Model basisdata relasi objek (object relational database model)

Sistim Basis Data

Sistim Basis Data

17

DBMS adalah perangkat lunak yang digunakan untuk menyimpan data. Sebuah DBMS harus memilki karakteristik sebagai berikut :

Data disimpan pada perangkat keras dan harus tetap ada setelah akses. Motode akses termasuk pembuatan data baru, modifikasi data yang sudah ada, dan penghapusan data. Ini disebut data persistence.

Banyak pengguna harus diizinkan untuk mengakses data secara bersamaan. Hal ini disebut concurrency.

Transaksi diatur agar Sistem dapat memanipulasi data dan DBMS harus memilki kemampuan menyimpan sekumpulan pekerjaan.

Bahasa query harus tersedia untuk mengambil data berdasarkan criteria yang diberikan oleh pengguna.

Data harus dapat dipulihkan setelah terjadi kerusakan. Jika data hilang, DBMS harus memilki kemampuan untuk mengembalikan data.

1.9.1 Model Basisdata File

Sebelum perusahaan seperti Oracle dan Microsoft mulai mengembangkan Sistem manajeman

basisdata yang dijalankan pada Komputer, banyak perusahaan yang menggunakan Komputer

menyimpan datanya dalam bentuk file. Pengguna file untuk menyimpan data sangat umum pada masa

mainframe. Basisdata file tersusun atas satu atau lebih file dan disimpan dalam format teks. Informasi

dalam file-file teks disimpan sebagai field. Field-field bisa memilki panjang yang tetap atau berubah-

ubah dan terpisahkan oleh beberapa pemisah. Berikut adalah contoh file dengan panjang field yang

tetap.

1234 Megadata Komputer administrasi Sistem di Linux

5678 Doni Ariyus Kamus Hacker

4321 Megadata Komputer Tip dan Trik Meningkatan Kenerja PC

8765 Agfianto Eko Putra Penafis Aktif Elektronik Tecori dan Praktek

4523 Agfianto Eko Putra Belajar Bahasa Assembly dengan EMU8086

3456 Abdul Kadir Panduan Pemrograman Visual C++

Contoh file memilki tiga field, yaitu nomor pengenal, nama pengarang, dan judul buku. Masing-

masing field memilki panjang tetap karena nomor pengenal selalu dimulai dari kolom #1 dan berakhir

pada kolom #4, nama pengarang dimulai dari kolom #6 dan berakhir pada kolom #25, dan sebagainya.

Berikut adalah contoh file dengan panjag field yang berubah-ubah dan dipisahkan oleh pemisah “:”.

1234:Megadata Komputer.Adminisrasi Sistem di Linux

5678:Doni Ariyus:Kamus Hacker

4321:Megadata Komputer:Tlp dan Trik Meningkatkan Kinerja PC

8765:Agfianto Eko Putra:Penalis Aktif Elektronika Teori dan Praktek

4523:Agfianto Eko Putra:Belajar Bahasa Assembly dengan EMU8086

3456:Abdul Kadir:Panduan Pemrograman Visual C++

Sistim Basis Data

Sistim Basis Data

18

Contoh file kedua memilki pula tiga field. Masing-masing field dipisahkan oleh tanda “:”. Field-field memilki panjang yang tidak tetap. Ketika menggunakan pemisah field, Anda harus memastikan bahwa

pemisah field bukan karakter yang ditemukan pada data.

Setiap Sistem basisdata file berbeda karena perusahaan menyimpan data berbeda dan memiliki

keinginan berbeda. Setelah Sistem basisdata file dibuat dan data telah disimpan dalam file-file, satu

metode harus direncanakan untuk mengambil data, membuat Sistem baru, mengubah Sistem, atau

menghapus Sistem. Misalnya, jika ingin mendapatkan daftar judul buku yang dikarang oleh Agfianto

Eko Putra, Anda harus mencari setiap Sistem yang berisi Agfianto Eko Putra. Setelah itu, Anda harus

menyaring data sehingga hanya judul buku yang diambil.

Masalah pengaksesan data membutuhkan sekumpulan program yang dapat mengakses informasi yang

disimpan dalam file. Salah satu masalah utama menggunakan Sistem basisdata file bukan hanya

memerlukan pengetahuan tentang struktur file, melainkan Anda pun harus mengetahui pasti di mana

data disimpan. Sebagai bahan, basisdata Anda akan membutuhkan banyak file di mana data pada satu

file dapat berhubungan dengan data yang disimpan pada file lain. Mengatur hubungan data merupakan

pekerjaan sulit dalam lingkungan basisdata file.

Berikut adalah kekurangan basisdata file:

File tidak menyediakan struktur di mana data mudah dihubungkan.

Mengatur data secara efektif dan memastikan akurasi merupakan hal sulit.

Pengguna perlu menyimpan data secara berulang sehingga menyebabkan lebih banyak pekerjaan untuk merawat data secara akurat.

Lokasi fisik field data pada file harus diketahui

Program harus dibuat untuk mengatur data.

1.9.2 Model Basisdata Hierarki

Model basisdata hierarki setingkat di atas basisdata file terutama karena kemampuan membuat dan

merawat hubungan antarkelompok data. Arsitektur basisdata hierarki berdasarkan pada konsep

hubungan orangtua dan anak. Pada basisdata hierarki, tabel akar atau tabel orangtua berada pada

puncak struktur dan menunjuk pada tabel anak yang mengandung data yang berhubungan. Struktur

basisdata hierarki tampak seperti pohon terbalik seperti ditunjukkan pada Gambar 1.5.

Gamabr 1.5 Model basisdata hierarki

Penerbit

Pengarang Toko Buku

Judul Daftar Buku Pesanan

Sistim Basis Data

Sistim Basis Data

19

Pada gambar 1.5, penerbit adalah tabel akar. Penerbit memiliki dua tabel anak, yaitu Pengarang dan Toko Buku. Sebuah Penerbit memiliki banyak Pengarang yang kontraknya serta banyak Toko Buku di

mana dia menyuplai buku. Pengarang adalah tabel orangtua untuk Tabel Judul, seperti Toko Buku

untuk Tabel Daftar Buku. Judul adalh tabel anak dari pengarang, seperti Daftar Buku dan Pesanan

yang merupakan tabel anak dari toko Buku. Salah satu masalkah menggunakan hierarki adalah

informasi judul buku yang berulang karena harus disimpan pada Tabel Daftar Buku. Hal ini

dikarenakan tidak ada hubungan langsung antara Pengarang dan Toko Buku.

Tabel orang tua dapat memiliki banyak tabel anak, tetapi tabel anak hanya dapat memiliki satu tabel

orangtua. Untuk mengakses tabel anak, Anda harus mengakses tabel orangtua terlebih dahulu. Tabel-

tabel yang berhubungan dalam struktur hierarki dihubungkan dengan pointer, yang menunjuk ke

lokasi fisik recor anak.

Keuntungan model basisdata hierarki disbanding model basisdata file adalah :

Data dapat diambil secara cepat.

Integritas data lebih diatur.

Kekurangan model hierarki adalah:

Pengguna harus memahami struktur basisdatanya.

Terjadi perulangan data.

1.9.3 Model Basisdata Jaringan

Peningkatan terhadap basisdata terhadap hierarki dibuat untuk menghasilkan basisdata jaringan.

Seperti pada basisdata hierarki, tabel-tabel basisdata jaringan berhubungan sattu sama lain. Satu

keuntungan utama basisdata jaringan adalah kemampuan tabel orangtua berbagi hubungan dengan

tabel anak. Ini berarti bahwa anak dapat memiliki beberapa tabel orangtua. Dengan demikian, seorang

pengguna dapat mengakses data mulai dari sembarang tabel dalam struktur, baik ke atas maupun ke

bawah. Pengguna tidak diharuskan mengakses tabel akar terlebih dahulu untuk mengakses tabel anak.

Hubungan antartabel pada jaringan disebut set structure, di mana satu tabel adalah pemilik dan tabel

lainnya adalah anggota. Set structure dapat mewakili hubungan one-to-many antara tabel-tabel.

Program aplikasi yang mengakses basisdata jaringan menggunakan set structure untuk mengarahkan

tabel ke bagian lain basisdata. Oleh karena itu, jika set structure diubah, program aplikasi yang

mengakses basisdata harus diubah pula. Gambar 1.6 mengilustrasikan set structure.

(Pemilik)

Gambar 1.6 Model basisdata jaringan

Penerbit

Pengarang Toko Buku

Kontrak persedian

(anggota))

(set structure)

Sistim Basis Data

Sistim Basis Data

20

Pada Gambar 1.6, Tabel Penerbit memiliki dua table, yaitu pengarang dan Toko Buku. Pengarang dan Toko Buku masing-masing adalah anggota Tabel penerbit. Penerbit mengontrak pengarang dan

menyuplai buku ke toko Buku Set structure pengarang dan penerbit disebut kontrak.

Gambar 1.7 menunjukkan bagaimana tabel anak atau anggota dapat dimiliki lebih dari satu tabel

orangtua. Pada Gambar 1.7, Tabel Judul dimilki oleh tabel pengarang dan toko Buku. Baik tabel

pengarang maupun toko buku membutuhkan hubungan dengan tabel judul. Meskipun kedua set

structure dapat digunakan untuk mengakses Tabel judul, informasi judul buku hanya disimpan pada

satu tabel sehingga mengurangi perulangan data.

Gambar 1.7 Berbagi tabel anak

Keuntungan model basisdata jaringan adalah:

Data dapat diaksesdengan cepat

Penguna dapat mengakses data murni dari sembarang table

Penguna lebih mudah membuat model basisdata yang lebih kompleks

Pengguna lebih mudah membuat query yang lebih kompleks untuk mengambil data

Keuntungan model basisdata jaringan adalah:

Struktur basisdata tidak mudah diubah

Perubahan struktur baisdata memengaruhi program aplikasi yang mengakses basisdata

PEngguna harus memahami struktur basisdata

Penerbit

Pengarang Toko Buku

Judul Daftar Buku Pesanan

(tabel akar atau orang tua)

(tabel Anak)

(tabel anak level sebelumnya

Sistim Basis Data

Sistim Basis Data

21

1.9.4 Model Basisdata Relasional

Basisdata relasional adalah tipe basisdata yang paling popular digunakan saat ini. Banyak

perkembangan yang telah dibuat dari model basisdata sebelumnya menyederhanakan manajemen data

dan pengambilan data. Data menjadi lebih mudah diatur, terutama melalui penggunaan batas

integritas. Pengambilan data merupakan proses penyimpangan yang memungkinkan pengguna

memvisualisasikan basisdata melalui struktur table relasional dan meminta data tertentu tanpa perlu

memahami struktur basisdata.

Unit penyimpangan utama dalam basisdata adalah table kelompok data yang saling berhubungan.

Sebuah table terdiri atas baris dan kolom. Baris berhubungan dengan record dalam table dan kolom

mengandung nilai semua baris yang berhubungan dengan field tertentu. Table dapat dihubungkan satu

sama lain melalui nilai kolom yang disebut kunci (key).

Ada tiga hubungan antartabel, yaitu one-to-one, one-to-many, dan many-to-many. Suatu basisdata

harus memiliki lebih dari satu hubungan berbeda. Hubungan antartabel ditentukan oleh integritas

refeensial (referential integrity) yang memerlukan penggunaan batas kunci utama (primary key) dan

kunci tamu (foreign key). Integritas referensial adalah penggunaan batasan di atas untuk membuat

valid data yang dimasukkan ke dalam table dan mengatur hubungan antara table orangtua dengan

anak. Tipe batasan lain dapat pula dibuat untuk mengontrol data yangbisa dimasukkan dalam kolom

tertentu dan membuat hubungan antartabel.

Gabar 1.8 menggambarkan model basisdata relasional. Model relasional tidak memiliki table akar

meskipun hubungan antar kabel anak dan orang tua masih dimungkinkan. Table orangtua dapat

memiliki banyak tabel orangtua (hubungan dua arah).

Gambar 1.8 Model basisdata relasional

Penerbit Toko Buku

Pengarang Judul Daftar Buku

Pesanan

supply

menulis stok

menjual

pesanan

Sistim Basis Data

Sistim Basis Data

22

Keuntungan model basisdata relasional adalah:

Data dapat diakses secara cepat.

Struktur basisdata mudah diubah.

Data disajikan secara logis sehingga pengguna tidak perlu mengetahui bagaimana data disimpan.

Pengguna mudah membuat query yang kompleks untuk mengambil data.

Pengguna mudah menerapkan integritas data.

Data sering lebih akurat.

Pengguna mudah membuat dan memodifikasi program aplikasi.

Bahasa standar (SQL) sudah dibuat.

Kekurangan model basisdata relasional adalah:

Kelompok informasi atau tabel yang berbeda harus dihubungkan untuk mengambil data.

Pengguna harus memahami hubungan antaratabel.

Pengguna harus belajar SQL.

Sistim Basis Data

Sistim Basis Data

23

Bab 2

ARSITEKTUR SISTIM BASISDATA

Arsitektur Sistem basisdata sangat dipengaruhi oleh Sistem Komputer di mana ia dijalankan, terutama

olah aspek arsitektur Komputer seperti jaringan, paralelisme, dan distribusi.

Jaringan Komputer memungkinkan beberapa tugas dieksekusi pada Sistem server dan beberapa lainnya pada Sistem client. Pembagian pekerjaan memunculkan Sistem basisdata client-server.

Pemrosesan parallel dalam Sistem Komputer memungkinkan aktivitas Sistem basisdata dipercepat, respon lebih cepat pada transaksi, serta lebih banyak transaksi yang dapat direspons per detik. Query dapat diproses dengan mengeksploitasi paralelisme yang diitawarkan oleh Sistem Komputer. Kebutuhan akan pemprosesan query parallel memunculkan Sistem basisdata parallel.

Distribusi data ke seluruh tempat atau depatemen dalam organisasi memungkinkan data berada di tempat di mana mereka dibuat atau paling dibutuhkan, tetapi masih tetap dapat diakses dari tempat lain dan dari departemen lain. Dengan menyimpan banyak salinan basisdata ke beberapa tempat, organisasi besar dapat melanjutkan operasi basisdata mereka bahkan ketika satu tempat dipengaruhi oleh bencana alam seperti banjir, kebakaran, atau gempa bumi. Sistem basisdata terdistribusi menengani data yang terdistribusi secara geografis atau administrasi dan tersebar ke banyak Sistem basisdata.

2.1 Arsitektur Terpusat dan Client-Server

Sistem basisdata terpusat adalah Sistem yang berjalan pada Sistem Komputer tunggal dan tidak berinteraksi dengan Sistem Komputer lain. Sistem basisdata terpusat meliput Sistem basisdata pengguna tunggal yang berjalan pada PC hingga Sistem basisdata berkinerja tinggi yang berjalan pada Sistem server(high-end server Sistem). Sebaliknya, Sistem client-server mempunyai kemampuan memisahkan Sistem server dan dan Sistem banyak client.

Sistim Basis Data

Sistim Basis Data

24

2.1.1 Sistem Terpusat

Sistem Komputer modern untuk tujuan umum terdiri atas satu hingga beberapa CPU dan banyak

pengontrol peralatan (device controller) yang dihubungkan melalui bus yang menyediakan akses ke

memori bersama. Tape drive

bus sistem

Gambar 2.1 Sistem Komputer terpusat

CPU mempunyai cache memori local yang menyimpan salinan bagian memori untuk mempercepat

akses ke data. Masing-masing pengontrol peralatan bertugas pada tipe peralatan tertentu (misalnya

disk drive, peralatan audio, atau video display). CPU dan pengontrol peralatan dapat melakukan

eksekusi secara bersamaan sehingga terjadi perebutan akses ke memori. Cache memori mengurangi

terjadinya perebutan akses memori karena cache mengurangi jumlah kebutuhan CPU untuk

mengakses ke memori bersama.

Sistem terpusat dapat dibedakan menjadi dua berdasarkan Komputer yang digunakan, yaitu Sistem

pengguna tunggal dan Sistem banyak pengguna. PC dan workstation termasuk pada kategori pengguna

tunggal. Sistem pengguna tunggal yang umum adalah unit desktop yang digunakan oleh satu orang,

hanya satu CPU dan satu atau dua Hardisk serta hanya satu orang yang menggunakan Komputer pada

suatu saat. Sebaliknya, Sistem banyak pengguna yang umum memiliki lebih bayak disk dan memori,

banyak CPU, serta banyak pengguna Sistem operasi. Sistem melayani banyak pengguna yang

dihubungkan ke Sistem melalui terminal.

Sistem basisdata yang dirancang untuk pengguna tunggal tidak menyediakan banyak fasilitas seperti

basisdata banyak pengguna. Sistem pengguna tunggal dapat tidak mendukung control konkurensi

(concurrency control), yang tidak dibutuhkan ketika hanya satu pengguna yang dapat melakukan

update. Pada Sistem semaca ini, tidak ada ketentuan untuk pemulihkan akibat crash. Banyak Sistem

semacam ini tidak mendukung SQL dan menyediakan bahasa query yang lebih sederhana seperti

varian dari QBE. Sebaliknya, Sistem basisdata yang dirancang untuk Sistem banyak pengguna

mendukung fitur transaksi secara penuh.

Meskipun Sistem Komputer untuk tujuan umum sekarang ini memiliki banyak prosesor, mereka

mempunyai coarse-granularity parallelism. Hanya dengan beberapa prosesor (sering dua atau empat),

semua berbagai memori utama. Basisdata yang berjalan pada Komputer semacam ini tidak berusaha

membagi satu query ke beberapa prosesor melainkan menjalankan masing-masing query pada satu

CPU

Pengontrol

Memori

Memori

Pengontrol

Disk

disk disk

Pengontrol

Printer

printer

Pengontrol Tape drive

Sistim Basis Data

Sistim Basis Data

25

prosesor sehingga banyak query dapat dapat berjalan secara bersamaan. Oleh karena itu, Sistem semacam ini mendukung troughput yang lebih tinggi. Artinya, Sistem memungkinkan jumlah

transaksi tidak berjalan lebih cepat. Basisdata yang dirancang untuk Komputer ber-prosesor tunggal

sudah menyediakan multi-tasking sehingga banyak proses dapat berjalan pada prosesor yang sama

dangan cara time shared (time shared manner). Cara time shared memberikan pandangan pada

pengguna bahwa beberapa proses berjalan secara parallel. Oleh karena itu, mesin parallel coarse-

granularity secara logis tampak identik mesin time-shared dapat dengan mudah diadaptasi untuk

berjalan pada mesin prosesor tunggal.

Sebaliknya, mesin dengan fine granularity parallelism mempunyai banyak prosesor. Kemudian,

Sistem basisdata yang berjalan pada Sistem semacam ini berusaha untuk memparalelkan satu tugas

(misalnya query) yang dikirmkan oleh pengguna.

2.1.2 Sistem Client-Server

Ketika PC menjadi lebih cepat, lebih bertenaga, dan lebih murah, ada pergeseran arsitektur Sistem

terpusat. PC menggantikan terminal yang pergeseran atsitektur Sistem tepusat. Oleh karena itu, PC

dianggap mempunyai kemampuan sebagai antarmuka pengguna yang sering ditangani langsung oleh

Sistem terpusat. Sebagai hasilnya, Sistem terpusat sekarang ini bertindak sebagai Sistem server yang

melayani permintaan Sistem client. Gambar menunjukkan struktur umum Sistem client-server.

Jaringan

Gambar 2.2 fungsi Front end dan back end

Fungsi basisdata dapat dibagi menjadi dua bagian, yaitu front end dan back end seperti terlihat pada

Gambar 2.3

Front-end

antarmuka

(SQL + API

client client client client

client

Antarmuka

pengguna

SQL

Mesin SQL

Antarmuka

Formulir

Penulis

Laporan

Antarmuka

Grafis

Sistim Basis Data

Sistim Basis Data

26

Back end mengatur struktur akses evaluasi dan optimisasi query, control konkurensi, dan pemulihan.

Front end terdiri atas tool-tool seperti fasilitas formulir, penulisan laporan, dan antarmuka pengguna

grafis. Antarmuka antara front end back end adalah melalui SQL atau melalui program aplikasi.

Standar semacan ODBC dan JDBC dibuat untuk menghubungkan client dengan server. Setiap client

yang menggunakan antarmuka ODBC atau JDBC dapat berhubungan dengan sembarang server yang

menyediakannya.

Pada Sistem basisdata generasi awal, ketiadaan standar semacam ODBC dan JDBC mengharuskan

pengembangan perangkat lunak yang sama menyediakan front end back end. Dengan pertumbuhan

standar, antarmuka pengguna front dan server back end sering disediakan oleh pengembang berbeda

Tool-tool pengembang aplikasi (application development tools) digunakan untuk membuat antarmuka

pengguna. Mereka menyediakan tool grafis yang dapat digunakan untuk membuat antarmuka tanpa

perlu membuat program. Beberapa tool pengembang aplikasi yang popular adalah PowerBuilder,

Magic, dan Borland Delphi. Visual Basic pun banyak digunakan untuk mengembangkan aplikasi.

Program aplikasi tertentu seperti spreadsheet dan paket analisis atatistik menggunakan antarmuka

client-server secara langsung untuk mengakses data dari server back end. Hasilnya adalah mereka

menyediakan front end khusus untuk tugas-tugas tertentu.

Beberapa Sistem pemrosesan transaksi menyediakan antarmuka transactional remote procedure call

untuk menghubungkan client dengan server. Panggilan ini tampak seperti procedure call umum, tetapi

semua remote procedure call client ditempatkan pada transaksi tunggal pada server. Oleh karena itu,

jika transaksi dibatalkan, server dapat membatalkan efek remote procedure call.

2.2. Arsitektur Sistem Server

Sistem server dapat dikelompokkan menjadi transaksi dan data.

Sistem server transaksi, disebut pula Sistem server query, menyediakan antarmuka di mana dengan antarmuka tersebut, client dapat mengirimkan permintaan untuk melakukan suatu kegiatan. Komputer client mengirimkan transaksi ke Sistem server, di mana transaksi tersebut dieksekusi, dan hasilnya dikirim kembali ke client yang berwenang untuk menampilkan data. Permintaan bisa dilakukan menggunakan SQL atau melalui antarmuka program aplikasi.

Sistem server data,memungkinkan client berinteraksi dengan server dengan membuat permintaan untuk membaca atau meng-update data dalam satuan seperti file atau halaman. Sebagai contoh, server file menyediakan antarmuka Sistem file dimana client dapat membuat, meng-update, membaca dan menghapus file. Server data untuk Sistem basisdata sebuah file. Mereka menyediakan fasilitas pengindeksan data dan fasilitas transaksi sehingga data selalu konsisten jika Komputer client atau prosesnya gagal.

Diantara keduanya, arsitektur server paling banyak digunakan.

Sistim Basis Data

Sistim Basis Data

27

2.2.1 Struktur Proses Server Transaksi

Sistem server transaksi yang umum sekarang ini terdiri atas banyak proses yang mengakses data pada

memori bersama (shared memory) seperti terlihat pada Gambar 2.4.

Gambar 2.4 Berbagai memori dan struktur proses

Proses yang membentuk bagian Sistem basisdata adalah:

Proses server: proses merupakan proses yang menerima query dari pengguna (transaksi),

mengeksekusinya, dan mengirimkan hasilnya, Query bisa dikirimkan ke proses server dari

antarmuka pengguna, dari proses pengguna yang menjalankan SQL, atau melalui JDBC,

ODBC, atau protocol yang mirip. Beberapa Sistem basisdata menggunakan proses terpisah

untuk masing-masing proses pengguna dan beberapa di antaranya menggunakan proses

basisdata tunggal untuk seluruh sesi pengguna, tetapi dengan banyak thread sehingga banyak

query dapat dieksekusi bersamaan. Banyak Sistem basisdata menggunakan arsitektur campuran

dengan beberapa proses di mana masing-masing proses menjalankan banyak thread.

Proses pengatur lock: proses menerapkan fungsi pengaturan penguncian, yang termasuk lock grant, lock release, dan pendekatan deadlock.

Proses

pengguna

Proses

pengguna

Proses

pengguna

Buffer pool

Query plan cache

Log buffer Lock table

Log write

proccess

checkpoint

proccess

Log disk

Database write

proccess

Log disk

Proses

pengguna

Proses

pengguna

Proses

pengguna

Sistim Basis Data

Sistim Basis Data

28

Proses penulis basisdata: ada satu atau lebih proses yang mengirimkan block buffer yang sudah dimodifikasi kembali ke disk secara terus-menerus.

Proses penulis basisdata: ada satu atau lebih proses yang mengirimkan block buffer yang sudah dimodifikasi kembali ke disk secara terus-menurus.

Proses pencatat log: proses mengirimkan log record dari log record buffer ke penyimpan yang lebih stabil. Proses server menambah log record ke log record buffer dalam memori bersama

dan jika log record dibutuhkan, mereka meminta proses pencatatan log untuk mengirimkan log

record.

Prose cek poin: proses melakukan cek poin secara teratur.

Proses monitor: proses memonitor proses lain dan jika ada yang gagal, dia akan melakukan aksi pemulihan untuk prose yang gagal lalu mengulangi proses.

Memori bersama mengandung seluruh data bersama seperti:

Buffer pool

Lock table

Log buffer yang mengandung log record yang menunggu untuk dikirimkan ke log pada penyimpan yang lebih stabil.

Cache query plan yang dapat digunakan kembali jika query yang sama dikirimkan kembali

Semua proses basisdata dapat diakses pada memori bersama. Karena banyak proses bisa membaca

atau melakukan update pada struktur data memori bersama, harus ada mekanisme untuk meyakinkan

bahwa hanya satu proses yang membaca mengeyampingkan dapat diterapkan dengan fungsi Sistem

operasi yang disebut semafor. Alternatifnya adalah menggunakan instruksi atomic yang didukung oleh

perangkat keras Komputer.

Sistim Basis Data

Sistim Basis Data

29

2.2 Sistem Terdistribusi

Pada Sistem terdistribusi, basisdata disimpan pada beberapa Komputer. Komputer pada Sistem

terdistribusi berkomunikasi sata sama lain melalui media komunikasi seperti jaringan berkecepatan

tinggi atau telepon. Mereka tidak berbagi memori atau disk. Komputer pada Sistem terdistribusi bisa

bervariasi dalam hal ukuran dan fungsi serta berkisar dari Sistem workstation hingga mainframe.

Komputer pada Sistem terdistribusi bisa disebut situs node atau kode tergantung pada konteksnya.

Istilah situs digunakan untuk menyatakan distribusi fisik Sistem. Gambar 2.5 memperlihatkan struktur

umum Sistem terdistribusi.

Gambar 2.5 sistem terdistribusi

Situs A

Situs B

jaringan

Komunikasi

melalui

jaringan

Situs C

Sistim Basis Data

Sistim Basis Data

30

Bab 3

ENTITY RELATIONSHIP

DIAGRAM - ERD

3.1 Model-model Data

Struktur yang mendasari suatu basisdata adalah model data yang merupakan kumpulan alat-alat

konseptual untuk mendeskripsikan data, relasi data, data semantic, dan batasan konsistensi. Untuk

mengilustrasikan konsep model data, berikut disajikan dua model data, yaitu entity relationship dan

relational model. Kedua menyediakan cara mendeskripsikan rancangan basisdata pada tingkatan logis.

3.1.1 Entity Relationship Model

Entity relationship (ER) data model didasarkan pada persepsi terhadap dunia nyata yang tersusun atas

kumpulan objek-objek dasar yang disebut entitas dan hubungan antarobjek. Entitas adalah suatu atau

objek dalam dunia nyata yang dapat dibedakan dari objek lain. Sebagai contoh, masing-masing

mahasiswa adalah entitas dan matakuliah dapat pula dianggap sebagai entitas.

Entity digambarkan dalam basisdata dengan kumpulan atribut. Misalnya atribut nim, nama, alamat,

dan kota bisa menggambarkan data mahasiswa tertentu dalam suatu universitas. Atribut-atribut

membentuk entitas mahasiswa. Demikian pula, atribut kodeMK, dan SKS mendeskripsikan entitas

mata kuliah.

Atribut NIM digunakan untuk mengindentifikasi mahasiswa secara unit karena dimungkinkan terdapat

dua mahasiswa dengan nama, alamat, dan kota yang sama. Pengenal unik harus diberikan pada

masing-masing mahasiswa.

Relasi adalah hubungan antara beberapa entitas. Sebagai contoh, relasi menghubungkan mahasiswa

dengan mata kuliah yang diambilnya. Kumpulan semua entitas bertipe sama disebut kumpulan entitas

(entity set), sedangkan kumpulan semua relasi bertipe sama disebut kumpulan relasi (relationship set).

Struktur logis (skema database) dapat ditunjukkan secara grafis dengan diagram ER yang dibentuk

dari komponen-komponen berikut :

Persegi panjang mewakili kumpulan entitas

Elips mewakili atribut

Belah ketupat mewakili relasi

Garis menghubungkan atribut dengan kumpulan entitas dan kumpulan entitas dengan relasi

Entitas

Atribut

Relasi

Sistim Basis Data

Sistim Basis Data

31

Masing-masing komponen diberi nama entitas atau relasi yang diwakilinya. Sebagai ilustrasi, banyangkan Anda mengambil bagian Sistem basisdata universitas yang terdiri atas

mahasiswa dan matakuliah. Gambar 3.1 menunjukkan diagram ER dari dari contoh. Diagram

menunjukkan bahwa ada dua kumpulan entitas, yaitu mahasiswa dan matakuliah, dan bahwa relasi

mengambil mahasiswa dan matakuliah.

Gambar 3.1 Diagram ER

Sebagai tambahan, model ER menyajikan pula batasan di mana isi basisdata harus menyesuaikan

dengan batasan. Salah satu batasan yang penting adalah pemetaan kardinalitas (mapping cardinalities),

yang menggambarkan jumlah entitas yang berhubungan dengan entitas lain melalui relasi. Misalnya,

jika suatu matakuliah dapat lebih dari satu mahasiswa, model ER dapat menunjukkannya.

Gambar 3.2 Model ER

MATAKULI

AH

NamaMTK

SKS KodeMT

K

1 1 M M mengambil

Nim

Nama

Alamat

MAHASISW

A

Sistim Basis Data

Sistim Basis Data

32

3.1.2. Model Relasional

Model relasional menggunakan sekumpulan tabel untuk menyajikan, baik data maupun relasi, diantara

data-data. Masing-masing tabel mempunyai sejumlah kolom dan masing-masing kolom mempunyai

nama unit. Gambar 3.3 menyajikan contoh basisdata relasional yang terdiri atas tabel, yaitu satu

menunjukkan rincian daftar mahasiswa, kedua menunjukkan daftar mata kuliah dan ketiga

menunjukkan mata kuliah yang diambil oleh mahasiswa.

(a) Tabel Mahasiswa

(b) Tabel Matakuliah

(c) Tabel Mengambil

Gambar 3.3 Contoh basisdata relasional

Sistim Basis Data

Sistim Basis Data

33

Tabel pertama, yaitu tabel mahasiswa, menunjukkan misalnya mahasiswa yang mempunyai NIM 21001 adalah Adi tinggal di jl. A. Yani No.233. tabel kedua, yaitu tabel matakuliah, menunjukkan

misalnya KodeMK CS001 Adalah Sistem Basisdata dan CS002 adalah Analisis Algoritma. Tabel

ketiga menunjukkan mata kuliah yang diambil oleh seorang mahasiswa. Sebagai contoh, mata kuliah

Sistem Basisdata dengan kode CS001 diambil oleh mahasiswa yang NIM-nya 21001 bernama Adi.

Model relasional adalah contoh model berdasarkan record, yang disebut demikian karena basisdata

disusun dalam record-record dengan berbagai tipe. Masing-masing tabel berisi record dengan tipe

tertentu. Masing-masing tipe record menentukan jumlah field atau atribut. Kolom suatu tabel

berhubungan dengan atribut tipe record.

Model data relasional adalah model data yang peling banyak digunakan dan sebagian besar Sistem

basisdata yang ada sekarang didasarkan pada model relasional.

Model relasional terletak pada tingkatan abstraksi lebih rendah dari pada model ER. Perancangan

basisdata sering dilaksanakan dalam model ER lalu diubah ke model relasional. Sebagai contoh, kita

melihat bahwa tabel mahasiswa dan matakuliah berhubungan dengan kumpulan entitas bernama sama,

sementara tabel berhubungan dengan kumpulan relasi.

3.1.2 Model-model Data Lainnya

Model data berorientasi objek (object oriented data model) adalah model data lain yang semakin

menarik perhatian. Model dapat dipandang sebagai pengembangan model ER dengan penambahan

pada pembungkusan (encapsulation), motode (fungsi), dan identitas objek.

Model data relational objek (object relational data model) menggabungkan model data berorientasi

objek dengan model data relasional.

Model data yang semistructured mengizinkan spesifikasi data di mana masing-masing data bertipe

sama bisa mempunyai atribut berbeda. Ini berbeda dengan model data yang disebutkan di atas, dimana

setiap data dengan tipe tertentu harus mempunyai atribut sama.

Dua model data lain, yaitu model data jaringan (network data model) dan model data hierarki (

hierarchiecal data model), telah ada terlebih dahulu sebelum model data relational. Namun, keduanya

jarang digunakan

.

3.2 Batasan

Skema ER bisa menentukan batasan tertentu di mana isi basisdata harus sesuai dengannya.

3.2.1 Pemetaan kardinalitas

Pemetaan kardinalitas menyatakan jumlah entitas di mana entitas lain dapat dihubungkan ke entitas

tersebut melalui sebuah himpunan relasi.

Pemetaan kardinalitas sangat berguna dalam menentukan himpunan relasi biner meskipun pemetaan

dapat berperan dalam deskripsi himpunan relasi yang melibatkan lebih dari dua himpunan entitas.

Untuk suatu himpuan relasi biner R antara himpunan entitas A dan B, pemetaan kardinalitas harus salah satu dari berikut :

One-to-One, sebuah entitas pada A berhubungan dengan paling banyak satu entitas pada B dan sebuah entitas pada B berhubungan dengan paling banyak satu entitas pada A

Sistim Basis Data

Sistim Basis Data

34

A B

Gambar 3.4 Hubungan one-to-one

Contoh :

Aturan bisnis :

a) Pada pengajaran privat, satu guru satu siswa.

b) Seorang guru mengajar seorang siswa, seorang siswa diajar oleh seorang guru.

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

A B

Gambar 3.5 Hubungan one-to-many

Contoh :

Aturan bisnis :

a) Dalam suatu perusahaan, satu bagian mempekerjakan banyak pegawai.

b) Satu bagian mempekerjakan banyak pegai, satu pegawai kerja dalam satu bagian.

1 1 GURU SISWA MENGAJAR

A1

A3

A2

A4

B1

B2

B4

B3

B1

B2

B4

B3

B5

A1

A3

A2

Sistim Basis Data

Sistim Basis Data

35

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

A B

Gambar 3.6 Hubungan many-to-one

Contoh :

Aturan bisnis :

a) Dalam suatu perusahaan, banyak pegawai dipekerjakan pada satu bagian.

b) Banyak pegawai dipekerjakan pada satu bagian, satu pegawai bekerja dalam satu bagian.

Many-to-Many, sebuah entitas pada A berhubungan dengan nol atau lebih entitas pada B dan sebuah entitas pada B dapat dihubungkan nol atau lebih entitas pada A

IV 1 BAGIAN dipekerjakan

BAGIAN

A1

A2

A4

A3

A5

B1

B3

B2

1 M BAGIAN

mempekerjakan PEGAWAI

Sistim Basis Data

Sistim Basis Data

36

A B

Gambar 3.7 Hubungan many-to-many

Contoh :

Aturan bisinis :

a) Dalam universitas, seorang mahasiswa dapatt mengambil banyak mata kuliah.

b) Satu mahasiswa mengambil banyak banyak matakulaih dan satu matakuliah diambil banyak mahasiswa.

Pemetaan kardinalitas yang sesuai untuk himpunan relasi tertentu tergantung pada situasi dunia nyata.

Sebagai gambaran, kita mengambil contoh himpunan relasi pepinjam. Jika pada suatu bank, pinjaman

dapat dimiliki oleh hanya satu nasabah dan seorang nasabah dapat mempunyai beberapa pinjaman,

maka himpunan relasi nasabah pinjaman adalah one-to-many. Jika sebuah pinjaman dapat dimiliki

oleh beberapa nasabah, himpunan relasinya adalah many-to-many.

3.2.2 Batasan Partisipasi

Partisipasi sebuah himpunan entitas E pada himpunan relasi R dikatakan total jika setiap entitas pada

E berpartisipasi pada setidaknya satu relasi pada R. jika hanya beberapa entitas pada E berpartisipasi

pada relasi di R, partiisipasi himpunan entitas E pada relasi R disebut parsial. Misalnya, kita

mengharapkan setiap entitas pinjaman direlasikan ke setidaknya satu nasabh melalui relasi pinjaman.

Oleh karena itu, partisipasi pinjaman pada himpunan relasi peminjam adalah total. Sebaliknya,

seseorang dapat menjadi nasabah sebuah bank, baik dia mempunyai pinjaman pada bank maupun

tidak. Oleh karena itu, hanya beberapa entitas nasabah dihubungkan ke himpunan entitas pinjaman

melalui relasi peminjam dan partisipasi nasabah pada himpunan relasi peminjam adalah parsial

3.3 Membuat ERD

Entity Relationship Diagram adalah alat pemodelan data utama dan akan membantu mengorganisasi

data dalam suatu proyek ke dalam entitas-entitas dan menentukan hubungan antarentitas. Proses

M MAHASISWA mengambil

MATAKULIAH N

A1

A3

A2

A4

B1

B2

B4

B3

Sistim Basis Data

Sistim Basis Data

37

memungkinkan analis menghasilkan struktur basisdata yang baik sehingga data dapat disimpan dan diambil secara efisien (www.infocom.cqu.au).

3.4 Metodolgi ERD

1. Menentukan Entitas Menentukan peran, kejadian, lokasi, hal nyata,

dan konsep di mana pengguna akan

menyimpan data.

2. Menentukan Relasi Menentukan hubungan anatarapasangan entitas

menggunakan matriks relasi.

3. Gambar ERD sementara Entitas digambarkan dengan kotak dan relasi

dengan garis yang menghubungkan entitas

4. Isi Kardinalitas Menentukan atribut yang mengindentifikasi

satu dan hanya satu kejadian masing-masing

5. Tentukan Kunci utama Menentukan atribut yang mengidentifikasi satu

dan hanya satu kejadian msing-masing

6. Gambar ERD bersar Kunsi Menghilangkan relasi many-to-many dan

memasukkan primay dan kunci tamu pada

masing-masing entitas.

7. Menetukan Atribut Menulis field-field yang diperlukan oleh

Sistem

8. Pemetaan Atribut Untuk masing-masing atribut, memasangkan

atribut dengan satu entitas yang sesuai.

9. Gambar ERD dengan Atribut Mengatur ERD dari langkah 6 dengan

menambah entitas atau relasi yang ditemukan

pada langkah 8

10. Periksa Hasil Apakah ERD sudah menggambar Sistem yang

akan dibangun

3.5 Contoh Kasus

Sebuah perusahaan mempunyai beberapa bagian. Masing-masing bagian mempunyai pengawas dan

setidaknya, satu pegawai. Pegawai harus ditugaskan pada saling tidak satu bagian, tetapi dapat pula

beberapa bagian. Paling tidak satu pegawai mendapat tugas sebuah proyek. Namun, seorang pegawai

dapat libur dan tidak mendapat tugas proyek. Field-fieldnya adalah Nama Bagian, Proyek, Pengawas,

Pegawai, Nomor Pengawas, Nomor Pegawai, dan Nomor Proyek.

1. Menentukan Entitas

Entitas pada sistem adalah Bagian, Pegawai, Pengawas, dan Proyek. Entitas perusahaan tidak

termasuk dalam sistem karena dia hanya memiliki satu instansi. Entitas yang benar harus mempunyai

lebih dari satu instansi.

2. Menentukan Relasi

Sistim Basis Data

Sistim Basis Data

38

Kita membuat matriks relasi entitas sebagai berikut :

Bagian Pegawai Pengawas Proyek

bagian Ditugaskan ke Dijalankan oleh

Pegawai Pemilik

Bekerja pada

Supervisor Menjalankan

Project Menggunakan

3. Menggambar ERD Sementara

Kita menghubungkan entitas yang mempunyai relasi seperti yang ditunjukkan pada matriks relasi

entitas.

Gambar 3.8 Gambar ERD Sementara

4. Mengisi Kadinalitas Dari deskripsi permasalahan, kita mengetahui bahwa:

Masing-masing bagian hanya mempunyai satu pengawas.

Seorang pengawas hanya bertugas pada satu bagian.

Masing-masing bagian memilki paling tidak satu pegawai.

Masing-masing pagawai bekerja paling tidak pada satu bagian.

Bagian Pengawas

Proyek

dijalankan

Bekerja

pada

Ditugaskan

ke

Pegawai

Sistim Basis Data

Sistim Basis Data

39

Masing-masing proyek dikerjakan oleh paling tidak satu pegawai.

Seorang pegawai bisa mendapat tugas 0 atau beberapa proyek.

Gambar 3.8 Mengisi Kadinalitas

5. Menentukan Kunci Utama

Kunci utamanya adalah Nama Bagian, Nomor Pengawas, Nomor Pegawai, dan nomor Proyek.

6. Menggambar ERD berdasar Kunci Ada dua relasi many-to-many pada ERD sementara, yaitu antara bagian dan pegawai serta antara

pegawai dan proyek. Oleh karena itu, kita harus membuat entitas baru bagian-pegawai dan pegawai-proyek. Kunci utama Bagian-pegawai adalah gabungan Nama Bagian dan Nomr Pegawai. Kunci

utama Pegawai-Proyek adalah gabungan Nomor Pegawai dan Nomor Proyek.

dijalankan

Bekerja

pada

Ditugaskan

ke

Bagian Pengawas

Pegawai Proyek

Sistim Basis Data

Sistim Basis Data

40

Bab 4

NORMALISASI

4.1Pendahuluan

Normalisasi adalah teknik perancangan yang banyak digunakan sebagai pemandu dalam merancang

basisdata relasional. Pada dasarnya, normalisasi adalah proses dua langkah yang meletakkan data

dalam bentuk tabulasi dengan menghilangkan kelompok berulang lalu menghilangkan data yang

terduplikasi dari tabel relasioanl (www.utexas.edu).

Teori normalisasi didasarkan pada konsep bentuk normal. Sebuah tabel relasional dikatan berada pada

bentuk normal tertentu jika tabel memenuhi himpunan batasan tertentu. Ada lima bentuk normal yang

telah ditemukan

.

4.2Konsep Dasar

Normalisasi adalah bagaian perancangan basisdata. Tanap normalisasi, Sistem basisdata menjadi tidak akurat, lambat, tidak efisien, serta tidak memberikan data yang diharapkan (www.microsoft-accesssolutions.co.uk)

Pada waktu menormalisasi basisdata, ada empat tujuan yang harus dicapai, yaitu :

1. Mengatur data dalam kelompok-kelompok sehingga masing-masing kelompok hanya menangani bagian kecil Sistem.

2. Meminimalkan jumlah data berulang dalam basisdata.

3. Membuat basisdata yang datanya diakses dan dimanipulasi secara cepat dan efisien tanpa melupakan integritas data.

4. Mengatur data sedemikian rupa sehingga kita memodifikasi data, Anda hanya mengubah pada satu tempat.

Perancangan basisdata terkadang menyebut keempat tujuan dengan istilah integritas data,

integritas refernsial, dan pengaksesan data.

Tujuan normalisasi adalah membuat kumpulan tabel relasional yang bebas dari tujuan data

berulang dan dapat dimodifikasi secara benar dan konnisten. Ini berarti bahwa semua tabel pada

basisdata relasional berada pada 3NF jika dan hanya jika hanya semua kolom bukan kunci adalah

(a) saling independen berarti bahwa sepenuhnya tergantung pada kunci utama. Saling independen

berarti bahwa tidak ada kolom bukan kunci yang tergantung pada sembarang kombinasi kolom

lainnya. Dua bentuk normal pertama adalah langkah antara untuk mencapai tujuan, yaitu

mempunyai semua tabel dalam 3 NF (Stephens and Plew,2000).

Sistim Basis Data

Sistim Basis Data

41

4.3 Aturan Normalisasi

Berikut adalah aturan-aturan normalisasi :

1. Hilangkan kelompok berulang-buat tabel terpisah untuk setiap himpunan atribut yang berhubungan dan tentukan munci utama pada masing-masing tabel.

2. Hilangkan data berulang-jika sebuah atribut hanya tergantung pada sebagian kunci utama gabungan, pindahkan atribut ke tabel lain.

3. Hilangkan kolom yang tidak tergantung pada kunci-jika atribut tidak tergantung pada kunci, pindahkan atribut ke tabel lain.

4. Pisahkan relasi majemuk-tidak ada tabel yang bisa mengandung dua atau lebih relasi 1:n atau n:m yang tidak berhubungan langsung.

5. Pisahkan relasi majemuk yang berhubungan secara semantic-ada batasan pada informasi yang memperbolehkan pemisahan relasi many-to-many yang berhubungan secara lagis.

6. Bentuk normal optimal-sebuah model hanya dibatasi oleh fakta sederhana.

7. Bentuk normal domain-key-sebuah model harus terbatas dari sebuah anomaly (www.datamodel.org).

4.4 Ketergantungan Fungsional

Konsep ketergantungan fungsional adalah dasar untuk tiga bentuk normal pertama. Sebuah kolom

y suatu tabel relasional R dikatakan tergantung secara fungsional pada kolom x jika dan hanya jika

setiap nilai x pada R berhubungan dengan tepat satu nilai y pada suatu saat tertentu. X dan y bisa

berupa gabungan dengan mengatakan bahwa kolom y tergantung secara fungsional pada x sama

dengan mengatkan bahwa nilai kolom x menentukan nilai kolom y. jika kolom x adalah kunci

utama, maka semua kolom pada tabel relasional R harus tergantung secara fungsional pada x.

Notasi ketergantungan fungsional adalah :

Notasi dapat dibaca pada tabel relasional bernama R, kolom x secara fungsional menentukan

kolom y.

Ketergantungan fungsional penuh diterapkan pada tabel dengan kunci gabungan. Kolom y pada

tabel relasional R tergantung sepenuhnya pada x jika kolom y tergantung secara fungsional pada x

dan tidak tergantung secara fungsional pada himpunan bagian dari x. fungsional penuh berarti

bahwa ketika sebuah kunci utama adalah gabungan, yaitu terbentuk dari dua atau lbih kolom, maka

kolom lainnya harus ditentukan oleh seluruh kolom yang membentuk kunci utama dan tidak hanya

beberapa kolom.

Secara sederhana, kita dapat mengatkan bahwa normalisasi adalah proses menghilangkan data

berulang dari tabel relasional dengan memecah tabel relasional menjadi tabel-tabel yang lebih

kecil. Tujuannya adalah agar hanya mempunyai kunci utama pada sebelah kiri ketergantungan fungsional. Supaya benar, pemecahan tabel haruslah lossless. Ini berarti tabel-tabel baru dapat

digabungkan kembali dengan natural join agar menghasilkan tabel asli tanpa membentuk data

berulang.

Sistim Basis Data

Sistim Basis Data

42

4.5 Bentuk Normal Pertama (1NF)

Contoh yang kita gunakan di sini adalah sebuah perusahaan yang mendapatkan barang dari

sejumlah pemasok. Masing-masing pemasok berada pada satu kota. Sebuah kota dapat mempunyai

lebih dari satu pemasok dan masing-masing kota mempunyai kode status tersendiri. Masing-

masing pemasok menyediakan banyak barang. Tabel relasionalnya dapat dituliskan sabagai berikut

:

PEMASOK (p#, status, kota, b#,qty) di mana

P# : kode pemasok (kunci utama)

Status : kode status kota

Kota : nama kota

B# : barang yang dipasok

Qty : jumlah barang yang dipasok

Supaya bisa menggabungkan jumlah barang yang dipasok (qty) secara unit dengan barang (b#) dan

pemasok (p#), kita menggunakan kunci utama gabungan yang tersusun dari b# dan p#.

Sebuah tabel relasional secara definisi selalu berada dalam bentuk normal pertama. Semua nilai pada

kolomnya-kolomnya adalah atomic. Ini berarti kolom-kolom tidak mempunyai nilai berulang.

PEMASOK

P# Status Kota b# Qtp

P1 20 Yokyakarta B1 300

P1 20 Yokyakarta B2 200

P1 20 Yokyakarta B3 400

P1 20 Yokyakarta B4 200

P1 20 Yokyakarta B5 100

P1 20 Yogyakarta B6 100

P2 10 Medan B1 300

P2 10 Medan B2 400

P3 10 Medan B2 200

P4 20 Yokyakarta B2 200

P4 20 Yokyarta B5 300

P4 20 Yogyakarta B5 400

Gambar 4.1 menunjukkan tabel pemasok dalam 1 NF.

Meskipun berada pada 1 NF, tabel pemasok mengandung data berulang. Sebagai contoh, informasi

tentang lokasi pemasok dan status lokasi harus diulang untuk setiap barang yang dipasok. Perulangan

menyebabkan apa yang disebut update anomalies. Updata anomalies adalah masalah yang timbul

ketika informasi ditambahkan, dihapus, atau diupdate. Sebagai contoh, anomaly berikut dapat terjadi

pada tabel pemasok :

1. INSERT. Fakta bahwa pemasok tertentu (p5) berlokasi pada kota tertentu (bandung) tidak dapat ditambahkan hingga mereka memasok barang.

2. DELETE. Jika sebuah baris dihapus, maka yang hilanya tidak hanya informasi tentang barang dan jumlahnya, tetapi juga informasi tentang pemasok.

Sistim Basis Data

Sistim Basis Data

43

3. UPDATE. Jika pemasok p1 pindah dari Yogyakarta ke Jakarta, maka enam baris harus di-update karena adanya perubahan.

4.6 Bentuk Normal Kedua (2NF)

Definisi bentuk normal kedua menyatakan bahwa tabel dengan kunci utama gabungan hanya dapat

berada pada 1 NF, tetapi tidak pada 2NF. Sebuah tabel relasional berada pada bentuk normal kedua

jika dia berada pada 1NF dan setiap kolom bukan kunci yang sepenuhnya tergantung pada kunci

utama. Ini berarti bahwa setiap kolom bukan kunci harus tergantung pada seluruh kolom pada 2NF

karena status dan kota tergantung secara fungsional hanya pada kolom p# dari kunci gabungan

(p#,n#). Ini dapat digambarkan dengan membuat daftar tergantung fungsional :

P# kota, status

Kota status

(p#, b#) qty

Proses mengubah tabel 1 NF ke 2 NF adalah :

1. Tentukan sembarang kolom penentu selain kunci gabungan dan kolom-kolom yang ditentukannya.

2. Buat dan beri nama tabel baru untuk masing-masing penentu dan kolom-kolom yang ditentukannya.

3. Pindahkan kolom-kolom yang ditentukan daritabel asal ke tabel baru. Penentu akan menjadi kunci utama pada tabel.

4. Hapus kolom yang baru dipindahkan dari tabel asal, kecuali penentu yang akan menjadi kunci utama pada tabel.

5. Tabel asal bisa diberi nama baru.

Pada contoh, kita memindahkan kolom p#, status, dan kota ke tabel baru yang disebut PEMASOK2,

kolom p# menjadi kunci utama tabel ini. Gambar 4.2

PEMASOK2

P# Status Kota

P1 20 Yogyakarta

P2 10 Medan

P3 10 Meda

P4 20 Yogkarta

P5 30 Bandung

Sistim Basis Data

Sistim Basis Data

44

BARANG

P# B# Qty

P1 B1 300

P1 B2 200

P1 B3 400

P1 B4 200

P1 B5 100

P1 B6 100

P2 B1 300

P2 B2 400

P3 B2 200

P4 B2 200

P4 B2 300

P4 B5 400

Gambar 4.2 Tabel bentuk normal kedua (2NF)

Tabel masih mengandung anomaly pada contoh, PEMASOK2, yaitu :

1. INSERT. Fakta bahwa kota tertentu mempunyai status tertentu (semarang mempunyai status 40) tidak dapat dimasukkan hingga ada pemasok di kota tersebut.

2. DELETE. Menghapus sembarang baris pada PEMASOK2 akan menghilangkan informasi status tentang kota tersebut serta hubungan antara pemasok dan kota.

4.7 Bentuk Normal Ketiga (3NF)

Bentuk normal ketiga menghapuskan semua kolom pada tabel relasional tergantung hanya pada kunci

utama. Secara defines, sebuah tabel berada pada bentuk normal ketiga (3NF) jika tabel sudah berada

pada 2NF dan setiap kolom yang bukan kunci tidak tergantung secara transitif pada kunci utamanya.

Dengan kata lain, semua atribut bukan kunci tergantung secara fungsional hanya pada kunci utama.

Table BARANG sudah dalam bentuk normal ketiga. Kolom bukan kunci, qty, tergantung sepenuhnya

pada kunci utana (p#, b#). PEMASOK masih berada pada 2NF, tetapi belum berada pada 3NF karena

dia mengandung keterangan transitif. Ketergantungan transitif terjadi ketika sebuah kolom bukan

kunci, yang ditentukan oleh kunci utama, menentukan kolom lainnya. Konsep ketergantungan transitif

dapat digambarkan dengan menunjukkan ketergantungan fungsional pada PEMASOK2, yaitu :

PEMASOK2.P# PEMASOK2.status

PEMASOK2.p# PEMASOK2.kota

PEMASOK2.kota PEMASOK2.status

Perlu dicatat bahwa PEMASOK2. Statuts ditentukan, baik oleh kunci utama, p#, maupun kolom bukan

kunci utama, kota.

Proses mengubah tabel 3NF adalah:

1. Tentukan semua penentu selain kunci utama dan kolom yang ditentukannya.

Sistim Basis Data

Sistim Basis Data

45

2. Buat dan beri nama tabel baru untuk masing-masing penentu dan kolom yang ditentukannya.

3. Pendahkan kolom yang ditentukan dari tabel asal ke tabel baru. Penentu menjadi kunci utama tabel baru.

4. Hapus kolom yang baru saja dipindahkan dari tabel asal, kecuali penentu yang akan berfungsi sebagai kunci utama.

5. Tebel asal bida diberi nama baru.

Untuk mengubak PEMASOK2 menjadi 3NF, kita membuat tabel baru yang disebut KOTA-STATUS

dan memindahkan kolom kota dan status ke tabel baru. Status dihapus dari tabel asal, kota tetap

dibiarakan karena akan berfungsi sebagai kunci asing bagi KOTA_STATUS, dan tabel asal diberi

nama baru PEMASOK _KOTA. Gambar 4.3 menunjukkan hasilnya.

PEMASOK KOTA

P# Kota

P1 Yogyakarta

P2 Medan

P3 Meda

P4 Yogkarta

P5 Bandung

KOTA_STATUS

KOTA Status

Yogyakarta 20

Medan 10

Bandung 30

Semarang 40

Gambar 4.3 Tabel bentuk normal ketiga (3NF)

Perubahan ke 3NF menghasilkan tiga tabel dan dapat dinyatakan dalam “pseudoSQL”sebagai berikut :

BARANG (b#,b#, qty)

Kunci utama (p#, b#)

Foreign Key (p#) references PEMASOK_KOTA .p#

PEMAOK_KOTA (p#, kota)

Kunci utama (p#)

Foreign Key (p#) references PEMASOK_KOTA . kota

KOTA_STATUS (kota, status)

Kunci utama (kota)

Keuntungan bentuk normal ketiga adalah menghilngkan data berulang sehingga akan menghemat

ruang dan mengulangi anomali.

Sebagai contoh, peningkatan pada contoh tebel di atas adalah :

1. INSERT. Fakta tentang status sebuah kota, semarang mempunyai status 40, dapat ditambahkan meskipun mereka belum memasok barang.

Sistim Basis Data

Sistim Basis Data

46

2. DELETE. Informasi tentang barang yang dipasok dapat dihapus tanpa menghilangkan informasi tentang pemasok atau kota.

3. UPDATE. Perubahan lokasi pemasok atau status suatu kota hanya membutuhkan modifikasi satu baris.

4.8 Bentuk Normal Boyce-Code (BCNF)

Setelah 3NF, semua masalah normalisasi hanya melibatkan tabel yang mempunyai tiga kolom atau

lebih dan semua kolom adalah kunci. Banyak praktisi berpendapat bahwa menempatkan entitas pada

3NF sedah culup karena sangat jarang entitas yang berada pada entitas 3NF bukan merupakan 4NF

dan 5NF. Lebih lanjut, mereka berpendapat bahwa keuntungan yang didapat dari mengubah entitas ke

4NF dan 5NF sangat kecil sehingga tidak perlu dikerjakan.

Bentuk Normal Boyce-Code (BCNF) adalah versi 3NF yang lebih teliti dan berhubungan dengan tabel

relasional yang mempunyai (a) banyak kunci kandidat, (b) kunci kandidat gabungan, dan (c) kunci

kandidat yang saling tumpang tindih.

BCNF didasarkan pada konsep penentu. Sebuah kolom penentu adalah kolom di mana kolom-kolom

lain sepenuhnya tergantung secara fungsional. Sebuah tabel relasional berada pada BCNF jika dan

hanya jika setiap penentu adalah kunci kandidat.

4.9 Bentuk Normalisasi Keempat (4NF)

Sebuah tabel relasional pada normal keempat (4NF) jika dia dalam BNCF dan sebuah ketergantungan

mulitivalue merupakan ketergantungan fungsional.

Bentuk normal kempat (4NF) didasarkan pada konsep ketergantungan mulitivalue (MVD). Sebuah

ketegantungan multivalue terjadi ketika dalam sebuah tabel relasional yang mengandung setidaknya

tiga kolom, satu kolom mempunyai banyak baris bernilai sama, tetapi kolom lain bernilai berbeda.

Definisi secara formal diberikan oleh C.J Date, yaitu :

Misalnya, ada sebuah tabel relasional R dengan kolom A, B, dan C, maka R.A R.B

dipenuhi jika dan hanya jika R.A R.C dipenuhi pula.

Adalah benar jika dan hanya jika himpunan nilai B yang cocok dengan pasangan nilai A dan

Nilai C pada R hanya tergatung pada nilai A dan tidak tergantung pada nilai C.

MVD selalu terjadi dalam pasangan, yaitu R.A R.B dipenuhi jika dan hanya jika R.A R.C

dipenuhi pula.

Misalnya, pegawai ditugaskan ke banyak proyek dan ia mempunyai banyak keahlian. Jika kita

mencatat informasi ini pada satu tabel, ketiga atribut harus digunakan sebagai kunci karena tidak ada

satu atribut pun yang dapat secara unti mengindentifikasikan sebuah record.

Hubungan antara peg# dan pry# merupakan ketergantungan multivalue karena untuk setiap pasangan

nilai peg#/ahli pada tabel, himpunan nilai pry# yang berhubungan hanya ditentukan oleh peg# dan

tidak tergantung pada ahli. Hubungan antara peg# dan ahli merupakan ketergantungan multivalue

karena himpunan nilai ahli untuk pasangan peg#/pry# selalu hanya tergantung pada peg#.

Untuk mengubah sebuah tabel dengan ketergantungan multivalue ke dalam 4NF, pindahkan masing-

masing pasangan MVD ke tabel baru. Gamabar 4.4 menunjukkan hasilnya.

Sistim Basis Data

Sistim Basis Data

47

PEGAWAI PROYEK

Peg# Pry#

1211 p1

211 p3

PEGAWAI AHLI

peg# Ahli

1211 Analisis

1211 Perancangan

1211 Pemrograman

Gambar 4.4 Tabel bentuk normal keempat (4NF)

4.10 Bentuk Normal Kelima (5NF)

Sebuah tabel berada pada bentuk normal kelima (5NF) jika dia tidak dapat mempunyai dekomposisi

lossless menjadi sejumlah tabel lebih kecil.

Empat bentuk normal pertama berdasarkan pada konsep ketergantungan fungsional, sedangkan bentuk

normal kelima berdasarkan pada konsep ketergantungan gabungan (join dependence). Ketergantungan

gabungan berarti bahwa sebuah tabel, setelah didekomposisi menjadi tiga atau lebih tabel yang lebih

kecil, harus dapat digabungkan kembali untuk membentuk tabel asal. Dengan kata lain, 5NF

menunjukkan ketika sebuah tabel tidak dapat didekomposisi lagi.

Menambah sebuah record pada sebuah tabel yang bukan 5NF menimbulkan hasil yang salah ketika

tabel didekomposisi lalu digabung kembali. Sebagai contoh, misalnya kita mempunyai pegawai yang

menggunakan keahlian perancangan pada satu proyek dan keahlian pemrograman pada proyek

lainnya. Berikut adalah informasinya :

Peg# pry# ahli

1211 11 perancangan

1211 28 pemrograman

Kemudian, kita menambahkan data pegawai (1544) yang menggunakan keahlian pemrograman pada

proyek 11.

Peg# pry# ahli

1211 11 perancangan

1211 28 pemrograman

1544 11 pemrograman

Sistim Basis Data

Sistim Basis Data

48

Kemudian, kita dekomposisi tabel menjadi dua tabel seperti yang dilakukan sebelumnya. Ketika kita menggabungkan kembali, tabel hasil gabungan mengandung data yang salah.

Peg# pry# ahli

1211 11 perancangan

1211 11 pemrograman

1211 28 pemrograman

1544 11 pemrograman

1544 11 pemrograman

Dengan menambah datu data baru ke tabel yang bukan 5NF, ada dua pernyataan yang salah, yaitu :

Pernyataan pertama :

Pegawai 1211 telah ditugaskan ke proyek 11.

Proyek 11 membutuhkan keahlian pemrograman.

Oleh karena itu, pegawai 1211 harus menggunakan keahlian pemrograman ketika ditugaskan ke proyek 11.

Pernyataan kedua :

Pegawai 1544 telah ditugaskan ke proyek 11

Proyek 11 membutuhkan keahlian perancangan.

Oleh kerana itu, pegawai 1544 harus menggunakan keahlian perancangan dalam proyek 11.

Data salah

Data salah

Sistim Basis Data

Sistim Basis Data

49

Bab 5

PENERAPAN KEAMANAN BASISDATA

Supaya basisdata yang kita rancang mendung perusahaan mencapai tujuannya, basisdata harus bisa

diakses dan diUpdate oleh pengguna. DBA dan pembuat aplikasi harus member pengguna akses

kebasisdata yang mereka butuhkan dalam menyelasikan pekerjaan, sembari meminimalkan kerusakan

yang dapat pengguna lakukan pada Sistem dan menyembunyikan data yang tidak boleh mereka lihat.

5.1 Pentingnya Keamanan pada Perancangan Basisdata

Pengguna yang mengakses Sistem harus bisa mengakses melalui LAN atau WAN dan sekarang paling

banyak melalui Word Wide Web. Aplikasi yang menggunakan aplikasi Web Browser sebagai antar

muka utama sudah umum saat ini ketika kita meletakkan basisata pada web, dia menjadi mudah

diserang Hacker dan penjahat lain dari luar organisai yang akan merusak atau mencuri data.

Bayangkan jika gaji semua orang, data personalia, atau rahasia perusahaan lain ditampilkan untuk

umum melalui website. Bahkan dari dalam perusahaan, seorang pegawai dapat merusak Sistem ketika

ia dipecat.

Sebagian besar basisdata saat ini memungkinkan akses melalui WWW. Bagian perancangan harus

memasukkan objek-objek basisdata (pengguna, kode, tabel, dan role) yang mendukung akses web dan

syarat keamanan yang vital seperti sertivikat dan SSL yang harus disertakan dengan akses.

Kemungkinan terjadinya gannfuan orang-orang, baik dalam maupun luar organisasi, harus dilawan.

Masalh lebih besar dapat terjadi ketika orang-orang dalam perusahaan harus menanggulangi

kemungkinan kesalahan yang tak disengaja. Menghapus atau menimpa suatu file data, menghapus

table, atau meng-update kolom secara tidak benar dengan tidak sengaja dapat menimbulkan masalah

seperti yang ditimbulkan oleh hacker. Oleh karena itu, keamanan harus direncanakan dengan baik dan

diintegrasikan dalam basisdata. Baisdata seharusnya tidak hanya menyediakan data pada pengguna,

tetapi juga menyediakan proteksi pada data.

5.2 Pengakses Basisdata

Sebagian informasi yang dibututuhkan salama perancangan dan penerapan akan dikumpulkan dari

wawancara selama analisis. Supaya dapat merencanakan keamanan basisdata selama perancangan

basisdata dan melaksanakan keamanan setelah penerapan, semua pengguna basisdata harus ditetapkan

terlebih dahulu. Ada beberapa kategori pengguna untuk setiap Sistem informasi, mulai dari pengguna

akhir sampai administrator Sistem informasi pengguna yang mempunyai akses untuk Sistem informasi

adalah :

Pengguna akhir

Pelanggan

Manajemen

Administrator jaringan

Administrator Sistem

Sistim Basis Data

Sistim Basis Data

50

Administrator basisdata

Pemilik skema

Masing-masing pengguna memiliki tingkatan akses berbeda. Cara termudah menerapkan keamanan

adalah member semua pengguna akses maksimum, tetapi kelemahannya adalah adanya kemungkinan

kehilangan atau penyalagunaan data. Pengguna basisdata harus mempunyai akses yang cukup untuk

melaksanakan pekerjaannya. Dengan kata lain, akses yang diberikan kepada pengguna harus sekecil

mungkin untuk menghindari masalah.

Beberapa informasi bisa merupakan informasi rahasia atau sensitive. Jika ada data sensitif, sebaiknya

data diisolokasi dengan memecahnya menjadi tabel terpisah yang dapat dihubungkan dengan tabel-

tabel tidak sensitive atau dengan membuat view yang tidak memasukkan data sensitive. Pengguna

yang ingin melihat semua data akan diberi akses untuk suatu tabel dan pengguna yang tidak

mempunyai akses hanya diberi hak untuk melihat view.

Ketika hak akses pengguna pada suatu data ditentukan, tipe akses pun harus ditentukan. Secara

umum, data dapat dibuat, diambil, di-update dan dihapus dari basisdata. Beberapa pengguna mungkin

ingin melekukan semua operasi pada basisdata. Pengguna lainnya mungkin hanya ingin melakukan

query pada basisdata atau meng-update data tabel tertentu dalam basisdata. Pengguna tertentu tidak

diperbolehkan untuk menghapus data.

5.2.1 Tingkatan Akses

Pengguna basisdata diberi identitas pengguna dengan password dan kemampuan untuk berhubungan

dengan basisdata. Mebisdata modern membutuhkan keputusan tentang perncangan yang berhubungan

dengan identitas pengguna dan password. Keamanan digunakan untuk mengontrol akses. Pengguna

mempunyai akses, baik ke data maupun ke sumber data. Keduanya dapat dikontrol pada tingkatan

basisdata.

Apabila pengguna diberi identitas pengguna, mereka dapat mengakses basisdata secara langsung ke

dalam jaringan melalui aplikasi client-server. Mereka dapat pula login melalui aplikasi middle tier

untuk mengakses basisdata. Sebagai contoh, pengguna dapat login ke server aplikasi. kemudian, server

aplikasi web berkomunikasi dengan basisdata dengan cara login menggunakan identitas pengguna yang mempunyai akses minimum yang dibutuhkan untuk menyelesaikan pekerjaan. Apkasi client

server umumnya hanya mempunyai satu identitas pengguna untuk masing-masing pengguna. Aplikasi

web yang menggunakan server aplikasi web middle tier dapat menggunakan satu atau beberapa

pengguna basisdata. Pada kedua kasus, bagian perancangan basisdata adalah menentukan kombinasi

privilege Create, Retrieve, Update, dan Delete (CRUD atau INSERT, SELECT, UPDATE, DELETE

dalam SQL). Masing-masing kombinasi privielege yang dibutuhkan untuk menyelasaikan pekerjaan

tertentu harus dan dianalisis untuk memastikan bahwa akses yang diberikan tidak melebihi yang

dibutuhkan.

Pada beberapa basisdata, pengguna dapat login ke basisdata berdasarkan otoritas eksternal. Pada

otoritas eksternal, pengguna mempunyai ID pengguna pada Sistem operasi yang dibuat pada Linux,

Novel, atau NT untuk basisdata. Pengguna yang mempunyai identitas Sistem operasi merupakan

pengguna basisdata yang diatur untuk otorisasi eksternal. Dengan menggunakan otorisasi eksternal,

pengguna Sistem operasi yang login ke Sistem operasi dan baisdata yang diatur untuk otorisasi

eksternal adalah DBA atau account basisdata yang menjalankan program eksternal seperti program

C++ yang mengakses basisdata.

Sistim Basis Data

Sistim Basis Data

51

Sistem administrasi Sistem operasi (SA)(root pada Unix, Admin pada Novel) dapat mengontrol account Sistem operasi dan account basisdata. Sistem adminitrasi maupun Sistem administrator

Basisdata mempunyai potensi melakukan kesalahan. Bagian proses adalah cek and balance untuk

mematikan bahwa yang super tidak disalahgunakan.

Berikut adalah daftar yang menunjukkan tingkatan akses ke sata Sistem informasi :

Pengguna Super (root pada Unix, Admin pada Novell)

Pemilik Basisdata

Pemilik Skema

Pengguna Akhir

Pengguna super adalah account pada Sistem operasi yang mempunyai privilege paling banyak.

Pengguna super memilki akses ke semua file yang disimpan pada Sistem. Pemilik basisdata memiliki

akses ke semua file yang berhubungan dengan software basisdata dan file data pada suatu Sistem.

Meskipun pemilik basisdata dibatasi pada file-file yang berhubungan dengan basisdata, tetapi kita

perlu mengingat bahwa sebagian file pada sebagian Sistem berhubungan dengan basisdata. Pemiliki

skema adalah membuat dan pemilik objek-objek basisdata yang digunakan untuk aplikasi pengguna.

Pemilik skema mempunyai akses tak terbatas ke seluruh objek skema dan bertanggung jawab

mengontrol akses ke account pengguna lainnya. Pengguna akhir mempunyai akses paling sedikit

meskipun basisdata dibust untuk pengguna akhir.

Gambar 5.1 menunjukkan hubungan pengguna dengan basisdata. Objek-objek basisdata dimiliki oleh

skema yang member akses terhadap objek kepada pengguna akhir. Jika pengguna akhir mempunyai

privilege yang cukup, mereka dapat mengakses tabel, view dan objek lainnya di dalam skema.

Ke Pengguna

Query

Membuat

Update data

Hapus data

Skema

Gambar 5.1 Hubungan pengguna dengan basisdata

Pemilik Skema

TABEL3

TABEL1

VIEW1 VIEW2

PENGGUNA1

PENGGUNA2

PENGGUNA3

PENGGUNA4

Sistim Basis Data

Sistim Basis Data

52

Pengguna dalam suatu basisdata dapat pula mengakses basisdata lainnya dengan menghubungkan dua

basisdata. Hubungan keduanya akan menghubungkan pengguna pada basisdata pertama ke pengguna

pada basisdata kedua. Kemudian, pengguna pada basisdata pertama dapat mengakses basisdata kedua

dengan privilege yang dimiliki pengguna, tetapi harus diatur untuk memastikan tool tidak

disalahgunakan.

5.2.2 Privilege

Privilege digunakan untuk mengontrol akses pengguna. Privilege terdapat pada tingkatan Sistem

operasi, basisdata, dan aplikasi. priveliege basisdata mengontrol akses pengguna dalam lingkungan

basisdata seperti manipulasi struktur basisdata dan akses ke objek skema. Ada dua tipe dasar privilege

dalam basisdata relasional, yaitu :

Privilege Sistem

Privilege objek

Privilege Sistem terdiri atas hal-hal yang memungkinkan pengguna melakukan tugasnya pada ruang

lingkup basisdata, sedangkan privilege objek memungkinkan pengguna melakukan tugasnya pada

ruang lingkup skema. Privilege Sistem meliputi kemampuan membuat tabel, menghapus tabel,

mengubah struktur tabel, membuat indeks dan view, dan memanipulasi account pengguna. Privilege

objek meliputi kemampuan mengambil data dari tabel dan memanipulasi data tabel. Privilege Sistem

berbeda-beda antara satu perangkat lunak basisdata relasional dengan yang lainya. Sebaliknya,

privilege objek lebih standar.

Berikut adalah privilege objek untuk basisdata relasional :

SELECT – memungkinkan data diambil daritable.

INSERT – memungkinkan pembentukan baris data baru pada tabel.

UPDATE – memungkinkan data yang sudah ada dalam tabel untuk dimodifikasi.

REFERENCES – memungkinkan kolom dalam tabel untuk diacu kolom lain (seperti melalui kunci utama).

USAGE – memungkinkan pengguna domain tertentu.

Privilege di-grant kepada pengguna degan perintah GRANT dan dicabut dari pengguna dengan

perintah REVOKE. Dua pilah dapat digunakan dengan perintah GRANT agar pengguna lain dapat

memberikan grant pada pengguna lainnya. Jika seorang pengguna di-grant privilege objek dengan

WITH GRANT OPTION, dia diberi hak akses khusus ke objek basisdata kepada pengguna lain

meskipun pengguna asli tidak mempunyai objek. Demikian pula, WITH ADMIN OPTION dapat

ditambahkan pada perintah GRANT yang berhubungan dengan privilege Sistem dan memungkinkan

seorang pengguna untuk meng-grant privilege Sistem ke pengguna lain.

Gambar 5.2 mengilustrasikan proses pengaturan akses pengguna akhir melalui privilege basisdata.

Dua tipe privilege ditunjukkan pada gambar, yaitu privilege objek dan privilege Sistem. Pemilik

Sistim Basis Data

Sistim Basis Data

53

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

Grant pada ke

Grant ke

Gambar 5.2 Proses pengaturan akses pengguna akhir melalui privilege basisdata

Pemilik Skema SELECT

INSERT

UPDATE

DELETE

TABEL1

TABEL2

VIEW1

VIEW2

Pemilik Skema CREATE

TABEL

CREATE

INDEX

CREATE VIEW

PENGGUNA1

PENGGUNA2

PENGGUNA3

PENGGUNA4

Sistim Basis Data

Sistim Basis Data

54

5.2.3 Role

Kombinasi privilege basisdata dan privilege tabel CRUD yang diperlukan untuk menyelesaikan

pekerjaan tetentu dapat diberikan pada pengguna secara individu. Namun, hal ini tidak efektif. Sebagai

bagian perancangan, kita bisa menentukan fungsi pekerjaan yang ada pada aplikasi kita dan privilege

yang ada pada basisdata, tabel-tabelnya, dan objek-objek basisdata lain yang dibutuhkan oleh masing-

masing fungsi pekerjaan. Kemudian, kita bisa membuat objek basisdata yang disebut role. Role

mengikutsertakan seluruh privilege yang dibutuhkan untuk menyelesaikan fungsi pekerjaan.

Lebih lanjut, pengguna di-grant satu atu lebih role. Identitas pengguna digrant pada role yang

dibutuhkan untuk menyelesaikan semua fungsi yang berhak dilakukan oleh pengguna tertentu. Sebagai

tambahan pada SELECT, INSERT, UPDATE, atau DELETE, role bisa pula memasukkan privilege

melalui kunci tamu, atau mengekseskusinya. Menggunakan role akan menyederhanakan pengaturan

akses basisdata dan pengaturan privilege objek basisdata.

membuat

Grant pada ke

Grant

Gambar 5.3 Pemakaian role basisdata

Gambar 5.3 mengilustrasikan pemakaian role basisdata. Terlebih dahulu, DBA membuat role. Ketika

dibuat, role merupakan objek kosong yang ahnya mempunyai nama. Role dapat di-grant ke pengguna

setiap saat setelah dia mempunyai nama.role dapat di-grant ke role terlebih dahulu. Privilege objek

dapat di-grant oleh role ke pemilik skema dan privilege Sistem dapat di-grant oleh DBA. Role dapat

disebut kumpulan privilege yang dapat di-grantdan dicabut dengan mudah pada pengguna basisdata.

Soerang pengguna dapat di-grant satu banyak role, tergantung pada pembagian privilege untuk suatu

aplikasi dan tibgkatan akses pengguna. Ketika login ke basisdata, pengguna mempunyai semua

privilege yang terkandung pada role yang telah di-grant pada role.

Pemilik Skema SELECT

INSERT

UPDATE

DELETE

TABEL1

TABEL2

VIEW1

VIEW2

Pemilik Skema CREATE

TABEL

CREATE

INDEX

CREATE VIEW

PENGGUNA

1

PENGGUNA

4

PENGGUNA

3

PENGGUNA

2

APP_ROLE

1

DBA

Sistim Basis Data

Sistim Basis Data

55

5.3 Penanggungjawab Keamanan

Tidak ada satu orang yang bertanggungjawab penuh terhadap keamanan. Semua pengguna harus

bertanggungjawab pada penerapan, pelaksanaan, dan keputusan terhadap keamanan. Sistem

administrator, DBA, dan pemilik skema bertanggungjawab pada penerapan dan pelaksanaan. Semua

pengguna harus patuh pada keamanan. Lebih lanjut, pengguna harus dapat dipercaya untuk

menggunakan data yang mereka akses dengan benar. Kemudian, administrator harus membagi akses

ke data secara hati-hati dan aturan diikuti oleh semua pengguna.

Aturan keamanan dibuat oleh manajemen dan staf teknis. Aturan harus digunakan sebagai acuan

selama perencanaan dan penerapan Sistem informasi. Staf teknis yang turut serta dalam membuat

aturan keamanan termasuk administrator jaringan, administrator sestem, dan administrator basisddata.

Ada tiga tingkatan dasar pengaturan keamanan yang berhubungan dengan Sistem informasi, yaitu:

a. Pengaturan tingkat Sistem

b. PEngaturan tingkat basisdata

c. Pengaturan tingkat aplikasi

Tingkat akses penguna dikontrol oleh administrator Sistem operasi, administrator basisdata, dan

administrator aplikasi. pengguna akhir harus login ke Sistem operasi untuk mengakses aplikasi, yang

selanjutnya mengakses basisdata. Aplikasi maupun basisdata terletak pada lingkungan sistemoperasi.

Namun, sekarang sebagian besar pengguna melewati olentifikasi Sistem operasi dan langsung menuju

basisdata dari aplikasi yang diinstal pada PC atau melalui web browser pada PC.

Tingkatan akses yang berbeda dapat di-grant, tergantung pada kebutuhan pengguna akhir. Sebagian

besar pengguna harus berurusan dengan kombinasi otentifikasi basisdata dan aplikasi. misalnya,

seorang pengguna mengakses basisdata memalului aplikasi Visual Basic di instal pada PC. Dia dapat

diberi akses ke basisdata ynag di-grant oleh pemilik skema. Aplikasi tergantung pada privilege yang

telah diberikan pada pengguna dalam basisdata. Jika otentifikasi penggunan ditangai pada tngkatan

aplikasi, keamanan pada aplikasi lemah dan merupakan perancangan yang butuk. Oleh karena itu,

otentifikasi pengguna harus ditangani pada tingkat basisdata dengan menggunakan privilege dan role.

Keamanan pada palikasi adalah tambahan dan hanya dugunaan untuk meningkatkan keamanan

basisdata.

5.3.1 PEngaturan Tingkat Sistem

Administrator Sistem mengontrol host Komputer untuk basisdata dan file-file yang terhadap

dalamnya. Mereka dapat merusak file-file data, baik disengaja maupun tidak.

Account yang dimiliki oleh Sistem operasi akan dibuat untuk file-file basisdata. Orang yang

mempunyai account semacam itu dapat melakukan kesalahan yang sama seperti yang dilakukan oleh

administrator Sistem dengan menghapus, menimpa file basisdata, atau menyalin data secara tidak

tepat.

Pada lingkungan Unix, privilege file basisdata pada Sistem operasi adalah masalah keamanan utama

dan harus dimonitorkan secaraketat. Pada Unix, account pengguna Sistem yang merupakan pemilik

basisdata harus dapat membaca, menulis, dan mengeksekusi semua file basisdata. Pada lingkungan

Sistim Basis Data

Sistim Basis Data

56

Windows NT, account administrator akam mempunyai “Full Control”, sementara pengguna local membutuhkan akses “Read” untuk mengeksekusi program dalam basisdata seperti SQL.

Pengguna selain pemilik basisdata seharusnya hanya mempunyai privilege terbatas untuk menghindari

kemungkinan perubahan atau penghapusan file. Pastikan bahwa privile untuk akses file pada tingkat

Sistem operasi diset secara benar, yaitu tidak ada privilege lain yang diberikan selain yang

dibutuhkan.

Keamanan fisik basisdata adalah masalah vital. Ruangan komuter dengan akses terbatas dan kunci

yang baik sangat dibutuhkan. Penjaga dan Sistem keamanan dapat pula disertakan, tergantung pada

tingkat kepentingan data. Hal yang sama bisa dilakukan pada server web atau server aplikasi dan

komponen jaringan utama seperti hub dan router. Sistem backup dengan tape yang disimpan ditempat

lain diperlukan jika keamanan fisik tidak berjalan dengan baik.

5.3.2 Pengaturan tingkat Basisdata

DBA mengontrol dan mengatur basisdata. Pada analisis terhadap akhir, DBA dapat melakukan apa

pun yang ingin dilakukan. DBA pun bertanggung jawab , memastikan bahwa basisdata mempunyai

memori dan ruang disk yang cukupp dan dikonfigurasi secara besar. DBA mengotrol keamanan

basisdata meskipun DBA dapat melimpahkan tugas pengamanan pada orang lain. Sebaliknya, pemilik

tabel dan objek basisdata lainnya mempunyai control langsung pada siaa yang dapat mengakses objek-

objek.

DBA meirip dengan polisi. Dia mempunyai keuasaan besar dan melaakukan banyak hal termasuk

menyediakan infrastruktur dan lingkungan keamanan, tetapi tidak berusaha mengontrol apa yang

terjadi pada lingkungan kecuali kalai ada masalah. Pekerjaan DBA yang pertama adalah mencegah

masalah dengan menyediakan semberdaya dan melaksanakan prosedur keamanan yang baik, dan yang

kedua adalah menyediakan masalah secara cepat ketika timbul masalah.

Kita harus ingat bahwa penting untuk membuat keamanan pada tingkat basisdata, tidak hanya

keamanan pada tingkat aplikasi. membuat role pengguna dalam basisdata lalu membagi kemampuan

mereka melalui keamanan aplikasi hanya bekerja untuk aplikasi tersebut.

5.3.3 PEngaturan Tingkat Aplikasi

Pembuat aplikasi menentukan sturktur tabel, menulis program, dan menentukan role yang

memungkinkan pengguna melakukan CRUD pada tabel dan mengeksekusi program.

Aplikasi dapat mengikutsertakan keamanannya sendiri sebagai suatu tambahan pada keamnaan

basisdata. Tabel dapat dibuat pada aplikasi yang memiliki skema untuk menyimpan informasi

pengguna tertentu dan role aplikasi dapat ditentukan dan dikonfirgurasi berdasarkan tabel-tabel. Pada

dasrnya, aplikasi membatasi pilihan untuk pengguna tertentuberdasrkan nilai-nilai pada tabel aplikasi

atau nilai bebrapa kelompok variable dalam aplikasi.

Pembuat aplikasi memutuskan privilege dan tabel yang harus dimasukkan pada masing-masing role

atau kelompok privilege. Jika pengguna tertentu tidak mempunyai privilege untuk mengakses tabel

atau mengeksukusi program, dia tidak dapat melaukannya. Penetuan role yang benar salah satu aspek

penting dalam keamanan. Terlalu sedikit privilefe dalam suatu role akan menyebabkan pengguna tidak

dapat melakukan pekerjaannya. Namun, terlalu banyak privilege membuat pengguna melihat terlalu

banyak informasi dana dapat merusak data.

Perangkat lunak aplikasi dan basisdata modern sekarang memasukkan fasilitas untuk otentifikasi

biometik dari penggunapada saat login melalui sidik jari, scan mata, atau suara. Kartu keamanan atau

kunci fisik lainnya dimasukkan dalam kemampuan otentifikasi login basisdata.

Sistim Basis Data

Sistim Basis Data

57

5.4 Menggunakan View dan Prosedur untuk Meningkatkan Keamanan

View dan stored procedure adalah mekanisme yang berhubungan dengan basisdata relasional yang

m,embuat meningkatkan fleksibilitas penerapan keamanan. Objek-objek sangat berguna untuk

membatasi akses ke data dan menyaring bagian data yang dapat diakses oleh pengguna.

Penggunan view sangat umum pada tool keamanan di taingkat aplikasi. sebuah view adalah tabel

logis. Maksudnya, view merupakan query pada tabel fisik yang telah diberi nama dan disimpan pada

basisdata sebagai objek basisdata terpisah. Privilege dapata di-grant pada pengguna untuk view, bukan

tabel. Kemudian, view dapat dipilih oleh pengguna dengan privilege tertentu seolah-olah view adalah

tabel.

View memungkin pembuat aplikasi membuat tabel logis dengan hanya menampilkan kolom tertentu

yang dapat dilihat oleh pengguna untuk melaksanakan pekerjaan pada saat tertentu. Ini memungkinkan

pembuat aplikasi menyembunyikan kolom-kolom tabel yang tidak bileh dilihat oleh pengguna. Oleh

karena itu, pengguna hanya mempunyai akses ke view, bukan ke tabelnya. Pengguna hanya dapat

melihat kolom pada view, sedangkan kolom pada tabel tidak dapat dilihatnya.

Pengguna hanya dapat melihat data dalam format yang diinginkan oleh pembuat dengan nama kolom

sesuai dnegan pilihan pembuat. Pada kondisi tertentu, data pada tabel dibelakang view dapat di-update

melalui view.

Pembuatan stored procedure merupakan metode yang umum digunakan untuk meningkatkan

keamanan secara keseluruhan. Prosedur dapat dapat dibuat untuk melakukan operasi terhadap satu

atau lebih tabel dalam basisdata. Pengguna yang mengeksekusi prosedur hanya dapat melakukan aksi

seperti program yang tertulis didalamnya. Contohnya, prosedur dibuat untuk mengatur data karyawan.

Prosedur memungkinkan pegawai baru dimasukkan dan perubahan data pegawai seperti alamat.

Prosedur tidak memungkinkan data pegawai dihapus dari basisdata. Seperti pada view, akses di-grant

ke prosedur dan bukan pada tabel.

Pengguna hanya dapat melakukan aktivitas yang diperbolehkan oleh prosedur, yang dieksekusikan di

bawah privilege pemiliknya. Prosedur semacam ini bisa menghalangi pengguna menghapus semua

record dalam tabel.

5.5 Perancangan Sistem Manajemen Keamanan

Meskipun ada fitur keamanan built in seperti role, beberapa pengembangan meskipun membuat

Sistem pengaturan keamanan. Sistem pengaturan meliputi perencanaan dan membuat tabel basisdata

yang digunakan untuk menentukan akses pengguna tertentu kedata. Kemudian, Sistem pengaturan

keamanan diperlukan hanya jika fitur built in perangkat lunak basisdata yang digunakan tidak

memenuhi kebutuhan keamanan organisasi. Sistem keamanan seperti ini sering hanya sebagai

tambahan fitur pada perangkat lunak basisdata.

5.6 Tindakan Pencagahan Tambahan

Saat ini, basisdata dan jaringan berhubungan erat. Dengan perkembangan palikasi berbasis web, tern

semakin berkembang. Keamanan web sanagat utama pada sebagian besar aplikasi. komunikasi

internet basisdata hamper sesalu berdasarkan pada protocol TCD/IP.TCP/IP adalah protocol

kemudian data standar untuk web. Sayangnya, TCP/IP tidak mempunyai pengamanan. Data Anda non

nomor kartu kredit seseorang dapat dicuri apabila menggunakan TCP/IP. Pengamanan harus

ditambahkan pada TCP/IP dari sumber lain agar basisdata web moder lebih aman.

Sistim Basis Data

Sistim Basis Data

58

5.6.1 Keamanan Jaringan

Keamanan jaringan adalah barisan pertahanan paling depan. Jika dapat menghindari orang jahat

mengambil alamat IP basisdata Anda, Anda telah menjauhkan mereka dari basisdata Anda. Ini disebut

menyembunyikan. Network Address Translation (NAT) akan menerjemahkan alamat IP asli yang

digunakan Sistem anda dan menyembunyikannya dari pengguna web. NAT dimasukkan pada bagian

besar produk firewall dan akan membuat hacker tidak berpengalaman tidak bisa memasuki Sistem

anda. Sayangnya, menyembunyikan tidak menghentikan hacker berpengalaman, tetapi hanya

memperpanjang proses.

Memiliki file konfigurasi jaringan workstation berbeda, tergantung pada kebutuhan kelompok tertentu,

adalah ide bagus. Setiknya, Anda tidak menempatkan alamat-alamat IP untuk seluruh perusahaan

dalam sati file.

5.6.2 Firewall Jaringan

Firewall jaringan adalah pertahanan Anda yang sebenarnya dari hacker. Setting firewall yang benar

akan melindungi jaringan Anda, tetapi dapat pula memperlambat kinerja jaringan di mana aplikasi

berjalan sangat lambat. Konfigurasi firewall yang tidak tepat akan menyebabkan operasi berbasis web

Anda berhenti. Oleh karena itu, Anda memerlukan orang yang mengetahui apa yang harus dilakukan

untuk merawat firewall jaringan (chapman dan Zwickly, 1995).

Sebuah firewall memberikan suatu organisasi cara mebuat ruang antara jaringan yang terisolasi dari

jaringan luar, seperti internet, dan jaringan yang terhubung dengan jaringan luar. Firewall

menyediakan cara mudah mengontrol jumlah dan macam lalulintas yang akan melewati ruang antara

jaringan internal dalam organisasi dan jaringan luar.

internet

firewall

Gambar 5.4, Sebuah firewall pada umumnya, memisahkan jaringan internal dari internet

Firewall jaringan adalah kombinasi perangkat lunak dan perangkat keras yang bertujuan mengusir

hacker dari jaringan anda, tetapi mengizinkan orang-orang yang mempunyai akses. Firewall

menyaring paket data TCP/IP masuk dan keluar berdasarkan pada sumber dan tujuan alamt IP serta

fungsi pembawa paket data. Router jaringan mempunyai daftar alam IP sumber dan tujuan yang

diperkenangkan. Paket dengan alamat yang tidak ada dalam daftar tidak diperbolehkan masuk.

Jaringan utama Anda, di mana basisdata diletakkan, akan berada dibelakang firewall dengan daftar

alamat yang diperkenangkan yang sangat terbatas.

Sistim Basis Data

Sistim Basis Data

59

5.6.3 Secure Socket Layer (SSL)

Kemampuan tambahan yang dapat digunakan untuk mengamankan TCP/IP adalah Secure Socket

Layer (SSL) atau Internet Engineering Task Force Transport Layer Security (IETF TLS).

SSL menyediakan enkripsi data sehingga data tidak dapat dirusak ketika data bergerak melalui router

internet. Sistem enkripsi sering menggunakan Sistem kunci rahasia yang digunakan untuk mengacak

data saat pengiriman dan mengembalikan data ke keadaan semula seampainya di tujuan.

SSL menggunakan metode ekripsi kunci public. Sistem SSL menghasilkan pasangan kunci, satu untuk

public dan satu untuk pribadi, yang secara bersama-sama dapat digunakan untuk meng-enkripsi atau

men-dekripsi data. Kunci public digunakan untuk berkomunikasi melaluiweb dan kunci public

digunakan untuk meng-enkripsi data yang dikirimkan prang lain dan mendekripsi data yang kita

kirimkan. Kunci pribadi digunakan untuk mengenkripsi data yang anda kurimkan dan men-dekripsi

data yang dikirimkan pada Anda. Anda menerima data yang di-enkripsi oleh orang lain dengan kunci

public relative labat sehingga SSL menggunakannya selama pembetukan sesi awal lalu menghasilkan

dan bertukan kunci rahasia, yang disebut kunci sesi. Kunci sesi digunakan oleh kedua pihak untuk sesi

selanjutnya. Enkripsi kunci rahasia relative cepat dibandingkan enkripsi kunci public.

Bagian setting website yang aman adalah mendapatkan surat kepercayaan situs elekronik yang disebut

sertifikat dari perusahaan pihak ketiga terpercaya, yang disebut pihak yang berwenang memberikan

sertifikat (Certifying Authority). Settifying Authority akan memvalidasi Anda termasuk organisasi

yang sah sebelum mereka memberikan sertifikat pada Anda. Kemudian, sesi komunikasipengguna

mengakses sertifikat Anda sebagai langkah otentifikasi awal ketika mengakses basisdata Anda

mealalui web. SSL pun mmvalidasi integritas data pada kedua ujung komunikasi.

5.7 Pelanggaran Keamanan

Pelanggaran keamanan kadang diketahui melalui pengamatan basisdata secara teratur atau selama

pemecahan masalah. Pelanggran bisa disengaja maupun tidak disengaja.

Pelanggaran disengaja ditimbulkan oleh maksud jahat atau keinginan untuk melihat-lihat.

Pelanggaran tak disengaja dapat terjadi ketika secara tidak sengaja, memasuki layar dalam aplikasi di mana pengguna tidak diperbolehkan mengaksesnya (administrator kadang-kadang membuat kesalahan ketika menerapkan privilege). Pelanggaran dapat berasal dari luar organisasi atau dalam perusahaan. Misalnya seorang pengguna mempunyai akses ke data tertentu dan secara sengaja, membuat perubahan terhadapa data. Ini adalah sebuah contoh pelanggaran. Contoh lainnya adalah usaha menyuap ke dalam sebuah basisdata.

Berikut adalah langkah-langkah proaktif yang dapat dilakukan untuk mencegah pelanggaran

keamanan :

Mengubah password adminitrasi secara teratur.

Memaksa pengguna sering mengubah password.

Melarang pengguna passwaord bersama-sama.

Menghapus account pengguna yang tidak aktif.

Menghapus account pengguna yang bukan pegawai.

Sistim Basis Data

Sistim Basis Data

60

Melakukan pengawasan acak terhadap semua aktivitas.

Melakukan audit basisdata.

Member pengertian pada pengguna akhir.

Melukukan pelatihan keamanan.

Mekanisme keamanan harus dilakukan pada tingkatan berikut tanpa mempengaruhi operasi bisnis

sehari-hari:

Keamanan internet (Web, WAN)

Keamanan jaringan internal (Intranet, LAN)

Keamanan Sistem operasi.

Keamanan basisdata

Keamanan objek skema

Keamanan aplikasi pengguna

Keamanan PC (Log in Windows NT)

Sistim Basis Data

Sistim Basis Data

61

Bab 6

STRUCTURE QUERY LANGUAGE (SQL)

6.1 Pendahuluan

SQL adalah bahasa Komputer standar ANSI (amarican Natioan Standard Institute) untuk mengakses

dan memanipulasi Sistem basisdata. Pernyataan SQL digunakan untuk mengambil dan meng-update

data dalan basisdata. SQL bekerja dengan program basisdata peserti Ms Access, DB2, Informix, Ms

SQLServer, Oracle, Oracle, Sybase, dan sebagainya.

6.2 Sejarah SQL

SQL (Structured Query Language) pertama kali dikembangkan pada akhir tahun 1970-an di

Laboratorium IBM San Jose, California. SQL umumnya dibaca “sequel” dan mulanya, dikembangkan

untuk produk DB2 yang generasi ketiga (third Generation Language/3GL).

Karakteristik yang membedakan RDBMS dari DBMS adalah RDBMS menyediakan bahasa basisdata

yang set-oriented (bahsa yang memproses beberapa set data dalam grup). Pada sebagian besar

RDBMS, bahasa yang dipakai adalah SQL. Di sini terlihat sangat pentingnya SQL untuk membangun

sebuah RDBMS.

Dua organisasi internasional, American Standard Instute (ANSI)

Dan international Standard Organization (ISO) mempromosikan SQL sebagai standar industry pada

oktober 1986.

6.3 Apa Itu SQL

SQL adalah kependekan Structure Language (DDL) yang merupakan bahasa basisdata standar

industry (www.school.com).

SQL menyediakan Data Definition Language (DDL) dan manipulation Language (DML). Walaupun

dalam beberpa bagian saling berkaitan, perintah DDL memungkinkan kita membuat dan

mendefinisikan tabel (CREATE TABLE), dan indeks (CREATE INDEX). Sebaiknya, perintah DML

memungkinkan kita memanipulasi data dan membangun query untuk mengambil data (SELECT)

beberapa tabel, menyisipkan (INSERT) data baru, memperbaiki (UPDATE) data, dan menghapus

(DELETE) data.

6.4. Tabel Basisdata Sebuah basisdata terdiri atas satu lebih tabel dan masing-masing tabel diberi nama. Tabel memiliki

baris data.

Berikut contoh tabel yang bernama “pegawai”:

Tabel 6.1 Tabel Pegawai

NamaDepan NamaBelakang Alamat Kota

Suwito Ito Sudiang Makassar

Diana Nuraini Jl.Perintis Kemardekaan Medan

Hasan Martono Jl.Diponegoro Makassar

Suardi Ibrahim Kl.Ir.Sutami Pinrang

Sistim Basis Data

Sistim Basis Data

62

Tabel memilki empat record ( satu record untuk setiap orang) dan empat kolom (NamaDepan, NamaBelakang, Alamat, dan kota).

6.4.1 Query

Dengan SQL, kita dapat melakukan query pada basisdata dan mendapatkan hasilnya. Contoh querty

sebagai berikut :

Select NamaDepan FROM pegawai

Hasilnya :

NamaDepan

Suwito

Diana

Hasan

Suardi

Sukma

Beberapa Sistem basisdata menggunakan titik koma pada akhir pernyataan SQL.

6.4.2 Bahasa Manipulasi Data SQL

SQL adalah sebuah sintaks untuk mengekseskusi query. Bahasa SQL mengikutsertakan sintaks untuk

update, insert, dan delete record.

Perintah query dan update secara bersama membentuk bagian bahasa manipulasi data SQL.

SELECT – memilih data dari tabel basisdata.

UPDATE – meng-update data dalam tabel basisdata.

DELETE – menghapus data dari tabel basisdata.

INSERT INTO – memasukkan data baru ke dalam tabel basisdata.

6.4.3 Bahasa Definisi Data SQL

Bagian bahasa data dari SQL memungkinkan tabel basisdata dibuat atau dihapus. Kita dapat pula

membuat indeks, membuat hubungan antartabel, dan membuat batasan antartabel basisdata.

Yang termasuk pernyataan bahasa data adalah :

CREATE TABEL – membuat tabel basisdata baru.

ALTER TABLE – mengubah tabel basisdata

DROP TABLE- menghapus tabel basisdata.

CREATE INDEX- membuat indeks.

DROP INDEX-menghapus indeks.

Sistim Basis Data

Sistim Basis Data

63

6.5 Pernyataan SELECT Pernyataan SELECT digunakan untuk memilih data dari tabel. Hasilnya disimpan dalam tabel hasil

yang disebut Result Set.

Sintaks :

SELECT nama_kolom

FROM nama_tabel

Untuk memilih beberapa kolom, misalnya NamaDepan dan NamaBelakang, gunakan pernyataan

SELECT sebagai berikut :

SELECT NamaDepan, NamaBelakang

FROM Pegawai

Hasilnya :

NamaDepan NamaBelakang

Suwito Ito

Diana Nuraini

Hasan Martono

Suardi Ibrahim

Sukma Wati

Untuk semilih semua kolom dari tabel pegawai gunakan symbol * seperti ini :

SELECT *

FROM pegawai

Hasilanya :

NamaDepan NamaBelakang Alamat Kota

Suwito Ito Sudiang Makassar

Diana Nuraini Jl.Perintis Kemardekaan Medan

Hasan Martono Jl.Diponegoro Makassar

Suardi Ibrahim Kl.Ir.Sutami Pinrang

Sukma Wati Jl.DR.Wahidin Gowa

6.5.1 Distinct

Untuk memilih hanya nilai yang berbeda, gunakan pernyataan SELECT DISTINCT.

Sintaks :

SELECT DISTINCT nama_kolom

FROM nama_tabel

Untuk memilih semua niali dari kolom, kita meneggunakan pernyataan SELECT seperti ini :

SELECT kota

FROM Pegawai

Hasilnya :

Kota

Makassar

Medan

Makassar

Sistim Basis Data

Sistim Basis Data

64

Pinrang

Gowa

Hasilnya memperlihatkan bahwa Yogyakarta muncul dau kali. Untuk memilih hanya nilai yang

berbeda dari kolom kota, gunakan pernyataan SELECT DISTINCT seperti ini:

SELECT DISTINCT kota

FROM Pegawai

Hasilnya :

Kota

Makassar

Pinrang

Gowa

6.5.2 Klausa WHERE

Klausa WHERE digunakan untuk menentukan criteria seleksi. Untuk memilih data suatu tabel dengan

criteria tertentu, klausa WHERE dapat ditambahkan pada pernyataan SELECT.

Sintaks :

SELECT nama_kolom

FROM nama_tabel

WHERE kolom Operator nilai

Dengan klausa WHERE, operator berikut dapat digunakan :

Operator Keterangan

= Sama Dengan

<> Tidak sama dengan

> Lebih besar dari

< Lebih kecil dari

>= Lebih besar atau sama dengan

<= Lebih kecil atau sama dengan

Pada beberapa versi SQL, Operato <> bisa tulis !=

Sebagai contoh, untuk memilih hanya pegawai yang tinggal di medan, kita menambahkan klusa

WHERE pada pernyataan SELECT :

SELECT * FROM pegawai

WHERE kota= „Pinrang‟

Hasilnya :

NamaDepan NamaBelakang Alamat Kota

Suardi Ibrahim Kl.Ir.Sutami Pinrang

Perlu diperhatikan bahwa kita menggunakan tanda petik tunggal pada contoh di atas. SQL

menggunakan tanda petik tunggal pada nilai teks, sedangkan nilai numeric tidak diberi tanda petik.

Untuk nilai teks :

A. Benar

SELECT * FROM Pegawai

WHERE kota=‟Medan‟

Sistim Basis Data

Sistim Basis Data

65

B. Salah

SELECT * FROM Pegawai

WHERE kota=medan

Untuk nilai numeric :

A. Benar

SELECT * FROM Pegawai

WHERE tahun > 1965

B. Salah

SELECT * FROM Pegawai

WHERE tahun > „1965‟

6.5.3 Kondisi LIKE

Kondisi LIKE digunakan untuk menentukan pencarian berdasarkan pola tertentu pada suatu kolom.

Sintaks :

SELECT nama_kolom

FROM nama_tabel

WHERE NamaDepan LIKE „A&‟

Tanda “%” dapat digunakan untuk menentukan Wildcard (sembarang hurup), baik sebelum maupun

sesudah pola.

Penyataan SQL berikut akan menghasilkan nama pegawai yang dimulai dengan huruf A:

SELECT * FROM pegawai

WHERE NamaDepan

LIKE

hasilanya :

NamaDepan NamaBelakang Alamat Kota

Suardi Ibrahim Kl.Ir.Sutami Pinrang

Pernyataan SQL berikut akan menghasilkan nama pegawai yang mengandung pola “di” :

SELECT * FROM Pegawai

WHERE NamaDepan

LIKE „%di%‟

Hasilnya :

NamaDepan NamaBelakang Alamat Kota

Suwito Ito Sudiang Makassar

Diana Nuraini Jl.Perintis Kemardekaan Medan

6.5.4 Pernyataan INSERT INTO

Pernyataan INSERT INTO digunakan untuk memasukkan data baru pada tabel.

Sintaks :

INSERT INTO namatabel

VALUE (nilai1, nilai2,…)

Kita bisa menentukan kolom-kolom yang akan diisi dengan data baru, yaitu ;

Sistim Basis Data

Sistim Basis Data

66

INSERT INTO Pegawai VALUE („Sukma‟ , „ wati „, „ jl.

Jl.DR.Wahidin‟ , „ Gowa‟)

Hasilnya :

NamaDepan NamaBelakang Alamat Kota

Suwito Ito Sudiang Makassar

Diana Nuraini Jl.Perintis Kemardekaan Medan

Hasan Martono Jl.Diponegoro Makassar

Suardi Ibrahim Kl.Ir.Sutami Pinrang

Sukma Wati Jl.DR.Wahidin Gowa

Untuk memasukkan data hanya pada kolom tertentu, missal Joko dan Jl. Veteran 45, maka pernyataan

SQL-nya adalah :

INSERT INTO Pegawai (NamaDepan, alamat)

VALUE („Suwito‟ , „ Sudiang „)

Hasilnya :

NamaDepan NamaBelakang Alamat Kota

Suwito Sudiang

Diana Nuraini Jl.Perintis Kemardekaan Medan

Hasan Martono Jl.Diponegoro Makassar

Suardi Ibrahim Kl.Ir.Sutami Pinrang

Sukma Wati Jl.DR.Wahidin Gowa

6.6 Pernyataan UPDATE

Pernyataan UPDATE digunakan untik memodifikasi data dalam tabel.

Sintaks :

UPDATE nama_tabel

SET nama_kolom = nilai_baru

WHERE nama_kolom = nilai

Jika kita ingin menambah nama belakang pada pegawai dengan nama depan Joko, pernyataan SQL-

nya adalah :

UPDATE Pegawai

SET NamaBelakang = „Suwito‟

WHERE namaDepan = „Ito‟

Hasilnya :

NamaDepan NamaBelakang Alamat Kota

Suwito Ito Sudiang

Diana Nuraini Jl.Perintis Kemardekaan Medan

Hasan Martono Jl.Diponegoro Makassar

Suardi Ibrahim Kl.Ir.Sutami Pinrang

Sukma Wati Jl.DR.Wahidin Gowa

Jika kita ingin mengubah alamat dan menambah nama kota untuk pegawai dengan nama depan joko,

pernyataan SQL-nya adalah :

Sistim Basis Data

Sistim Basis Data

67

UPDATE Pegawai SET Alamat = „jl.Makasar 8‟,

Kota =‟Makassar‟

WHERE NamaDepan = „Joko‟

Hasilnya :

NamaDepan NamaBelakang Alamat Kota

Adi Nugroho Jl.Urip Sumoharjo Solo

Diana Nuraini Jl.Perintis Kemardekaan Medan

Hasan Martono Jl.Diponegoro Makassar

Suardi Ibrahim Kl.Ir.Sutami Pinrang

Sukma Wati Jl.DR.Wahidin Gowa

6.7 Pernyataan DELETE

Pernyataan DELETE digunakan untuk menghapus baris pada tabel. Sintaks:

DELETE FROM nama_tabel

WHERE nam_kolom=nilai

Jika kita ingin menghapus pegawai dengan nama depan Maria, pernyataan SQL-nya adalah :

DELETE FROM pegawai

WHERE NamaDepan = „Maria‟

Hasilnya :

NamaDepan NamaBelakang Alamat Kota

Adi Nugroho Jl.Urip Sumoharjo Solo

Diana Nuraini Jl.Perintis Kemardekaan Medan

Hasan Martono Jl.Diponegoro Makassar

Suardi Ibrahim Kl.Ir.Sutami Pinrang

Sukma Wati Jl.DR.Wahidin Gowa

Kita dapat menghapus semua data pada tabel tanpa menghapus tabel.

DELETE FROM nama_tabel

Atau

DELETE * FROM nama_tabel

6.8 Klausa ORDER BY Klausa ORDER BY digunakan untuk mengurutkan data.

Jika kita ingin menampilkan nama pegawai berdasarkan urutan abjad, pernyataan SQL-nya adalah :

SELECT * FROM pegawai

ORDER BY namaDepan

Hasilnya :

NamaDepan NamaBelakang Alamat Kota

Adi Nugroho Jl.Urip Sumoharjo Solo

Diana Nuraini Jl.Perintis Kemardekaan Medan

Hasan Martono Jl.Diponegoro Makassar

Suardi Ibrahim Kl.Ir.Sutami Pinrang

Sukma Wati Jl.DR.Wahidin Gowa

Sistim Basis Data

Sistim Basis Data

68

Jika kita ingin menampilkan nama pegawai dan kotanya berdasarkan urutan abjad, maka pernyataan

SQL-nya adalah :

SELECT * FROM Pegawai

ORDER BY NamaDepan, kota

Hasilnya :

NamaDepan NamaBelakang Alamat Kota

Adi Nugroho Jl.Urip Sumoharjo Solo

Diana Nuraini Jl.Perintis Kemardekaan Medan

Hasan Martono Jl.Diponegoro Makassar

Suardi Ibrahim Kl.Ir.Sutami Pinrang

Sukma Wati Jl.DR.Wahidin Gowa

Jika kita ingin menampilkan nama pegawai dengan urutan abjad terbalik, pernyataan SQL-nya adalah :

SELECT * FROM Pegawai

ORDER BY NamaDepan DESC

Hasilnya :

NamaDepan NamaBelakang Alamat Kota

Adi Nugroho Jl.Urip Sumoharjo Solo

Diana Nuraini Jl.Perintis Kemardekaan Medan

Hasan Martono Jl.Diponegoro Makassar

Suardi Ibrahim Kl.Ir.Sutami Pinrang

Sukma Wati Jl.DR.Wahidin Gowa

Pernyataan SQL untuk menampilkan nama pegawai berdasarkan urutan abjad terbalik dan nama kota

berdasarkan urutan abjad adalah :

SELECT * FROM Pegawai

ORDER BY NamaDepan DESC, Kota ASC

Hasilnya :

NamaDepan NamaBelakang Alamat Kota

Adi Nugroho Jl.Urip Sumoharjo Solo

Diana Nuraini Jl.Perintis Kemardekaan Medan

Hasan Martono Jl.Diponegoro Makassar

Suardi Ibrahim Kl.Ir.Sutami Pinrang

Sukma Wati Jl.DR.Wahidin Gowa

6.8.1 Operator AND dan OR

AND dan OR menggabungkan dua atau lebih kondisi pada klusa WHERE.

Operator AND menampilkan data jika semua kondisi yang diminta bernilai benar, sedangkan operator

OR menampilkan data jika ada kondisi yang benar.

Pernyataan SQL untuk menampilkan pegawai dengannama depan Ita dan nama kota Makassar adalah :

SELECT * FROM Pegawai

WHERE NamaDepan=‟Ita‟ AND

Kota=‟makassar‟

Hasilnya :

Sistim Basis Data

Sistim Basis Data

69

NamaDepan NamaBelakang Alamat Kota

Sukma Wati Jl.DR.Wahidin Gowa

Pernyataan SQL untuk menampilan pegawai dengan nama depan Ita atau kota Makassar adalah:

SELECT * FROM Pegawai

WHERE NamaDepan=‟Ita‟ OR

Kota=‟Yokyakarta‟

Hasilanya :

NamaDepan NamaBelakang Alamat Kota

Suardi Ibrahim Kl.Ir.Sutami Pinrang

Sukma Wati Jl.DR.Wahidin Gowa

Operator AND OR dapat digunakan secara bersamaan, yaitu :

SELECT * FROM pegawai

WHERE (namaDepan=‟Ita‟ OR

Kota=‟Makassar‟) AND (Alamat=‟jl.jend.Sudirman 3‟)

Hasilnya :

NamaDepan NamaBelakang Alamat Kota

Sukma Wati Jl.DR.Wahidin Gowa

6.8.2 Operator IN

Operator IN bisa digunakan jika mengetahui nilai pasti yang akan diambil untuk setidaknya satu

kolom.

Sintaks :

SELECT nam_kolom

FROM nama_tabel

WHERE nama_kolom

IN (nilai1, nilai2,…)

Untuk menampilkan pegawai dengan nama depan Hasan atau Adi, gunakan pernyataan SQL berikut :

SELECT * FROM Pegawai

WHERE NamaDepan

IN („Hasan‟ ,‟ Adi‟)

Hasilnya :

NamaDepan NamaBelakang Alamat Kota

Suardi Ibrahim Kl.Ir.Sutami Pinrang

Sukma Wati Jl.DR.Wahidin Gowa

6.8.3 Operator BETWEEN……..AND

Operator BETWEEN……AND memilih data antara dua nilai. Nilai dapat berupa angka, teks atau

tanggal.

Sintaks :

SELECT nama_Kolom FROM nama_tabel

WHERE nama_kolom

BETWEEN nilai1 AND Nilai2

Untuk menampilkan pegawai yang namanya di antara (dan termasuk adi dan Ita, Gunakan Pernyataan

SQL berikut :

Sistim Basis Data

Sistim Basis Data

70

SELECT * FROM Pegawai WHERE NamaDepan

BETWEEN „ Ad i‟ AND „ ITA „

Hasilnya :

NamaDepan NamaBelakang Alamat Kota

Adi Nugroho Jl.Urip Sumoharjo Solo

Diana Nuraini Jl.Perintis Kemardekaan Medan

Hasan Martono Jl.Diponegoro Makassar

Suardi Ibrahim Kl.Ir.Sutami Pinrang

Sukma Wati Jl.DR.Wahidin Gowa

Operator BETWEEN…..AND diperlukan secara berbeda pada DMBS berbeda. Pada satu DBMS, data

pegawai yang dimunculkan adalah yang berada di antara Adi dan Ita, tetapi tidak dimunculkan. Pada

lain, pegawai yang dimunculkan termasuk Adi dan Ita. Kemudian, pada DBMS lainya, Adi

dimunculkan, tetapi Ita tidak.

Untuk menampilkan pegawai di luar jangkauan contoh, gunakan operator NOT seperti berikut :

SELECT * FROM Pegawai

WHERE NamaDepan

NOT BETWEEN „Adi‟ AND „Ita‟

Hasilnya :

NamaDepan NamaBelakang Alamat Kota

Sukma Wati Jl.DR.Wahidin Gowa

6.8.4 ALIAS

Dengan SQL, ALIAS dapat digunakan untuk mengganti nama_kolom dan nama_tabel.

Sintaks untuk alias nama-kolom :

SELECT nama_kolom

AS nama_alias_kolom

FROM nama_tabel

Sintaks untuk alias nama tabel :

SELECT nama_kolom

FROM nama_tabel

AS nama_alias_tabel

Jika kita ingin membuat nama alias untuk kolom NamaDepan menjadi ND dan NamaBelakang

menjadi NB, gunakan pernyataan SQL berikut :

SELECT NamaDepan AS ND,

NamaBelakang AS NB

FROM Pegawai

Hasilnya :

ND NB

Adi Nugroho

Diana Nuraini

Hasan Martono

Suardi Ibrahim

Sistim Basis Data

Sistim Basis Data

71

Sukma Wati

Jika kita ingin membuat nama alias untuk Tabel Pegawai menjadi Karyawan, gunakan pernyataan

SQL berikut :

SELECT *

FROM Pegawai AS Karyawan

Hasilnya :

NamaDepan NamaBelakang Alamat Kota

Adi Nugroho Jl.Urip Sumoharjo Solo

Diana Nuraini Jl.Perintis Kemardekaan Medan

Hasan Martono Jl.Diponegoro Makassar

Suardi Ibrahim Kl.Ir.Sutami Pinrang

Sukma Wati Jl.DR.Wahidin Gowa

6.9 JOIN dan KUNCI Kita terkadang harus memilih data dari dua tabel atau lebih untuk mendapatkan hasil yang komplit.

Oleh karena itu, kita harus melakukan sebuah JOIN.

Tabel-tabel dalam sebuah basisdata dapat dihubungkan satu sama lain menggunakan kunci. Kunci

utama adalah sebuah kolom dengan nilai unit tanpa mengulangi semua data pada setiap tabel.

Pada contoh Tabel Pegawai, kita menambahkan kolom KodePegawai.

Tabel 6.2 Tabel Pegawai

KodePegawai NamaDepan NamaBelakang Alamat Kota

01 Adi Nugroho Jl.Urip Sumoharjo Solo

02 Diana Nuraini Jl.Perintis Kemardekaan Medan

03 Hasan Martono Jl.Diponegoro Makassar

04 Suardi Ibrahim Kl.Ir.Sutami Pinrang

05 Sukma Wati Jl.DR.Wahidin Gowa

Tabel 6.3 Table Pesan

KodeBarang NamaBarang KodePegawai

234 Printer 01

657 Monitor 02

456 KeyBord 03

Kita dapat memilih data dari dua tabel dengan mengacu pada kedua tabel sebagai berikut :

SELECT Pegawai.NamaDepan, pesan.NamaBarang

FROM Pegawai, Pesan

WHERE Pegawai. KodePegawai = Pesan. KodePegawai

Hasilnya :

NamaDepan NamaBarang

Adi Mouse

Diana Printer

Hasan Keyboar

Untuk mengetahui siapa yang memesan printer, gunakan pernyatan SQL berikut :

Sistim Basis Data

Sistim Basis Data

72

SELECT Pegawai.NamaDepan FROM Pegawai, Pesan

WHERE Pegawai.KodePegawai=pesan,kodepegawai

AND Pesan, NamaBarang=‟printer‟

Hasilnya :

NamaDepan

Adi

Kita pun bisa menggunakan kata kunsi JOIN untuk memilih data. Ada tiga macam kunci JOIN, Yaitu :

INNER JOIN, LEFT JOIN, dan RIGHT JOIN>

sintaks untuk INNER JOIN :

Select field1, field2..

FROM tabel INNER JOIN tabel2

ON tabel.kunci_utama=tabel2.kunci_asing.

Misalnya, untuk mengetahui siapa yang telah memesan barang dan apa yang dipesan, kita dapat

menggunakan pernyataan berikut :

SELECT Pegawai.NamaDepan, pesan.NamaBarang

FROM Pegawai INNER JOIN Pesan

ON Pegawai.kodePegawai=Pesan.KodePegawai

INNER JOIN akan memunculkan semua baris kedua tabel jika ada pasangannya. Jika ada baris pada

Tabel Pegawai yang tidak memilih pasangan, maka baris tidak akan dimunculkan pada tabel Pesan.

Hasilnya :

NamaDepan NamaBarang

Adi Mouse

Diana Printer

Hasan Keyboar

Sintaks untuk LEFT JOIN :

SELECT field1, field2…

FROM tabel LEFT JOIN tabel2

ON tabel.kunci_utama=tabel.kunci_asing.

Misalkan, kita ingin menampilkan semua pegawai dan barang yang dipesan, jika ada. Kia dapat

menggunakan pernyataan berikut :

SELECT Pegawai. NamaDepan, Pesan.NamaBarang

FROM Pegawai LEFT JOIN pesan

ON Pegawai.kodePegawai=pesan.kodePegawai

LEFT JOIN akan memunculkan semua baris tabel pertama (pegawai), bahkan jika tidak ada

pasangannya di tabel kedua (pesan). Jika ada baris pada tabel Pegawai yang tidak ada pasangannya

pada Tabel Pesan, maka ia pun akan dimunculkan.

Hasilnya :

NamaDepan NamaBarang

Adi Mouse

Diana Printer

Hasan Keyboar

Sintaks untuk RIGHT JOIN :

Sistim Basis Data

Sistim Basis Data

73

SELECT field1, field2,…. FROM tabel1 RIGHT JOIN tabel2

ON tabel1.kunci_utama=tabel2.kunci-asing

Misalkan, kita ingin menampilkan semua pegawai dan barang yang dipesan, jika ada. Kita dapat

menggunakan pernyataan berikut :

SELECT Pegawai.NamaDepan, Pesan.NamaBarang

FROM Pegawai RIGHT JOIN pesan

ON Pegawai.kodePegawai=pesan.kodePegawai

RIGHT JOIN akan memunculkan semua baris tabel kedua (pesan), bahkan jika tidak ada pasangannya

di tabel pertama (pegawai). Jika ada baris pada tabel Pesan yang tidak ada pasangannya pada tabel

pegawai, maka ia pun akan dimunculkan.

Hasilnya :

NamaDepan

Sukma

Untuk mengetahui siapa yang memesan monitor, jika menggunakan pernyataan berikut :

SELECT pegawai.NamaDEpan

FROM Pegawai INNER JOIN Pesan

ON Pegawai.KodePegawai=Pesan.kodePegawai

WHERE Pesan.NamaBarang=‟Monitor‟)

Hasilnya :

NamaDepan NamaBelakang

Adi Nugroho

Diana Nuraini

Hasan Martono

Suardi Ibrahim

Sukma Wati

6.10 UNION dan UNION ALL 6.10.1 UNION

Perintah UNION digunakan untuk memilih informasi yang berhubungan dari dua tabel, mirip dengan

perintah JOIN. Namun, ketika menggunakan perintah UNION, tipe data semua kolom yang dipilih

harus sama. UNION hanya memunculkan nilai unit.

Sintaks :

Pernyataan 1

UNION

Pernyataan

Misalnya, kita mempunyai tabel baru bernama pegawai2.

Tabel 6.4 Tabel Pegawai2

KodePegawai NamaDepan NamaBelakang Alamat Kota

01 Adi Nugroho Jl.Urip Sumoharjo Solo

02 Diana Nuraini Jl.Perintis Kemardekaan Medan

Sistim Basis Data

Sistim Basis Data

74

03 Hasan Martono Jl.Diponegoro Makassar

04 Suardi Ibrahim Kl.Ir.Sutami Pinrang

05 Sukma Wati Jl.DR.Wahidin Gowa

Untuk menampilkan semua pegawai pada Tabel Pegawai dan Pegawai2, gunakan penyataan berikut :

SELECT NamaDepan FROM Pegawai

UNION

SELECT NamaDepan FROM Pegawai2

Hasilnya :

NamaDepan

Adi

Diana

Hasan

Suardi

Sukma

Perintah tidak dapat digunakan untuk menampilkan semua pegawai pada Tabel Pegawai dan

Pegawai2. Pada contoh, kita mempunyai dua pegawai dengan nama sama (yaitu Hasan Martono) dan

hanya satu yang di munculkan. Perintah UNION hanya memilih nilai unik.

6.10.2 UNION ALL

Perintah UNION ALL sama perintah UNION, kecuali bahwa UNION ALL memilih semua nilai.

Sintaks :

Pernyataan 1

UNION ALL

Pernyataan 2

Dengan menggunakan Tabel 6.2 dan 6.4, kita dapat menggunakan pernyataan berikut untuk

menampilkan semua pegawai dari kedua tabel :

SELECT NamaDepan FROM Pegawai

UNION ALL

SELECT NamaDepan FROM Pegawai2

Hasilnya :

NamaDepan

Adi

Diana

Hasan

Suardi

Sukma

Sistim Basis Data

Sistim Basis Data

75

6.11 Membuat Basidata dan Tabel 6.11.2 Membuat Tabel

Untuk membuat tabel dalam sebuah basisdata, gunakan pernyataan berikut :

CREATE TABLE nama_tabel

(nama_kolom1 tipe_data,

Nama_kolom2 tipe_data,

….

)

Contoh berikut menampilakan bagaimana kita dapat membuat tabel bernama pegawai dengan empat

kolom. Nama kolomnya adalah NamaDepan, NamaBelakang, Alamat, dan kota.

CREATE TABLE Pegawai

(NamaDepan Varchar (15),

NamaBelakang Varchar15),

Alamat Varchar(30),

Kota Varchar(20))

Tipe data menentukan tipe data yang bisa dimasukkan pada kolom. Tabel berikut berisi tipe yang

umum dalam SQL:

Tabel 6.5 Tabel Tipe Data

Tipe Keterangan

Integer (ukuran)

Int (ukuran)

Smallant (ukuran)

Tinylnt (ukuran)

Hanya untuk nilai integer. Jumlah

angka maksimum ditentukan dalam

tanda kurung.

Decimal (ukuran, D)

Numeric (ukuran,D)

Untuk bilangan pecahan. Jumlah

angka maksimum ditentukan dalam

tanda kurung. Jumlah angka di

belakang koma ditentukan dalan D

Char (Ukuran)

Varchar (ukuran)

Untuk string dengan panjang

tertentu (dapat mengandung huruf,

angka, dan karakter). Panjang

karakter ditentukan dalam tanda

kurung.

Date (yyyymmdd) Untuk tanggal.

6.12 Membuat Indeks

INDEKS dibuat pada tabel yang sudah ada untuk mencari dengan lebih cepat dan lebih efisien. Kita

dapat membuat indeks pada satu atau lebih kolom dalam suatu tabel dan masing-masing indeks diberi

nama. Pengguna tidak dapat melihat indeks karena indeks hanya digunakan untuk mempercepat query.

Meng-update tabel yang mengandung indeks membutuhkan waktu lebih lama daripada tabel tanpa

indeks karena indeks harus di-update. Oleh karena itu, kita lebih baik membuat indeks hanya pada

kolom yang sering digunakan dalam pencarian.

6.12.1 Indeks Unik

Indeks untik berarti bahwa dua baris tidak dapat mempunyai nilai indeks sama.

Sintaks :

CREATE INDEX nama_indeks

Sistim Basis Data

Sistim Basis Data

76

ON nama_tabel (nama_kolom) Misalnya, kita akan mmbuat indeks sederhana bernama pegawai-indeks pada kolom NamaDepan

Tabel Pegawai.

CREATE INDEX nama-indeks

ON Pegawai (NamaDepan)

Jika anda ingin mengindeks nilai dalam suatu kolom dengan urutan terbalik, anda dapat menambah

kata DESC setelah nama kolom :

CREATE INDEKX pegawai_indeks

ON Pegawai (NamaDepan DESC)

Jika ingin meng-indeks lebih dari satu kolom, Anda dapat mencantumkan nama-nama kolom dalam

tanda kurung dan dipisahkan oleh koma.

CREATE INDEX pegawai_indeks

ON Pegawai (NamaDepan, NamaBelakang)

6.12.3 Menghapus Indeks, Tabel, dan Basisdata

Anda dapat menghapus indeks pada tabel dengan pernyataan DROP.

Sintaks :

DROP INDEX nama_tabel.nama_indeks

Kemudian, Anda pun dapat menggunakan DROP untuk menghapus tabel maupun basisdata.

Sintaks untuk menghapus tabel :

DROP BASISDATA nama_tabel

Jika kita hanya ingin menghapus data dalam suatu tabel, bukan tabel, gunakan perintah TRUNCATE

TABLE.

Sintaks :

TRUNCATE TABLE nama_table

6.13 Alter Table

Pernyataan ALTER TABLE digunakan untuk menambah atau menghapus kolom dalam suatu tabel.

Sintaks :

ALTER TABLE nama_tabel

ADD nama_kolom tipe_data

ALTER TABLE nama_table

DROP COLUMN nama_kolom

Misalnya, pernyataan untuk menambah kolom umur pada tabel pegawai sebagai berikut :

ALTER TABLE pegawai

ADD Umur Int

Hasilnya :

NamaDepan NamaBelakang Alamat Kota Umur

Adi Nugroho Jl.Urip Sumoharjo Solo

Diana Nuraini Jl.Perintis Kemardekaan Medan

Hasan Martono Jl.Diponegoro Makassar

Suardi Ibrahim Kl.Ir.Sutami Pinrang

Sukma Wati Jl.DR.Wahidin Gowa

Misalnya, pernyataan untuk menghapus kolom alamat dari tabel pegawai sebagai berikut :

ALTER TABLE pegawai

Sistim Basis Data

Sistim Basis Data

77

DROB COLUMN Alamat

NamaDepan NamaBelakang Kota Umur

Adi Nugroho Solo

Diana Nuraini Medan

Hasan Martono Makassar

Suardi Ibrahim Pinrang

Sukma Wati Gowa

6.14 GROUP BY dan HAVING 6.14.1 GROUP BY

Sintaks :

SELECT nama_kolom, COUNT (nama_kolom)

FROM nama_tabel

GROUP BY nama_kolom

Untuk mencari banyaknya pegawai yang tinggal di satu kota, gunakan pernyataan berikut :

SELECT kota, COUNT (kota)AS jumlah

FROM Pegawai

GROUP BY kota

Hasilnya :

Kota Jumlah

Medan 1

Semarang 1

Maros 1

Makassar 2

6.14.2 HAVING

Sintaks :

SELECT nama_kolom, COUNT (nama_kolom)

FROM Nama_tabel

GROUP BY nama_kolom

HAVING COUNT (nama_kolom) kondisi nilai

Misalnya, pernyataan untuk mencari kota yang ditinggali oleh lebih dari satu pegawai adalah :

SELECT kota, COUNT (kota) AS jumlah

FROM Pegawai

GROUP BY kota

HAVING COUNT (kota) >1

Hasilnya ;

Kota Jumlah

Makassar 2

Sistim Basis Data

Sistim Basis Data

78

6.15 Pernyataan SELECT INTO

Pernyataan SELECT INTO digunakan untuk membuat backup suatu tabel.

Sintaks :

SELECT nama_kolom INTO nama_tabel_baru

IN basisdata_baru FROM Sumber

Contoh berikut adalah membuat backup Tabel Pegawai

SELECT * INTO pegawai_backup

FROM pegawai

Klausa IN dapat digunakan untuk menyalin tabel ke basisdata lain.

SELECT Pegawai.*INTO Pegawai IN „backup.mdb‟

FROM pegawai

Jika hanya ingin menyalin beberapa field, Anda dapat melakukannya dengan menuliskan field-field

setelah penyataan SELECT.

SELECT NamaDepan, NamaBelakang INTO

Pegawai_backup

FROM Pegawai

Anda dapat pula menambahkan kluasa WHERE.

Contoh berikut adalah membuat tabel pegawai_Backup dengan dua kolom (NamaDepan,

NamaBelakang) dengan memilih pegawai yang tinggal di Yogyakarta dari Tabel Pegawai.

SELECT NamaDepan, NamaBelakang INTO

Pegawai_backup

FROM Pegawai

WHERE kota =‟Yogyakarta‟

Kita pun dapat memilih data lebih dari satu tabel.

Contoh berikut adalah membuat tabel baru pegawai_pesan backup yang mengandung data dua tabel,

Pegawai dan Pesan.

SELECT Pegawai.NamaDepan, Pesan.NamaBarang

INTO pegawai_pesan_backup

FROM Pegawai INNER JOIN Pesan

ON Pegawai.KodePegawai=Pesan.KodePegawai

Sistim Basis Data

Sistim Basis Data

79

Bab 7

XML dan Basisdata

7.1 Pendahuluan

Subbab 7.1 akan membahas cara menyajikan data terstruktur dengan XML, menyimpan dalam

relational dababase management Sistem (RDBMS), dan mencarinya.

Pembuatan aplikasi model three-tier terdiri ats Web Browser atau aplikasi client sebagai tier 1, Web

server atau aplikasi server sebagai tier 2, dan Sistem basisdata atau Sistem transaksi sebagai tier 3

(lihat Gambar 7.1). sebuah RDBMS seringkali digunakan sebagai tier 3 dalam Sistem three

tier(Maruyama. 2002).

Tier 1 Tier 2 Tier 3 HTML/XML JDBC

User Agent Aplication

Database

(Browse) Server

Gambar 7.1 RDMBMS digunakan sebagai tier 3 dalam Sistem there tier

Saat ini , java applet yang digunakan dalam pengembangan aplikasi sisi client sangat dominan, begitu

pula java yang digunakan dalam pengembangan aplikasi sisi server. Sekarang, XML semakin sering

digunakan dalam pertukaran data antara aplikasi web. XML Schema memungkinkan kita

mendefinisikan tipe data dan menghubungkannya dengan tabel.

7.1.1 Menyimpan dan Mencari Dokument XML

Sistem menajemen basisdata seperti RDBMS sangat efisien dalam menangani data berjumlah banyak

dan RDBMS pun menyediakan fasilitas untuk menjagaintegritas, konsistensi, dan keteesedian. Model

three tier yang ditunjukkan Gambar 7.1 hanya digunakan pada aplikasi seperti pembelian, pemesanan

tiket, dan lain-lain. Namun, data yang disimpan pada Sistem tidak dalam format XML.

Ada tiga pendapatan untuk menyinpan data dalam format XML di dalam Sistem basisdata, yaitu :

1. Menyimpan dokumen XML sebagai XML sebagai dokumen terstruktur.

2. Menyimpan dokumen XML sebagai objek DOM tree.

3. Menyimpan dokuement XML sebagai himpunan tabel relasional.

Pendekatan pertama digunakan untuk menyimpan dan mengambil dokumen terstruktur dengan

menggunakan basisdata asli SGML/XML. Misalnya, OpentText (LiveLink) adalah mesin pencari Full-

text (lihat http://www.opentext.com/livelink). Server basisdata XML yang disebut Tamino dari

Software AG menggunakan pula pendekatan pertama (lihat http://www.softwareag.com/tamino).

Tamino menyediakan kemampuan pencariaan dengan menggunakan ekspresi XPath dan mengatur

indeks skema untuk mengoptimalkan proses pencarian. Keuntungan menggunakan basisdata asli

adalah tidak harus merancang pemetaan antara document XML dan table. Document XLM dapat

disimpan begitu saja dalam basisdata dan diambil dengan XPath maupun XQuery. Basisdata asli

menyediakan kemampuan pencarian full-text yang berguna ketika harus menyimpan document yang

kompleks (dan bukan Cuma data).

Pendekatan kedua dapat direalisasikan dengan menggunakan basisdata berorientasi objeks(OODB).

Pada kerangka kerja OODB, sebuah objek data disimpan sebagai objek yang menetap dan sebuah

Serviet

et

Sistim Basis Data

Sistim Basis Data

80

aplikasi dapat mengalami objek melalui pointer. Pada objek DOM tree dan disimpan dalam tempat penyimpanannya yang bersifat menetap. Salah satu implementasi pendekatan kedua adalah eXcelon

(lihat http://www.exceloncorp.com). Produk berdasarkan pada OODB umum yang disebut

ObjectStore. Software ObjectStore menyimpan kumpulan objek DOM dan menyediakan fungsi

pencarian dangan menggunakan XPath. Keuntungan utama pendekatan kedua adalah sama dengan

basisdata asli.

Pada pendekatan ketiga, sebuah document XML, disimpan dalam sebuah RDBMS. Pendekatan dapat

mengatur sekumpulan table relasional dan skemanya, yang merupakan salah satu karakterisktik

penting XML. Oleh karena itu, kita tidak mudah mengubah sebuah dokumen XML menjadi satu atau

lebih table.

Pendekatan ketiga lebih banyak digunakan kerena dua alas an. Pertama, sebagian besar aplikasi yang

ada menyimpan data dalam RDBMS. Untuk membuat aplikasi Web berbasis XML yang terintegrasi

dengan sumberdaya yang sudah ada, XML dokumen yang dikirim oleh client disimpan dalam

RDBMS. Kedua, sebagian besar produk RDBMS komersial, seperti Oracle dan DB2, mampu

menengani data dalam jumlah besar dan jumlah akses yang pula. Produk-produk RDBMS komesrsial

menyediakan berbagai macam kemampuan Manajemen, termasuk backup data recovery. Fitur-fitur

mempunyai arti penting ketika Anda harus membuat aplikasi bisnis berskala besar. Terlebih lagi,

banyak teknik untuk mengoptimalkan sistem dan query telah tersedia sehingga pengguna dapat

memanfaatkannya.

Bagaimana mengambil dokumen XML yang tersimpan merupakan masalah besar lain. Ada empat cara

yang dapat dilakukan, yaitu :

Menggunakan bahasa query yang dibuat khusus untuk hal ini seperti OpenText. Misalnya, ketika ingin mencari element TITLE yang mengandung string “XML” dengan OpenText, Anda dapat menggunakan query seperti elemen TITLE berhubungan dengan TITLE region, yang merupakan topic spesifik pada OpenText)..

Menggunakan XPath. XPath dapat digunakan sebagai bahasa query karena bagian dokement XML dapat dialamiti dengan menggunakan XPath. Ketika dapat pula mengubah ekspresi XPath menjadi Srtuctured dokumen XML dipecah menjadi table-tabel dengan menggunakan JDBC.

Menggunakan XQuery, yang merupakan standar W3C yang masih dalam mengembangkan. XQuery adalah bahasa query standar untuk dokumen XML. XQuuery dapat menentukan format keluaran secara fleksibel. Keuntungan XQuery sebagai berikut :

o Menyediakan bahasa query yang umum untuk dokumen XML,.

o Tidak tergantung pada tipe basisdata tertentu (asli, OODB, RDB).

o Dapat diterapkan pada kumpulan dokumen XML.

o Menyediakan sintaks untuk mencari dokumen dan mengubah hasilnya.

Berikut adalah contoh query dengan spesifikasi XQuery 1.0:

For Sp IN distinct(document(“bib.xml”)//publisher)

LET $a :=avg(dokumen(“bib.xml”)//book(publisher = $pl/price)

RETURN

Sistim Basis Data

Sistim Basis Data

81

<publisher> <name {$p/text()} </name>

<avgprice>{$a} </avgprice>

Kata FOR, LEF, WHERE, dan RETURN adalah klausa utama pada AQuery sehingga query

in disebut ekspresi FLWR. Query pada contoh akan menampilkan daftar harga rata-rata buku

untuk masing-masing publisher. Konsep query yang dipakai di sini mirip dengan SQL.

Klausal FOR menentukan bagian tujuan sebuah dokumen XML. FOR seperti SELECT pada

SQL. Klausal LET digunakan untuk menggabungkan sebuah variable dengan hasil sebuah

fungsi(untuk mendapatkan nilai-nilai rata-rata). Klausal WHERE menetukan kondisi query.

Hasil penggunaan kondisi dikembalikan dengan Klusal RETUREN. Ini semacam template

untuk keluaran. Variable dalam template digunakan dalam proses query.

Menggunakan structured Query Language (SQL). SQL adalah bahasa umum untuk mengakses RDBMS. Jika sebuah dokumen XML diubah menjadi data untuk disimpan dalam sebuah table sebagai ilai kolom atau jika dokumen XML dihasilkan data yang tersimpan dalam bahasa basisdata, maka dokumen XML dapat diakses menggunakan SQL.

Sistim Basis Data

Sistim Basis Data

82

7.1.2 Mengubah Dokument XML Menjadi Tabel

salah satu karakteristik penting XML adalah XML. Merupakan data semi tertruktur. Sulit untuk

mendefinisikan kata semi terstruktur, secara tepat, tetapi artinya adalah data yang skemanya sulit

dibuat. XML memungkinkan adanya jumlah elemen yang tidak tertentu. Fleksibilitas membuat kita

sulit mengubah dokumen XML menjadi satu atau lebih table relasional karena sebuah table

mempunyai skema pasti.

Gambar 7.2 menunjukkan perubahan antara dokumen XML dan table relasional. Gambar 7.2 (a)

menunjukkan perubahan dari dokumen XML ke himpunan table. Sebuah document XML. Dipecah

menjadi satu atau beberapa table dalam kasuys ini, kita memerlukan teknik untuk mengubah data

tertruktur (dan keturunan) ke data table (tidak berurutan). Kita harus menentukan informasi yang harus

disimpan (beberapa informasi tidak diperlukan). Kemudian, kita harus menetukan jumlah table yang

dibutuhkan untuk menempung dokumen XML. Berdasarkan skema XML, tidak ada cara khusus untuk

melakukan perubahan, tetapi ada beberapa pendekatan yang bisa dilakukan.

Or

(a) Perubahan dari dokumen XML ke table

or

(b) Perubahan antara dokumen XML dan table relasional

Gambar 7.2 (b) menunjukkan perubahan dari table relasional kie dokumen XML. Dalam kasus ini,

data table diubah kedata terstruktu.

Sebagai contoh, bagaimana kita menentukan skema dokumen XML (po.xm1) agar dapat

menyimpannya dalam sebuah basisdata? Listing program berikut menunjukkan skema untuk sebuah

dokumen XML.

Listing 7.1 Skema suatu dokumen XML

<?xml1 version=”1.0”?>

Sistim Basis Data

Sistim Basis Data

83

<!DOCTYPE PurchaseOrder [ <!ELEMET purchaseOrder (shipTo, Item)>

<!ATTLIST purchaseOrder invoiceNo CDATA #REQUIRED >

<!ELEMET shipTo (name,street?>

<!ELEMET shipTo Country CDATA #REQUEIED>

<!ELEMET name (#PCDATA)>

<!ELEMET street (#PCDATA?>

<!ELEMET items (item*)>

<!ELEMET item (#PCDATA)>

<!ATTLIST item qty CDATA #REQUIRED >

]>

<purchasesOrder invoiceNo=”2001-08-031012345”>

<shipto country=”US”>

<name>Alice Smisth</name>

<street>123 Maple Street</street>

</shipto>

<item>

<item qty=”2”>thinkPad X21</item>

<item qty=”1”>ThinPad T22</item>

</purchaseOrder>

Jika skema (DTD) untuk sebuah dokumen sudah dibuat, maka kita dapat menentukan skema tabelnya.

Skema dua table untuk menyimpan dokumen PO.xml ditunjukkan pada Tabel 7.1 dan 7.2. item data

yang muncul sekali pada dokumen (seperti invoiceNo dan name)dapat dinyatakan dalam sebuah table

(lihat Tabel 7.1). item yang muncul lebih dari sekali (seperti item) harus dinyatakan dalam table

terpisah (lihat Tabel 7.2). ini berarti dokumen XML adalah data semi terstruktur sehingga dalam

banyak kasus, kita tidak meungkin mengubahnya ke sebuah table. Jika Anda ingin melakukan query

untuk mencari”orang yang memesan ThinkPad X@!”, kedua table harus dihubungkan karena elemen

name dan item dipetakan ke table berbeda, jika struktur dokumen XML tidak terlalu kompleks dan

skema dapat ditentukan, maka pendekatan dapat dilakukan.

Jika dokumen XML dapat dipecah menjadi beberapa table, datanya dapat diakses melalui SQL, ini

dapat diintegrasikan dengan data lain (selain XML) yang disimpan dalam basisdata dan aplikasi yang

ada. Hal ini merupakan keuntungan menengani dokumen XML dengan RDBMS.

Seperti dikatakan sebelumnya, perubahan antara dokumen XML dan table adalah pekerjaan yang tidak

mudah. Namun, vendor basisdata seperti IBM dan Oracle menyediakan tool untuk mempermudah

pekerjaan. Misalnya, DB2 XML Extender menyediakan bahasa pemetaan berbasis XML. Oracle

menyediakan XML Develover‟s Kit (XDK) berisi prosesor XML yang mendukung XML Schema dan

kelas-kelas untuk membuat aplikasi dengan menggunakan XML dan basisdata. Dengan menggunakan

tool-tool, kita dapat mengurangi biaya perancangan dan perubahan skema.

Sistim Basis Data

Sistim Basis Data

84

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

invoiceNO

VARCHAR (32)

Country

VARCHAR (32)

Name

VARCHAR (128)

Street

VARCHAR (128)

2001-08-12345 US Alice Smith 123 Maple Strrt

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

itemID

VARCHAR (32)

Item

VARCHAR (32)

Qty

INTEGER

Invoice_ID

VARCHAR (32)

2001-08-31-12345-1 ThinkPad X21 2 2001-08-31-12345

2001-08-31-12345-2 ThinkPad T22 1 2001-08-31-12345

7.1.2.1 Merancang Tabel Relasional Sebagaian besar dokumen XML (Misalnya pembelian atau kontrak) dinyatakan dalam banyak table.

Struktur dokumen XML terdiri atas komponen-komponen berikut :

Element yang muncul sekali (misalnya harga total dan tanggal kontrak ) dalam sebuah dokumen

Element yang muncul berulang kali (misalnya barang)

Pengenal yang unit pada tiap dokumen

Kita dapat terlebih dahulu membuat table untuk elemen akar dokumen XML. Document XML dapat

menggambarkarkan sebuah kontrak, pembelian, laporan, dan sebagainya. Ini dapat dinyatakan dengan

sebuah table yang disebut table induk. Untuk dokumen po.xml, table yang ditunjukkan pada Tabel 7.1

merupakan table induk. Table induk menentukan elemen invoice_ID, country,name, dan street.

7.1.2.2 Menentukan Kunci Utama dalam Sebuah Tabel Tabel induk berisi kolom bernilai unit sehingga bias digunakan sebagai kunci utama. Kunci utama

adalah nilai atau kumpulan nilai yang dapat secara unit menentukan baris dalam table. Pada po.xml,

nilai atribut invoice_ID dapat digunakan sebagai kunci utama. RDBMS melarang penyimpanan record

yang mempunyai nilai kunci utama sama sehingga kita harus memastikan bahwa nilainya unik. Jika

sebuah dokumen XML tidak mempunyai pengenal yang unik semacam itu, kunci utama harus dibuat

dan ditambahkan kedalam table untuk menghubungkan dengan table lain. Pada Listing 7.6 dan 7.11,

kita menentukan nama kolom yang tidak muncul dalam po.xml. nilainya dibuat sebagai nilai unit

menggunakan kelas java.rmi.UID.

Beberapa batasan yang ditentukan untuk bahasa XML Scheme dapat diubah menjadi batasan untuk

table. Misalnya, jika sebuah elemen tidak optional, batasan NOT NULL harus diterapkan pada kolom

yang berhubungan.

7.1.2.3 Merancang Tabel untuk Elemen yang Muncul Berulang Elemen yang muncul berulang dalam dokumen XML. (dinyatakan dengan menggunakan “*” dan “+”

dalam DTD) dapat dinyatakan dalam table berbeda. Pada po.xml, elemen item dinyatakan dalam table

yang disebut table anak. Sebuah table induk dan table anal dihubungkan jika RDBMS menerima

query. Untuk table anak, penentuan kunci utama sangat penting meskipun dalam sebagian besar kasus,

dokumen XML asli mempunyai pengenal untuk setiap elemen.

Sistim Basis Data

Sistim Basis Data

85

RDBMS menyediakan beberapa tipa batasan untuk table. Misalnya, jika sebuah record dalam recor dalam table induk dihapus, record yang berhubungan harus dihapus dari table anak, batasan berikut

akan melakukannya secara otomatis:

FOREIGN KEY (“invoice_ID”)

REFERENCES PO_TBL (“invoice_ID”)

ON DELETE CASCADE);

Batasan menunjukkan bahwa kolom invoice_ID dalam table ITEM_TBL yang menunjukkan table 7.2

adalah tamu yang berhubungan dengan kolom invoice_ID dalam table PO_TBL yang ditunjukkan

Tabel 7.1. jika PO_TBL, semua record dengan nillai invoice_ID yang sama secara otomatis akan

dihapus dari table ITEM_TBL.

7.1.2.4 Perubahan Tipe Data Sebuah skema basisdata menentukan tipe untuk masing-masing kolom. Namun, DTD tidak

mendukung tipe data seperti data numeric dan karakter dengan panjang tertentu. Oleh karena itu,

untuk menyatakan informasi tipe data pada sebuah DTD, Anda harus menyatakannya secara eksplisit

dalam dokumen XML dengan menggunakan atribut type. XML schema memungkinkan kita

menentukan tipe data pada XML Scheme, begitu pula dengan RELAX, bahasa skema XML Lainnya.

Sebuah DTD tidak membatasi panjang karakter (meskipun XML, Schema mempunyai kemampuan

untuk itu). Anda harus berhati-hati ketika mengekstrak string dari isi sebuah elemen dan

menyimpannya ke dalam basisdata. Misalnya, jika sebuah kolom ditentukan sebagai

CHARACTER(32

), kita dapat menyimpan sembarang string yang melebihi batasan. Jika panjang maksimum data tidak

dapata diperkirakan, Anda harus menggunakan tipe VARCHAR, yang memungkinkan Anda

mengganti ukuran maksimal setelah table dibuat. Jika karakter sangat panjang, Anda dapat

menggunakan tipe data Character Large Object (CLOB) atau Binary Large Object (BLOB).

7.1.2.5 Semantik Data semua elemen yang muncul sekali tidak selalu dinyatakan sebagai table tersendiri. Ketika sebuah table

relasioanal dirancang, ada banyak teknik pemodelan data. Pembuatan ERD adalah salah satu metode

paling umum dalam pemodelan. Perancangan table tergantung pada apa yang dinyatakan oleh sebuah

dokumen XML. Akibatnya, perubahan otomatis antara dokumen XML dan table sulit terjadi tanpa

mengetahui semantik dari data yang akan disimpan.

Sistim Basis Data

Sistim Basis Data

86

7.1.2.6 Dua Pendekatan Sub-subbab 7.1.2 menunjukkan bagaimana mengubah dokumen XML dan table basisdata. Ketika

mengetahui skema dokumen XML, maka kiata dapat menentukan table yang dapat menyimpan

dokumen XML. Kita menyebutnya metode pemetaan/ namun, jika tidak mengetahui skema dokumen

XML, bagaiman kita dapat menyimpan dokumen.

Salah satu penyelesaiannya adalah dokumen XML menggunakan XPath dan menyimpan pasangan

eksperesi XPath dan isinya, yang dialamati oleh okspresi. Kita menyebut pendekatan dengan metode

XPath. Dengan menggunakan metode XPath, kita dapat menyimpan po.xml dalam table seperti

ditunjukkan pada Gambar 7.3.

Gambar 7.3 menunjukkan kedua pendekatan. Metode pemetaan membutuhkan DTD atau XML

Schema untuk menghubungkan nilai titik (node) dengan nilai kolom dalam table bertipe data yang

sesuai. Disisi lain, metode XPath tidak memerlukan skema, tetapi semua nilai titik disimpan dalam

sebuah kolom dengan tipe data sama.

A B C Primary

Key

001

D Foreign

Key

Primary

Key

001 101

001 102

(a) Metode pemetaan

Content XPath Primay

Key /R(1)P/P(1)A(1) 001

/R(1)/P(1)/B(1) 002

/R(1)/(1)/B/(1) 003

/R(1)/P(1)D/(1) 004

/R(1)/P(1)D/(2) 005

(b) Metode XPath

Gambar 7.3. Metode Pemetaan dan XPath

Node_ID XPath_String Content_string Document_ID 1 /purchaseOrder[1]/@in

voiceNo

2001-08-31-12345 2001-08-31-12345

2 /purchaseOrder[1]/ship

To[1]/@country

US 2001-08-31-12345

3 /purchasesOrder[1]/ship

To[1]/name[1]

Alice Smith 2001-08-31-12345

4 /purchaseOrder[1]/

shipTo[1]street[1]

123 Maple Street 2001-08-31-12345

5 /purchaseOrder[1]/ite 2 2001-08-31-12345

R

Q

A B S C

D D

P

R

Q

A B S C

D D

P

Sistim Basis Data

Sistim Basis Data

87

Ms[1]item[1]@gty

6 /purchaseOrder[1]/ite

Ms[1]?item[1]

thinkPadX21 2001-08-31-12345

7 /purchaseOrder[1]/ite

Ms[1]/item[2]/@qty

1 2001-08-31-12345

8 /purchaseOrder[1]/ite

Ms[1]/item[2]

ThinkPad T22 2001-08-12345

7.2 Perubahan dari Tabel ke Dokumen XML Bagian sebelumnya sudah membahas dari dokumen XML ke tabel realsional. Perubahan dari tabel ke

dokumen XML sering diperlukan ketika data asal disimpan dalam basisdata sebagai record dalam

tabel. Pembahasan di atas sangat penting untuk perubahan semacam ini. Misalnya jika banyak tabel

menyatakan konsep tertentu, seperti pembelian, tabel dapat dinyatakan dalam dokumen XML. Kita

dapat mengubah dokumen XML ke tabel satu per satu dengan link yang berhubungan dengan kunci

tamu. Namun, dalam banyak kasus, perubahaan satu per satu menyebabkan masalah karena tidak

mudah untuk menangani banyak dokumen XML. Jika kunci utama dalam tabel tidak penting dalam

dokumen XML, kunci utama tersebut dpat diabaikan.

7.2.1 Penyajian Bersarang(Nested) dan daftar (Flat) Mari kita melihat bagaimna mengubah tabel yang ditunjukan pada tabel 7.4 7.5 dan 7.6 dengan

menggunakan kedua pendekatan. Tabel menyimpan informasi pembelian. Contoh lebih kompleks dari

pada pendekatan Tabel 7.1 dan 7.2 sehingga kita dapat menjelaskan kedua pendekatan. Tabel 7.4, 7.5

dan 7.6 menunjukan informasi tentang address, quantity, dan product. Kolom invoice_ID pada tabel

7.4 merupakan kunci tamu pada tabel 7.5. Kolom product_ID pada tabel 7.6 mengacu pula pada tabel

7.5

Tabel 7.4 Tabel Relasional untuk Purchase Orders (1) ITEM_TBL

Invoice_ID

VARCHAR (32)

Country

VARCHAR(32)

Name

VARCHAR(128)

Street

VARCHAR(128)

2001-08-31-12345 US Alice Smith 123 Maple Street

2001-08-31-12346 US Bob Miller 1365 Tree Street

2001-08-31-12345 US Alice Smith 123 Maple Street

2001-08-31-12346 US Bob Miller 1365 Tree Street

Tabel 7.5 Tabel Relasional untuk Purchase Orders (2) ITEM_TBL

ItemID

VARCHAR (32)

ProductID

VARCHAR(128)

Name

VARCHAR(128)

Street

VARCHAR(128)

000001 Ibm0010 2 2001-08-31-12345

000002 Ibm0011 1 2001-08-31-12345

000003 Ibm0010 8 2001-08-31-12346

000004 Ibm0011 10 2001-08-31-12346

Tabel 7.6 Tabel Relasional untuk Purchase Orders (3) PRODUCT_TBL

ProductID

VARCHAR(32)

Name

VARCHAR(128)

Company

VARCHAR(64)

ProductID

VARCHAR(32)

Ibm0010 ThinkPad X21 IBM Ibm0010

Ibm0011 ThinkPad T22 IBM Ibm0011

Sistim Basis Data

Sistim Basis Data

88

Sekarang, kita melihat bagaimana kita dapat mengubah tabel dokumen XML menggunakan

metod bersarang dan datar.

Listing 7.2 menunjungkan daftar pembelian dengan metode bersarang (nesting method). Dalam

contoh ini, informasi produk dinyatakan dengan elemen product, yang merupakan elemen anak

dri elemen item. Struktur sangat alamiah dn sangat mudah dibaca. NAmun, daftar memiliki

perulangan karenainformasi produk yang sama muncul berulang kali. Relasi anatar invoice dan

product menggunakan pemetaan many to many sehingga metode bersarang mungkin bukan

metode terbaik untuk dipakai. Listing 7.2 Dokumen XML yang dihasilkan (metode bersarang), po2.xml

<?xml version="1.0"?>

<purchaseOrderList

<invoice invoiceNo="2001-08-31-12345">

<shipTo country-"US">

<name> Alice Smith</name>

<street>123 Maple Street</street>

</shipTo>

<items>

<item qty="2">

<product>

<name>ThinkPad X21</name>

</product>

</item>

</</items>

</invoice invoiceNo=”2001-08-31-123456”>

<shipTo country=”US”>

<name>Bob Miller</name>

<street>1365 Tree Street</street>

</shipTo>

<items>

<item qty=”8”>

<product>

<name>ThinkPad X21</name>

</product>

</item>

<item qty=”10”>

<product>

<name>Thinkpad T22</name>

</product>

</item>

</items>

</invoice>

</purchaseOrderList>

Listing 7.3 menunjukkan dokumen XML menggunakan metode datar(flat method). Informasi untuk masing-msing

produk muncul sekali dlam dokumen. Invoice mengacu pada informasi

“Kami hanya menunjukkan pintunya

Andalah yang harus melewatinya”

© MEGADATA INDONESIA

www.megadata.co.id