BAB 3 Proses Desain Database - BAB 3 PROSES DESAIN DATABASE.pdf

BAB 3 Proses Desain Database
Tujuan Pembelajaran Umum
Mahasiswa mampu mendesain database sederhana
Tujuan pembelajaran khusus
Mahasiswa mampu dan dapat menjelaskan proses desain database

S

alah satu cara yang terbaik untuk mengerti mengenai proses desain database adalah
dengan memulai men-desain sebuat tabel flat-file dan kemudian masukkan sampel data ke
dalam tabel untuk melihat apa yang terjadi. Dengan menganalisa contoh data, Anda dapat
meng-identifikasi permasalahan yang disebabkan oleh desain awal tersebut. Anda dapat
memodifikasi desain untuk menghilangkan masalah, coba lagi beberapa contoh data, cek
masalah yang terjadi, modifikasi kembali, lanjutkan proses ini sampai Anda mendapatkan tabel
yang konsisten dan bebas masalah.
Sekali Anda bisa menyesuaikan diri dengan masalah yang timbul dalam pembuatan tabel, Anda
diharapkan untuk bisa melompati beberapa langkah desain dan langsung menuju desain tabel
final.
Contoh Proses Desain
Kita akan mendesain sebuah database untuk mengetahui aktivitas olahraga para siswa. Kita
akan mengikuti setiap aktivitas yang diikuti siswa dan bayaran per semester untuk melakukan

aktivitas tersebut.
Step 1: Buat Tabel Aktivitas yang berisi field-field berikut: nama siswa, aktivitas dan biaya.
Karena beberapa siswa mengambil lebih dari satu aktivitas, kita akan mengijinkan hal tersebut
dan menambahkan field aktivitas kedua dan juga field biaya untuk aktivitas kedua. Sehingga
struktur tabel kita adalah: Siswa, Aktivitas 1, Biaya 1, Aktivitas 2, Biaya 2.
Step 2 : Tes tabel dengan beberapa contoh data. Ketika Anda membuat contoh data, Anda
harus melihat apa yang tabel ada dapat perbuat.Misalnya, tidak ada yang mencegah kita untuk
memasukkan nama yang sama untuk siswa yang berbeda, atau biaya yang berbeda untuk
aktivitas yang sama, dan lain-lain. Anda juga harus membayangkan membuat pertanyaan untuk
data Anda dan mendapatkan jawaban (query data dan repport data). Contohnya, bagaimana
saya dapat menemukan semua siswa yang mengambil aktivitas tenis?
Tabel Aktivitas Siswa
Siswa

Aktivitas 1

Biaya 1

Aktivitas 2


Biaya 2

Ogi

Tenis

36 000

Renang

17 000

Agung

Catur

40 000

Renang


17 000

Ogi

Tenis

36 000

Mega

Renang

15 000

Golf

47 000

Step 3 : Analisa Data. Pada kasus ini, kita jelas mendapat masalah pada field pertama. Kita
punya dua Ogi, dan kita tidak dapat memisahkan keduanya. Kita harus menemukan cara untuk

mengidentifikasi tiap siswa secara unik.
Identifikasi Record Unik

Page

Step 4: Modifikasi Desain. Kita dapat mengidentifikasi setiap siswa secara unik dengan
memberi ID yang unik, Field baru yang kita tambahkan, adalah field ID. Kita pisahkan field
Siswa dan tambahkan field ID. Catat bahwa tanda asterisk (*) dibelakang nama field ini
menunjukkan bahwa field ini adalah field kunci, berisi nilai yang unik untuk setiap record. Kita
dapat menggunakan field tersebut untuk menampilkan record yang manapun secara spesifik.
Ketika Anda membuat field kunci tersebut pada program database, program tersebut akan
mencegah Anda untuk memasukkan nilai duplikasi pada field ini, untuk menjaga keunikan
setiap record atau entry data.

9

Mari kita perbaiki masalah kita, kemudian kita cek lagi hasilnya.

Struktur tabel kita saat ini adalah: ID, Aktivitas 1, Biaya 1, Aktivitas 2, Biaya 2.
Tabel Aktivitas Siswa

ID*
Aktivitas 1

Biaya 1

Aktivitas 2

Biaya 2

101

Tenis

36 000

Renang

17 000

102


Catur

40 000

Renang

17 000

103

Tenis

36 000

201

Renang

15 000


Golf

47 000

Komputer akan dengan mudah mengikuti jejak kode ID tersebut, tetapi hal ini tidak akan
terlalu berguna untuk manusia. Karena itu kita akan membuat tabel kedua yang berisi daftar
setiap ID dan siswa yang memiliki ID tersebut. Dengan menggunakan program database, secara
gampang dapat kita buat kedua struktur tabel tersebut dan menghubungkannya dengan
menggunakan field ID. Kini kita mengubah tabel flat-file kita menjadi database relasional:
database yang berisi banyak tabel yang dihubungkan dengan field kunci.
Tabel Siswa biasanya berisi nama awal, nama akhir, alamat, umur dan lainnya, dan juga ID.
Untuk menjaga kemudahan kita akan membatasi tabel siswa dengan dua field saja yaitu nama
dan ID siswa, dan kita akan fokus pada struktur tabel aktivitas siswa.
Step 5 : Tes Tabel dengan Contoh Data
Tabel Siswa

Tabel Aktivitas Siswa

Siswa


ID*

ID*

Ogi

101

Agung

102

Ogi

103

Mega

201


Aktivitas 1

Biaya 1

Aktivitas
2

Biaya
2

101 Tenis

36 000

Renang

17 000

102 Catur


40 000

Renang

17 000

103 Tenis

36 000

201 Renang

15 000

Golf

47 000

Step 6: Analisa Data

Ternyata masih banyak kesalahan pada tabel aktivitas siswa.

Tabel Siswa masih bisa diterima, jadi kita akan menyimpannya. Tetapi, banyak yang kurang
tepat pada tabel aktivitas siswa. Mari kita coba untuk memperbaikinya.

Page

Hilangkan field yang berulang.

10

1. Ruang terbuang. Tidak semua siswa mengambil aktivitas kedua, karena itu kita akan
membuang percuma ruang yang ada pada saat kita menyimpan data. Hal ini tampaknya
tidak akan terlalu mengganggu pada tabel ini, tetapi bagaimana bila kita berurusan
dengan ribuan atau jutaan data?
2. Kesalahan Penambahan data. Bagaimana jika #201 ingin melakukan aktivitas ketiga?
Sekolah memperbolehkan, tetapi tidak ada ruang pada struktur ini untuk aktivitas yang
lain. Kita tidak dapat menambahkan record yang lain atas nama Mega karena akan
merusak keunikan field ID, dan juga akan mempersulit apabila kita ingin melihat
datanya secara keseluruhan dalam satu kesempatan.
3. Entry data yang berlebihan. Jika biaya tenis naik menjadi 39 000, kita harus merubah
semua record yang berisi tenis dan memodifikasi biayanya.
4. Kesulitan query. Akan sangat sulit untuk melihat semua siswa yang melakukan aktivitas
renang: kita harus mencari pada aktivitas 1 dan 2 untuk memastikan kita mendapat
semuanya.
5. Informasi berlebih. Jika 50 siswa mengambil renang, kita harus memasukkan data dalam
field aktivitas dan biaya untuk setiap siswa.
6. Data tidak Konsisten. Perhatikan bahwa terdapat dua harga untuk renang. Apakah 15
000 atau 17 000? Mana yang seharusnya? Hal ini terjadi jika satu record di-update
sedangkan yang lain tidak.

Step 7 : Modifikasi desain. Kita dapat memperbaiki empat masalah kita yang pertama dengan
membuat record yang terpisah untuk setiap aktivitas yang diambil oleh siswa, daripada satu
record untuk semua aktivitas yang diambil oleh siswa.
Pertama kita hilangkan field Aktivitas 2 dan Biaya 2, kemudian kita harus menyesuaikan
struktur tabel sehingga kita dapat memasukkan banyak record untuk setiap siswa. Untuk
melakukan hal itu, kita re-definisikan field kunci yang ada sehingga akan terdiri dari dua field,
ID dan Aktivitas. Karena setiap siswa hanya boleh mengambil satu aktivitas dalam satu
kesempatan, maka kombinasi ini akan menciptakan kunci yang unik untuk setiap record.
Tabel aktivitas kita kini sudah disederhanakan menjadi: ID, Aktivitas, Biaya. Catat bagaimana
struktur tabel yang baru tidak membatasi kegiatan yang diambil oleh siswa
Step 8 : Tes Contoh Data
Tabel Siswa

ID*

Aktivitas 1

Biaya 1

Siswa

ID*

101 Tenis

36 000

Ogi

101

101 Renang

17 000

Agung

102

102 Catur

40 000

Ogi

103

102 Renang

17 000

Mega

201

103 Tenis

36 000

201 Renang

15 000

201 Golf

47 000

201 Catur

40 000

Step 9: Analisa Data. Kita tahu kita masih punya masalah dengan data berlebih (biaya aktivitas
berulang), data tidak konsisten (Berapa biaya sebenarnya untuk renang?) Kita harus
memperbaikinya, dimana keduanya adalah masalah editing atau modify data.
Hilangkan penyimpangan entry data
Sebaiknya, kita juga harus melihat apakah fungsi data yang lain berjalan dengan baik, seperti
tambah atau hapus data.

Penyimpangan Penambahan. Bagaimana jika sekolah kita mengenalkan aktivitas
yang baru, seperti, Karambol, dengan biaya 10 000. Dimana kita dapat menyimpan
informasi ini? Dengan desain kita yang terakhir, kita tidak dapat menyimpannya
sampai ada siswa yang mendaftar.

-

Penyimpangan Penghapusan. Jika Mega (#201) pindah ke almamater yang lain,
semua informasi mengenai golf, akan hilang dari database kita, karena hanya dia
yang mengambil aktivitas ini.

Step 10 : Modifikasi Desain. Akar permasalahan kita untuk kedua hal yang tersisa adalah
karena kita mempunyai field bukan-kunci yang tergantung kepada sebagian field kunci (biaya
terhadap aktivitas). Biaya untuk setiap aktivitas tidak tergantung kepada ID siswa, yang
merupakan bagian dari field kunci kita (ID + Aktivitas). Biaya tenis, misalnya, akan tetap 36
000, siapapun juga siswa yang mengambilnya- jadi ID siswa tidak mempunyai pengaruh
terhadap nilai yang tersimpan dalam field ini. Biaya aktivitas murni hanya tergantung dari
aktivitasnya itu sendiri. Dengan memeriksa struktur tabel kita dan memastikan bahwa semua
field bukan-kunci tergantung pada field kunci, kita akan menghilangkan semua permasalahan
kita yang tersisa.
Desain final kita akan terdiri dari tiga tabel: Tabel Siswa, Tabel Partisipan, Tabel Aktivitas
yang dimodifikasi.

Page

-

11

Jika Anda melihat secara teliti, Anda akan menemukan bahwa ada masalah potensial ketika
kita menambah atau menghapus data:

Jika anda periksa tabel ini, terlihat bahwa semua field bukan-kunci bergantung pada field
kunci: nama siswa bergantung kepada ID siswa; biaya aktivitas bergantung kepada aktivitas.
Tabel partisipan kita dasarnya adalah data yang sudah terdapat pada tabel yang lain, dan
setiap fieldnya merupakan field kunci.

Step 8 : Tes Contoh Data
Tabel Siswa

ID*

Siswa

ID*

101 Tenis

Ogi

101

101 Renang

Agung

102

102 Catur

Ogi

103

102 Renang

Mega

201

103 Tenis

Aktivitas*

201 Renang
201 Golf
201 Catur

Step 11: Tes Contoh Data.

Tabel Aktivitas
Aktivitas*
Tenis
Renang
Catur
Golf
Karambol

Biaya
36 000
17 000
40 000
47 000
10 000

Step 12 : Analisa Hasil. Tabel-tabel ini terlihat bagus:
-

-

Tidak ada informasi berlebih. Anda hanya perlu mendata biaya aktivitas
sekali saja.
Tidak ada inkonsistensi data. Hanya ada satu tempat dimana Anda
memasukkan biaya tiap aktivitas, jadi tidak ada kesempatan untuk membuat
data yang tidak konsisten. Apabila ada kenaikan harga, Anda hanya perlu
meng-update data yang ada.
Tidak ada penyimpangan penambahan. Anda dapat menambah aktivitas baru
ke dalam tabel aktivitas tanpa harus menunggu siswa yang mendaftar.
Tidak ada penyimpangan penghapusan. Jika #201 pindah, kita masih punya
data tentang golf.

Rangkuman

-

-

Field yang terdiri dari dua bagian, pecahkan menjadi dua, misalnya nama
menjadi Nama awal dan Nama akhir.
Buat field kunci yang akan mengidentifikasi record secara unik. Anda
mungkin perlu membuat field ID (dengan tabel lookup untuk melihat
nilainya).
Hilangkan field yang berulang. Misal: jika tabel anda terdiri dari field
lokasi1, lokasi 2, lokasi 3 yang berisi data yang mirip, ini merupakan
peringatan yang jelas.

Page

-

12

Walaupun desain database Anda tergantung dari seberapa kompleks data yang anda
miliki, setiap kali Anda mendesain database, pastikan hal berikut ini terpenuhi:

13

Hilangkan masalah modifikasi record dengan memastikan bahwa tiap field
bukan-kunci tergantung sepenuhnya pada field kunci. Untuk melakukan ini,
buat tabel terpisah untuk setiap informasi yang digunakan pada multi record
dan gunakan field kunci untuk menghubungkan satu tabel ke tabel lainnya.

Page

-