0% menganggap dokumen ini bermanfaat (0 suara)
962 tayangan82 halaman

Modul Basisdata

Sistem basis data berkembang dari sistem pemrosesan manual dan berkas untuk menyimpan data secara terpisah. Basis data menyimpan semua data terkait secara terintegrasi untuk menghindari duplikasi, membatasi akses, dan menjamin konsistensi data. Teknologi basis data terus berkembang seiring perangkat keras dan lunak komputer, mencakup basis data terdistribusi, berorientasi objek, cerdas, dan multimedia.

Diunggah oleh

Edo Afriando
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
962 tayangan82 halaman

Modul Basisdata

Sistem basis data berkembang dari sistem pemrosesan manual dan berkas untuk menyimpan data secara terpisah. Basis data menyimpan semua data terkait secara terintegrasi untuk menghindari duplikasi, membatasi akses, dan menjamin konsistensi data. Teknologi basis data terus berkembang seiring perangkat keras dan lunak komputer, mencakup basis data terdistribusi, berorientasi objek, cerdas, dan multimedia.

Diunggah oleh

Edo Afriando
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 82

1

PENGANTAR BASIS DATA

1.1 Sejarah Kemunculan Basis data


Sistem pemrosesan basis data terbentuk setelah masa sistem pemrosesan manual dan sistem
pemrosesan berkas. Sistem pemrosesan manual (berbasis kertas) merupakan bentuk pemrosesan
yang menggunakan dasar berupa setumpuk rekaman yang disimpan pada rak-rak berkas. Jika
suatu berkas diperlukan, berkas tersebut harus dicari pada rak-rak tersebut. Contoh lain adalah buku
telpon saku dimana seseorang relatif mudah mencari nama-nama rekannya karena data telah
disusun secara alfabet. Namun demikian kemudahan seperti ini kurang luwes. Data tidak bisa
diurutkan menurut kata atau nomor telpon. Jika hal tersebut dikehendaki, tidak ada cara lain selain
dengan menuliskannya kembali, dan tentu saja ini tidak praktis.
Pada awal penerapan sistem komputer, sekelompok rekaman disimpan pada sejumlah berkas
secara terpisah. Sistem yang menggunakan pendekatan seperti ini disebut sebagai sistem
pemrosesan berkas. Sistem ini tentu saja memiliki kelebihan daripada sistem pemrosesan manual,
yaitu dalam hal kecepatan keakuratannya. Kelemahannya, perancangan sistem masih didasarkan
pada kebutuhan individu pengguna, bukan kebutuhan sejumlah pengguna. Setiap kali ada
kebutuhan baru dari seorang pengguna, kebutuhan segera diterjemahkan ke program komputer.
Hasilnya, setiap program aplikasi menuliskan data sendiri. Sementara itu ada kemungkinan data
yang sama juga terdapat pada berkas-berkas lain yang digunakan oleh program aplikasi lain.
Kongkretnya, sistem pemrosesan berkas memiliki kekurangan dalam hal :
1. Kemubaziran atau duplikasi data, diakibatkan oleh karena setiap program aplikasi
menggunakan data sendiri (sebagaimana telah dijabarkan diatas).
2. Keterbatasan data, terjadi karena suatu data yang tidak dapat dipakai oleh beberapa
program aplikasi ataupun sejumlah orang.
3. Ketidakkonsistenan dan kurangnya integritas data. Ketidakkonsistenan data diakibatkan
karena perubahan terhadap data yang sama tetapi tidak semuanya diubah. Sedangkan
kurangnya integritas data berarti kurangnya kevalidan terhadap data tersebut.
4. Ketidakluwesan, terjadi karena kurang sensitifnya program aplikasi terhadap
pengembangan dan perubahan data.
1.2 Evolusi Teknologi Basisdata
Perkembangan teknologi basis data tidak lepas dari perkembangan perangkat keras dan perangkat
lunak. Perkembangan teknologi jaringan komputer dan komunikasi data merupakan salah satu
penyumbang kemajuan penerapan basis data, yang kemudian melahirkan sistem basis data
terdistribusi. Dampak perkembangan ini tentu saja dapat dirasakan dalam kehidupan sehari-hari,
seperti kemudahan untuk mengambil uang dengan fasilitas ATM yang banyak diterapkan pada
perbankan di Indonesia.
Perkembangan pada dunia perangkat lunak, seperti kecerdasan buatan, sistem pakar dan
pemrograman berorientasi objek juga mempengaruhi perkembangan basis data berorientasi objek
dan basis data cerdas. Tabel dibawah ini memperlihatkan evolusi perkembangan teknologi basis
data.

MASA
1960-an
1970-an
1980-an
1990-an

Tabel 1.1 Evolusi Teknologi Basis Data


PERKEMBANGAN BASIS DATA
Sistem pemrosesan berkas, DBMS, layanan informasi secara online
berbasis manajemen teks.
Penerapan sistem pakar pada sistem pendukung keputusan, basis data
berorientasi objek.
Sistem hypertext, yang memungkinkan untuk melihat basis data secara
acak menurut suatu kata kunci (sebagaimana yang diterapkan pada
internet)
Sistem basis data cerdas dan sistem basis data multimedia cerdas

1.3 Data dan Informasi


Data adalah representasi fakta dunia nyata mengenai objek seperti manusia, barang, hewan,
peristiwa, konsep, keadaan dan sebagainya, dan biasanya dinyatakan dalam angka, huruf, simbol,
teks, gambar, bunyi atau kombinasinya.
Sedangkan Informasi adalah hasil analisis terhadap data, dengan kata lain informasi merupakan
data yang diorganisasikan dalam bentuk yang sesuai dengan kebutuhan seseorang. Dapat
dikatakan juga bahwa data dipergunakan untuk menyatakan nilai-nilai yang secara aktual
terkandung dalam basis data sedangkan informasi digunakan untuk menyatakan makna nilai
tersebut.
1.4 Pengertian Basis data dan Sistem Basis data
Basis data dapat didefinsikan melalui beberapa sudut pandang :
1. Kelompok data (arsip) yang saling berhubungan, yang diorganisasi sedemikian rupa
sehingga dapat dimanfaatkan kembali dengan cepat dan mudah.
2. Kumpulan data yang saling berhubungan, yang disimpan secara bersama dengan tanpa
pengulangan (redudansi) yang tidak perlu untuk memenuhi berbagi kebutuhan.
3. Kumpulan file/tabel/arsip yang saling berhubungan yang disimpan dalam media
penyimpanan elektronis.
4. sekumpulan programprogram aplikasi umum yang bersifat batch yang mengekseskusi
dan memproses data secara umum (seperti pencarian, update, penambahan, dan
penghapusan data)
Sedangkan Sistem basis data merupakan sekumpulan file (tabel) yang saling berhubungan (dalam
sebuah basis data pada sebuah sistem komputer) dan sekumpulan program (DBMS) yang
memungkinkan beberapa pemakai dan/atau program lain untuk mengakses dan memanipulasi filefile tersebut.
Sebuah konsep basis data memiliki beberapa hal sebagai berikut :
Entitas
Merupakan tempat informasi yang direkam, dapat berupa orang, tempat, kejadian. Sebagai
contoh dalam kasus administrasi siswa misalnya maka terdapat entitas siswa, guru, mata kuliah,
dan pembayaran
Atribut
Disebut juga elemen, data field, atau data item yang digunakan untuk menerangkan suatu
entitas dan mempunyai harga tertentu. Tiap tipe entitas memiliki sekumpulan atribut yang
berkaitan dengannya. Dengan kata lain, atribut merupakan sifat atau karakteristik suatu entitas
yang menyediakan penjelasan detail tentang entitas tersebut. Buka hanya entitas yang memiliki
atribut, tetapi relationship juga memilikinya. Misalnya atribut dari entitas siswa adalah nama,
tanggal lahir, alamat.
2

Data value
Data atau nformasi aktual yang tersimpan pada tiap data,elemen, atau atribut. Atribut nama
pegawai menunjukkan tempat dimana informasi nama karyawan disimpan, nilai datanya misal
nya Melli, Ani, Arif, Fitra yang nerupakan isi data nama pegawai tersebut.
File/Tabel
Kumpulan record sejenis yang mempunyai panjang elemen yang sama, atribut yang sama,
namun berbeda nilai datanya
Record
Kumpulan elemen-elemen yang saling berkaitan menginformasikan tentang suatu entitas secara
lengkap. Satu record mewakili satu data atau informasi.
Contoh :
NIM
Nama
Alamat
G1A008001
Melli Suryanty
Buluran No 12
G1A008002
Sulwanah
BLK No1
G1A008003
Rahmad
JPM No 10
Dari relasi/tabel diatas:
G1A008001
Adalah satu record

Melli Suryanty

Buluran No 12

1.5 Tipe Atribut


Dalam menggambarkan atribut, terdapat beberapa tipe atribut yang digunakan :
a. Single-value Attribute dan Multi-Value Attribute
Atribut bernilai tunggal ditujukan untuk atribut-atribut yang memiliki paling banyak satu nilai
untuk tiap baris data/tupel, sedangkan antribut yang bernilai banyak ditujukan pada atributatribut yang dapat diisi dengan labih dari satu nilai, tetapi jenisnya sama. Misalnya Seorang
manajer hanya boleh memiliki satu NIK, satu tanggal lahir, tetapi manajer tersebut boleh saja
memiliki alamat rumah,anak lebih dari satu. NIK dan tanggal lahir merupakan atribut dengan
nilai tunggal, sedangkan alamat rumah dan jumlah anak merupakan atribut dengan bernilai
banyak.
b. Atribut Komposisi dan atomic
Suatu atribut mungkin saja memiliki bberapa atribut yang lebih kecil dengan arti yang bebas dari
atribut itu sendiri. Atrbut seperti ini disebut sebagai atribut komposisi, seperti atribut NAMA untuk
entitas PEGAWAI.
Ada juga suatu atribut yang tidak dapat dibagi ke dalam beberapa atribut yang lebih kecil, atribut
ini disebut atribut atomik, misalnya atribut JENIS untuk entitas MOBIL, NIK untuk entitas
MAHASISWA.
c. Derived atribut
Pada beberapa kasus, ada dua atau lebih nilai atribut yang berelasi, misalnya atribut UMUR dan
TGLLAHIR untuk entitas MAHASISWA. Nilai atribut UMUR dapat ditentutkan dengan tanggal
sekarang dan nilai atribut TGLLAHIR mahasiswa yang bersangkutan. Atribut UMUR ini disebut
Derived atribut dan dikatakan bahwa atribut UMUR dihasilkan dari atribut TGLLAHIR.
d. Null Value attribute
NULL value attribute adalah kondisi dimana suatu objek intance tidak memiliki nilai untuk salah
satu atributnya. Atribut seperti ini tidak akan mempengaruhi kondisi suatu entitas bila bernilai
NULL (tidak berisi). Misalnya atribut hoby dari entitas mahasiswa
e. Mandatory value attribute (atribut yang harus terisi)
Mandatory value attribute adalah kondisi dimana suatu objek instance harus memiliki nilai untuk
setiap atau salah satu atributnya. Misalnya atribut NIK, dan NAMA untuk entitas Karyawan.
Atribut ini bila tidak diisi akan mempengaruhi entitas karyawan tersebut.

f.

Inherit
Inherit merupakan suatu kondisi dimana suatu objek adalah spesialisasi objek yang lain, maka
objek spesialisasi itu inherit (mewarisi) semua atribut dan objek relasi yang dispesialisasikan

1.6 Tipe File


Dalam siste, basis data akan terbentuk dari sekumpulan file-file. File dalam pemrosesan aplikasi
dikategorikan sebagai berikut :
a. File Induk
File Induk merupakan file yang penting dalam sistem dan akan tetap ada selama siklus hidup
dari sistem informasi dan pengolahan basis data. File master/induk dibedakan menjadi 2
macam, yaitu :
- file induk acuan
: file induk yang recordnya statis, jarang berubah nilainya
- file induk dinamik
: file induk yang nilai dari record-record yang nilai record-recordnya
berubah atau di Update sebagai akibat dari suatu transaksi
b. File Transaksi
File transaksi adalah file yang digunakan untuk merekam data dari hasil suatu transaksi yang
terjadi
c. File Laporan
File laporan adalah file yang berisi informasi yang akan ditampilkan. Biasanya struktur dari file
laporan ada beberapa macam. Hal ini disesuaikan dengan kepada siapa laporan tersebut
didistribusikan.
d. File Sejarah
File yang berisi record data masa lalu yang sudak tidak aktif lagi, tetapi perlu disimpan untuk
keperluan mencari data yang hilang.
e. File Pelindung
File pelindung merupakan salinan dari file-file yang masih akif didatabase pada saat tertentu dan
digunakan sebagai cadangan (back-up) bila file database yang aktif rusak atau hilang
f. File Kerja
File kerja dibuat oleh suatu proses program secara sementara karena memori komputer tidak
mencukupi, atau untuk menghemat pemakaian memori selama proses, dan akan dihapus bila
proses telah selesai.
1.7 Persyaratan Basis data
Suatu basis data yang beik memiliki beberapa ketentuan (kejekangan) yang harus diperharikan pada
pembuatan file database antara lain, sebagai berikut :
a. Redudansi Data
melakukan penyimpanan data yang sama dibeberapa tempat. munculnya data-data yang sama
secara berulang-ulang di beberapa tempat yang berbeda pada file basis data yang semestinya
tidak diperlukan, dapat mengakibatkan proses updating yang lebih lama karena data harus
dirubah dibeberapa tempat dan memungkinkan terjadinya ketidakkonsistenan yang semakin
besar.
b. Inkonsistensi data
munculnya data yang tidak konsisten pada medan/kolom yang sama untuk beberapa file dengan
kunci yang sama. Ketidakkonsistenan ini terjadi karena kesalahan dalam pemasukan data atau
update anomaly yaitu suatu proses untuk meng-update data tetapi mengakibatkan munculnya
data yang tidak konsisten atau kehilangan informasi tentang objek yang ditinjau.
c. Security Data
Basis data yang baik, menerapkan aturan-aturan yang berhubungan dengan keamanan sistem.
Hal ini membuat tidak setiap pemakai sistem basis data diperbolehkan untuk mengakses semua
data. Keamanan tersebut jua dapat diukur dan disesuaikan baik ditingkat basis data atau

d.

e.

f.

g.

h.

aplikasinya. Sebagai contoh data, data mengenai gaji pegawai harus boleh dibuka oleh bagaian
keuangan dan personalia, sedangkan bagian gudang tiak diperbolehkan untuk membukanya.
Data Integrity
Suatu sistem basis data berisikan banyak file database yang saling berhubungan. Integritas data
yang dimaksud menyangkut bagaimana mengatur kaitan antara file pada semua bagian sistem
tersebut agar dapat melakukan transaksi-transaksi dalam pengendalian yang penuh dan secara
efisien.
Data Access
Pada suatu sistem basis data perlu dibuat suatu manajemen pengelolaan untuk mengakses
data yang dikenal sbagai DBMS (Database Manajemen System). Hal ini dilakukan supaya data
dalam basis data harus siap diakses oleh siapa saja yang membutuhkan dan mempunyai hak
untuk mengaksesnya.
Data Indepedence
Sebuah program dalam sistem basis data, harus dipisahkan dengan database yang ada. Ini
artinya perintah DBMS bebas terhadap database karena apapun perubahan terhadap database,
semua perintah akan stabil tanpa ada yang perlu diubah. Hal itu berbeda dengan pemrograman
terstruktur seperti menggunakan basa C atau pascal. Jika aplikasi yang dibuat pada pascal
misalnya, maka penyimpanan record dilakukan berhubungan dengan program. Ini berarti bahwa
program tersebut tidak bebas terhadap perubahan database yang ada. Selanjutnya data
independence dapat dibadi menjadi dua bagian yakni :
- phisycal data independence
merupakan kebolehan untuk mengubah pola fisik database untuk peningkatan efisiensi
tanpa mengakibatkan suatu program aplikasi ditulis kembali
- logical data independence
modifikasi ini dilakukan saat struktur logika database berubah, ditambah atau dikurangi. Ini
artinya pemakai boleh mengubah pola konseptual tanpa mengakibatkan suatu aplikasi
program ditulis kembali.
Isolasi Data
disebabkan oleh pemakaian beberapa file basis data. Program aplikasi yang digunakan tidak
dapat mengakses file tertentu dalam sistem basis data tersebut kecuali bila program aplikasi
dirubah/ditambah sehingga seolah-olah ada file yang terpisah/terisolasi terhadap file yang lain.
Multi-User Support
Suatu sistem basis data harus mempu memberikan dukungan kepada pemakaian program
untuk banyak pengguna. Hal ini bisa di pahami karena salah satu alasan basis data dibangun
adalah bahwa nantinya data tersebut digunakan oleh banyak orang, baik dalam waktu berbeda
maupun dalam waktu bersamaan sehingga kebutuhan akan basis data yang handal untuk multiuser perlu dipertimbangkan.

1.8 Hirarki Sistem Basisdata


Sistem basis data tersusun atas beberapa komponen data seperti tampak pada hirarki dibawah ini :

Sistem basis data


Basis data
File
Record
Agregat data
Data item
Byte
Bit

Gambar 1.1 Hirarki Sistem Basis Data


Keterangan :
1. Bit; suatu sistem angka biner yang terdiri atas dua macam nilai saja, yaitu 0 dan 1.
Sistem angka ini merupakan dasar yang dapat digunakan untuk komunikasi antara
manusia dan mesin (komputer) yang merupakan sekumpulan komponen elektronik dan
hanya dapat membedakan dua macam keadaan saja.
2. Byte; bagian terkecil yang dapat dialamatkan dalam memory. Byte juga merupakan
sekumpulan bit yang secara konvensional terdiri atas kombinasi delapan bit. Satu byte
digunakan untuk mengkodekan satu buah karakter dalam memory.
3. Field; sekumpulan byte-byte yang sejenis akan membentuk suatu field. Fielad
biasadisebut juga dengan atribut.
4. Data Item; sering juga disebut rinci data, field, medan atau data elemen adalah unit
terkecil yang disebut data. Data item merupakan sekumpulan byte/karakter yang
mempunyai makna.
5. Agregat Data; merupakan sekelompok rinci data yang mempunyai ciri tertentu dan
mempunyai nama.
6. Record; disebut pula sebagai tuple atau rekaman, yang merupakan sekumpulan data
item atau agregat data yang saling berhubungan dengan suatu objek tertentu.
7. File; adalah sekumpulan record sejenis yang terelasi (terhubung). Dalam file sederhana
masing-masing record mempunyai jumlah rinci data yang sama. Tetapi file yang lebih
kompleks mungkin mempunyai variasi jumlah rinci data yang berbeda-beda pada tiap
recordnya.
8. Basis data; disebut pula sebagai koleksi data atau pustaka data atau library, adalah
sekumpulan dari berbagai macam tipe record yang mempunyai hubungan antar record,
agregat data dan rinci data terhadap suatu objek tertentu.
9. Sistem basis data; adalah sekumpulan basis data dalam suatu sistem yang mungkin tidak
berhubungan satu sama lain, namun secara umum mempunyai hubungan sistem. Secara
sederhana, sistem basis data tersusun atas banyak file.

1.9 Abstraksi Data


Salah satu tujuan Database Management System adalah untuk menyediakan fasilitas/antar muka
(interface) dalam melihat/menikmati data (yang lebih ramah/user oriented) kepada para pemakai.
Untuk itu, sistem tersebut akan menyembunyikan detail tentang bagaimana data disimpan dan
dipelihara. Karena itu seringkali data yang terlihat oleh pemakai sebenarnya berbeda dengan yang
disimpan secara fisik. Abstarksi data merupakan tingkat/level dalam bagaimana melihat data dalam
sebuah sistem basis data.
Ada 3 level abstarksi data :
1. Level Fisik (Physical Level)
Merupakan level terendah dalam abstraksi data yang menunjukkan bagaimana
sesungguhnya suatu data disimpan. Pada level ini, pemakai melihat data sebagai
gabungan dari struktur dan datanya sendiri. Pemakai juga berkompeten dalam
mengetahui bagaimana representasi fisik dari penyimpanan/pengorganisasian data. Pada
level ini data dapat berupa teks, angka atau bahkan sebagai himpunan bit data.
2. Level Lojik/Konseptual (Conceptual Level)
Merupakan level yang lebih tinggi dari level fisik dan menggambarkan data apa yang
sebenarnya (secara fungsional) disimpan dalam basis data dan hubungannya dengan
data yang lain.
3. Level Penampakan (View Level)
Merupakan level yang paling tinggi, dimana user hanya mengetahui struktur data yang
sederhana, yang berorientasi pada kebutuhan user. Data yang dikenal oleh masingmasing pengguna bisa berbeda-beda dan hanya mencakup sebagian dari basis data.
View 1

View 2

View 3

Level Konseptual

Level Fisik

Gambar 1.2 Level Abstarksi Data


1.10 Operasi Dasar Basis Data
Operasi-operasi dasar yang dapat dilakukan berkenaan dengan basis data, meliputi :
1. Pembuatan basis data baru (create database); identik dengan pembuatan lemari arsip
yang baru.
2. Penghapusan basis data (drop database); identik dengan perusakan terhadap lemari
arsip (sekaligus isinya, jika ada).
3. Pembuatan file/tabel baru kesuatu basis data (create table); identik dengan penambahan
map arsip baru kesebuah arsip yang sudah ada.
4. Penghapusan tabel/file dari suatu basis data (drop tabel); identik dengan perusakan map
arsip lama yang ada dilemari arsip.
5. Penambahan/pengisian data baru kesebuah file/tabel disebuah basis data (insert); identik
dengan penambahan lembaran arsip kesebuah map baru.
6. Pengambilan data dari sebuah tabel/file (retrieve/search); identik dengan pencarian
lembaran arsip kesebuah map arsip.

7. Pengubahan data dari sebuah tabel/file (update); identik dengan perbaikan isi lembaran
arsip yang ada disebuah map arsip.
8. Penghapusan data dari sebuah file/tabel (delete); identik dengan penghapusan sebuah
lembaran arsip yang ada disebuah map arsip.
1.11 Objektif Basis Data
Tujuan pemanfaatan basis data :
1. Kecepatan dan kemudahan; memungkinkan user untuk menyimpan atau melakukan
perubahan/ manipulasi terhadap data atau menampilkan kembali data tersebut dengan
lebih cepat dibandingkan dengan cara manual.
2. Efisiensi ruang penyimpanan; terjadinya efisiensi dan optimalisasi penggunaan ruang
penyimpanan dengan cara melakukan penekanan terhadap jumlah redudansi data, baik
dengan menerapkan sejumlah pengkodean ataupun dengan membuat relasi-relasi
(dalam bentuk file) antar kelompok data yang saling berhubungan.
3. Keakuratan; dapat dilakukan dengan memanfaatan pengkodean atau pembentukan relasi
antar data bersama dengan penerapan aturan/batasan (constraint) tipe data, domain
data, keunikan data dan sebagainya secara ketat.
4. Ketersediaan; tersedianya data bagi user yang menginginkan data berdasarkan
kebutuhannya masing-masing.
5. Kelengkapan; mampu melakukan penambahan data ataupun perubahan struktur data,
mendefinisikan objek-objek dalam basis data serta detail dari tiap objek.
6. Keamanan; menjaga data dari operasi-operasi yang dilakukan oleh user yang tidak
berkepentingan.
7. Kebersamaan pemakaian; data dapat dipakai secara bersama-sama (multiuser) dari
berbagai lokasi dan aplikasi.
1.12 Penerapan Basis data
Secara teknis/nyata, bidang-bidang fungsional yang telah umum memanfaatkan basis data
demiefisiensi, akurasi dan kecepatan operasi antara lain adalah :
1. Kepegawaian, untuk berbagai perusahaan yang memiliki banyak pegawai.
2. Pergudangan (inventory), untuk perusahaan manufaktur (pabrikan), grosir, apotik dll.
3. Akuntansi, untuk berbagai perusahaan.
4. Reservasi, untuk hotel, pesawat, kereta api dll.
5. Layanan pelanggan, untuk perusahaan yang berhubungan dengan banyak pelanggan (bank,
konsultant, dll)
Sedangkan bentuk-bentuk organisasi/perusahaan yang telah memanfaatkan basis data (sebagai
komponen sistem informasi dalam organisasi/perusahaan dapat berupa :
1. Perbankan; dapat melakukan pengelolaan data nasabah/data tabungan/data pinjaman,
pembuatan laporan-laporan akuntansi, pelayanan informasi pada nasabah/calon
nasabah, dll.
2. Asuransi; dalam melakukan pengelolaan data nasabah/data pembayaran premi,
pemrosesan pengajuan klaim asuransi, dll.
3. Rumah Sakit; dalam melakukan pengelolaan history penyakit/pengobatan pasien,
menangani pembayaran perawatan, dll.
4. Produsen Barang; dalam melakukan pengelolaan data keluar masuk barang (inventory),
dll.
5. Industri Manufaktur; dalam membantu pengelolaan pemesanan barang, mengelola data
karyawan, dll.
6. Pendidikan/Sekolah; dalam melakukan pengelolaan data siswa, penjadwalan kegiatan
perkuliahan, dll.

7. Telekomunikasi; dalam melakukan pengelolaan data administrasi kabel/data pelanggan,


menangani gangguan, dll
LATIHAN :
1. Sebutkan kekurangan sistem sistem pemrosesan berkas dibandingkan dengan sistem
pemrosesan Basis data!
2. Jelaskan pengertian Basis data!
3. Berikan contoh operasi-operasi yang dapat dilakukan oleh suatu sistem Basisi data!
4. Apa yang dimaksud dengan istilah-istilah dibawah ini?
a. Data Redudancy
b. Data Inconsistency
c. Data Terisolasi
5. Berikan penjelasan tentang peranan teknologi komunikasi data terhadap perkembangan
basis data!

DATABASE MANAGEMENT
SYSTEM (DBMS)

Suatu Database Management System (DBMS) berisi satu koleksi data yang saling berelasi dan satu
set program untuk mengakses data tersebut. Jadi DBMS terdiri dari Database dan Set Program
pengelola untuk menambah, menghapus, mengambil dan membaca data.
Database adalah kumpulan file-file yang saling berelasi, relasi tersebut ditunjukkan dengan kunci
dari tiap file yang ada. Satu database menunjukkan satu kumpulan data yang dipakai dalam satu
lingkup perusahaan/instansi.
Dalam satu file terdapat record-record sejenis, sama besar dan sama bentuk yang merupakan satu
kumpulan entity yang seragam. Satu record terdiri dari field-field yang saling berhubungan untuk
menunjukkan bahwa field tersebut dalam satu pengertian yang lengkap dan direkam dalam satu
record.
Untuk menyebut isi dari field maka digunakan atribut atau merupakan judul dari suatu kelompok
entity tertentu, misalnya atribut alamat menunjukkan entity alamat dari siswa. Entity adalah suatu
objek yang nyata dan dapat direkam.
2.1 Definisi Entity, Record/Tuple, File, Database, DBMS
1. Entity adalah orang, tempat, kejadian atau konsep yang informasinya direkam.
2. Record/Tuple adalah kumpulan elemen yang saling berkaitan menginformasikan tentang suatu
entity secara lengkap, dimana satu record mewakili satu data atau informasi tentang suatu
entity.
3. File adalah kumpulan record sejenis yang mempunyai panjang elemen data dan atribut yang
sama namun berbeda data value.
4. Database adalah kumpulan file yang tidak mempunyai kaitan antara satu file dengan file lainnya
sehingga membentuk satu bangunan data untuk menginformasikan suatu organisasi, instansi,
perusahan dan lainnya dalam batasan tertentu.
5. Database Management System (DBMS) adalah kumpulan file yang saling berkaitan bersama
dengan program untuk pengelolaannya

10

Database Rumah Sakit


Entity Pasien

Record/Tuple
Record/Tuple

Suami
Rino
Ryan

Entity Obat
Penicilin
Vitamin A
Tetracilin
Deparmin
Aspirin

Istri
Reny
Rani

Entity Dokter
Nama
Roni
Romi

Spesialis
Jantung
Kandungan

Relasi

Database Universitas
Siswa

- Program Aplikasi
- Query Language
- Menu-menu

No Induk
2288066
2100556

Data Entry

Nama
Reno
Rita

Retrieve
Mata Kuliah

Paket Program Aplikasi


Relasi

Kode
MT01
FS01
PS01
PS02

Nama Mata Kuliah


Matematika 1
Fisika
Pancasila
Falsafah Pancasila

Gambar 2.1 Gambaran DBMS


2.2 Keunggulan DBMS dengan Basis data Berbasis Kertas.
Dibandingkan dengan sistem berbasis kertas, DBMS memilki 4 keunggulan:
1. Kepraktisan; sistem berbasis kertas akan menggunakan kertas yang sangat banyak untuk
menyimpan informasi, sedangkan DBMS menggunakan media penyimpanan sekunder yang
berukuran kecil tetapi padat informasi.
2. Kecepatan; mesin dapat mengambil atau mengubah data jauh lebih cepat dibandingkan
manusia.
3. Mengurangi kejemuan; orang cenderung menjadi bosan kalau melakukan tindakan-tindakan
yang berulang yang menggunakan tangan (misalnya harus mengganti suatu informasi).
4. Kekinian; informasi yang tersedia pada DBMS akan bersifat mutakhir dan akurat setiap saat.

11

2.3 Komponen DBMS


Dalam sebuah basis data secara lengkap akan terdapat komponen-komponen utama sebagai
berikut:
1. Perangkat Keras (Hardware); antara lain komputer (baik yang stand-alone ataupun untuk
sistem jaringan, memory sekunder on-line (harddisk), memory sekunder off-line (tape atau
removeable disk) untuk backup data dan media perangkat komunikasi (untuk sistem
jaringan).
2. Sistem Operasi (Operating System); Windows, Linux, dll.
3. Basisdata (Database)
4. Sistem (Aplikasi/Perangkat Lunak) Pengelola Basis Data (DBMS); Dbase IV, FoxBase,
Borland-Paradox, MS-Access, MySQL, Oracle, dll.
5. Pemakai (User); dibedakan atas cara interaksinya terhadap sistem adalah :
a. Programmer Aplikasi; pemakai yang berinteraksi dengan basis data melalui Data
Manipulation Languange (DML), yang disertakan dalam program yang ditulis dalam
bahasa pemrograman induk (seperti Pascal, Cobol, dll).
b. User Mahir (Casual User); pemakai yang berinteraksi dengan sistem tanpa menulis
modul program. Mereka menyatakan query (untuk akses data) dengan bahasa query
yang telah disediakan oleh suatu DBMS.
c. User Umum (End User/Naive User); pemakai yang berinteraksi dengan sistem data
melalui pemanggilan suatu program aplikasi permanen (executable program) yang
telah ditulis/disediakan sebelumnya.
d. User Khusus (Specialized User); pemakai yang menulis aplikasi basis data non
konvensional, tetapi untuk keperluan-keperluan khusus, seperti untuk aplikasi Artificial
Intelligent, Sistem Pakar, Pengolahan Citra dan lain-lain yang bisa mengakase basis
data dengan/tanpa DBMS yang bersangkutan.
6. Aplikasi (perangkat lunak lain, yang bersifat opsional)
Basisdata

File 1
File 1
File 1

Database Management System


(DBMS)
Gambar 2.2 Sistem Basis Data
2.4 Model Basisdata
Model basis data menyatakan hubungan antar rekaman yang tersimpan dalam basis data. Terdapat
3 model dasar yang biasa digunakan :
1. Model Hirarkis, biasa juga disebut model pohon karena menyerupai pohon yang dibalik.
Model ini menggunakan pola hubungan orang tua anak. Setiap simpul (biasanya dinyatakan
dalam dengan lingkaran atau kotak) menyatakan sekumpulan medan. Simpul yang
terhubung kesimpul pada level dibawahnya disebut orang tua. Setiap orang tua bisa memilki
satu (hubungan 1:1) atau beberapa anak (hubungan 1:N), tetapi tiap anak hanya memilki
satu orang tua. Simpul-simpul yang dibawahi oleh simpul orang tua disebut anak. Simpul
orang tua yang tidak memilki orang tua disebut akar. Sedangkan simpul yang tidak memilki
12

Level 1

anak disebut daun. Adapun hubungan antara anak dan orang tua disebut cabang. Gambar
dibawah ini memperlihatkan contoh model hirarkis tersebut.
A

Level 2

Level 3

Level 4

Gambar 2.3 Contoh Model Hirarkies

Contoh yang lebih kongkret terlihat pada gambar dibawah ini. Gambar ini memperlihatkan
hubungan dosen dan kelas yang diampu, serta mahasiswa yang mengikuti kelas masingmasing.
Fauzan Azima

Sistem Basis Data

Faza

Fany

Faris Ramadan

Pemrograman I

Fira

Sistem Berkas

Fina

Feri

Ferdi

Gambar 2.4 Contoh Model Hirarkis


2. Model Jaringan; disebut juga model DBTG (Database Task Group) atau CODASYL
(Conference on Data System Languages). Model ini menyerupai model hirarkis,
perbedaannya terletak pada model ini satu anak bisa memiliki lebih dari satu orang tua. Oleh
karena sifatnya yang demikian model ini bisa menyatakan hubungan 1:1 (satu orang tua
mempunyai satu anak), 1:N (satu orang tua memilki banyak anak) maupun N:M (beberapa
anak memilki beberapa orang tua). Pada model jaringan ini, orang tua disebut pemilik
sedangkan anak disebut anggota.
Level 1
A
Level 2
Level 3

Gambar 2.5 Model Jaringan

13

Gambar dibawah ini merupakan model jaringan yang didasarkan oleh model hirarkis pada
gambar model jaringan diatas.
Faris Ramadan

Fauzan Azima

Sistem Basis Data

Faza

Fany

Pemrograman I

Fira

Feri

Sistem Berkas

Fina

Ferdi

Gambar 2.6 Contoh Model Jaringan


3. Model Relasional; merupakan model yang paling sederhana sehingga mudah digunakan
dan dipahami oleh user, serta merupakan yang paling populer saat ini. Model ini
menggunakan sekumpulan tabel berdimensi 2 (yang disebut relasi), dengan masing-masing
relasi tersusun atas tupel atau baris dan atribut. Relasi dirancang sedemikian rupa sehingga
dapat menghilangkan kemubaziran data dan menggunakan kunci tamu untuk berhubungan
dengan relasi lain. Model ini juga biasa disebut RDBMS (Relational Database Management
System).
Tabel dibawah ini merupakan bentuk relasional berdasarkan contoh model hirarkis dan
jaringan didepan :
Tabel 2. 1 Dosen_Matakuliah_Mahasiswa
NAMA DOSEN MATAKULIAH
MAHASISWA
Fauzan Azima
Sistem Basis Data Faza
Fauzan Azima
Sistem Basis Data Fany
Fauzan Azima
Sistem Basis Data Fira
Fauzan Azima
Pemrograman I
Fira
Fauzan Azima
Pemrograman I
Feri
Faris Ramadan Sistem Berkas
Feri
Faris Ramadan Sistem Berkas
Fina
Faris Ramadan Sistem Berkas
Ferdi
2.5 Macam-macam Perintah DBMS
DBMS merupakan perintah bagi pemakai dengan basis data dalam disk. Cara
berinteraksi/berkomunikasi antar pemakai dengan basis data diatur dalam suatu bahasa khusus.
Bahasa tersebut dapat disebut sebagai Bahasa Basis Data yang terdiri atas sejumlah perintah
(statement) yang diformulasikan dan dapat diberikan user dan dikenali/diproses oleh DBMS untuk
melakukan suatu aksi atau pekerjaan tertentu.
Sebuah Bahasa Basis Data biasanya dapat dipisah kedalam 2 bentuk yaitu :
1. Data Definition Language/DDL.
Merupakan struktur/skema basis data yang menggambarkan/mewakili desain basis data
secara keseluruhan dispesifikasikan dengan bahasa khusus yang disebut Data Definition
Language (DDL). Dengan bahasa ini user dapat membuat tabel baru, membuat indeks,
mengubah tabel, menentukan struktur penyimpanan tabel dan sebagainya . Hasil dari
kompilasi perintah DDL adalah kumpulan tabel yang disimpan dalam file khusus yang disebut
Data Dictionary (kamus data). Kamus data merupakan suatu superdata yaitu data yang
mendeskripsikan data sesungguhnya. Kamus data ini akan selalu diakses dalam suatu
operasi basis data sebelum suatu file data yang sesungguhnya diakses.

14

2. Data Manipulation Languange/DML.


Merupakan bentuk Bahasa Basis Data yang berguna untuk melakukan manipulasi dan
pengambilan data pada suatu basis data. Manipulasi data dapat berupa penambahan,
penghapusan dan pengubahan data. Terdapat 2 jenis DML :
- Prosedural, yang mensyaratkan agar pengguna menentukan, data apa yang diinginkan
serta bagaimana cara mendapatkannya.
- Nonprosedural, yang membuat pemakai dapat menentukan data apa yang diinginkan
tanpa menyebutkan bagaimana cara mendapatkannya.
2.6 Struktur Sistem Keseluruhan
Sebuah sistem pengelola basis data (DBMS) terbagi atas modul-modul yang masing-masing
memiliki tanggung jawab dalam membentuk struktur sistem keseluruhan. Beberapa fungsi dalam
sistem pengelola basis data mungkin telah disediakan oleh sistem operasi, tetapi dalam banyak hal
sistem operasi hanya menyediakan servis-servis dasar. Kelengkapan fungsi/modul antara DBMS
yang satu dengan yang lainnya bisa berbeda, baik dari sisi kualitas maupun kuantitasnya. DBMS
sederhana seperti dBaseIII+ atau MS-Access misalnya, tidak/kurang mengakomodasi pemakaian
basis data oleh banyak pemakai. Tetapi dengan DBMS semacam ORACLE atau MySQL Server hal
itu telah terakomodasi dengan baik.
Sebuah sistem pengelola basis data (DBMS) umumnya memiliki sejumlah komponen fungsional
(modul) seperti :
File Manager, yang mengelola alokasi ruang dalam disk dan struktur data yang dipakai
untuk merepresentasikan informasi yang tersimpan dalam disk. Sebenarnya sistem operasi
(tempat dimana DBMS diaktifkan) juga memiliki modul File Manager. Tetapi File Manager di
DBMS lebih difokuskan pada efisiensi dan efektifitas penyimpanan.
Database Manager, yang menyediakan interface antara dua low-level yang ada di basis
data dengan program aplikasi dan query yang diberikan ke sistem.
Query Processor, yang menterjemahkan perintah-perintah query language ke perintah lowlevel yang dapat dimengerti oleh database manager. Disamping itu query processor juga
akan mentransformasikan permintaan user kedalam bentuk yang lebih efisien sehingga
query menjadi lebih efektif.
DML Precompiler, yang mengkonfersi perintah DML yang ditambahkan dalam sebuah
program aplikasi ke pemanggilan prosedur normal dalam bahasa induk. Precompiler ini
akan berinteraksi dengan query processor.
DDL Compiler, yang mengkonversi perintah-perintah DDL kedalam sekumpulan tabel yang
mengandung metadata. Tabel-tabel kemudian disimpan dalam kamus data.
Berikut ini adalah skema yang menunjukkan keterhubungan antara komponen/modul dalam DBMS
dan juga hubungannya dengan para pemakai basis datanya sendiri.

15

Berikut ini adalah skema yang menunjukkan keterhubungan antara komponen/modul dalam DBMS
dan juga hubungannya dengan para pemakai basis datanya sendiri.

Naive
User

Program
Aplikasi

Object Code
Program Aplikasi

Programmer
Aplikasi

Casual
User

Database
Administrator

System
Call

Query

Skema
Database

DML
Precompiler

Query
Processor

DDL
Compiler

Database
Manager

DBMS

File
Manager

Data
Files

Data
Dictionary
Disk Storage

Gambar 2.7 Struktur Sistem Database Keseluruhan


LATIHAN :
1. Apa yang dimaksud dengan istilah-istilah dibawah ini:
a. Tuple
b. Atribut
c. Derajat
d. Cardinal
2. Apakah yang dimaksud dengan DBMS?
3. Sebutkan 4 komponen utama DBMS!
4. Apa perbedaan antara User Mahir dan User Umum?
5. Berikan contoh tabel yang menggunakan model hirarkies, jaringan dan relasional!

16

PERANCANGAN BASIS DATA

3.1 Proses Perancangan Basisdata


Proses perancangan basis data, terlepas dari masalah yang ditangani, dibagi menjadi 3 tahapan:
1. Perancangan basis data secara konseptual; merupakan upaya untuk membuat model yang
masih bersifat konsep.
2. Perancangan basis data secara logis; merupakan tahapan untuk memetakan model
konseptual kemodel basis data yang akan dipakai (model hirarkis, jaringan ataupun
relasional).
3. Perancangan basis data secara fisik; merupakan tahapan untuk menuangkan perancangan
basis data yang bersifat logis menjadi basis data fisik yang tersimpan pada media
penyimpanan eksternal yang spesifik terhadap DBMS yang dipakai.
Alasan perancangan basisa data :
Sistem basis data telah menjadi bagian dalam sistem informasi suatu organisasi
Kebutuhan menyimpan data dl jumlah besar semakin mendesak
Fungsi-fungsi dalam organisasi semakin dikomputerisasikan
Semakin kompleks data & aplikasi yg digunakan, maka relationship antar data harus
dimodelisasikan
Dibutuhkannya kemandirian data
3.2 Pengembangan Basis data
3.2.1 Tujuan Pengembangan Basis data
Tujuan pengembangan sistem basis data berhubungan erat dengan masalah-masalah yang timbul
dalam file basis data. Karenanya pada bagian ini akan membahas tujuan dan masalah
pengembangan sistem basis data secara bersama-sama. Adapun tujuan sistem basis data meliputi
penyediaan sarana akses yang fleksibel, pemeliharaan integritas data, proteksi data dari kerusakan
dan penggunaan yang tidak legal, penyediaan sarana untuk penggunaan bersama (share) dan
keterhubungan (relate) data, pengurangan/minimalisasi kerangkapan (redundancy) data,
menghilangkan ketergantungan (independence) data pada program-program aplikasi,
menstandarkan definisi-definisi rinci data (data item) dan meningkatkan produktivitas personal
sistem informasi.
1. Fleksibilitas Data (Data Flexibility)
Fleksibilitas data dimaksudkan untuk memberikan kemudahan dalam menampilkan kembali
data-data yang dipilih dan diperlukan dalam basis data dan merepresentasikannya dalam
format-format yang berbeda.
Fleksibilitas akses merupakan salah satu dari beberapa aspek penting yang harus dimiliki sistem
manajemen basis data agar selalu tersedia data untuk berbagai macam kebutuhan. Untuk itu
diperlukan suatu antar muka (interface) untuk memungkinkan terjadinya komunikasi antar
pemakai sistem dan sistem tersebut. Antar muka harus didesain dalam bentuk yang sederhana
dan jelas sehingga memudahkan user (khususnya yang awam) terhadap program komputer
mampu berinteraksi dan menggunakan sistem tersebut dengan mudah.
Teknik yang umum diterapkan adalah dengan menggunakan menu-menu (interaksi pasif) atau
memberikan jawaban atas pertanyaan aktif (interaksi aktif) yang ditampilkan pada layar
penampil (display), dengan cara mengisi bagian-bagian yang masih kosong untuk mengarahkan
pemakai awam agar dapat memenembus sistem. Kadang-kadang diperlukan juga fasilitas yang

17

2.

3.

4.

5.

6.

berupa keterangan-keterangan bantuan yang disediakan secara on-line untuk memberikan


penjelasan yang lebih komplit dalam penggunaan sistem.
Integritas Data (Data Integrity)
Integritas data dimaksudkan sebagai sarana untuk selalu meyakinkan bahwa nilai-nilai data
dalam sistem basis data adalah benar, konsisten dan selalu tersedia (current). Hal ini
merupakan aspek kritis dalam manajemen informasi. Salah satu cara yang terbaik untuk
meyakinkan integritas data adalah meyakinkan bahwa nilai-nilai data adalah benar sejak masuk
pertama kali. Hal ini dapat ditempuh dengan beberapa metode, seperti misalnya dengan
mngeset secara seksama prosedur penangkapan data (data capture) yang dilakukan secara
manual, atau dengan membuat program suatu sistem unutk mengecek kebenaran/keabsahan
nilai data pada saat dimasukkan kedalam mesin (data entry).
Keamanan Data (Data Security)
Kemanan data diperlukan untuk melindungi data terhadap akses yang tidak legal oleh pihakpihak yang tidak berwenang, yang bermaksud merugikan atau bahkan merusak data dalam
sistem basis data, atau dari kerusakan. Kerusakan data merupakan aspek kritis lain dalam
sistem basis data. Keamanan data juga diperlukan untuk melindungi data dari kerusakankerusakan yang terjadi akibat kebakaran, banjir, badai, huru-hara dan lain-lain. Recovery
merupakan proses penggunaan data cadangan untuk memenciptakan/menyusun kembali basis
data yang mengalami kerusakan. Fasilitas-fasilitas keamana data yang lazim digunkan adalah
password untuk individu-individu pemakai yang hanya diizinkan mengakses basis data dalam
tipt-tipe akses yang berbeda (misalnya, hanya untuk membaca, atau untuk membaca dan
menulis), dan password untuk basis data, record data dan bahkan suatu rinci data.
Independensi Data (Data Independence)
Independensi data dimaksudkan sebagai ketidaktergantungan data, yang dalam hal ini
mempunyai dua dimensi, yaitu dimensi logik (logical data independence) dan dimensi fisik
(phisycal data independence).
Independensi data secara fisik pada dasarnya adalah bahwa deskripsi data logik data, atau lebih
dikenal sebagai schema, tidak mengalami ketergantungan pada perubahan-perubahan yang
terjadi dalam teknik penyimpanan secara fisik. Artinya, bahwa cara-cara penyimpanan dan
pengaksesan data dalam sistem basis data dapat diubah tanpa membutuhkan perubahan dalam
schema logik. Sedangkan yang dimaksud dengan independensi data secara logik adalah bahwa
perubahan-perubahan kebutuhan user terhadap data dapat berubah, tetapi hal ini tidak
mengakibtkan perubahan atau dampak pada pandangan user terhadap basis data atau skema
logiknya.
Independensi data merupakan sasaran utama sistem manajemen basis data. Memisahkan filefile data dari program-program aplikasi adalah penting jika data akan dikelola sebagai sumber
daya yang independen.
Mengurangi/Minimalisasi kerangkapan data (Reduse Data Redudancy)
Sasaran lain dari sistem manajemen basis data adalah meminimalkan kerangkapan data. Hal ini
diperlukan karena kerangkapan data menyebabkan timbulnya beberapa masalah didalam
proses pengaksesan data. Kerangkapan data akan mengakibatkan penggunaan media
penyimpanan (storage) secara sia-sia, waktu akses yang lebih lama dan akan menimbulkan
masalah dalam integritas data. Namun demikian, dalam beberapa kasus, kerangkapan data
mungkin tidak dapat dihindarkan lagi. Jika demikian, maka yang harus dilakukan adalah
meminimalkan kerangkapan data tersebut.
Sharebilitas Data (Data Sharebility)
Yang dimaksud dengan sharebilitas data adalah bahwa sistem basis data yang dikembangkan
harus dapat digunakan oleh pemakai-pemakai yang berbeda atau grup-grup pemakai yang
berbeda dapat menggunakan data yang sama dalam basis data. Hal ini penting karena data

18

dalam basis data akan digunakan oleh beberapa pihak yang berbeda yang berkepentingan
terhadap data tersebut.
7. Relatabilitas Data (Data Relatability)
Yang dimaksud dengan relatabilitas data adalah kemampuan untuk menetapkan hubungan logik
antara tipe-tipe record yang berbeda (yang biasanya berbeda) dalam file-file yang berbeda.
Relatabilitas data merupakan hal yang penting karena sebagian besar informasi yang diperlukan
akan disusun dari berbagai macam file dalam sistem basis data yang masing-masing file
mempunyai tipe record yang berbeda-beda.
8. Standarisasi Data (Data Standardization)
Standarisasi data menunjukkan definisi-definisi rinci data dalam batas presisi yang digunakan
pada definisi nama rinci data dan format penyimpanan dalam basis data. Sebagian besar sistem
manajemen basis data memeberikan fasilitas kamus data (data dictionary) untuk mendefinisikan
nama-nama rinci data dan format dalam penyimpanannya.
9. Produktivitas Personal (Personnel Productivity)
Produktivitas personal menunjukkan bahwa sistem manajemen basis data diharapkan mampu
meningkatkan produktifitas kerja setiap personal dalam beberapa hal. Kebutuhan data yang
sederhana dapat segera dipenuhi dengan menggunakan suatu bahasa query yang dapat
dioperasikan secara interaktif. Dalam beberapa kasus, pemakai dapat memenuhi sendiri
kebutuhan datanya dengan menggunakan fasilitas query yang disediakan bagi mereka. Bahkan
jika diperlukan maka laporan-laporan yang lebih akurat pun dapat diprogram dengan
menggunakan suatu report generator. Hal ini akan mengakibatkan penggunaan waktu yang jauh
lebih sedikit daripada pembuatan laporan dengan menggunakan suatu bahasa konvensional.
Atau pemakai juga akan mampu membuat sendiri laporan yang diperlukannya. Seandainya
aplikasi-aplikasi baru ditambahkan pada sistem, data yang dibutuhkan aplikasi-aplikasi itu telah
tersedia dalam basis data, sehingga dapat dipenuhi dengan cepat.
3.2.2 Langkah-langkah Pengembangan Sistem Basis data
Proyek pengembangan basis data bukan hanya sekadar menyusun file-file yang diperlukan untuk
disimpan sebagai basis data, tetapi termasuk juga didalamnya mengatur bagaimana agar basis data
tersebut dapat dimanfaatkan secara optimal oleh pemakai untuk memenuhi kebutuhan datanya.
Jadi, proyek pengembangan sistem basis data meliputi pengembangan file basis data, perangkat
lunak (software), perangkat keras (hardware) dan menyimpan personal-personal yang akan terlibat
dalam penggunaan sistem basis data agar dapat memanfaatkannya dengan baik dan benar.
Adapun tahapan-tahapan utama dalam proyek pengembangan sistem basis data terdiri dari empat
tahap, yaitu : spesifikasi kebutuhan, evaluasi alternatif, desain dan implementasi.
Keempat tahapan utama tersebut akan dibahas secara lebih terperinci dalam uraian-uraian
selanjutnya. Tahapan-tahapan utama dalam suatu proyek pengembangan sistem basis data
ditunjukkan pada gambar 3.1.

19

1. Spesifikasi Kebutuhan
a. Definisi masalah dan studi kelayakan
b. Rinci spesifikasi
2. Evaluasi Alternatif
a. Indikasi alternatif
b. Seleksi alternatif
3. Desain
a. Spesifikasi dan pengorderan perangkat keras
b. Desain logik program
c. Desain struktur data (skema dan subskema)
d. Desain prosedur untuk pemakai dan operator
e. Definisi struktur organisasi pemakai
4. Implementasi
a. Install dan tes perangkat keras
b. Koding dan tes unit-unit program
c. Konversi data
d. Pembuatan dokumen prosedur
e. Pelatihan pemakai
f. Tes menyeluruh
Gambar 3.1 Tahapan-tahapan utama proyek pengembangan sistem basis data
Tahap pertama proyek pengembangan sistem basis data adalah menentukan spesifikasi kebutuhan
pemakai. Proses yang terjadi meliputi definisi masalah, studi kelayakan penggunaan komputer
sebagai dasar pemecahan masalah dan memberikan definisi secara rinci terhadap spesifikasi
kebutuhan pemakai. Jadi inti dari tahapan spesifikasi kebutuhan adalah menentukan keinginan
pemakai tentang apa yang akan dan harus dilakukan oleh sistem yang akan dikembangkan.
Pada tahap kedua, alternatif-alternatif pemecahan kebutuhan pemakai ditentukan, satu persatu
dievaluasi dan sekaligus diseleksi untuk menemukan alternatif pemecahan yang terbaik.
Setelah solusi alternatif dievaluasi, proyek dilanjutkan dengan tahap desain. Dalam tahap ini
ditentukan spesifikasi-spesifikasi perangkat keras yang diperlukan dan kemudian dilakukan
pengorderan, program-program didesain (atau diorder dari vendor), serta merancang dan
mengembangkan struktur basis data. Prosedur-prosedur untuk operasi dan personel pemakai juga
didesain. Tahapan ketiga ini diakhiri dengan mendefinisikan struktur organisasi pemakai dan
fungsik-fungsi kerja sehubungan dengan keperluan pengembangan sistem baru. Tahap desain ini
akan melibatkan komponen-komponen sebagaimana terlihat pada gambar dibawah ini :

20

Model Data Logis

Entitas

Atribut

Kunci Kandidat

Kunci Primer

Hubungan

Integritas Referensial

Kunci Asing

Kunci Alternatif

Nama

Kekangan

Penambahan

Tipe

Peremajaan

Format

Domain

Penghapusan

Panjang

Nilai

Gambar 3.2 Komponen-komponen pada perancangan basis data secara konseptual


Penjelasan mengenai beberapa komponen diatas adalh sebagai berikut :
- Hubungan; adalah asosiasi atau kaitan antar 2 entitas. Misalnya, antara Dosen PA dengan
Mahasiswa terdapat hubungan berupa Bimbingan.
- Kekangan; digunakan untuk melindungi integritas antar data (misalnya kesalahan pada saat
pengisian data)
- Integritas Referensial; adalah aturan-aturan yang mengatur hubungan antara kunci primer
dengan kunci tamu milik tabel-tabel yang berada dalam satu basis data relasional untuk
menjaga konsistensi data
- Domain; adalah himpunan nilai yang berlaku bagi suatu atribut. Kekangan domain
mendefinisikan nama, tipe, format, panjang dan nilai masing-masing item data. Misalnya Nama
Mahasiswa, dengan type Char dan panjang 25.
- Kunci Kandidat (Candidate Key); adalah kunci yang secara unik (tidak mungkin kembar) dapat
dipakai untuk mengidentifikasikan suatu baris didalam tabel
- Kunci Asing/Tamu (Foreign Key); adalah sembarang atribut yang menunjuk ke kunci primer
pada tabel lain
- Kunci Primer (Primary Key); adalah kunci yang dipilih sebagi kunci utama untuk
mengidentifikasikan baris dalam tabel.
- Kunci Altrnatif (Alternate Key); adalah semua kunci kandidat yang tidak bertindak sebagi kunci
primer.
Penjelasan lengkap mengenai jenis kunci dalam pengelolaan data akan dijelaskan pada BAB
selanjutnya
Setelah desain dilakukan dengan lengkap, proyek dilanjutkan Dengan tahapan implementasi.
Tahapan ini meliputi install dan pengetesan perangkat keras, koding dan tes unit-unit program,
mengkompile definisi struktur basis data, mengkonversi data, mendokumentasikan prosedur, dan
melatih personal. Pada akhirnya jika semua sudah siap maka sistem yang baru dikembangkan
tersebut diujicobakan secara menyeluruh dan aktivitas-aktivitas pemakai dan operasi-operasi
dikonversi ke sistem yang baru.

21

Hal yang cukup penting dalam proyek pengembangan sistem basis data adalah bahwa personalpersonal yang tergabung dalam tim pengembangan tersebut harus terbebas dari solusi masalah
yang bias. Masing-msing harus mengerti akan tugas-tugasnya secara jelas. Oleh karenanya
diperlukan suatu sistem yang terbaik yang dijumpai dalam tahapan evaluasi alternatif sesuai dengan
kebutuhan pemakai yang telah didefinisikan pada tahap awal proyek pengembangan sistem basis
data.
3.3 Beberapa alat bantu dan metode dalam pengembangan sistem basis data
Agar usaha pengembangan sistem basis data dapat berhasil dengan baik, maka diperlukan
beberapa alat bantu dan metode. Yang dimaksud dengan alat bantu disini adalah berupa teknik
yang dapat digunakan untuk mempermudah atau mendukung kelancaran pelaksanaan kegiatan
proyek tersebut.
Pada tahap awal proyek diperlukan suatau statement yang dapat meyakinkan manajemen
organisasi bahwa proyek pengembangan sistem basis data tersebut layak untuk dilakukan. Studi
kelayakan perlu dilakukan untuk kepentingan ini, dana dapat dilakukan setelah mengetahui
spesifikasi kebutuhannya. Dalam laporan hasil studi kelayakan tersebut juga dicantumkan beberapa
analisis yang meliputi :
1.
Analisis Ekonomi
Proyek pengembangan basis data perlu dianalisis kelayakannya dari segi ekonomi, karena
manajemen akan menolak jika proyek tersebut tidak menghasilkan keuntungan secara
ekonomi, sekalipun keuntungan tersebut baru akan dirasakan setelah jangka waktu yang
lama.
2.
Analisis Hukum
Dari segi hukum masalah yang biasanya timbul antara lain misalnya; mungkin sistem yang
baru memerlukan peralatan yang yang harus didatangkan dari luar negri, atau peralatan
khusus atau aturan-aturan yang menyangkut kepentingan umum, sehingga perlu dinyatakan
bahwa pengembangan sistem basis data tersebut layak dari segi hukum.
3.
Analisis Teknik
Analisis teknik berguna untuk menjelaskan ketersediaan berbagai komponen teknis yang
diperlukan selama proyek pengembangan sistem basis data serta statement penegasan
tentang kelayakan proyek pengembangan basis data itu sendiri.
4.
Analisis Operasional
Analisis ini dimaksudkan untuk menjelaskan bahawa sistem yang baru adalah layak
dioperasikan pada kondisi lingkungan organisasi yang ada saat ini, atau perlu usaha-usaha
lain untuk mengubah desain sistem atau kondisi lingkungan organisasi, sehingga sistem basis
data yang dibangun layak dioperasikan (operational feasibility)
5.
Analisis jadwal
Analisis ini diperlukan untuk menjelaskan kelayakan jadwal pelaksaan proyek. Ini berarti
bahwa desain sistem harus dapat dioperasikan dalam batasan-batasan waktu yang tersedia
atau yang ditentukan. Jika tidak, maka desain sistem atau batasan waktu yang tersedia harus
diubah.
Selain itu terdapat pula analisis biaya manfaat yang dapat digunakan untuk membandingkan antara
besarnya manfaat yang diperoleh dengan biaya yang dikeluarkan sehingga akan diperoleh suatu
nilai yang disebut sebagai rasio manfaat tahap biaya (Benefit to Cost Ratio atau BCR) dari setiap
alternatif pemecahan. Dengan demikain akan dapat digunakan untuk menentukan alternatif
pemecahan masalah yang paling menguntungkan.

22

LATIHAN :
1. Jelaskan tahap-tahap perancangan Basis data
2. Apa yang dimasksud dengan integritas refferensial? Jelaskan tujuannya!
3. Jelaskan maksud dari istilah-istilah dibawah ini :
a. Entitas
b. Hubungan
c. Atribut
4. Apakah perbedaan antara Primary Key dan Alternate Key?
5. Diketahui suatu Tabel Hasil Ujian adalah sebagai berikut :
NIM
111213
111314
111223
111233
111323

Nama_Mahasiswa
Saiful
Samsul
Sarah
Samson
Santi

Mata_Ujian
Alpro
Basis data
Basis data
Alpro
Kalkulus

NIP
202020
303030
303030
202020
404040

Dosen
Indra
Intan
Intan
Indra
Imran

Nilai
A
B
C
C
A

a. Jika dibasisdatakan, tabel apa saja yang diperlukan, sebutkan pula nama-nama atribut
untuk masing-masing tabel !
b. Sebutkan kunci primer dari masing-masing tabel!

23

RELATIONAL DATABASE
MANAGEMENT SYSTEM (RDBMS)

Model data relasional menjelaskan tentang hubungan lojik antar data dalam basis data dengan cara
memvisualisasikannya dalam bentuk tabel-tabel 2 dimensi yang terdiri dari sejumlah baris dan kolom
yang menunjukkan atribut-atribut.
4.1 Karakteristik Dalam Relasi
Relasi dalam model basis data relasional mempunyai beberapa karakteristik sebagai berikut :
1. Semua entity/elemen data pada suatu baris dan kolom tertentu harus mempunyai nilai
tunggal (single value) atau suatu nilai yang tidak dapat dibagi lagi (atomic value), bukan
merupakan suatu larik atau grup pengulangan.
2. Semua entity/elemen data pada suatu kolom tertentu dalam relasi yang sama harus
mempunyai jenis yang sama.
3. Masing-masing kolom dalam suatu relasi mempunyai suatu nama yang unik.
4. Pada suatu relasi/hubungan yang sama tidak ada dua baris yang identik.
4.2 Terminologi Model Basis Data Relasional
Model basis data relasional mempunyai terminologi tersendiri dalam penggunaan istilah-istilah,
antara lain adalah seperti dibawah ini (adapun beberapa istilah telah dijelaskan pada bab-bab
sebelumnya) :
- Cardinality; banyaknya tuple atau record dalam sebuah hubungan.
- Derajat/degree; adalah banyaknya atribut/kolom dalam sebuah hubungan.
- Unary relation; adalah suatu relasi yang hanya mempunyai 1 atribut/kolom.
- Binary relation; adalah suatu relasi yang mempunyai 2 atribut/kolom.
- Ternary relation; adalah suatu relasi yang mempunyai 3 atribut/kolom.
Untuk lebih jelasnya, contoh model basis data relasional dapat dilihat dari tabel dibawah ini :
NIM
1012
2011
2205
2117

NAMA_MHS
Dian
Didi
Doni
Dani

Tabel 4.1 Biodata


ALAMAT
ASAL_SLTA
Jl. Mangga
SMUN 1
Jl. Sawo
SMUN 2
Jl. Rambutan
SMU Mandala
Jl. Pepaya
SMUN 3

TGL_LAHIR
16-04-1980
15-05-1982
05-06-0985
01-01-1981

Dalam relasi basis data Biodata diatas, record adalah suatu baris basis data dalam relasi/tabel,
misalnya record pertama dalam tabel tersebut adalah terdiri dari data-data sebagai berikut :
1012 | Dian | Jl. Mangga | SMUN 1 | 16-04-1980
Relasi dalam file Biodata mempunyai atribut NIM, No_Mhs, Alamat, Asal_SLTA dan Tgl_Lahir.
Relasi tersebut dapat dituliskan sebagai berikut :
Biodata : {NIM, Nama_MHS, Alamat, Asal_SLTA, Tgl_Lahir}

24

Sedangkan Domain, memberikan batasan nilai dan tipe dari atribut-atribut yang ada dalam suatu
relasi. Untuk contoh diatas dapat dituliskan sebagai berikut :
Domain_Biodata : char [8], char [20], char [30], char [20], date
Tipe dan batasan nilai dari masing-masing atribut yang diberikan diatas tidak mutlak, artinya dapat
diubah-ubah sesuai dengan kebutuhan perancang.
Untuk contoh relasi file Biodata diatas, semua atribut dapat menjadi candidate key, karena nilai
setiap atribut pada setiap record tidak sama. Jika salah satu atribut dipilih sebagai primary key,
atribut NIM misalnya, maka atribut-atribut yang lain disebut alternate key.
Contoh pembuatan tabel yang lebih rinci dapat dilihat pada tabel-tabel dibawah ini :
a. Data Mahasiswa, dengan isi sebagai berikut :
NIM
0702003
0702007
0702008
0702009

Tabel 4.2 Mahasiswa


NAMA_MAHASISWA ALAMAT_MAHASISWA
Nindi
Jl. Nangka
Nadia
Jl. Jambu
Nabila
Jl. Salak
Nirwana
Jl. Pepaya

TGL_LAHIR
02/02/1980
03/03/1982
04/04/1980
07/07/1980

Dari data diatas dapat diketahui hal-hal sebagai berikut :


- Data Mahasiswa tersebut memiliki 4 buah kolom
- Kolom pertama berisi data angka tetap tetapi tidak menunjukkan suatu jumlah (disebut alfa
numerik) dengan lebar (banyaknya karakter) tetap, yaitu 6 karakter/digit.
- Kolom kedua berisi data karakter/string dengan lebar maksimum 30 karakter. Angka 30 ini
merupakan perkiraan bahwa untuk nama mahasiswa yang sudah ada dan nama mahasiswa
lain yang menyusul untuk ditambahkan, tidak ada yang melebihi 30 karakter. Akan tetapi jika
ternyata ada mahasiswa yang mempunyai nama lebih dari 30 karakter, maka nama tersebut
dapat disingkat agar dapat tertampung.
- Kolom ketiga berisi data karakter/string dengan lebar maksimal 60 karakter. Angka ini lebih
banyak ketimbang lebar kolom kedua, karena data alamat umumnya memang lebih panjang
dibandingkan data nama.
- Kolom keempat berisi data penanggalan.
Dapat disimpulkan dari kriteria diatas maka dapat ditetapkan struktur tabel dari Tabel Mahasiswa
tersebut, secara minimal yang harus ditentukan dalam struktur tabel adalah :
- Nama kolom (field)
- Tipe data
- Lebar (banyaknya karakter/digit maksimum yang dapat ditampung)
Untuk nama field atau kolom biasanya disesuaikan dengan nama kolom dari contoh data, tetapi
penamaan itu harus diubah karena panjang nama kolom dalam DBMS biasanya dibatasi dan harus
dinyatakan dalam 1 kata (tidak boleh menggunakan spasi atau tanda minus, tetapi boleh
menggunakan tanda underscore/garis bawah (_))

25

Berangkat dari karakteristik yang dapat disimpulkan bahwa dari fakta yang ada pada masing-masing
data, struktur dari tabel mahasiswa tersebut adalah :
NAMA FIELD
Nim
nama_mhs
alamat_mhs
tgl_lhr

Tabel 4.3 Struktur tabel mahasiswa


TIPE DATA LEBAR KETERANGAN
Character
6
Nomor induk mahasiswa
Character
30
Nama mahasiswa
Character
60
Alamat mahasiswa
Date
8
Tanggal lahir mahasiswa

4.3 Komponen-komponen Tabel Relasional


Tabel relasional mempunyai dua komponen yang berbeda, yaitu :
1. Intension
Intension terdiri dari dua bagian, yaitu struktur penamaan (naming structure) dan batasan
integritas (integrity constraint). Struktur penamaan menunjukkan nama tabel dan namanam atribut yang ada, lengkap dengan domainnya (batasan nilai dan tipe datanya).
Sedangkan batasan integritas dipengaruhi oleh integritas referensial yang meliputi key
constraint, dan referensi constraint. Key constraint tidak mengizinkan adanya nilai null
pada atribut yang digunakan sebagai primary key pada semua record yang ada pada
tabel. Sedang referensi contraint memberikan aturan bahwa nilai-nilai dalam atribut kunci
yang digunakan untuk mengembangkan/menghubungkan kebasis data lain tidak
diizinkan memiliki nilai null.
2. Extension
Extension menunjukkan isi dari tabel (nilai-nilai dari atribut yang ada dalam tabel) pada
suatu waktu. Ekstensi suatu tabel relasional cenderung untuk berubah dari waktu ke
waktu.
4.4 Aturan-aturan dalam Primary Key
Dasar penentuan primary key adalah bahwa nilai-nilai rinci data dari atribut yang digunakan sebagai
primary key haruslah unik, artinya ridak mungkin ada nilai rinci data yang sama pada semua record
dalam basis data. Selain itu ada aturan-aturan lain yang berhubungan dengan masalah integritas
(entity integrity) primary key yang dipilih, yaitu :
1. Integritas Entity; yaitu bahwa nilai atribut yang dipilih sebagai primary key tidak boleh null untuk
setiap record yang ada pada dalam relasi. Dalam hal ini terdapat 2 pengertian yaitu null untuk
data string dan null untuk data numerik. Null untuk data string adalah suatu string dengan
panjang data nol, atau tidak ada nilai datanya. Null untuk data numerik adalah nol.
Aturan ini akan memberikan jaminan bahwa semua record yang ada dalam basis data akan
dapat diakses karena semua record dapat diidentifikasi berdasarkan kunci yang unik. Contoh
sederhana dari relasi yang memenuhi aturan integritas entity terlihat pada tabel Mata_Kuliah
dibawah ini :
KODE_MK
K-0101
K-1101
K-0202
K-2202

Tabel 4.4 Mata Kuliah


NAMA_MK
SKS
Statistik
2
Algoritma dan Pemrograman
4
Manajemen
2
Aljabar Linier
3

SEMESTER
3
2
2
4

26

Dalam gambar diatas ditentukan bahwa primary key-nya adalah Kode_MK sehingga
dapat dipahami bahwa relasi Mata_Kuliah telah memenuhi integritas entity, karena tidak
ada nilai null pada atribut Kode_MK untuk setiap record yang ada dalam relasi.
2. Integritas Referensial; yaitu hubungan yang terjadi antara 2 atau lebih tabel/relasi dalam
suatu sistem basis data yang menggunakan primary key yang sama. Jika tabel-tabel
tersebut direlasikan maka primary key harus menjamin bahwa untuk setiap nilai primary
key tertentu dalam tabel yang satu harus ada pula record yang sama pada tabel yang
lain. Tabel dibawah ini akan menunjukkan integritas referensial yang diabaikan melalui
tabel Tugas dan Poyek.
Tabel 4.5 Tugas
NIP
NO_PROYEK
1022
1010
1022
1020
1023
1030
1024
1010
1024
1020
Tabel 4.6 Proyek
NO_PROYEK NAMA_PROYEK
MANAJER BIAYA_PROYEK
1010
Kantor Pemasaran Baru Doni
100.000.00
1020
Saluran Distribusi
DIAN
60.000.00

PERKIRAAN_BIAYA
120.000.00
65.000.00

4.5 Kerelasian (Relationship) Antar Entity


Suatu relasi antar entity akan memberikan data kepada pemakai atau informasi bagi pembuat
keputusan tentang suatu klas entity. Suatu contoh sederhana, jika terdapat suatu relasi tentang
perusahaan penerbangan yang berisi data nama perusahaan penerbangan dan nomor teleponnya,
serta relasi lain tentang jadwal penerbangan yang berisi data jam keberangkatan dan jam
kedatangan pesawat, tetapi tanpa ada cara untuk merelasikan keduanya, maka akan ditemui
kesulitan untuk memperoleh data tentang pesawat mana yang akan digunakan untuk mencapai
tujuan tertentu dan kapan pesawat akan tiba dan berangkat dari pelabuhan udara.
Dari gambaran sederhana tersebut akan dimengerti bahwa kerelasian antar entity sangat diperlukan
guna memperoleh data atau informasi yang diperlukan.
Dalam hal ini perlu dibedakan antara relasi (relation) dan kerelasian (relationship). Relasi
dimaksudkan sebagai saling keterkaitan anatara kesatuan data dalam satu atau beberapa tabel
sedangkan kerelasian mempunyai makna dan ruang lingkup yang lebih luas dibandingkan dengan
relasi.
Untuk itu kerelasian antar entity tersebut dapat dibagi menjadi 2 type:
1. Kerelasian antar entity dalam satu tabel.
Tipe kerelasian ini terjadi antar entity dan atributnya dalam satu tabel, dapat ditunjukkan
pada tabel dibawah ini :
Tabel 4.7 Karyawan
NIP
NAMA
DEPARTEMEN
1021
Rina
Akuntansi
1022
Reny
Pemasaran
1023
Rita
Pemasaran
1024
Rian
Akuntansi

27

2. Kerelasian antar entity dalam banyak tabel.


Tipe ini mempunyai kerelasian yang lebih kompleks. Yang termasuk dalam tipe kedua ini
adalah relasi jenis pohon (tree), jaringan sederhana (simple network) dan jaringan
kompleks (complex network).
a. Jenis Pohon (tree); kerelasiannya dapat dilihat pada tabel dibawah ini :
Tabel 4.8 Karyawan
NIP
NAMA
DEPARTEMEN
1021
Rina
Akuntansi
1022
Reny
Pemasaran
1023
Rita
Pemasaran
1024
Rian
Akuntansi
Tabel 4.9 Pengalaman Kerja
NIP
JABATAN SEBELUMNYA
1021 Consultan Yunior
1021 Analis Riset
1022 Konsultan Yunior
1023 Analis Reset
b. Jenis Jaringan Sederhana (Simple Network); kerelasiannya dapat dilihat pada
tabel-tabel dibawah ini :
Tabel 4.10 Karyawan
NIP
NAMA
DEPARTEMEN
GOL_UPAH
1021
Rina
Akuntansi
2
1022
Reny
Pemasaran
1
1023
Rita
Pemasaran
2
1024
Rian
Akuntansi
1
Tabel 4. 11 Pengalaman Kerja
NIP
DEPARTEMEN
1021
Akuntansi
1023
Pemasaran
Tabel 4.12 Upah
GOL_UPAH
DESKRIPSI
KENAIKAN_UPAH
1
Gaji Tetap
Tahunan
2
Gaji Perjam
tahunan
c. Jenis Jaringan Kompleks (Complex Network); kerelasiannya dapat dilihat pada
tabel-tabel dibawah ini :
Tabel 4.13 Tugas
NIP
NO_PROYEK
1022
1010
1022
1020
1023
1030
1024
1010
1024
1020

28

NIP
1021
1022
1023
1024

NAMA
Rina
Reny
Rita
Rian

Tabel 4.14 Karyawan


DEPARTEMEN
Akuntansi
Pemasaran
Pemasaran
Akuntansi

Tabel 4.15 Proyek


NO_PROYEK NAMA_PROYEK
MANAJER
1010
Kantor Pemasaran Baru Reny
1020
Saluran Distribusi
Reny
1030
Riset Pasar
Rita

GOLONGAN_UPAH
2
1
2
1

BIAYA_PROYEK
100.000.00
60.000.00
45.000.00

PERKIRAAN_BIAYA
120.000.00
50.000.00
40.000.00

Dari beberapa tinjauan tentang kerelasian antar entity pada bagian ini dapat disimpulkan bahwa hal
terpenting yang harus diperhatikan adalah bagaimana agar relasi-relasi yang ada dalam suatu
sistem basis data dapat dihubungkan satu sama lain. Hal ini diperlukan agar selalu tersedia
data/informasi yang diperlukan oleh pemakai atau para pengambil keputusan. Suatu primary key
harus ditentukan dari atribut-atribut yang ada dalam suatu relasi, sehingga record-record yang ada
dapat saling berhubungan secara lojik membentuk suatu basis data.
4.6 Manipulasi Data
Manipulasi data merupakan suatu cara untuk menyediakan data-data bagi para pemakai atau
informasi-informasi untuk para pembuat keputusan (manajer). Terdapat dua tipe manipulasi data,
yaitu relational algebra dan relational calculus.
Perbedaan mendasar pada kedua tipe tersebut adalah bahwa dalam relational algebra harus
dipikirkan tentang bagaimana relasi dikonstruksikan untuk memenuhi kebutuhan data, sedangkan
relational calculus hanya memikirkan tentang data apa yang diperlukan pemakai.
Kedua tipe manipulasi data tersebut akan dibahas secara lebih terperinci dalam uraian berikut ini :
1. Relational Algebra
Relational Algebra menyediakan sejumlah operator untuk memanipulasi data pada seluruh
relasi, yang antara lain adalah seperti dibawah ini :
a. Proyeksi (projection); digunakan untuk menciptakan suatu relasi baru dengan menyeleksi
atribut-atribut dari suatu relasi
NIP
1021
1022
1023
1024

Tabel 4.16 Karyawan (a)


NAMA
DEPARTEMEN
Rina
Akuntansi
Reny
Pemasaran
Rita
Pemasaran
Rian
Akuntansi
Tabel 4.17 NIP_Nama (b)
NIP
NAMA
1021
Rina
1022
Reny
1023
Rita
1024
Rian

29

Tabel 4.18 Departemen (c)


DEPARTEMEN
Akuntansi
Pemasaran
Keterangan :
a. Tabel Karyawan yang asli
b. Tabel Karyawan diproyeksikan melalui NIP dan Nama
c. Tabel Karyawan diproyeksikan melalui Departemen
b. Seleksi (selection); digunakan untuk menciptakan suatu relasi baru dengan menyeleksi
record-record dari suatu relasi
NIP
1021
1022
1023
1024

Tabel 4.19 Karyawan (a)


NAMA
DEPARTEMEN
Rina
Akuntansi
Reny
Pemasaran
Rita
Pemasaran
Rian
Akuntansi

Tabel 4.20 Karyawan_Akuntasi (b)


NIP
NAMA
DEPARTEMEN
1021
Rina
Akuntansi
1024
Rian
Akuntansi
Tabel 4.21 Nama_Karyawan (c)
NAMA
Rina
Rian
Keterangan :
a. Tabel Karyawan yang asli
b. Tabel Karyawan diseleksi dimana Departemen sama dengan
Akuntansi
c. Tabel Karyawan_Akuntansi diproyeksikan melalui Nama
c. Penggabungan (Union); digunakan untuk menciptakan suatu relasi baru dengan
mengkombinasikan secara vertikal record-record dari dua tabel. Relasi-relasi yang
dikombinasikan tersebut harus compatibel.
Tabel 4.22 Jabatan (a)
NIP
JABATAN
1021
Konsultan Senior
1022
Konsultan Senior
1023
Konsultan Senior
1024
Analis Riset

30

Tabel 4.23 Pengalaman_Kerja (a)


NIP
JABATAN
1021
Konsultan Yunior
1022
Konsultan Yunior
1023
Konsultan Yunior
1024
Analis Riset
Tabel 4.24 Pengalaman_Jabatan (b)
NIP
JABATAN
1021
Konsultan Yunior
1022
Konsultan Yunior
1023
Konsultan Yunior
1021
1022
1023

Konsultan Senior
Konsultan Senior
Konsultan Senior

1024

Analis Riset

Keterangan :
a. Tabel Jabatan dan Pengalaman_Kerja Asli
b. Tabel Jabatan dan Pengalaman Kerja digabung menjadi relasi
Pengalaman_Kerja
d. Interseksi (Intersection); digunakan untuk menciptakan suatu relasi baru, yang memuat
record-record yang ada dalam kedua tabel
NIP
1021
1022
1023
1024

Tabel 4.25 Karyawan (a)


NAMA
DEPARTEMEN
Rina
Akuntansi
Reny
Pemasaran
Rita
Pemasaran
Rian
Akuntansi

NIP
1021
1025

Tabel 4. 26 Karyawan_Baru (a)


NAMA
DEPARTEMEN
Rina
Akuntansi
Rida
Pemasaran

Tabel 4.27 Karyawan_Promosi (b)


NIP
NAMA
DEPARTEMEN
1021
Rina
Akuntansi
Keterangan :
a. Tabel-tabel asli.
b. Tabel Karyawan_Promosi merupakan hasil opersai interseksi antara
tabel Karyawan dan Karyawan_Baru.

31

e. Differensi (Difference); digunakan untuk menciptakan suatu relasi baru, yang memuat
record-record yang ada dalam suatu tabel tetapi tidak ada dalam tabel yang lain.
Tabel 4.28 Karyawan (a)
NIP
NAMA
DEPARTEMEN
1021
Rina
Akuntansi
1022
Reny
Pemasaran
1023
Rita
Pemasaran
1024
Rian
Akuntansi

NIP
1021
1025

Tabel 4.29 Karyawan_Baru (a)


NAMA
DEPARTEMEN
Rina
Akuntansi
Rida
Pemasaran

NIP
1023

Tabel 4.30 Supervisor (b)


NAMA
DEPARTEMEN
Rita
Pemasaran

NIP
1021
1022
1024
1025

Tabel 4.31 Non_Supervisor (b)


NAMA
DEPARTEMEN
Rina
Akuntansi
Reny
Pemasaran
Rian
Akuntansi
Rida
Pemasaran

Keterangan :
a. Tabel-tabel asli
b. Tabel-tabel hasil operasi Differensi antara Tabel Karyawan dan tabel
karyawan baru.
f.

Divisi (Division); digunakan untuk menciptakan suatu relasi baru dengan menyeleksi recordrecord dari suatu relasi yang didasarkan pada nilai-nilai atribut yang sama dalam
memisahkan relasi.
Tabel 4. 32 Kepakaran (a)
NIP
JABATAN
1021
Investasi
1021
Perpajakan
1022
Stok Pasar
1023
Manajemen
1023
Stok Pasar
1024
Perpajakan
1024
Investasi
Tabel 4.33 Keahlian (b)
AREA
Investasi
Perpajakan

32

Tabel 4.34 Pakar_Berdasarkan_Keahlian (c)


AREA
1021
1024
Keterangan :
a. Tabel asli.
b. Tabel Kepakaran yang telah dimodifikasi menjadi Keahlian
c. Tabel hasil operasi Divisi.
g. Penyertaan (Join); digunakan untuk menciptakan suatau relasi baru yang didasarkan pada
kerelasian antara dua atribut dalam relasi-relasi yang berbeda dengan cara
mengkombinasikannya secara horizontal
NIP
1021
1022
1023
1024

Tabel 4.35 Karyawan (a)


NAMA
DEPARTEMEN
Rina
Akuntansi
Reny
Pemasaran
Rita
Pemasaran
Rian
Akuntansi

Tabel 4.36 Supervisor (a)


NIP
NAMA
1023
Rita

NIP
1021
1022
1023
1024

NAMA
Rina
Reny
Rita
Rian

DEPARTEMEN
Pemasaran

Tabel 4.37 Data_Seluruhnya (b)


DEPARTEMEN HANYA_NIP HANYA_NAMA
Akuntansi
1023
Rita
Pemasaran
1023
Rita
Pemasaran
1023
Rita
Akuntansi
1023
Rita

HANYA_DEPT
Pemasaran
Pemasaran
Pemasaran
Pemasaran

Keterangan :
a. Tabel-tabel asli
b. Hasil Operasi penyertaan tabel Karyawan dan tabel Supervisor yang
diberi nama tabel Data_Seluruhnya.
2. Relational Calculus
Relational Calculus merupakan tipe manipulasi data yang tidak menyediakan suatau set
operator dan memberikan fleksibilitas yang sangat baik dalam relasi-relasi. Relational calculus
merupakan tipe manipulasi data non prosedural karena pemakai hanya menspesifikasikan datadata apa yng diinginkannya bukan bagaimana memperolehnya. Adapun operasi-operasi yang
termasuk dala relational calculus hampir sama dengan yang terdapat pada relational algebra,
yaitu :
a. Proyeksi
Pada saat operasi proyeksi diperlukan, hasil yang diinginkan adalah suatu relasi yang
memuat (pada umumnya lebih sedikit) atribut-atribut yang disusun secara spesifik. Proyeksi
dispesifikasikan dengan mendeskripsikan atribut-atribut yang masih ditahan dalam hasil
33

operasi, sesuai dengan keperluannya. Berikut ini merupakan suatu contoh manipulasi data
yang menggunakan operasi proyeksi dalam relational calculus, yang secara formal dapat
ditulis sebagai berikut :
R [A,B] = { r:r R --- r [A,C]
Keterangan :
R
r
r [A,C]

: adalah suatu tabel yang memuat atribut-atribut A,B dan C


: adalah record dalam tabel R
: adalah tabel hasil proyeksi yang memuat atribut-atribut A dan C

Tanda : dibaca sebagai sedemikian rupa sehingga, tanda diterjemahkan sebagai


adalah elemen pada, dan merupakan simbol hubungan logika yang dibaca sebagai
dan. Maka statement dalam contoh diatas dapat dibaca sebagai proyeksi pada tabel R
melalui atribut A dan C adalah sama dengan kumpulan semua record (dinotasikan dalam
r) sedemikian rupa sehingga record-record tersebut adalah elemen-elemen pada tabel R
(dinotasikan oleh :) dan record-record memuat atribut-atribut A dan C.
Contoh operasi proyeksi pada relational algebra dalam gambar 4.8 dapat dispesifikasikan
dengan mensubstitusikan tabel Karyawan sebagai R, Nip untuk A dan Nama untuk C dalam
statement diatas.
b. Seleksi
Operasi seleksi digunakan untuk memisahkan record-record yang memenuhi batasanbatasan tertentu atau sekelompok batasan. Seleksi dengan menggunakan relational
calculus tentu saja memerlukan spesifikasi batasan yang ada. Jika R menyatakan suatu
relasi yang memuat atribut-atribut A,B dan C dan r adalah sebuah record dalam R. Batasan
yang ditentukan untuk menyeleksi record-record adalah . A dan V adalah suatu konstanta
yang diperlukan. Operasi seleksi didalam relational calculus dapat dijelaskan melalui dua
kasus yang berbeda, yaitu restriksi (restiction) dan seleksi (selection). Restriksi adalah suatu
seleksi dalam suatu nilai atribut spesifik yang nantinya akan dibandingkan. Seleksi
merupakan kasus yang kedua dimana nilai suatu atribut akan dibandingkan dengan nilai
atribut yang lain. Contoh dapat dilihat pada tabel 4.21 (operasi seleksi dalam relational
algebra) dimana terdapat suatu restriksi yang diidentifikasikan dengan menyeleksi dari R
pada semua record-record (r), dimana A menentukan batasan yang dispesifikasikan dengan
pada suatu nilai V. Secara formal dapat dituliskan dengan cara sebagi berikut :
R [A B] = {r :r R (r [A] V)}
Pada contoh tersebut diperlukan subtitusi yaitu Karyawan untuk R, Departemen untuk A,
Akuntansi untuk V dan = untuk
Operasi seleksi secara formal didefinisikan sebagai berikut :
R [A B] = {r : r R (r [A] r [B])}
Perbedaan antara seleksi dan restriksi hanya terdapat pada bagian akhir, dimana atribut A
dibandingkan dengan atribut B yang merupakan atribut konstan. Operasi seleksi dalam
relational calculus dapat diilustrasikan dengan relasi Proyek untuk R, Biaya Proyek untuk A,
Perkiraan_Biaya untuk B dan lebih besar atau sama dengan untuk simbol . Maka hasil

34

operasinya merupakan relasi yang terdiri dari atas record-record untuk proyek nomor 1020
dan 1030.
c. Penyertaan
Operasi penyertaan dapat didefinisikan dengan definisi-definisi yang digunakan diatas
(dalam operasi proyeksi dan seleksi), yaitu R sebagi suatu relasi yang meliputi atribut A,B
dan C, r untuk record dalam R dan sebagai batasan yang harus ditentukan untuk
menyeleksi record. Sebagai tambahan, simbol S didefinisikan sebagai suatu relasi yang
memuat record yang direpresentasikan dengan definisi s pada domain yang sama pada R,
dan dilambangkan dengan yang mendefinisikan ketergabungan dua record, maka r
s mengkonstruksikan suatu record yang meliputi semua atribut pada r dan diikuti dengan
seluruh atribut pada s. Operasi penyertaan dalam relational calculus didefinisikan sebagai
berikut :
R [A B] S = {(r s) : r R s S (r [A] s [B])}
Dengan kalimat lain, penyertaan R dan S melalui atribut A dan B didefinisikan dengan
penggabungan record r dan s sedemikain rupa sehingga r berada didalam R, s berada
didalam S dan nilai A dalam r dan B dalam s menentukan batasan yang ditentukan dengan
. Operasi penyertaan diilustrasikan dalam tabel 4.37, dan dapat dijelaskan dengan
mensubstitusikan Karyawan untuk R, Supervisor untuk S, Departemen pada karyawan
sebagai A, Departemen pada Supervisor untuk B, dan = untuk .
Sebagaimana contoh diatas, simbol dapat berupa banyak operator kondisi yang lain,
yang menspesifikasikan batasan-batasan.
LATIHAN :
1. Perhatikan atribut dari tabel dibawah ini!
Pasien : {Kode_Pasien, Nama_Pasien, Penyakit, Kode_Dokter, Nama_Dokter,
Kode_Ruang, Nama_Ruang, Tanggal_mulai_rawat }
Tentukan :
a. Tipe data dan batasan nilai yang sesuai untuk format tabel Pasien diatas agar dapat
menampung record-recordnya.
b. Isi 5 record untuk tabel tersebut.
c. Petakan tabel tersebut dalam tipe relasi jenis Jaringan Kompleks.
2. Buatlah contoh tabel dengan menggunakan semua operasi pada Relational Algebra,
masing-masing satu buah!

35

NORMALISASI

Definisi Normalisasi
Beberapa Definisi Normalisasi
1. Normalisasi adalah suatu teknik yang menstrukturkan data dalam cara-cara tertentu untuk
membantu mengurangi atau mencegah timbulnya masalah yang berhubungan dengan
pengolahan data dalam basis data.
2. Normalisasi adalah suatu proses memperbaiki/membangun dengan model data relational, dan
secara umum lebih tepat dikoneksikan dengan model data logika
3. Normalisasi adalah proses mengelompokkan data kedalam bentuk tabel atau relasi atau file
untuk menyatakan entitas dan hubungan mereka sehingga terwujud satu bentuk database yang
mudah untuk dimodifikasi.
Proses normalisasi ini menghasilkan struktur record yang konsisten secara lojik, yang mudah untuk
dimengerti dan sederhana dalam pemeliharaannya. Beberapa level normalisasi dapat dijelaskan,
dan kriteria yang mendefinisikan level-level pada normalisasi adalah bentuk normal (norm form).
5.2 Tujuan Normalisasi
Ada banyak kemungkinan desain untuk struktur data yang digunakan dalam sistem basis data.
Dalam perjalanan panjangnya, beberapa desain membuktikan kelebihannya dari yang lain. Suatu
desain struktur data yang paling baik adalah jika membuat kerelasian-kerelasian dalam basis data
menjadi mudah untuk dimengerti, lebih sederhana pemeliharaannya dan lebih mudah dalam
memprosesnya untuk kebutuhan baru. Kapan saja ketika rinci data telah dikelompokkan menjadi
record-record (atau atribut menjadi relasi-relasi), maka salah satu atau lebih dari ketiga sifat diatas
harus dipenuhi. Jika antar rinci data tidak dihubungkan secara lojik maka pemakai akan menjadi
kacau dan pemeliharaannya pun akan menjadai sulit. Jadi, pada akhirnya kebutuhan data baru akan
memerlukan substansi kerja untuk menentukan rinci data yang harus disediakan jika diperlukan,
juga untuk membuat (jika dimungkinkan secara lojik) pengelompokan (grouping).
5.3 Penyimpangan-penyimpangan (Anomalies) Dalam Modifikasi
Beberapa akibat desain basis data yang tidak baik akan dibahas pada bagian ini. Permasalahan itu
biasanya terjadi selama proses delete, insert atau modifikasi data dalam basis data, yang disebut
sebagai penyimpangan-penyimpangan atau biasa dikenal dengan anomalies. Terdapat 3 macam
anomali yang pembahasannya terdapat pada uraian dibawah ini :
a. Delete anomaly; yaitu suatu proses penghapusan suatu entity lojik yang mengakibatkan
hilangnya informasi tentang entity yang tidak direlasikan secara lojik. Suatu anomali pada
umumnya merupakan penyimpangan yang tidak diperkirakan. Contoh yang memperjelas
masalah penyimpangan akibat proses delete dapat dilihat pada tabel dibawah ini :
Tabel 5.1 Travel_Club
NO_ANG NAMA_ANGGOTA ALAMAT
TUJUAN
BIAYA
TGL_BRKT
1234
Adi
Sipin
Padang
1.000.000 10-05-2007
2345
Ali
Telanai
Medan
2.000.000 11-06-2007
3456
Ani
The Hok
Medan
2.000.000 12-06-2007
4567
Ari
Sipin
Palembang
500.000 05-08-2007

36

Tabel Travel_Club diatas merupakan suatu contoh relasi yang memuat data tentang rencana
untuk anggota sebuah club. Organisasi ini memberikan beberapa fasilitas untuk melakukan
perjalanan wisata. Yang perlu diperhatikan adalah jika seorang anggota, Ari misalnya,
memutuskan untuk membatalkan perjalanan ke Palembang, dan record yang bersangkutan
dihapus, maka seluruh data dalam record tersebut akan terhapus. Hal ini akan mengakibatkan
hilangya semua data pada biaya perjalanan ke Palembang
b. Insert anomaly, yaitu suatu proses insert atau menggeser data entity lojik yang memerlukan
pergeseran data entity lojik yang lain. Dengan menggunakan tabel 5.1 diatas, desain struktur
tersebut akan diubah karena ada anggota klub yang merencanakan untuk berlibur ketempat lain
sehingga diperlukan data biaya yang baru, dan perlu pula ditambahakan kedalam struktur. Pada
kasus ini penambahan data biaya baru akan mengakibatkan pergeseran pada data lain, yaitu
pada data tujuan. Konsekuensinya, menambah data perjalanan wisata kesuatu tujuan yang lain
menjadi tidak mungkin dilakukan karena hal ini jika dilakukan akan mengakibatkan terjadinya
penyimpangan pada tabel tersebut.
c. Update anomaly; yaitu suatu proses mengupdate data pada enttity lojik yang mengakibatkan
perubahan data lebih dari satu tempat dalam suatu tabel. Dengan menggunakan contoh pada
tabel Travel_Club, jika biaya perjalanan ke Medan dirubah, maka perubahan tersebut harus
dilakukan pada lebih dari satu tempat saja. Pengubahan data biaya juga dilakukan pada tabeltabel lain yang memuat data tersebut.
5.4 Dependensi (ketergantungan)
Dependensi merupakan konsep yang mendasari normalisasi, dimana ia menjelaskan tentang
hubungan antar atribut atau secara lebih khusus menjelaskan nilai atribut yang menentukan nilai
atribut lainnya. Dependensi ini kelak akan menjadi acuan bagi pendekomposisian data kedalam
bentuk yang paling efisien.
Macam-macam dependensi :
a. Dependensi Fungsional (Functional Dependence), adalah dependensi dimana jika suatu atribut
Y mempunyai dependensi fungsional terhadap atribut X jika hanya jika setiap nilai X
berhubungan dengan sebuah nilai Y.
Definisi diatas dapat ditulis dalam bentuk notasi sebagai berikut : X Y
(dibaca X secara fungsional menentukan Y atau Y secara fungsional tergantung pada X)
Sebagai contoh misalnya terdapat tabel Pesanan_Jual yang dinotasikan dengan :
Pesanan_Jual (Pembeli, Kota, Barang, Jumlah)
yang artinya bahwa tabel Pesanan_Jual mengandung atribut Pembeli, Kota, Barang dan
Jumlah. Sampel data pada tabel ini diperlihatkan pada tabel dibawah ini :
Tabel 5.2 Pesanan_Jual
PEMBELI KOTA BARANG
P01
Yogya
B1
P01
Yogya
B3
P02
Jakarta B1
P02
Jakarta B2
P02
Jakarta B3

JUMLAH
10
15
7
10
8

Pada contoh ini, Pembeli secara fungsional menentukan Kota, sebab terlihat bahwa untuk
Pembeli yang sama, Kotanya juga sama. Dengan demikian notasinya dapat dituliskan sebagai
berikut :

37

Pembeli Kota
atau contoh yang lain :
{Pembeli, Barang} Jumlah
{Pembeli, Barang} Kota
{Pembeli, Barang} {Jumlah, Kota}
catatan :
-

Bagian yang terletak disebelah kiri panah biasa disebut penentu (determinan) dan
bagian yang terletak disebelah kanan panah disebut yang tergantung (dependen)
Tanda { } biasa digunakan kalau ada lebih dari satu atribut, baik pada penentu
maupun yang tergantung.

b. Dependensi Fungsional Sepenuhnya (Full Functional Dependence), dapat diartikan sebagai


suatu atribut Y mempunyai dependensi fungsional penuh terhadap atribut X jika :
- Y mempunyai dependensi fungsional terhadap X
- Y tidak memiliki dependensi terhadap bagian dari X
Misalnya pada tabel Pelanggan :
Pelanggan (Kode_Pelanggan, Nama, Kota, Nomor_Fax)
Pada tabel ini :
i. {Kode_Pelanggan, Kota} Nomor_Fax
ii. Kode_Pelanggan Nomor_Fax
Mengingat bahwa No_Fak bergantung pada {Kode_Pelanggan, Kota} (kondisi 1) dan juga
bergantung pada Kode_Pelanggan (kondisi 2), yang tidak lain merupakan bagian dari
{Kode_Pelanggan, Kota}, maka Nomor_Fax tidaklah mempunyai dependensi fungsional
sepenuhnya terhadap {Kode_Pelanggan,Kota}. Dengan kata lain, Nomor_Fax hanya
mempunyai dependensi sepenuhnya terhadap Kode_Pelanggan.
c. Dependensi Total, dimana suatu atribut Y mempunyai dependensi total terhadap atribut X jika :
- Y memiliki dependensi fungsional terhadap X
- X mempunyai dependensi fungsional terhadap Y
Dependensi seperti ini dinyatakan dengan notasi : X Y
Misalnya, terdapat relsi sebagaimana diperlihatkan pada gambar dibawah ini :
Tabel 5.3 Pemasok
KODE_PEMASOK NAMA_PEMASOK KOTA
C1
Cindo
Jakarta
C2
Citra
Bandung
C3
Candra
Surabaya
Pada contoh ini :
Kode_Pemasok Nama_Pemasok
dengan asumsi bahwa tidak ada nama pemasok yang sama

38

d. Dependensi Transitif, dimana atribut Z yang mempunyai dependensi transitif terhadap X bila:
- Y memiliki dependensi fungsional terhadap X
- Z memiliki dependensi fungsional terhadap Y
Sebagai contoh, terdapat tabel sebagaimana terlihat dibawah ini :
Tabel 5.4 Jadwal_Kuliah
MATA_KULIAH
RUANG
TEMPAT
Jaringan Komputer R. 31
Gedung A
Matematika I
R. 42
Gedung B
Sistem Pakar
R. 11
Gedung B
Fisika I
R 12
Gedung C

WAKTU
Senin, 08:00 09:45
Selasa, 09:45 11:00
Rabu, 13:00 14:30
Selasa, 08:00 09:45

Pada tabel ini :


Kuliah {Ruang, Waktu}
Ruang Tempat
Terlihat bahwa :
Kuliah Ruang Tempat
Dengan demikian Tempat mempunyai dependensi transitif terhadap Kuliah.
5.5 Diagram Dependensi Fungsional
Diagram Dependensi Fungsional (Diagram DF) adalah diagram yang digunakan untuk
menggambarkan dependensi fungsional. Diagram ini menunjukkan hubungan antar atribut yang
menjadi penentu atribut lainnya dengan hubungan yang dinyatakan dengan anak panah.
Sebagai contoh, dependensi fungsional pada relasi yang terdapat pada tabel Jadwal_Kuliah
dapat disajikan dalam diagram FD sebagaimana terlihat pada gambar dibawah ini :
Ruang

Tempat

Mata_Kuliah
Waktu
Gambar 5.1 Diagram FD
5.6 Dekomposisi (Pemecahan Tak Hilang)
Pada proses normalisasi seringkali terjadi pemecahan sebuah relasi menjadi dua relasi atau lebih.
Proses pemecahan seperti ini disebut dengan istilah dekomposisi. Secara lebih khusus, macam
dekomposisi yang dilakukan adalah dekomposisi tak hilang, yang artinya bahwa tak ada informasi
yang hilang ketika relasi dipecah menjadi relasi-relasi lain. Tabel dibawah ini menunjukkan sebuah
relasi dengan dua macam dekomposisi.
Tabel 5.5 Bentuk relasi asli
NIM
NAMA PROGRAM_STUDI
2007101 Didi
Teknik Informatika
2007201 Dian
Sistem Komputer
2007301 Didi
Sistem Informasi

39

(a) Contoh dekomposisi tak hilang


Tabel 5.6 Relasi Nim_Nama
NIM
NAMA
2007101 Didi
2007201 Dian
2007301 Didi
Tabel 5.7 Relasi Nim_Prog
NIM
PROGRAM_STUDI
2007101 Teknik Informatika
2007201 Sistem Komputer
2007301 Sistem Informasi
(b) Contoh dekomposisi hilang
Tabel 5.8 Relasi Nim_Prog
NIM
NAMA
2007101 Didi
2007201 Dian
2007301 Didi
Tabel 5.9 Relasi Nama_Prog
NAMA PROGRAM_STUDI
Didi
Teknik Informatika
Dian
Sistem Komputer
Didi
Sistem Informasi
Pada dekomposisi diatas :
1. Pada kasus (a), dekomposisi bersifat tak hilang. Berdasarkan kedua relasi hasil dekomposisi
(terkadang disebut proyeksi), relasi semula bisa diperoleh kembali. Sebagai contoh,
berdasarkan kedua relasi hasil dekomposisi, informasi bahwa NIM 2007101 bernama Didi
dengan program studi Teknik Informatika dapat diperoleh kembali. Begitu juga untuk NIM
2007201 dan 2007301.
2. Pada kasus (b) terdapat suatu kerancuan. Nama yang bernomor 2007101 memang adalah Didi
(Relasi : Nim_Nama), tetapi si Didi yang berNIM 2007101 ini mengambil Program_Studi Teknik
Informatika atau Sistem Informasi (Relasi Nama_Prog, karena ada 2 nama Didi)? Dekomposisi
yang menghasilkan relasi Nim_Nama dan Nama_Prog ini merupakan contoh dekomposisi
hilang.
5.7 Bentuk Normal
Aturan-aturan normalisasi dinyatakan dalam istilah bentuk normal. Bentuk normal adalah suatu
aturan yang dikenakan pada relasi-relasi dalam basis data dan harus dipenuhi oleh relasi-relasi
tersebut pada level-level normalisasi. Suatu relasi dikatakan berada dalam bentuk normal tertentu
jika memenuhi kondisi-kondisi tertentu. Misalnya, suatu relasi berada dalam bentuk normal pertama
(biasa disebut 1NF) jika dan hanya jika setiap atribut bernilai tunggal untuk setiap baris. Beberapa
level yang biasa digunakan pada normalisasi adalah :
- Bentuk normal pertama (1NF)
- Bentuk normal kedua (2NF)
- Bentuk normal ketiga (3NF)
- Bentuk normal Boyce-Codd (BCNF)
40

Bentuk normal keempat (4NF)


Bentuk normal kelima (5NF)

Bentuk normal pertama hingga ketiga (dibuat oleh E.F. Codd) merupakan bentuk normal yang umum
dipakai. Artinya bahwa pada kebanyakan relasi, bila ketiga bentuk normal tersebut telah dipenuhi,
maka persoalan anomali tidak akan muncul lagi. Bentuk normal BCNF merupakan revisi terhadap
bentuk normal ketiga. Bentuk normal keempat dan kelima (dikemukakan oleh Fagin) hanya dipakai
pada kasus-kasus khusus, yakni pada relasi yang mengandung dependensi nilai banyak.
Bentuk-bentuk normal sering digambarakan sebagaimana terlihat pada gambar dibawah ini :
Relasi Utama
1NF
2NF
3NF
BCNF
4NF
5NF

Gambar 5.2 Bentuk-bentuk nomalisasi


Gambar diatas menjelaskan bahwa setiap level normalisasi bergantung pada level sebelumnya.
Sebagai contoh, bentuk normal kedua pasti memenuhi bentuk normal pertama, bentuk normal ketiga
pasti memenuhi bentuk nomal kedua dan seterusnya.
Semakin dalam levelnya, relasi mempunyai kecenderungan lebih baik dalam artian memiliki problem
yang lebih kecil ataupun sama sekali tidak memiliki permasalahan anomali.
5.7.1 Bentuk Normal Pertama (1NF)
Bentuk normal pertama biasanya dikenakan pada tabel yang belum ternormalisasi. Tabel yang
belum ternormalisasi adalah tabel yang memiliki atribut yang berulang. Sebagai contoh, berikut
adalah data dalam keadaan belum ternormalisasi.

41

NIP
108

NAMA
Ari

110

Azmi

111

Andi

Tabel 5.10 Lama_Kerja


JABATAN
KEAHLIAN
LAMA (TAHUN)
Programmer
Delphi
4
Visual Basic 3
PHP
3
Analis Yunior PHP
5
Oracle
3
Analis Senior Visual Basic 5
PHP
2

Pada contoh diatas, Keahlian menyatakan atribut yang berulang (misalnya Ari memiliki 3 keahlian,
dan Azmi memiliki 2 kehalian). Bentuk diatas perlu dirubah menjadi bentuk normal pertama. Adapun
definisi dari bentuk normal pertama adalah sebagai berikut :
Suatu relasi dikatakan dalam bentuk normal pertama jika dan hanya jika setiap atribut bernilai
tunggal untuk setiap baris
Data yang tak ternormalisasi pada tabel Lama_Kerja dapat diubah kedalam bentuk normal pertama
dengan cara membuat setiap baris berisi kolom dengan jumlah yang sama dan setiap kolom hanya
mengandung satu nilai. Data pada tabel Lama_Kerja tersebut perlu diubah menjadi relasi
sebagaimana terlihat pada tabel dibawah ini :
NIP
108
108
108
110
110
111
111

Tabel 5.11 Lama_Kerja yang sudah dinormalisasi


NAMA
JABATAN
KEAHLIAN LAMA (TAHUN)
Ari
Programer
Delphi
4
Ari
Programer
Visual Basic 3
Ari
Programer
PHP
3
Azmi
Analis Yunior PHP
5
Azmi
Analis Yunior Oracle
3
Andi
Analis Senior Visual Basic 5
Andi
Analis Senior PHP
2

Dari definisi dan contoh diatas terlihat bahwa syarat untuk membentuk normal kesatu :
a. setiap data dibentuk dalam flat file, data dibentuk dalam satu record nilai dari field berupa
atomic value
b. tidak ada set atribut ynag berulang atau bernilai ganda
c. telah ditentukan primary key untuk tabel/relasi tersebut
d. tiapa atribut hanya memiliki satu pengertian
Contoh lain yang menggambarkan tabel yang belum ternormalisasi dapat dilihat pada tabel Pesanan
dibawah ini :
Tabel 5.12 Pesanan_1
NO_PSN
20002
20012
20013

TGL_PSN
12/05/2007
12/05/2007
17/06/2007

ITEM_1

ITEM_2

ITEM_3

ITEM_4

P1
P3
P1

P2
P5
P2

P3
P6

P4

TOTAL
(RUPIAH)
45.000
32.000
12.000

42

Bentuk semacam ini banyak dipakai oleh pengembang yang tidak mengenal konsep normalisasi.
Sejumlah item ditulis berdiri sebagai kolom tersendiri. Tentu saja rancangan ini tidak praktis. Berapa
jumlah kolom yang disediakan untuk menyediakan macam item yang dipesan oleh seseorang?
Bagaimana pula jika pesanan lebih banyak, misalnya 20 item? Tentu saja akan memboroskan
penggunaan kolom. Sehingga untuk efisiennya, tabel tersebut perlu diubah dalam bentuk normal
pertama, seperti diperlihatkan pada tabel dibawah ini :

NO_PSN
20002
20002
20002
20002
20012
20012
20012
20013
20013

Tabel 5.13 Pesanan_2


TOTAL
TGL_PSN
ITEM
(RUPIAH)
12/05/2007 P1
45.000
12/05/2007 P2
45.000
12/05/2007 P3
45.000
12/05/2007 P4
45.000
12/05/2007 P3
32.000
12/05/2007 P5
32.000
12/05/2007 P6
32.000
17/06/2007 P1
12.000
17/06/2007 P2
12.000

Relasi yang memenuhi bentuk normal pertama umumnya memiliki berbagai masalah. Masalah yang
timbul secara umum adalah disebabkan oleh adanya kemubaziran. Kemubaziran (perhatikan barisbaris dengan No_Psn sama dengan 20002 pada tabel 5.13, Tgl_Psn dan Total merupakan
kemubaziran) yang dapat mengakibatkan ketidakkonsistenan, yakni bila ada perubahan data yang
tidak lengkap terhadap data yang mubazir (misalnya Tgl_Psn pada tabel Pesanan_2). Selain itu,
sekalipun ketidakkonsistenan misalnya tidak terjadi, namun terjadi ketidakefisienan sewaktu
mengubah data.
Berbagai persoalan yang menyangkut anomali (baik anomali peremajaan, maupun anomali
penyisipan dan anomali penghapusan) biasanya juga muncul pada relasi yang hanya memenuhi
bentuk normal pertama.
5.7.2 Bentuk Normal Kedua (2NF)
Bentuk normal kedua didefinisikan berdasarkan dependensi fungsional.
Suatu relasi berada dalam bentuk normal kedua jika dan hanya jika :
Berada pada bentuk normal pertama
Semua atribut bukan kunci memiliki dependensi sepenuhnya terhadap kunci
primer (dimana atribut kunci adalah atribut yang tidak merupakan bagian
kunci primer)
Dalam ungkapan yang lebih praktis, bentuk normal kedua mensyaratkan setiap atribut bergantung
kepada kunci primer. Relasi pada tabel Lama_Kerja tidak tergolong sebagai bentuk normal kedua,
meskipun memenuhi persyaratan bentuk normal pertama. Perhatikan bahwa Nama dan Jabatan
mempunyai dependensi sepenuhnya terhadap NIP (sebab untuk NIP yang sama, Nama dan
Jabatannya juga sama). Namun tidak demikian halnya dengan Keahlian dan Pengalaman.
Untuk mengubah suatu relasi yang tergolong sebagai bentuk normal pertama kebentuk normal
kedua perlu dilakukan dekomposisi terhadap relasi tersebut. Proses dekomposisi dapat dilakukan

43

dengan menggambarkan diagram dependensi fungsional terlebih dahulu. Berdasarkan diagram ini,
relasi dalam bentuk normal pertama dipecah kedalam sejumlah relasi.
Sebagai contoh, salah satu relasi yang dibahas didepan ditulis ulang pada bagian berikut ini.
NIP
108
108
108
110
110
111
111

NAMA
Ari
Ari
Ari
Azmi
Azmi
Andi
Andi

Tabel 5. 11 Lama_Kerja
JABATAN
KEAHLIAN
Programer
Delphi
Programer
Visual Basic
Programer
PHP
Analis Yunior PHP
Analis Yunior Oracle
Analis Senior Visual Basic
Analis Senior PHP

LAMA (TAHUN)
4
3
3
5
3
5
2

Diagram dependensi fungsional untuk relasi diatas diperlihatkan pada gambar 5.3 dibawah ini :
Nama
NIP
Jabatan

Lama
Keahlian

Gambar 5.3 Diagram dependensi fungsional terhadap tabel Lama_Kerja


Diagram dependensi fungsional diatas menjelaskan bahwa :
- Nama dan Jabatan memiliki dependensi fungsioanl terhadap NIP
- Lama mempunyai dependensi fungsional terhadap gabungan NIP dan Keahlian.
Berdasarkan diagram dependensi fungsional tersebut, pendekomposisiannya menghasilkan dua
buah relasi, misalnya relasi NNJ dan relasi NKL. Kedua relasi tersebut adalah sebagai berikut :
NNJ (NIP, Nama, Jabatan)
NKL (NIP, Keahlian, Lama)
Pada kedua relasi diatas, tanda garis bawah digunakan untuk menyatakan kunci primer masingmasing relasi.
Dengan pendekomposisian seperti diatas, isi kedua relasi tersebut akan berupa sebagaimana yang
diperlihatkan pada tabel dibawah ini.
NIP
108
110
111

Tabel 5.12 Relasi NNJ


NAMA JABATAN
Ari
Programer
Azmi
Analis Yunior
Andi
Analis Senior

44

NIP
108
108
108
110
110
111
111

Tabel 5.13 Relasi NKL


KEAHLIAN
LAMA
Delphi
4
Visual Basic 3
PHP
3
PHP
5
Oracle
3
Visual Basic 5
PHP
2

Kedua tabel diatas menggambarkan proses dekomposisi relasi yang tergolong dalam bentuk normal
pertama kebentuk normal kedua seperti berikut ini :
Jika terdapat relasi R :
R (A, B, C, D)
Kunci Primer (A, B)
AD
R dapat digantikan dengan dua proyeksi R1 dan R2
R1 (A, D)
Kunci Primer (A)
R2 (A, B, C)
Kunci Primer (A, B)
Kunci Tamu (A) Referensi R1
Bila rumusan diatas dikenakan pada relasi berikut :
Tabel 5.14 Pesanan
NO_PSN
20002
20002
20002
20002
20012
20012
20012
20013
20013

TGL_PSN
12/05/2007
12/05/2007
12/05/2007
12/05/2007
12/05/2007
12/05/2007
12/05/2007
17/06/2007
17/06/2007

ITEM
P1
P2
P3
P4
P3
P5
P6
P1
P2

TOTAL
(RUPIAH)
45.000
45.000
45.000
45.000
32.000
32.000
32.000
12.000
12.000

Maka akan diperoleh 2 relasi :


- Pesanan1 (No_Psn, Tgl_Psn, Total)
- Pesanan2 (No_Psn, Item)
Dalam hal ini No_Psn bertindak sebagai kunci primer Pesanan1 dan gabungan No_Psn dan Item
benrtindak sebagai kunci primer pada Pesanan2. Pada Pesanan2, No_Psn menjadi kunci tamu yang
mereferensi ke Pesanan1.
Berikut ini adalah isi masing-masing relasi Pesanan1 dan Pesanan2.

45

Tabel 5.15 Relasi Pesanan1


TOTAL
NO_PSN
TGL_PSN
(RUPIAH)
20002
12/05/2007 45.000
20012
12/05/2007 32.000
20013
17/06/2007 12.000
Tabel 5.16 Relasi Pesanan2
NO_PSN ITEM
20002
P1
20002
P2
20002
P3
20002
P4
20012
P3
20012
P5
20012
P6
20013
P1
20013
P2
Masalah yang masih sering terjadi pada relasi yang tergolong pada bentuk normal kedua
diakibatkan oleh adanya dependensi transitif. Dependensi transitif mengakibatkan kemungkinan
munculnya permasalahan sebagaimana pada bentuk normal pertama.
5.7.3 Bentuk Normal Ketiga (3NF)
Definisi bentuk normal ketiga :
Suatu relasi dikatakan dalam bentuk normal ketiga jika :
- Berada dalam bentuk normal kedua
- Setiap atribut bukan kunci tidak memiliki dependensi transitif terhadap kunci
primer
Relasi NNJ dan NKL pada contoh sebelumnya memenuhi kriteria diatas, sehingga kedua relasi
tersebut masuk kedalam bentuk normal ketiga. Begitu juga halnya dengan relasi Pesanan1 dan
Pesanan2. Contoh suatu relasi yang memenuhi bentuk normal kedua tetapi tidak memenuhi bentuk
normal ketiga dapat dilihat pada tabel Item_Pesanan.
NO_PSN
20002
20002
20002
20002
20012
20012
20012
20013
20013

Tabel 5.17 Item_Pesanan


NO_URUT KODE_ITEM
001
P1
002
P2
003
P3
004
P4
001
P3
002
P5
003
P6
001
P1
002
P2

NAMA_ITEM
Pensil
Buku Tulis
Penggaris
Penghapus
Penggaris
Pulpen
Spidol
Pensil
Buku Tulis

46

Pada contoh diatas, kunci primer relasi berupa gabungan No_Psn dan No_Urut. Baik Kode_Item
maupun Nama_Item mempunyai dependensi fungsional terhadap kunci primer tersebut. Namun
perlu diperhatikan bahwa jika Kode_Item bernilai sama, Nama_Item juga bernilai sama. Hal ini
menunjukkan adanya suatu dependensi diantara kedua atribut tersebut. Lalu manakah yang menjadi
penentu? Apakah Kode_Item bergantung pada Nama_Item ataukah sebaliknya? Suatu item bisa
saja memiliki nama sama, tetapi mempunyai karakteristik yang berbeda. Sebagi contoh, dua buah
mobil bisa saja diberi nama sama, tetapi masing-masing mempunyai warna tersendiri. Pada
keadaan seperti ini tidaklah bisa dikatakan bahwa Nama_Item yang menentukan Kode_Item. Lebih
tepat kalau Kode_Item yang menjadi penentu. Jadi Nama_Item mempunyai dependensi fungsional
terhadap Kode_Item. Adanya dependensi Nama_Item terhadap Kode_Item pada relasi ini
menunjukkan bahwa Nama_Item tidak memiliki dependensi secara langsung terhadap kunci primer
(gabungan No_Psn dan No_Urut). Dengan kata lain, Nama_Item memiliki dependensi transitif
terhadap kunci primer. Agar relasi pada pada tabel Item_Pesanan diatas memenuhi bentuk normal
ketiga maka diperlukan langkah normalisasi dengan mengikuti pendekatan berikut :
Bila terdapat relasi R sebagai berikut :
R (A, B, C)
Kunci Primer (A)
BC
Maka relasi R dapat digantikan dengan dua proyeksi R1 dan R2, dengan bentuk sebagai berikut :
R1 (B, C)
Kunci Primer (B)
R2 (A, B)
Kunci Primer (A)
Kunci Tamu (B) Referensi R1
Dengan menggunakan pendekatan diatas, maka relasi pada tabel Item_Pesanan dapat
didekomposisi menjadi dua relasi sebagimana diperlihatkan pada tabel dibawah ini :
Tabel 5.18 PUI
NO_PSN NO_URUT
20002
001
20002
002
20002
003
20002
004
20012
001
20012
002
20012
003
20013
001
20013
002

KODE_ITEM
P1
P2
P3
P4
P3
P5
P6
P1
P2

Tabel 5.17 KI
KODE_ITEM NAMA_ITEM
P1
Pensil
P2
Buku Tulis
P3
Penggaris
P4
Penghapus
P5
Pulpen
P6
Spidol
47

5.7.4 Bentuk Normal Boyce-Code (BCNF)


Definisi bentuk normal Boyce-Codd :
Suatu relasi dikatakan memanuhi bentuk normal Boyce-Codd jika dan hanya jika
semua penentu (determinan) adalah kunci kandidat (atribut yang bersifat unik)
BCNF merupakan bentuk normal sebagai perbaikan terhadap 3NF. Suatu relasi yang memenuhi
BCNF selalu memenuhi 3NF, tetapi tidak untuk sebaliknya. Suatu relasi yang memenuhi bentuk 3NF
belum tentu memenuhi BCNF. Dalam banyak literatur disebutkan bahwa BCNF adalah perbaikan
dari 3NF, karena bentuk normal ketigapun mungkin masih mengandung anomali sehingga masih
perlu dinormalisasi lebih lanjut.
Untuk melukiskan relasi yang tergolong sebagai 3NF tetapi tidak memenuhi BCNF, dapat dilihat
pada relasi SKT pada tabel SKT dibawah ini.
SISWA
Arif
Arif
Ardi
Azmi

Tabel 5.18 SKT


KURSUS
Bahasa Perancis
Bahasa Inggris
Bahasa Perancis
Bahasa Inggris

TUTOR
Santo
Susan
Santo
Sandra

Relasi diatas didasarkan oleh fakta :


- Seseorang siswa dapat mengambil sejumlah kursus bahasa.
- Setiap tutor hanya mengajar pada sebuah kursus bahasa.
- Setiap siswa pada setiap kursus bahasa hanya diajar oleh seorang tutor.
- Suatu kursus bahasa yang sama bisa saja memiliki lebih dari satu tutor.
Pada keadaan ini :
- Siswa dan Kursus, dan
- Siswa dan Tutor
Relasi SKT memenuhi bentuk normal ketiga, karena tidak ada dependensi transitif pada relasi
tersebut. Namun relasi SKT tidak memenuhi bentuk BCNF karena adanya determinan Tutor (yang
menentukan Kursus) dan determinan ini tidak berdiri sebagai kunci kandidat. Gambar dibawah ini
menunjukkan diagram dependensi fungsional pada relasi SKT.
Siswa

Tutor

Kursus
Siswa
Gambar 5.4 Diagram dependensi fungsional pada relasi SKT
Relasi SKT masih menimbulkan anomali. Sebagai contoh, bila baris yang berisi siswa bernama Azmi
dihapus maka informasi yang menyatakan bahwa Suzane adalah tutor Bahasa Inggris akan ikut
hilang.

48

Cara mengkonversi relasi yang telah memenuhi bentuk normal ketiga ke BCNF adalah :
- Carilah semua penentu.
- Bila terdapat penentu yang bukan merupakan kunci kandidat, maka pisahkan relasi
tersebut dan buat penentu tersebut menjadi kunci primer.
Sehingga, agar memenuhi bentuk BCNF, maka relasi SKT perlu didekomposisi menjadi :
- ST (Siswa, Tutor)
- TK (Tutor, Kursus)
Komposisi data kedua relasi diatas diperlihatkan pada tabel relasi ST dan TK dibawah ini :
Tabel 5. 19 Relasi ST
Tabel 5. 20 Relasi TK
SISWA
TUTOR
TUTOR
KURSUS
Arif
Santo
Santo
Bahasa Perancis
Arif
Susan
Susan
Bahasa Inggris
Ardi
Santo
Santo
Bahasa Perancis
Azmi
Sandra
Sandra
Bahasa Inggris
5.7.5 Dependensi Nilai Banyak dan Bentuk Normal Keempat (4NF)
Dependensi nilai banyak merupakan terjemahan dari multivalued dependency (MVD). Dependensi
ini dipakai untuk menyatakan hubungan satu kebanyak.
Contoh hubungan satu kebanyak dapat dilihat pada gambar dibawah ini :
Ahmad

Teknisi
Perenang
Penembak
Gambar 5.5 Hubungan satu kebanyak
Untuk memahami konsep dependensi nilai banyak, dapat dilihat pada tabel dibawah ini :
Tabel 5.21 Mata_Kuliah_1
MATA_KULIAH
DOSEN
ISI
Pengetahuan Komputer Budi
Dasar Komputer
Bani
Pengenalan Pengolah Kata
Pengenalan Lembar Kerja
Matematika
Budi
Diferensial
Integral
Tabel diatas mengungkapkan tentang dosen yang mengajar mata kuliah dan isi mata kuliah yang
bersangkutan. Sebagai contoh, ada dua dosen yang mengajar Pengetahuan Komputer, yaitu Budi
dan Bani. Adapun isi mata kuliah Pengetahuan Komputer berupa : Dasar Komputer, Pengenalan
Pengolah Kata dan Pengenalan Lembar Kerja.
Tabel Mata_Kuliah_2 memperlihatkan relasi yang telah dinormalisasi yang didasarkan pada tabel
pada tabel Mata_Kuliah_1.

49

Tabel 5.22 Mata_Kuliah_2


MATA_KULIAH
DOSEN
ISI
Pengetahuan Komputer Budi
Dasar Komputer
Pengetahuan Komputer Budi
Pengenalan Pengolah Kata
Pengetahuan Komputer Budi
Pengenalan Lembar Kerja
Pengetahuan Komputer Bani
Dasar Komputer
Pengetahuan Komputer Bani
Pengenalan Pengolah Kata
Pengetahuan Komputer Bani
Pengenalan Lembar Kerja
Matematika
Budi
Diferensial
Matematika
Budi
Integral
Relasi pada tabel Mata_Kuliah_2 merupakan contoh relasi yang memiliki kemubaziran dan tentu
saja membawa kemungkinan terjadinya berbagai anomali. Salah satu contoh jika mata kuliah
Matematika diajar oleh seorang dosen baru, maka ada dua baris baru yang harus diciptakan. Baris
pertama untuk menyatakan Isi Deferensial dan baris kedua untuk menyatakan Isi Integral. Contoh
lain, jika Budi tidak lagi mengajar Matematika (tabel Mata_Kuliah_2) maka informasi bahwa isi
Matematika adalah Diferensial dan Integral ikut menghilang. Meskipun demikian, relasi ini memenuhi
persyaratan BCNF. Hal ini disebabkan, kunci primer relasi ini berupa gabungan Mata_Kuliah, Dosen
dan Isi.
Masalah relasi yang memenuhi BCNF sebagaimana kasus diatas sebenarnya dapat dipecahkan
melalui dekomposisi. Hal ini disebabkan adanya kenyataan bahwa antara Dosen dan Isi tidak ada
ketergantungan. Solusi yang tepat terhadap masalah ini dapat dipecahkan dengan konsep
dependensi nilai banyak. Secara umum, dependensi nilai banyak muncul pada relasi yang paling
tidak memiliki tiga atribut dan dua diantaranya bernilai banyak, dan nilai-nilainya tergantung hanya
pada atribut ketiga.
Pada suatu relasi R dengan atribut A, B, C atribut B dikatakan bersifat multidependen
terhadap A jika :
- Sekumpulan nilai B yang diberikan pada pasangan (A, C) hanya tergantung
pada nilai A
- Tab tergantung pada nilai C
Hubungan diatas dinyatakan dengan
A -- B
(dibaca : A menentukan banyak nilai B atau B multidependen terhadap A)
Teorema Fagin yang berkaitan dengan dependensi nilai banyak :
Bila R (A, B, C) merupakan suatu relasi, dengan A, B, C adalah atribut-atribut relasi
tersebut, maka proyeksi dai R berupa (A, B) dan (A, C) jika R memenuhi MVD
A -- B|C.
Pelu diketahui, jika terdapat :
A -- B
A -- C

50

Maka keeduanya dapat ditulis menjadi :


A -- B|C
Berdasarkan teorema Fagin diatas, relasi pada tabel Mata_Kuliah_2 dapat didekomposisi menjadi
dua relasi sebagaimana terlihat pada tabel relasi MD dan relasi MI
Tabel 5.23 Relasi MD
MATA_KULIAH
DOSEN
Pengetahuan Komputer Budi
Pengetahuan Komputer Bani
Matematika
Bani
Tabel 5.24 Relasi MI
MATA_KULIAH
ISI
Pengetahuan Komputer Dasar Komputer
Pengetahuan Komputer Pengenalan Pengolah Kata
Pengetahuan Komputer Pengenalan Lembar Kerja
Matematika
Diferensial
Matematika
Integral
Relasi-relasi seperti diatas memenuhi bentuk normal keempat (4NF). Secara praktis,
Suatu relasi memenuhi bentuk normal keempat jika :
- Telah berada pada BCNF
- Tidak mengandung dua atribut atau lebih yang bernilai banyak
Dependensi Gabungan dan Bentuk Normal Kelima (5NF)
Dependensi gabungan mendasari bentuk normal kelima.
Suatu relasi R (X, Y, , Z) memenuhi dependensi gabungan jika gabungan dari
suatu proyeksi A, B, , C) dengan A, B, , C merupakan subhimpunan dari atributatribut R. Dependensi gabungan sesuai dengan definisi diatas dinyatakan dengan
notasi : *(A, B, , C), dimana A = XY, B = YZ, C = ZX
Sebagai contoh, terdapat hubungan dealer yang mengageni suatu perusahaan distributor
kendaraan. Dalam hal ini distributor memiliki sejumlah produkl kendaraan.
Tabel 5.25 DDK
DEALER
DISTRIBUTOR
PT. Sumber Jaya Nissan
PT. Sumber Jaya Toyota
PT. Sumber Jaya Toyota
PT. Asterindo
Nissan

KENDARAAN
Truck Nissan
Toyota Kijang
Truck Dyna
Sedan Nissan

51

Relasi diatas memenuhi dependensi gabungan *(Dealer-Distributor, Distributor-Kendaraan, DealerKendaraan). Oleh karena itu, relasi DDK dapat didekomposisi menjadi tiga relasi :
- Dealer_Distributor
- Distributor_Kendaraan
- Dealer_Kendaraan
Gabungan ketiga relasi diatas akan membentuk relasi DDK, tetapi gabungan dari dua proyeksi
tersebut bisa saja menghasilkan relasi antara yang mengandung baris yang salah. Namun,
gabungan ketiga proyeksi akan menghasilkan relasi yang sesuai dengan aslinya.
Bentuk nomral kelima (5NF), yang terkadang disebut PJ/NF (Projection-Join, Normal Form),
menggunakan acuan dependensi gabungan. Suatu relasi berada dalam 5NF jika dan hanya jika
setiap dependensi gabungan dalam R tersirat oleh kunci kandidat relasi R. Secara praktis dapat
dikatakan bahwa suatu relasi R berada dalam 5NF jika data yang ada padanya tidak dapat lagi
didekomposisi menjadi relasi-relasi yang lebih kecil dengan kunci kandidat relasi-relasi yang lebih
kecil ini tidak sama dengan kunci kandidat relasi. Relasi seperti Dealer_Distributor,
Distributor_Kendaraan dan Dealer_Kendaraan memenuhi 5NF, sedangkan relasi DDK tidak
memenuhi bentuk normal kelima.
Tabel 5.26 Relasi Dealer_Distributor
DEALER
DISTRIBUTOR
PT. Sumber Jaya Nissan
PT. Sumber Jaya Toyota
PT. Asterindo
Nissan
Tabel 5.27 Relasi Distributor_Kendaraan
DISTRIBUTOR KENDARAAN
Nissan
Truck Nissan
Nissan
Sedan Nissan
Toyota
Toyota Kijang
Toyota
Truck Dyna
Tabel 5.28 Gabungan Dealer_Distributor dan Distributor_Kendaraan
DEALER
DISTRIBUTOR KENDARAAN
PT. Sumber Jaya Nissan
Truck Nissan
PT. Sumber Jaya Nisan
Sedan Nisan
PT. Sumber Jaya Toyota
Toyota Kijang
PT. Sumber Jaya Toyota
Truck Dyna
PT. Asterindo
Nissan
Truck Nissan
PT. Asterindo
Nissan
Sedan Nissan

Baris yang salah

Tabel 5.29 Gabungan Dealer_Distributor dan Dintributor_Kendaraan tanpa baris yang salah
DEALER
KENDARAAN
PT. Sumber Jaya Truck Nissan
PT. Sumber Jaya Sedan Nisan
PT. Sumber Jaya Toyota Kijang
PT. Sumber Jaya Truck Dyna
PT. Asterindo
Sedan Nissan

52

Untuk memahami pengertian tersirat pada kukunci kandidat, dapat dilihat pada relasi dibawah ini:
NIM
115
123
124

Tabel 5.30 Mahasiswa


NAMA_MHS ALAMAT
Deni
Jl. Pepaya
Dian
Jl. Rambutan
Didi
Jl. Sirsak

KOTA
Jambi
Palembang
Riau

Relasi Mahasiswa diatas memenuhi dependensi gabungan *((NIM, Nama_Mhs), (NIM, Alamat,
Kota)). Dengan kata lain, relasi Mahasiswa akan sama dengan gabungan kedua proyeksinya, (NIM,
Nama_Mahasiswa) dan (NIM, Alamat, Kota). Pada konteks ini, dependensi gabungan tersirat oleh
kunci kandidat NIM yang sama baiknya pada relasi Mahasiswa maupun kedua proyeksinya. Relasi
Mahasiswa yang mempunyai sifat seperti itu dikatakan memenuhi bentuk normal kelima.
5.8 Overnormalisasi
Tabel-tabel yang memenuhi 5NF terkadang didekomposisi lagi. Prosesnya dikenal dengan dengan
sebutan overnormalisasi. Tujuannya adalah untuk meningkatkan kinerja. Caranya adalah dengan
memperhatikan permintaan terhadap data yang sering dilakukan. Kolom-kolom data yang sering
diperlukan diletakkan pada tabel tersendiri, terpisah dengan kolom-kolom data yang jarang
diperlukan. Alasan yang lain, tabel yang terlalu banyak memiliki kolom dapat menimbulkan
persoalan yang disebut deadlock (saling mengunci) pada pengaksesan yang serentak (sejumlah
pengguna mengakses baris yang sama).
Namun perlu juga diperhatikan bahwa tidak selamanya pendekomposisian terhadap tabel yang telah
memenuhi 5NF dapat meningkatkan kinerja. Pada kenyataannya, tabel yang terlalu pendek (sedikit
memiliki kolom) juga menimbulkan persoalan peningkatan waktu CPU dan juga memerlukan banyak
I/O disk ketika terjaai penggabungan data (misalnya untuk penyajian laporan).
LATIHAN :
1. Apakah yang dimaksud dengan normalisasi? Jelaskan!
2. Jelaskan pengertian anomali dan sebutkan macam anomali!
3. Apa perbedaan antara Dependensi Fungsional dan Dependensi Total? Jelaskan!
4. Terdapat relasi Proyek sebagai berikut :
Kode_Proyek Nama_Pegawai
Bagian
A203
Widya
EDP
A203
Wahyu
HRD
A203
Wanti
HRD
A204
Widya
EDP
A204
Warni
Accounting
A205
Widya
EDP
A205
Wanti
HRD
A205
Warni
Accounting
Dari tabel diatas, tentukan atribut-atribut yang mempunyai nilai Dependensi Fungsional,
Dependensi Total dan Dependensi Transitif (jika ada)!
5. Berdasarkan tabel Proyek diatas :
a. Apakah Proyek memenuhi bentuk Normal Pertama? Jelaskan!
b. Apakah Proyek memenuhi bentuk Normal Kedua? Jelaskan!

53

Studi kasus I
Berikut terdapat tabel Nama_Mahasiswa dibawah ini. Lakukan normalisasi dari bentuk tidak normal
(unnormalized) hingga kedalam betuk normal kedua (2-NF)
Nama_Mahasiswa
Alimin
Diana
Tony
Paula

NIM
61521
61522
61523
61524

Kd_Mkul
MAT231, ECO220, HST211
HST211
ENG202, MAT231
MAT231, ENG202

Jelaskan langkah-langkah normalisasi dengan deskripsi yang jelas


Studi kasus II
Berikut terdapat tabel Nama_Mahasiswa dibawah ini. Lakukan normalisasi dari bentuk normal
kesatu (1-NF) hingga kedalam betuk normal ketiga (3-NF)
Nama_Mahasiswa
Alimin
Alimin
Alimin
Diana
Tony
Tony
Paula
Paula

NIM
61521
61521
61521
61522
61523
61523
61524
61524

Tgl_Lahir
12/05/77
12/05/77
12/05/77
14/08/78
11/01/76
11/01/76
14/06/77
14/06/77

Kuliah
Kalkulus
Ekonomi-1
History
History
Bhs. Inggris
Kalkulus
Kalkulus
Bhs. Inggris

Kd_Mkul
MAT231
ECO220
HST211
HST211
ENG202
MAT231
MAT231
ENG202

SKS
3
3
2
2
3
3
3
2

Nilai
B
A
B
A
C
B
B
C

Bobot
3
4
3
4
2
3
3
2

54

MODEL DATA

Model data dapat didefinisikan sebagai kumpulan perangkat konseptual untuk menggambarkan
data, hubungan data, makna data dan batasan data. Oleh karena yang ingin ditunjukkan adalah
makna dari data dan keterhubungannya dengan data lain, maka model data ini lebih tepat jika
disebut sebagai model data logik. Penyingkatannya menjadi model data dilakukan demi
penyederhanaan penulisan.
Terdapat sejumlah cara dalam merepresentasikan model data dalam perancangan basis data, yang
secara umum dapat dibagi dalam 2 kelompok, yaitu :
1. Model Logik Data berdasarkan Objek (Object-Based Logical Models), yang terdiri dari :
- Model Keterhubungan Entitas (Entity Relationship Models)
- Model Berorientasi Objek (Object Oriented Models)
- Model Data Semantik (Semantic Data Models)
- Model Data Fungsional (Functional Data Models)
2. Model Logik Data berdasarkan Record (Record-Based Logical Models)
- Model Relational (Relational Models)
- Model Hirarkis (Hierarchiral Models)
- Model Jaringan (Network Models)
Namun demikian, dari beberapa representasi model data diatas hanya Model Keterhubungan Antar
Entitas yang akan dibahas secara mendalam, karena merupakan model basis data yang paling
populer digunakan dalam perancangan basis data. Sementara itu Model Data berdasarkan record
(Model Relational, Hirarkies dan Jaringan) sebagai pembanding telah dikemukakan terlebih dahulu
pada Bab II.
6.1 Model Entity-Relationship (Model Ketergantungan Entitas)
Pada Model Entity-Relationship, semesta data yang ada dalam dunia nyata
diterjemahkan/ditransformasikan dengan memanfaatkan sejumlah perangkat konseptual menjadi
sebuah diagram data yang umum disebut dengan Entity-Relationship Diagram (ERD/Diagram E-R).
Sebelum membahas lebih jauh tentang bagaimana menggambarkan ERD, yang harus diketahui
terlebih dahulu adalah komponen-komponen pembentuk Model E-R tersebut. Terdapat 2 komponen
utama pembentuk Model E-R yaitu Entitas (Entity) dan Relasi (Relation). Kedua komponen ini
dideskripsikan lebih jauh melalui sejumlah atribut/properti.
6.1.1 Entitas dan Himpunan Entitas
Entitas merupakan individu yang mewakili sesuatu yang nyata (eksistensinya) dan dapat dibedakan
dari sesuatu yang lain. Misalnya kursi yang diduduki, seseorang yang menjadi pegawai disebuah
perusahaan dan sebuah mobil yang melaju dijalan raya. Sekelompok entitas sejenis dan berada
dalam ruang lingkup yang sama membentuk sebuah Himpunan Entitas (Entity Set), dengan kata
lain, entitas menunjuk pada individu suatu objek sedangkan himpunan entitas menunjuk pada
rumpun (family) dari individu tersebut. Seseorang dapat menjadi sebuah entitas tapi dapat berada
dalam sebuah himpunan entitas yang berbeda dengan individu yang lain. Seorang pasien, misalnya,
akan dimasukkan dalam himpunan entitas pasien, sedang seorang dokter dimasukkan dalam
himpunan entitas dokter. Tetapi dalam penggunaan istilah entitas sehari-hari biasa digunakan untuk
menyatakan suatu himpunan entitas.

55

Contoh himpunan entitas :


- Semua Pelanggan atau Pelanggan saja;
dengan entitas Dian, Didi, Dina dan lain-lain.
- Semua Mobil atau Mobil saja;
dengan entitas mobil Suzuki, Toyota, Honda dan lain-lain.
- Semua Mahasiswa atau Mahasiswa saja;
dengan entitas Rudi, Riri, Ridwan dan lain-lain.
NIM
0602011
0603015
0701030
0702032

Tabel 6.1 Himpunan Entity Mahasiswa


NAMA_MHS
ALAMAT_MHS
Zahara
Jl. Raya No. 1, Jambi, 36127
Zamzami
Jl. Motong No. 2, Surabaya, 60182
Zainab
Jl. Tol No.3, Jakarta, 20119
Zailangkung
Jl. Jalan No.4, Jakarta, 34214

PRODI
Teknik Informatika
Manajemen Informasi
Sistem Informasi
Teknik Informatika

6.1.2 Atribut (Atributes/Properties)


Setiap entitas pasti memiliki atribut yang mendeskripsikan karakteristik (property) dari entitas
tersebut. Penentuan/pemilihan atribut-atribut yang relevan bagi sebuah entitas merupakan hal
penting yang dalam pembentukan model data yang juga umumnya didasarkan pada fakta yang ada.
Terdapat pengelompokan untuk atribut-atribut yang didasarkan atas hal-hal dibawah ini :
1. Key dan atribut deskriptif
Pada dasarnya, key adalah satu atau gabungan dari beberapa atribut yang dapat membedakan
baris data dalam tabel secara unik. Artinya jika suatu atribut dijadikan sebagai key, maka tidak
boleh ada dua atau lebih baris data dengan nilai yang sama untuk atribut tersebut.
Ada 6 macam key yang dapat diterapkan pada suatu tabel, yaitu :
- Superkey; merupakan satu atau lebih atribut (kumpulan atribut) yang dapat membedakan
setiap baris data dalam sebuah tabel dengan unik. Bisa terjadi, ada lebih dari 1 kumpulan
atribut yang bersifat seperti itu pada sebuah tabel
Pada tabel Mahasiswa, misalnya, yang dapat menjadi superkey adalah :
o (nim,nama_mhs, alamat,mhs, prodi)
o (nim,nama_mhs, alamat_mhs)
o (nim, nama_mhs)
o (nama_mhs), jika bisa dijamin bahwa tidak ada nilai yang sama untuk atribut ini.
o (nim)
- Candidate Key; merupakan kumpulan atribut minimal yang dapat membedakan setiap baris
data dalam sebuah tabel secara unik. Sebuah candidate key tidak boleh berisi atribut atau
kumpulan atribut yang telah menjadi superkey yang lain. Jadi, sebuah candidate key
pastilah superkey, tetapi belum tentu sebaliknya. Pada tabel Mahasiswa, yang menjadi
cadidate key nya adalah :
o (nim)
o (nama_mhs), jika bisa dijamin bahwa tidak ada nilai yang sama untuk atribut ini
- Primary Key, merupakan candidate key yang : lebih sering (lebih natural) untuk dijadikan
sebagai acuan, lebih ringkas dan mempunyai jaminan keunikan yang lebih baik. Pada tabel
Mahasiswa yang menjadi Primary Key adalah (nim)
Alah satu atribut dari candidate key yang dapat dijadikan primary key dengan tiga criteria
sebagai berikut :
Key tersebut lebih natural untuk digunakan sebagai acuan
Key tersebut lebih sederhana
Key ersebut terjamin keunikannya

56

Alternate Key
Setiap atribut dari candidate key yang tidak dipilih menjadi primary key, maka atribut-atribut
tersebut dinamakan aternate key.
Foreign key
Foreign key merupakan sembarang atribut yang menunjukkan kepada primary key pada
table yang lain. Foreign key akan terjadi pada suatu relasi yang memiliki kardinalitas one-tomany atau many-to-many. Foreign key biasanya selalu diletakkan pada table/relasi yang
mengarah ke banayak.
Contoh : terdapat dua relasi,yaitu relasi dosen dan jadwal, Kardinalitas relasi tersebut
adalah satu orang dosen dapat mengajar lebih dari satu mata kuliah. Relasi dosen memiliki
kardinalitas relasi one-to-many terhadap relasi jadwal.
Relasi jadwal
KD-MK
Mata Kuliah
SKS
KD-Dosen
MI-01
Basis Data
3
DT-01
MI-02
Pemroraman WEB
4
DT-02
MI-03
Sistem Informasi
3
DT-02
MI-04
Jaringan Komputer
3
DT-01
MI-05
Rekayasa PL
4
DT-03
Primary Key : KD-MK
Foreign key :KD-Dosen
Relasi dosen
KD-Dosen
DT-01
DT-02
DT-03
Primary Key : KD-Dosen

Nama_Dosen
Rusdi
Aan
Arie

External key
External key merupakan suatu lexical attribute (atau himpunan lexical attribute) yang nilainilainya seslau mengindentifikasikan suatu objek instance.
Atribut deskriptif merupakan atribut-atribut yang tidak menjadi atau merupakan anggota dari
primary key. Jadi atribut-atribut nama_mhs, alamat_mhs dan prodi digolongkan sebagai
atribut deskriptif.

2. Atribut Sederhana (Simple Attribute) dan Atribut Komposit (Composite Attribute)


Atribut Sederhana adalah atribut atomik yang tidak dapat dipilah lagi, sedangkan Atribut
Komposit merupakan atribut yang dapat diuraikan lagi menjadi sub-sub atribut yang masingmasing memiliki makna. Pada tabel Mahasiswa yang termasuk atribut sederhana contohnya
adalah atribut nama_mhs. Sedangkan atribut komposit contohnya adalah alamat_mhs.
Alasannya karena alamat_mhs masih dapat diuraikan lagi menjadi alamat, nama_kota,
kode_pos, yang masing-masingnya memiliki makna tersendiri.

57

NIM

Tabel 6.2 Himpunan Entity Mahasiswa


NAMA_MHS
ALAMAT_MHS
Zahara
Jl. Raya No. 1, Jambi, 36127
Zamzami
Jl. Motong No. 2, Surabaya, 60182
Zainab
Jl. Tol No.3, Jakarta, 20119
Zailangkung
Jl. Jalan No.4, Jakarta, 34214

Jalan
Jl. Raya No. 1
Jl. Motong No. 2
Jl. Tol No.3
Jl. Jalan No.4

Kota
Jambi
Surabaya
Jakarta
Jakarta

PRODI

Kode_Pos
36127
60182
20119
34214

3. Atribut Bernilai Tunggal (Singe-Valued Attribute) dan Atribut Bernilai Banyak (Multivalued
Attribute)
Atribut Bernilai Tunggal ditujukan pada atribut-atribut yang memiliki paling banyak satu nilai
untuk setiap baris data. Pada data mahasiswa, semua atributnya merupakan atribut bernilai
tunggal, karena atribut-atribut tersebut hanya berisi 1 nilai. Jika ada seorang mahasiswa
yang memiliki 2 buah alamat, maka hanya satu saja yang diisikan dalam atribut
alamat_mhs.
Sedangkan, Atribut Bernilai Banyak ditujukan pada atribut yang dapat berisi lebih dari 1 nilai,
tetapi jenisnya sama. Misalnya terdapat tabel jadwal_kuliah, maka atribut bernilai banyak
terletak pada atribut waktu.
Tabel 6.3 Jadwal_Kuliah
NAMA_MATA_KULIAH
WAKTU
RUANG
Struktur Data
Senin, 08.00 - 09.30

Kamis, 09.30 - 11.00


Basis Data
Selasa, 16.30 18.00

Rabu, 16.30 18.00


Bahasa Inggris
Jumat, 08.00 09.30

Kalkulus I
Senin, 09.30 11.00

Rabu, 16.30 18.00

NAMA_DOSEN

4. Atribut Harus Bernilai (Mandatory Attribute) dan Nilai Null


Ada sejumlah atribut pada tabel yang ditetapkan harus berisi data, jadi nilainya tidak boleh
kosong. Atribut semacam ini disebut Mandatory Attribute. Pada tabel Mahasiswa, yang
tergolong sebagai Mandatory Attribute adalah nim dan nama_mhs, karena setiap
mahasiswa yang ingin disimpan datanya dalam tabel tersebut, paling tidak harus diketahui
NIM dan Nama-nya. Sebaliknya ada pula atribut-atribut lain dalam tabel Mahasiswa tersebut
yang nilainya boleh kosong (Non Mandatory Attribute). Nilai (konstanta) Null digunakan
untuk menyatakan/mengisi atribut-atribut demikian yang nilainya memang belum siap atau
tidak ada.

58

5. Atribut Turunan (Derived Attribute)


Atribut turunan adalah atribut yang nilai-nilainya diperoleh dari pengolahan atau dapat
diturunkan dari atribut atau tabel lain yang berhubungan. Atribut demikian sebetulnya dapat
ditiadakan dari sebuah tabel karena nilai-nilainya bergantung pada nilai yang ada di atribut
lainnya.
Penambahan atribut angkatan dan ip (indeks prestasi) pada tabel Mahasiswa dibawah ini
merupakan contoh dari Atribut Turunan.
NIM
0602011
0603015
0701030
0702032

NAMA_MHS

Tabel 6.4 Mahasiswa


ALAMAT_MHS PRODI

ANGKATAN
2006
2006
2007
2007

IP
3.02
2.89
2.75
3.50

Pada contoh diatas, nilai-nilai pada atribut angkatan dapat diketahui dari atribut nim, dimana
dua karakter pertama dari nim menyatakan dua digit bilangan tahun masuknya mahasiswa
yang bersangkutan. Sedangkan pada atribut ip, nilai-nilainya diperoleh dari pengolahan
yang lebih rumit, yakni dengan menerapkan formula tertentu yang melibatkan atribut
indeks_nilai yang ada dalam tabel Nilai dan atribut sks yang ada dalam tabel Mata_Kuliah.
6.1.3 Relasi (Relationship) dan Himpunan Relasi (Relationship Sets)
Relasi menunjukkan adanya hubungan diantara sejumlah entitas yang berasal dari himpunan entitas
yang berbeda. Misalnya, entitas seorang mahasiswa dengan nim = 0602011 dan nama_mhs =
Zahara (dari tabel Mahasiswa) mempunyai relasi dengan entitas sebuah mata kuliah dengan
kode_mk = IF-110 dan nama_mk = Struktur Data. Relasi diantara kedua entitas tadi mengandung
arti bahwa mahasiswa tersebut mengambil/mempelajari mata kuliah tersebut. Kumpulan semua
relasi diantara entitas-entitas yang terdapat pada himpunan entitas tersebut membentuk Himpunan
Relasi (Relationship Sets). Disamping himpunan entitas Mahasiswa yang telah ditunjukkan diatas,
terdapat pula himpunan entitas Mata_Kuliah dengan struktur data dan contoh data yang dibahas
sebelumnya :
KODE_MK
IF-110
IF-310
KU-234
MA-115

Tabel 6.5 Mata_Kuliah


NAMA_MK
SKS SEMESTER
Struktur Data
3
1
Basis Data
4
3
Bahasa Inggris
2
2
Kalkulus I
3
1

Himpunan entitas Mata Kuliah ini memiliki relasi dengan himpunan entitas Mahasiswa yang dapat
digambarkan sebagai berikut :

59

Tabel 6.4 Mahasiswa


NIM
NAMA_MHS
0602011 Zahara
0603015 Zamzami
0701030 Zainab
0702032 Zailangkung

...
...
...
...
...

...
...
...
...
...

Tabel 6.5 Mata_Kuliah


KODE_MK
NAMA_MK
IF-110
Struktur Data
IF-310
Basis Data
KU-234
Bahasa Inggris
MA-115
Kalkulus I

...
...
...
...
...

...
...
...
...
...

Dari gambar diatas terlihat adanya relasi antara entitas Zahara dengan entitas Basis Data. Relasi
ini mengandung makna bahwa mahasiswa bernama Zahara mengambil/mempelajari mata kuliah
Basis Data. Lalu entitas Zamzami mempunyai 2 relasi yaitu dengan entitas Struktur Data dan
entitas Kalkulus I, yang berarti bahwa entitas Zamzami tersebut mengambil/mempelajari 2
matakuliah, yaitu Struktur Data dan Kalkulus I. Selain itu terlihat bahwa entitas Zainab berelasi
dengan entitas Bahasa Inggris, yang berarti bahwa Zainab hanya mengambil/mempelajari
matakulaih Bahasa Inggris. Sedangkan entitas Zailangkung terlihat tidak berelasi dengan entitas
manapun dari tabel mata_kuliah.
6.1.4

Kardinalitas/Derajat Relasi
Kardinalitas relasi menunjukkan jumlah maksimum entitas yang dapat berelasi dengan
entitas pada himpunan entitas yang lain. Pada contoh sebelumnya, dapat dilihat bahwa entitasentitas pada himpunan entitas Mahasiswa dapat berelasi dengan satu entitas, banyak entitas atau
bahkan tidak satupun entitas dari himpunan entitas Mata_Kuliah. Begitu juga sebaliknya, entitasentitas pada himpunan entitas Mata_Kuliah ada yang berelasi dengan beberapa entitas pada
himpunan entitas Mahasiswa dan ada pula yang berelasi dengan satu entitas pada himpunan entitas
Mahasiswa.
Dari sejumlah kemungkinan banyaknya hubungan antar entitas tersebut, kardinalitas relasi
merujuk pada hubungan maksimum yang terjadi dari himpunan entitas yang satu kehimpunan
entitas yang lain dan begitu juga sebaliknya. Pada contoh diatas, maka hubungan maksimum dari
himpunan entitas Mahasiswa ke himpunan entitas Mata_Kuliah adalah Banyak (lebih dari satu) dan
demikian pula hubungan maksimum dari himpunan entitas Mata_Kuliah ke himpunan entitas
Mahasiswa adalah Banyak (lebih dari satu). Dengan demikian kardinalitas relasi antara kedua
himpunan entitas adalah Banyak ke Banyak.

60

Kardinalitas relasi yang terjadi diantara dua himpunan entitas (misalnya A dan B) dapat berupa :
- Satu ke Satu (One to One)
Yang berarti setiap entitas pada himpunan entitas A berhubungan dengan paling banyak dengan
satu entitas pada entitas himpunan B, demikian juga sebaliknya.
A

Entitas 1

Entitas 1

Entitas 2

Entitas 2

Entitas 3

Entitas 3

Gambar 6.1 Kardinalitas relasi satu kesatu


-

Satu ke Banyak (One to Many)


Yang berarti setiap entitas pada himpunan entitas A dapat berhubungan dengan banyak entitas
pada himpunan entitas B, tetapi tidak sebaliknya, dimana setiap entitas pada himpunan entitas B
berhubungan paling banyak dengan satu entitas pada himpunan entitas A.
A

Entitas 1

Entitas 1

Entitas 2

Entitas 2

Entitas 3

Entitas 3

Gambar 6.2 Kardinalitas relasi satu ke banyak


-

Banyak ke Satu (Many to One)


Yang berarti setiap entitas pada himpunan entitas A berhubungan dengan paling banyak dengan
satu entitas pada himpunan entitas B, tetapi tidak sebaliknya, dimana setiap entitas pada
himpunan entitas A berhubungan dengan paling banyak satu entitas pada himpunan entitas B.
A

Entitas 1

Entitas 1

Entitas 2

Entitas 2

Entitas 3

Entitas 3

Gambar 6.3 Kardinalitas relasi banyak ke satu


-

Banyak ke Banyak (Many to Many)


Yang berarti setiap entitas pada himpunan entitas A dapat berhubungan dengan banyak entitas
pada himpunan entitas B, dan demikian juga sebaliknya, dimana setiap entitas pada himpunan
entitas B dapat berhubungan dengan banyak entitas pada himpunan entitas A.

61

Entitas 1

Entitas 1

Entitas 2

Entitas 2

Entitas 3

Entitas 3

Gambar 6.4 Kardinalitas relasi Banyak ke Banyak


6.2. Diagram Entity-Relationship (Diagram ER/ERD)
Model Entitity Relationship yang berisi komponen-komponen himpunan entitas dan himpunan relasi
yang masing-masing dilengkapi dengan atribut-atribut yang merepresentasikan seluruh fakta dari
dunia nyata yang ditinjau, dapat digambarkan dengan sistematis dengan menggunakan Digram
Entity Relationship (Diagram ER).
ERD berbeda dengan DFD. ERD merupakan suatu model jaringan yang menggunakan susunan
data yang tersimpan dalam sistem secara abstrak menekankan pada struktur-struktur dan
relationship data, sedangkan DFD merupakan model jaringan fungsi yang akan dilaksanakan oleh
sistem.
Notasi-notasi simbolik didalam Diagram ER yang dapat digunakan adalah :
- Persegi panjang, menyatakan himpunan entitas
Entity

Gambar 6.5 Notasi Entiti


-

Lingkaran/ Ellips, menyatakan atribut (atribut yang berfungsi sebagai primary key
digarisbawahi)
A

Gambar 6.6 Notasi Atribut


-

Belah Ketupat, menyatakan himpunan relasi


R

Gambar 6.7 Notasi Relasi (hubungan)


-

Garis, sebagai penghubung antara himpunan relasi dengan himpunan entitas dan himpunan
entitas dengan atributnya
Gambar 6.8 Notasi Penghubung

62

Kardinalitas relasi dapat dinyatakan dengan banyaknya garis cabang atau dengan
pemakaian angka (1 dan 1 untuk relasi satu ke satu, 1 dan N untuk relasi satu ke banyak
serta M dan N untuk relasi banyak ke banyak).

Berikut adalah contoh penggambaran relasi antar himpunan entitas lengkap dengan kardinalitas
relasi dan atribut-atributnya :
1. Relasi satu ke satu (one to one)
Contoh :
Terdapat relasi antara himpunan entitas Dosen dengan himpunan entitas Program_Studi.
Himpunan relasinya diberi nama Mengepalai. Pada relasi ini, setiap dosen paling banyak
mengepalai satu program studi. Dan setiap program studi pasti dikepalai oleh paling banyak
satu orang dosen. Maka penggambarannya adalah :
NIP

NAMA_DOSEN

NIP

KODE_PS

1
DOSEN

KODE_PS

NAMA_PS

1
MENGEPALAI

PROGRAM_STUDI

Gambar 6.9 Contoh relasi One to One (1 : 1)


Pada ERD diatas terlihat bahwa himpunan entitas Dosen dan himpunan entitas Program_Studi
masing-masing memiliki dua buah atribut saja. Sementara itu, pada himpunan relasi Mengepalai
juga terdapat 2 buah atribut yang secara bersama-sama berfungsi sebagai primary key
(selanjutnya disebut key saja) pada himpunan relasi tersebut. Karena kedua atribut/key tersebut
sebetulnya berasal dari atribut key dari masing-masing himpunan entitas yang dihubungkannya,
maka keduanya digolongkan sebagai key tamu/asing (foreign key). Adanya kedua atribut key
tersebut selanjutnya akan dapat menunjukkan dosen mana yang mengepalai suatu program
studi (kepala program studi) atau sebaliknya program studi mana yang dikepalai oleh seorang
dosen.
2. Relasi satu ke banyak (one to many)
Contoh :
Terdapat relasi antar himpunan entitas Dosen dengan himpunan entitas Mata_Kuliah. Himpunan
relasinya bernama Mengajar. Pada relasi ini, setiap dosen dapat mengajar lebih dari satu mata
kuliah, sedangkan setiap mata kuliah hanya diajar oleh paling banyak satu orang dosen.
Penggambarannya adalah seperti tampak dibawah ini :
NIP

NAMA_DOSEN

NIP

KODE_MK

1
DOSEN

KODE_MK

NAMA_MK

N
MENGAJAR

WAKTU

TEMPAT

MATA_KULIAH

SKS

SEMESTER

Gambar 6.10 Contoh Relasi One to Many (1 : N)


Key asing (foreign key) dari himpunan relasi Mengajar diatas adalah Nip dan Kode_MK, yang
masing-masing berasal dari himpunan entitas Dosen dan entitas Mata_Kuliah. Tetapi, disamping

63

kedua atribut tersebut terdapat pula 2 atribut tambahan yang tidak berasal dari salah satu
himpunan entitas yang dihubungkannya. Hal ini memang dimungkinkan dan bahkan bisa saja
terjadi. Dengan adanya 4 atribut tersebut pada relasi Mengajar, maka dapat diketahui jadwal
pelaksanaan setiap mata kuliah beserta dosen yang mengajarkannya.
3. Relasi banyak ke banyak (many to many)
Terdapat relasi antara himpunan entitas Mahasiswa dengan himpunan entitas Mata_Kuliah.
Himpunan relasinya diberi nama Mempelajari. Pada relasi ini, setiap mahasiswa dapat
mempelajari lebih dari satu mata kuliah. Demikian juga sebaliknya, setiap mata kuliah dapat
dipelajari oleh lebih dari satu orang mahasiswa. Maka penggambarannya adalah sebagai berikut
:
NIM

NAMA_MHS

NIM

KODE_MK

N
MAHASISWA

TGL_LHR

KODE_MK

N
MEMPELAJARI

ALAMAT

NAMA_MK

NILAI

MATA_KULIAH

SKS

SEMESTER

Gambar 6.11 Contoh Relasi Many to Many (M : N)


Keberadaan himpunan relasi Mempelajari diatas akan memiliki dua fungsi yaitu untuk
menunjukkan mata kuliah mana saja yang diambil oleh seorang mahasiswa (atau mahasiswa
mana saja yang mengambil mata kuliah tertentu) dan nilai yang diperoleh seorang mahasiswa
untuk mata kuliah tertentu (tentu saja setelah data nilai tertentu disimpan).
6.2.1 Tahapan Pembuatan ERD
Diagram ER atau ERD selalu dibuat secara bertahap. Secara teknis langkah-langkah yang dapat
ditempuh untuk menghasilkan ERD adalah sebagai berikut :
1. Mengidentifikasi dan menetapkan seluruh himpunan entitas yang akan terlibat.
2. Menentukan atribut-atribut key dari masing-masing himpunan entitas.
3. Mengidentifikasi dan menetapkan seluruh himpunan relasi diantara himpunan entitas
himpunan entitas yang ada beserta foreign key-nya.
4. Menentukan derajat/kardinalitas relasi untuk setiap himpunan relasi.
5. Melengkapi himpunan entitas dan himpunan relasi dengan atribut-atribut deskriptif-nya (non
key).
1. Mengidentifikasi dan menetapkan seluruh himpunan entitas yang akan terlibat.
Sebagaimana telah disebutkan, entitas mewakili sebuha kumpulann entitas/individu yang jelas
ekstensinya dan dapat berdiri sendiri. Akan tetapi, entitas mana saja yang akan kita pilih/libatkan
tidak hanya tergantung pada jenis topik/sistem yang kita tinjau, tetapi juga ditentukan oleh
beberapa jauh ruang lingkup yang ingin kita akomodasi dalam rancangan basis data kita.
Dalam lingkup sistem perkuliahan sesungguhnya ada banyak sekali entitas yang bisa kita
libatkan seperti : Mahasiswa, Kuliah, Pratikum, Dosen, Aisisten, Ruang, Jurusan, Literatur.
Namun dalam lingkup sistem perkuliahan yang sederhana sesuai dengan pembahasan yang
lalu, maka ada sedikitnya 3 buah entitas yakni : Mahasiswa, Kuliah, Dosen.
2. Menentukan atribut-atribut key dari masing-masing himpunan entitas.
Atribut-atribut yang kita sertakan di masing-masing entitas merupakan atribut terpenting yang
dapat mengidentifikasi setiap entitas yang ada didalamnya. Keberadaan atribut ini juga akan
memberikan keyakinan tentang kebenaran eksistensi dari tiap entitas. Salah satu ciri adalah

64

kemandiriannya. Kemadirian itukana terlihat dari kejaelasan atribut yang menjadi key dan
perbedaannya dengan key yang ada di entitas yang lain.
3. Mengidentifikasi dan menetapkan seluruh himpunan relasi diantara himpunan entitas
himpunan entitas yang ada beserta foreign key-nya.
Langkah ini merupakan langkah yang terpnting dalam pembentukkan Diagram E-R. Ketepatan
kita dalam menentukan kardinalitas dari relasi-relasi yang terjadi diantara entitas akan sangat
menentukan kualitas rancangan basis data yang kita bangun. Kardinalitas relasi yang kita
tetapkan harus dapat mengakomodasi semua fakta yang ada, dan menjamin semua kebutuhan
penyajian data, tetapi di sisi lain juga harus dibuat seoptimal mungkin agar memakan ruang
penyimpanan yang lebih besar, dan tidak menyulitkan operasi pengelolaan data. Untuk itulah
relasi-relasi yang sifatnya tidak langsung harus ditiadakan.
4. Menentukan derajat/kardinalitas relasi untuk setiap himpunan relasi.
Berangkat dari fakta yang ada, atribut-atribut deskriftif yang adapt kita sertakan paa masingmasing entitas ke relasi. Keberadaan atribut deskriptif ini merupakan refleksi pengakomodasian
terhadap fakta-fakta yang memang ada, dan kebutuhan penyajian data disaat yang lain. Atribut
deskriftif ini juga tidak banyak berperan dalam membentuk pemahaman kita dalam membaca
sebuah Diagram E-R, bahkan cenderung menggangu, karean biasanya jumlah atribut demikian
cukup banyak. Karena itu, khususnya pada sebuah sistem yang besar dan kompleks, langkah
terakhir ini seringkali tidak dilakukan, sehingga Diagram E-R sampai pada langkah ketiga atau
kedua saja.
6.2.2 Diagram ER dengan Kamus Data (Data Dictionary)
Objektif utama dari pembuatan ERD adalah untuk menunjukkan objek-objek (himpunan entitas) apa
saja yang ingin dilibatkan dalam sebuah basis data, dan bagaimana hubungan yang terjadi diantara
objek-objek tersebut. Pada sebuah sistem yang ruang lingkupnya besar dan kompleks,
penggambaran atribut-atribut dalam sebuah ERD seringkali malah menganggu objektif yang ingin
dicapai tersebut. Sehingga dalam penggambarannya dapat dipisah antara pendeklarasian atributatribut ini dari ERD, dan menyatakannya dalam sebuah kamus data berisi daftar atribut yang diapit
kurung kurawal ({ dan }). Atribut yang berfungsi sebagai key juga dibedakan dengan yang bukan
key dengan menggarisbawahi atribut tersebut.
Karena itu, diperbolehkan untuk menggambarkan ERD dengan tambahan kamus Data seperti
berikut ini:
N
MAHASISWA

N
MEMPELAJARI

MATA_KULIAH

MENGAJAR

DOSEN

Gambar 6.12 Contoh ERD


Kamus Data :
Mahasiswa = { nim, nama_mhs, alamat, tgl_lhr}
Mata_Kuliah = { kode_mk, nama_mk, sks, semester}
Dosen = {nip, nama_dosen}
Mempelajari = { nim, kode_mk, nilai}
Mengajar = {kode_mk, nama_dos, waktu, tempat}

65

LATIHAN :
Perhatikan abstraksi dibawah ini :
Sebuah Poliklinik yang sedang berkembang ingin meningkatkan pelayanan terhadap para
pasiennya dengan cara membangun sistem pelayanan pasien yang dibantu oleh komputer. Sistem
yang akan dibuat dibatasi hanya untuk medical record dan administrasi pembayaran.
Ketika pasien mendaftar, maka akan dilakukan pengecekan terhadap data yang telah
disimpan untuk mencari apakah pasien tersebut pernah terdaftar atau belum. Bila belum terdaftar
maka data lengkap pasien akan dimasukkan.
Sebagai salah satu bahan masukan bagi dokter dalam melakukan diagnosa adalah catatan
kesehatan pasien.
Setelah selesai pemeriksaan, dokter memberikan data tentang diagnose tehadap pasien
tersebut, serta menuliskan resep. Dokter juga harus melaporkan tentang injeksi apa saja yang telah
diberikan.
Dari resep yang dibuat dokter, dikeluarkan biaya tentang obat yang harus dibayar.
Selanjutnya petugas Poliklinik akan menyerahkan obat beserta rincian biaya tersebut (biaya obat
dan pemeriksaan). Data tentang diagnosa dan obat yang diberikan dicatat oleh petugas rumah sakit
sebagai catatan kesehatan pasien.
Direktur Poliklinik berharap agar sistem yang akan dibuat dapat memberikan laporan
keuangan dan laporan pemakaian obat.
Dari Abstraksi diatas buatlah Entity Rrelationship Diagram-nya!

66

STRUCTURED QUERY LANGUAGE


(SQL)

7.1 Sekilas Tentang SQL


DBMS umumnya menyediakan program khusus (utilitas/utility) yang dapat digunakan secara
interaktif untuk melakukan berbagai operasi terhadap basis data, seperti pembuatan tabel,
penghapusan tabel, penambahan data, pengubahan data, pencarian data, penghapusan data dan
lain-lain. Namun disamping adanya program khusus itu, DBMS juga umumnya menyediakan
perintah (dalam bentuk command-line, yakni perintah yang dituliskan pemakai) untuk maksud yang
sama.Perintah-perintah ini dapat diberikan (dan dikerjakan oleh DBMS) melalui utilitas lain yang juga
disediakan DBMS atau melalui program/aplikasi yang dibuat sendiri oleh pemakai. Kumpulan
perintah ini dapat disebut sebagai Bahasa Basis Data (Database Language). Karena DBMS yang
digunakan untuk mengelola basis data dan development tools yang digunakan untuk menulis
aplikasi basis data belum tentu dibuat (berasal dari) perusahaan pembuat perangkat lunak (vendor)
yang sama, maka diperlukan sebuah bahasa basis data yang sifatnya standar. Dengan bahasa yang
standar kita dapat menggunakan bahasa tersebut untuk mengakses data dimanapun, tanpa peduli
DBMS yang digunakan. Atau sebaliknya, data yang dikelola sebuah DBMS dapat dari manapun,
tidak peduli development tools yang digunakan. Dengan begitu terdapat independensi antara DBMS
dan development tools.
Ada banyak sekali basis data yang pernah dibuat untuk masing-masing DBMS. Namun akhirnya
yang menjadi standar adalah SQL. SQL merupakan kependekan dari Structured Query Language
(Bahasa Query Terstruktur). Istilah Query Language memang tidak tepat sama dengan istilah
Bahasa Basis Data (Database Language). Bahasa Basis Data terdiri atas Data Definition Language
(DDL) dan Data Menipulation Language (DML). DDL merujuk pada kumpulan perintah yang dapat
digunakan untuk mendefinisikan objek-objek basis data, seperti membuat sebuah tabel basis data
atau indeks primer/sekunder. Sedangkan DML mengacu pada kumpulan perintah yang dapat
digunakan untuk melakukan manipulasi data, seperti penyimpanan data kesuatu tabel, lalu
kemudaian mengubahnya atau menghapusnya atau hanya sekedar menampilkannya kembali. DML
inilah sebenarnya yang lebih dekat dengan Query Language (QL). Perbedaan antara QL dan
DMLterletak pada penekanannya. DML lebih ditekankan pada aspek pengenaan operasi terhadap
suatu data. Operasi tersebut dapat berupa penyimpanan data baru kedalam tabel, pengubahan data
lama yang telah ada dalam tabel, penghapusan data lama yang telah ada dalam tabel atau sekedar
mengambil data dari dalam tabel. Aspek pencarian ini sedemikian penting karena sebetulnya itulah
inti dari segenap upaya kita melakukan pengelolaan data.
Membentuk basis data artinya menempatkan data dalam orginasasi/susunan tertentu.
Organisasi/susunan tersebut bisa saja berupa pengelompokan data (sebagai tabel basis data) atau
bisa pula berupa penyusunan record-record didalam (struktur penyimpanan). Bahkan disejumlah
DBMS, penempatan data ini juga hingga pada taraf mempertimbangkan aspek fisik dari media
penyimpanan. Jika data tidak diorganisasikan, maka tidak ada basis data. Mengapa data sedemikain
penting untuk diorganisasikan sebegitu rupa? Tentu saja agar pencarian data dikemudian hari dapat
dilakukan dengan cepat dan mudah. Pencarian (query) itulah yang merupakan latar belakang utama
mengapa basis data itu ada. Manipulasi data dan Query merupakan dua hal yang saling
berhubungan satu sama lain. Manipulasi data merupakan proses sesungguhnya yang diinginkan
user, sedangkan query merupakan prasyarat untuk melakukan hal tersebut. Jika user ingin
melakukan perubahan data, maka hal itu selalu diawali dengan pencarian data didalam disk. Bahkan

67

jika user ingin melakukan penyimpanan data baru, maka penyimpanan itu juga selalu diawali dengan
pencarian (lokasi data) didalam disk.
Sebagai sebuah standar, sejalan dengan perkembangan teknologi basis data dan teknologi
komputer pada umumnya, SQL sendiri mengalami beberapa perubahan (penyempurnaan). SQL
mula-mula dibuat pada tahun 1970 dengan Sequel. Standarisasi yang pertama dibuat pada tahun
1986 oleh ANSI (American National Standards Institute) dan ISO (International Standard
Organization), yang disebut sebagai SQL-86. SQL-86 ini diperbaharui pada tahun 1989 menjadi
SQL-89. Standar terakhir yang dibuat dan digunakan hingga saat ini adalah SQL-92 yang
dikeluarkan pada tahun1992.
Kendati SQL sendiri merujuk pada Query Language, tidak berarti perintah-perintah yang menjadi
standard hanyalah perintah-perintah yang berhubungan dengan query data. Selain mencakup DML,
SQL juga telah dilengkapi dengan berbagai perintah yang tergolong DDL dab perintah kontrol
transaksi (transaction control).
7.2 Query Dasar
Data Definition Language (DDL) berkaitan dengan perintah-perintah untuk pendefinisian objek-objek
basis data. Salah satu objek terpenting adalah tabel. Berikut ini adalah sintaks SQL untuk
melakukan pembuatan tabel baru didalam basis data :
create tabel t (A1 D1, A2 D2, , An Dn)

dimana :
- T adalah nama tabel yang akan dibuat
- A1, A2,..., An adalah nama-nama atribut yang akan terdapat didalam tabel t
- D1, D2, ..., Dn adalah domain nilai masing-masing atribut tersebut yang ditentukan
berdasarkan tipe datanya
Sebelum perintah tersebut dapat digunakan, maka kita terlebih dahulu harus mengetahui tipe data
apa saja yang dapat kita gunakan. Dalam SQL-92, tipe data yang menjadi standar adalah :
- Char(n), untuk atribut yang bernilai string dengan panjang tetap sebesar n karakter (jika
banyaknya karakter yang diisikan ke atribut dengan tipe ini kurang dari n, maka sisanya akan
diisi dengan spasi.
- Varchar(n), untuk atribut yang bernilai string dengan panjang fleksibel, tapi maksimal
sebanyak n kharakter.
- Int atau integer, untuk atibut yang bernilai integer 2 byte.
- Smallint, untuk atribut yang bernilai integer 1 byte.
- Numeric(p,d), untuk atribut yang bernilai pecahan fixed-point dengan panjang p digit
(termasuk tanda) dan d digit untuk bilangan pecahan.
- Real, double precision, untuk atribut yang bernilai floating point.
- Float(n), untuk atribut yang bernilai pecahan floatingpoint dengan presisi n digit.
Date, untuk atribut yang bernilai penanggalan (trdiri atas 4 digit tahun, bulan dan tanggal).
Time, untuk atribut yang bernilai waktu (terdiri atas jam, menit dan detik).
Berikut ini adalah contoh perintah SQL untuk membuat tabel Mahasiswa :
create table Mahasiswa
(NIM char(6),
Nama_Mhs varchar (30),Alamat_Mhs varchar (60),Tgl_lahir date)

68

Tabel yang telah dibuat juga dapat dibatalkan keberadaannya (penghapusan tabel) dengan
menggunakan perintah SQL dengan sintaks berikut ini :
drop tabel t

Contoh penghapusan terhadap tabel Mahasiswa :


drop tabel mahasiswa

Jika terhadap tabel yang dibuat, ingin disertakan pula adanya indeks primer berdasarkan atribut
tertentu didalam tabel, maka dapat digunakan klausa primary key. Berikut ini adalah contoh ekspresi
SQL untuk pembuatan tabel Mahasiswa sekaligus dengan pendefinisian indeks primer berdasarkan
NIM :
create tabel Mahasiswa
(NIM char(6),
Nama_Mhs varchar (30),
Alamat_Mhs varchar (60),
Tgl_lahir date,
primary key (NIM))

Jika jumlah atribut yang membentuk Indeks Primer ada lebih dari satu, seperti yang ada pada tabel
Nilai, contoh ekspresi SQL-nya adalah sebagai berikut :
create tabel Nilai
(NIM char(6),
Kode_Kul char(6),
Indeks_Nilai char(1),
primary key (NIM, Kode_Kul))

Alter Tabel
Jika perintah update untuk memutakhirkan data dalam tabel, maka alter tabel digunakan untuk
memutakhirkan atribut/kolom di dalam tabel. Bentuk umum dari alter tabel sbb :
Alter table <nama tabel>
Change <nama kolom>
<update kolom>
Contoh untuk perintah alter tabel sebagai berikut :
Alter table pengguna
Change ID_pengguna ID_pengguna INT(10) NOT NULL
Update kolom dituliskan secara lengkap seperti saat membuat tabel pertama kali. Meskipun
sebenarnya kita hanya mengubah tipe data dari varchar menjadi integer.
Insertion :
Pengisian data ke dalam tabel dapat ditempuh dengan perintah insert into. Pengisian satu per satu
bisa ditempuh dengan
insert into kurir values ("dewi", "3", "20060910","08.00.00", "9908")

69

perintah di atas berfungsi untuk mengisikan data ke dalam tabel secara urut dari kolom paling kiri
hingga paling akhir. Values yang diberikan harus sama jumlahnya dengan kolom yang tersedia di
dalam tabel. Apabila ada data kolom yang kosong maka bisa digantikan dengan
insert into kurir values ("dewi", "3", "20060910","", "9908")
yang menandakan bahwa pada kolom jam pengiriman berisi data null. Data null juga disesuaikan
dengan tipe data kolom tersebut. Jika kolom bertipe data non angka maka nilai null ditandai dengan
tanda petik 2x. Jika kolom bertipe data angka (integer atau float) data null cukup dengan ditandai
dengan tanda spasi. Cara pengisian sekaligus menggunakan perintah
insert into kurir values ("dewi", "3", "20060910", "08.00.00", "9908"),
("Tono", "4", "20060908","10.00.00", "4459");
Cara pengisian yang lain menggunakan perintah
insert into pelanggan(ID_pelanggan, nama_pelanggan) values ("140","Gugun");
untuk mengisikan data pada kolom tertentu. Pengisian seperti ini tidak menghiraukan apakah kolom
yang seharusnya NOT NULL terisi atau tidak. Cara ini digunakan seperlunya, sebab bisa
menimbulkan error seperti kolom primary key tidak terisi.
Berikut ini adalah contoh perintah SQL untuk melakukan penambahan record baru ke tabel
Mahasiswa :
insert into Mahasiswa (NIM, Nama_Mhs, Alamat_Mhs, Tgl_Lahir)
values (2007001, Faza Raihana, Jl Arun No 10a, Jambi,
23/09/2005)

Atau
insert into Mahasiswa
values (2007001, Faza Raihana, Jl Arun No 10a, Jambi,
23/09/2005)

Jika ingin melakukan penambahan record baru dengan perintah berikut :


insert into Mahasiswa (NIM, Nama_Mhs, Alamat_Mhs)
values (2007001, Faza Raihana, Jl Arun No 10a,
Jambi)

Maka atribut Tgl_Lahir yang tidak disebutkan dalam perintah insert tersebut akan diisi dengan nilai
null.
Delete :
Delete yang dilakukan hanya bisa diberikan pada record, bukan pada data kolom tertentu. Untuk
menghapus data pada kolom tertentu menggunakan perintah update. Sintaks delete secara umum
berbentuk
Delete form <tabel>
Where <kondisi>

70

Contoh sintaks delete sbb :


Delete from pelanggan
Where status = keluar
Bentuk lainnya yaitu
Delete from transaksi
Where total_transaksi between 0 and 49999
Perbedaan antara contoh delete di atas dengan sebelumnya adalah kondisi yang dipakai. Jika data
berupa angka, memungkinkan kondisi berupa suatu range nilai. Filtering pada delete dapat berupa
fungsi select seperti
Delete from pelanggan
Where nama_cabang in (Select nama_cabang
From cabang
Where nama_cabang = Gading)
tentunya select yang dilakukan hanya satu kolom karena pencocokan nama_cabang hanya bisa
dengan satu kolom. Filtering juga bisa berupa fungsi agregat
Delete from pelanggan
Where total_transaksi < (select avg(total_transaksi)
From transaksi)
Dari fungsi select menghasilkan sebuah nilai ratarata dari seluruh total_transaksi yang dilakukan
pelanggan di tabel transaksi. Apabila ada data di kolom total_transaksi tabel pelanggan yang kurang
dari nilai ratarata tersebut, maka pelanggan terkait akan dihapus.
Yang harus diperhatikan dalam delete adalah, fungsi ini hanya dapat melibatkan satu tabel. Terlihat
dalam tabel setelah from hanya berisi sebuah tabel. Cara ini berbeda dengan from pada fungsi
select (dibahas selanjutnya) yang bisa melibatkan lebih dari satu tabel.
Update :
Update merupakan perintah untuk mengubah data yang sudah ada di dalam tabel. Perintah update
memiliki sintaks secara umum sebagai berikut
Update <tabel>
Set <nama kolom> = <value>
Where <kondisi>
Contoh perintah update sebagai berikut :
Update harga SET Biaya= 19000 WHERE ID_kota='BDG' AND
Kode_jenis=2 AND Berat_awal=2 AND Berat_akhir=3 AND Biaya=17000
Perintah update di atas adalah untuk mengganti data biaya pada tabel harga yang memiliki ID_kota
= BDG, Kode_jenis = 2, Berat_awal = 2, Berat_akhir = 3, dan biaya = 17000, dengan nilai 19000.
Set menginstruksikan penggantian nilai pada kolom tertentu, dapat berupa nilai konstan seperti
contoh di atas atau sebuah ekspresi seperti Update harga set biaya = biaya + 5000

71

Ada cara lain untuk lebih menyingkat perintah update, namun perintah ini hanya berlaku pada tabel
yang memiliki primary key. Misalnya :
Update transaksi SET Nama_kantor= 'FAT' WHERE ID_transaksi='10345'
Perintah yang lain untuk mengubah 2 data kolom sekaligus, sebagai berikut :
Update transaksi SET Nama_kantor= 'HER', kode_pos = "88970"
WHERE ID_transaksi='10345'
Perintah update juga bisa digunakan untuk menghapus data sebuah kolom pada tabel.
Misalnya :
Update pelanggan SET Nama_pelanggan= WHERE ID_pelanggan =137
Hasilnya data nama_pelanggan yang berID 137 akan dihilangkan/diset NULL. Perintah update yang
lain adalah
update harga
set biaya = case
when biaya > 30000 then 15000
when biaya > 50000 then 40000
else 50000
end;
Update dilakukan pada tabel harga kolom biaya di mana terdapat beberapa kondisi dengan perilaku
yang berbeda. Pada contoh terdapat tiga kondisi biaya, dimana tiap kondisi memiliki statement yang
berbeda.
Berikut ini adalah perintah SQL untuk mengubah nilai atribut SKS untuk mata kuliah tertentu :
update Kuliah
set SKS = 4
where Kode_Kul = IF-310

Perintah update juga dapat digunakan untuk melakukan perubahan dengan mengacu pada nilai
atribut yang lama (sebelum perubahan), misalnya untuk penambahan gelar didepan nama dosen
tertentu berikut ini :
update Dosen
set Nama_Dosen = Prof. + Nama_Dosen
where Kode_Dos = 2

Perintah update tanpa klausa where berikut ini dilakukan untuk semua record :
update Nilai
set Indeks_Nilai = null

Yang mengakibatkan terisinya nilai null (pengosongan nilai untuk atribut Indeks_Nilai) pada semua
record ditabel Nilai.

72

7.3 Struktur lanjutan


Sebuah ekspresi SQL dasar sebenarnya hanya terdiri dari 3 klausa, yaitu select, from dan where:
- Klausa select, digunakan untuk menetapkan data atribut (field) yang diinginkan sebagai hasil
query.
- Klausa from, digunakan untuk menetapkan tabel (atau gabungan tabel) yang akan ditelusuri
selama query data dilakukan.
- Klausa where, yang sifatnya opsional, digunakan sebagai predikat (kriteria) yang harus dipenuhi
dalam memperoleh hasil query.
Sintaks atau cara penulisan dari ekspresi SQL dasar dengan 3 klausa tersebut adalah :
select A1 [ , A2,An]
from t1 [, t2,, tm]
[where P]

dimana :
- A1, A2,, An merupakan daftar atribut.
- t1, t2,, tm merupakan daftar tabel.
- P merupakan predikat query.
- [ ] merupakan tanda opsional (boleh digunakan atau tidak).
7.2.1 Klausa Select
Jika kita ingin menampilkan NIM dan Nama Mahasiswa yang ada ditabel Mahasiswa, maka kita
dapat menggunakan perintah SQL sebagai berikut :
select NIM, Nama_Mhs
from Mahasiswa

Sementara, perintah dibawah ini :


select Nama_Mhs
from Mahasiswa

akan menampilkan semua data mahasiswa yang ada. Jika (misalnya) didalam tabel terdapat dua
mahasiswa dengan nama yang sama (tapi NIM-nya berbeda), maka nama tersebut juga akan tampil
dua kali. Jika ingin agar nilai atribut yang tampil bersifat unik (sehingga dalam kasus tersebut,
walaupun ada banyak mahasiswa dengan nama yang sama, maka hanya salah satu nama yang
tampil), perintahnya :
select distinct Nama_Mhs
from Mahasiswa

Perlu diperhatikan, bahwa keunikan diatas hanya untuk nilai atribut yang disebutkan dalam klausa
select, bukan pada keseluruhan atribut yang ada didalam tabel yang disebutkan dalam klausa from.
Pada tampilan hasil query yang disusun berbentuk tabular, atribut yang disebutkan pada klausa
select akan dijadikan sebagai header (kepala tampilan tabular tersebut). User dapat mengganti
tampilan header, tanpa mengganggu proses dan hasil query-nya dengan menambahkan klausa
sebagai berikut :
select NIM, Nama_Mhs as nama,
alamat_Mhs as alamat
from Mahasiswa

73

Jika ingin melakukan query terhadap semua atribut yang ada pada tabel yang disebutkan pada
klausa from, kita dapat menuliskan kesemua atribut tersebut atau dengan menggunakan notasi yang
lebih singkat :
select *
from Mahasiswa

7.2.2 Klausa Where


Klausa ini berguna untuk menetapkan predikat atau kriteria yang harus dipenuhi dalam memperoleh
hasil query. Klausa ini boleh tidak digunakan, yang artinya query digunakan untuk semua record
yang ada dalam tabel yang disebutkan dalam klausa from. Berikut ini adalah contoh untuk
menampilkan semua atribut untuk mahasiswa dengan NIM = 2005001 :
select *
from Mahasiswa
where NIM = 2005001

Perhatikan nilai 2005001 diapit dengan tanda kutip tunggal. Penggunaan tanda kutip ini digunakan
terhadap nilai yang bertipe string (yang harus disesuaikan dengan tipe dari atribut NIM). Dapat juga
diterapkan predikat dengan operator relasi lainnya (<,>,<=,>=,<>) dan mengkombinasikannya
dengan operator logika (and, or dan not). Misalnya, ingin menampilkan semua matakuliah yang
diselenggarakan di semester 3 tetapi yang jumlah sks-nya lebih besar dari 2, ekspresi SQL-nya
adalah :
select *.*
from Kuliah
where semester = 3 and sks > 2

Perhatikan kembali, nilai 3 dan 2 tidak diapit tanda kutip tunggal, karena nilai tersebut bertipe
numerik sesuai dengan tipe untuk atribut semester dan atribut sks ditabel Kuliah.
Kita juga dapat melakukan query dengan kriteria yang berbentuk range nilai tertentu dengan
menggunakan tambahan klausa between, misalnya untuk menampilkan record-record kuliah yang
diselenggarakan antara semester 3 hingga semester 5 :
select *.*
from Kuliah
where semester between 3 and 5

Khusus untuk atribut yang bertipe string, kita dapat melakukan pencarian dengan pola tertentu,
dengan memanfaatkan karakter % (percent) atau tanda _ (underscore) dan tambahan klausa
like pada klausa where :
- tanda % berarti cocok untuk semua substring.
- tanda _ berarti cocok untuk semua karakter pada posisi yang sesuai.
Berikut ini adalah perintah untuk menampilkan record-record mahasiswa yang namanya diawali
dengan huruf A :
select *
from Mahasiswa
where Nama_Mhs like A%

Sedangkan ekspresi SQL berikut ini untuk menampilkan mahasiswa yang huruf/karakter kedua dari
namanya adalah a :

74

select *
from Mahasiswa
where Nama_Mhs like _a%

Dengan memanfaatkan karakter % dalam klausa where, kita dapat menampilkan mahasiswamahasiswa angkatan 1198 dengan perintah berikut :
select *
from Mahasiswa
where NIM like 98%

7.2.3 Klausa From


Klausa ini digunakan untuk menetapkan tabel yang kita jadikan sebagai sumber (lokasi) pencarian
data. Sebagaimana kita ketahui, basis data terdiri atas sejumlah tabel yang saling berhubungan.
Karena itu akan seringkali ada kebutuhan untuk melakukan query tidak hanya dari satu tabel, tapi
dengan merelasikan beberapa tabel sekaligus. Upaya ini dilakukan karena atribut-atribut yang kita
harapkan sebagai hasil query tidak hanya tersedia disebuah tabel, tapi berada disejumlah tabel.
Contoh-contoh sebelumnya hanya menunjukkan query terhadap sebuah tabel. Sebagai hasil
implementasi, tabel Kuliah terdiri dari atribut-atribut (field) Kode_Kul, Nama_Kul, SKS, Semester dan
Kode_Dos. Jika ingin menampilkan data kuliah berserta dosen-dosen yang mengajarkannya, maka
kita tidak hanya dapat melakukan query dari tabel Kuliah saja, karena data seperti nama dosen tidak
tersimpan ditabel ini, tetapi berada di tabel Dosen. Untuk memenuhi keinginan itu, kita dapat
menggunakan ekspresi SQL berikut :
select *
from Kuliah, Dosen
where Kuliah.Kode_Dos = Dosen.Kode_Dos

Perlu diperhatikan, melakukan query terhadap dua tabel atau lebih tidak bisa dilakukan secara
sembarangan. Tabel-tabel yang menjadi sumber query harus memiliki keterhubungan (relasi). Pada
perintah diatas, keterhubungan itu diwakili oleh kesamaan nilai pada atribut Kode_Dos dan kita tahu
bahwa atribut ini dimiliki oleh kedua tabel. Ekspresi Kuliah.Kode_Dos menunjukkan nilai Kode_Dos
yang berasal dari tabel Kuliah dan Dosen.Kode_Dos menunjukkan nilai Kode_Dos yang berasal
dari tabel Dosen.
Kita juga dapat menggunakan nama alias untuk tabel-tabel pada klausa from untuk
menyederhanakan penulisan. Ekspresi query diatas, dengan hasil yang sama dapat pula dinyatakan
dengan ekspresi sebagi berikut :
select *
from Kuliah k, Dosen d
where k.Kode_Dos = d.Kode_Dos

Terhadap sumber data (tabel query) yang banyak, tanda * (asterik) pada klausa select akan
mengacu pada semua atribut yng ada disemua tabel yang disebutkan pada klausa from. Jika kita
hanya ingin menampilkan atribut-atribut tertentu saja, maka nama tabel ataupun aliasnya dapat kita
gunakan untuk memperjelas atribut yang kita tampilkan tersebut, misalnya :
select k.Kode_Kul, k.Nama_Kul, d.Nama_Dos
from Kuliah k, Dosen d
where k.Kode_Dos = d.Kode_Dos

75

Ekspresi diatas dapat dikembangkan lagi, misalnya dengan mengganti header dari tampilan query
dan menampilkan hasil query hanya untuk mata kuliah yang diselenggarakan disemester 3 :
select k.Kode_Kul as Kode, k.Nama_Kul as Kuliah, d.Nama_Dos as Dosen
from Kuliah k, Dosen d
where k.Kode_Dos = d.Kode_Dos
and k.Semester = 3

Jika memang dibutuhkan, jumlah tabel yang harus dilibatkan dalam query boleh lebih dari 2 tabel. Di
tabel Nilai, misalnya, kita hanya memiliki data NIM, kode kuliah dan indeks nilai. Jika ingin
menampilkan data NIM, nama mahasiswa, nama mata kuliah dan indeks nilai-nya, maka kita harus
melibatkan 3 buah tabel sekaligus dengan ekspresi SQL sebagi berikut :
select n.NIM, m.Nama_Mhs, k.Nama_Kul, n.Indeks_Nilai
from Nilai n, Mahasiswa m, Kuliah k
where n.NIM = m.NIM
and n.Kode_Kul = k.Kode_Kul

7.2.4 Pengurutan Hasil Query


Dengan menggunakan ekspresi dasar SQL (dengan tiga klausa select, from dan where), maka hasil
query ditampilkan dengan urutan yang sesuai dengan struktur penyimpanannya yang kita terapkan
pada tabel query. Jika kita menggunakan struktur penyimpanan heap (tabel tanpa indeks primer),
maka hasil query ditampilkan berdasarkan kronologis penyimpanannya. Jika terhadap tabel query,
kita menggunakan struktur penyimpanan Sekuensial Berindeks (tabel yang memiliki indeks primer),
maka hasil query akan ditampilkan sesuai dengan atribut yang menjadi dasar indeks primer-nya.
Jika kita ingin menampilkan hasil query dengan urutan berdasarkan atribut tertentu, maka kita dapat
menambahkan klausa order by. Misal, jika tabel Mahasiswa memiliki Indeks Primer berdasarkan
atribut NIM (sehingga hasil query ke tabel ini akan disusun berdasarkan nilai atribut NIM tersebut),
tapi jika kita ingin menampilkan record-record mahassiswa berdasarkan urutan namanya, maka
ekspresi SQL-nya adalah :
select *
from Mahasiswa
order by Nama_Mhs

Urutan berdasarkan nama tersebut disusun secara menaik (dari abjad nama terkecil hingga
terbesar). Jika misalnya, kita ingin menampilkan berdasarkan tanggal lahir tapi secara menurun (dari
mahasiswa termuda hingga tertua), maka pada klausa order by kita sertakan pula klausa desc :
select *
from Mahasiswa
order by Tgl_Lahir desc

7.2.5 Pengelompokkan Hasil Query


Hasil dari select juga dapat dikelompokkan. Sebagai contoh, Nama pada tabel Mahasiswa akan
dikelompokkan berdasarkan Jenis Kelamin. Hal ini dapat dilakukan dengan menambahkan klausa
group by seperti tampak dibawah ini :
select Nama_Mhs
from Mahasiswa
group by JK

76

7.2.6 Klausa Having


Klausa having digunakan untuk mendukung klausa group by. Kegunaannya adalah untuk
menentukan kondisi bagi group by. Kelompok yang memenuhi kondisi having saja yang akan
dihasilkan. Sebagai contoh :
select Nama_Mhs
from Mahasiswa
group by JK
having sum (JK) = LK

7.3 Fungsi Agregasi


Disamping menampilkan nilai-nilai atribtut yang ada dalam tabel, sering pula ada kebutuhan untuk
menampilkan data-data agregasi, seperti banyaknya record, total nilai suatu suatu atribut, rata-rata
nilai atribut, nilai atribut terbesar ataupun nilai atribut terkecil. Data agregasi semacam itu dapat
diperoleh dengan menggunakan fungsi-fungsi berikut ini :
- Count untuk mendapatkan nilai banyaknya record hasil query.
- Sum untuk mendapatkan nilai total suatu atribut numerik hasil query.
- Avg untuk mendapatkan nilai rata-rata suatu atribut numerik hasil query.
- Max untuk mendapatkan nilai terbesar dari suatu atribut hasil query.
- Min untuk mendapatkan nilai terkecil dari suatu atribut hasil query.
Perkataan hasil query pada uraian masing-masing fungsi agregasi diatas penting untuk
diperhatikan, karena fungsi-fungsi tersebut memang hanya diberlakukan pada hasil query.
Contohnya, nilai SKS terbesar untuk semua mata kuliah (from Kuliah) belum tentu sama dengan
nilai SKS terbesar untuk Mata Kuliah yang ada di Semester 3 (from Kuliah where Semester = 3).
Berikut adalah contoh-contoh penggunaan fungsi agregasi tersebut :
1. Menampilkan banyaknya record Mahasiswa :
select count *
from Mahasiswa

2. Menampilkan banyaknya Mahasiswa Angkatan 98 :


select count *
from mahasiswa
where NIM like 98%

3. Menampilkan Total_SKS untuk Kuliah di Semester 2 :


select sum (SKS)
from Kuliah
where Semester = 2

4. Menampilkan rata-rata SKS untuk semua Mata Kuliah


select avg (SKS)
from Kuliah

5. Menampilkan indeks nilai terbesar yang diperoleh mahasiswa untuk mata kuliah dengan
kode kuliah IF-110 :
select max (indeks_nilai)
from Nilai
where Kode_Kul = IF-110

6. Menampilkan tanggal lahir paling tua yang ada di tabel Mahasiswa :


select min (Tgl_Lahir)
from Mahasiswa

Fungsi agregasi ini dapat pula dikombinasikan dengan klausa group by yang menyatakan adanya
pengelompokan record-record hasil query. Jika kita ingin menampilkan banyaknya record dan total

77

sks untuk mata kuliah yang dikelompokkan berdasarkan nilai semesternya, maka ekspresi SQL ini
dapat kita gunakan :
select Semester, count (*), sum (sks)
from kuliah
group by Semester
order by Semester

Penggunaan klausa order by diatas hanya untuk tujuan agar hasil query-nya diurutkan berdasarkan
nilai atribut semesternya.
Perlu juga diperhatikan, bahwa fungsi agregasi harus selalu diikuti dengan tanda kurung tersebut.
Karena fungsi count lebih berorientasi pada banyaknya record hasil query, maka kita boleh untuk
tidak menuliskan nama atribut spesifik diantara tanda kurung setelah fungsi ini (dan menggantinya
denagn tanda asterik).
7.4 Penggunaan Operator
Permintaan data melalui select juga dapat menggunakan berbagai operator yang dikenakan pada
klausa where. Operator-operator yang tersedia adalah And, Or, Not, Beween-And, In dan
Like. Sebagai contoh, query dibawah ini akan mendapatkan daftar Nama Mahasiswa yang berasal
dari prodi Teknik Informatika dan Sistem Informasi. Dalam hal ini, dapat digunakan operator And
pada klausa where, sebagaimana terlihat pada perintah SQL dibawah ini :
Select Nama_Mhs, Prodi
From Mahasiswa
Where Prodi = Teknik Informatika And Sistem Informasi

Operator Or dapat digunakan untuk menyatakan keadaan atau. Sebagai contoh, diperoleh nama
dan angkatan dari mahasiswa yang mendaftar pada tahun 2006 atau 2007 dengan cara seperti
dibawah ini :
Select Nama_Mhs, Angkatan
From Mahasiswa
Where Angkatan = 2006 Or Angkatan =

2007

Not merupakan operator yang menyatakan keadaan tidak. Misalnya, Prodi <> Teknik Informatika,
bisa ditulis juga dengan Not Prodi = Teknik Informatika, atau lebih lengkapnya :
Select Nama_Mhs, Prodi
From Mahasiswa
Where Not Prodi = Teknik Informatika

Operator Between-And disediakan untuk menangani operasi jangkauan. Sebagai contoh,


pernyataan untuk mendapatkan NIM dan Nama Mahasiswa dengan Angkatan 2005 hingga ke 2008
dapat berupa :
Select NIM, Nama_Mhs
From Mahasiswa
Where Angkatan Between 2005 And 2008

Operator In digunakan untuk menyatakan salah satu diantara. Misalnya, pernyataan dibawah ini
digunakan untuk memperoleh Nama Mahasiswa angkatan 2005, 2005 dan 2006 :
Select Nama_Mhs
From Mahasiswa

78

Where Angkatan In (2005, 2006, 2007)

Pernyataan diatas identik dengan :


Select Nama_Mhs
From Mahasiswa
Where angkatan = 2005 Or
angkatan = 2006 Or
angkatan = 2007

Operator Like digunakan untuk pencocokan, sebagai contoh, dapat diperoleh semua Mahasiswa,
yang namanya diawali dengan huruf Z dengan menggunakan perintah :
Select Nama_Mhs
From Mahasiswa
Where Nama_Mhs Like A%

7.5 Nilai Null


Atribut-atribut didalam sebuah tabel belum tentu telah memilikidata (nilai). Atribut-atribut yang belum
memiliki nilai tersebut, biasanya diisi (secara sementara), dengan nilai khusus, yaitu null. Didalam
query ada perlakuan khusus terhadap keberadaan nilai null ini. Jika, kita ketahui ditabel Nilai tidak
semua data Indeks_Nilai sudah terisi data, maka kita dapat menampilkan Kode_Kul dari tabel
tersebut, yang Indeks_Nilai-nya masih kosong, dengan perintah SQL berikut ini :
select distinc Kode_Kul
from Nilai
where Indeks_Nilai is null

Berikut ini adalah perintah SQL untuk menghitung banyaknya mata kuliah dalam tabel Nilai yang
atribut Indeks_Nilai-nya telah terisi data (bukan null) :
select count (*)
from Nilai
where Indeks_Nilai is not null

Fungsi count sendiri sebenarnya memiliki keistimewaan, yaitu jika asterik pada fungsi tersebut
diganti dengan nama atribut tertentu, maka yang dihitung hanyalah banyaknya record yang nilai
untuk atribut tertentu tersebut bukan null. Jadi perintah SQL diatas, dapat juga dinyatakan dalam
bentuk yang lebih singkat seperti dibawah ini :
Select count (Indeks_Nilai)
From Nilai

Pada perintah terakhir ini, walaupun klausa where tidak digunakan seperti perintah SQL
sebelumnya, tapi hasilnya akan sama saja dengan perintah SQL sebelumnya tersebut.
7.6 Manipulasi data
SQL juga dilengkapi dengan sejumlah perintah untuk melakukan manipulasi data seperti
penambahan reord baru, pengubahan nilai atribut an penghapusan record dalam suatu tabel.
7.6.1 Penambahan Record
Sintaks SQL untuk penambahan record baru kesebuah tabel adalah :
insert to t [(A1, A2,, An)]

79

value (v1, v2,,vn)

dimana :
o t adalah nama tabel yang akan mengalami penambahan record
o A1, A2,, An adalah nama-nama atribut yang akan diisi nilai
o v1, v2,vn adalah nilai-nilai yang akan mengisi atribut-atribut tersebut
Nama-nama atribut sesudah nama tabel dapat diabaikan (tidak dituliskan) jika kita ingin mengisikan
nilai kesemua atribut dengan urutan atribut sesuai dengan pendefinisian struktur yang telah
dilakukan pada saat pembuatan tabel. Tapi jika urutan atribut berbeda atau atribut yang ingin kita isi
nilai-nilainya tidak terjadi pada semua atribut yang ada ditabel tersebut, maka nama-nama atribut
tersebut harus dituliskan. Jika perintah SQL ini digunakan dalam aplikasi basis data, maka
sebaiknya sebaiknya user tidak mengambil resiko dengan meniadakan nama-nama atribut untuk
mangantisipasi adanya perubahan struktur tabel (khususnya dengan penambahan atribut ke tabel
tersebut).
7.6.2 Pengubahan Record
Sintaks SQL untuk pengubahan nilai atribut pada suatu record dari sebuah tabel adalah :
update t
set assigment
[where P]

dimana :
-

t adalah nama tabel yang akanmengalami perubahan record


assigment adalah ekspresi pemberian nilai baru untuk suatu atribut yang akan dirubah
P merupakan predikat atau kriteria untuk pemilihan record yang akan dikenai
perubahan, jika klausa where ini tidak digunakan, maka perubahan akan dilakukan pada
semua record pada tabel t

7.6.3 Penghapusan Record


Sintaks SQL untuk penghapusan record dari sebuah tabel adalah :
delete from t
[where P]

dimana :
- t adalah nama tabel yang akan mengalami pengjhapusan record
- P merupakan predikat atau kriteria untuk menentukan record mana yang akan dikenai
penghapusan, jika klausa where ini tidak digunakan, maka penghapusan akan dilakukan
pada semua record didalam tabel t tersebut.
Berikut ini adalah perintah SQL untuk menghapus record kuliah tertentu :
delete from kuliah
where Kode_Kul = IF-310

Berikut ini adalah perintah SQL untuk menghapus beberapa ditabel Kuliah :
delete from Kuliah
where Kode_Kul like MA%

80

Sedangkan perintah SQL berikut ini adalah untuk menghapus semua record dari tabel Kuliah
(sehingga tabel Kuliah menjadi kosong).
delete from Kuliah

7.7 Kontrol Transaksi


Operasi-operasi manipulasi data merupakan bagian dari suatu transaksi. Transaksi sendiri bisa
terdiri dari satu atau beberapa operasi manipulasi data. Perintah-perintah manipulasi data tidak akan
benar-benar disimpan (ditulis dalam disk) jika belum ada perintah kontrol transaksi. Perintah kontrol
transaksi itu adalah :
commit [work]

atau
roolback [work]

Jika perintah commit digunakan, maka semua operasi manipulasi basis data akan direkam kedalam
disk dan transaksi dinyatakan selesai. Sedang jika perintah rollback yang digunakan, maka semua
operasi manipulasi basis data yang belum di-commit, akan dibatalkan (tidak jadi disimpan kedalam
disk). Klausa work sifatnya opsional dan tidak berpengaruh terhadap pengertian kedua perintah
tersebut.
LATIHAN :
1. Diketahui isi dari tabel Pengarang adalah sebagai berikut :
Kd_Pengarang
101
102
103
104
105
106
107
108
109
110

Nama
Habib
Hamid
Hana
Haydar
Hani
Hadi
Huda
Humairah
Husna
Hanif

Alamat
Jl. Beo, No 1
Jl. Cendrawasih, No 2
Jl. Kakak Tua, No 3
Jl. Nuri, No 4
Jl. Kepodang, No 5
Jl. Merpati, No 6
Jl. Kutilang, No 7
Jl. Merak, No 8
Jl. Gelatik, No 9
Jl. Kasuari No 10

Kota
Padang
Palangkaraya
Palembang
Palangkaraya
Papua
Papua
Palembang
Palembang
Padang
Padang

JK
L
L
P
L
P
L
L
P
P
L

Berdasarkan tabel Pengarang diatas, tuliskan pernyataan SQL untuk :


a. Nama Pengarang yang Kd_Pengarang-nya 105.
b. Semua Nama pengarang yang tinggal di Palangkaraya.
c. Semua Pengarang yang berjenis kelamin Laki-laki.
d. Nama, alamat dan kota pengarang yag berjenis kelamin perempuan.
e. Kode Pengarang, Nama dan Alamat pengarang yang tinggal di kota Padang
2. Tuliskan pernyataan untuk menciptakan tabel bernama tabel Pegawai dengan komposisi
sebagai berikut :
a. NIP bertipe karakter, panjang 6.
b. Nama bertipe karakter, panjang 25.
c. Gaji bertipe numerik 8 digit.
d. Jadikan NIP sebagai Primary Key.

81

DAFTAR PUSTAKA
[FAT02]

Fathansyah, Ir. Basis Data. Bandung : Penerbit Informatika. 2002

[KAD00]

Kadir, Abdul. Konsep & Tuntunan Praktis Basis Data. Yogyakarta : Penerbit Andi,
2000.

[KRI00]

Kristanto, Ir. Harianto; Konsep dan Perancangan Database, Penerbit Andi,


Yogyakarta, 2000.

[POH97]

Pohan, Husni Iskandar., Dan Bahri, Kusnassriyanto Saiful. Pengantar Perancangan


Sistem, Jakarta : Penerbit Erlangga, 1997

[SUR96]

Suryadi, HS. Seri Diktat Kuliah :


Gunadarma, 1996.

[SUS95]

Susanto, Martinus Joko. Manajemen Database Dengan SQL. Jakarta : Penerbit


Dinastindo, 1995.

[SUT96]

Sutanta, Edhy. Sistem Basis Data : Konsep Dan Peranannya Dalam Sistem Informasi
Manajemen. YogyakartaPenerbit Andi Yogyakarta, 1996.

Pengantar Basis Data. Jakarta : Penerbit

82

Anda mungkin juga menyukai